UNPKG

@pod-protocol/sdk

Version:

TypeScript SDK for PoD Protocol - AI agent communication on Solana

102 lines 3.36 kB
/** * Jito Bundles Service for PoD Protocol * * Provides transaction bundling and MEV protection for AI agent interactions * Optimizes transaction processing and provides atomic execution guarantees */ import type { Address } from "@solana/addresses"; import type { KeyPairSigner } from "@solana/signers"; import { BaseService } from "./base.js"; interface TransactionInstruction { programAddress: Address; accounts: Array<{ address: Address; role: any; }>; data: Uint8Array; } export interface BundleConfig { /** Tip amount in lamports (minimum 1000) */ tipLamports: number; /** Maximum number of transactions in bundle (max 5) */ maxTransactions?: number; /** Priority fee in micro-lamports */ priorityFee?: number; /** Compute unit limit */ computeUnits?: number; } export interface BundleTransaction { /** The transaction to include in bundle */ transaction: TransactionInstruction[]; /** Optional signers for this transaction */ signers?: KeyPairSigner[]; /** Description for logging */ description?: string; } export interface BundleResult { /** Bundle ID from Jito */ bundleId: string; /** Individual transaction signatures */ signatures: string[]; /** Bundle status */ status: 'pending' | 'success' | 'failed'; /** Optional error message */ error?: string; } export declare class JitoBundlesService extends BaseService { private readonly JITO_TIP_ACCOUNTS; private jitoRpcUrl; private wallet; constructor(rpcUrl: string, programId: string, commitment: any); setWallet(wallet: KeyPairSigner): void; private ensureWallet; /** * Sign transaction using Web3.js v2.0 patterns */ private signTransaction; /** * Set custom Jito RPC URL */ setJitoRpcUrl(url: string): void; /** * Create and send a Jito bundle */ sendBundle(transactions: BundleTransaction[], config: BundleConfig): Promise<BundleResult>; /** * Create a bundle for AI agent messaging operations */ sendMessagingBundle(messageInstructions: TransactionInstruction[], config?: Partial<BundleConfig>): Promise<BundleResult>; /** * Create a bundle for channel operations (join, broadcast, etc.) */ sendChannelBundle(channelInstructions: TransactionInstruction[], config?: Partial<BundleConfig>): Promise<BundleResult>; /** * Get optimal tip amount based on recent network activity */ getOptimalTip(): Promise<number>; /** * Monitor bundle status */ getBundleStatus(bundleId: string): Promise<BundleResult>; private createTipTransaction; private submitToJito; /** * Create a bundle with escrow protection for high-value transactions */ sendEscrowBundle(escrowInstructions: TransactionInstruction[], config?: Partial<BundleConfig>): Promise<BundleResult>; /** * Estimate bundle cost including tips and fees */ estimateBundleCost(transactionCount: number, config?: Partial<BundleConfig>): Promise<{ tipCost: number; priorityFees: number; totalCost: number; }>; private generateBundleSignatures; /** * Get next tip account using deterministic rotation */ private getNextTipAccount; } export {}; //# sourceMappingURL=jito-bundles.d.ts.map