import type { BN, Program } from "@coral-xyz/anchor";
import type { Instruction } from "@orca-so/common-sdk";
import { type AccountMeta, type PublicKey } from "@solana/web3.js";
import type { Whirlpool } from "../../artifacts/whirlpool";
export type RepositionLiquidityV2Params = {
    newTickLowerIndex: number;
    newTickUpperIndex: number;
    whirlpool: PublicKey;
    tokenProgramA: PublicKey;
    tokenProgramB: PublicKey;
    positionAuthority: PublicKey;
    funder: PublicKey;
    position: PublicKey;
    positionTokenAccount: PublicKey;
    tokenMintA: PublicKey;
    tokenMintB: PublicKey;
    tokenOwnerAccountA: PublicKey;
    tokenOwnerAccountB: PublicKey;
    tokenVaultA: PublicKey;
    tokenVaultB: PublicKey;
    tokenTransferHookDepositAccountsA?: AccountMeta[];
    tokenTransferHookDepositAccountsB?: AccountMeta[];
    tokenTransferHookWithdrawalAccountsA?: AccountMeta[];
    tokenTransferHookWithdrawalAccountsB?: AccountMeta[];
    existingTickArrayLower: PublicKey;
    existingTickArrayUpper: PublicKey;
    newTickArrayLower: PublicKey;
    newTickArrayUpper: PublicKey;
    memoProgram?: PublicKey;
    systemProgram?: PublicKey;
} & RepositionLiquidityInput;
type RepositionLiquidityInput = ByLiquidityMethodParams;
export type RepositionLiquidityMethod = {
    byLiquidity: ByLiquidityMethodParams;
};
export type ByLiquidityMethodParams = {
    newLiquidityAmount: BN;
    existingRangeTokenMinA: BN;
    existingRangeTokenMinB: BN;
    newRangeTokenMaxA: BN;
    newRangeTokenMaxB: BN;
};
export declare function getRepositionLiquidityMethod(params: RepositionLiquidityInput): RepositionLiquidityMethod;
export declare function repositionLiquidityV2Ix(program: Program<Whirlpool>, params: RepositionLiquidityV2Params): Instruction;
export {};
