/**
 * 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 Codec, type Decoder, type Encoder, type Instruction, type InstructionWithAccounts, type InstructionWithData, type Option, type OptionOrNullable, type ReadonlyAccount, type ReadonlySignerAccount, type ReadonlyUint8Array, type TransactionSigner, type WritableAccount } from '@solana/kit';
import { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';
import { type RemainingAccountsInfo, type RemainingAccountsInfoArgs } from '../types';
export declare const DECREASE_LIQUIDITY_V2_DISCRIMINATOR: Uint8Array<ArrayBuffer>;
export declare function getDecreaseLiquidityV2DiscriminatorBytes(): ReadonlyUint8Array;
export type DecreaseLiquidityV2Instruction<TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS, TAccountWhirlpool extends string | AccountMeta<string> = string, TAccountTokenProgramA extends string | AccountMeta<string> = string, TAccountTokenProgramB extends string | AccountMeta<string> = string, TAccountMemoProgram extends string | AccountMeta<string> = string, TAccountPositionAuthority extends string | AccountMeta<string> = string, TAccountPosition extends string | AccountMeta<string> = string, TAccountPositionTokenAccount extends string | AccountMeta<string> = string, TAccountTokenMintA extends string | AccountMeta<string> = string, TAccountTokenMintB extends string | AccountMeta<string> = string, TAccountTokenOwnerAccountA extends string | AccountMeta<string> = string, TAccountTokenOwnerAccountB extends string | AccountMeta<string> = string, TAccountTokenVaultA extends string | AccountMeta<string> = string, TAccountTokenVaultB extends string | AccountMeta<string> = string, TAccountTickArrayLower extends string | AccountMeta<string> = string, TAccountTickArrayUpper extends string | AccountMeta<string> = string, TRemainingAccounts extends readonly AccountMeta<string>[] = []> = Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountWhirlpool extends string ? WritableAccount<TAccountWhirlpool> : TAccountWhirlpool, TAccountTokenProgramA extends string ? ReadonlyAccount<TAccountTokenProgramA> : TAccountTokenProgramA, TAccountTokenProgramB extends string ? ReadonlyAccount<TAccountTokenProgramB> : TAccountTokenProgramB, TAccountMemoProgram extends string ? ReadonlyAccount<TAccountMemoProgram> : TAccountMemoProgram, TAccountPositionAuthority extends string ? ReadonlySignerAccount<TAccountPositionAuthority> & AccountSignerMeta<TAccountPositionAuthority> : TAccountPositionAuthority, TAccountPosition extends string ? WritableAccount<TAccountPosition> : TAccountPosition, TAccountPositionTokenAccount extends string ? ReadonlyAccount<TAccountPositionTokenAccount> : TAccountPositionTokenAccount, TAccountTokenMintA extends string ? ReadonlyAccount<TAccountTokenMintA> : TAccountTokenMintA, TAccountTokenMintB extends string ? ReadonlyAccount<TAccountTokenMintB> : TAccountTokenMintB, TAccountTokenOwnerAccountA extends string ? WritableAccount<TAccountTokenOwnerAccountA> : TAccountTokenOwnerAccountA, TAccountTokenOwnerAccountB extends string ? WritableAccount<TAccountTokenOwnerAccountB> : TAccountTokenOwnerAccountB, TAccountTokenVaultA extends string ? WritableAccount<TAccountTokenVaultA> : TAccountTokenVaultA, TAccountTokenVaultB extends string ? WritableAccount<TAccountTokenVaultB> : TAccountTokenVaultB, TAccountTickArrayLower extends string ? WritableAccount<TAccountTickArrayLower> : TAccountTickArrayLower, TAccountTickArrayUpper extends string ? WritableAccount<TAccountTickArrayUpper> : TAccountTickArrayUpper, ...TRemainingAccounts]>;
export type DecreaseLiquidityV2InstructionData = {
    discriminator: ReadonlyUint8Array;
    liquidityAmount: bigint;
    tokenMinA: bigint;
    tokenMinB: bigint;
    remainingAccountsInfo: Option<RemainingAccountsInfo>;
};
export type DecreaseLiquidityV2InstructionDataArgs = {
    liquidityAmount: number | bigint;
    tokenMinA: number | bigint;
    tokenMinB: number | bigint;
    remainingAccountsInfo: OptionOrNullable<RemainingAccountsInfoArgs>;
};
export declare function getDecreaseLiquidityV2InstructionDataEncoder(): Encoder<DecreaseLiquidityV2InstructionDataArgs>;
export declare function getDecreaseLiquidityV2InstructionDataDecoder(): Decoder<DecreaseLiquidityV2InstructionData>;
export declare function getDecreaseLiquidityV2InstructionDataCodec(): Codec<DecreaseLiquidityV2InstructionDataArgs, DecreaseLiquidityV2InstructionData>;
export type DecreaseLiquidityV2Input<TAccountWhirlpool extends string = string, TAccountTokenProgramA extends string = string, TAccountTokenProgramB extends string = string, TAccountMemoProgram extends string = string, TAccountPositionAuthority extends string = string, TAccountPosition extends string = string, TAccountPositionTokenAccount extends string = string, TAccountTokenMintA extends string = string, TAccountTokenMintB extends string = string, TAccountTokenOwnerAccountA extends string = string, TAccountTokenOwnerAccountB extends string = string, TAccountTokenVaultA extends string = string, TAccountTokenVaultB extends string = string, TAccountTickArrayLower extends string = string, TAccountTickArrayUpper extends string = string> = {
    whirlpool: Address<TAccountWhirlpool>;
    tokenProgramA: Address<TAccountTokenProgramA>;
    tokenProgramB: Address<TAccountTokenProgramB>;
    memoProgram: Address<TAccountMemoProgram>;
    positionAuthority: TransactionSigner<TAccountPositionAuthority>;
    position: Address<TAccountPosition>;
    positionTokenAccount: Address<TAccountPositionTokenAccount>;
    tokenMintA: Address<TAccountTokenMintA>;
    tokenMintB: Address<TAccountTokenMintB>;
    tokenOwnerAccountA: Address<TAccountTokenOwnerAccountA>;
    tokenOwnerAccountB: Address<TAccountTokenOwnerAccountB>;
    tokenVaultA: Address<TAccountTokenVaultA>;
    tokenVaultB: Address<TAccountTokenVaultB>;
    tickArrayLower: Address<TAccountTickArrayLower>;
    tickArrayUpper: Address<TAccountTickArrayUpper>;
    liquidityAmount: DecreaseLiquidityV2InstructionDataArgs["liquidityAmount"];
    tokenMinA: DecreaseLiquidityV2InstructionDataArgs["tokenMinA"];
    tokenMinB: DecreaseLiquidityV2InstructionDataArgs["tokenMinB"];
    remainingAccountsInfo: DecreaseLiquidityV2InstructionDataArgs["remainingAccountsInfo"];
};
export declare function getDecreaseLiquidityV2Instruction<TAccountWhirlpool extends string, TAccountTokenProgramA extends string, TAccountTokenProgramB extends string, TAccountMemoProgram extends string, TAccountPositionAuthority extends string, TAccountPosition extends string, TAccountPositionTokenAccount extends string, TAccountTokenMintA extends string, TAccountTokenMintB extends string, TAccountTokenOwnerAccountA extends string, TAccountTokenOwnerAccountB extends string, TAccountTokenVaultA extends string, TAccountTokenVaultB extends string, TAccountTickArrayLower extends string, TAccountTickArrayUpper extends string, TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS>(input: DecreaseLiquidityV2Input<TAccountWhirlpool, TAccountTokenProgramA, TAccountTokenProgramB, TAccountMemoProgram, TAccountPositionAuthority, TAccountPosition, TAccountPositionTokenAccount, TAccountTokenMintA, TAccountTokenMintB, TAccountTokenOwnerAccountA, TAccountTokenOwnerAccountB, TAccountTokenVaultA, TAccountTokenVaultB, TAccountTickArrayLower, TAccountTickArrayUpper>, config?: {
    programAddress?: TProgramAddress;
}): DecreaseLiquidityV2Instruction<TProgramAddress, TAccountWhirlpool, TAccountTokenProgramA, TAccountTokenProgramB, TAccountMemoProgram, TAccountPositionAuthority, TAccountPosition, TAccountPositionTokenAccount, TAccountTokenMintA, TAccountTokenMintB, TAccountTokenOwnerAccountA, TAccountTokenOwnerAccountB, TAccountTokenVaultA, TAccountTokenVaultB, TAccountTickArrayLower, TAccountTickArrayUpper>;
export type ParsedDecreaseLiquidityV2Instruction<TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = {
    programAddress: Address<TProgram>;
    accounts: {
        whirlpool: TAccountMetas[0];
        tokenProgramA: TAccountMetas[1];
        tokenProgramB: TAccountMetas[2];
        memoProgram: TAccountMetas[3];
        positionAuthority: TAccountMetas[4];
        position: TAccountMetas[5];
        positionTokenAccount: TAccountMetas[6];
        tokenMintA: TAccountMetas[7];
        tokenMintB: TAccountMetas[8];
        tokenOwnerAccountA: TAccountMetas[9];
        tokenOwnerAccountB: TAccountMetas[10];
        tokenVaultA: TAccountMetas[11];
        tokenVaultB: TAccountMetas[12];
        tickArrayLower: TAccountMetas[13];
        tickArrayUpper: TAccountMetas[14];
    };
    data: DecreaseLiquidityV2InstructionData;
};
export declare function parseDecreaseLiquidityV2Instruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedDecreaseLiquidityV2Instruction<TProgram, TAccountMetas>;
//# sourceMappingURL=decreaseLiquidityV2.d.ts.map