@pufferfinance/puffer-sdk 1.9.0 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/dist/api/puffer-client-helpers.cjs +1 -1
  2. package/dist/api/puffer-client-helpers.cjs.map +1 -1
  3. package/dist/api/puffer-client-helpers.js +82 -81
  4. package/dist/api/puffer-client-helpers.js.map +1 -1
  5. package/dist/api/puffer-client.cjs +1 -1
  6. package/dist/api/puffer-client.cjs.map +1 -1
  7. package/dist/api/puffer-client.js +2 -2
  8. package/dist/api/puffer-client.js.map +1 -1
  9. package/dist/ccip-BO_b9tFc.cjs +2 -0
  10. package/dist/ccip-BO_b9tFc.cjs.map +1 -0
  11. package/dist/ccip-DLDO0_x2.js +148 -0
  12. package/dist/ccip-DLDO0_x2.js.map +1 -0
  13. package/dist/chains/constants.cjs +1 -1
  14. package/dist/chains/constants.js +1 -1
  15. package/dist/constants-BjRNQpT2.js +1997 -0
  16. package/dist/constants-BjRNQpT2.js.map +1 -0
  17. package/dist/constants-DA2xUb9r.cjs +9 -0
  18. package/dist/constants-DA2xUb9r.cjs.map +1 -0
  19. package/dist/contracts/abis/holesky/PufferDepositor.cjs.map +1 -1
  20. package/dist/contracts/abis/holesky/PufferDepositor.js.map +1 -1
  21. package/dist/contracts/abis/holesky/PufferVaultV2.cjs.map +1 -1
  22. package/dist/contracts/abis/holesky/PufferVaultV2.js.map +1 -1
  23. package/dist/contracts/abis/l1-reward-manager-abis.cjs +1 -1
  24. package/dist/contracts/abis/l1-reward-manager-abis.cjs.map +1 -1
  25. package/dist/contracts/abis/l1-reward-manager-abis.js +1 -1
  26. package/dist/contracts/abis/l2-reward-manager-abis.cjs +1 -1
  27. package/dist/contracts/abis/l2-reward-manager-abis.cjs.map +1 -1
  28. package/dist/contracts/abis/l2-reward-manager-abis.js +1 -1
  29. package/dist/contracts/abis/mainnet/Accountant.cjs.map +1 -1
  30. package/dist/contracts/abis/mainnet/Accountant.js.map +1 -1
  31. package/dist/contracts/abis/mainnet/AtomicQueue.cjs.map +1 -1
  32. package/dist/contracts/abis/mainnet/AtomicQueue.js.map +1 -1
  33. package/dist/contracts/abis/mainnet/BoringVault.cjs.map +1 -1
  34. package/dist/contracts/abis/mainnet/BoringVault.js.map +1 -1
  35. package/dist/contracts/abis/mainnet/ERC20Permit.cjs.map +1 -1
  36. package/dist/contracts/abis/mainnet/ERC20Permit.js.map +1 -1
  37. package/dist/contracts/abis/mainnet/L1RewardManager.cjs.map +1 -1
  38. package/dist/contracts/abis/mainnet/L1RewardManager.js.map +1 -1
  39. package/dist/contracts/abis/mainnet/L2RewardManager.cjs.map +1 -1
  40. package/dist/contracts/abis/mainnet/L2RewardManager.js.map +1 -1
  41. package/dist/contracts/abis/mainnet/PufLocker.cjs.map +1 -1
  42. package/dist/contracts/abis/mainnet/PufLocker.js.map +1 -1
  43. package/dist/contracts/abis/mainnet/PufferDepositor.cjs.map +1 -1
  44. package/dist/contracts/abis/mainnet/PufferDepositor.js.map +1 -1
  45. package/dist/contracts/abis/mainnet/PufferL2Depositor.cjs.map +1 -1
  46. package/dist/contracts/abis/mainnet/PufferL2Depositor.js.map +1 -1
  47. package/dist/contracts/abis/mainnet/PufferVaultV2.cjs.map +1 -1
  48. package/dist/contracts/abis/mainnet/PufferVaultV2.js.map +1 -1
  49. package/dist/contracts/abis/mainnet/PufferWithdrawalManager.cjs.map +1 -1
  50. package/dist/contracts/abis/mainnet/PufferWithdrawalManager.js.map +1 -1
  51. package/dist/contracts/abis/mainnet/Teller.cjs.map +1 -1
  52. package/dist/contracts/abis/mainnet/Teller.js.map +1 -1
  53. package/dist/contracts/abis/nucleus-accountant-abis.cjs +1 -1
  54. package/dist/contracts/abis/nucleus-accountant-abis.cjs.map +1 -1
  55. package/dist/contracts/abis/nucleus-accountant-abis.js +1 -1
  56. package/dist/contracts/abis/nucleus-atomic-queue-abis.cjs +1 -1
  57. package/dist/contracts/abis/nucleus-atomic-queue-abis.cjs.map +1 -1
  58. package/dist/contracts/abis/nucleus-atomic-queue-abis.js +1 -1
  59. package/dist/contracts/abis/nucleus-boring-vault-abis.cjs +1 -1
  60. package/dist/contracts/abis/nucleus-boring-vault-abis.cjs.map +1 -1
  61. package/dist/contracts/abis/nucleus-boring-vault-abis.js +1 -1
  62. package/dist/contracts/abis/nucleus-teller-abis.cjs +1 -1
  63. package/dist/contracts/abis/nucleus-teller-abis.cjs.map +1 -1
  64. package/dist/contracts/abis/nucleus-teller-abis.js +1 -1
  65. package/dist/contracts/abis/puf-locker-abis.cjs +1 -1
  66. package/dist/contracts/abis/puf-locker-abis.cjs.map +1 -1
  67. package/dist/contracts/abis/puf-locker-abis.js +1 -1
  68. package/dist/contracts/abis/puffer-depositor-abis.cjs +1 -1
  69. package/dist/contracts/abis/puffer-depositor-abis.cjs.map +1 -1
  70. package/dist/contracts/abis/puffer-depositor-abis.js +1 -1
  71. package/dist/contracts/abis/puffer-depositor-abis.js.map +1 -1
  72. package/dist/contracts/abis/puffer-vault-abis.cjs +1 -1
  73. package/dist/contracts/abis/puffer-vault-abis.cjs.map +1 -1
  74. package/dist/contracts/abis/puffer-vault-abis.js +1 -1
  75. package/dist/contracts/abis/puffer-vault-abis.js.map +1 -1
  76. package/dist/contracts/abis/puffer-withdrawal-manager-abis.cjs +1 -1
  77. package/dist/contracts/abis/puffer-withdrawal-manager-abis.cjs.map +1 -1
  78. package/dist/contracts/abis/puffer-withdrawal-manager-abis.js +1 -1
  79. package/dist/contracts/addresses.cjs +1 -1
  80. package/dist/contracts/addresses.cjs.map +1 -1
  81. package/dist/contracts/addresses.d.ts +26 -12
  82. package/dist/contracts/addresses.js +29 -12
  83. package/dist/contracts/addresses.js.map +1 -1
  84. package/dist/contracts/handlers/erc20-permit-handler.cjs +1 -1
  85. package/dist/contracts/handlers/erc20-permit-handler.cjs.map +1 -1
  86. package/dist/contracts/handlers/erc20-permit-handler.d.ts +11128 -2714
  87. package/dist/contracts/handlers/erc20-permit-handler.js +3 -3
  88. package/dist/contracts/handlers/erc20-permit-handler.js.map +1 -1
  89. package/dist/contracts/handlers/l1-reward-manager-handler.cjs +1 -1
  90. package/dist/contracts/handlers/l1-reward-manager-handler.cjs.map +1 -1
  91. package/dist/contracts/handlers/l1-reward-manager-handler.d.ts +11128 -2714
  92. package/dist/contracts/handlers/l1-reward-manager-handler.js +2 -2
  93. package/dist/contracts/handlers/l1-reward-manager-handler.js.map +1 -1
  94. package/dist/contracts/handlers/l2-reward-manager-handler.cjs +1 -1
  95. package/dist/contracts/handlers/l2-reward-manager-handler.cjs.map +1 -1
  96. package/dist/contracts/handlers/l2-reward-manager-handler.d.ts +11128 -2714
  97. package/dist/contracts/handlers/l2-reward-manager-handler.js +2 -2
  98. package/dist/contracts/handlers/l2-reward-manager-handler.js.map +1 -1
  99. package/dist/contracts/handlers/nucleus-accountant-handler.cjs +1 -1
  100. package/dist/contracts/handlers/nucleus-accountant-handler.cjs.map +1 -1
  101. package/dist/contracts/handlers/nucleus-accountant-handler.d.ts +11173 -2749
  102. package/dist/contracts/handlers/nucleus-accountant-handler.js +26 -11
  103. package/dist/contracts/handlers/nucleus-accountant-handler.js.map +1 -1
  104. package/dist/contracts/handlers/nucleus-atomic-queue-handler.cjs +1 -1
  105. package/dist/contracts/handlers/nucleus-atomic-queue-handler.cjs.map +1 -1
  106. package/dist/contracts/handlers/nucleus-atomic-queue-handler.d.ts +11128 -2714
  107. package/dist/contracts/handlers/nucleus-atomic-queue-handler.js +5 -5
  108. package/dist/contracts/handlers/nucleus-atomic-queue-handler.js.map +1 -1
  109. package/dist/contracts/handlers/nucleus-boring-vault-handler.cjs +1 -1
  110. package/dist/contracts/handlers/nucleus-boring-vault-handler.cjs.map +1 -1
  111. package/dist/contracts/handlers/nucleus-boring-vault-handler.d.ts +11187 -2769
  112. package/dist/contracts/handlers/nucleus-boring-vault-handler.js +39 -35
  113. package/dist/contracts/handlers/nucleus-boring-vault-handler.js.map +1 -1
  114. package/dist/contracts/handlers/nucleus-teller-handler.cjs +1 -1
  115. package/dist/contracts/handlers/nucleus-teller-handler.cjs.map +1 -1
  116. package/dist/contracts/handlers/nucleus-teller-handler.d.ts +11172 -2749
  117. package/dist/contracts/handlers/nucleus-teller-handler.js +30 -19
  118. package/dist/contracts/handlers/nucleus-teller-handler.js.map +1 -1
  119. package/dist/contracts/handlers/puf-locker-handler.cjs +1 -1
  120. package/dist/contracts/handlers/puf-locker-handler.cjs.map +1 -1
  121. package/dist/contracts/handlers/puf-locker-handler.d.ts +11128 -2714
  122. package/dist/contracts/handlers/puf-locker-handler.js +2 -2
  123. package/dist/contracts/handlers/puf-locker-handler.js.map +1 -1
  124. package/dist/contracts/handlers/puffer-depositor-handler.cjs +1 -1
  125. package/dist/contracts/handlers/puffer-depositor-handler.cjs.map +1 -1
  126. package/dist/contracts/handlers/puffer-depositor-handler.d.ts +11128 -2714
  127. package/dist/contracts/handlers/puffer-depositor-handler.js +2 -2
  128. package/dist/contracts/handlers/puffer-depositor-handler.js.map +1 -1
  129. package/dist/contracts/handlers/puffer-l2-depositor-handler.cjs +1 -1
  130. package/dist/contracts/handlers/puffer-l2-depositor-handler.cjs.map +1 -1
  131. package/dist/contracts/handlers/puffer-l2-depositor-handler.d.ts +11128 -2714
  132. package/dist/contracts/handlers/puffer-l2-depositor-handler.js +2 -2
  133. package/dist/contracts/handlers/puffer-l2-depositor-handler.js.map +1 -1
  134. package/dist/contracts/handlers/puffer-vault-handler.cjs +1 -1
  135. package/dist/contracts/handlers/puffer-vault-handler.cjs.map +1 -1
  136. package/dist/contracts/handlers/puffer-vault-handler.d.ts +11128 -2714
  137. package/dist/contracts/handlers/puffer-vault-handler.js +2 -2
  138. package/dist/contracts/handlers/puffer-vault-handler.js.map +1 -1
  139. package/dist/contracts/handlers/puffer-withdrawal-manager-handler.cjs +1 -1
  140. package/dist/contracts/handlers/puffer-withdrawal-manager-handler.cjs.map +1 -1
  141. package/dist/contracts/handlers/puffer-withdrawal-manager-handler.d.ts +11128 -2714
  142. package/dist/contracts/handlers/puffer-withdrawal-manager-handler.js +2 -2
  143. package/dist/contracts/handlers/puffer-withdrawal-manager-handler.js.map +1 -1
  144. package/dist/contracts/tokens.cjs +1 -1
  145. package/dist/contracts/tokens.cjs.map +1 -1
  146. package/dist/contracts/tokens.d.ts +8 -2
  147. package/dist/contracts/tokens.js +40 -10
  148. package/dist/contracts/tokens.js.map +1 -1
  149. package/dist/createWalletClient-BuLYysrp.cjs +4 -0
  150. package/dist/createWalletClient-BuLYysrp.cjs.map +1 -0
  151. package/dist/createWalletClient-DNcW-ENe.js +2028 -0
  152. package/dist/createWalletClient-DNcW-ENe.js.map +1 -0
  153. package/dist/errors/base-error.cjs.map +1 -1
  154. package/dist/errors/base-error.js.map +1 -1
  155. package/dist/{getContract-MrPLx6gp.cjs → getContract-3QbyfZBF.cjs} +2 -2
  156. package/dist/getContract-3QbyfZBF.cjs.map +1 -0
  157. package/dist/{getContract-B3Spz0SO.js → getContract-CezEyDf-.js} +2 -2
  158. package/dist/{getContract-MrPLx6gp.cjs.map → getContract-CezEyDf-.js.map} +1 -1
  159. package/dist/main.cjs +1 -1
  160. package/dist/main.js +24 -23
  161. package/dist/secp256k1-3OC5y4qp.js +1579 -0
  162. package/dist/secp256k1-3OC5y4qp.js.map +1 -0
  163. package/dist/secp256k1-bcahnPX9.cjs +2 -0
  164. package/dist/secp256k1-bcahnPX9.cjs.map +1 -0
  165. package/dist/utils/version.cjs +1 -1
  166. package/dist/utils/version.js +1 -1
  167. package/dist/writeContract-ChuHpJLC.js +3799 -0
  168. package/dist/writeContract-ChuHpJLC.js.map +1 -0
  169. package/dist/writeContract-D97dSJQe.cjs +32 -0
  170. package/dist/writeContract-D97dSJQe.cjs.map +1 -0
  171. package/package.json +13 -13
  172. package/dist/ccip-D4klNwCt.js +0 -159
  173. package/dist/ccip-D4klNwCt.js.map +0 -1
  174. package/dist/ccip-DLDqFodf.cjs +0 -2
  175. package/dist/ccip-DLDqFodf.cjs.map +0 -1
  176. package/dist/constants-BvU-JhfL.cjs +0 -9
  177. package/dist/constants-BvU-JhfL.cjs.map +0 -1
  178. package/dist/constants-rWWWhxR_.js +0 -2099
  179. package/dist/constants-rWWWhxR_.js.map +0 -1
  180. package/dist/createWalletClient-Bmopj8MM.cjs +0 -4
  181. package/dist/createWalletClient-Bmopj8MM.cjs.map +0 -1
  182. package/dist/createWalletClient-DKcpswHR.js +0 -2007
  183. package/dist/createWalletClient-DKcpswHR.js.map +0 -1
  184. package/dist/getContract-B3Spz0SO.js.map +0 -1
  185. package/dist/secp256k1-BLbXMlpX.js +0 -1172
  186. package/dist/secp256k1-BLbXMlpX.js.map +0 -1
  187. package/dist/secp256k1-CFnFaJ0H.cjs +0 -2
  188. package/dist/secp256k1-CFnFaJ0H.cjs.map +0 -1
  189. package/dist/writeContract-BBHpAss8.cjs +0 -32
  190. package/dist/writeContract-BBHpAss8.cjs.map +0 -1
  191. package/dist/writeContract-RluxM31W.js +0 -3833
  192. package/dist/writeContract-RluxM31W.js.map +0 -1
