import { FeeStructure } from '../../types/hinkal.types';
import { IHinkal } from './IHinkal';
import { PublicKey } from '@solana/web3.js';
import { AdminTransactionType, RecipientUtxo } from '../../types';
import { ERC20Token } from '../../types/token.types';
export declare const buildMultiPaymentDepositSetup: (hinkal: IHinkal, chainId: number, token: ERC20Token, amounts: bigint[]) => {
    program: import('@coral-xyz/anchor').Program<import('@coral-xyz/anchor').Idl>;
    publicKey: PublicKey;
    originalDeployer: PublicKey;
    mint: PublicKey | null;
    atasValue: null | undefined;
    storageAccount: PublicKey;
    storageVault: PublicKey;
    merkleAccount: PublicKey;
    amounts: bigint[];
    anchorStealthStructures: import('../..').AnchorStealthAddressStructure[];
};
export type MultiPaymentDepositSetup = ReturnType<typeof buildMultiPaymentDepositSetup>;
export declare const buildMultiPaymentDepositBuilder: (setup: MultiPaymentDepositSetup) => import('@coral-xyz/anchor/dist/cjs/program/namespace/methods').MethodsBuilder<import('@coral-xyz/anchor').Idl, import('@coral-xyz/anchor/dist/cjs/idl').IdlInstruction & {
    name: string;
}, import('@coral-xyz/anchor/dist/cjs/idl').IdlInstructionAccountItem>;
export declare const hinkalSolanaWithdrawBatch: (hinkal: IHinkal, chainId: number, token: ERC20Token, userDepositedUtxos: RecipientUtxo[], feeStructure: FeeStructure, hashedEthereumAddress: string, recipientAmounts: bigint[], statusId: string | undefined, txCompletionTime?: number, ref?: string, action?: AdminTransactionType, hashedDashboardAccountId?: string) => Promise<string>;
export declare const hinkalSolanaDepositAndWithdraw: (hinkal: IHinkal, token: ERC20Token, recipientAmounts: bigint[], recipientAddresses: string[], txCompletionTime?: number, feeStructureOverride?: FeeStructure, // Should be passed fee for only one withdraw transaction, multiplication happening in this function
ref?: string, action?: AdminTransactionType, dashboardAccountId?: string) => Promise<string>;
