import { PublicKey } from '@solana/web3.js';
import { z } from 'zod';
import { Prettify } from '../../../../utils/prettify';
import { TokenName } from '../../types';
import type { SolanaClient } from '../SolanaClient';
export type PaymentRouterClientConfigInternal = {
    programId: PublicKey;
    mints: Prettify<Partial<Record<TokenName, PublicKey>>>;
};
export type PaymentRouterClientConfig = Partial<PaymentRouterClientConfigInternal> & {
    solanaClient: SolanaClient;
};
export declare const CreateTransferInstructionSchema: z.ZodObject<{
    mint: z.ZodUnion<[z.ZodEnum<["wAUDIO", "USDC", "BONK"]>, z.ZodUnion<[z.ZodEffects<z.ZodString, PublicKey, string>, z.ZodType<PublicKey, z.ZodTypeDef, PublicKey>]>]>;
    total: z.ZodBigInt;
    sourceWallet: z.ZodUnion<[z.ZodEffects<z.ZodString, PublicKey, string>, z.ZodType<PublicKey, z.ZodTypeDef, PublicKey>]>;
}, "strip", z.ZodTypeAny, {
    mint: (PublicKey | "wAUDIO" | "USDC" | "BONK") & (PublicKey | "wAUDIO" | "USDC" | "BONK" | undefined);
    total: bigint;
    sourceWallet: PublicKey;
}, {
    mint: (string | PublicKey) & (string | PublicKey | undefined);
    total: bigint;
    sourceWallet: (string | PublicKey) & (string | PublicKey | undefined);
}>;
export type CreateTransferInstructionRequest = z.input<typeof CreateTransferInstructionSchema>;
export declare const CreateRouteInstructionSchema: z.ZodObject<{
    mint: z.ZodUnion<[z.ZodEnum<["wAUDIO", "USDC", "BONK"]>, z.ZodUnion<[z.ZodEffects<z.ZodString, PublicKey, string>, z.ZodType<PublicKey, z.ZodTypeDef, PublicKey>]>]>;
    splits: z.ZodArray<z.ZodObject<{
        wallet: z.ZodUnion<[z.ZodEffects<z.ZodString, PublicKey, string>, z.ZodType<PublicKey, z.ZodTypeDef, PublicKey>]>;
        amount: z.ZodBigInt;
    }, "strip", z.ZodTypeAny, {
        amount: bigint;
        wallet: PublicKey;
    }, {
        amount: bigint;
        wallet: (string | PublicKey) & (string | PublicKey | undefined);
    }>, "many">;
    total: z.ZodBigInt;
}, "strip", z.ZodTypeAny, {
    mint: (PublicKey | "wAUDIO" | "USDC" | "BONK") & (PublicKey | "wAUDIO" | "USDC" | "BONK" | undefined);
    total: bigint;
    splits: {
        amount: bigint;
        wallet: PublicKey;
    }[];
}, {
    mint: (string | PublicKey) & (string | PublicKey | undefined);
    total: bigint;
    splits: {
        amount: bigint;
        wallet: (string | PublicKey) & (string | PublicKey | undefined);
    }[];
}>;
export type CreateRouteInstructionRequest = z.input<typeof CreateRouteInstructionSchema>;
export declare const CreateMemoInstructionSchema: z.ZodObject<{
    contentType: z.ZodEnum<["track", "album"]>;
    contentId: z.ZodUnion<[z.ZodEffects<z.ZodString, number, string>, z.ZodNumber]>;
    blockNumber: z.ZodNumber;
    buyerUserId: z.ZodUnion<[z.ZodEffects<z.ZodString, number, string>, z.ZodNumber]>;
    accessType: z.ZodEnum<["stream", "download"]>;
    signer: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodString, PublicKey, string>, z.ZodType<PublicKey, z.ZodTypeDef, PublicKey>]>>;
}, "strip", z.ZodTypeAny, {
    blockNumber: number;
    contentId: number;
    contentType: "track" | "album";
    buyerUserId: number;
    accessType: "stream" | "download";
    signer?: PublicKey | undefined;
}, {
    blockNumber: number;
    contentId: string | number;
    contentType: "track" | "album";
    buyerUserId: string | number;
    accessType: "stream" | "download";
    signer?: string | PublicKey | undefined;
}>;
export type CreateMemoInstructionRequest = z.input<typeof CreateMemoInstructionSchema>;
export declare const CreatePurchaseContentInstructionsSchema: z.ZodObject<{
    mint: z.ZodUnion<[z.ZodEnum<["wAUDIO", "USDC", "BONK"]>, z.ZodUnion<[z.ZodEffects<z.ZodString, PublicKey, string>, z.ZodType<PublicKey, z.ZodTypeDef, PublicKey>]>]>;
    total: z.ZodBigInt;
    sourceWallet: z.ZodUnion<[z.ZodEffects<z.ZodString, PublicKey, string>, z.ZodType<PublicKey, z.ZodTypeDef, PublicKey>]>;
    splits: z.ZodArray<z.ZodObject<{
        wallet: z.ZodUnion<[z.ZodEffects<z.ZodString, PublicKey, string>, z.ZodType<PublicKey, z.ZodTypeDef, PublicKey>]>;
        amount: z.ZodBigInt;
    }, "strip", z.ZodTypeAny, {
        amount: bigint;
        wallet: PublicKey;
    }, {
        amount: bigint;
        wallet: (string | PublicKey) & (string | PublicKey | undefined);
    }>, "many">;
    contentType: z.ZodEnum<["track", "album"]>;
    contentId: z.ZodUnion<[z.ZodEffects<z.ZodString, number, string>, z.ZodNumber]>;
    blockNumber: z.ZodNumber;
    buyerUserId: z.ZodUnion<[z.ZodEffects<z.ZodString, number, string>, z.ZodNumber]>;
    accessType: z.ZodEnum<["stream", "download"]>;
    signer: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodString, PublicKey, string>, z.ZodType<PublicKey, z.ZodTypeDef, PublicKey>]>>;
}, "strip", z.ZodTypeAny, {
    blockNumber: number;
    mint: (PublicKey | "wAUDIO" | "USDC" | "BONK") & (PublicKey | "wAUDIO" | "USDC" | "BONK" | undefined);
    contentId: number;
    total: bigint;
    sourceWallet: PublicKey;
    splits: {
        amount: bigint;
        wallet: PublicKey;
    }[];
    contentType: "track" | "album";
    buyerUserId: number;
    accessType: "stream" | "download";
    signer?: PublicKey | undefined;
}, {
    blockNumber: number;
    mint: (string | PublicKey) & (string | PublicKey | undefined);
    contentId: string | number;
    total: bigint;
    sourceWallet: (string | PublicKey) & (string | PublicKey | undefined);
    splits: {
        amount: bigint;
        wallet: (string | PublicKey) & (string | PublicKey | undefined);
    }[];
    contentType: "track" | "album";
    buyerUserId: string | number;
    accessType: "stream" | "download";
    signer?: string | PublicKey | undefined;
}>;
export type CreatePurchaseContentInstructionsRequest = z.input<typeof CreatePurchaseContentInstructionsSchema>;
export declare const GetOrCreateProgramTokenAccountSchema: z.ZodObject<{
    mint: z.ZodUnion<[z.ZodEnum<["wAUDIO", "USDC", "BONK"]>, z.ZodUnion<[z.ZodEffects<z.ZodString, PublicKey, string>, z.ZodType<PublicKey, z.ZodTypeDef, PublicKey>]>]>;
}, "strip", z.ZodTypeAny, {
    mint: (PublicKey | "wAUDIO" | "USDC" | "BONK") & (PublicKey | "wAUDIO" | "USDC" | "BONK" | undefined);
}, {
    mint: (string | PublicKey) & (string | PublicKey | undefined);
}>;
export type GetOrCreateProgramTokenAccountRequest = z.input<typeof GetOrCreateProgramTokenAccountSchema>;
