import type { PublicKey } from '@solana/web3.js';
import { z } from 'zod';
import type { Prettify } from '../../../../utils/prettify';
import type { AuthService } from '../../../Auth';
import { Mint, SolanaWalletAdapter } from '../../types';
import type { BaseSolanaProgramConfigInternal } from '../types';
export declare type ClaimableTokensConfigInternal = {
    /** The program ID of the ClaimableTokensProgram instance. */
    programId: PublicKey;
    /** Map from token mint name to public key address. */
    mints: Record<Mint, PublicKey>;
} & BaseSolanaProgramConfigInternal;
export declare type ClaimableTokensConfig = Prettify<Partial<Omit<ClaimableTokensConfigInternal, 'mints'>> & {
    mints?: Prettify<Partial<Record<Mint, PublicKey>>>;
    solanaWalletAdapter: SolanaWalletAdapter;
}>;
export declare const GetOrCreateUserBankSchema: z.ZodObject<{
    /** The user's Ethereum wallet. */
    ethWallet: z.ZodString;
    /** The name of the token mint. */
    mint: z.ZodDefault<z.ZodEnum<["wAUDIO", "USDC"]>>;
    /**
     * The public key of the account that will be paying the
     * account creation and transaction fees.
     */
    feePayer: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodString, PublicKey, string>, z.ZodType<PublicKey, z.ZodTypeDef, PublicKey>]>>;
}, "strict", z.ZodTypeAny, {
    ethWallet: string;
    mint: "wAUDIO" | "USDC";
    feePayer?: PublicKey | undefined;
}, {
    ethWallet: string;
    mint?: "wAUDIO" | "USDC" | undefined;
    feePayer?: string | PublicKey | undefined;
}>;
export declare type GetOrCreateUserBankRequest = z.infer<typeof GetOrCreateUserBankSchema>;
export declare const DeriveUserBankSchema: z.ZodObject<{
    /** The user's Ethereum wallet. */
    ethWallet: z.ZodString;
    /** The name of the token mint. */
    mint: z.ZodDefault<z.ZodEnum<["wAUDIO", "USDC"]>>;
}, "strict", z.ZodTypeAny, {
    ethWallet: string;
    mint: "wAUDIO" | "USDC";
}, {
    ethWallet: string;
    mint?: "wAUDIO" | "USDC" | undefined;
}>;
export declare type DeriveUserBankRequest = z.infer<typeof DeriveUserBankSchema>;
export declare const CreateTransferSchema: z.ZodObject<{
    /** The public key of the account that will be paying the transaction fees. */
    feePayer: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodString, PublicKey, string>, z.ZodType<PublicKey, z.ZodTypeDef, PublicKey>]>>;
    /** The sending user's Ethereum wallet. */
    ethWallet: z.ZodString;
    /** The name of the token mint. */
    mint: z.ZodDefault<z.ZodEnum<["wAUDIO", "USDC"]>>;
    /** The public key of the destination account. */
    destination: z.ZodUnion<[z.ZodEffects<z.ZodString, PublicKey, string>, z.ZodType<PublicKey, z.ZodTypeDef, PublicKey>]>;
}, "strip", z.ZodTypeAny, {
    ethWallet: string;
    mint: "wAUDIO" | "USDC";
    destination: PublicKey;
    feePayer?: PublicKey | undefined;
}, {
    ethWallet: string;
    destination: (string | PublicKey) & (string | PublicKey | undefined);
    feePayer?: string | PublicKey | undefined;
    mint?: "wAUDIO" | "USDC" | undefined;
}>;
export declare type CreateTransferRequest = z.infer<typeof CreateTransferSchema>;
export declare const CreateSecpSchema: z.ZodObject<{
    /** The sending user's Ethereum wallet. */
    ethWallet: z.ZodString;
    /** The public key of the destination account. */
    destination: z.ZodUnion<[z.ZodEffects<z.ZodString, PublicKey, string>, z.ZodType<PublicKey, z.ZodTypeDef, PublicKey>]>;
    /** The amount to send, either in "lamports"/"wei" (bigint) or decimal number. */
    amount: z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>;
    /** The name of the token mint. */
    mint: z.ZodDefault<z.ZodEnum<["wAUDIO", "USDC"]>>;
    /** The index of this instruction within the transaction. */
    instructionIndex: z.ZodOptional<z.ZodNumber>;
    /** The auth service for signing the instruction data. */
    auth: z.ZodType<AuthService, z.ZodTypeDef, AuthService>;
}, "strict", z.ZodTypeAny, {
    auth: AuthService;
    ethWallet: string;
    mint: "wAUDIO" | "USDC";
    destination: PublicKey;
    amount: number | bigint;
    instructionIndex?: number | undefined;
}, {
    auth: AuthService;
    ethWallet: string;
    destination: (string | PublicKey) & (string | PublicKey | undefined);
    amount: number | bigint;
    mint?: "wAUDIO" | "USDC" | undefined;
    instructionIndex?: number | undefined;
}>;
export declare type CreateSecpRequest = z.infer<typeof CreateSecpSchema>;
