@solana/kit-plugin-instruction-plan
v0.10.0
Published
Plan and execute transactions in your Kit clients
Downloads
7,097
Maintainers
Readme
Kit Plugins ➤ Instruction Plan
This package provides plugins that add transaction planning and execution to your Kit clients.
Installation
pnpm install @solana/kit-plugin-instruction-plantransactionPlanner 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 asplanTransactionsbut 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 assendTransactionsbut 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— providesrpcTransactionPlannerandrpcTransactionPlanExecutorfor RPC-based transaction planning and execution.@solana/kit-plugin-litesvm— provideslitesvmTransactionPlannerandlitesvmTransactionPlanExecutorfor LiteSVM-based transaction planning and execution.
