/**
 * 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, type WritableSignerAccount } from '@solana/kit';
import { TOKEN_MESSENGER_MINTER_V2_PROGRAM_ADDRESS } from '../programs';
export declare const INITIALIZE_DISCRIMINATOR: Uint8Array;
export declare function getInitializeDiscriminatorBytes(): ReadonlyUint8Array;
export type InitializeInstruction<TProgram extends string = typeof TOKEN_MESSENGER_MINTER_V2_PROGRAM_ADDRESS, TAccountPayer extends string | IAccountMeta<string> = string, TAccountUpgradeAuthority extends string | IAccountMeta<string> = string, TAccountAuthorityPda extends string | IAccountMeta<string> = string, TAccountTokenMessenger extends string | IAccountMeta<string> = string, TAccountTokenMinter extends string | IAccountMeta<string> = string, TAccountTokenMessengerMinterProgramData extends string | IAccountMeta<string> = string, TAccountTokenMessengerMinterProgram extends string | IAccountMeta<string> = 'CCTPV2vPZJS2u2BBsUoscuikbYjnpFmbFsvVuJdgUMQe', TAccountSystemProgram extends string | IAccountMeta<string> = '11111111111111111111111111111111', TAccountEventAuthority extends string | IAccountMeta<string> = string, TAccountProgram extends string | IAccountMeta<string> = string, TRemainingAccounts extends readonly IAccountMeta<string>[] = []> = IInstruction<TProgram> & IInstructionWithData<Uint8Array> & IInstructionWithAccounts<[
    TAccountPayer extends string ? WritableSignerAccount<TAccountPayer> & IAccountSignerMeta<TAccountPayer> : TAccountPayer,
    TAccountUpgradeAuthority extends string ? ReadonlySignerAccount<TAccountUpgradeAuthority> & IAccountSignerMeta<TAccountUpgradeAuthority> : TAccountUpgradeAuthority,
    TAccountAuthorityPda extends string ? ReadonlyAccount<TAccountAuthorityPda> : TAccountAuthorityPda,
    TAccountTokenMessenger extends string ? WritableAccount<TAccountTokenMessenger> : TAccountTokenMessenger,
    TAccountTokenMinter extends string ? WritableAccount<TAccountTokenMinter> : TAccountTokenMinter,
    TAccountTokenMessengerMinterProgramData extends string ? ReadonlyAccount<TAccountTokenMessengerMinterProgramData> : TAccountTokenMessengerMinterProgramData,
    TAccountTokenMessengerMinterProgram extends string ? ReadonlyAccount<TAccountTokenMessengerMinterProgram> : TAccountTokenMessengerMinterProgram,
    TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram,
    TAccountEventAuthority extends string ? ReadonlyAccount<TAccountEventAuthority> : TAccountEventAuthority,
    TAccountProgram extends string ? ReadonlyAccount<TAccountProgram> : TAccountProgram,
    ...TRemainingAccounts
]>;
export type InitializeInstructionData = {
    discriminator: ReadonlyUint8Array;
    tokenController: Address;
    denylister: Address;
    feeRecipient: Address;
    minFeeController: Address;
    minFee: number;
    messageBodyVersion: number;
};
export type InitializeInstructionDataArgs = {
    tokenController: Address;
    denylister: Address;
    feeRecipient: Address;
    minFeeController: Address;
    minFee: number;
    messageBodyVersion: number;
};
export declare function getInitializeInstructionDataEncoder(): Encoder<InitializeInstructionDataArgs>;
export declare function getInitializeInstructionDataDecoder(): Decoder<InitializeInstructionData>;
export declare function getInitializeInstructionDataCodec(): Codec<InitializeInstructionDataArgs, InitializeInstructionData>;
export type InitializeAsyncInput<TAccountPayer extends string = string, TAccountUpgradeAuthority extends string = string, TAccountAuthorityPda extends string = string, TAccountTokenMessenger extends string = string, TAccountTokenMinter extends string = string, TAccountTokenMessengerMinterProgramData extends string = string, TAccountTokenMessengerMinterProgram extends string = string, TAccountSystemProgram extends string = string, TAccountEventAuthority extends string = string, TAccountProgram extends string = string> = {
    payer: TransactionSigner<TAccountPayer>;
    upgradeAuthority: TransactionSigner<TAccountUpgradeAuthority>;
    authorityPda?: Address<TAccountAuthorityPda>;
    tokenMessenger?: Address<TAccountTokenMessenger>;
    tokenMinter?: Address<TAccountTokenMinter>;
    tokenMessengerMinterProgramData: Address<TAccountTokenMessengerMinterProgramData>;
    tokenMessengerMinterProgram?: Address<TAccountTokenMessengerMinterProgram>;
    systemProgram?: Address<TAccountSystemProgram>;
    eventAuthority?: Address<TAccountEventAuthority>;
    program: Address<TAccountProgram>;
    tokenController: InitializeInstructionDataArgs['tokenController'];
    denylister: InitializeInstructionDataArgs['denylister'];
    feeRecipient: InitializeInstructionDataArgs['feeRecipient'];
    minFeeController: InitializeInstructionDataArgs['minFeeController'];
    minFee: InitializeInstructionDataArgs['minFee'];
    messageBodyVersion: InitializeInstructionDataArgs['messageBodyVersion'];
};
export declare function getInitializeInstructionAsync<TAccountPayer extends string, TAccountUpgradeAuthority extends string, TAccountAuthorityPda extends string, TAccountTokenMessenger extends string, TAccountTokenMinter extends string, TAccountTokenMessengerMinterProgramData extends string, TAccountTokenMessengerMinterProgram extends string, TAccountSystemProgram extends string, TAccountEventAuthority extends string, TAccountProgram extends string, TProgramAddress extends Address = typeof TOKEN_MESSENGER_MINTER_V2_PROGRAM_ADDRESS>(input: InitializeAsyncInput<TAccountPayer, TAccountUpgradeAuthority, TAccountAuthorityPda, TAccountTokenMessenger, TAccountTokenMinter, TAccountTokenMessengerMinterProgramData, TAccountTokenMessengerMinterProgram, TAccountSystemProgram, TAccountEventAuthority, TAccountProgram>, config?: {
    programAddress?: TProgramAddress;
}): Promise<InitializeInstruction<TProgramAddress, TAccountPayer, TAccountUpgradeAuthority, TAccountAuthorityPda, TAccountTokenMessenger, TAccountTokenMinter, TAccountTokenMessengerMinterProgramData, TAccountTokenMessengerMinterProgram, TAccountSystemProgram, TAccountEventAuthority, TAccountProgram>>;
export type InitializeInput<TAccountPayer extends string = string, TAccountUpgradeAuthority extends string = string, TAccountAuthorityPda extends string = string, TAccountTokenMessenger extends string = string, TAccountTokenMinter extends string = string, TAccountTokenMessengerMinterProgramData extends string = string, TAccountTokenMessengerMinterProgram extends string = string, TAccountSystemProgram extends string = string, TAccountEventAuthority extends string = string, TAccountProgram extends string = string> = {
    payer: TransactionSigner<TAccountPayer>;
    upgradeAuthority: TransactionSigner<TAccountUpgradeAuthority>;
    authorityPda: Address<TAccountAuthorityPda>;
    tokenMessenger: Address<TAccountTokenMessenger>;
    tokenMinter: Address<TAccountTokenMinter>;
    tokenMessengerMinterProgramData: Address<TAccountTokenMessengerMinterProgramData>;
    tokenMessengerMinterProgram?: Address<TAccountTokenMessengerMinterProgram>;
    systemProgram?: Address<TAccountSystemProgram>;
    eventAuthority: Address<TAccountEventAuthority>;
    program: Address<TAccountProgram>;
    tokenController: InitializeInstructionDataArgs['tokenController'];
    denylister: InitializeInstructionDataArgs['denylister'];
    feeRecipient: InitializeInstructionDataArgs['feeRecipient'];
    minFeeController: InitializeInstructionDataArgs['minFeeController'];
    minFee: InitializeInstructionDataArgs['minFee'];
    messageBodyVersion: InitializeInstructionDataArgs['messageBodyVersion'];
};
export declare function getInitializeInstruction<TAccountPayer extends string, TAccountUpgradeAuthority extends string, TAccountAuthorityPda extends string, TAccountTokenMessenger extends string, TAccountTokenMinter extends string, TAccountTokenMessengerMinterProgramData extends string, TAccountTokenMessengerMinterProgram extends string, TAccountSystemProgram extends string, TAccountEventAuthority extends string, TAccountProgram extends string, TProgramAddress extends Address = typeof TOKEN_MESSENGER_MINTER_V2_PROGRAM_ADDRESS>(input: InitializeInput<TAccountPayer, TAccountUpgradeAuthority, TAccountAuthorityPda, TAccountTokenMessenger, TAccountTokenMinter, TAccountTokenMessengerMinterProgramData, TAccountTokenMessengerMinterProgram, TAccountSystemProgram, TAccountEventAuthority, TAccountProgram>, config?: {
    programAddress?: TProgramAddress;
}): InitializeInstruction<TProgramAddress, TAccountPayer, TAccountUpgradeAuthority, TAccountAuthorityPda, TAccountTokenMessenger, TAccountTokenMinter, TAccountTokenMessengerMinterProgramData, TAccountTokenMessengerMinterProgram, TAccountSystemProgram, TAccountEventAuthority, TAccountProgram>;
export type ParsedInitializeInstruction<TProgram extends string = typeof TOKEN_MESSENGER_MINTER_V2_PROGRAM_ADDRESS, TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[]> = {
    programAddress: Address<TProgram>;
    accounts: {
        payer: TAccountMetas[0];
        upgradeAuthority: TAccountMetas[1];
        authorityPda: TAccountMetas[2];
        tokenMessenger: TAccountMetas[3];
        tokenMinter: TAccountMetas[4];
        tokenMessengerMinterProgramData: TAccountMetas[5];
        tokenMessengerMinterProgram: TAccountMetas[6];
        systemProgram: TAccountMetas[7];
        eventAuthority: TAccountMetas[8];
        program: TAccountMetas[9];
    };
    data: InitializeInstructionData;
};
export declare function parseInitializeInstruction<TProgram extends string, TAccountMetas extends readonly IAccountMeta[]>(instruction: IInstruction<TProgram> & IInstructionWithAccounts<TAccountMetas> & IInstructionWithData<Uint8Array>): ParsedInitializeInstruction<TProgram, TAccountMetas>;
