{"version":3,"sources":["/Users/paul-n/git/ston-fi/public/sdk-contracts/packages/sdk/dist/chunk-Z6MCACMB.cjs","../src/contracts/farm/v1/FarmNftMinterV1.ts"],"names":[],"mappings":"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","file":"/Users/paul-n/git/ston-fi/public/sdk-contracts/packages/sdk/dist/chunk-Z6MCACMB.cjs","sourcesContent":[null,"import {\n  type 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 { Contract, type ContractOptions } from \"../../core/Contract\";\nimport { JettonMinter } from \"../../core/JettonMinter\";\nimport { JettonWallet } from \"../../core/JettonWallet\";\nimport { FARM_OP_CODES, FARM_VERSION } from \"../constants\";\n\nexport interface FarmNftMinterV1Options extends ContractOptions {\n  gasConstants?: Partial<typeof FarmNftMinterV1.gasConstants>;\n}\n\n/**\n * @deprecated `v1` version of the FarmNftMinter contracts is deprecated.\n *\n * Only use this version for get data contract calls.\n * For all other operations, use the latest version of the contract.\n */\nexport class FarmNftMinterV1 extends Contract {\n  public static readonly version: FARM_VERSION = FARM_VERSION.v1;\n\n  public static readonly gasConstants = {\n    stake: toNano(\"0.3\"),\n    stakeForward: toNano(\"0.25\"),\n  };\n\n  public readonly gasConstants;\n\n  constructor(\n    address: AddressType,\n    { gasConstants, ...options }: FarmNftMinterV1Options = {},\n  ) {\n    super(address, options);\n\n    this.gasConstants = {\n      ...FarmNftMinterV1.gasConstants,\n      ...gasConstants,\n    };\n  }\n\n  public async createStakeBody(): Promise<Cell> {\n    return beginCell().storeUint(FARM_OP_CODES.STAKE, 32).endCell();\n  }\n\n  /**\n   * Build all data required to execute a jetton `stake` transaction\n   *\n   * @param {Address | string} params.userWalletAddress - User's address\n   * @param {Address | string} params.jettonAddress - Jetton address of token to be staked\n   * @param {bigint | number} params.jettonAmount - Amount of tokens to be staked (in basic token units)\n   * @param {bigint | number | string | undefined} params.gasAmount - Optional; Custom transaction gas amount (in nanoTons)\n   * @param {bigint | number | string | undefined} params.forwardGasAmount - Optional; Custom transaction forward gas amount (in nanoTons)\n   * @param {bigint | number | undefined} params.queryId - Optional; query id\n   * @param {Address | string | undefined} params.transferExcessAddress - Optional; address to transfer excess tokens\n   *\n   * @returns {SenderArguments} containing all data required to execute a jetton `stake` transaction\n   */\n  public async getStakeTxParams(\n    provider: ContractProvider,\n    params: {\n      userWalletAddress: AddressType;\n      jettonAddress: AddressType;\n      jettonAmount: AmountType;\n      gasAmount?: AmountType;\n      forwardGasAmount?: AmountType;\n      queryId?: QueryIdType;\n      transferExcessAddress?: AddressType;\n    },\n  ): Promise<SenderArguments> {\n    const [jettonWalletAddress, forwardPayload] = await Promise.all([\n      provider\n        .open(JettonMinter.create(params.jettonAddress))\n        .getWalletAddress(params.userWalletAddress),\n      this.createStakeBody(),\n    ]);\n\n    const forwardTonAmount = BigInt(\n      params.forwardGasAmount ?? this.gasConstants.stakeForward,\n    );\n\n    const body = createJettonTransferMessage({\n      queryId: params.queryId ?? 0,\n      amount: params.jettonAmount,\n      destination: this.address,\n      responseDestination:\n        params.transferExcessAddress ?? params.userWalletAddress,\n      forwardTonAmount,\n      forwardPayload,\n    });\n\n    const value = BigInt(params.gasAmount ?? this.gasConstants.stake);\n\n    return {\n      to: jettonWalletAddress,\n      value,\n      body,\n    };\n  }\n\n  public async sendStake(\n    provider: ContractProvider,\n    via: Sender,\n    params: Parameters<FarmNftMinterV1[\"getStakeTxParams\"]>[1],\n  ) {\n    const txParams = await this.getStakeTxParams(provider, params);\n\n    return via.send(txParams);\n  }\n\n  /**\n   * @returns structure containing current state of the minter\n   *\n   * @property {bigint} nextItemIndex - Index of the next nft in this collection\n   * @property {bigint} lastUpdateTime - Last time farming values were updated\n   * @property {number} status - Status of the contract: uninitialized `0`, active `1`, paused `3`\n   * @property {bigint} depositedNanorewards - Deposited rewards in nanounits\n   * @property {bigint} currentStakedTokens - Number of staked tokens in basic token units\n   * @property {bigint} accruedPerUnitNanorewards - Number of accrued nanorewards per basic stake token unit\n   * @property {bigint} accruedNanorewards - Total number of accrued rewards in nanounits\n   * @property {bigint} claimedNanorewards - Number of claimed rewards in nanounits\n   * @property {bigint} contractUniqueId - Minter id\n   * @property {bigint} nanorewardsPer24h - Total number of accrued rewards per 24h in nanounits\n   * @property {boolean} soulboundItems - Whether minted NFTs are soulbound\n   * @property {bigint} minStakeTime - Minimum staking time\n   * @property {Address} stakingTokenWallet - Minter's staking jetton wallet\n   * @property {Address} rewardTokenWallet - Minter's reward jetton wallet\n   */\n  public async getFarmingMinterData(provider: ContractProvider) {\n    const result = await provider.get(\"get_farming_minter_data\", []);\n\n    return {\n      nextItemIndex: result.stack.readBigNumber(),\n      lastUpdateTime: result.stack.readBigNumber(),\n      status: result.stack.readNumber(),\n      depositedNanorewards: result.stack.readBigNumber(),\n      currentStakedTokens: result.stack.readBigNumber(),\n      accruedPerUnitNanorewards: result.stack.readBigNumber(),\n      accruedNanorewards: result.stack.readBigNumber(),\n      claimedNanorewards: result.stack.readBigNumber(),\n      contractUniqueId: result.stack.readBigNumber(),\n      nanorewardsPer24h: result.stack.readBigNumber(),\n      soulboundItems: result.stack.readBoolean(),\n      minStakeTime: result.stack.readBigNumber(),\n      stakingTokenWallet: result.stack.readAddress(),\n      rewardTokenWallet: result.stack.readAddress(),\n    };\n  }\n\n  /**\n   * @returns {Address} address of minter for staking jetton that is used for farming\n   */\n  public async getStakingJettonAddress(\n    provider: ContractProvider,\n  ): Promise<Address> {\n    const { stakingTokenWallet: stakingTokenWalletAddress } =\n      await this.getFarmingMinterData(provider);\n\n    const { jettonMasterAddress } = await provider\n      .open(JettonWallet.create(stakingTokenWalletAddress))\n      .getWalletData();\n\n    return jettonMasterAddress;\n  }\n}\n"]}