feat: support pre and post token balances (#13603)

* feat: support pre and post token balances

* fix: define tokenbalance

* fix: change pre/post balances to array
This commit is contained in:
Josh
2020-12-16 23:15:25 -08:00
committed by GitHub
parent 0b92720fdb
commit dc0f5adc36
4 changed files with 91 additions and 1 deletions

10
web3.js/module.d.ts vendored
View File

@ -142,12 +142,20 @@ declare module '@solana/web3.js' {
instructions: CompiledInstruction[]; instructions: CompiledInstruction[];
}; };
export type TokenBalance = {
accountIndex: number;
mint: string;
uiTokenAmount: TokenAmount;
};
export type ConfirmedTransactionMeta = { export type ConfirmedTransactionMeta = {
fee: number; fee: number;
innerInstructions?: CompiledInnerInstruction[]; innerInstructions?: CompiledInnerInstruction[];
preBalances: Array<number>; preBalances: Array<number>;
postBalances: Array<number>; postBalances: Array<number>;
logMessages?: Array<string>; logMessages?: Array<string>;
preTokenBalances?: Array<TokenBalance>;
postTokenBalances?: Array<TokenBalance>;
err: TransactionError | null; err: TransactionError | null;
}; };
@ -162,6 +170,8 @@ declare module '@solana/web3.js' {
preBalances: Array<number>; preBalances: Array<number>;
postBalances: Array<number>; postBalances: Array<number>;
logMessages?: Array<string>; logMessages?: Array<string>;
preTokenBalances?: Array<TokenBalance>;
postTokenBalances?: Array<TokenBalance>;
err: TransactionError | null; err: TransactionError | null;
}; };

View File

@ -157,12 +157,20 @@ declare module '@solana/web3.js' {
instructions: CompiledInstruction[], instructions: CompiledInstruction[],
}; };
declare export type TokenBalance = {
accountIndex: number,
mint: string,
uiTokenAmount: TokenAmount,
};
declare export type ConfirmedTransactionMeta = { declare export type ConfirmedTransactionMeta = {
fee: number, fee: number,
innerInstructions?: CompiledInnerInstruction[], innerInstructions?: CompiledInnerInstruction[],
preBalances: Array<number>, preBalances: Array<number>,
postBalances: Array<number>, postBalances: Array<number>,
logMessages?: Array<string>, logMessages?: Array<string>,
preTokenBalances?: Array<TokenBalance>,
postTokenBalances?: Array<TokenBalance>,
err: TransactionError | null, err: TransactionError | null,
}; };
@ -177,6 +185,8 @@ declare module '@solana/web3.js' {
preBalances: Array<number>, preBalances: Array<number>,
postBalances: Array<number>, postBalances: Array<number>,
logMessages?: Array<string>, logMessages?: Array<string>,
preTokenBalances?: Array<TokenBalance>,
postTokenBalances?: Array<TokenBalance>,
err: TransactionError | null, err: TransactionError | null,
}; };

View File

@ -7781,7 +7781,7 @@
}, },
"is-obj": { "is-obj": {
"version": "2.0.0", "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==", "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
"dev": true "dev": true
} }

View File

@ -373,6 +373,12 @@ type ParsedInnerInstruction = {
instructions: (ParsedInstruction | PartiallyDecodedInstruction)[], instructions: (ParsedInstruction | PartiallyDecodedInstruction)[],
}; };
type TokenBalance = {
accountIndex: number,
mint: string,
uiTokenAmount: TokenAmount,
};
/** /**
* Metadata for a parsed confirmed transaction on the ledger * Metadata for a parsed confirmed transaction on the ledger
* *
@ -382,6 +388,8 @@ type ParsedInnerInstruction = {
* @property {Array<number>} preBalances The balances of the transaction accounts before processing * @property {Array<number>} preBalances The balances of the transaction accounts before processing
* @property {Array<number>} postBalances The balances of the transaction accounts after processing * @property {Array<number>} postBalances The balances of the transaction accounts after processing
* @property {Array<string>} logMessages An array of program log messages emitted during a transaction * @property {Array<string>} logMessages An array of program log messages emitted during a transaction
* @property {Array<TokenBalance>} preTokenBalances The token balances of the transaction accounts before processing
* @property {Array<TokenBalance>} postTokenBalances The token balances of the transaction accounts after processing
* @property {object|null} err The error result of transaction processing * @property {object|null} err The error result of transaction processing
*/ */
type ParsedConfirmedTransactionMeta = { type ParsedConfirmedTransactionMeta = {
@ -390,6 +398,8 @@ type ParsedConfirmedTransactionMeta = {
preBalances: Array<number>, preBalances: Array<number>,
postBalances: Array<number>, postBalances: Array<number>,
logMessages?: Array<string>, logMessages?: Array<string>,
preTokenBalances?: Array<TokenBalance>,
postTokenBalances?: Array<TokenBalance>,
err: TransactionError | null, err: TransactionError | null,
}; };
@ -1178,6 +1188,36 @@ const ConfirmedTransactionMetaResult = struct.union([
preBalances: struct.array(['number']), preBalances: struct.array(['number']),
postBalances: struct.array(['number']), postBalances: struct.array(['number']),
logMessages: struct.union([struct.array(['string']), 'null', 'undefined']), 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']), preBalances: struct.array(['number']),
postBalances: struct.array(['number']), postBalances: struct.array(['number']),
logMessages: struct.union([struct.array(['string']), 'null', 'undefined']), 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',
]),
}), }),
]); ]);