import { Interface } from '@ethersproject/abi';
import { MethodParameters } from 'maia-core-sdk';
import { AddLiquidityOptions, CollectOptions, RemoveLiquidityOptions, SafeTransferOptions } from '../../types/nonfungiblePositionManager';
import { Pool } from '../pool';
import { Position } from '../position';
export declare abstract class NonfungiblePositionManager {
    static readonly INTERFACE: Interface;
    /**
     * Encodes the parameters for the creation of a new uni v3 pool.
     * @param pool pool to create
     * @returns the calldata for the tx
     * // TODO improve function naming
     */
    private static encodeCreate;
    /**
     * Creates the necessary params to execute the creation of a new uni v3 pool
     * @param pool pool details to create
     * @returns calldata & value for the tx execution
     * // TODO improve function naming
     */
    static createCallParameters(pool: Pool): MethodParameters;
    /**
     * Creates the native add liquidity call parameters for adding liquidity to a uni v3 position
     * @param position holds the position details we want to create/add to
     * @param options holds the options for the add liquidity call
     * // TODO improve function naming
     * @returns
     */
    static addCallParameters(position: Position, options: AddLiquidityOptions): MethodParameters;
    /**
     *  Creates the native collect calldata for collection fees from a uni v3 position
     * @param options holds the options for the collect call
     * @returns
     */
    private static encodeCollect;
    /**
     * Produces the on chain calldata to perform a collect operation
     * @param options holds the options for the collect liquidity call
     * @returns
     * // TODO improve function naming
     */
    static collectCallParameters(options: CollectOptions): MethodParameters;
    /**
     * Produces the native uni v3 calldata for completely or partially exiting a position
     * @param position The position to exit
     * @param options Additional information necessary for generating the calldata
     * @returns The call parameters
     * // TODO improve function naming
     */
    static removeCallParameters(position: Position, options: RemoveLiquidityOptions): MethodParameters;
    private static encodeSafeTransferFrom;
    static safeTransferFromParameters(options: SafeTransferOptions): MethodParameters;
    static safeTransferFromMultipleParameters(options: SafeTransferOptions[]): MethodParameters;
}
