import { PublicKey } from "@solana/web3.js"; import { SolanaAgentKit } from "../../agent"; import { Decimal } from "decimal.js"; /** * Maps fee tier bps to their corresponding tick spacing values in the Orca Whirlpool protocol. * * @remarks * Fee tiers determine the percentage of fees collected on swaps, while tick spacing affects * the granularity of price ranges for liquidity positions. * * For more details, refer to: * - [Whirlpool Fees](https://orca-so.github.io/whirlpools/Architecture%20Overview/Whirlpool%20Fees) * - [Whirlpool Parameters](https://orca-so.github.io/whirlpools/Architecture%20Overview/Whirlpool%20Parameters) * * @example * const tickSpacing = FEE_TIERS[1]; // returns 1 */ export declare const FEE_TIERS: { readonly 1: 1; readonly 2: 2; readonly 4: 4; readonly 5: 8; readonly 16: 16; readonly 30: 64; readonly 65: 96; readonly 100: 128; readonly 200: 256; }; /** * # Creates a single-sided liquidity pool. * * This function initializes a new Whirlpool (liquidity pool) on Orca and seeds it with liquidity from a single token. * * ## Example Usage: * You created a new token called SHARK, and you want to set the initial price to 0.001 USDC. * You set `depositTokenMint` to SHARK's mint address and `otherTokenMint` to USDC's mint address. * You can minimize price impact for buyers in a few ways: * 1. Increase the amount of tokens you deposit * 2. Set the initial price very low * 3. Set the maximum price closer to the initial price * * ### Note for experts: * The Wrhirlpool program initializes the Whirlpool with the in a specific order. This might not be * the order you expect, so the function checks the order and adjusts the inverts the prices. This means that * on-chain the Whirlpool might be configured as USDC/SHARK instead of SHARK/USDC, and the on-chain price will * be 1/`initialPrice`. This will not affect the price of the token as you intended it to be. * * @param agent - The `SolanaAgentKit` instance representing the wallet and connection details. * @param depositTokenAmount - The amount of the deposit token to deposit in the pool. * @param depositTokenMint - The mint address of the token being deposited into the pool, eg. SHARK. * @param otherTokenMint - The mint address of the other token in the pool, eg. USDC. * @param initialPrice - The initial price of the deposit token in terms of the other token. * @param maxPrice - The maximum price at which liquidity is added. * @param feeTier - The fee tier bps for the pool, determining tick spacing and fee collection rates. * * @returns A promise that resolves to a transaction ID (`string`) of the transaction creating the pool. * * @throws Will throw an error if: * - Mint accounts for the tokens cannot be fetched. * - Prices are out of bounds. * * @remarks * This function is designed for single-sided deposits where users only contribute one type of token, * and the function manages mint order and necessary calculations. */ export declare function orcaCreateSingleSidedLiquidityPool(agent: SolanaAgentKit, depositTokenAmount: number, depositTokenMint: PublicKey, otherTokenMint: PublicKey, initialPrice: Decimal, maxPrice: Decimal, feeTierBps: keyof typeof FEE_TIERS): Promise; //# sourceMappingURL=orca_create_single_sided_liquidity_pool.d.ts.map