/**
 * 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 AccountMeta, type AccountSignerMeta, type Address, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type Instruction, type InstructionWithAccounts, type InstructionWithData, type ReadonlyAccount, type ReadonlyUint8Array, type TransactionSigner, type WritableAccount, type WritableSignerAccount } from '@solana/kit';
import { YVAULTS_PROGRAM_ADDRESS } from '../programs';
export declare const INITIALIZE_STRATEGY_DISCRIMINATOR: Uint8Array<ArrayBuffer>;
export declare function getInitializeStrategyDiscriminatorBytes(): ReadonlyUint8Array<ArrayBuffer>;
export type InitializeStrategyInstruction<TProgram extends string = typeof YVAULTS_PROGRAM_ADDRESS, TAccountAdminAuthority extends string | AccountMeta<string> = string, TAccountGlobalConfig extends string | AccountMeta<string> = string, TAccountPool extends string | AccountMeta<string> = string, TAccountTokenAMint extends string | AccountMeta<string> = string, TAccountTokenBMint extends string | AccountMeta<string> = string, TAccountTokenAVault extends string | AccountMeta<string> = string, TAccountTokenBVault extends string | AccountMeta<string> = string, TAccountBaseVaultAuthority extends string | AccountMeta<string> = string, TAccountSharesMint extends string | AccountMeta<string> = string, TAccountSharesMintAuthority extends string | AccountMeta<string> = string, TAccountTokenInfos extends string | AccountMeta<string> = string, TAccountSystemProgram extends string | AccountMeta<string> = "11111111111111111111111111111111", TAccountRent extends string | AccountMeta<string> = "SysvarRent111111111111111111111111111111111", TAccountTokenProgram extends string | AccountMeta<string> = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", TAccountTokenATokenProgram extends string | AccountMeta<string> = string, TAccountTokenBTokenProgram extends string | AccountMeta<string> = string, TAccountStrategy extends string | AccountMeta<string> = string, TRemainingAccounts extends readonly AccountMeta<string>[] = []> = Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountAdminAuthority extends string ? WritableSignerAccount<TAccountAdminAuthority> & AccountSignerMeta<TAccountAdminAuthority> : TAccountAdminAuthority, TAccountGlobalConfig extends string ? ReadonlyAccount<TAccountGlobalConfig> : TAccountGlobalConfig, TAccountPool extends string ? ReadonlyAccount<TAccountPool> : TAccountPool, TAccountTokenAMint extends string ? ReadonlyAccount<TAccountTokenAMint> : TAccountTokenAMint, TAccountTokenBMint extends string ? ReadonlyAccount<TAccountTokenBMint> : TAccountTokenBMint, TAccountTokenAVault extends string ? WritableAccount<TAccountTokenAVault> : TAccountTokenAVault, TAccountTokenBVault extends string ? WritableAccount<TAccountTokenBVault> : TAccountTokenBVault, TAccountBaseVaultAuthority extends string ? WritableAccount<TAccountBaseVaultAuthority> : TAccountBaseVaultAuthority, TAccountSharesMint extends string ? WritableAccount<TAccountSharesMint> : TAccountSharesMint, TAccountSharesMintAuthority extends string ? WritableAccount<TAccountSharesMintAuthority> : TAccountSharesMintAuthority, TAccountTokenInfos extends string ? ReadonlyAccount<TAccountTokenInfos> : TAccountTokenInfos, TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram, TAccountRent extends string ? ReadonlyAccount<TAccountRent> : TAccountRent, TAccountTokenProgram extends string ? ReadonlyAccount<TAccountTokenProgram> : TAccountTokenProgram, TAccountTokenATokenProgram extends string ? ReadonlyAccount<TAccountTokenATokenProgram> : TAccountTokenATokenProgram, TAccountTokenBTokenProgram extends string ? ReadonlyAccount<TAccountTokenBTokenProgram> : TAccountTokenBTokenProgram, TAccountStrategy extends string ? WritableAccount<TAccountStrategy> : TAccountStrategy, ...TRemainingAccounts]>;
export type InitializeStrategyInstructionData = {
    discriminator: ReadonlyUint8Array;
    strategyType: bigint;
    tokenACollateralId: bigint;
    tokenBCollateralId: bigint;
};
export type InitializeStrategyInstructionDataArgs = {
    strategyType: number | bigint;
    tokenACollateralId: number | bigint;
    tokenBCollateralId: number | bigint;
};
export declare function getInitializeStrategyInstructionDataEncoder(): FixedSizeEncoder<InitializeStrategyInstructionDataArgs>;
export declare function getInitializeStrategyInstructionDataDecoder(): FixedSizeDecoder<InitializeStrategyInstructionData>;
export declare function getInitializeStrategyInstructionDataCodec(): FixedSizeCodec<InitializeStrategyInstructionDataArgs, InitializeStrategyInstructionData>;
export type InitializeStrategyInput<TAccountAdminAuthority extends string = string, TAccountGlobalConfig extends string = string, TAccountPool extends string = string, TAccountTokenAMint extends string = string, TAccountTokenBMint extends string = string, TAccountTokenAVault extends string = string, TAccountTokenBVault extends string = string, TAccountBaseVaultAuthority extends string = string, TAccountSharesMint extends string = string, TAccountSharesMintAuthority extends string = string, TAccountTokenInfos extends string = string, TAccountSystemProgram extends string = string, TAccountRent extends string = string, TAccountTokenProgram extends string = string, TAccountTokenATokenProgram extends string = string, TAccountTokenBTokenProgram extends string = string, TAccountStrategy extends string = string> = {
    adminAuthority: TransactionSigner<TAccountAdminAuthority>;
    globalConfig: Address<TAccountGlobalConfig>;
    /** Program owner also checked. */
    pool: Address<TAccountPool>;
    tokenAMint: Address<TAccountTokenAMint>;
    tokenBMint: Address<TAccountTokenBMint>;
    tokenAVault: Address<TAccountTokenAVault>;
    tokenBVault: Address<TAccountTokenBVault>;
    baseVaultAuthority: Address<TAccountBaseVaultAuthority>;
    sharesMint: Address<TAccountSharesMint>;
    sharesMintAuthority: Address<TAccountSharesMintAuthority>;
    tokenInfos: Address<TAccountTokenInfos>;
    systemProgram?: Address<TAccountSystemProgram>;
    rent?: Address<TAccountRent>;
    tokenProgram?: Address<TAccountTokenProgram>;
    tokenATokenProgram: Address<TAccountTokenATokenProgram>;
    tokenBTokenProgram: Address<TAccountTokenBTokenProgram>;
    strategy: Address<TAccountStrategy>;
    strategyType: InitializeStrategyInstructionDataArgs["strategyType"];
    tokenACollateralId: InitializeStrategyInstructionDataArgs["tokenACollateralId"];
    tokenBCollateralId: InitializeStrategyInstructionDataArgs["tokenBCollateralId"];
};
export declare function getInitializeStrategyInstruction<TAccountAdminAuthority extends string, TAccountGlobalConfig extends string, TAccountPool extends string, TAccountTokenAMint extends string, TAccountTokenBMint extends string, TAccountTokenAVault extends string, TAccountTokenBVault extends string, TAccountBaseVaultAuthority extends string, TAccountSharesMint extends string, TAccountSharesMintAuthority extends string, TAccountTokenInfos extends string, TAccountSystemProgram extends string, TAccountRent extends string, TAccountTokenProgram extends string, TAccountTokenATokenProgram extends string, TAccountTokenBTokenProgram extends string, TAccountStrategy extends string, TProgramAddress extends Address = typeof YVAULTS_PROGRAM_ADDRESS>(input: InitializeStrategyInput<TAccountAdminAuthority, TAccountGlobalConfig, TAccountPool, TAccountTokenAMint, TAccountTokenBMint, TAccountTokenAVault, TAccountTokenBVault, TAccountBaseVaultAuthority, TAccountSharesMint, TAccountSharesMintAuthority, TAccountTokenInfos, TAccountSystemProgram, TAccountRent, TAccountTokenProgram, TAccountTokenATokenProgram, TAccountTokenBTokenProgram, TAccountStrategy>, config?: {
    programAddress?: TProgramAddress;
}): InitializeStrategyInstruction<TProgramAddress, TAccountAdminAuthority, TAccountGlobalConfig, TAccountPool, TAccountTokenAMint, TAccountTokenBMint, TAccountTokenAVault, TAccountTokenBVault, TAccountBaseVaultAuthority, TAccountSharesMint, TAccountSharesMintAuthority, TAccountTokenInfos, TAccountSystemProgram, TAccountRent, TAccountTokenProgram, TAccountTokenATokenProgram, TAccountTokenBTokenProgram, TAccountStrategy>;
export type ParsedInitializeStrategyInstruction<TProgram extends string = typeof YVAULTS_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = {
    programAddress: Address<TProgram>;
    accounts: {
        adminAuthority: TAccountMetas[0];
        globalConfig: TAccountMetas[1];
        /** Program owner also checked. */
        pool: TAccountMetas[2];
        tokenAMint: TAccountMetas[3];
        tokenBMint: TAccountMetas[4];
        tokenAVault: TAccountMetas[5];
        tokenBVault: TAccountMetas[6];
        baseVaultAuthority: TAccountMetas[7];
        sharesMint: TAccountMetas[8];
        sharesMintAuthority: TAccountMetas[9];
        tokenInfos: TAccountMetas[10];
        systemProgram: TAccountMetas[11];
        rent: TAccountMetas[12];
        tokenProgram: TAccountMetas[13];
        tokenATokenProgram: TAccountMetas[14];
        tokenBTokenProgram: TAccountMetas[15];
        strategy: TAccountMetas[16];
    };
    data: InitializeStrategyInstructionData;
};
export declare function parseInitializeStrategyInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedInitializeStrategyInstruction<TProgram, TAccountMetas>;
//# sourceMappingURL=initializeStrategy.d.ts.map