Skip to main content

Instruction Decoder Transformers

solanaInstructionDecoder

Create a transformer that decodes Solana program instructions.
solanaInstructionDecoder<T>(config: SolanaInstructionDecoderConfig<T>): Transformer
Returns: A Transformer that transforms SolanaPortalData into decoded instructions. Parameters:
  • range: Slot range { from: number | string | 'latest', to?: number } (required)
  • programId: Program address(es) string | string[] (required)
  • instructions: Map of instruction names to ABI instruction objects (required)
  • profiler: Profiler config { id: string } (optional)
  • onError: Error handler (optional)
Example:
const transformer = solanaInstructionDecoder({
  range: { from: 200000000, to: 201000000 },
  programId: orcaWhirlpool.programId,
  instructions: {
    swap: orcaWhirlpool.instructions.swap,
  },
});
See the Instruction Decoder reference for complete details.

Generic Transformers

createTransformer

Transform data in pipes.
createTransformer<I, O>(config: TransformerConfig<I, O>): Transformer<I, O>
Parameters:
  • transform: Transform function async (data: I, ctx) => O (required)
  • query: Query callback ({queryBuilder, portal, logger}) => void (optional)
Example:
const transformer = createTransformer({
  query: ({ queryBuilder }) => {
    queryBuilder.addInstruction({
      request: { programId: ["whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc"] },
      range: { from: 200000000 },
    });
  },
  transform: async (data) => {
    return data.blocks.map((b) => b.instructions);
  },
});

Next Steps