import * as _ton_ton from '@ton/ton'; import { Cell, ContractProvider, SenderArguments, Sender } from '@ton/ton'; import { AddressType, QueryIdType, AmountType } from '../../../types.js'; import { Contract, ContractOptions } from '../../core/Contract.js'; import { DEX_VERSION } from '../constants.js'; interface LpAccountV1Options extends ContractOptions { gasConstants?: Partial; } /** * The lp account contract holds information about the liquidity provided by the user before minting new liquidity. * It interacts only with a single pool contract. For each user, there is single account contract for each pool. * The router “routes” the temporary liquidity to the correct account contract. * Then the account contract calls the pool contract again to mint new liquidity (once it satisfies some requirements). */ declare class LpAccountV1 extends Contract { static readonly version: DEX_VERSION; static readonly gasConstants: { refund: bigint; directAddLp: bigint; resetGas: bigint; }; readonly gasConstants: { refund: bigint; directAddLp: bigint; resetGas: bigint; }; constructor(address: AddressType, { gasConstants, ...options }?: LpAccountV1Options); createRefundBody(params?: { queryId?: QueryIdType; }): Promise; /** * Build all data required to execute a `refund_me` transaction. * * @param {bigint | number | string | undefined} params.gasAmount - Optional; Custom transaction gas amount (in nanoTons) * @param {bigint | number | undefined} params.queryId - Optional; query id * * @returns {SenderArguments} all data required to execute a `refund_me` transaction. */ getRefundTxParams(provider: ContractProvider, params?: { gasAmount?: AmountType; queryId?: QueryIdType; }): Promise; sendRefund(provider: ContractProvider, via: Sender, params: Parameters[1]): Promise; createDirectAddLiquidityBody(params: { amount0: AmountType; amount1: AmountType; minimumLpToMint?: AmountType; queryId?: QueryIdType; }): Promise; /** * Build all data required to execute a `direct_add_liquidity` transaction. * * @param {bigint | number} params.amount0 - Amount of the first Jetton tokens (in basic token units) * @param {bigint | number} params.amount1 - Amount of the second Jetton tokens (in basic token units) * @param {bigint | number | undefined} params.minimumLpToMint - Optional; minimum amount of received liquidity tokens (in basic token units) * @param {bigint | number | string | undefined} params.gasAmount - Optional; Custom transaction gas amount (in nanoTons) * @param {bigint | number | undefined} params.queryId - Optional; query id * * @returns {SenderArguments} all data required to execute a `direct_add_liquidity` transaction. */ getDirectAddLiquidityTxParams(provider: ContractProvider, params: { amount0: AmountType; amount1: AmountType; minimumLpToMint?: AmountType; gasAmount?: AmountType; queryId?: QueryIdType; }): Promise; sendDirectAddLiquidity(provider: ContractProvider, via: Sender, params: Parameters[1]): Promise; createResetGasBody(params?: { queryId?: QueryIdType; }): Promise; /** * Build all data required to execute a `reset_gas` transaction. * * @param {bigint | number | string | undefined} params.gasAmount - Optional; Custom transaction gas amount (in nanoTons) * @param {bigint | number | undefined} params.queryId - Optional; query id * * @returns {SenderArguments} all data required to execute a `reset_gas` transaction. */ getResetGasTxParams(provider: ContractProvider, params?: { gasAmount?: AmountType; queryId?: QueryIdType; }): Promise; sendResetGas(provider: ContractProvider, via: Sender, params: Parameters[1]): Promise; /** * @returns structure containing current state of the lp account. */ getLpAccountData(provider: ContractProvider): Promise<{ userAddress: _ton_ton.Address; poolAddress: _ton_ton.Address; amount0: bigint; amount1: bigint; }>; } export { LpAccountV1, type LpAccountV1Options };