@@ -1,10 +1,10 @@
1
1
  var s = Object.defineProperty;
2
2
  var o = (i, t, a) => t in i ? s(i, t, { enumerable: !0, configurable: !0, writable: !0, value: a }) : i[t] = a;
3
3
  var c = (i, t, a) => o(i, typeof t != "symbol" ? t + "" : t, a);
4
- import { V as h } from "../../constants-rWWWhxR_.js";
4
+ import { V as h } from "../../constants-BjRNQpT2.js";
5
5
  import { CONTRACT_ADDRESSES as m } from "../addresses.js";
6
6
  import { PUFFER_VAULT_ABIS as u } from "../abis/puffer-vault-abis.js";
7
- import { g as C } from "../../getContract-B3Spz0SO.js";
7
+ import { g as C } from "../../getContract-CezEyDf-.js";
8
8
  class y {
9
9
  /**
10
10
  * Create the handler for the `PufferVaultV2` contract exposing
@@ -1 +1 @@
1
- {"version":3,"file":"puffer-vault-handler.js","sources":["../../../lib/contracts/handlers/puffer-vault-handler.ts"],"sourcesContent":["import {\n Address,\n GetContractReturnType,\n PublicClient,\n WalletClient,\n getContract,\n} from 'viem';\nimport { Chain, VIEM_CHAINS, ViemChain } from '../../chains/constants';\nimport { CONTRACT_ADDRESSES } from '../addresses';\nimport { PUFFER_VAULT_ABIS } from '../abis/puffer-vault-abis';\n\n/**\n * Handler for the `PufferVaultV2` contract exposing methods to interact\n * with the contract.\n */\nexport class PufferVaultHandler {\n private viemChain: ViemChain;\n\n /**\n * Create the handler for the `PufferVaultV2` contract exposing\n * methods to interact with the contract.\n *\n * @param chain Chain to use for the client.\n * @param walletClient The wallet client to use for wallet\n * interactions.\n * @param publicClient The public client to use for public\n * interactions.\n */\n constructor(\n private chain: Chain,\n private walletClient: WalletClient,\n private publicClient: PublicClient,\n ) {\n this.viemChain = VIEM_CHAINS[chain];\n }\n\n /**\n * Get the contract. This is a method because the typings are complex\n * and lost when trying to make it a member.\n *\n * @returns The viem contract.\n */\n public getContract() {\n const address = CONTRACT_ADDRESSES[this.chain].PufferVault as Address;\n const abi = PUFFER_VAULT_ABIS[this.chain].PufferVaultV2;\n const client = { public: this.publicClient, wallet: this.walletClient };\n\n return getContract({ address, abi, client }) as GetContractReturnType<\n typeof abi,\n typeof client,\n Address\n >;\n }\n\n /**\n * Deposit ETH in exchange for pufETH. This doesn't make the\n * transaction but returns two methods namely `transact` and\n * `estimate`.\n *\n * @param walletAddress Wallet address to get the ETH from.\n * @returns `transact: (value: bigint) => Promise<Address>` - Used to\n * make the transaction with the given value.\n *\n * `estimate: () => Promise<bigint>` - Gas estimate of the\n * transaction.\n */\n public depositETH(walletAddress: Address) {\n const transact = async (value: bigint) =>\n await this.getContract().write.depositETH([walletAddress], {\n account: walletAddress,\n chain: this.viemChain,\n value,\n });\n\n const estimate = async () =>\n await this.getContract().estimateGas.depositETH([walletAddress], {\n account: walletAddress,\n });\n\n return { transact, estimate };\n }\n\n /**\n * Check the pufETH balance of the wallet.\n *\n * @param walletAddress Wallet address to check the balance of.\n * @returns pufETH balance in wei.\n */\n public async balanceOf(walletAddress: Address) {\n return await this.getContract().read.balanceOf([walletAddress]);\n }\n\n /**\n * Get the rate of pufETH compared to ETH.\n *\n * @returns Rate of pufETH compared to 1 ETH.\n */\n public async getPufETHRate() {\n const oneWei = BigInt(1e18);\n return await this.getContract().read.previewDeposit([oneWei]);\n }\n\n /**\n * Get the allowance for the given owner and spender.\n *\n * @param ownerAddress Address of the owner.\n * @param spenderAddress Address of the spender.\n * @returns Allowance for the given owner and spender.\n */\n public async getAllowance(ownerAddress: Address, spenderAddress: Address) {\n return await this.getContract().read.allowance([\n ownerAddress,\n spenderAddress,\n ]);\n }\n\n /**\n * Withdraw pufETH to the given wallet address. This doesn't make the\n * transaction but returns two methods namely `transact` and\n * `estimate`.\n *\n * @param ownerAddress Address of the owner.\n * @param walletAddress Address of the receiver.\n * @param value Value of pufETH to withdraw.\n * @returns `transact: (value: bigint) => Promise<Address>` - Used to\n * make the transaction with the given value.\n *\n * `estimate: () => Promise<bigint>` - Gas estimate of the\n * transaction.\n */\n public withdraw(\n ownerAddress: Address,\n walletAddress: Address,\n value: bigint,\n ) {\n const transact = async () =>\n await this.getContract().write.withdraw(\n [value, walletAddress, ownerAddress],\n {\n account: walletAddress,\n chain: this.viemChain,\n },\n );\n\n const estimate = async () =>\n await this.getContract().estimateGas.withdraw(\n [value, walletAddress, ownerAddress],\n {\n account: walletAddress,\n },\n );\n\n return { transact, estimate };\n }\n\n /**\n * Preview the amount of WETH that can be redeemed for the given\n * amount of pufETH using the `.redeem()` method.\n *\n * @param value Value of pufETH to redeem.\n * @returns Preview of the amount of WETH that can be redeemed.\n */\n public previewRedeem(value: bigint) {\n return this.getContract().read.previewRedeem([value]);\n }\n\n /**\n * Calculates the maximum amount of pufETH shares that can be redeemed\n * by the owner.\n *\n * @param ownerAddress Address of the owner's wallet.\n * @returns Maximum amount of pufETH shares that can be redeemed.\n */\n public maxRedeem(ownerAddress: Address) {\n return this.getContract().read.maxRedeem([ownerAddress]);\n }\n\n /**\n * Returns how many basis points of a fee there are when exiting. For\n * example, a 1% fee would mean 1% of the user's requested pufETH is\n * burned (which increases the value for all pufETH holders) before\n * the ETH is redeemed. i.e., you get 1% less ETH back.\n *\n * @returns Basis points of the exit fee.\n */\n public getExitFeeBasisPoints() {\n return this.getContract().read.getExitFeeBasisPoints();\n }\n\n /**\n * Returns how much WETH can still be withdrawn today.\n *\n * @returns Remaining WETH daily withdrawal limit.\n */\n public getRemainingAssetsDailyWithdrawalLimit() {\n return this.getContract().read.getRemainingAssetsDailyWithdrawalLimit();\n }\n\n /**\n * Redeems pufETH shares in exchange for WETH assets from the vault.\n * In the process, the pufETH shares of the owner are burned. This\n * doesn't make the transaction but returns two methods namely\n * `transact` and `estimate`.\n *\n * @param ownerAddress Address of the owner of pufETH.\n * @param receiverAddress Address of the receiver of WETH.\n * @param shares Amount of pufETH shares to redeem.\n * @returns `transact: (value: bigint) => Promise<Address>` - Used to\n * make the transaction with the given value.\n *\n * `estimate: () => Promise<bigint>` - Gas estimate of the\n * transaction.\n */\n public redeem(\n ownerAddress: Address,\n receiverAddress: Address,\n shares: bigint,\n ) {\n const transact = async () =>\n await this.getContract().write.redeem(\n [shares, receiverAddress, ownerAddress],\n {\n account: ownerAddress,\n chain: this.viemChain,\n },\n );\n\n const estimate = async () =>\n await this.getContract().estimateGas.redeem(\n [shares, receiverAddress, ownerAddress],\n {\n account: ownerAddress,\n },\n );\n\n return { transact, estimate };\n }\n\n /**\n * Gives exchange rate of pufETH relative to WETH.\n * This does not include any fees, as compared to previewRedeem method.\n *\n * @param amount Amount of pufETH to convert.\n * @returns Amount of equivalent WETH.\n */\n public convertToAssets(amount: bigint) {\n return this.getContract().read.convertToAssets([amount]);\n }\n}\n"],"names":["PufferVaultHandler","chain","walletClient","publicClient","__publicField","VIEM_CHAINS","address","CONTRACT_ADDRESSES","abi","PUFFER_VAULT_ABIS","client","getContract","walletAddress","value","oneWei","ownerAddress","spenderAddress","receiverAddress","shares","amount"],"mappings":"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"}
1
+ {"version":3,"file":"puffer-vault-handler.js","sources":["../../../lib/contracts/handlers/puffer-vault-handler.ts"],"sourcesContent":["import {\n Address,\n GetContractReturnType,\n PublicClient,\n WalletClient,\n getContract,\n} from 'viem';\nimport { Chain, VIEM_CHAINS, ViemChain } from '../../chains/constants';\nimport { CONTRACT_ADDRESSES } from '../addresses';\nimport { PUFFER_VAULT_ABIS } from '../abis/puffer-vault-abis';\n\n/**\n * Handler for the `PufferVaultV2` contract exposing methods to interact\n * with the contract.\n */\nexport class PufferVaultHandler {\n private viemChain: ViemChain;\n\n /**\n * Create the handler for the `PufferVaultV2` contract exposing\n * methods to interact with the contract.\n *\n * @param chain Chain to use for the client.\n * @param walletClient The wallet client to use for wallet\n * interactions.\n * @param publicClient The public client to use for public\n * interactions.\n */\n constructor(\n private chain: Chain,\n private walletClient: WalletClient,\n private publicClient: PublicClient,\n ) {\n this.viemChain = VIEM_CHAINS[chain];\n }\n\n /**\n * Get the contract. This is a method because the typings are complex\n * and lost when trying to make it a member.\n *\n * @returns The viem contract.\n */\n public getContract() {\n const address = CONTRACT_ADDRESSES[this.chain].PufferVault as Address;\n const abi = PUFFER_VAULT_ABIS[this.chain].PufferVaultV2;\n const client = { public: this.publicClient, wallet: this.walletClient };\n\n return getContract({ address, abi, client }) as GetContractReturnType<\n typeof abi,\n typeof client,\n Address\n >;\n }\n\n /**\n * Deposit ETH in exchange for pufETH. This doesn't make the\n * transaction but returns two methods namely `transact` and\n * `estimate`.\n *\n * @param walletAddress Wallet address to get the ETH from.\n * @returns `transact: (value: bigint) => Promise<Address>` - Used to\n * make the transaction with the given value.\n *\n * `estimate: () => Promise<bigint>` - Gas estimate of the\n * transaction.\n */\n public depositETH(walletAddress: Address) {\n const transact = async (value: bigint) =>\n await this.getContract().write.depositETH([walletAddress], {\n account: walletAddress,\n chain: this.viemChain,\n value,\n });\n\n const estimate = async () =>\n await this.getContract().estimateGas.depositETH([walletAddress], {\n account: walletAddress,\n });\n\n return { transact, estimate };\n }\n\n /**\n * Check the pufETH balance of the wallet.\n *\n * @param walletAddress Wallet address to check the balance of.\n * @returns pufETH balance in wei.\n */\n public async balanceOf(walletAddress: Address) {\n return await this.getContract().read.balanceOf([walletAddress]);\n }\n\n /**\n * Get the rate of pufETH compared to ETH.\n *\n * @returns Rate of pufETH compared to 1 ETH.\n */\n public async getPufETHRate() {\n const oneWei = BigInt(1e18);\n return await this.getContract().read.previewDeposit([oneWei]);\n }\n\n /**\n * Get the allowance for the given owner and spender.\n *\n * @param ownerAddress Address of the owner.\n * @param spenderAddress Address of the spender.\n * @returns Allowance for the given owner and spender.\n */\n public async getAllowance(ownerAddress: Address, spenderAddress: Address) {\n return await this.getContract().read.allowance([\n ownerAddress,\n spenderAddress,\n ]);\n }\n\n /**\n * Withdraw pufETH to the given wallet address. This doesn't make the\n * transaction but returns two methods namely `transact` and\n * `estimate`.\n *\n * @param ownerAddress Address of the owner.\n * @param walletAddress Address of the receiver.\n * @param value Value of pufETH to withdraw.\n * @returns `transact: (value: bigint) => Promise<Address>` - Used to\n * make the transaction with the given value.\n *\n * `estimate: () => Promise<bigint>` - Gas estimate of the\n * transaction.\n */\n public withdraw(\n ownerAddress: Address,\n walletAddress: Address,\n value: bigint,\n ) {\n const transact = async () =>\n await this.getContract().write.withdraw(\n [value, walletAddress, ownerAddress],\n {\n account: walletAddress,\n chain: this.viemChain,\n },\n );\n\n const estimate = async () =>\n await this.getContract().estimateGas.withdraw(\n [value, walletAddress, ownerAddress],\n {\n account: walletAddress,\n },\n );\n\n return { transact, estimate };\n }\n\n /**\n * Preview the amount of WETH that can be redeemed for the given\n * amount of pufETH using the `.redeem()` method.\n *\n * @param value Value of pufETH to redeem.\n * @returns Preview of the amount of WETH that can be redeemed.\n */\n public previewRedeem(value: bigint) {\n return this.getContract().read.previewRedeem([value]);\n }\n\n /**\n * Calculates the maximum amount of pufETH shares that can be redeemed\n * by the owner.\n *\n * @param ownerAddress Address of the owner's wallet.\n * @returns Maximum amount of pufETH shares that can be redeemed.\n */\n public maxRedeem(ownerAddress: Address) {\n return this.getContract().read.maxRedeem([ownerAddress]);\n }\n\n /**\n * Returns how many basis points of a fee there are when exiting. For\n * example, a 1% fee would mean 1% of the user's requested pufETH is\n * burned (which increases the value for all pufETH holders) before\n * the ETH is redeemed. i.e., you get 1% less ETH back.\n *\n * @returns Basis points of the exit fee.\n */\n public getExitFeeBasisPoints() {\n return this.getContract().read.getExitFeeBasisPoints();\n }\n\n /**\n * Returns how much WETH can still be withdrawn today.\n *\n * @returns Remaining WETH daily withdrawal limit.\n */\n public getRemainingAssetsDailyWithdrawalLimit() {\n return this.getContract().read.getRemainingAssetsDailyWithdrawalLimit();\n }\n\n /**\n * Redeems pufETH shares in exchange for WETH assets from the vault.\n * In the process, the pufETH shares of the owner are burned. This\n * doesn't make the transaction but returns two methods namely\n * `transact` and `estimate`.\n *\n * @param ownerAddress Address of the owner of pufETH.\n * @param receiverAddress Address of the receiver of WETH.\n * @param shares Amount of pufETH shares to redeem.\n * @returns `transact: (value: bigint) => Promise<Address>` - Used to\n * make the transaction with the given value.\n *\n * `estimate: () => Promise<bigint>` - Gas estimate of the\n * transaction.\n */\n public redeem(\n ownerAddress: Address,\n receiverAddress: Address,\n shares: bigint,\n ) {\n const transact = async () =>\n await this.getContract().write.redeem(\n [shares, receiverAddress, ownerAddress],\n {\n account: ownerAddress,\n chain: this.viemChain,\n },\n );\n\n const estimate = async () =>\n await this.getContract().estimateGas.redeem(\n [shares, receiverAddress, ownerAddress],\n {\n account: ownerAddress,\n },\n );\n\n return { transact, estimate };\n }\n\n /**\n * Gives exchange rate of pufETH relative to WETH.\n * This does not include any fees, as compared to previewRedeem method.\n *\n * @param amount Amount of pufETH to convert.\n * @returns Amount of equivalent WETH.\n */\n public convertToAssets(amount: bigint) {\n return this.getContract().read.convertToAssets([amount]);\n }\n}\n"],"names":["PufferVaultHandler","chain","walletClient","publicClient","__publicField","VIEM_CHAINS","address","CONTRACT_ADDRESSES","abi","PUFFER_VAULT_ABIS","client","getContract","walletAddress","value","oneWei","ownerAddress","spenderAddress","receiverAddress","shares","amount"],"mappings":";;;;;;;AAeO,MAAMA,EAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAa9B,YACUC,GACAC,GACAC,GACR;AAhBM,IAAAC,EAAA;AAaE,SAAA,QAAAH,GACA,KAAA,eAAAC,GACA,KAAA,eAAAC,GAEH,KAAA,YAAYE,EAAYJ,CAAK;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAS7B,cAAc;AACnB,UAAMK,IAAUC,EAAmB,KAAK,KAAK,EAAE,aACzCC,IAAMC,EAAkB,KAAK,KAAK,EAAE,eACpCC,IAAS,EAAE,QAAQ,KAAK,cAAc,QAAQ,KAAK,aAAa;AAEtE,WAAOC,EAAY,EAAE,SAAAL,GAAS,KAAAE,GAAK,QAAAE,GAAQ;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBtC,WAAWE,GAAwB;AAajC,WAAA,EAAE,UAZQ,OAAOC,MACtB,MAAM,KAAK,YAAY,EAAE,MAAM,WAAW,CAACD,CAAa,GAAG;AAAA,MACzD,SAASA;AAAA,MACT,OAAO,KAAK;AAAA,MACZ,OAAAC;AAAA,IAAA,CACD,GAOgB,UALF,YACf,MAAM,KAAK,cAAc,YAAY,WAAW,CAACD,CAAa,GAAG;AAAA,MAC/D,SAASA;AAAA,IAAA,CACV,EAEyB;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAS9B,MAAa,UAAUA,GAAwB;AACtC,WAAA,MAAM,KAAK,YAAY,EAAE,KAAK,UAAU,CAACA,CAAa,CAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQhE,MAAa,gBAAgB;AACrB,UAAAE,IAAS,OAAO,IAAI;AACnB,WAAA,MAAM,KAAK,YAAY,EAAE,KAAK,eAAe,CAACA,CAAM,CAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAU9D,MAAa,aAAaC,GAAuBC,GAAyB;AACxE,WAAO,MAAM,KAAK,cAAc,KAAK,UAAU;AAAA,MAC7CD;AAAA,MACAC;AAAA,IAAA,CACD;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBI,SACLD,GACAH,GACAC,GACA;AAkBO,WAAA,EAAE,UAjBQ,YACf,MAAM,KAAK,cAAc,MAAM;AAAA,MAC7B,CAACA,GAAOD,GAAeG,CAAY;AAAA,MACnC;AAAA,QACE,SAASH;AAAA,QACT,OAAO,KAAK;AAAA,MAAA;AAAA,IAEhB,GAUiB,UARF,YACf,MAAM,KAAK,cAAc,YAAY;AAAA,MACnC,CAACC,GAAOD,GAAeG,CAAY;AAAA,MACnC;AAAA,QACE,SAASH;AAAA,MAAA;AAAA,IAEb,EAE0B;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUvB,cAAcC,GAAe;AAClC,WAAO,KAAK,YAAY,EAAE,KAAK,cAAc,CAACA,CAAK,CAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAU/C,UAAUE,GAAuB;AACtC,WAAO,KAAK,YAAY,EAAE,KAAK,UAAU,CAACA,CAAY,CAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWlD,wBAAwB;AAC7B,WAAO,KAAK,cAAc,KAAK,sBAAsB;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQhD,yCAAyC;AAC9C,WAAO,KAAK,cAAc,KAAK,uCAAuC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBjE,OACLA,GACAE,GACAC,GACA;AAkBO,WAAA,EAAE,UAjBQ,YACf,MAAM,KAAK,cAAc,MAAM;AAAA,MAC7B,CAACA,GAAQD,GAAiBF,CAAY;AAAA,MACtC;AAAA,QACE,SAASA;AAAA,QACT,OAAO,KAAK;AAAA,MAAA;AAAA,IAEhB,GAUiB,UARF,YACf,MAAM,KAAK,cAAc,YAAY;AAAA,MACnC,CAACG,GAAQD,GAAiBF,CAAY;AAAA,MACtC;AAAA,QACE,SAASA;AAAA,MAAA;AAAA,IAEb,EAE0B;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUvB,gBAAgBI,GAAgB;AACrC,WAAO,KAAK,YAAY,EAAE,KAAK,gBAAgB,CAACA,CAAM,CAAC;AAAA,EAAA;AAE3D;"}
@@ -1,2 +1,2 @@
1
- "use strict";var m=Object.defineProperty;var l=(i,t,a)=>t in i?m(i,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[t]=a;var n=(i,t,a)=>l(i,typeof t!="symbol"?t+"":t,a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../addresses.cjs"),C=require("../../constants-BvU-JhfL.cjs"),g=require("./erc20-permit-handler.cjs"),w=require("../abis/puffer-withdrawal-manager-abis.cjs"),W=require("../tokens.cjs"),d=require("../../getContract-MrPLx6gp.cjs");class P{constructor(t,a,e){n(this,"viemChain");n(this,"erc20PermitHandler");this.chain=t,this.walletClient=a,this.publicClient=e,this.viemChain=C.VIEM_CHAINS[t],this.erc20PermitHandler=new g.ERC20PermitHandler(t,a,e)}getContract(){const t=s.CONTRACT_ADDRESSES[this.chain].PufferWithdrawalManager,a=w.PUFFER_WITHDRAWAL_MANAGER_ABIS[this.chain].PufferWithdrawalManager,e={public:this.publicClient,wallet:this.walletClient};return d.getContract({address:t,abi:a,client:e})}async requestWithdrawal(t,a){return{transact:async()=>await this.getContract().write.requestWithdrawal([a,t],{account:t,chain:this.viemChain}),estimate:async()=>await this.getContract().estimateGas.requestWithdrawal([a,t],{account:t})}}async requestWithdrawalWithPermit(t,a){const{r:e,s:r,v:h,yParity:o,deadline:u}=await this.erc20PermitHandler.withToken(W.Token.pufETH).getPermitSignature(t,s.CONTRACT_ADDRESSES[this.chain].PufferWithdrawalManager,a),c={r:e,s:r,v:Number(h??o),deadline:u,amount:a};return{transact:async()=>await this.getContract().write.requestWithdrawalWithPermit([c,t],{account:t,chain:this.viemChain}),estimate:async()=>await this.getContract().estimateGas.requestWithdrawalWithPermit([c,t],{account:t})}}async completeQueuedWithdrawal(t,a){return{transact:async()=>await this.getContract().write.completeQueuedWithdrawal([a],{account:t,chain:this.viemChain}),estimate:async()=>await this.getContract().estimateGas.completeQueuedWithdrawal([a],{account:t})}}async getWithdrawal(t){return await this.getContract().read.getWithdrawal([t])}}exports.PufferWithdrawalManagerHandler=P;
1
+ "use strict";var m=Object.defineProperty;var l=(i,t,a)=>t in i?m(i,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[t]=a;var n=(i,t,a)=>l(i,typeof t!="symbol"?t+"":t,a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../addresses.cjs"),C=require("../../constants-DA2xUb9r.cjs"),g=require("./erc20-permit-handler.cjs"),w=require("../abis/puffer-withdrawal-manager-abis.cjs"),W=require("../tokens.cjs"),d=require("../../getContract-3QbyfZBF.cjs");class P{constructor(t,a,e){n(this,"viemChain");n(this,"erc20PermitHandler");this.chain=t,this.walletClient=a,this.publicClient=e,this.viemChain=C.VIEM_CHAINS[t],this.erc20PermitHandler=new g.ERC20PermitHandler(t,a,e)}getContract(){const t=s.CONTRACT_ADDRESSES[this.chain].PufferWithdrawalManager,a=w.PUFFER_WITHDRAWAL_MANAGER_ABIS[this.chain].PufferWithdrawalManager,e={public:this.publicClient,wallet:this.walletClient};return d.getContract({address:t,abi:a,client:e})}async requestWithdrawal(t,a){return{transact:async()=>await this.getContract().write.requestWithdrawal([a,t],{account:t,chain:this.viemChain}),estimate:async()=>await this.getContract().estimateGas.requestWithdrawal([a,t],{account:t})}}async requestWithdrawalWithPermit(t,a){const{r:e,s:r,v:h,yParity:o,deadline:u}=await this.erc20PermitHandler.withToken(W.Token.pufETH).getPermitSignature(t,s.CONTRACT_ADDRESSES[this.chain].PufferWithdrawalManager,a),c={r:e,s:r,v:Number(h??o),deadline:u,amount:a};return{transact:async()=>await this.getContract().write.requestWithdrawalWithPermit([c,t],{account:t,chain:this.viemChain}),estimate:async()=>await this.getContract().estimateGas.requestWithdrawalWithPermit([c,t],{account:t})}}async completeQueuedWithdrawal(t,a){return{transact:async()=>await this.getContract().write.completeQueuedWithdrawal([a],{account:t,chain:this.viemChain}),estimate:async()=>await this.getContract().estimateGas.completeQueuedWithdrawal([a],{account:t})}}async getWithdrawal(t){return await this.getContract().read.getWithdrawal([t])}}exports.PufferWithdrawalManagerHandler=P;
2
2
  //# sourceMappingURL=puffer-withdrawal-manager-handler.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"puffer-withdrawal-manager-handler.cjs","sources":["../../../lib/contracts/handlers/puffer-withdrawal-manager-handler.ts"],"sourcesContent":["import {\n Address,\n getContract,\n GetContractReturnType,\n PublicClient,\n WalletClient,\n} from 'viem';\nimport { CONTRACT_ADDRESSES } from '../addresses';\nimport { Chain, VIEM_CHAINS, ViemChain } from '../../chains/constants';\nimport { ERC20PermitHandler } from './erc20-permit-handler';\nimport { PUFFER_WITHDRAWAL_MANAGER_ABIS } from '../abis/puffer-withdrawal-manager-abis';\nimport { Token } from '../tokens';\n\n/**\n * Handler for the `PufferWithdrawalsManager` contract exposing methods to\n * interact with the contract.\n */\nexport class PufferWithdrawalManagerHandler {\n private viemChain: ViemChain;\n private erc20PermitHandler: ERC20PermitHandler;\n\n /**\n * Create the handler for the `PufferWithdrawalsManager` contract exposing\n * methods to interact with the contract.\n *\n * @param chain Chain to use for the client.\n * @param walletClient The wallet client to use for wallet\n * interactions.\n * @param publicClient The public client to use for public\n * interactions.\n */\n constructor(\n private chain: Chain,\n private walletClient: WalletClient,\n private publicClient: PublicClient,\n ) {\n this.viemChain = VIEM_CHAINS[chain];\n this.erc20PermitHandler = new ERC20PermitHandler(\n chain,\n walletClient,\n publicClient,\n );\n }\n\n /**\n * Get the contract.\n *\n * @returns The viem contract.\n */\n public getContract() {\n const address = CONTRACT_ADDRESSES[this.chain]\n .PufferWithdrawalManager as Address;\n const abi =\n PUFFER_WITHDRAWAL_MANAGER_ABIS[this.chain].PufferWithdrawalManager;\n const client = { public: this.publicClient, wallet: this.walletClient };\n\n return getContract({ address, abi, client }) as GetContractReturnType<\n typeof abi,\n typeof client,\n Address\n >;\n }\n\n /**\n * Request a withdrawal of the given amount to the given address, with a permit.\n *\n * @param walletAddress The account address to request the withdrawal for.\n * @param amount The pufETH amount to request the withdrawal for.\n * @returns The transaction hash of the withdrawal.\n */\n public async requestWithdrawal(walletAddress: Address, amount: bigint) {\n const transact = async () =>\n await this.getContract().write.requestWithdrawal(\n [amount, walletAddress],\n {\n account: walletAddress,\n chain: this.viemChain,\n },\n );\n\n const estimate = async () =>\n await this.getContract().estimateGas.requestWithdrawal(\n [amount, walletAddress],\n { account: walletAddress },\n );\n\n return { transact, estimate };\n }\n\n /**\n * Request a withdrawal of the given amount to the given address.\n *\n * @param walletAddress The account address to request the withdrawal for.\n * @param amount The pufETHamount to request the withdrawal for.\n * @returns The transaction hash of the withdrawal.\n */\n public async requestWithdrawalWithPermit(\n walletAddress: Address,\n amount: bigint,\n ) {\n const { r, s, v, yParity, deadline } = await this.erc20PermitHandler\n .withToken(Token.pufETH)\n .getPermitSignature(\n walletAddress,\n CONTRACT_ADDRESSES[this.chain].PufferWithdrawalManager as Address,\n amount,\n );\n\n /* istanbul ignore next */\n const permitData = {\n r,\n s,\n v: Number(v ?? yParity),\n deadline,\n amount,\n };\n\n const transact = async () =>\n await this.getContract().write.requestWithdrawalWithPermit(\n [permitData, walletAddress],\n {\n account: walletAddress,\n chain: this.viemChain,\n },\n );\n\n const estimate = async () =>\n await this.getContract().estimateGas.requestWithdrawalWithPermit(\n [permitData, walletAddress],\n { account: walletAddress },\n );\n\n return { transact, estimate };\n }\n\n /**\n * Complete a withdrawal from the queue.\n *\n * @param withdrawalIdx The index of the withdrawal to complete.\n * @returns The transaction hash of the withdrawal.\n */\n public async completeQueuedWithdrawal(\n walletAddress: Address,\n withdrawalIdx: bigint,\n ) {\n const transact = async () =>\n await this.getContract().write.completeQueuedWithdrawal([withdrawalIdx], {\n account: walletAddress,\n chain: this.viemChain,\n });\n\n const estimate = async () =>\n await this.getContract().estimateGas.completeQueuedWithdrawal(\n [withdrawalIdx],\n { account: walletAddress },\n );\n\n return { transact, estimate };\n }\n\n /**\n * Get the withdrawal at the given index.\n *\n * @param withdrawalIdx The index of the withdrawal to get.\n * @returns The withdrawal at the given index.\n */\n public async getWithdrawal(withdrawalIdx: bigint) {\n return await this.getContract().read.getWithdrawal([withdrawalIdx]);\n }\n}\n"],"names":["PufferWithdrawalManagerHandler","chain","walletClient","publicClient","__publicField","VIEM_CHAINS","ERC20PermitHandler","address","CONTRACT_ADDRESSES","abi","PUFFER_WITHDRAWAL_MANAGER_ABIS","client","getContract","walletAddress","amount","r","s","v","yParity","deadline","Token","permitData","withdrawalIdx"],"mappings":"yeAiBO,MAAMA,CAA+B,CAc1C,YACUC,EACAC,EACAC,EACR,CAjBMC,EAAA,kBACAA,EAAA,2BAaE,KAAA,MAAAH,EACA,KAAA,aAAAC,EACA,KAAA,aAAAC,EAEH,KAAA,UAAYE,cAAYJ,CAAK,EAClC,KAAK,mBAAqB,IAAIK,EAAA,mBAC5BL,EACAC,EACAC,CAAA,CAEJ,CAOO,aAAc,CACnB,MAAMI,EAAUC,EAAA,mBAAmB,KAAK,KAAK,EAC1C,wBACGC,EACJC,EAAA,+BAA+B,KAAK,KAAK,EAAE,wBACvCC,EAAS,CAAE,OAAQ,KAAK,aAAc,OAAQ,KAAK,cAEzD,OAAOC,EAAY,YAAA,CAAE,QAAAL,EAAS,IAAAE,EAAK,OAAAE,CAAQ,CAAA,CAK7C,CASA,MAAa,kBAAkBE,EAAwBC,EAAgB,CAgB9D,MAAA,CAAE,SAfQ,SACf,MAAM,KAAK,cAAc,MAAM,kBAC7B,CAACA,EAAQD,CAAa,EACtB,CACE,QAASA,EACT,MAAO,KAAK,SACd,CAAA,EASe,SANF,SACf,MAAM,KAAK,cAAc,YAAY,kBACnC,CAACC,EAAQD,CAAa,EACtB,CAAE,QAASA,CAAc,CAAA,EAI/B,CASA,MAAa,4BACXA,EACAC,EACA,CACA,KAAM,CAAE,EAAAC,EAAG,EAAAC,EAAG,EAAAC,EAAG,QAAAC,EAAS,SAAAC,CAAA,EAAa,MAAM,KAAK,mBAC/C,UAAUC,EAAAA,MAAM,MAAM,EACtB,mBACCP,EACAL,qBAAmB,KAAK,KAAK,EAAE,wBAC/BM,CAAA,EAIEO,EAAa,CACjB,EAAAN,EACA,EAAAC,EACA,EAAG,OAAOC,GAAKC,CAAO,EACtB,SAAAC,EACA,OAAAL,CAAA,EAkBK,MAAA,CAAE,SAfQ,SACf,MAAM,KAAK,cAAc,MAAM,4BAC7B,CAACO,EAAYR,CAAa,EAC1B,CACE,QAASA,EACT,MAAO,KAAK,SACd,CAAA,EASe,SANF,SACf,MAAM,KAAK,cAAc,YAAY,4BACnC,CAACQ,EAAYR,CAAa,EAC1B,CAAE,QAASA,CAAc,CAAA,EAI/B,CAQA,MAAa,yBACXA,EACAS,EACA,CAaO,MAAA,CAAE,SAZQ,SACf,MAAM,KAAK,cAAc,MAAM,yBAAyB,CAACA,CAAa,EAAG,CACvE,QAAST,EACT,MAAO,KAAK,SAAA,CACb,EAQgB,SANF,SACf,MAAM,KAAK,cAAc,YAAY,yBACnC,CAACS,CAAa,EACd,CAAE,QAAST,CAAc,CAAA,EAI/B,CAQA,MAAa,cAAcS,EAAuB,CACzC,OAAA,MAAM,KAAK,YAAY,EAAE,KAAK,cAAc,CAACA,CAAa,CAAC,CACpE,CACF"}
1
+ {"version":3,"file":"puffer-withdrawal-manager-handler.cjs","sources":["../../../lib/contracts/handlers/puffer-withdrawal-manager-handler.ts"],"sourcesContent":["import {\n Address,\n getContract,\n GetContractReturnType,\n PublicClient,\n WalletClient,\n} from 'viem';\nimport { CONTRACT_ADDRESSES } from '../addresses';\nimport { Chain, VIEM_CHAINS, ViemChain } from '../../chains/constants';\nimport { ERC20PermitHandler } from './erc20-permit-handler';\nimport { PUFFER_WITHDRAWAL_MANAGER_ABIS } from '../abis/puffer-withdrawal-manager-abis';\nimport { Token } from '../tokens';\n\n/**\n * Handler for the `PufferWithdrawalsManager` contract exposing methods to\n * interact with the contract.\n */\nexport class PufferWithdrawalManagerHandler {\n private viemChain: ViemChain;\n private erc20PermitHandler: ERC20PermitHandler;\n\n /**\n * Create the handler for the `PufferWithdrawalsManager` contract exposing\n * methods to interact with the contract.\n *\n * @param chain Chain to use for the client.\n * @param walletClient The wallet client to use for wallet\n * interactions.\n * @param publicClient The public client to use for public\n * interactions.\n */\n constructor(\n private chain: Chain,\n private walletClient: WalletClient,\n private publicClient: PublicClient,\n ) {\n this.viemChain = VIEM_CHAINS[chain];\n this.erc20PermitHandler = new ERC20PermitHandler(\n chain,\n walletClient,\n publicClient,\n );\n }\n\n /**\n * Get the contract.\n *\n * @returns The viem contract.\n */\n public getContract() {\n const address = CONTRACT_ADDRESSES[this.chain]\n .PufferWithdrawalManager as Address;\n const abi =\n PUFFER_WITHDRAWAL_MANAGER_ABIS[this.chain].PufferWithdrawalManager;\n const client = { public: this.publicClient, wallet: this.walletClient };\n\n return getContract({ address, abi, client }) as GetContractReturnType<\n typeof abi,\n typeof client,\n Address\n >;\n }\n\n /**\n * Request a withdrawal of the given amount to the given address, with a permit.\n *\n * @param walletAddress The account address to request the withdrawal for.\n * @param amount The pufETH amount to request the withdrawal for.\n * @returns The transaction hash of the withdrawal.\n */\n public async requestWithdrawal(walletAddress: Address, amount: bigint) {\n const transact = async () =>\n await this.getContract().write.requestWithdrawal(\n [amount, walletAddress],\n {\n account: walletAddress,\n chain: this.viemChain,\n },\n );\n\n const estimate = async () =>\n await this.getContract().estimateGas.requestWithdrawal(\n [amount, walletAddress],\n { account: walletAddress },\n );\n\n return { transact, estimate };\n }\n\n /**\n * Request a withdrawal of the given amount to the given address.\n *\n * @param walletAddress The account address to request the withdrawal for.\n * @param amount The pufETHamount to request the withdrawal for.\n * @returns The transaction hash of the withdrawal.\n */\n public async requestWithdrawalWithPermit(\n walletAddress: Address,\n amount: bigint,\n ) {\n const { r, s, v, yParity, deadline } = await this.erc20PermitHandler\n .withToken(Token.pufETH)\n .getPermitSignature(\n walletAddress,\n CONTRACT_ADDRESSES[this.chain].PufferWithdrawalManager as Address,\n amount,\n );\n\n /* istanbul ignore next */\n const permitData = {\n r,\n s,\n v: Number(v ?? yParity),\n deadline,\n amount,\n };\n\n const transact = async () =>\n await this.getContract().write.requestWithdrawalWithPermit(\n [permitData, walletAddress],\n {\n account: walletAddress,\n chain: this.viemChain,\n },\n );\n\n const estimate = async () =>\n await this.getContract().estimateGas.requestWithdrawalWithPermit(\n [permitData, walletAddress],\n { account: walletAddress },\n );\n\n return { transact, estimate };\n }\n\n /**\n * Complete a withdrawal from the queue.\n *\n * @param withdrawalIdx The index of the withdrawal to complete.\n * @returns The transaction hash of the withdrawal.\n */\n public async completeQueuedWithdrawal(\n walletAddress: Address,\n withdrawalIdx: bigint,\n ) {\n const transact = async () =>\n await this.getContract().write.completeQueuedWithdrawal([withdrawalIdx], {\n account: walletAddress,\n chain: this.viemChain,\n });\n\n const estimate = async () =>\n await this.getContract().estimateGas.completeQueuedWithdrawal(\n [withdrawalIdx],\n { account: walletAddress },\n );\n\n return { transact, estimate };\n }\n\n /**\n * Get the withdrawal at the given index.\n *\n * @param withdrawalIdx The index of the withdrawal to get.\n * @returns The withdrawal at the given index.\n */\n public async getWithdrawal(withdrawalIdx: bigint) {\n return await this.getContract().read.getWithdrawal([withdrawalIdx]);\n }\n}\n"],"names":["PufferWithdrawalManagerHandler","chain","walletClient","publicClient","__publicField","VIEM_CHAINS","ERC20PermitHandler","address","CONTRACT_ADDRESSES","abi","PUFFER_WITHDRAWAL_MANAGER_ABIS","client","getContract","walletAddress","amount","r","s","v","yParity","deadline","Token","permitData","withdrawalIdx"],"mappings":"yeAiBO,MAAMA,CAA+B,CAc1C,YACUC,EACAC,EACAC,EACR,CAjBMC,EAAA,kBACAA,EAAA,2BAaE,KAAA,MAAAH,EACA,KAAA,aAAAC,EACA,KAAA,aAAAC,EAEH,KAAA,UAAYE,cAAYJ,CAAK,EAClC,KAAK,mBAAqB,IAAIK,EAAA,mBAC5BL,EACAC,EACAC,CACF,CAAA,CAQK,aAAc,CACnB,MAAMI,EAAUC,EAAA,mBAAmB,KAAK,KAAK,EAC1C,wBACGC,EACJC,EAAA,+BAA+B,KAAK,KAAK,EAAE,wBACvCC,EAAS,CAAE,OAAQ,KAAK,aAAc,OAAQ,KAAK,YAAa,EAEtE,OAAOC,EAAY,YAAA,CAAE,QAAAL,EAAS,IAAAE,EAAK,OAAAE,EAAQ,CAAA,CAc7C,MAAa,kBAAkBE,EAAwBC,EAAgB,CAgB9D,MAAA,CAAE,SAfQ,SACf,MAAM,KAAK,cAAc,MAAM,kBAC7B,CAACA,EAAQD,CAAa,EACtB,CACE,QAASA,EACT,MAAO,KAAK,SAAA,CAEhB,EAQiB,SANF,SACf,MAAM,KAAK,cAAc,YAAY,kBACnC,CAACC,EAAQD,CAAa,EACtB,CAAE,QAASA,CAAc,CAC3B,CAE0B,CAAA,CAU9B,MAAa,4BACXA,EACAC,EACA,CACA,KAAM,CAAE,EAAAC,EAAG,EAAAC,EAAG,EAAAC,EAAG,QAAAC,EAAS,SAAAC,CAAA,EAAa,MAAM,KAAK,mBAC/C,UAAUC,EAAAA,MAAM,MAAM,EACtB,mBACCP,EACAL,qBAAmB,KAAK,KAAK,EAAE,wBAC/BM,CACF,EAGIO,EAAa,CACjB,EAAAN,EACA,EAAAC,EACA,EAAG,OAAOC,GAAKC,CAAO,EACtB,SAAAC,EACA,OAAAL,CACF,EAiBO,MAAA,CAAE,SAfQ,SACf,MAAM,KAAK,cAAc,MAAM,4BAC7B,CAACO,EAAYR,CAAa,EAC1B,CACE,QAASA,EACT,MAAO,KAAK,SAAA,CAEhB,EAQiB,SANF,SACf,MAAM,KAAK,cAAc,YAAY,4BACnC,CAACQ,EAAYR,CAAa,EAC1B,CAAE,QAASA,CAAc,CAC3B,CAE0B,CAAA,CAS9B,MAAa,yBACXA,EACAS,EACA,CAaO,MAAA,CAAE,SAZQ,SACf,MAAM,KAAK,cAAc,MAAM,yBAAyB,CAACA,CAAa,EAAG,CACvE,QAAST,EACT,MAAO,KAAK,SAAA,CACb,EAQgB,SANF,SACf,MAAM,KAAK,cAAc,YAAY,yBACnC,CAACS,CAAa,EACd,CAAE,QAAST,CAAc,CAC3B,CAE0B,CAAA,CAS9B,MAAa,cAAcS,EAAuB,CACzC,OAAA,MAAM,KAAK,YAAY,EAAE,KAAK,cAAc,CAACA,CAAa,CAAC,CAAA,CAEtE"}