{"version":3,"sources":["/Users/paul-n/git/ston-fi/public/sdk-contracts/packages/sdk/dist/chunk-YSE6O2GU.cjs","../src/contracts/dex/v2_1/router/BaseRouterV2_1.ts"],"names":[],"mappings":"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","file":"/Users/paul-n/git/ston-fi/public/sdk-contracts/packages/sdk/dist/chunk-YSE6O2GU.cjs","sourcesContent":[null,"import {\n  Address,\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 { createJettonTransferMessage } from \"../../../../utils/createJettonTransferMessage\";\nimport { toAddress } from \"../../../../utils/toAddress\";\nimport { Contract, type ContractOptions } from \"../../../core/Contract\";\nimport { HOLE_ADDRESS } from \"../../../core/constants\";\nimport { JettonMinter } from \"../../../core/JettonMinter\";\nimport { pTON_VERSION } from \"../../../pTON\";\nimport type { AbstractPton } from \"../../../pTON/AbstractPton\";\nimport { type DEX_TYPE, DEX_VERSION } from \"../../constants\";\nimport * as Errors from \"../../errors\";\nimport { ROUTER_ADDRESS as ROUTER_v1_ADDRESS } from \"../../v1/constants\";\nimport { DEX_OP_CODES, TX_DEADLINE } from \"../constants\";\nimport { BasePoolV2_1 } from \"../pool/BasePoolV2_1\";\nimport { VaultV2_1 } from \"../vault/VaultV2_1\";\n\nexport interface BaseRouterV2_1Options extends ContractOptions {\n  gasConstants?: Partial<typeof BaseRouterV2_1.gasConstants>;\n  txDeadline?: number;\n}\n\nexport class BaseRouterV2_1 extends Contract {\n  public static readonly version: DEX_VERSION = DEX_VERSION.v2_1;\n\n  public static readonly gasConstants = {\n    swapJettonToJetton: {\n      gasAmount: toNano(\"0.3\"),\n      forwardGasAmount: toNano(\"0.24\"),\n    },\n    swapJettonToTon: {\n      gasAmount: toNano(\"0.3\"),\n      forwardGasAmount: toNano(\"0.24\"),\n    },\n    swapTonToJetton: {\n      forwardGasAmount: toNano(\"0.3\"),\n    },\n    provideLpJetton: {\n      gasAmount: toNano(\"0.3\"),\n      forwardGasAmount: toNano(\"0.235\"),\n    },\n    provideLpTon: {\n      forwardGasAmount: toNano(\"0.3\"),\n    },\n    singleSideProvideLpJetton: {\n      gasAmount: toNano(\"1\"),\n      forwardGasAmount: toNano(\"0.8\"),\n    },\n    singleSideProvideLpTon: {\n      forwardGasAmount: toNano(\"0.8\"),\n    },\n  };\n\n  public readonly gasConstants;\n  private readonly txDeadline;\n\n  constructor(\n    address: AddressType,\n    { gasConstants, txDeadline, ...options }: BaseRouterV2_1Options = {},\n  ) {\n    super(address, options);\n\n    if (this.address.equals(Address.parse(ROUTER_v1_ADDRESS))) {\n      throw Error(\n        [\n          \"You are trying to create an instance v2.1 Router with a v1 address\",\n          \"Please use the appropriate class for the v1 Router. Otherwise, all the funds will be permanently lost.\",\n        ].join(\"\\n\"),\n      );\n    }\n\n    this.gasConstants = {\n      ...BaseRouterV2_1.gasConstants,\n      ...gasConstants,\n    };\n    this.txDeadline = txDeadline ?? TX_DEADLINE;\n  }\n\n  public async createSwapBody(params: {\n    askJettonWalletAddress: AddressType;\n    receiverAddress: AddressType;\n    minAskAmount: AmountType;\n    refundAddress: AddressType;\n    excessesAddress?: AddressType;\n    dexCustomPayload?: Cell;\n    dexCustomPayloadForwardGasAmount?: AmountType;\n    refundPayload?: Cell;\n    refundForwardGasAmount?: AmountType;\n    referralAddress?: AddressType;\n    referralValue?: AmountType;\n    deadline?: number;\n  }): Promise<Cell> {\n    if (\n      params.referralValue &&\n      (BigInt(params.referralValue) < 0 || BigInt(params.referralValue) > 100)\n    ) {\n      throw Error(`'referralValue' should be in range [0, 100] BPS`);\n    }\n\n    return beginCell()\n      .storeUint(DEX_OP_CODES.SWAP, 32)\n      .storeAddress(toAddress(params.askJettonWalletAddress))\n      .storeAddress(toAddress(params.refundAddress))\n      .storeAddress(toAddress(params.excessesAddress ?? params.refundAddress))\n      .storeUint(params.deadline ?? this.defaultDeadline, 64)\n      .storeRef(\n        beginCell()\n          .storeCoins(BigInt(params.minAskAmount))\n          .storeAddress(toAddress(params.receiverAddress))\n          .storeCoins(BigInt(params.dexCustomPayloadForwardGasAmount ?? 0))\n          .storeMaybeRef(params.dexCustomPayload)\n          .storeCoins(BigInt(params.refundForwardGasAmount ?? 0))\n          .storeMaybeRef(params.refundPayload)\n          .storeUint(BigInt(params.referralValue ?? 10), 16)\n          .storeAddress(this.maybeReferralAddress(params.referralAddress))\n          .endCell(),\n      )\n      .endCell();\n  }\n\n  public async createCrossSwapBody(params: {\n    askJettonWalletAddress: AddressType;\n    receiverAddress: AddressType;\n    minAskAmount: AmountType;\n    refundAddress: AddressType;\n    excessesAddress?: AddressType;\n    dexCustomPayload?: Cell;\n    dexCustomPayloadForwardGasAmount?: AmountType;\n    refundPayload?: Cell;\n    refundForwardGasAmount?: AmountType;\n    referralAddress?: AddressType;\n    referralValue?: AmountType;\n    deadline?: number;\n  }): Promise<Cell> {\n    if (\n      params.referralValue &&\n      (BigInt(params.referralValue) < 0 || BigInt(params.referralValue) > 100)\n    ) {\n      throw Error(`'referralValue' should be in range [0, 100] BPS`);\n    }\n\n    return beginCell()\n      .storeUint(DEX_OP_CODES.CROSS_SWAP, 32)\n      .storeAddress(toAddress(params.askJettonWalletAddress))\n      .storeAddress(toAddress(params.refundAddress))\n      .storeAddress(toAddress(params.excessesAddress ?? params.refundAddress))\n      .storeUint(params.deadline ?? this.defaultDeadline, 64)\n      .storeRef(\n        beginCell()\n          .storeCoins(BigInt(params.minAskAmount))\n          .storeAddress(toAddress(params.receiverAddress))\n          .storeCoins(BigInt(params.dexCustomPayloadForwardGasAmount ?? 0))\n          .storeMaybeRef(params.dexCustomPayload)\n          .storeCoins(BigInt(params.refundForwardGasAmount ?? 0))\n          .storeMaybeRef(params.refundPayload)\n          .storeUint(BigInt(params.referralValue ?? 10), 16)\n          .storeAddress(this.maybeReferralAddress(params.referralAddress))\n          .endCell(),\n      )\n      .endCell();\n  }\n\n  public async getSwapJettonToJettonTxParams(\n    provider: ContractProvider,\n    params: {\n      userWalletAddress: AddressType;\n      receiverAddress?: AddressType;\n      offerJettonAddress: AddressType;\n      offerJettonWalletAddress?: AddressType;\n      askJettonAddress: AddressType;\n      askJettonWalletAddress?: AddressType;\n      offerAmount: AmountType;\n      minAskAmount: AmountType;\n      refundAddress?: AddressType;\n      excessesAddress?: AddressType;\n      referralAddress?: AddressType;\n      referralValue?: AmountType;\n      dexCustomPayload?: Cell;\n      dexCustomPayloadForwardGasAmount?: AmountType;\n      refundPayload?: Cell;\n      refundForwardGasAmount?: AmountType;\n      deadline?: number;\n      gasAmount?: AmountType;\n      forwardGasAmount?: AmountType;\n      queryId?: QueryIdType;\n      jettonCustomPayload?: Cell;\n      transferExcessAddress?: AddressType;\n    },\n  ): Promise<SenderArguments> {\n    const contractAddress = this.address;\n\n    const [offerJettonWalletAddress, askJettonWalletAddress] =\n      await Promise.all([\n        params.offerJettonWalletAddress\n          ? toAddress(params.offerJettonWalletAddress)\n          : provider\n              .open(JettonMinter.create(params.offerJettonAddress))\n              .getWalletAddress(params.userWalletAddress),\n        params.askJettonWalletAddress\n          ? params.askJettonWalletAddress\n          : provider\n              .open(JettonMinter.create(params.askJettonAddress))\n              .getWalletAddress(this.address),\n      ]);\n\n    const forwardTonAmount = BigInt(\n      params.forwardGasAmount ??\n        this.gasConstants.swapJettonToJetton.forwardGasAmount,\n    );\n\n    const forwardPayload = await this.createSwapBody({\n      askJettonWalletAddress: askJettonWalletAddress,\n      receiverAddress: params.receiverAddress ?? params.userWalletAddress,\n      minAskAmount: params.minAskAmount,\n      refundAddress: params.refundAddress ?? params.userWalletAddress,\n      excessesAddress: params.excessesAddress,\n      referralAddress: params.referralAddress,\n      referralValue: params.referralValue,\n      dexCustomPayload: params.dexCustomPayload,\n      dexCustomPayloadForwardGasAmount: params.dexCustomPayloadForwardGasAmount,\n      refundPayload: params.refundPayload,\n      refundForwardGasAmount: params.refundForwardGasAmount,\n      deadline: params.deadline,\n    });\n\n    const body = createJettonTransferMessage({\n      queryId: params.queryId ?? 0,\n      amount: params.offerAmount,\n      destination: contractAddress,\n      responseDestination:\n        params.transferExcessAddress ?? params.userWalletAddress,\n      customPayload: params.jettonCustomPayload,\n      forwardTonAmount,\n      forwardPayload,\n    });\n\n    const value = BigInt(\n      params.gasAmount ?? this.gasConstants.swapJettonToJetton.gasAmount,\n    );\n\n    return {\n      to: offerJettonWalletAddress,\n      value,\n      body,\n    };\n  }\n\n  public async sendSwapJettonToJetton(\n    provider: ContractProvider,\n    via: Sender,\n    params: Parameters<BaseRouterV2_1[\"getSwapJettonToJettonTxParams\"]>[1],\n  ) {\n    const txParams = await this.getSwapJettonToJettonTxParams(provider, params);\n\n    return via.send(txParams);\n  }\n\n  public async getSwapJettonToTonTxParams(\n    provider: ContractProvider,\n    params: {\n      userWalletAddress: AddressType;\n      receiverAddress?: AddressType;\n      offerJettonAddress: AddressType;\n      offerJettonWalletAddress?: AddressType;\n      proxyTon: AbstractPton;\n      askJettonWalletAddress?: AddressType;\n      offerAmount: AmountType;\n      minAskAmount: AmountType;\n      refundAddress?: AddressType;\n      excessesAddress?: AddressType;\n      referralAddress?: AddressType;\n      referralValue?: AmountType;\n      dexCustomPayload?: Cell;\n      dexCustomPayloadForwardGasAmount?: AmountType;\n      refundPayload?: Cell;\n      refundForwardGasAmount?: AmountType;\n      deadline?: number;\n      gasAmount?: AmountType;\n      forwardGasAmount?: AmountType;\n      queryId?: QueryIdType;\n      jettonCustomPayload?: Cell;\n      transferExcessAddress?: AddressType;\n    },\n  ): Promise<SenderArguments> {\n    this.assertProxyTon(params.proxyTon);\n\n    return await this.getSwapJettonToJettonTxParams(provider, {\n      ...params,\n      askJettonAddress: params.proxyTon.address,\n      askJettonWalletAddress: params.askJettonWalletAddress,\n      gasAmount:\n        params.gasAmount ?? this.gasConstants.swapJettonToTon.gasAmount,\n      forwardGasAmount:\n        params.forwardGasAmount ??\n        this.gasConstants.swapJettonToTon.forwardGasAmount,\n    });\n  }\n\n  public async sendSwapJettonToTon(\n    provider: ContractProvider,\n    via: Sender,\n    params: Parameters<BaseRouterV2_1[\"getSwapJettonToTonTxParams\"]>[1],\n  ) {\n    const txParams = await this.getSwapJettonToTonTxParams(provider, params);\n\n    return via.send(txParams);\n  }\n\n  public async getSwapTonToJettonTxParams(\n    provider: ContractProvider,\n    params: {\n      userWalletAddress: AddressType;\n      receiverAddress?: AddressType;\n      proxyTon: AbstractPton;\n      offerJettonWalletAddress?: AddressType;\n      askJettonAddress: AddressType;\n      askJettonWalletAddress?: AddressType;\n      offerAmount: AmountType;\n      minAskAmount: AmountType;\n      refundAddress?: AddressType;\n      excessesAddress?: AddressType;\n      referralAddress?: AddressType;\n      referralValue?: AmountType;\n      dexCustomPayload?: Cell;\n      dexCustomPayloadForwardGasAmount?: AmountType;\n      refundPayload?: Cell;\n      refundForwardGasAmount?: AmountType;\n      deadline?: number;\n      forwardGasAmount?: AmountType;\n      queryId?: QueryIdType;\n    },\n  ): Promise<SenderArguments> {\n    this.assertProxyTon(params.proxyTon);\n\n    const contractAddress = this.address;\n\n    const askJettonWalletAddress =\n      params.askJettonWalletAddress ??\n      (await provider\n        .open(JettonMinter.create(params.askJettonAddress))\n        .getWalletAddress(contractAddress));\n\n    const forwardPayload = await this.createSwapBody({\n      askJettonWalletAddress: askJettonWalletAddress,\n      receiverAddress: params.receiverAddress ?? params.userWalletAddress,\n      minAskAmount: params.minAskAmount,\n      refundAddress: params.refundAddress ?? params.userWalletAddress,\n      excessesAddress: params.excessesAddress,\n      referralAddress: params.referralAddress,\n      referralValue: params.referralValue,\n      dexCustomPayload: params.dexCustomPayload,\n      dexCustomPayloadForwardGasAmount: params.dexCustomPayloadForwardGasAmount,\n      refundPayload: params.refundPayload,\n      refundForwardGasAmount: params.refundForwardGasAmount,\n      deadline: params.deadline,\n    });\n\n    const forwardTonAmount = BigInt(\n      params.forwardGasAmount ??\n        this.gasConstants.swapTonToJetton.forwardGasAmount,\n    );\n\n    return await provider.open(params.proxyTon).getTonTransferTxParams({\n      queryId: params.queryId ?? 0,\n      tonAmount: params.offerAmount,\n      destinationAddress: contractAddress,\n      destinationWalletAddress: params.offerJettonWalletAddress,\n      refundAddress: params.userWalletAddress,\n      forwardPayload,\n      forwardTonAmount,\n    });\n  }\n\n  public async sendSwapTonToJetton(\n    provider: ContractProvider,\n    via: Sender,\n    params: Parameters<BaseRouterV2_1[\"getSwapTonToJettonTxParams\"]>[1],\n  ) {\n    const txParams = await this.getSwapTonToJettonTxParams(provider, params);\n\n    return via.send(txParams);\n  }\n\n  public async createProvideLiquidityBody(params: {\n    routerWalletAddress: AddressType;\n    minLpOut: AmountType;\n    receiverAddress: AddressType;\n    refundAddress: AddressType;\n    excessesAddress?: AddressType;\n    bothPositive: boolean;\n    dexCustomPayload?: Cell;\n    dexCustomPayloadForwardGasAmount?: AmountType;\n    deadline?: number;\n  }): Promise<Cell> {\n    return beginCell()\n      .storeUint(DEX_OP_CODES.PROVIDE_LP, 32)\n      .storeAddress(toAddress(params.routerWalletAddress))\n      .storeAddress(toAddress(params.refundAddress))\n      .storeAddress(toAddress(params.excessesAddress ?? params.refundAddress))\n      .storeUint(params.deadline ?? this.defaultDeadline, 64)\n      .storeRef(\n        beginCell()\n          .storeCoins(BigInt(params.minLpOut))\n          .storeAddress(toAddress(params.receiverAddress))\n          .storeUint(params.bothPositive ? 1 : 0, 1)\n          .storeCoins(BigInt(params.dexCustomPayloadForwardGasAmount ?? 0))\n          .storeMaybeRef(params.dexCustomPayload)\n          .endCell(),\n      )\n      .endCell();\n  }\n\n  public async getProvideLiquidityJettonTxParams(\n    provider: ContractProvider,\n    params: {\n      userWalletAddress: AddressType;\n      receiverAddress?: AddressType;\n      sendTokenAddress: AddressType;\n      otherTokenAddress: AddressType;\n      sendAmount: AmountType;\n      minLpOut: AmountType;\n      refundAddress?: AddressType;\n      excessesAddress?: AddressType;\n      dexCustomPayload?: Cell;\n      dexCustomPayloadForwardGasAmount?: AmountType;\n      deadline?: number;\n      gasAmount?: AmountType;\n      forwardGasAmount?: AmountType;\n      queryId?: QueryIdType;\n      jettonCustomPayload?: Cell;\n      transferExcessAddress?: AddressType;\n    },\n  ): Promise<SenderArguments> {\n    return this.implGetProvideLiquidityJettonTxParams(provider, {\n      ...params,\n      gasAmount:\n        params.gasAmount ?? this.gasConstants.provideLpJetton.gasAmount,\n      forwardGasAmount:\n        params.forwardGasAmount ??\n        this.gasConstants.provideLpJetton.forwardGasAmount,\n      bothPositive: true,\n    });\n  }\n\n  public async sendProvideLiquidityJetton(\n    provider: ContractProvider,\n    via: Sender,\n    params: Parameters<BaseRouterV2_1[\"getProvideLiquidityJettonTxParams\"]>[1],\n  ) {\n    const txParams = await this.getProvideLiquidityJettonTxParams(\n      provider,\n      params,\n    );\n\n    return via.send(txParams);\n  }\n\n  public async getSingleSideProvideLiquidityJettonTxParams(\n    provider: ContractProvider,\n    params: {\n      userWalletAddress: AddressType;\n      receiverAddress?: AddressType;\n      sendTokenAddress: AddressType;\n      otherTokenAddress: AddressType;\n      sendAmount: AmountType;\n      minLpOut: AmountType;\n      refundAddress?: AddressType;\n      excessesAddress?: AddressType;\n      dexCustomPayload?: Cell;\n      dexCustomPayloadForwardGasAmount?: AmountType;\n      deadline?: number;\n      gasAmount?: AmountType;\n      forwardGasAmount?: AmountType;\n      queryId?: QueryIdType;\n      jettonCustomPayload?: Cell;\n      transferExcessAddress?: AddressType;\n    },\n  ): Promise<SenderArguments> {\n    return this.implGetProvideLiquidityJettonTxParams(provider, {\n      ...params,\n      gasAmount:\n        params.gasAmount ??\n        this.gasConstants.singleSideProvideLpJetton.gasAmount,\n      forwardGasAmount:\n        params.forwardGasAmount ??\n        this.gasConstants.singleSideProvideLpJetton.forwardGasAmount,\n      bothPositive: false,\n    });\n  }\n\n  public async sendSingleSideProvideLiquidityJetton(\n    provider: ContractProvider,\n    via: Sender,\n    params: Parameters<\n      BaseRouterV2_1[\"getSingleSideProvideLiquidityJettonTxParams\"]\n    >[1],\n  ) {\n    const txParams = await this.getSingleSideProvideLiquidityJettonTxParams(\n      provider,\n      params,\n    );\n\n    return via.send(txParams);\n  }\n\n  protected async implGetProvideLiquidityJettonTxParams(\n    provider: ContractProvider,\n    params: Parameters<\n      BaseRouterV2_1[\"getProvideLiquidityJettonTxParams\"]\n    >[1] & {\n      gasAmount: AmountType;\n      forwardGasAmount: AmountType;\n      bothPositive: boolean;\n    },\n  ) {\n    const contractAddress = this.address;\n\n    const [jettonWalletAddress, routerWalletAddress] = await Promise.all([\n      provider\n        .open(JettonMinter.create(params.sendTokenAddress))\n        .getWalletAddress(params.userWalletAddress),\n      provider\n        .open(JettonMinter.create(params.otherTokenAddress))\n        .getWalletAddress(contractAddress),\n    ]);\n\n    const forwardPayload = await this.createProvideLiquidityBody({\n      routerWalletAddress: routerWalletAddress,\n      receiverAddress: params.receiverAddress ?? params.userWalletAddress,\n      minLpOut: params.minLpOut,\n      refundAddress: params.refundAddress ?? params.userWalletAddress,\n      excessesAddress: params.excessesAddress,\n      dexCustomPayload: params.dexCustomPayload,\n      dexCustomPayloadForwardGasAmount: params.dexCustomPayloadForwardGasAmount,\n      bothPositive: params.bothPositive,\n      deadline: params.deadline,\n    });\n\n    const forwardTonAmount = BigInt(params.forwardGasAmount);\n\n    const body = createJettonTransferMessage({\n      queryId: params.queryId ?? 0,\n      amount: params.sendAmount,\n      destination: contractAddress,\n      responseDestination:\n        params.transferExcessAddress ?? params.userWalletAddress,\n      customPayload: params.jettonCustomPayload,\n      forwardTonAmount,\n      forwardPayload,\n    });\n\n    const value = BigInt(params.gasAmount);\n\n    return {\n      to: jettonWalletAddress,\n      value,\n      body,\n    };\n  }\n\n  public async getProvideLiquidityTonTxParams(\n    provider: ContractProvider,\n    params: {\n      userWalletAddress: AddressType;\n      receiverAddress?: AddressType;\n      proxyTon: AbstractPton;\n      otherTokenAddress: AddressType;\n      sendAmount: AmountType;\n      minLpOut: AmountType;\n      refundAddress?: AddressType;\n      excessesAddress?: AddressType;\n      /* @deprecated: this field is internal and will be always true for this function. Could not be overridden from the outside and should be used. */\n      bothPositive?: boolean;\n      dexCustomPayload?: Cell;\n      dexCustomPayloadForwardGasAmount?: AmountType;\n      deadline?: number;\n      forwardGasAmount?: AmountType;\n      queryId?: QueryIdType;\n    },\n  ): Promise<SenderArguments> {\n    return this.implGetProvideLiquidityTonTxParams(provider, {\n      ...params,\n      forwardGasAmount:\n        params.forwardGasAmount ??\n        this.gasConstants.provideLpTon.forwardGasAmount,\n      bothPositive: true,\n    });\n  }\n\n  public async sendProvideLiquidityTon(\n    provider: ContractProvider,\n    via: Sender,\n    params: Parameters<BaseRouterV2_1[\"getProvideLiquidityTonTxParams\"]>[1],\n  ) {\n    const txParams = await this.getProvideLiquidityTonTxParams(\n      provider,\n      params,\n    );\n\n    return via.send(txParams);\n  }\n\n  public async getSingleSideProvideLiquidityTonTxParams(\n    provider: ContractProvider,\n    params: {\n      userWalletAddress: AddressType;\n      receiverAddress?: AddressType;\n      proxyTon: AbstractPton;\n      otherTokenAddress: AddressType;\n      sendAmount: AmountType;\n      minLpOut: AmountType;\n      refundAddress?: AddressType;\n      excessesAddress?: AddressType;\n      /* @deprecated: this field is internal and will be always false for this function. Could not be overridden from the outside and should be used. */\n      bothPositive?: boolean;\n      dexCustomPayload?: Cell;\n      dexCustomPayloadForwardGasAmount?: AmountType;\n      deadline?: number;\n      forwardGasAmount?: AmountType;\n      queryId?: QueryIdType;\n    },\n  ): Promise<SenderArguments> {\n    return this.implGetProvideLiquidityTonTxParams(provider, {\n      ...params,\n      forwardGasAmount:\n        params.forwardGasAmount ??\n        this.gasConstants.singleSideProvideLpTon.forwardGasAmount,\n      bothPositive: false,\n    });\n  }\n\n  public async sendSingleSideProvideLiquidityTon(\n    provider: ContractProvider,\n    via: Sender,\n    params: Parameters<\n      BaseRouterV2_1[\"getSingleSideProvideLiquidityTonTxParams\"]\n    >[1],\n  ) {\n    const txParams = await this.getSingleSideProvideLiquidityTonTxParams(\n      provider,\n      params,\n    );\n\n    return via.send(txParams);\n  }\n\n  protected async implGetProvideLiquidityTonTxParams(\n    provider: ContractProvider,\n    params: Parameters<BaseRouterV2_1[\"getProvideLiquidityTonTxParams\"]>[1] & {\n      forwardGasAmount: AmountType;\n      bothPositive: boolean;\n    },\n  ) {\n    this.assertProxyTon(params.proxyTon);\n\n    const contractAddress = this.address;\n\n    const routerWalletAddress = await provider\n      .open(JettonMinter.create(params.otherTokenAddress))\n      .getWalletAddress(contractAddress);\n\n    const forwardPayload = await this.createProvideLiquidityBody({\n      routerWalletAddress: routerWalletAddress,\n      receiverAddress: params.receiverAddress ?? params.userWalletAddress,\n      minLpOut: params.minLpOut,\n      refundAddress: params.refundAddress ?? params.userWalletAddress,\n      excessesAddress: params.excessesAddress,\n      dexCustomPayload: params.dexCustomPayload,\n      dexCustomPayloadForwardGasAmount: params.dexCustomPayloadForwardGasAmount,\n      bothPositive: params.bothPositive,\n      deadline: params.deadline,\n    });\n\n    const forwardTonAmount = BigInt(params.forwardGasAmount);\n\n    return await provider.open(params.proxyTon).getTonTransferTxParams({\n      queryId: params.queryId ?? 0,\n      tonAmount: params.sendAmount,\n      destinationAddress: contractAddress,\n      refundAddress: params.userWalletAddress,\n      forwardPayload,\n      forwardTonAmount,\n    });\n  }\n\n  private maybeReferralAddress(referralAddress: AddressType | undefined) {\n    if (!referralAddress) return null;\n\n    const referralAddressParsed = toAddress(referralAddress);\n\n    // ignore hole address as referral address\n    if (referralAddressParsed.equals(HOLE_ADDRESS)) return null;\n\n    return referralAddressParsed;\n  }\n\n  private get defaultDeadline() {\n    return Math.floor(Date.now() / 1000) + this.txDeadline;\n  }\n\n  private assertProxyTon(proxyTon: AbstractPton) {\n    if (proxyTon.version !== pTON_VERSION.v2_1) {\n      throw new Errors.UnmatchedPtonVersion({\n        expected: pTON_VERSION.v2_1,\n        received: proxyTon.version,\n      });\n    }\n  }\n\n  public async getPoolAddress(\n    provider: ContractProvider,\n    params: {\n      token0: AddressType;\n      token1: AddressType;\n    },\n  ) {\n    const result = await provider.get(\"get_pool_address\", [\n      {\n        type: \"slice\",\n        cell: beginCell().storeAddress(toAddress(params.token0)).endCell(),\n      },\n      {\n        type: \"slice\",\n        cell: beginCell().storeAddress(toAddress(params.token1)).endCell(),\n      },\n    ]);\n\n    return result.stack.readAddress();\n  }\n\n  public async getPoolAddressByJettonMinters(\n    provider: ContractProvider,\n    params: {\n      token0: AddressType;\n      token1: AddressType;\n    },\n  ) {\n    const [jetton0WalletAddress, jetton1WalletAddress] = await Promise.all([\n      provider\n        .open(JettonMinter.create(params.token0))\n        .getWalletAddress(this.address),\n      provider\n        .open(JettonMinter.create(params.token1))\n        .getWalletAddress(this.address),\n    ]);\n\n    const poolAddress = await this.getPoolAddress(provider, {\n      token0: jetton0WalletAddress,\n      token1: jetton1WalletAddress,\n    });\n\n    return poolAddress;\n  }\n\n  public async getPool(\n    provider: ContractProvider,\n    params: {\n      token0: AddressType;\n      token1: AddressType;\n    },\n  ) {\n    const poolAddress = await this.getPoolAddressByJettonMinters(\n      provider,\n      params,\n    );\n\n    return BasePoolV2_1.create(poolAddress);\n  }\n\n  public async getVaultAddress(\n    provider: ContractProvider,\n    params: {\n      user: AddressType;\n      tokenWallet: AddressType;\n    },\n  ) {\n    const result = await provider.get(\"get_vault_address\", [\n      {\n        type: \"slice\",\n        cell: beginCell().storeAddress(toAddress(params.user)).endCell(),\n      },\n      {\n        type: \"slice\",\n        cell: beginCell().storeAddress(toAddress(params.tokenWallet)).endCell(),\n      },\n    ]);\n\n    return result.stack.readAddress();\n  }\n\n  public async getVault(\n    provider: ContractProvider,\n    params: {\n      user: AddressType;\n      tokenMinter: AddressType;\n    },\n  ) {\n    const tokenMinter = provider.open(JettonMinter.create(params.tokenMinter));\n\n    const vaultAddress = await this.getVaultAddress(provider, {\n      user: params.user,\n      tokenWallet: await tokenMinter.getWalletAddress(this.address),\n    });\n\n    return VaultV2_1.create(vaultAddress);\n  }\n\n  public async getRouterVersion(provider: ContractProvider) {\n    const result = await provider.get(\"get_router_version\", []);\n\n    return {\n      major: result.stack.readNumber(),\n      minor: result.stack.readNumber(),\n      development: result.stack.readString(),\n    };\n  }\n\n  public async getRouterData(provider: ContractProvider) {\n    const result = await provider.get(\"get_router_data\", []);\n\n    return {\n      routerId: result.stack.readNumber(),\n      dexType: result.stack.readString() as DEX_TYPE,\n      isLocked: result.stack.readBoolean(),\n      adminAddress: result.stack.readAddress(),\n      tempUpgrade: result.stack.readCell(),\n      poolCode: result.stack.readCell(),\n      jettonLpWalletCode: result.stack.readCell(),\n      lpAccountCode: result.stack.readCell(),\n      vaultCode: result.stack.readCell(),\n    };\n  }\n}\n"]}