import { AddressLookupTableAccount, TransactionInstruction, type ConnectionConfig } from '@solana/web3.js';
import { z } from 'zod';
export declare type BaseSolanaProgramConfigInternal = {
    /** Connection to interact with the Solana RPC */
    rpcEndpoint: string;
    /** Configuration to use for the RPC connection. */
    rpcConfig?: ConnectionConfig;
};
export declare const BuildTransactionSchema: z.ZodObject<{
    instructions: z.ZodArray<z.ZodType<TransactionInstruction, z.ZodTypeDef, TransactionInstruction>, "many">;
    recentBlockhash: z.ZodOptional<z.ZodString>;
    feePayer: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodString, import("@solana/web3.js").PublicKey, string>, z.ZodType<import("@solana/web3.js").PublicKey, z.ZodTypeDef, import("@solana/web3.js").PublicKey>]>>;
    /**
     * Either the public keys or actual account data for related address lookup tables.
     */
    addressLookupTables: z.ZodOptional<z.ZodUnion<[z.ZodDefault<z.ZodArray<z.ZodUnion<[z.ZodEffects<z.ZodString, import("@solana/web3.js").PublicKey, string>, z.ZodType<import("@solana/web3.js").PublicKey, z.ZodTypeDef, import("@solana/web3.js").PublicKey>]>, "many">>, z.ZodDefault<z.ZodArray<z.ZodType<AddressLookupTableAccount, z.ZodTypeDef, AddressLookupTableAccount>, "many">>]>>;
}, "strict", z.ZodTypeAny, {
    instructions: TransactionInstruction[];
    recentBlockhash?: string | undefined;
    feePayer?: import("@solana/web3.js").PublicKey | undefined;
    addressLookupTables?: import("@solana/web3.js").PublicKey[] | AddressLookupTableAccount[] | undefined;
}, {
    instructions: TransactionInstruction[];
    recentBlockhash?: string | undefined;
    feePayer?: string | import("@solana/web3.js").PublicKey | undefined;
    addressLookupTables?: (string | import("@solana/web3.js").PublicKey)[] | AddressLookupTableAccount[] | undefined;
}>;
export declare type BuildTransactionRequest = z.infer<typeof BuildTransactionSchema>;
