diff --git a/web3.js/module.d.ts b/web3.js/module.d.ts index 92efe21da8..dfcca026f5 100644 --- a/web3.js/module.d.ts +++ b/web3.js/module.d.ts @@ -106,7 +106,7 @@ declare module '@solana/web3.js' { slot: number; err: TransactionError | null; confirmations: number | null; - confirmationStatus: TransactionConfirmationStatus | null; + confirmationStatus?: TransactionConfirmationStatus; }; export type ConfirmedSignatureInfo = { diff --git a/web3.js/module.flow.js b/web3.js/module.flow.js index 82dad61751..9ed7948fef 100644 --- a/web3.js/module.flow.js +++ b/web3.js/module.flow.js @@ -119,7 +119,7 @@ declare module '@solana/web3.js' { slot: number, err: TransactionError | null, confirmations: number | null, - confirmationStatus: TransactionConfirmationStatus | null, + confirmationStatus?: TransactionConfirmationStatus, }; declare export type ConfirmedSignatureInfo = { diff --git a/web3.js/src/connection.js b/web3.js/src/connection.js index f2d569a8fa..e06967800e 100644 --- a/web3.js/src/connection.js +++ b/web3.js/src/connection.js @@ -1054,11 +1054,17 @@ const GetVoteAccounts = jsonRpcResult( }), ); +const ConfirmationStatus = union([ + literal('processed'), + literal('confirmed'), + literal('finalized'), +]); + const SignatureStatusResponse = pick({ slot: number(), confirmations: nullable(number()), err: TransactionErrorResult, - confirmationStatus: optional(nullable(string())), + confirmationStatus: optional(ConfirmationStatus), }); /** @@ -1500,6 +1506,19 @@ export type SignatureResult = {| */ export type TransactionError = {}; +/** + * Transaction confirmation status + *
+ * 'processed': Transaction landed in a block which has reached 1 confirmation by the connected node + * 'confirmed': Transaction landed in a block which has reached 1 confirmation by the cluster + * 'finalized': Transaction landed in a block which has been finalized by the cluster + *+ */ +export type TransactionConfirmationStatus = + | 'processed' + | 'confirmed' + | 'finalized'; + /** * Signature status * @@ -1507,13 +1526,13 @@ export type TransactionError = {}; * @property {number} slot when the transaction was processed * @property {number | null} confirmations the number of blocks that have been confirmed and voted on in the fork containing `slot` (TODO) * @property {TransactionError | null} err error, if any - * @property {string | null} confirmationStatus the transaction's cluster confirmation status, if data available. Possible non-null responses: `processed`, `confirmed`, `finalized` + * @property {?TransactionConfirmationStatus} confirmationStatus the transaction's cluster confirmation status, if data available. Possible responses: `processed`, `confirmed`, `finalized` */ export type SignatureStatus = { slot: number, confirmations: number | null, err: TransactionError | null, - confirmationStatus: string | null, + confirmationStatus?: TransactionConfirmationStatus, }; /**