import { TransactionInstruction, PublicKey } from '@solana/web3.js';
import BN from 'bn.js';
export interface OpenPositionArgs {
    tickLowerIndex: number;
    tickUpperIndex: number;
    tickArrayLowerStartIndex: number;
    tickArrayUpperStartIndex: number;
    liquidity: BN;
    amount0Max: BN;
    amount1Max: BN;
}
export interface OpenPositionAccounts {
    /** Pays to mint the position */
    payer: PublicKey;
    positionNftOwner: PublicKey;
    /** Unique token mint address */
    positionNftMint: PublicKey;
    /** Token account where position NFT will be minted */
    positionNftAccount: PublicKey;
    /** To store metaplex metadata */
    metadataAccount: PublicKey;
    /** Add liquidity for this pool */
    poolState: PublicKey;
    /** Store the information of market marking in range */
    protocolPosition: PublicKey;
    tickArrayLower: PublicKey;
    tickArrayUpper: PublicKey;
    /** personal position state */
    personalPosition: PublicKey;
    /** The token_0 account deposit token to the pool */
    tokenAccount0: PublicKey;
    /** The token_1 account deposit token to the pool */
    tokenAccount1: PublicKey;
    /** The address that holds pool tokens for token_0 */
    tokenVault0: PublicKey;
    /** The address that holds pool tokens for token_1 */
    tokenVault1: PublicKey;
    /** Sysvar for token mint and ATA creation */
    rent: PublicKey;
    /** Program to create the position manager state account */
    systemProgram: PublicKey;
    /** Program to create mint account and mint tokens */
    tokenProgram: PublicKey;
    /** Program to create an ATA for receiving position NFT */
    associatedTokenProgram: PublicKey;
    /** Program to create NFT metadata */
    metadataProgram: PublicKey;
}
export declare const layout: any;
/**
 * Creates a new position wrapped in a NFT
 *
 * # Arguments
 *
 * * `ctx` - The context of accounts
 * * `tick_lower_index` - The low boundary of market
 * * `tick_upper_index` - The upper boundary of market
 * * `tick_array_lower_start_index` - The start index of tick array which include tick low
 * * `tick_array_upper_start_index` - The start index of tick array which include tick upper
 * * `liquidity` - The liquidity to be added
 * * `amount_0_max` - The max amount of token_0 to spend, which serves as a slippage check
 * * `amount_1_max` - The max amount of token_1 to spend, which serves as a slippage check
 *
 */
export declare function openPosition(args: OpenPositionArgs, accounts: OpenPositionAccounts): TransactionInstruction;
