import { TransactionInstruction, PublicKey } from '@solana/web3.js';
import BN from 'bn.js';
export interface DecreaseLiquidityV2Args {
    liquidity: BN;
    amount0Min: BN;
    amount1Min: BN;
}
export interface DecreaseLiquidityV2Accounts {
    /** The position owner or delegated authority */
    nftOwner: PublicKey;
    /** The token account for the tokenized position */
    nftAccount: PublicKey;
    /** Decrease liquidity for this position */
    personalPosition: PublicKey;
    poolState: PublicKey;
    protocolPosition: PublicKey;
    /** Token_0 vault */
    tokenVault0: PublicKey;
    /** Token_1 vault */
    tokenVault1: PublicKey;
    /** Stores init state for the lower tick */
    tickArrayLower: PublicKey;
    /** Stores init state for the upper tick */
    tickArrayUpper: PublicKey;
    /** The destination token account for receive amount_0 */
    recipientTokenAccount0: PublicKey;
    /** The destination token account for receive amount_1 */
    recipientTokenAccount1: PublicKey;
    /** SPL program to transfer out tokens */
    tokenProgram: PublicKey;
    /** Token program 2022 */
    tokenProgram2022: PublicKey;
    /** memo program */
    memoProgram: PublicKey;
    /** The mint of token vault 0 */
    vault0Mint: PublicKey;
    /** The mint of token vault 1 */
    vault1Mint: PublicKey;
}
export declare const layout: any;
/**
 * Decreases liquidity with a exist position, support Token2022
 *
 * # Arguments
 *
 * * `ctx` -  The context of accounts
 * * `liquidity` - The amount by which liquidity will be decreased
 * * `amount_0_min` - The minimum amount of token_0 that should be accounted for the burned liquidity
 * * `amount_1_min` - The minimum amount of token_1 that should be accounted for the burned liquidity
 *
 */
export declare function decreaseLiquidityV2(args: DecreaseLiquidityV2Args, accounts: DecreaseLiquidityV2Accounts): TransactionInstruction;
