import { PublicKey, Transaction, TransactionConfirmationStatus, TransactionInstruction } from '@solana/web3.js'; import { Address, ProtocolType } from '@hyperlane-xyz/utils'; import type { MultiProviderAdapter } from '../../providers/MultiProviderAdapter.js'; import { SendTransactionOptions } from '../../providers/MultiProvider.js'; import { SolanaWeb3Transaction } from '../../providers/ProviderType.js'; import { ChainName } from '../../types.js'; import { IMultiProtocolSigner } from '../types.js'; /** * Interface for SVM transaction signers */ export interface SvmTransactionSigner { readonly publicKey: PublicKey; signTransaction(transaction: Transaction): Promise; } export interface SvmSignerConfig { /** Max polling attempts before timeout (default: 30) */ maxConfirmationAttempts?: number; /** Delay between polling attempts in ms (default: 1000) */ pollingDelayMs?: number; /** Commitment level for confirmation (default: 'confirmed') */ commitment?: TransactionConfirmationStatus; /** Whether to automatically resubmit on blockhash expiry (default: true) */ enableBlockhashResubmit?: boolean; /** Whether to retry on RPC errors during polling (default: true) */ retryOnRpcErrors?: boolean; } export interface TransactionBuildOptions { /** Optional priority fee override (microLamports) */ priorityFee?: number; /** Whether to include priority fee instruction (default: true) */ includePriorityFee?: boolean; } /** * Keypair-based SVM transaction signer */ export declare class KeypairSvmTransactionSigner implements SvmTransactionSigner { readonly publicKey: PublicKey; private readonly keypair; constructor(privateKey: Uint8Array); signTransaction(transaction: Transaction): Promise; } export declare class SvmMultiProtocolSignerAdapter implements IMultiProtocolSigner { private readonly chainName; private readonly signer; private readonly svmProvider; private readonly config; private readonly logger; constructor(chainName: ChainName, signer: SvmTransactionSigner, multiProtocolProvider: MultiProviderAdapter, config?: SvmSignerConfig); publicKey(): PublicKey; address(): Promise
; /** * Build and send a transaction from raw instructions */ buildAndSendTransaction(instructions: TransactionInstruction[], options?: TransactionBuildOptions): Promise; /** * Send and confirm a pre-built transaction (IMultiProtocolSigner interface) */ sendAndConfirmTransaction(tx: SolanaWeb3Transaction, _options?: SendTransactionOptions): Promise; /** * Build transaction from instructions with optional priority fees */ private buildTransaction; /** * Sign and confirm transaction with blockhash resubmit on expiry */ private signAndConfirm; /** * Poll for transaction confirmation with blockhash expiry handling */ private pollForConfirmation; /** * Check if blockhash expired and resubmit transaction if needed * Returns new signature and lastValidBlockHeight if resubmitted, null otherwise */ private checkAndResubmitIfExpired; /** * Check if transaction is confirmed * Returns true if confirmed, false if pending * Throws if transaction failed */ private checkTransactionConfirmation; /** * Send signed transaction to network */ private sendRawTransaction; } //# sourceMappingURL=solana-web3js.d.ts.map