/**
 * 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 WritableSignerAccount } from '@solana/kit';
import { YVAULTS_PROGRAM_ADDRESS } from '../programs';
export declare const ORCA_SWAP_DISCRIMINATOR: Uint8Array<ArrayBuffer>;
export declare function getOrcaSwapDiscriminatorBytes(): ReadonlyUint8Array<ArrayBuffer>;
export type OrcaSwapInstruction<TProgram extends string = typeof YVAULTS_PROGRAM_ADDRESS, TAccountFunder extends string | AccountMeta<string> = string, TAccountTokenATokenProgram extends string | AccountMeta<string> = string, TAccountTokenBTokenProgram extends string | AccountMeta<string> = string, TAccountMemoProgram extends string | AccountMeta<string> = string, TAccountTokenAuthority extends string | AccountMeta<string> = string, TAccountWhirlpool extends string | AccountMeta<string> = string, TAccountTokenOwnerAccountA extends string | AccountMeta<string> = string, TAccountTokenVaultA extends string | AccountMeta<string> = string, TAccountTokenOwnerAccountB extends string | AccountMeta<string> = string, TAccountTokenVaultB extends string | AccountMeta<string> = string, TAccountTokenMintA extends string | AccountMeta<string> = string, TAccountTokenMintB extends string | AccountMeta<string> = string, TAccountTickArray0 extends string | AccountMeta<string> = string, TAccountTickArray1 extends string | AccountMeta<string> = string, TAccountTickArray2 extends string | AccountMeta<string> = string, TAccountOracle extends string | AccountMeta<string> = string, TAccountWhirlpoolProgram extends string | AccountMeta<string> = string, TRemainingAccounts extends readonly AccountMeta<string>[] = []> = Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountFunder extends string ? WritableSignerAccount<TAccountFunder> & AccountSignerMeta<TAccountFunder> : TAccountFunder, TAccountTokenATokenProgram extends string ? ReadonlyAccount<TAccountTokenATokenProgram> : TAccountTokenATokenProgram, TAccountTokenBTokenProgram extends string ? ReadonlyAccount<TAccountTokenBTokenProgram> : TAccountTokenBTokenProgram, TAccountMemoProgram extends string ? ReadonlyAccount<TAccountMemoProgram> : TAccountMemoProgram, TAccountTokenAuthority extends string ? ReadonlyAccount<TAccountTokenAuthority> : TAccountTokenAuthority, TAccountWhirlpool extends string ? ReadonlyAccount<TAccountWhirlpool> : TAccountWhirlpool, TAccountTokenOwnerAccountA extends string ? ReadonlyAccount<TAccountTokenOwnerAccountA> : TAccountTokenOwnerAccountA, TAccountTokenVaultA extends string ? ReadonlyAccount<TAccountTokenVaultA> : TAccountTokenVaultA, TAccountTokenOwnerAccountB extends string ? ReadonlyAccount<TAccountTokenOwnerAccountB> : TAccountTokenOwnerAccountB, TAccountTokenVaultB extends string ? ReadonlyAccount<TAccountTokenVaultB> : TAccountTokenVaultB, TAccountTokenMintA extends string ? ReadonlyAccount<TAccountTokenMintA> : TAccountTokenMintA, TAccountTokenMintB extends string ? ReadonlyAccount<TAccountTokenMintB> : TAccountTokenMintB, TAccountTickArray0 extends string ? ReadonlyAccount<TAccountTickArray0> : TAccountTickArray0, TAccountTickArray1 extends string ? ReadonlyAccount<TAccountTickArray1> : TAccountTickArray1, TAccountTickArray2 extends string ? ReadonlyAccount<TAccountTickArray2> : TAccountTickArray2, TAccountOracle extends string ? ReadonlyAccount<TAccountOracle> : TAccountOracle, TAccountWhirlpoolProgram extends string ? ReadonlyAccount<TAccountWhirlpoolProgram> : TAccountWhirlpoolProgram, ...TRemainingAccounts]>;
export type OrcaSwapInstructionData = {
    discriminator: ReadonlyUint8Array;
    amount: bigint;
    otherAmountThreshold: bigint;
    sqrtPriceLimit: bigint;
    amountSpecifiedIsInput: boolean;
    aToB: boolean;
};
export type OrcaSwapInstructionDataArgs = {
    amount: number | bigint;
    otherAmountThreshold: number | bigint;
    sqrtPriceLimit: number | bigint;
    amountSpecifiedIsInput: boolean;
    aToB: boolean;
};
export declare function getOrcaSwapInstructionDataEncoder(): FixedSizeEncoder<OrcaSwapInstructionDataArgs>;
export declare function getOrcaSwapInstructionDataDecoder(): FixedSizeDecoder<OrcaSwapInstructionData>;
export declare function getOrcaSwapInstructionDataCodec(): FixedSizeCodec<OrcaSwapInstructionDataArgs, OrcaSwapInstructionData>;
export type OrcaSwapInput<TAccountFunder extends string = string, TAccountTokenATokenProgram extends string = string, TAccountTokenBTokenProgram extends string = string, TAccountMemoProgram extends string = string, TAccountTokenAuthority extends string = string, TAccountWhirlpool extends string = string, TAccountTokenOwnerAccountA extends string = string, TAccountTokenVaultA extends string = string, TAccountTokenOwnerAccountB extends string = string, TAccountTokenVaultB extends string = string, TAccountTokenMintA extends string = string, TAccountTokenMintB extends string = string, TAccountTickArray0 extends string = string, TAccountTickArray1 extends string = string, TAccountTickArray2 extends string = string, TAccountOracle extends string = string, TAccountWhirlpoolProgram extends string = string> = {
    funder: TransactionSigner<TAccountFunder>;
    tokenATokenProgram: Address<TAccountTokenATokenProgram>;
    tokenBTokenProgram: Address<TAccountTokenBTokenProgram>;
    memoProgram: Address<TAccountMemoProgram>;
    tokenAuthority: Address<TAccountTokenAuthority>;
    whirlpool: Address<TAccountWhirlpool>;
    tokenOwnerAccountA: Address<TAccountTokenOwnerAccountA>;
    tokenVaultA: Address<TAccountTokenVaultA>;
    tokenOwnerAccountB: Address<TAccountTokenOwnerAccountB>;
    tokenVaultB: Address<TAccountTokenVaultB>;
    tokenMintA: Address<TAccountTokenMintA>;
    tokenMintB: Address<TAccountTokenMintB>;
    tickArray0: Address<TAccountTickArray0>;
    tickArray1: Address<TAccountTickArray1>;
    tickArray2: Address<TAccountTickArray2>;
    oracle: Address<TAccountOracle>;
    whirlpoolProgram: Address<TAccountWhirlpoolProgram>;
    amount: OrcaSwapInstructionDataArgs["amount"];
    otherAmountThreshold: OrcaSwapInstructionDataArgs["otherAmountThreshold"];
    sqrtPriceLimit: OrcaSwapInstructionDataArgs["sqrtPriceLimit"];
    amountSpecifiedIsInput: OrcaSwapInstructionDataArgs["amountSpecifiedIsInput"];
    aToB: OrcaSwapInstructionDataArgs["aToB"];
};
export declare function getOrcaSwapInstruction<TAccountFunder extends string, TAccountTokenATokenProgram extends string, TAccountTokenBTokenProgram extends string, TAccountMemoProgram extends string, TAccountTokenAuthority extends string, TAccountWhirlpool extends string, TAccountTokenOwnerAccountA extends string, TAccountTokenVaultA extends string, TAccountTokenOwnerAccountB extends string, TAccountTokenVaultB extends string, TAccountTokenMintA extends string, TAccountTokenMintB extends string, TAccountTickArray0 extends string, TAccountTickArray1 extends string, TAccountTickArray2 extends string, TAccountOracle extends string, TAccountWhirlpoolProgram extends string, TProgramAddress extends Address = typeof YVAULTS_PROGRAM_ADDRESS>(input: OrcaSwapInput<TAccountFunder, TAccountTokenATokenProgram, TAccountTokenBTokenProgram, TAccountMemoProgram, TAccountTokenAuthority, TAccountWhirlpool, TAccountTokenOwnerAccountA, TAccountTokenVaultA, TAccountTokenOwnerAccountB, TAccountTokenVaultB, TAccountTokenMintA, TAccountTokenMintB, TAccountTickArray0, TAccountTickArray1, TAccountTickArray2, TAccountOracle, TAccountWhirlpoolProgram>, config?: {
    programAddress?: TProgramAddress;
}): OrcaSwapInstruction<TProgramAddress, TAccountFunder, TAccountTokenATokenProgram, TAccountTokenBTokenProgram, TAccountMemoProgram, TAccountTokenAuthority, TAccountWhirlpool, TAccountTokenOwnerAccountA, TAccountTokenVaultA, TAccountTokenOwnerAccountB, TAccountTokenVaultB, TAccountTokenMintA, TAccountTokenMintB, TAccountTickArray0, TAccountTickArray1, TAccountTickArray2, TAccountOracle, TAccountWhirlpoolProgram>;
export type ParsedOrcaSwapInstruction<TProgram extends string = typeof YVAULTS_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = {
    programAddress: Address<TProgram>;
    accounts: {
        funder: TAccountMetas[0];
        tokenATokenProgram: TAccountMetas[1];
        tokenBTokenProgram: TAccountMetas[2];
        memoProgram: TAccountMetas[3];
        tokenAuthority: TAccountMetas[4];
        whirlpool: TAccountMetas[5];
        tokenOwnerAccountA: TAccountMetas[6];
        tokenVaultA: TAccountMetas[7];
        tokenOwnerAccountB: TAccountMetas[8];
        tokenVaultB: TAccountMetas[9];
        tokenMintA: TAccountMetas[10];
        tokenMintB: TAccountMetas[11];
        tickArray0: TAccountMetas[12];
        tickArray1: TAccountMetas[13];
        tickArray2: TAccountMetas[14];
        oracle: TAccountMetas[15];
        whirlpoolProgram: TAccountMetas[16];
    };
    data: OrcaSwapInstructionData;
};
export declare function parseOrcaSwapInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedOrcaSwapInstruction<TProgram, TAccountMetas>;
//# sourceMappingURL=orcaSwap.d.ts.map