import { Commitment, Connection, PublicKey, VersionedTransaction } from '@solana/web3.js';
import type { SolanaWalletAdapter } from '../types';
import { BuildTransactionRequest, type BaseSolanaProgramConfigInternal } from './types';
/**
 * Abstract class for initializing individual program clients.
 */
export declare class BaseSolanaProgram {
    protected wallet: SolanaWalletAdapter;
    /** The endpoint for the Solana RPC. */
    protected readonly connection: Connection;
    constructor(config: BaseSolanaProgramConfigInternal, wallet: SolanaWalletAdapter);
    /**
     * Sends a transaction using the connected wallet adapter and the connection.
     * @param transaction The transaction to send.
     * @param sendOptions The options to send it with.
     */
    sendTransaction(transaction: Parameters<SolanaWalletAdapter['sendTransaction']>[0], sendOptions?: Parameters<SolanaWalletAdapter['sendTransaction']>[2]): Promise<string>;
    /**
     * Confirms all the transactions provided
     */
    confirmAllTransactions(signatures: string[], commitment?: Commitment): Promise<void>;
    /**
     * Convenience helper to construct v0 transactions.
     *
     * Handles fetching a recent blockhash, getting lookup table accounts,
     * and assigning a fee payer.
     */
    buildTransaction(params: BuildTransactionRequest): Promise<VersionedTransaction>;
    /**
     * Gets the fee payer from the connected wallet.
     */
    protected getFeePayer(): Promise<PublicKey>;
    private getLookupTableAccounts;
}
