From cdd32e9323069452a4d0345174b049be1c8e1069 Mon Sep 17 00:00:00 2001 From: edu-stx <116000646+edu-stx@users.noreply.github.com> Date: Wed, 23 Nov 2022 14:49:25 +0000 Subject: [PATCH] feat: add payload type assertions (#1395) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds assertion methods (i.e. type predicates) for the Payload type: `isTokenTransferPayload`, `isContractCallPayload`, `isSmartContractPayload`, `isPoisonPayload`, `isCoinbasePayload` — Thanks to @edu-stx --- packages/transactions/src/index.ts | 5 +++++ packages/transactions/src/payload.ts | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/packages/transactions/src/index.ts b/packages/transactions/src/index.ts index 34e6dc83e..57eb7e07f 100644 --- a/packages/transactions/src/index.ts +++ b/packages/transactions/src/index.ts @@ -18,6 +18,11 @@ export { PoisonPayload, CoinbasePayload, serializePayload, + isTokenTransferPayload, + isContractCallPayload, + isSmartContractPayload, + isPoisonPayload, + isCoinbasePayload, } from './payload'; export { diff --git a/packages/transactions/src/payload.ts b/packages/transactions/src/payload.ts index 79eb216f0..1add10f44 100644 --- a/packages/transactions/src/payload.ts +++ b/packages/transactions/src/payload.ts @@ -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;