diff --git a/web3.js/module.d.ts b/web3.js/module.d.ts index a81a604ec4..5097fa2d7b 100644 --- a/web3.js/module.d.ts +++ b/web3.js/module.d.ts @@ -142,12 +142,20 @@ declare module '@solana/web3.js' { instructions: CompiledInstruction[]; }; + export type TokenBalance = { + accountIndex: number; + mint: string; + uiTokenAmount: TokenAmount; + }; + export type ConfirmedTransactionMeta = { fee: number; innerInstructions?: CompiledInnerInstruction[]; preBalances: Array; postBalances: Array; logMessages?: Array; + preTokenBalances?: Array; + postTokenBalances?: Array; err: TransactionError | null; }; @@ -162,6 +170,8 @@ declare module '@solana/web3.js' { preBalances: Array; postBalances: Array; logMessages?: Array; + preTokenBalances?: Array; + postTokenBalances?: Array; err: TransactionError | null; }; diff --git a/web3.js/module.flow.js b/web3.js/module.flow.js index 50a846642b..68d2bacf93 100644 --- a/web3.js/module.flow.js +++ b/web3.js/module.flow.js @@ -157,12 +157,20 @@ declare module '@solana/web3.js' { instructions: CompiledInstruction[], }; + declare export type TokenBalance = { + accountIndex: number, + mint: string, + uiTokenAmount: TokenAmount, + }; + declare export type ConfirmedTransactionMeta = { fee: number, innerInstructions?: CompiledInnerInstruction[], preBalances: Array, postBalances: Array, logMessages?: Array, + preTokenBalances?: Array, + postTokenBalances?: Array, err: TransactionError | null, }; @@ -177,6 +185,8 @@ declare module '@solana/web3.js' { preBalances: Array, postBalances: Array, logMessages?: Array, + preTokenBalances?: Array, + postTokenBalances?: Array, err: TransactionError | null, }; diff --git a/web3.js/package-lock.json b/web3.js/package-lock.json index c054693738..4bb08cd11f 100644 --- a/web3.js/package-lock.json +++ b/web3.js/package-lock.json @@ -7781,7 +7781,7 @@ }, "is-obj": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true } diff --git a/web3.js/src/connection.js b/web3.js/src/connection.js index a5be78b09e..a7a161e262 100644 --- a/web3.js/src/connection.js +++ b/web3.js/src/connection.js @@ -373,6 +373,12 @@ type ParsedInnerInstruction = { instructions: (ParsedInstruction | PartiallyDecodedInstruction)[], }; +type TokenBalance = { + accountIndex: number, + mint: string, + uiTokenAmount: TokenAmount, +}; + /** * Metadata for a parsed confirmed transaction on the ledger * @@ -382,6 +388,8 @@ type ParsedInnerInstruction = { * @property {Array} preBalances The balances of the transaction accounts before processing * @property {Array} postBalances The balances of the transaction accounts after processing * @property {Array} logMessages An array of program log messages emitted during a transaction + * @property {Array} preTokenBalances The token balances of the transaction accounts before processing + * @property {Array} postTokenBalances The token balances of the transaction accounts after processing * @property {object|null} err The error result of transaction processing */ type ParsedConfirmedTransactionMeta = { @@ -390,6 +398,8 @@ type ParsedConfirmedTransactionMeta = { preBalances: Array, postBalances: Array, logMessages?: Array, + preTokenBalances?: Array, + postTokenBalances?: Array, err: TransactionError | null, }; @@ -1178,6 +1188,36 @@ const ConfirmedTransactionMetaResult = struct.union([ preBalances: struct.array(['number']), postBalances: struct.array(['number']), logMessages: struct.union([struct.array(['string']), 'null', 'undefined']), + preTokenBalances: struct.union([ + struct.array([ + struct.pick({ + accountIndex: 'number', + mint: 'string', + uiTokenAmount: struct.pick({ + amount: 'string', + decimals: 'number', + uiAmount: 'number', + }), + }), + ]), + 'null', + 'undefined', + ]), + postTokenBalances: struct.union([ + struct.array([ + struct.pick({ + accountIndex: 'number', + mint: 'string', + uiTokenAmount: struct.pick({ + amount: 'string', + decimals: 'number', + uiAmount: 'number', + }), + }), + ]), + 'null', + 'undefined', + ]), }), ]); /** @@ -1214,6 +1254,36 @@ const ParsedConfirmedTransactionMetaResult = struct.union([ preBalances: struct.array(['number']), postBalances: struct.array(['number']), logMessages: struct.union([struct.array(['string']), 'null', 'undefined']), + preTokenBalances: struct.union([ + struct.array([ + struct.pick({ + accountIndex: 'number', + mint: 'string', + uiTokenAmount: struct.pick({ + amount: 'string', + decimals: 'number', + uiAmount: 'number', + }), + }), + ]), + 'null', + 'undefined', + ]), + postTokenBalances: struct.union([ + struct.array([ + struct.pick({ + accountIndex: 'number', + mint: 'string', + uiTokenAmount: struct.pick({ + amount: 'string', + decimals: 'number', + uiAmount: 'number', + }), + }), + ]), + 'null', + 'undefined', + ]), }), ]);