/**
 * 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 ReadonlySignerAccount, type ReadonlyUint8Array, type TransactionSigner, type WritableAccount } from '@solana/kit';
import { TOKEN_MESSENGER_MINTER_V2_PROGRAM_ADDRESS } from '../programs';
import { type HandleReceiveMessageParams, type HandleReceiveMessageParamsArgs } from '../types';
export declare const HANDLE_RECEIVE_FINALIZED_MESSAGE_DISCRIMINATOR: Uint8Array;
export declare function getHandleReceiveFinalizedMessageDiscriminatorBytes(): ReadonlyUint8Array;
export type HandleReceiveFinalizedMessageInstruction<TProgram extends string = typeof TOKEN_MESSENGER_MINTER_V2_PROGRAM_ADDRESS, TAccountAuthorityPda extends string | IAccountMeta<string> = string, TAccountTokenMessenger extends string | IAccountMeta<string> = string, TAccountRemoteTokenMessenger extends string | IAccountMeta<string> = string, TAccountTokenMinter extends string | IAccountMeta<string> = string, TAccountLocalToken extends string | IAccountMeta<string> = string, TAccountTokenPair extends string | IAccountMeta<string> = string, TAccountFeeRecipientTokenAccount extends string | IAccountMeta<string> = string, TAccountRecipientTokenAccount extends string | IAccountMeta<string> = string, TAccountCustodyTokenAccount 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<[
    TAccountAuthorityPda extends string ? ReadonlySignerAccount<TAccountAuthorityPda> & IAccountSignerMeta<TAccountAuthorityPda> : TAccountAuthorityPda,
    TAccountTokenMessenger extends string ? ReadonlyAccount<TAccountTokenMessenger> : TAccountTokenMessenger,
    TAccountRemoteTokenMessenger extends string ? ReadonlyAccount<TAccountRemoteTokenMessenger> : TAccountRemoteTokenMessenger,
    TAccountTokenMinter extends string ? ReadonlyAccount<TAccountTokenMinter> : TAccountTokenMinter,
    TAccountLocalToken extends string ? WritableAccount<TAccountLocalToken> : TAccountLocalToken,
    TAccountTokenPair extends string ? ReadonlyAccount<TAccountTokenPair> : TAccountTokenPair,
    TAccountFeeRecipientTokenAccount extends string ? WritableAccount<TAccountFeeRecipientTokenAccount> : TAccountFeeRecipientTokenAccount,
    TAccountRecipientTokenAccount extends string ? WritableAccount<TAccountRecipientTokenAccount> : TAccountRecipientTokenAccount,
    TAccountCustodyTokenAccount extends string ? WritableAccount<TAccountCustodyTokenAccount> : TAccountCustodyTokenAccount,
    TAccountTokenProgram extends string ? ReadonlyAccount<TAccountTokenProgram> : TAccountTokenProgram,
    TAccountEventAuthority extends string ? ReadonlyAccount<TAccountEventAuthority> : TAccountEventAuthority,
    TAccountProgram extends string ? ReadonlyAccount<TAccountProgram> : TAccountProgram,
    ...TRemainingAccounts
]>;
export type HandleReceiveFinalizedMessageInstructionData = {
    discriminator: ReadonlyUint8Array;
    params: HandleReceiveMessageParams;
};
export type HandleReceiveFinalizedMessageInstructionDataArgs = {
    params: HandleReceiveMessageParamsArgs;
};
export declare function getHandleReceiveFinalizedMessageInstructionDataEncoder(): Encoder<HandleReceiveFinalizedMessageInstructionDataArgs>;
export declare function getHandleReceiveFinalizedMessageInstructionDataDecoder(): Decoder<HandleReceiveFinalizedMessageInstructionData>;
export declare function getHandleReceiveFinalizedMessageInstructionDataCodec(): Codec<HandleReceiveFinalizedMessageInstructionDataArgs, HandleReceiveFinalizedMessageInstructionData>;
export type HandleReceiveFinalizedMessageAsyncInput<TAccountAuthorityPda extends string = string, TAccountTokenMessenger extends string = string, TAccountRemoteTokenMessenger extends string = string, TAccountTokenMinter extends string = string, TAccountLocalToken extends string = string, TAccountTokenPair extends string = string, TAccountFeeRecipientTokenAccount extends string = string, TAccountRecipientTokenAccount extends string = string, TAccountCustodyTokenAccount extends string = string, TAccountTokenProgram extends string = string, TAccountEventAuthority extends string = string, TAccountProgram extends string = string> = {
    authorityPda?: TransactionSigner<TAccountAuthorityPda>;
    tokenMessenger: Address<TAccountTokenMessenger>;
    remoteTokenMessenger: Address<TAccountRemoteTokenMessenger>;
    tokenMinter: Address<TAccountTokenMinter>;
    localToken: Address<TAccountLocalToken>;
    tokenPair: Address<TAccountTokenPair>;
    feeRecipientTokenAccount: Address<TAccountFeeRecipientTokenAccount>;
    recipientTokenAccount: Address<TAccountRecipientTokenAccount>;
    custodyTokenAccount: Address<TAccountCustodyTokenAccount>;
    tokenProgram?: Address<TAccountTokenProgram>;
    eventAuthority?: Address<TAccountEventAuthority>;
    program: Address<TAccountProgram>;
    params: HandleReceiveFinalizedMessageInstructionDataArgs['params'];
};
export declare function getHandleReceiveFinalizedMessageInstructionAsync<TAccountAuthorityPda extends string, TAccountTokenMessenger extends string, TAccountRemoteTokenMessenger extends string, TAccountTokenMinter extends string, TAccountLocalToken extends string, TAccountTokenPair extends string, TAccountFeeRecipientTokenAccount extends string, TAccountRecipientTokenAccount extends string, TAccountCustodyTokenAccount extends string, TAccountTokenProgram extends string, TAccountEventAuthority extends string, TAccountProgram extends string, TProgramAddress extends Address = typeof TOKEN_MESSENGER_MINTER_V2_PROGRAM_ADDRESS>(input: HandleReceiveFinalizedMessageAsyncInput<TAccountAuthorityPda, TAccountTokenMessenger, TAccountRemoteTokenMessenger, TAccountTokenMinter, TAccountLocalToken, TAccountTokenPair, TAccountFeeRecipientTokenAccount, TAccountRecipientTokenAccount, TAccountCustodyTokenAccount, TAccountTokenProgram, TAccountEventAuthority, TAccountProgram>, config?: {
    programAddress?: TProgramAddress;
}): Promise<HandleReceiveFinalizedMessageInstruction<TProgramAddress, TAccountAuthorityPda, TAccountTokenMessenger, TAccountRemoteTokenMessenger, TAccountTokenMinter, TAccountLocalToken, TAccountTokenPair, TAccountFeeRecipientTokenAccount, TAccountRecipientTokenAccount, TAccountCustodyTokenAccount, TAccountTokenProgram, TAccountEventAuthority, TAccountProgram>>;
export type HandleReceiveFinalizedMessageInput<TAccountAuthorityPda extends string = string, TAccountTokenMessenger extends string = string, TAccountRemoteTokenMessenger extends string = string, TAccountTokenMinter extends string = string, TAccountLocalToken extends string = string, TAccountTokenPair extends string = string, TAccountFeeRecipientTokenAccount extends string = string, TAccountRecipientTokenAccount extends string = string, TAccountCustodyTokenAccount extends string = string, TAccountTokenProgram extends string = string, TAccountEventAuthority extends string = string, TAccountProgram extends string = string> = {
    authorityPda: TransactionSigner<TAccountAuthorityPda>;
    tokenMessenger: Address<TAccountTokenMessenger>;
    remoteTokenMessenger: Address<TAccountRemoteTokenMessenger>;
    tokenMinter: Address<TAccountTokenMinter>;
    localToken: Address<TAccountLocalToken>;
    tokenPair: Address<TAccountTokenPair>;
    feeRecipientTokenAccount: Address<TAccountFeeRecipientTokenAccount>;
    recipientTokenAccount: Address<TAccountRecipientTokenAccount>;
    custodyTokenAccount: Address<TAccountCustodyTokenAccount>;
    tokenProgram?: Address<TAccountTokenProgram>;
    eventAuthority: Address<TAccountEventAuthority>;
    program: Address<TAccountProgram>;
    params: HandleReceiveFinalizedMessageInstructionDataArgs['params'];
};
export declare function getHandleReceiveFinalizedMessageInstruction<TAccountAuthorityPda extends string, TAccountTokenMessenger extends string, TAccountRemoteTokenMessenger extends string, TAccountTokenMinter extends string, TAccountLocalToken extends string, TAccountTokenPair extends string, TAccountFeeRecipientTokenAccount extends string, TAccountRecipientTokenAccount extends string, TAccountCustodyTokenAccount extends string, TAccountTokenProgram extends string, TAccountEventAuthority extends string, TAccountProgram extends string, TProgramAddress extends Address = typeof TOKEN_MESSENGER_MINTER_V2_PROGRAM_ADDRESS>(input: HandleReceiveFinalizedMessageInput<TAccountAuthorityPda, TAccountTokenMessenger, TAccountRemoteTokenMessenger, TAccountTokenMinter, TAccountLocalToken, TAccountTokenPair, TAccountFeeRecipientTokenAccount, TAccountRecipientTokenAccount, TAccountCustodyTokenAccount, TAccountTokenProgram, TAccountEventAuthority, TAccountProgram>, config?: {
    programAddress?: TProgramAddress;
}): HandleReceiveFinalizedMessageInstruction<TProgramAddress, TAccountAuthorityPda, TAccountTokenMessenger, TAccountRemoteTokenMessenger, TAccountTokenMinter, TAccountLocalToken, TAccountTokenPair, TAccountFeeRecipientTokenAccount, TAccountRecipientTokenAccount, TAccountCustodyTokenAccount, TAccountTokenProgram, TAccountEventAuthority, TAccountProgram>;
export type ParsedHandleReceiveFinalizedMessageInstruction<TProgram extends string = typeof TOKEN_MESSENGER_MINTER_V2_PROGRAM_ADDRESS, TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[]> = {
    programAddress: Address<TProgram>;
    accounts: {
        authorityPda: TAccountMetas[0];
        tokenMessenger: TAccountMetas[1];
        remoteTokenMessenger: TAccountMetas[2];
        tokenMinter: TAccountMetas[3];
        localToken: TAccountMetas[4];
        tokenPair: TAccountMetas[5];
        feeRecipientTokenAccount: TAccountMetas[6];
        recipientTokenAccount: TAccountMetas[7];
        custodyTokenAccount: TAccountMetas[8];
        tokenProgram: TAccountMetas[9];
        eventAuthority: TAccountMetas[10];
        program: TAccountMetas[11];
    };
    data: HandleReceiveFinalizedMessageInstructionData;
};
export declare function parseHandleReceiveFinalizedMessageInstruction<TProgram extends string, TAccountMetas extends readonly IAccountMeta[]>(instruction: IInstruction<TProgram> & IInstructionWithAccounts<TAccountMetas> & IInstructionWithData<Uint8Array>): ParsedHandleReceiveFinalizedMessageInstruction<TProgram, TAccountMetas>;
