feat: add payload type assertions (#1395)

Adds assertion methods (i.e. type predicates) for the Payload type: `isTokenTransferPayload`, `isContractCallPayload`, `isSmartContractPayload`, `isPoisonPayload`, `isCoinbasePayload` — Thanks to @edu-stx
This commit is contained in:
edu-stx
2022-11-23 14:49:25 +00:00
committed by GitHub
parent a2a7128d9e
commit cdd32e9323
2 changed files with 21 additions and 0 deletions

View File

@@ -18,6 +18,11 @@ export {
PoisonPayload,
CoinbasePayload,
serializePayload,
isTokenTransferPayload,
isContractCallPayload,
isSmartContractPayload,
isPoisonPayload,
isCoinbasePayload,
} from './payload';
export {

View File

@@ -24,6 +24,22 @@ export type Payload =
| PoisonPayload
| CoinbasePayload;
export function isTokenTransferPayload(p: Payload): p is TokenTransferPayload {
return p.payloadType === PayloadType.TokenTransfer;
}
export function isContractCallPayload(p: Payload): p is ContractCallPayload {
return p.payloadType === PayloadType.ContractCall;
}
export function isSmartContractPayload(p: Payload): p is SmartContractPayload {
return p.payloadType === PayloadType.SmartContract;
}
export function isPoisonPayload(p: Payload): p is PoisonPayload {
return p.payloadType === PayloadType.PoisonMicroblock;
}
export function isCoinbasePayload(p: Payload): p is CoinbasePayload {
return p.payloadType === PayloadType.Coinbase;
}
export interface TokenTransferPayload {
readonly type: StacksMessageType.Payload;
readonly payloadType: PayloadType.TokenTransfer;