/**
 * This code was AUTOGENERATED using the codama library.
 * Please DO NOT EDIT THIS FILE, instead use visitors
 * to add features, then rerun codama to update it.
 *
 * @see https://github.com/codama-idl/codama
 */
import { type Address, type Codec, type Decoder, type Encoder, type IAccountMeta, type IAccountSignerMeta, type IInstruction, type IInstructionWithAccounts, type IInstructionWithData, type ReadonlyAccount, type ReadonlyUint8Array, type TransactionSigner, type WritableAccount, type WritableSignerAccount } from '@solana/kit';
import { SVM_SPOKE_PROGRAM_ADDRESS } from '../programs';
export declare const UNSAFE_DEPOSIT_DISCRIMINATOR: Uint8Array;
export declare function getUnsafeDepositDiscriminatorBytes(): ReadonlyUint8Array;
export type UnsafeDepositInstruction<TProgram extends string = typeof SVM_SPOKE_PROGRAM_ADDRESS, TAccountSigner extends string | IAccountMeta<string> = string, TAccountState extends string | IAccountMeta<string> = string, TAccountRoute extends string | IAccountMeta<string> = string, TAccountDepositorTokenAccount extends string | IAccountMeta<string> = string, TAccountVault extends string | IAccountMeta<string> = string, TAccountMint extends string | IAccountMeta<string> = string, TAccountTokenProgram extends string | IAccountMeta<string> = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA', TAccountEventAuthority extends string | IAccountMeta<string> = string, TAccountProgram extends string | IAccountMeta<string> = string, TRemainingAccounts extends readonly IAccountMeta<string>[] = []> = IInstruction<TProgram> & IInstructionWithData<Uint8Array> & IInstructionWithAccounts<[
    TAccountSigner extends string ? WritableSignerAccount<TAccountSigner> & IAccountSignerMeta<TAccountSigner> : TAccountSigner,
    TAccountState extends string ? WritableAccount<TAccountState> : TAccountState,
    TAccountRoute extends string ? ReadonlyAccount<TAccountRoute> : TAccountRoute,
    TAccountDepositorTokenAccount extends string ? WritableAccount<TAccountDepositorTokenAccount> : TAccountDepositorTokenAccount,
    TAccountVault extends string ? WritableAccount<TAccountVault> : TAccountVault,
    TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint,
    TAccountTokenProgram extends string ? ReadonlyAccount<TAccountTokenProgram> : TAccountTokenProgram,
    TAccountEventAuthority extends string ? ReadonlyAccount<TAccountEventAuthority> : TAccountEventAuthority,
    TAccountProgram extends string ? ReadonlyAccount<TAccountProgram> : TAccountProgram,
    ...TRemainingAccounts
]>;
export type UnsafeDepositInstructionData = {
    discriminator: ReadonlyUint8Array;
    depositor: Address;
    recipient: Address;
    inputToken: Address;
    outputToken: Address;
    inputAmount: bigint;
    outputAmount: bigint;
    destinationChainId: bigint;
    exclusiveRelayer: Address;
    depositNonce: bigint;
    quoteTimestamp: number;
    fillDeadline: number;
    exclusivityParameter: number;
    message: ReadonlyUint8Array;
};
export type UnsafeDepositInstructionDataArgs = {
    depositor: Address;
    recipient: Address;
    inputToken: Address;
    outputToken: Address;
    inputAmount: number | bigint;
    outputAmount: number | bigint;
    destinationChainId: number | bigint;
    exclusiveRelayer: Address;
    depositNonce: number | bigint;
    quoteTimestamp: number;
    fillDeadline: number;
    exclusivityParameter: number;
    message: ReadonlyUint8Array;
};
export declare function getUnsafeDepositInstructionDataEncoder(): Encoder<UnsafeDepositInstructionDataArgs>;
export declare function getUnsafeDepositInstructionDataDecoder(): Decoder<UnsafeDepositInstructionData>;
export declare function getUnsafeDepositInstructionDataCodec(): Codec<UnsafeDepositInstructionDataArgs, UnsafeDepositInstructionData>;
export type UnsafeDepositAsyncInput<TAccountSigner extends string = string, TAccountState extends string = string, TAccountRoute extends string = string, TAccountDepositorTokenAccount extends string = string, TAccountVault extends string = string, TAccountMint extends string = string, TAccountTokenProgram extends string = string, TAccountEventAuthority extends string = string, TAccountProgram extends string = string> = {
    signer: TransactionSigner<TAccountSigner>;
    state: Address<TAccountState>;
    route: Address<TAccountRoute>;
    depositorTokenAccount?: Address<TAccountDepositorTokenAccount>;
    vault?: Address<TAccountVault>;
    mint: Address<TAccountMint>;
    tokenProgram?: Address<TAccountTokenProgram>;
    eventAuthority?: Address<TAccountEventAuthority>;
    program: Address<TAccountProgram>;
    depositor: UnsafeDepositInstructionDataArgs['depositor'];
    recipient: UnsafeDepositInstructionDataArgs['recipient'];
    inputToken: UnsafeDepositInstructionDataArgs['inputToken'];
    outputToken: UnsafeDepositInstructionDataArgs['outputToken'];
    inputAmount: UnsafeDepositInstructionDataArgs['inputAmount'];
    outputAmount: UnsafeDepositInstructionDataArgs['outputAmount'];
    destinationChainId: UnsafeDepositInstructionDataArgs['destinationChainId'];
    exclusiveRelayer: UnsafeDepositInstructionDataArgs['exclusiveRelayer'];
    depositNonce: UnsafeDepositInstructionDataArgs['depositNonce'];
    quoteTimestamp: UnsafeDepositInstructionDataArgs['quoteTimestamp'];
    fillDeadline: UnsafeDepositInstructionDataArgs['fillDeadline'];
    exclusivityParameter: UnsafeDepositInstructionDataArgs['exclusivityParameter'];
    message: UnsafeDepositInstructionDataArgs['message'];
};
export declare function getUnsafeDepositInstructionAsync<TAccountSigner extends string, TAccountState extends string, TAccountRoute extends string, TAccountDepositorTokenAccount extends string, TAccountVault extends string, TAccountMint extends string, TAccountTokenProgram extends string, TAccountEventAuthority extends string, TAccountProgram extends string, TProgramAddress extends Address = typeof SVM_SPOKE_PROGRAM_ADDRESS>(input: UnsafeDepositAsyncInput<TAccountSigner, TAccountState, TAccountRoute, TAccountDepositorTokenAccount, TAccountVault, TAccountMint, TAccountTokenProgram, TAccountEventAuthority, TAccountProgram>, config?: {
    programAddress?: TProgramAddress;
}): Promise<UnsafeDepositInstruction<TProgramAddress, TAccountSigner, TAccountState, TAccountRoute, TAccountDepositorTokenAccount, TAccountVault, TAccountMint, TAccountTokenProgram, TAccountEventAuthority, TAccountProgram>>;
export type UnsafeDepositInput<TAccountSigner extends string = string, TAccountState extends string = string, TAccountRoute extends string = string, TAccountDepositorTokenAccount extends string = string, TAccountVault extends string = string, TAccountMint extends string = string, TAccountTokenProgram extends string = string, TAccountEventAuthority extends string = string, TAccountProgram extends string = string> = {
    signer: TransactionSigner<TAccountSigner>;
    state: Address<TAccountState>;
    route: Address<TAccountRoute>;
    depositorTokenAccount: Address<TAccountDepositorTokenAccount>;
    vault: Address<TAccountVault>;
    mint: Address<TAccountMint>;
    tokenProgram?: Address<TAccountTokenProgram>;
    eventAuthority: Address<TAccountEventAuthority>;
    program: Address<TAccountProgram>;
    depositor: UnsafeDepositInstructionDataArgs['depositor'];
    recipient: UnsafeDepositInstructionDataArgs['recipient'];
    inputToken: UnsafeDepositInstructionDataArgs['inputToken'];
    outputToken: UnsafeDepositInstructionDataArgs['outputToken'];
    inputAmount: UnsafeDepositInstructionDataArgs['inputAmount'];
    outputAmount: UnsafeDepositInstructionDataArgs['outputAmount'];
    destinationChainId: UnsafeDepositInstructionDataArgs['destinationChainId'];
    exclusiveRelayer: UnsafeDepositInstructionDataArgs['exclusiveRelayer'];
    depositNonce: UnsafeDepositInstructionDataArgs['depositNonce'];
    quoteTimestamp: UnsafeDepositInstructionDataArgs['quoteTimestamp'];
    fillDeadline: UnsafeDepositInstructionDataArgs['fillDeadline'];
    exclusivityParameter: UnsafeDepositInstructionDataArgs['exclusivityParameter'];
    message: UnsafeDepositInstructionDataArgs['message'];
};
export declare function getUnsafeDepositInstruction<TAccountSigner extends string, TAccountState extends string, TAccountRoute extends string, TAccountDepositorTokenAccount extends string, TAccountVault extends string, TAccountMint extends string, TAccountTokenProgram extends string, TAccountEventAuthority extends string, TAccountProgram extends string, TProgramAddress extends Address = typeof SVM_SPOKE_PROGRAM_ADDRESS>(input: UnsafeDepositInput<TAccountSigner, TAccountState, TAccountRoute, TAccountDepositorTokenAccount, TAccountVault, TAccountMint, TAccountTokenProgram, TAccountEventAuthority, TAccountProgram>, config?: {
    programAddress?: TProgramAddress;
}): UnsafeDepositInstruction<TProgramAddress, TAccountSigner, TAccountState, TAccountRoute, TAccountDepositorTokenAccount, TAccountVault, TAccountMint, TAccountTokenProgram, TAccountEventAuthority, TAccountProgram>;
export type ParsedUnsafeDepositInstruction<TProgram extends string = typeof SVM_SPOKE_PROGRAM_ADDRESS, TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[]> = {
    programAddress: Address<TProgram>;
    accounts: {
        signer: TAccountMetas[0];
        state: TAccountMetas[1];
        route: TAccountMetas[2];
        depositorTokenAccount: TAccountMetas[3];
        vault: TAccountMetas[4];
        mint: TAccountMetas[5];
        tokenProgram: TAccountMetas[6];
        eventAuthority: TAccountMetas[7];
        program: TAccountMetas[8];
    };
    data: UnsafeDepositInstructionData;
};
export declare function parseUnsafeDepositInstruction<TProgram extends string, TAccountMetas extends readonly IAccountMeta[]>(instruction: IInstruction<TProgram> & IInstructionWithAccounts<TAccountMetas> & IInstructionWithData<Uint8Array>): ParsedUnsafeDepositInstruction<TProgram, TAccountMetas>;
