/**
 * 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/web3-v2.js';
import { SVM_SPOKE_PROGRAM_ADDRESS } from '../programs';
export declare const SET_ENABLE_ROUTE_DISCRIMINATOR: Uint8Array;
export declare function getSetEnableRouteDiscriminatorBytes(): ReadonlyUint8Array;
export type SetEnableRouteInstruction<TProgram extends string = typeof SVM_SPOKE_PROGRAM_ADDRESS, TAccountSigner extends string | IAccountMeta<string> = string, TAccountPayer extends string | IAccountMeta<string> = string, TAccountState extends string | IAccountMeta<string> = string, TAccountRoute extends string | IAccountMeta<string> = string, TAccountVault extends string | IAccountMeta<string> = string, TAccountOriginTokenMint extends string | IAccountMeta<string> = string, TAccountTokenProgram extends string | IAccountMeta<string> = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA', TAccountAssociatedTokenProgram extends string | IAccountMeta<string> = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL', 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<[
    TAccountSigner extends string ? ReadonlySignerAccount<TAccountSigner> & IAccountSignerMeta<TAccountSigner> : TAccountSigner,
    TAccountPayer extends string ? WritableSignerAccount<TAccountPayer> & IAccountSignerMeta<TAccountPayer> : TAccountPayer,
    TAccountState extends string ? ReadonlyAccount<TAccountState> : TAccountState,
    TAccountRoute extends string ? WritableAccount<TAccountRoute> : TAccountRoute,
    TAccountVault extends string ? WritableAccount<TAccountVault> : TAccountVault,
    TAccountOriginTokenMint extends string ? ReadonlyAccount<TAccountOriginTokenMint> : TAccountOriginTokenMint,
    TAccountTokenProgram extends string ? ReadonlyAccount<TAccountTokenProgram> : TAccountTokenProgram,
    TAccountAssociatedTokenProgram extends string ? ReadonlyAccount<TAccountAssociatedTokenProgram> : TAccountAssociatedTokenProgram,
    TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram,
    TAccountEventAuthority extends string ? ReadonlyAccount<TAccountEventAuthority> : TAccountEventAuthority,
    TAccountProgram extends string ? ReadonlyAccount<TAccountProgram> : TAccountProgram,
    ...TRemainingAccounts
]>;
export type SetEnableRouteInstructionData = {
    discriminator: ReadonlyUint8Array;
    originToken: Address;
    destinationChainId: bigint;
    enabled: boolean;
};
export type SetEnableRouteInstructionDataArgs = {
    originToken: Address;
    destinationChainId: number | bigint;
    enabled: boolean;
};
export declare function getSetEnableRouteInstructionDataEncoder(): Encoder<SetEnableRouteInstructionDataArgs>;
export declare function getSetEnableRouteInstructionDataDecoder(): Decoder<SetEnableRouteInstructionData>;
export declare function getSetEnableRouteInstructionDataCodec(): Codec<SetEnableRouteInstructionDataArgs, SetEnableRouteInstructionData>;
export type SetEnableRouteAsyncInput<TAccountSigner extends string = string, TAccountPayer extends string = string, TAccountState extends string = string, TAccountRoute extends string = string, TAccountVault extends string = string, TAccountOriginTokenMint extends string = string, TAccountTokenProgram extends string = string, TAccountAssociatedTokenProgram extends string = string, TAccountSystemProgram extends string = string, TAccountEventAuthority extends string = string, TAccountProgram extends string = string> = {
    signer: TransactionSigner<TAccountSigner>;
    payer: TransactionSigner<TAccountPayer>;
    state: Address<TAccountState>;
    route: Address<TAccountRoute>;
    vault?: Address<TAccountVault>;
    originTokenMint: Address<TAccountOriginTokenMint>;
    tokenProgram?: Address<TAccountTokenProgram>;
    associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;
    systemProgram?: Address<TAccountSystemProgram>;
    eventAuthority?: Address<TAccountEventAuthority>;
    program: Address<TAccountProgram>;
    originToken: SetEnableRouteInstructionDataArgs['originToken'];
    destinationChainId: SetEnableRouteInstructionDataArgs['destinationChainId'];
    enabled: SetEnableRouteInstructionDataArgs['enabled'];
};
export declare function getSetEnableRouteInstructionAsync<TAccountSigner extends string, TAccountPayer extends string, TAccountState extends string, TAccountRoute extends string, TAccountVault extends string, TAccountOriginTokenMint extends string, TAccountTokenProgram extends string, TAccountAssociatedTokenProgram extends string, TAccountSystemProgram extends string, TAccountEventAuthority extends string, TAccountProgram extends string, TProgramAddress extends Address = typeof SVM_SPOKE_PROGRAM_ADDRESS>(input: SetEnableRouteAsyncInput<TAccountSigner, TAccountPayer, TAccountState, TAccountRoute, TAccountVault, TAccountOriginTokenMint, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram, TAccountEventAuthority, TAccountProgram>, config?: {
    programAddress?: TProgramAddress;
}): Promise<SetEnableRouteInstruction<TProgramAddress, TAccountSigner, TAccountPayer, TAccountState, TAccountRoute, TAccountVault, TAccountOriginTokenMint, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram, TAccountEventAuthority, TAccountProgram>>;
export type SetEnableRouteInput<TAccountSigner extends string = string, TAccountPayer extends string = string, TAccountState extends string = string, TAccountRoute extends string = string, TAccountVault extends string = string, TAccountOriginTokenMint extends string = string, TAccountTokenProgram extends string = string, TAccountAssociatedTokenProgram extends string = string, TAccountSystemProgram extends string = string, TAccountEventAuthority extends string = string, TAccountProgram extends string = string> = {
    signer: TransactionSigner<TAccountSigner>;
    payer: TransactionSigner<TAccountPayer>;
    state: Address<TAccountState>;
    route: Address<TAccountRoute>;
    vault: Address<TAccountVault>;
    originTokenMint: Address<TAccountOriginTokenMint>;
    tokenProgram?: Address<TAccountTokenProgram>;
    associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;
    systemProgram?: Address<TAccountSystemProgram>;
    eventAuthority: Address<TAccountEventAuthority>;
    program: Address<TAccountProgram>;
    originToken: SetEnableRouteInstructionDataArgs['originToken'];
    destinationChainId: SetEnableRouteInstructionDataArgs['destinationChainId'];
    enabled: SetEnableRouteInstructionDataArgs['enabled'];
};
export declare function getSetEnableRouteInstruction<TAccountSigner extends string, TAccountPayer extends string, TAccountState extends string, TAccountRoute extends string, TAccountVault extends string, TAccountOriginTokenMint extends string, TAccountTokenProgram extends string, TAccountAssociatedTokenProgram extends string, TAccountSystemProgram extends string, TAccountEventAuthority extends string, TAccountProgram extends string, TProgramAddress extends Address = typeof SVM_SPOKE_PROGRAM_ADDRESS>(input: SetEnableRouteInput<TAccountSigner, TAccountPayer, TAccountState, TAccountRoute, TAccountVault, TAccountOriginTokenMint, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram, TAccountEventAuthority, TAccountProgram>, config?: {
    programAddress?: TProgramAddress;
}): SetEnableRouteInstruction<TProgramAddress, TAccountSigner, TAccountPayer, TAccountState, TAccountRoute, TAccountVault, TAccountOriginTokenMint, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram, TAccountEventAuthority, TAccountProgram>;
export type ParsedSetEnableRouteInstruction<TProgram extends string = typeof SVM_SPOKE_PROGRAM_ADDRESS, TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[]> = {
    programAddress: Address<TProgram>;
    accounts: {
        signer: TAccountMetas[0];
        payer: TAccountMetas[1];
        state: TAccountMetas[2];
        route: TAccountMetas[3];
        vault: TAccountMetas[4];
        originTokenMint: TAccountMetas[5];
        tokenProgram: TAccountMetas[6];
        associatedTokenProgram: TAccountMetas[7];
        systemProgram: TAccountMetas[8];
        eventAuthority: TAccountMetas[9];
        program: TAccountMetas[10];
    };
    data: SetEnableRouteInstructionData;
};
export declare function parseSetEnableRouteInstruction<TProgram extends string, TAccountMetas extends readonly IAccountMeta[]>(instruction: IInstruction<TProgram> & IInstructionWithAccounts<TAccountMetas> & IInstructionWithData<Uint8Array>): ParsedSetEnableRouteInstruction<TProgram, TAccountMetas>;
