{"version":3,"sources":["/Users/paul-n/git/ston-fi/public/sdk-contracts/packages/sdk/dist/chunk-PDIKU2S5.cjs","../src/contracts/dex/v2_1/vault/VaultV2_1.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACVA;AACE;AAKA;AAAA,+BACK;AAkBA,IAAM,UAAA,YAAN,MAAM,WAAA,QAAkB,2BAAS;AAAA,EACtC,4BAAuB,QAAA,EAAuB,6BAAA,CAAY,KAAA;AAAA,EAE1D,6BAAuB,aAAA,EAAe;AAAA,IACpC,WAAA,EAAa,yBAAA,KAAY;AAAA,EAC3B,EAAA;AAAA,EAEgB;AAAA,EAEhB,WAAA,CACE,OAAA,EACA,EAAE,YAAA,EAAc,GAAG,QAAQ,EAAA,EAAsB,CAAC,CAAA,EAClD;AACA,IAAA,KAAA,CAAM,OAAA,EAAS,OAAO,CAAA;AAEtB,IAAA,IAAA,CAAK,aAAA,EAAe;AAAA,MAClB,GAAG,UAAA,CAAU,YAAA;AAAA,MACb,GAAG;AAAA,IACL,CAAA;AAAA,EACF;AAAA,EAEA,MAAa,qBAAA,CAAsB,MAAA,EAEjB;AAChB,IAAA,OAAO,4BAAA,CAAU,CACd,SAAA,CAAU,8BAAA,CAAa,YAAA,EAAc,EAAE,CAAA,CACvC,SAAA,kCAAU,MAAA,2BAAQ,SAAA,UAAW,GAAA,EAAG,EAAE,CAAA,CAClC,OAAA,CAAQ,CAAA;AAAA,EACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,MAAa,sBAAA,CACX,QAAA,EACA,MAAA,EAI0B;AAC1B,IAAA,MAAM,GAAA,EAAK,IAAA,CAAK,OAAA;AAEhB,IAAA,MAAM,KAAA,EAAO,MAAM,IAAA,CAAK,qBAAA,CAAsB;AAAA,MAC5C,OAAA,kBAAS,MAAA,6BAAQ;AAAA,IACnB,CAAC,CAAA;AAED,IAAA,MAAM,MAAA,EAAQ,MAAA,kCAAO,MAAA,6BAAQ,WAAA,UAAa,IAAA,CAAK,YAAA,CAAa,aAAW,CAAA;AAEvE,IAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAM,CAAA;AAAA,EAC3B;AAAA,EAEA,MAAa,eAAA,CACX,QAAA,EACA,GAAA,EACA,MAAA,EACA;AACA,IAAA,MAAM,SAAA,EAAW,MAAM,IAAA,CAAK,sBAAA,CAAuB,QAAA,EAAU,MAAM,CAAA;AAEnE,IAAA,OAAO,GAAA,CAAI,IAAA,CAAK,QAAQ,CAAA;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,YAAA,CAAa,QAAA,EAA4B;AACpD,IAAA,MAAM,OAAA,EAAS,MAAM,QAAA,CAAS,GAAA,CAAI,gBAAA,EAAkB,CAAC,CAAC,CAAA;AAEtD,IAAA,OAAO;AAAA,MACL,YAAA,EAAc,MAAA,CAAO,KAAA,CAAM,WAAA,CAAY,CAAA;AAAA,MACvC,YAAA,EAAc,MAAA,CAAO,KAAA,CAAM,WAAA,CAAY,CAAA;AAAA,MACvC,aAAA,EAAe,MAAA,CAAO,KAAA,CAAM,WAAA,CAAY,CAAA;AAAA,MACxC,eAAA,EAAiB,MAAA,CAAO,KAAA,CAAM,aAAA,CAAc;AAAA,IAC9C,CAAA;AAAA,EACF;AACF,yDAAA;ADxCA;AACA;AACE;AACF,8BAAC","file":"/Users/paul-n/git/ston-fi/public/sdk-contracts/packages/sdk/dist/chunk-PDIKU2S5.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 VaultV2_1Options extends ContractOptions {\n  gasConstants?: Partial<typeof VaultV2_1.gasConstants>;\n}\n\n/**\n * Token vault stores referral fees on a separate contract similar to an LP account.\n * This will allow us to decrease TX fees for swaps since users won't have to pay for additional Jetton transfer TX.\n *\n * Vault address is defined by router_address, owner_address and router_token_Wallet_address,\n * so, for each token, each user can have a dedicated vault contract.\n */\nexport class VaultV2_1 extends Contract {\n  public static readonly version: DEX_VERSION = DEX_VERSION.v2_1;\n\n  public static readonly gasConstants = {\n    withdrawFee: toNano(\"0.3\"),\n  };\n\n  public readonly gasConstants;\n\n  constructor(\n    address: AddressType,\n    { gasConstants, ...options }: VaultV2_1Options = {},\n  ) {\n    super(address, options);\n\n    this.gasConstants = {\n      ...VaultV2_1.gasConstants,\n      ...gasConstants,\n    };\n  }\n\n  public async createWithdrawFeeBody(params?: {\n    queryId?: QueryIdType;\n  }): Promise<Cell> {\n    return beginCell()\n      .storeUint(DEX_OP_CODES.WITHDRAW_FEE, 32)\n      .storeUint(params?.queryId ?? 0, 64)\n      .endCell();\n  }\n\n  /**\n   * Build all data required to execute a `withdraw_fee` transaction.\n   *\n   * @param {ContractProvider} provider - {@link ContractProvider} instance\n   *\n   * @param {object | undefined} params - Optional tx params\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   *\n   * @returns {SenderArguments} all data required to execute a `withdraw_fee` transaction.\n   */\n  public async getWithdrawFeeTxParams(\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.createWithdrawFeeBody({\n      queryId: params?.queryId,\n    });\n\n    const value = BigInt(params?.gasAmount ?? this.gasConstants.withdrawFee);\n\n    return { to, body, value };\n  }\n\n  public async sendWithdrawFee(\n    provider: ContractProvider,\n    via: Sender,\n    params: Parameters<VaultV2_1[\"getWithdrawFeeTxParams\"]>[1],\n  ) {\n    const txParams = await this.getWithdrawFeeTxParams(provider, params);\n\n    return via.send(txParams);\n  }\n\n  /**\n   * Get the current state of the vault contract.\n   *\n   * @param {ContractProvider} provider - {@link ContractProvider} instance\n   *\n   *\n   * @returns {Promise<object>} structure containing the current state of the vault contract.\n   */\n  public async getVaultData(provider: ContractProvider) {\n    const result = await provider.get(\"get_vault_data\", []);\n\n    return {\n      ownerAddress: result.stack.readAddress(),\n      tokenAddress: result.stack.readAddress(),\n      routerAddress: result.stack.readAddress(),\n      depositedAmount: result.stack.readBigNumber(),\n    };\n  }\n}\n"]}