{"version":3,"sources":["/Users/paul-n/git/ston-fi/public/sdk-contracts/packages/sdk/dist/chunk-AJ2JDNJZ.cjs","../src/contracts/dex/v2_1/pool/BasePoolV2_1.ts"],"names":[],"mappings":"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","file":"/Users/paul-n/git/ston-fi/public/sdk-contracts/packages/sdk/dist/chunk-AJ2JDNJZ.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 type { ContractOptions } from \"../../../core/Contract\";\nimport { JettonMinter } from \"../../../core/JettonMinter\";\nimport { JettonWallet } from \"../../../core/JettonWallet\";\nimport { type DEX_TYPE, DEX_VERSION } from \"../../constants\";\nimport { DEX_OP_CODES } from \"../constants\";\nimport { LpAccountV2_1 } from \"../LpAccount/LpAccountV2_1\";\n\nexport interface BasePoolV2_1Options extends ContractOptions {\n  gasConstants?: Partial<typeof BasePoolV2_1.gasConstants>;\n}\n\nexport class BasePoolV2_1 extends JettonMinter {\n  public static readonly version: DEX_VERSION = DEX_VERSION.v2_1;\n\n  public static readonly gasConstants = {\n    collectFees: toNano(\"0.4\"),\n    burn: toNano(\"0.8\"),\n  };\n\n  public readonly gasConstants;\n\n  constructor(\n    address: AddressType,\n    { gasConstants, ...options }: BasePoolV2_1Options = {},\n  ) {\n    super(address, options);\n\n    this.gasConstants = {\n      ...BasePoolV2_1.gasConstants,\n      ...gasConstants,\n    };\n  }\n\n  public async createCollectFeesBody(params?: {\n    queryId?: QueryIdType;\n  }): Promise<Cell> {\n    return beginCell()\n      .storeUint(DEX_OP_CODES.COLLECT_FEES, 32)\n      .storeUint(params?.queryId ?? 0, 64)\n      .endCell();\n  }\n\n  public async getCollectFeeTxParams(\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.createCollectFeesBody({\n      queryId: params?.queryId,\n    });\n\n    const value = BigInt(params?.gasAmount ?? this.gasConstants.collectFees);\n\n    return { to, value, body };\n  }\n\n  public async sendCollectFees(\n    provider: ContractProvider,\n    via: Sender,\n    params: Parameters<BasePoolV2_1[\"getCollectFeeTxParams\"]>[1],\n  ) {\n    const txParams = await this.getCollectFeeTxParams(provider, params);\n\n    return via.send(txParams);\n  }\n\n  public async createBurnBody(params: {\n    amount: AmountType;\n    dexCustomPayload?: Cell;\n    queryId?: QueryIdType;\n  }): Promise<Cell> {\n    return beginCell()\n      .storeUint(DEX_OP_CODES.BURN, 32)\n      .storeUint(params?.queryId ?? 0, 64)\n      .storeCoins(BigInt(params.amount))\n      .storeAddress(null)\n      .storeMaybeRef(params.dexCustomPayload)\n      .endCell();\n  }\n\n  public async getBurnTxParams(\n    provider: ContractProvider,\n    params: {\n      amount: AmountType;\n      userWalletAddress: AddressType;\n      dexCustomPayload?: Cell;\n      gasAmount?: AmountType;\n      queryId?: QueryIdType;\n    },\n  ): Promise<SenderArguments> {\n    const [to, body] = await Promise.all([\n      this.getWalletAddress(provider, params.userWalletAddress),\n      this.createBurnBody({\n        amount: params.amount,\n        dexCustomPayload: params.dexCustomPayload,\n        queryId: params.queryId,\n      }),\n    ]);\n\n    const value = BigInt(params.gasAmount ?? this.gasConstants.burn);\n\n    return { to, value, body };\n  }\n\n  public async sendBurn(\n    provider: ContractProvider,\n    via: Sender,\n    params: Parameters<BasePoolV2_1[\"getBurnTxParams\"]>[1],\n  ) {\n    const txParams = await this.getBurnTxParams(provider, params);\n\n    return via.send(txParams);\n  }\n\n  public async getPoolType(provider: ContractProvider) {\n    const result = await provider.get(\"get_pool_type\", []);\n\n    return result.stack.readString() as DEX_TYPE;\n  }\n\n  public async getLpAccountAddress(\n    provider: ContractProvider,\n    params: {\n      ownerAddress: AddressType;\n    },\n  ) {\n    const result = await provider.get(\"get_lp_account_address\", [\n      {\n        type: \"slice\",\n        cell: beginCell()\n          .storeAddress(toAddress(params.ownerAddress))\n          .endCell(),\n      },\n    ]);\n\n    return result.stack.readAddress();\n  }\n\n  public async getLpAccount(\n    provider: ContractProvider,\n    params: {\n      ownerAddress: AddressType;\n    },\n  ) {\n    const lpAccountAddress = await this.getLpAccountAddress(provider, params);\n\n    return LpAccountV2_1.create(lpAccountAddress);\n  }\n\n  public async getJettonWallet(\n    provider: ContractProvider,\n    params: {\n      ownerAddress: AddressType;\n    },\n  ) {\n    const jettonWalletAddress = await this.getWalletAddress(\n      provider,\n      params.ownerAddress,\n    );\n\n    return JettonWallet.create(jettonWalletAddress);\n  }\n\n  public async getPoolData(provider: ContractProvider) {\n    const data = await this.implGetPoolData(provider);\n\n    return data.commonPoolData;\n  }\n\n  protected async implGetPoolData(provider: ContractProvider) {\n    const result = await provider.get(\"get_pool_data\", []);\n\n    return {\n      commonPoolData: {\n        isLocked: result.stack.readBoolean(),\n        routerAddress: result.stack.readAddress(),\n        totalSupplyLP: result.stack.readBigNumber(),\n        reserve0: result.stack.readBigNumber(),\n        reserve1: result.stack.readBigNumber(),\n        token0WalletAddress: result.stack.readAddress(),\n        token1WalletAddress: result.stack.readAddress(),\n        lpFee: result.stack.readBigNumber(),\n        protocolFee: result.stack.readBigNumber(),\n        protocolFeeAddress: result.stack.readAddressOpt(),\n        collectedToken0ProtocolFee: result.stack.readBigNumber(),\n        collectedToken1ProtocolFee: result.stack.readBigNumber(),\n      },\n      stack: result.stack,\n    };\n  }\n}\n"]}