/**
 * 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 } from '@solana/kit';
import { SVM_SPOKE_PROGRAM_ADDRESS } from '../programs';
export declare const HANDLE_RECEIVE_MESSAGE_DISCRIMINATOR: Uint8Array;
export declare function getHandleReceiveMessageDiscriminatorBytes(): ReadonlyUint8Array;
export type HandleReceiveMessageInstruction<TProgram extends string = typeof SVM_SPOKE_PROGRAM_ADDRESS, TAccountAuthorityPda extends string | IAccountMeta<string> = string, TAccountState extends string | IAccountMeta<string> = string, TAccountSelfAuthority extends string | IAccountMeta<string> = string, TAccountProgram extends string | IAccountMeta<string> = 'JAZWcGrpSWNPTBj8QtJ9UyQqhJCDhG9GJkDeMf5NQBiq', TRemainingAccounts extends readonly IAccountMeta<string>[] = []> = IInstruction<TProgram> & IInstructionWithData<Uint8Array> & IInstructionWithAccounts<[
    TAccountAuthorityPda extends string ? ReadonlySignerAccount<TAccountAuthorityPda> & IAccountSignerMeta<TAccountAuthorityPda> : TAccountAuthorityPda,
    TAccountState extends string ? ReadonlyAccount<TAccountState> : TAccountState,
    TAccountSelfAuthority extends string ? ReadonlyAccount<TAccountSelfAuthority> : TAccountSelfAuthority,
    TAccountProgram extends string ? ReadonlyAccount<TAccountProgram> : TAccountProgram,
    ...TRemainingAccounts
]>;
export type HandleReceiveMessageInstructionData = {
    discriminator: ReadonlyUint8Array;
    remoteDomain: number;
    sender: Address;
    messageBody: ReadonlyUint8Array;
    authorityBump: number;
};
export type HandleReceiveMessageInstructionDataArgs = {
    remoteDomain: number;
    sender: Address;
    messageBody: ReadonlyUint8Array;
    authorityBump: number;
};
export declare function getHandleReceiveMessageInstructionDataEncoder(): Encoder<HandleReceiveMessageInstructionDataArgs>;
export declare function getHandleReceiveMessageInstructionDataDecoder(): Decoder<HandleReceiveMessageInstructionData>;
export declare function getHandleReceiveMessageInstructionDataCodec(): Codec<HandleReceiveMessageInstructionDataArgs, HandleReceiveMessageInstructionData>;
export type HandleReceiveMessageAsyncInput<TAccountAuthorityPda extends string = string, TAccountState extends string = string, TAccountSelfAuthority extends string = string, TAccountProgram extends string = string> = {
    authorityPda?: TransactionSigner<TAccountAuthorityPda>;
    state: Address<TAccountState>;
    selfAuthority?: Address<TAccountSelfAuthority>;
    program?: Address<TAccountProgram>;
    remoteDomain: HandleReceiveMessageInstructionDataArgs['remoteDomain'];
    sender: HandleReceiveMessageInstructionDataArgs['sender'];
    messageBody: HandleReceiveMessageInstructionDataArgs['messageBody'];
    authorityBump: HandleReceiveMessageInstructionDataArgs['authorityBump'];
};
export declare function getHandleReceiveMessageInstructionAsync<TAccountAuthorityPda extends string, TAccountState extends string, TAccountSelfAuthority extends string, TAccountProgram extends string, TProgramAddress extends Address = typeof SVM_SPOKE_PROGRAM_ADDRESS>(input: HandleReceiveMessageAsyncInput<TAccountAuthorityPda, TAccountState, TAccountSelfAuthority, TAccountProgram>, config?: {
    programAddress?: TProgramAddress;
}): Promise<HandleReceiveMessageInstruction<TProgramAddress, TAccountAuthorityPda, TAccountState, TAccountSelfAuthority, TAccountProgram>>;
export type HandleReceiveMessageInput<TAccountAuthorityPda extends string = string, TAccountState extends string = string, TAccountSelfAuthority extends string = string, TAccountProgram extends string = string> = {
    authorityPda: TransactionSigner<TAccountAuthorityPda>;
    state: Address<TAccountState>;
    selfAuthority: Address<TAccountSelfAuthority>;
    program?: Address<TAccountProgram>;
    remoteDomain: HandleReceiveMessageInstructionDataArgs['remoteDomain'];
    sender: HandleReceiveMessageInstructionDataArgs['sender'];
    messageBody: HandleReceiveMessageInstructionDataArgs['messageBody'];
    authorityBump: HandleReceiveMessageInstructionDataArgs['authorityBump'];
};
export declare function getHandleReceiveMessageInstruction<TAccountAuthorityPda extends string, TAccountState extends string, TAccountSelfAuthority extends string, TAccountProgram extends string, TProgramAddress extends Address = typeof SVM_SPOKE_PROGRAM_ADDRESS>(input: HandleReceiveMessageInput<TAccountAuthorityPda, TAccountState, TAccountSelfAuthority, TAccountProgram>, config?: {
    programAddress?: TProgramAddress;
}): HandleReceiveMessageInstruction<TProgramAddress, TAccountAuthorityPda, TAccountState, TAccountSelfAuthority, TAccountProgram>;
export type ParsedHandleReceiveMessageInstruction<TProgram extends string = typeof SVM_SPOKE_PROGRAM_ADDRESS, TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[]> = {
    programAddress: Address<TProgram>;
    accounts: {
        authorityPda: TAccountMetas[0];
        state: TAccountMetas[1];
        selfAuthority: TAccountMetas[2];
        program: TAccountMetas[3];
    };
    data: HandleReceiveMessageInstructionData;
};
export declare function parseHandleReceiveMessageInstruction<TProgram extends string, TAccountMetas extends readonly IAccountMeta[]>(instruction: IInstruction<TProgram> & IInstructionWithAccounts<TAccountMetas> & IInstructionWithData<Uint8Array>): ParsedHandleReceiveMessageInstruction<TProgram, TAccountMetas>;
