{"version":3,"sources":["/Users/paul-n/git/ston-fi/public/sdk-contracts/packages/sdk/dist/chunk-YLEQB4MT.cjs","../src/contracts/dex/v2_1/LpAccount/LpAccountV2_1.ts"],"names":[],"mappings":"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","file":"/Users/paul-n/git/ston-fi/public/sdk-contracts/packages/sdk/dist/chunk-YLEQB4MT.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 { toAddress } from \"../../../../utils/toAddress\";\nimport { Contract, type ContractOptions } from \"../../../core/Contract\";\nimport { DEX_VERSION } from \"../../constants\";\nimport { DEX_OP_CODES } from \"../constants\";\n\nexport interface LpAccountV2_1Options extends ContractOptions {\n  gasConstants?: Partial<typeof LpAccountV2_1.gasConstants>;\n}\n\nexport class LpAccountV2_1 extends Contract {\n  public static readonly version: DEX_VERSION = DEX_VERSION.v2_1;\n\n  public static readonly gasConstants = {\n    refund: toNano(\"0.8\"),\n    directAddLp: toNano(\"0.3\"),\n    resetGas: toNano(\"0.02\"),\n  };\n\n  public readonly gasConstants;\n\n  constructor(\n    address: AddressType,\n    { gasConstants, ...options }: LpAccountV2_1Options = {},\n  ) {\n    super(address, options);\n\n    this.gasConstants = {\n      ...LpAccountV2_1.gasConstants,\n      ...gasConstants,\n    };\n  }\n\n  public async createRefundBody(params?: {\n    leftMaybePayload?: Cell;\n    rightMaybePayload?: Cell;\n    queryId?: QueryIdType;\n  }): Promise<Cell> {\n    return beginCell()\n      .storeUint(DEX_OP_CODES.REFUND_ME, 32)\n      .storeUint(params?.queryId ?? 0, 64)\n      .storeMaybeRef(params?.leftMaybePayload)\n      .storeMaybeRef(params?.rightMaybePayload)\n      .endCell();\n  }\n\n  public async getRefundTxParams(\n    provider: ContractProvider,\n    params?: {\n      leftMaybePayload?: Cell;\n      rightMaybePayload?: Cell;\n      gasAmount?: AmountType;\n      queryId?: QueryIdType;\n    },\n  ): Promise<SenderArguments> {\n    const to = this.address;\n\n    const body = await this.createRefundBody({\n      leftMaybePayload: params?.leftMaybePayload,\n      rightMaybePayload: params?.rightMaybePayload,\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<LpAccountV2_1[\"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    userWalletAddress: AddressType;\n    refundAddress?: AddressType;\n    excessesAddress?: AddressType;\n    dexCustomPayload?: Cell;\n    dexCustomPayloadForwardGasAmount?: 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      .storeCoins(BigInt(params.dexCustomPayloadForwardGasAmount ?? 0))\n      .storeAddress(toAddress(params.userWalletAddress))\n      .storeMaybeRef(params.dexCustomPayload)\n      .storeRef(\n        beginCell()\n          .storeAddress(\n            toAddress(params.refundAddress ?? params.userWalletAddress),\n          )\n          .storeAddress(\n            toAddress(\n              params.excessesAddress ??\n                params.refundAddress ??\n                params.userWalletAddress,\n            ),\n          )\n          .endCell(),\n      )\n      .endCell();\n  }\n\n  public async getDirectAddLiquidityTxParams(\n    provider: ContractProvider,\n    params: {\n      userWalletAddress: AddressType;\n      amount0: AmountType;\n      amount1: AmountType;\n      minimumLpToMint?: AmountType;\n      refundAddress?: AddressType;\n      excessesAddress?: AddressType;\n      dexCustomPayload?: Cell;\n      dexCustomPayloadForwardGasAmount?: 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      userWalletAddress: params.userWalletAddress,\n      refundAddress: params.refundAddress,\n      excessesAddress: params.excessesAddress,\n      dexCustomPayload: params.dexCustomPayload,\n      dexCustomPayloadForwardGasAmount: params.dexCustomPayloadForwardGasAmount,\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<LpAccountV2_1[\"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  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<LpAccountV2_1[\"getResetGasTxParams\"]>[1],\n  ) {\n    const txParams = await this.getResetGasTxParams(provider, params);\n\n    return via.send(txParams);\n  }\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"]}