{"version":3,"sources":["/Users/paul-n/git/ston-fi/public/sdk-contracts/packages/sdk/dist/chunk-3FADGQUP.cjs","../src/contracts/dex/v1/LpAccountV1.ts"],"names":[],"mappings":"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","file":"/Users/paul-n/git/ston-fi/public/sdk-contracts/packages/sdk/dist/chunk-3FADGQUP.cjs","sourcesContent":[null,"import {\n  beginCell,\n  type Cell,\n  type ContractProvider,\n  type Sender,\n  type SenderArguments,\n  toNano,\n} from \"@ton/ton\";\n\nimport type { AddressType, AmountType, QueryIdType } from \"../../../types\";\nimport { Contract, type ContractOptions } from \"../../core/Contract\";\nimport { DEX_VERSION } from \"../constants\";\nimport { DEX_OP_CODES } from \"./constants\";\n\nexport interface LpAccountV1Options extends ContractOptions {\n  gasConstants?: Partial<typeof LpAccountV1.gasConstants>;\n}\n\n/**\n * The lp account contract holds information about the liquidity provided by the user before minting new liquidity.\n * It interacts only with a single pool contract. For each user, there is single account contract for each pool.\n * The router “routes” the temporary liquidity to the correct account contract.\n * Then the account contract calls the pool contract again to mint new liquidity (once it satisfies some requirements).\n */\nexport class LpAccountV1 extends Contract {\n  public static readonly version: DEX_VERSION = DEX_VERSION.v1;\n\n  public static readonly gasConstants = {\n    refund: toNano(\"0.3\"),\n    directAddLp: toNano(\"0.3\"),\n    resetGas: toNano(\"0.3\"),\n  };\n\n  public readonly gasConstants;\n\n  constructor(\n    address: AddressType,\n    { gasConstants, ...options }: LpAccountV1Options = {},\n  ) {\n    super(address, options);\n\n    this.gasConstants = {\n      ...LpAccountV1.gasConstants,\n      ...gasConstants,\n    };\n  }\n\n  public async createRefundBody(params?: {\n    queryId?: QueryIdType;\n  }): Promise<Cell> {\n    return beginCell()\n      .storeUint(DEX_OP_CODES.REFUND_ME, 32)\n      .storeUint(params?.queryId ?? 0, 64)\n      .endCell();\n  }\n\n  /**\n   * Build all data required to execute a `refund_me` transaction.\n   *\n   * @param {bigint | number | string | undefined} params.gasAmount - Optional; Custom transaction gas amount (in nanoTons)\n   * @param {bigint | number | undefined} params.queryId - Optional; query id\n   *\n   * @returns {SenderArguments} all data required to execute a `refund_me` transaction.\n   */\n  public async getRefundTxParams(\n    provider: ContractProvider,\n    params?: {\n      gasAmount?: AmountType;\n      queryId?: QueryIdType;\n    },\n  ): Promise<SenderArguments> {\n    const to = this.address;\n\n    const body = await this.createRefundBody({\n      queryId: params?.queryId,\n    });\n\n    const value = BigInt(params?.gasAmount ?? this.gasConstants.refund);\n\n    return { to, value, body };\n  }\n\n  public async sendRefund(\n    provider: ContractProvider,\n    via: Sender,\n    params: Parameters<LpAccountV1[\"getRefundTxParams\"]>[1],\n  ) {\n    const txParams = await this.getRefundTxParams(provider, params);\n\n    return via.send(txParams);\n  }\n\n  public async createDirectAddLiquidityBody(params: {\n    amount0: AmountType;\n    amount1: AmountType;\n    minimumLpToMint?: AmountType;\n    queryId?: QueryIdType;\n  }): Promise<Cell> {\n    return beginCell()\n      .storeUint(DEX_OP_CODES.DIRECT_ADD_LIQUIDITY, 32)\n      .storeUint(params?.queryId ?? 0, 64)\n      .storeCoins(BigInt(params.amount0))\n      .storeCoins(BigInt(params.amount1))\n      .storeCoins(BigInt(params.minimumLpToMint ?? 1))\n      .endCell();\n  }\n\n  /**\n   * Build all data required to execute a `direct_add_liquidity` transaction.\n   *\n   * @param {bigint | number} params.amount0 - Amount of the first Jetton tokens (in basic token units)\n   * @param {bigint | number} params.amount1 - Amount of the second Jetton tokens (in basic token units)\n   * @param {bigint | number | undefined} params.minimumLpToMint - Optional; minimum amount of received liquidity tokens (in basic token units)\n   * @param {bigint | number | string | undefined} params.gasAmount - Optional; Custom transaction gas amount (in nanoTons)\n   * @param {bigint | number | undefined} params.queryId - Optional; query id\n   *\n   * @returns {SenderArguments} all data required to execute a `direct_add_liquidity` transaction.\n   */\n  public async getDirectAddLiquidityTxParams(\n    provider: ContractProvider,\n    params: {\n      amount0: AmountType;\n      amount1: AmountType;\n      minimumLpToMint?: AmountType;\n      gasAmount?: AmountType;\n      queryId?: QueryIdType;\n    },\n  ): Promise<SenderArguments> {\n    const to = this.address;\n\n    const body = await this.createDirectAddLiquidityBody({\n      amount0: params.amount0,\n      amount1: params.amount1,\n      minimumLpToMint: params.minimumLpToMint,\n      queryId: params.queryId,\n    });\n\n    const value = BigInt(params.gasAmount ?? this.gasConstants.directAddLp);\n\n    return { to, value, body };\n  }\n\n  public async sendDirectAddLiquidity(\n    provider: ContractProvider,\n    via: Sender,\n    params: Parameters<LpAccountV1[\"getDirectAddLiquidityTxParams\"]>[1],\n  ) {\n    const txParams = await this.getDirectAddLiquidityTxParams(provider, params);\n\n    return via.send(txParams);\n  }\n\n  public async createResetGasBody(params?: {\n    queryId?: QueryIdType;\n  }): Promise<Cell> {\n    return beginCell()\n      .storeUint(DEX_OP_CODES.RESET_GAS, 32)\n      .storeUint(params?.queryId ?? 0, 64)\n      .endCell();\n  }\n\n  /**\n   * Build all data required to execute a `reset_gas` transaction.\n   *\n   * @param {bigint | number | string | undefined} params.gasAmount - Optional; Custom transaction gas amount (in nanoTons)\n   * @param {bigint | number | undefined} params.queryId - Optional; query id\n   *\n   * @returns {SenderArguments} all data required to execute a `reset_gas` transaction.\n   */\n  public async getResetGasTxParams(\n    provider: ContractProvider,\n    params?: {\n      gasAmount?: AmountType;\n      queryId?: QueryIdType;\n    },\n  ): Promise<SenderArguments> {\n    const to = this.address;\n\n    const body = await this.createResetGasBody({\n      queryId: params?.queryId,\n    });\n\n    const value = BigInt(params?.gasAmount ?? this.gasConstants.resetGas);\n\n    return { to, value, body };\n  }\n\n  public async sendResetGas(\n    provider: ContractProvider,\n    via: Sender,\n    params: Parameters<LpAccountV1[\"getResetGasTxParams\"]>[1],\n  ) {\n    const txParams = await this.getResetGasTxParams(provider, params);\n\n    return via.send(txParams);\n  }\n\n  /**\n   * @returns structure containing current state of the lp account.\n   */\n  public async getLpAccountData(provider: ContractProvider) {\n    const result = await provider.get(\"get_lp_account_data\", []);\n\n    return {\n      userAddress: result.stack.readAddress(),\n      poolAddress: result.stack.readAddress(),\n      amount0: result.stack.readBigNumber(),\n      amount1: result.stack.readBigNumber(),\n    };\n  }\n}\n"]}