@shyft.to/solana-transaction-parser
Version:
Tool for parsing arbitrary Solana transactions with IDL/custom parsers
92 lines • 4.64 kB
TypeScript
import { Buffer } from "buffer";
import { PublicKey, TransactionInstruction, Connection, Message, ParsedMessage, ParsedInstruction as SolanaParsedInstruction, Finality, VersionedMessage, LoadedAddresses, VersionedTransactionResponse, ParsedTransactionWithMeta } from "@solana/web3.js";
import { Idl } from "@project-serum/anchor";
import { InstructionNames, InstructionParserInfo, ParsedInstruction, ParserFunction, ProgramInfoType } from "./interfaces";
/**
* Class for parsing arbitrary solana transactions in various formats
* - by txHash
* - from raw transaction data (base64 encoded or buffer)
* - @solana/web3.js getTransaction().message object
* - @solana/web3.js getParsedTransaction().message or Transaction.compileMessage() object
* - @solana/web3.js TransactionInstruction object
*/
export declare class SolanaParser {
private instructionParsers;
private instructionDecoders;
/**
* Initializes parser object
* `SystemProgram`, `TokenProgram` and `AssociatedTokenProgram` are supported by default
* but may be overriden by providing custom idl/custom parser
* @param programInfos list of objects which contains programId and corresponding idl
* @param parsers list of pairs (programId, custom parser)
*/
constructor(programInfos: ProgramInfoType[], parsers?: InstructionParserInfo[]);
/**
* Adds (or updates) parser for provided programId
* @param programId program id to add parser for
* @param parser parser to parse programId instructions
*/
addParser(programId: PublicKey, parser: ParserFunction<Idl, string>): void;
/**
* Adds (or updates) parser for provided programId
* @param programId program id to add parser for
* @param idl IDL that describes anchor program
*/
addParserFromIdl(programId: PublicKey | string, idl: Idl): void;
isParserAvailble(programId: PublicKey | string): boolean;
retrieveParserReadyProgramIds(): Array<string>;
private buildIdlParser;
/**
* Removes parser for provided program id
* @param programId program id to remove parser for
*/
removeParser(programId: PublicKey): void;
private buildUnknownParsedInstruction;
/**
* Parses instruction
* @param instruction transaction instruction to parse
* @returns parsed transaction instruction or UnknownInstruction
*/
parseInstruction<I extends Idl, IxName extends InstructionNames<I>>(instruction: TransactionInstruction): ParsedInstruction<I, IxName>;
/**
* Parses transaction data along with inner instructions
* @param tx response to parse
* @returns list of parsed instructions
*/
parseTransactionWithInnerInstructions<T extends VersionedTransactionResponse>(tx: T): ParsedInstruction<Idl, string>[];
/**
* Parses transaction data
* @param txMessage message to parse
* @param altLoadedAddresses VersionedTransaction.meta.loaddedAddresses if tx is versioned
* @returns list of parsed instructions
*/
parseTransactionData<T extends Message | VersionedMessage>(txMessage: T, altLoadedAddresses?: T extends VersionedMessage ? LoadedAddresses | undefined : undefined): ParsedInstruction<Idl, string>[];
/**
* Parses transaction data retrieved from Connection.getParsedTransaction
* @param txParsedMessage message to parse
* @returns list of parsed instructions
*/
parseTransactionParsedData(txParsedMessage: ParsedMessage): ParsedInstruction<Idl, string>[];
/**
* Parses transaction data retrieved from Connection.getParsedTransaction along with the inner instructions
* @param txParsedMessage message to parse
* @returns list of parsed instructions
*/
parseParsedTransactionWithInnerInstructions(txn: ParsedTransactionWithMeta): ParsedInstruction<Idl, string>[];
convertSolanaParsedInstruction(instruction: SolanaParsedInstruction): ParsedInstruction<Idl, string>;
/**
* Fetches tx from blockchain and parses it
* @param connection web3 Connection
* @param txId transaction id
* @param flatten - true if CPI calls need to be parsed too
* @returns list of parsed instructions
*/
parseTransaction(connection: Connection, txId: string, flatten?: boolean, commitment?: Finality): Promise<ParsedInstruction<Idl, string>[] | null>;
/**
* Parses transaction dump
* @param txDump base64-encoded string or raw Buffer which contains tx dump
* @returns list of parsed instructions
*/
parseTransactionDump(txDump: string | Buffer): ParsedInstruction<Idl, string>[];
}
//# sourceMappingURL=parsers.d.ts.map