import { Address, SolanaClient, Signature, IInstruction, TransactionMessageWithBlockhashLifetime, CompilableTransactionMessage, FullySignedTransaction, TransactionWithBlockhashLifetime } from 'gill';
import { NosanaClient } from '../index.js';
export declare class SolanaUtils {
    private readonly sdk;
    readonly rpc: SolanaClient["rpc"];
    readonly rpcSubscriptions: SolanaClient["rpcSubscriptions"];
    readonly sendAndConfirmTransaction: SolanaClient["sendAndConfirmTransaction"];
    constructor(sdk: NosanaClient);
    pda(seeds: Array<Address | string>, programId: Address): Promise<Address>;
    getBalance(addressStr: string | Address): Promise<bigint>;
    getLatestBlockhash(): Promise<Readonly<{
        blockhash: import("gill").Blockhash;
        lastValidBlockHeight: bigint;
    }>>;
    /**
     * Type guard to check if the input is a transaction
     */
    private isTransaction;
    /**
     * Type guard to check if the input is a signed transaction
     */
    private isSignedTransaction;
    /**
     * Create, sign, and send a transaction with proper logging and error handling
     * @param instructionsOrTransaction Single instruction, array of instructions, or pre-built transaction
     * @returns The transaction signature
     */
    send(instructionsOrTransaction: IInstruction | IInstruction[] | CompilableTransactionMessage & TransactionMessageWithBlockhashLifetime | FullySignedTransaction & TransactionWithBlockhashLifetime): Promise<Signature>;
}
