/// <reference types="node" />
/// <reference types="node" />
import { ConfirmationStrategy, TxSender, TxSigAndSlot } from './types';
import { Commitment, ConfirmOptions, RpcResponseAndContext, Signer, SignatureResult, Transaction, TransactionSignature, Connection, VersionedTransaction, TransactionInstruction, AddressLookupTableAccount, BlockhashWithExpiryBlockHeight } from '@solana/web3.js';
import { TxHandler } from './txHandler';
import { IWallet } from '../types';
import NodeCache from 'node-cache';
export declare abstract class BaseTxSender implements TxSender {
    connection: Connection;
    wallet: IWallet;
    opts: ConfirmOptions;
    timeout: number;
    additionalConnections: Connection[];
    timeoutCount: number;
    confirmationStrategy: ConfirmationStrategy;
    additionalTxSenderCallbacks: ((base58EncodedTx: string) => void)[];
    txHandler: TxHandler;
    trackTxLandRate?: boolean;
    throwOnTimeoutError: boolean;
    throwOnTransactionError: boolean;
    lookbackWindowMinutes: number;
    txSigCache?: NodeCache;
    txLandRate: number;
    lastPriorityFeeSuggestion: number;
    landRateToFeeFunc: (landRate: number) => number;
    constructor({ connection, wallet, opts, timeout, additionalConnections, confirmationStrategy, additionalTxSenderCallbacks, trackTxLandRate, txHandler, txLandRateLookbackWindowMinutes, landRateToFeeFunc, throwOnTimeoutError, throwOnTransactionError, }: {
        connection: Connection;
        wallet: IWallet;
        opts?: ConfirmOptions;
        timeout?: number;
        additionalConnections?: any;
        confirmationStrategy?: ConfirmationStrategy;
        additionalTxSenderCallbacks?: ((base58EncodedTx: string) => void)[];
        txHandler?: TxHandler;
        trackTxLandRate?: boolean;
        txLandRateLookbackWindowMinutes?: number;
        landRateToFeeFunc?: (landRate: number) => number;
        throwOnTimeoutError?: boolean;
        throwOnTransactionError?: boolean;
    });
    send(tx: Transaction, additionalSigners?: Array<Signer>, opts?: ConfirmOptions, preSigned?: boolean): Promise<TxSigAndSlot>;
    prepareTx(tx: Transaction, additionalSigners: Array<Signer>, opts: ConfirmOptions, preSigned?: boolean): Promise<Transaction>;
    getVersionedTransaction(ixs: TransactionInstruction[], lookupTableAccounts: AddressLookupTableAccount[], _additionalSigners?: Array<Signer>, opts?: ConfirmOptions, blockhash?: BlockhashWithExpiryBlockHeight): Promise<VersionedTransaction>;
    sendVersionedTransaction(tx: VersionedTransaction, additionalSigners?: Array<Signer>, opts?: ConfirmOptions, preSigned?: boolean): Promise<TxSigAndSlot>;
    sendRawTransaction(rawTransaction: Buffer | Uint8Array, opts: ConfirmOptions): Promise<TxSigAndSlot>;
    simulateTransaction(tx: VersionedTransaction): Promise<boolean>;
    confirmTransactionWebSocket(signature: TransactionSignature, commitment?: Commitment): Promise<RpcResponseAndContext<SignatureResult>>;
    confirmTransactionPolling(signature: TransactionSignature, commitment?: Commitment): Promise<RpcResponseAndContext<SignatureResult> | undefined>;
    confirmTransaction(signature: TransactionSignature, commitment?: Commitment): Promise<RpcResponseAndContext<SignatureResult>>;
    getTimestamp(): number;
    promiseTimeout<T>(promises: Promise<T>[], timeoutMs: number): Promise<T | null>;
    sendToAdditionalConnections(rawTx: Buffer | Uint8Array, opts: ConfirmOptions): void;
    addAdditionalConnection(newConnection: Connection): void;
    getTimeoutCount(): number;
    checkConfirmationResultForError(txSig: string, result: SignatureResult): Promise<void>;
    getTxLandRate(): number;
    private defaultLandRateToFeeFunc;
    getSuggestedPriorityFeeMultiplier(): number;
}
//# sourceMappingURL=baseTxSender.d.ts.map