import type { Address, Base64EncodedDataResponse, GetTransactionApi, Lamports, Rpc, Signature, TokenBalance } from '@solana/kit';
import type { Finality, TransferFields } from './types.js';
/**
 * Thrown when a transaction doesn't contain a valid Solana Pay transfer.
 */
export declare class ValidateTransferError extends Error {
    name: string;
}
/**
 * Check that a given transaction contains a valid Solana Pay transfer.
 *
 * @param rpc - An RPC client supporting `getTransaction`.
 * @param signature - The signature of the transaction to validate.
 * @param fields - Fields of a Solana Pay transfer request to validate.
 * @param options - Options for `getTransaction`.
 *
 * @throws {ValidateTransferError}
 */
export declare function validateTransfer(rpc: Rpc<GetTransactionApi>, signature: Signature, { recipient, amount, splToken, reference, memo }: TransferFields, options?: {
    commitment?: Finality;
}): Promise<Readonly<{
    blockTime: import("@solana/kit").UnixTimestamp | null;
    slot: import("@solana/kit").Slot;
}> & ((Record<string, never> | {
    version: import("@solana/kit").TransactionVersion;
}) & {
    meta: (Readonly<{
        computeUnitsConsumed?: bigint;
        err: import("@solana/kit").TransactionError | null;
        fee: Lamports;
        logMessages: readonly string[] | null;
        postBalances: readonly Lamports[];
        postTokenBalances?: readonly TokenBalance[];
        preBalances: readonly Lamports[];
        preTokenBalances?: readonly TokenBalance[];
        returnData?: {
            data: Base64EncodedDataResponse;
            programId: Address;
        };
        rewards: readonly import("@solana/kit").Reward[] | null;
        status: import("@solana/kit").TransactionStatus;
    }> & (Readonly<{
        innerInstructions?: readonly Readonly<{
            index: number;
            instructions: readonly (Readonly<{
                data: import("@solana/kit").Base58EncodedBytes;
            }> & Partial<Readonly<{
                stackHeight: number;
            }>> & Readonly<{
                accounts: readonly number[];
                programIdIndex: number;
            }>)[];
        }>[] | null;
    }> & (Record<string, never> | Readonly<{
        loadedAddresses: {
            readonly: readonly Address[];
            writable: readonly Address[];
        };
    }>))) | null;
    transaction: Base64EncodedDataResponse;
})>;
//# sourceMappingURL=validateTransfer.d.ts.map