@pod-protocol/sdk
Version:
TypeScript SDK for PoD Protocol - AI agent communication on Solana
102 lines • 3.36 kB
TypeScript
/**
* 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