JSPM

@solana/kit-plugin-instruction-plan

0.10.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 4263
  • Score
    100M100P100Q136921F
  • License MIT

Plan and execute transactions in your Kit clients

Package Exports

  • @solana/kit-plugin-instruction-plan

Readme

Kit Plugins ➤ Instruction Plan

npm npm-downloads

This package provides plugins that add transaction planning and execution to your Kit clients.

Installation

pnpm install @solana/kit-plugin-instruction-plan

transactionPlanner plugin

The transactionPlanner plugin sets a custom transaction planner on the client.

Installation

import { createClient, createTransactionPlanner } from '@solana/kit';
import { transactionPlanner } from '@solana/kit-plugin-instruction-plan';

const myTransactionPlanner = createTransactionPlanner(/* ... */);
const client = createClient().use(transactionPlanner(myTransactionPlanner));

Features

  • transactionPlanner: A function that plans instructions into transaction messages.
    const transactionPlan = await client.transactionPlanner(myInstructionPlan);

transactionPlanExecutor plugin

The transactionPlanExecutor plugin sets a custom transaction plan executor on the client.

Installation

import { createClient, createTransactionPlanExecutor } from '@solana/kit';
import { transactionPlanExecutor } from '@solana/kit-plugin-instruction-plan';

const myTransactionPlanExecutor = createTransactionPlanExecutor(/* ... */);
const client = createClient().use(transactionPlanExecutor(myTransactionPlanExecutor));

Features

  • transactionPlanExecutor: A function that executes planned transactions.
    const transactionPlanResult = await client.transactionPlanExecutor(myTransactionPlan);

planAndSendTransactions plugin

The planAndSendTransactions plugin adds helper functions for planning and sending transactions. They accept transaction messages, instructions or instruction plans as input.

Installation

This plugin requires both transactionPlanner and transactionPlanExecutor to be installed on the client.

import { createClient } from '@solana/kit';
import {
    transactionPlanner,
    transactionPlanExecutor,
    planAndSendTransactions,
} from '@solana/kit-plugin-instruction-plan';

const client = createClient()
    .use(transactionPlanner(myTransactionPlanner))
    .use(transactionPlanExecutor(myTransactionPlanExecutor))
    .use(planAndSendTransactions());

Features

  • planTransactions: Plans transaction messages, instructions or instruction plans into a transaction plan without executing it.

    const transactionPlan = await client.planTransactions(myInstructionPlan);
  • planTransaction: Same as planTransactions but asserts that the result contains a single transaction message.

    const transactionMessage = await client.planTransaction(myInstructionPlan);
  • sendTransactions: Plans and executes transaction messages, instructions or instruction plans in one call.

    const transactionPlanResult = await client.sendTransactions(myInstructionPlan);
  • sendTransaction: Same as sendTransactions but asserts that the result is successful and contains a single transaction. Should the provided input result in multiple transactions, an error will be thrown.

    const transactionPlanResult = await client.sendTransaction(myInstructionPlan);

Default Planner and Executor Implementations

For ready-to-use transaction planner and executor implementations, see:

  • @solana/kit-plugin-rpc — provides rpcTransactionPlanner and rpcTransactionPlanExecutor for RPC-based transaction planning and execution.
  • @solana/kit-plugin-litesvm — provides litesvmTransactionPlanner and litesvmTransactionPlanExecutor for LiteSVM-based transaction planning and execution.