@tokenops/sdk 1.0.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 (371) hide show
  1. package/CHANGELOG.md +207 -0
  2. package/CONTRIBUTING.md +113 -0
  3. package/LICENSE +32 -0
  4. package/README.md +677 -0
  5. package/SECURITY.md +59 -0
  6. package/dist/chunk-52TC6BF7.js +2755 -0
  7. package/dist/chunk-56UI7LUR.cjs +516 -0
  8. package/dist/chunk-5SA2HF2W.cjs +1635 -0
  9. package/dist/chunk-5SGMJADP.cjs +139 -0
  10. package/dist/chunk-62DF53UQ.cjs +749 -0
  11. package/dist/chunk-66IHPTOK.cjs +20 -0
  12. package/dist/chunk-6ECAHP5O.cjs +1496 -0
  13. package/dist/chunk-72YGZEQE.js +742 -0
  14. package/dist/chunk-7VELUOMI.js +35 -0
  15. package/dist/chunk-BE2AIZ3K.js +23 -0
  16. package/dist/chunk-CMRETRZO.js +46 -0
  17. package/dist/chunk-COPFW5Z4.js +82 -0
  18. package/dist/chunk-CQIPRNS7.cjs +25 -0
  19. package/dist/chunk-ECT3NL2L.js +124 -0
  20. package/dist/chunk-FWHYQZ5E.cjs +37 -0
  21. package/dist/chunk-FYQ2UW4T.js +37 -0
  22. package/dist/chunk-HGXNRR25.js +105 -0
  23. package/dist/chunk-HTOMTEA3.cjs +3406 -0
  24. package/dist/chunk-ITQ7WKVC.cjs +101 -0
  25. package/dist/chunk-IVE3QEGD.js +478 -0
  26. package/dist/chunk-JFLEEXKP.js +325 -0
  27. package/dist/chunk-JFR5J4FL.cjs +128 -0
  28. package/dist/chunk-K6MFFDBJ.cjs +109 -0
  29. package/dist/chunk-KWFFIJYX.js +11 -0
  30. package/dist/chunk-NS44KBV5.cjs +89 -0
  31. package/dist/chunk-OLDGMKW2.cjs +93 -0
  32. package/dist/chunk-Q2GP5UDC.js +29 -0
  33. package/dist/chunk-Q7ARQSUH.cjs +42 -0
  34. package/dist/chunk-QCA7O2Q5.cjs +49 -0
  35. package/dist/chunk-QIHZVLIK.js +3388 -0
  36. package/dist/chunk-SUOG3BQS.cjs +2772 -0
  37. package/dist/chunk-T5LVV3KY.cjs +44 -0
  38. package/dist/chunk-UOG4PJL5.js +1488 -0
  39. package/dist/chunk-VDXVNZCO.cjs +329 -0
  40. package/dist/chunk-VJKZWYYJ.cjs +32 -0
  41. package/dist/chunk-WRCUDSUJ.js +96 -0
  42. package/dist/chunk-XSNLAS5M.js +135 -0
  43. package/dist/chunk-XXXDQSHE.js +1628 -0
  44. package/dist/chunk-ZHFLRKFY.js +41 -0
  45. package/dist/chunk-ZXCOJY2Z.js +87 -0
  46. package/dist/core/addresses.d.ts +59 -0
  47. package/dist/core/brands.d.ts +87 -0
  48. package/dist/core/chains.d.ts +102 -0
  49. package/dist/core/errors.d.ts +687 -0
  50. package/dist/core/index.d.ts +7 -0
  51. package/dist/core/normalise.d.ts +27 -0
  52. package/dist/core/preflight.d.ts +25 -0
  53. package/dist/core/revert-mapper.d.ts +74 -0
  54. package/dist/core/telemetry.d.ts +50 -0
  55. package/dist/core/types.d.ts +10 -0
  56. package/dist/core/version.d.ts +15 -0
  57. package/dist/core/zama-error-mapper.d.ts +27 -0
  58. package/dist/fhe/acl.d.ts +73 -0
  59. package/dist/fhe/erc7984-abi.d.ts +53 -0
  60. package/dist/fhe/index.cjs +599 -0
  61. package/dist/fhe/index.d.cts +11 -0
  62. package/dist/fhe/index.d.ts +11 -0
  63. package/dist/fhe/index.js +394 -0
  64. package/dist/fhe/mock-encryptor.d.ts +90 -0
  65. package/dist/fhe/mock-erc7984.d.ts +134 -0
  66. package/dist/fhe/operators.d.ts +190 -0
  67. package/dist/fhe/react/index.cjs +102 -0
  68. package/dist/fhe/react/index.d.cts +10 -0
  69. package/dist/fhe/react/index.d.ts +10 -0
  70. package/dist/fhe/react/index.js +85 -0
  71. package/dist/fhe/react/use-decrypted-handle.d.ts +102 -0
  72. package/dist/fhe/scale-ratio.d.ts +168 -0
  73. package/dist/fhe/sepolia-encryptor-web.d.ts +101 -0
  74. package/dist/fhe/sepolia-encryptor.d.ts +132 -0
  75. package/dist/fhe/types.d.ts +62 -0
  76. package/dist/fhe-airdrop/abis/cloneable.d.ts +781 -0
  77. package/dist/fhe-airdrop/abis/factory.d.ts +714 -0
  78. package/dist/fhe-airdrop/abis/index.d.ts +2 -0
  79. package/dist/fhe-airdrop/advanced/factory-advanced.d.ts +53 -0
  80. package/dist/fhe-airdrop/advanced/index.cjs +21 -0
  81. package/dist/fhe-airdrop/advanced/index.d.cts +13 -0
  82. package/dist/fhe-airdrop/advanced/index.d.ts +13 -0
  83. package/dist/fhe-airdrop/advanced/index.js +8 -0
  84. package/dist/fhe-airdrop/advanced/react/index.cjs +61 -0
  85. package/dist/fhe-airdrop/advanced/react/index.d.cts +5 -0
  86. package/dist/fhe-airdrop/advanced/react/index.d.ts +5 -0
  87. package/dist/fhe-airdrop/advanced/react/index.js +59 -0
  88. package/dist/fhe-airdrop/advanced/react/usePredictAirdropAddress.d.ts +49 -0
  89. package/dist/fhe-airdrop/airdrop.d.ts +308 -0
  90. package/dist/fhe-airdrop/encryption.d.ts +109 -0
  91. package/dist/fhe-airdrop/errors.d.ts +60 -0
  92. package/dist/fhe-airdrop/factory.d.ts +281 -0
  93. package/dist/fhe-airdrop/index.cjs +227 -0
  94. package/dist/fhe-airdrop/index.d.cts +10 -0
  95. package/dist/fhe-airdrop/index.d.ts +10 -0
  96. package/dist/fhe-airdrop/index.js +10 -0
  97. package/dist/fhe-airdrop/react/_shared.d.ts +107 -0
  98. package/dist/fhe-airdrop/react/index.cjs +638 -0
  99. package/dist/fhe-airdrop/react/index.d.cts +90 -0
  100. package/dist/fhe-airdrop/react/index.d.ts +90 -0
  101. package/dist/fhe-airdrop/react/index.js +430 -0
  102. package/dist/fhe-airdrop/react/useAccessClaimAmount.d.ts +31 -0
  103. package/dist/fhe-airdrop/react/useAirdropCanExtendClaimWindow.d.ts +7 -0
  104. package/dist/fhe-airdrop/react/useAirdropClaim.d.ts +25 -0
  105. package/dist/fhe-airdrop/react/useAirdropClaimTypehash.d.ts +10 -0
  106. package/dist/fhe-airdrop/react/useAirdropClaimedSignatures.d.ts +16 -0
  107. package/dist/fhe-airdrop/react/useAirdropDeploymentBlockNumber.d.ts +6 -0
  108. package/dist/fhe-airdrop/react/useAirdropDomainSeparator.d.ts +8 -0
  109. package/dist/fhe-airdrop/react/useAirdropEndTime.d.ts +10 -0
  110. package/dist/fhe-airdrop/react/useAirdropFactoryCustomFee.d.ts +17 -0
  111. package/dist/fhe-airdrop/react/useAirdropFactoryDefaultGasFee.d.ts +10 -0
  112. package/dist/fhe-airdrop/react/useAirdropFactoryDisableCustomFee.d.ts +15 -0
  113. package/dist/fhe-airdrop/react/useAirdropFactoryFeeCollector.d.ts +11 -0
  114. package/dist/fhe-airdrop/react/useAirdropFactoryInitCodeHash.d.ts +17 -0
  115. package/dist/fhe-airdrop/react/useAirdropFactorySetCustomFee.d.ts +17 -0
  116. package/dist/fhe-airdrop/react/useAirdropFactorySetDefaultGasFee.d.ts +16 -0
  117. package/dist/fhe-airdrop/react/useAirdropFactorySetFeeCollector.d.ts +15 -0
  118. package/dist/fhe-airdrop/react/useAirdropGasFee.d.ts +11 -0
  119. package/dist/fhe-airdrop/react/useAirdropGrantRole.d.ts +16 -0
  120. package/dist/fhe-airdrop/react/useAirdropHasClaimEnded.d.ts +7 -0
  121. package/dist/fhe-airdrop/react/useAirdropHasClaimStarted.d.ts +7 -0
  122. package/dist/fhe-airdrop/react/useAirdropHasRole.d.ts +14 -0
  123. package/dist/fhe-airdrop/react/useAirdropIsClaimWindowActive.d.ts +9 -0
  124. package/dist/fhe-airdrop/react/useAirdropIsPaused.d.ts +8 -0
  125. package/dist/fhe-airdrop/react/useAirdropIsSignatureClaimed.d.ts +22 -0
  126. package/dist/fhe-airdrop/react/useAirdropIsSignatureValid.d.ts +50 -0
  127. package/dist/fhe-airdrop/react/useAirdropRevokeRole.d.ts +15 -0
  128. package/dist/fhe-airdrop/react/useAirdropStartTime.d.ts +10 -0
  129. package/dist/fhe-airdrop/react/useAirdropToken.d.ts +11 -0
  130. package/dist/fhe-airdrop/react/useAirdropWithdrawGasFee.d.ts +15 -0
  131. package/dist/fhe-airdrop/react/useAirdropWithdrawOtherConfidentialToken.d.ts +14 -0
  132. package/dist/fhe-airdrop/react/useAirdropWithdrawOtherToken.d.ts +14 -0
  133. package/dist/fhe-airdrop/react/useClaim.d.ts +29 -0
  134. package/dist/fhe-airdrop/react/useConfidentialAirdropFactoryImplementation.d.ts +11 -0
  135. package/dist/fhe-airdrop/react/useCreateAndFundConfidentialAirdrop.d.ts +33 -0
  136. package/dist/fhe-airdrop/react/useCreateAndFundConfidentialAirdropAndGetAddress.d.ts +40 -0
  137. package/dist/fhe-airdrop/react/useCreateConfidentialAirdrop.d.ts +29 -0
  138. package/dist/fhe-airdrop/react/useCreateConfidentialAirdropAndGetAddress.d.ts +31 -0
  139. package/dist/fhe-airdrop/react/useDisableCustomFee.d.ts +14 -0
  140. package/dist/fhe-airdrop/react/useExtendClaimWindow.d.ts +16 -0
  141. package/dist/fhe-airdrop/react/useFactoryCustomFee.d.ts +17 -0
  142. package/dist/fhe-airdrop/react/useFactoryDefaultGasFee.d.ts +10 -0
  143. package/dist/fhe-airdrop/react/useFactoryFeeCollector.d.ts +11 -0
  144. package/dist/fhe-airdrop/react/useFactoryInitCodeHash.d.ts +17 -0
  145. package/dist/fhe-airdrop/react/useFundConfidentialAirdrop.d.ts +25 -0
  146. package/dist/fhe-airdrop/react/useGetClaimAmount.d.ts +30 -0
  147. package/dist/fhe-airdrop/react/useSetCustomFee.d.ts +16 -0
  148. package/dist/fhe-airdrop/react/useSetDefaultGasFee.d.ts +15 -0
  149. package/dist/fhe-airdrop/react/useSetFeeCollector.d.ts +14 -0
  150. package/dist/fhe-airdrop/react/useSetPaused.d.ts +14 -0
  151. package/dist/fhe-airdrop/react/useSignClaimAuthorization.d.ts +31 -0
  152. package/dist/fhe-airdrop/react/useWithdraw.d.ts +12 -0
  153. package/dist/fhe-airdrop/react/useWithdrawOtherConfidentialToken.d.ts +13 -0
  154. package/dist/fhe-airdrop/react/useWithdrawOtherToken.d.ts +13 -0
  155. package/dist/fhe-airdrop/types.d.ts +21 -0
  156. package/dist/fhe-disperse/abis/index.d.ts +2 -0
  157. package/dist/fhe-disperse/abis/singleton.d.ts +1297 -0
  158. package/dist/fhe-disperse/abis/wallet.d.ts +111 -0
  159. package/dist/fhe-disperse/encryption.d.ts +77 -0
  160. package/dist/fhe-disperse/errors.d.ts +39 -0
  161. package/dist/fhe-disperse/index.cjs +248 -0
  162. package/dist/fhe-disperse/index.d.cts +14 -0
  163. package/dist/fhe-disperse/index.d.ts +14 -0
  164. package/dist/fhe-disperse/index.js +11 -0
  165. package/dist/fhe-disperse/react/_shared.d.ts +104 -0
  166. package/dist/fhe-disperse/react/index.cjs +752 -0
  167. package/dist/fhe-disperse/react/index.d.cts +82 -0
  168. package/dist/fhe-disperse/react/index.d.ts +82 -0
  169. package/dist/fhe-disperse/react/index.js +522 -0
  170. package/dist/fhe-disperse/react/useAccessEncryptedFeeReserve.d.ts +35 -0
  171. package/dist/fhe-disperse/react/useApproveTokenOnWallets.d.ts +25 -0
  172. package/dist/fhe-disperse/react/useBatchDiscloseHandlesToParty.d.ts +16 -0
  173. package/dist/fhe-disperse/react/useCalculateFee.d.ts +26 -0
  174. package/dist/fhe-disperse/react/useDeploymentBlockNumber.d.ts +11 -0
  175. package/dist/fhe-disperse/react/useDisableCustomFee.d.ts +20 -0
  176. package/dist/fhe-disperse/react/useDiscloseHandleToParty.d.ts +20 -0
  177. package/dist/fhe-disperse/react/useDisperse.d.ts +28 -0
  178. package/dist/fhe-disperse/react/useGetBatchLimits.d.ts +12 -0
  179. package/dist/fhe-disperse/react/useGetFeeConfig.d.ts +15 -0
  180. package/dist/fhe-disperse/react/useGetFees.d.ts +19 -0
  181. package/dist/fhe-disperse/react/useGetWallets.d.ts +19 -0
  182. package/dist/fhe-disperse/react/useGrantRole.d.ts +24 -0
  183. package/dist/fhe-disperse/react/useHasApprovedSubwallets.d.ts +25 -0
  184. package/dist/fhe-disperse/react/useHasRole.d.ts +22 -0
  185. package/dist/fhe-disperse/react/useIsPaused.d.ts +11 -0
  186. package/dist/fhe-disperse/react/useIsRegistered.d.ts +15 -0
  187. package/dist/fhe-disperse/react/usePause.d.ts +18 -0
  188. package/dist/fhe-disperse/react/usePredictWallets.d.ts +19 -0
  189. package/dist/fhe-disperse/react/usePreflightDisperse.d.ts +37 -0
  190. package/dist/fhe-disperse/react/useRecoverERC20FromWallets.d.ts +21 -0
  191. package/dist/fhe-disperse/react/useRecoverFromWallets.d.ts +21 -0
  192. package/dist/fhe-disperse/react/useRegister.d.ts +40 -0
  193. package/dist/fhe-disperse/react/useRescueConfidentialTokens.d.ts +21 -0
  194. package/dist/fhe-disperse/react/useRescueERC20.d.ts +21 -0
  195. package/dist/fhe-disperse/react/useRevokeRole.d.ts +24 -0
  196. package/dist/fhe-disperse/react/useRevokeTokenOnWallets.d.ts +24 -0
  197. package/dist/fhe-disperse/react/useSetCustomFee.d.ts +24 -0
  198. package/dist/fhe-disperse/react/useSetFeeConfig.d.ts +23 -0
  199. package/dist/fhe-disperse/react/useSetMaxBatchSizeDirect.d.ts +20 -0
  200. package/dist/fhe-disperse/react/useSetMaxBatchSizeHolding.d.ts +20 -0
  201. package/dist/fhe-disperse/react/useSetMaxBatchSizeTokenFee.d.ts +20 -0
  202. package/dist/fhe-disperse/react/useSingletonBatchDiscloseHandlesToParty.d.ts +13 -0
  203. package/dist/fhe-disperse/react/useSingletonBatchLimits.d.ts +12 -0
  204. package/dist/fhe-disperse/react/useSingletonCalculateFee.d.ts +26 -0
  205. package/dist/fhe-disperse/react/useSingletonDeploymentBlockNumber.d.ts +11 -0
  206. package/dist/fhe-disperse/react/useSingletonDisableCustomFee.d.ts +21 -0
  207. package/dist/fhe-disperse/react/useSingletonDiscloseHandleToParty.d.ts +17 -0
  208. package/dist/fhe-disperse/react/useSingletonFees.d.ts +19 -0
  209. package/dist/fhe-disperse/react/useSingletonGrantRole.d.ts +26 -0
  210. package/dist/fhe-disperse/react/useSingletonHasApprovedSubwallets.d.ts +25 -0
  211. package/dist/fhe-disperse/react/useSingletonHasRole.d.ts +23 -0
  212. package/dist/fhe-disperse/react/useSingletonIsPaused.d.ts +11 -0
  213. package/dist/fhe-disperse/react/useSingletonIsRegistered.d.ts +15 -0
  214. package/dist/fhe-disperse/react/useSingletonPause.d.ts +19 -0
  215. package/dist/fhe-disperse/react/useSingletonPredictWallets.d.ts +19 -0
  216. package/dist/fhe-disperse/react/useSingletonRevokeRole.d.ts +26 -0
  217. package/dist/fhe-disperse/react/useSingletonSetCustomFee.d.ts +25 -0
  218. package/dist/fhe-disperse/react/useSingletonUnpause.d.ts +18 -0
  219. package/dist/fhe-disperse/react/useSingletonWalletImplementation.d.ts +12 -0
  220. package/dist/fhe-disperse/react/useSingletonWallets.d.ts +19 -0
  221. package/dist/fhe-disperse/react/useSingletonWithdrawGasFee.d.ts +21 -0
  222. package/dist/fhe-disperse/react/useSingletonWithdrawTokenFee.d.ts +50 -0
  223. package/dist/fhe-disperse/react/useUnpause.d.ts +17 -0
  224. package/dist/fhe-disperse/react/useWalletImplementation.d.ts +12 -0
  225. package/dist/fhe-disperse/react/useWithdrawGasFee.d.ts +26 -0
  226. package/dist/fhe-disperse/react/useWithdrawTokenFee.d.ts +70 -0
  227. package/dist/fhe-disperse/singleton.d.ts +442 -0
  228. package/dist/fhe-disperse/subtotals.d.ts +14 -0
  229. package/dist/fhe-disperse/types.d.ts +332 -0
  230. package/dist/fhe-disperse/validate.d.ts +78 -0
  231. package/dist/fhe-vesting/abis/factory.d.ts +676 -0
  232. package/dist/fhe-vesting/abis/index.d.ts +3 -0
  233. package/dist/fhe-vesting/abis/manager.d.ts +1797 -0
  234. package/dist/fhe-vesting/advanced/factory-advanced.d.ts +52 -0
  235. package/dist/fhe-vesting/advanced/index.cjs +21 -0
  236. package/dist/fhe-vesting/advanced/index.d.cts +12 -0
  237. package/dist/fhe-vesting/advanced/index.d.ts +12 -0
  238. package/dist/fhe-vesting/advanced/index.js +8 -0
  239. package/dist/fhe-vesting/advanced/react/index.cjs +75 -0
  240. package/dist/fhe-vesting/advanced/react/index.d.cts +5 -0
  241. package/dist/fhe-vesting/advanced/react/index.d.ts +5 -0
  242. package/dist/fhe-vesting/advanced/react/index.js +73 -0
  243. package/dist/fhe-vesting/advanced/react/usePredictManagerAddress.d.ts +41 -0
  244. package/dist/fhe-vesting/encryption.d.ts +104 -0
  245. package/dist/fhe-vesting/errors.d.ts +183 -0
  246. package/dist/fhe-vesting/factory.d.ts +207 -0
  247. package/dist/fhe-vesting/index.cjs +269 -0
  248. package/dist/fhe-vesting/index.d.cts +9 -0
  249. package/dist/fhe-vesting/index.d.ts +9 -0
  250. package/dist/fhe-vesting/index.js +12 -0
  251. package/dist/fhe-vesting/manager.d.ts +808 -0
  252. package/dist/fhe-vesting/react/_shared.d.ts +122 -0
  253. package/dist/fhe-vesting/react/index.cjs +1054 -0
  254. package/dist/fhe-vesting/react/index.d.cts +123 -0
  255. package/dist/fhe-vesting/react/index.d.ts +123 -0
  256. package/dist/fhe-vesting/react/index.js +771 -0
  257. package/dist/fhe-vesting/react/useAcceptVestingTransfer.d.ts +12 -0
  258. package/dist/fhe-vesting/react/useAccessClaimableAmount.d.ts +14 -0
  259. package/dist/fhe-vesting/react/useAccessSettledAmount.d.ts +15 -0
  260. package/dist/fhe-vesting/react/useAccessTotalAllocation.d.ts +14 -0
  261. package/dist/fhe-vesting/react/useAccessVestedAmount.d.ts +26 -0
  262. package/dist/fhe-vesting/react/useAdminBatchDiscloseToParty.d.ts +16 -0
  263. package/dist/fhe-vesting/react/useAdminClaim.d.ts +9 -0
  264. package/dist/fhe-vesting/react/useAdminDiscloseToParty.d.ts +8 -0
  265. package/dist/fhe-vesting/react/useAdminGetClaimableAmount.d.ts +13 -0
  266. package/dist/fhe-vesting/react/useAdminGetSettledAmount.d.ts +13 -0
  267. package/dist/fhe-vesting/react/useAdminGetTokenBalance.d.ts +13 -0
  268. package/dist/fhe-vesting/react/useAdminGetTotalAllocation.d.ts +13 -0
  269. package/dist/fhe-vesting/react/useAdminGetVestedAmount.d.ts +15 -0
  270. package/dist/fhe-vesting/react/useAdminPartialClaim.d.ts +8 -0
  271. package/dist/fhe-vesting/react/useAllRecipients.d.ts +8 -0
  272. package/dist/fhe-vesting/react/useAllRecipientsLength.d.ts +6 -0
  273. package/dist/fhe-vesting/react/useAllRecipientsSliced.d.ts +13 -0
  274. package/dist/fhe-vesting/react/useBatchCreateVesting.d.ts +24 -0
  275. package/dist/fhe-vesting/react/useBatchDiscloseHandlesToParty.d.ts +13 -0
  276. package/dist/fhe-vesting/react/useBatchDiscloseToParty.d.ts +18 -0
  277. package/dist/fhe-vesting/react/useBatchRevokeVesting.d.ts +12 -0
  278. package/dist/fhe-vesting/react/useCancelVestingTransfer.d.ts +12 -0
  279. package/dist/fhe-vesting/react/useClaim.d.ts +19 -0
  280. package/dist/fhe-vesting/react/useConfidentialVestingFactoryImplementation.d.ts +11 -0
  281. package/dist/fhe-vesting/react/useCreateManager.d.ts +32 -0
  282. package/dist/fhe-vesting/react/useCreateManagerAndGetAddress.d.ts +31 -0
  283. package/dist/fhe-vesting/react/useCreateVesting.d.ts +38 -0
  284. package/dist/fhe-vesting/react/useDirectVestingTransfer.d.ts +13 -0
  285. package/dist/fhe-vesting/react/useDisableCustomFee.d.ts +14 -0
  286. package/dist/fhe-vesting/react/useDiscloseHandleToParty.d.ts +14 -0
  287. package/dist/fhe-vesting/react/useDiscloseToParty.d.ts +14 -0
  288. package/dist/fhe-vesting/react/useFactoryCustomFee.d.ts +17 -0
  289. package/dist/fhe-vesting/react/useFactoryDefaultFeeType.d.ts +11 -0
  290. package/dist/fhe-vesting/react/useFactoryDefaultGasFee.d.ts +10 -0
  291. package/dist/fhe-vesting/react/useFactoryDefaultTokenFee.d.ts +10 -0
  292. package/dist/fhe-vesting/react/useFactoryFeeCollector.d.ts +10 -0
  293. package/dist/fhe-vesting/react/useFactoryInitCodeHash.d.ts +18 -0
  294. package/dist/fhe-vesting/react/useGetClaimableAmount.d.ts +13 -0
  295. package/dist/fhe-vesting/react/useGetSettledAmount.d.ts +14 -0
  296. package/dist/fhe-vesting/react/useGetTotalAllocation.d.ts +13 -0
  297. package/dist/fhe-vesting/react/useGetVestedAmount.d.ts +25 -0
  298. package/dist/fhe-vesting/react/useGrantRole.d.ts +15 -0
  299. package/dist/fhe-vesting/react/useHasRole.d.ts +14 -0
  300. package/dist/fhe-vesting/react/useInitiateVestingTransfer.d.ts +12 -0
  301. package/dist/fhe-vesting/react/useIsRecipient.d.ts +10 -0
  302. package/dist/fhe-vesting/react/useManagerBatchDiscloseHandlesToParty.d.ts +15 -0
  303. package/dist/fhe-vesting/react/useManagerDeploymentBlockNumber.d.ts +7 -0
  304. package/dist/fhe-vesting/react/useManagerDiscloseHandleToParty.d.ts +16 -0
  305. package/dist/fhe-vesting/react/useManagerFactoryCustomFee.d.ts +17 -0
  306. package/dist/fhe-vesting/react/useManagerFactoryDefaultGasFee.d.ts +10 -0
  307. package/dist/fhe-vesting/react/useManagerFactoryDisableCustomFee.d.ts +15 -0
  308. package/dist/fhe-vesting/react/useManagerFactoryFeeCollector.d.ts +10 -0
  309. package/dist/fhe-vesting/react/useManagerFactoryInitCodeHash.d.ts +18 -0
  310. package/dist/fhe-vesting/react/useManagerFactorySetCustomFee.d.ts +19 -0
  311. package/dist/fhe-vesting/react/useManagerFactorySetDefaultGasFee.d.ts +13 -0
  312. package/dist/fhe-vesting/react/useManagerFactorySetFeeCollector.d.ts +14 -0
  313. package/dist/fhe-vesting/react/useManagerFee.d.ts +7 -0
  314. package/dist/fhe-vesting/react/useManagerFeeInfo.d.ts +18 -0
  315. package/dist/fhe-vesting/react/useManagerFeeType.d.ts +7 -0
  316. package/dist/fhe-vesting/react/useManagerGrantRole.d.ts +17 -0
  317. package/dist/fhe-vesting/react/useManagerHasRole.d.ts +15 -0
  318. package/dist/fhe-vesting/react/useManagerIsPausable.d.ts +6 -0
  319. package/dist/fhe-vesting/react/useManagerIsSplitEnabled.d.ts +6 -0
  320. package/dist/fhe-vesting/react/useManagerMaxBatchSize.d.ts +6 -0
  321. package/dist/fhe-vesting/react/useManagerMaxRevokeBatchSize.d.ts +6 -0
  322. package/dist/fhe-vesting/react/useManagerPause.d.ts +13 -0
  323. package/dist/fhe-vesting/react/useManagerPaused.d.ts +6 -0
  324. package/dist/fhe-vesting/react/useManagerRevokeRole.d.ts +17 -0
  325. package/dist/fhe-vesting/react/useManagerToken.d.ts +11 -0
  326. package/dist/fhe-vesting/react/useManagerUnpause.d.ts +12 -0
  327. package/dist/fhe-vesting/react/useManagerWithdrawGasFee.d.ts +14 -0
  328. package/dist/fhe-vesting/react/useManagerWithdrawOtherConfidentialToken.d.ts +14 -0
  329. package/dist/fhe-vesting/react/useManagerWithdrawOtherToken.d.ts +14 -0
  330. package/dist/fhe-vesting/react/useManagerWithdrawTokenFee.d.ts +11 -0
  331. package/dist/fhe-vesting/react/usePartialClaim.d.ts +15 -0
  332. package/dist/fhe-vesting/react/usePause.d.ts +12 -0
  333. package/dist/fhe-vesting/react/usePendingVestingTransfer.d.ts +20 -0
  334. package/dist/fhe-vesting/react/useRecipientVestings.d.ts +11 -0
  335. package/dist/fhe-vesting/react/useRecipientVestingsLength.d.ts +10 -0
  336. package/dist/fhe-vesting/react/useRecipientVestingsSliced.d.ts +12 -0
  337. package/dist/fhe-vesting/react/useRenounceRole.d.ts +16 -0
  338. package/dist/fhe-vesting/react/useResetGasFee.d.ts +10 -0
  339. package/dist/fhe-vesting/react/useResetTokenFee.d.ts +10 -0
  340. package/dist/fhe-vesting/react/useRevokeRole.d.ts +15 -0
  341. package/dist/fhe-vesting/react/useRevokeVesting.d.ts +15 -0
  342. package/dist/fhe-vesting/react/useRoleConstants.d.ts +19 -0
  343. package/dist/fhe-vesting/react/useSetCustomFee.d.ts +18 -0
  344. package/dist/fhe-vesting/react/useSetDefaultFeeType.d.ts +14 -0
  345. package/dist/fhe-vesting/react/useSetDefaultGasFee.d.ts +12 -0
  346. package/dist/fhe-vesting/react/useSetDefaultTokenFee.d.ts +13 -0
  347. package/dist/fhe-vesting/react/useSetFeeCollector.d.ts +13 -0
  348. package/dist/fhe-vesting/react/useSetMaxBatchSize.d.ts +12 -0
  349. package/dist/fhe-vesting/react/useSetMaxRevokeBatchSize.d.ts +12 -0
  350. package/dist/fhe-vesting/react/useSplitVesting.d.ts +28 -0
  351. package/dist/fhe-vesting/react/useTransferFeeCollectorRole.d.ts +12 -0
  352. package/dist/fhe-vesting/react/useUnpause.d.ts +11 -0
  353. package/dist/fhe-vesting/react/useVestingClaim.d.ts +19 -0
  354. package/dist/fhe-vesting/react/useVestingInfo.d.ts +25 -0
  355. package/dist/fhe-vesting/react/useWithdrawAdmin.d.ts +17 -0
  356. package/dist/fhe-vesting/react/useWithdrawGasFee.d.ts +13 -0
  357. package/dist/fhe-vesting/react/useWithdrawOtherConfidentialToken.d.ts +13 -0
  358. package/dist/fhe-vesting/react/useWithdrawOtherToken.d.ts +13 -0
  359. package/dist/fhe-vesting/react/useWithdrawTokenFee.d.ts +18 -0
  360. package/dist/fhe-vesting/types.d.ts +72 -0
  361. package/dist/index.cjs +237 -0
  362. package/dist/index.d.cts +3 -0
  363. package/dist/index.d.ts +3 -0
  364. package/dist/index.js +14 -0
  365. package/dist/telemetry/console.d.ts +29 -0
  366. package/dist/telemetry/index.cjs +113 -0
  367. package/dist/telemetry/index.d.cts +3 -0
  368. package/dist/telemetry/index.d.ts +3 -0
  369. package/dist/telemetry/index.js +102 -0
  370. package/dist/telemetry/tokenops.d.ts +15 -0
  371. package/package.json +316 -0
@@ -0,0 +1,329 @@
1
+ 'use strict';
2
+
3
+ var chunk56UI7LUR_cjs = require('./chunk-56UI7LUR.cjs');
4
+ var viem = require('viem');
5
+
6
+ // src/core/version.ts
7
+ var SDK_VERSION = "1.0.0";
8
+ function mapContractRevert(error, args) {
9
+ if (error instanceof chunk56UI7LUR_cjs.TokenOpsSdkError) return error;
10
+ const ctx = {
11
+ method: args.method,
12
+ contractAddress: args.contractAddress,
13
+ productContext: args.productContext
14
+ };
15
+ const reverted = findRevertedError(error);
16
+ if (!reverted) {
17
+ return classifyNonRevert(error, args);
18
+ }
19
+ let revertName = reverted.data?.errorName;
20
+ let revertArgs = reverted.data?.args;
21
+ let revertSelector;
22
+ const rawRevertData = reverted.raw;
23
+ const revertReason = reverted.reason;
24
+ if (revertName === void 0 && rawRevertData !== void 0 && rawRevertData.length >= 10) {
25
+ revertSelector = rawRevertData.slice(0, 10);
26
+ try {
27
+ const decoded = viem.decodeErrorResult({ abi: args.abi, data: rawRevertData });
28
+ revertName = decoded.errorName;
29
+ revertArgs = decoded.args;
30
+ } catch {
31
+ }
32
+ } else if (revertSelector === void 0 && rawRevertData !== void 0) {
33
+ revertSelector = rawRevertData.slice(0, 10);
34
+ }
35
+ if (revertName !== void 0) {
36
+ const fromProduct = args.productMapper?.(revertName, revertArgs, ctx);
37
+ if (fromProduct) return attachCause(fromProduct, error);
38
+ const fromDefault = defaultRevertNameMapper(revertName, revertArgs, ctx, args.account);
39
+ if (fromDefault) return attachCause(fromDefault, error);
40
+ }
41
+ return new chunk56UI7LUR_cjs.ContractRevertError({
42
+ method: args.method,
43
+ contractAddress: args.contractAddress,
44
+ revertName,
45
+ revertSelector,
46
+ revertArgs,
47
+ revertReason,
48
+ rawRevertData,
49
+ cause: error
50
+ });
51
+ }
52
+ function attachCause(err, cause) {
53
+ if (err.cause === void 0) {
54
+ Object.defineProperty(err, "cause", {
55
+ value: cause,
56
+ writable: true,
57
+ configurable: true,
58
+ enumerable: false
59
+ });
60
+ }
61
+ return err;
62
+ }
63
+ function defaultRevertNameMapper(name, errArgs, ctx, account) {
64
+ switch (name) {
65
+ // OpenZeppelin / cross-product structural errors.
66
+ case "EnforcedPause":
67
+ case "PausableUpgradeable__Paused":
68
+ case "ClaimsPaused":
69
+ return new chunk56UI7LUR_cjs.PausedError(ctx);
70
+ case "AccessControlUnauthorizedAccount": {
71
+ const acct = errArgs?.[0] ?? account;
72
+ const role = errArgs?.[1];
73
+ return new chunk56UI7LUR_cjs.AccessDeniedError({ ...ctx, account: acct, role });
74
+ }
75
+ case "AccessControlBadConfirmation":
76
+ return new chunk56UI7LUR_cjs.InvalidArgumentError({
77
+ method: ctx.method,
78
+ argument: "callerConfirmation",
79
+ reason: "must equal msg.sender for renounceRole"
80
+ });
81
+ case "InvalidInitialization":
82
+ case "Initializable_InvalidInitialization":
83
+ return new chunk56UI7LUR_cjs.AlreadyInitializedError(ctx);
84
+ case "ReentrancyGuardReentrantCall":
85
+ case "ReentrancyGuardTransient":
86
+ return new chunk56UI7LUR_cjs.ReentrancyError(ctx);
87
+ // Cross-product custom errors with stable, unambiguous meaning.
88
+ case "InsufficientFee":
89
+ case "InsufficientGasFee":
90
+ return new chunk56UI7LUR_cjs.InsufficientFeeError({ ...ctx, feeKind: "gas" });
91
+ case "InsufficientAmount": {
92
+ const provided = errArgs?.[0];
93
+ const required = errArgs?.[1];
94
+ return new chunk56UI7LUR_cjs.InsufficientFeeError({ ...ctx, feeKind: "gas", required, provided });
95
+ }
96
+ case "ZeroBalance":
97
+ case "InsufficientBalance":
98
+ return new chunk56UI7LUR_cjs.InsufficientBalanceError({ ...ctx, balanceKind: "eth" });
99
+ case "BatchTooLarge": {
100
+ const requested = Number(errArgs?.[0] ?? 0);
101
+ const max = errArgs?.[1] ?? 0n;
102
+ return new chunk56UI7LUR_cjs.BatchTooLargeError({ ...ctx, requested, max });
103
+ }
104
+ case "SplitDisabled":
105
+ return new chunk56UI7LUR_cjs.FeatureDisabledError({ ...ctx, feature: "split" });
106
+ case "PausableDisabled":
107
+ return new chunk56UI7LUR_cjs.FeatureDisabledError({ ...ctx, feature: "pause" });
108
+ case "ExtensionNotAllowed":
109
+ return new chunk56UI7LUR_cjs.FeatureDisabledError({ ...ctx, feature: "extendClaimWindow" });
110
+ case "TransferFailed":
111
+ return new chunk56UI7LUR_cjs.TransferFailedError({ ...ctx, asset: "eth" });
112
+ case "HandleNotAllowed":
113
+ return new chunk56UI7LUR_cjs.FheHandleNotAllowedError({ ...ctx, account });
114
+ case "SenderNotAllowedToUseHandle": {
115
+ const handle = errArgs?.[0];
116
+ const sender = errArgs?.[1] ?? account;
117
+ return new chunk56UI7LUR_cjs.FheHandleNotAllowedError({ ...ctx, handle, account: sender });
118
+ }
119
+ case "SenderNotAllowed": {
120
+ const sender = errArgs?.[0] ?? account;
121
+ return new chunk56UI7LUR_cjs.FheHandleNotAllowedError({ ...ctx, account: sender });
122
+ }
123
+ case "InvalidSignature":
124
+ return new chunk56UI7LUR_cjs.InvalidSignatureError(ctx);
125
+ // Range / arg-validation reverts the SDK should already have caught in
126
+ // preflight or input validation. If they slip through, surface them as
127
+ // structural `InvalidArgumentError` so consumers see `TOKENOPS_INVALID_ARGUMENT`
128
+ // rather than a generic contract-revert message.
129
+ case "InvalidAddress":
130
+ case "InvalidAdmin":
131
+ case "InvalidFeeCollector":
132
+ case "InvalidRecipient":
133
+ case "InvalidToken":
134
+ case "InvalidParty":
135
+ case "InvalidStartTime":
136
+ case "EndTimeInPast":
137
+ case "InvalidDuration":
138
+ case "InvalidTimestamps":
139
+ case "InvalidBps":
140
+ case "InvalidFeeBps":
141
+ case "TokenFeeTooHigh":
142
+ case "CliffExceedsDuration":
143
+ case "TimelockOverflow":
144
+ case "InvalidTransferDuration":
145
+ case "InvalidSplitDenominator":
146
+ case "InvalidMaxBatchSize":
147
+ case "InvalidWalletIndex":
148
+ case "CannotTransferToSelf":
149
+ case "CannotTransferToZero":
150
+ case "SameToken":
151
+ case "UnexpectedETH":
152
+ case "EmptyBatch":
153
+ case "EmptyRecipients":
154
+ case "ZeroAddressRecipient":
155
+ case "ArrayLengthMismatch":
156
+ case "VestingIdsNotStrictlyAsc":
157
+ case "CustomFeeNotSet":
158
+ return new chunk56UI7LUR_cjs.InvalidArgumentError({
159
+ method: ctx.method,
160
+ argument: invalidArgumentLabelFor(name),
161
+ reason: `the contract reverted with \`${name}\`. If you did not pass an invalid value, this may be an SDK bug \u2014 please file an issue.`
162
+ });
163
+ default:
164
+ return void 0;
165
+ }
166
+ }
167
+ function invalidArgumentLabelFor(revertName) {
168
+ switch (revertName) {
169
+ case "InvalidAddress":
170
+ return "address";
171
+ case "InvalidAdmin":
172
+ return "admin";
173
+ case "InvalidFeeCollector":
174
+ return "feeCollector";
175
+ case "InvalidRecipient":
176
+ case "ZeroAddressRecipient":
177
+ return "recipient";
178
+ case "InvalidToken":
179
+ case "SameToken":
180
+ return "token";
181
+ case "InvalidParty":
182
+ return "party";
183
+ case "InvalidStartTime":
184
+ return "startTime";
185
+ case "EndTimeInPast":
186
+ return "endTime";
187
+ case "InvalidDuration":
188
+ case "InvalidTransferDuration":
189
+ return "duration";
190
+ case "InvalidTimestamps":
191
+ return "timestamps";
192
+ case "InvalidBps":
193
+ case "InvalidFeeBps":
194
+ case "TokenFeeTooHigh":
195
+ return "feeBps";
196
+ case "CliffExceedsDuration":
197
+ return "cliff";
198
+ case "TimelockOverflow":
199
+ return "timelock";
200
+ case "InvalidSplitDenominator":
201
+ return "splitDenominator";
202
+ case "InvalidMaxBatchSize":
203
+ return "maxBatchSize";
204
+ case "InvalidWalletIndex":
205
+ return "walletIndex";
206
+ case "CannotTransferToSelf":
207
+ case "CannotTransferToZero":
208
+ return "to";
209
+ case "UnexpectedETH":
210
+ return "msg.value";
211
+ case "EmptyBatch":
212
+ case "EmptyRecipients":
213
+ return "recipients";
214
+ case "ArrayLengthMismatch":
215
+ return "arguments";
216
+ case "VestingIdsNotStrictlyAsc":
217
+ return "vestingIds";
218
+ case "CustomFeeNotSet":
219
+ return "user";
220
+ default:
221
+ return "input";
222
+ }
223
+ }
224
+ function isContractRevert(error) {
225
+ if (!(error instanceof viem.BaseError)) return false;
226
+ const frame = error.walk((e) => e instanceof viem.ContractFunctionRevertedError);
227
+ return frame instanceof viem.ContractFunctionRevertedError;
228
+ }
229
+ function classifyNonRevert(error, args) {
230
+ if (!(error instanceof viem.BaseError)) {
231
+ return new chunk56UI7LUR_cjs.UnknownWriteFailureError({
232
+ method: args.method,
233
+ contractAddress: args.contractAddress,
234
+ cause: error
235
+ });
236
+ }
237
+ const walk = (predicate) => {
238
+ const frame = error.walk((f) => predicate(f));
239
+ return predicate(frame) ? frame : void 0;
240
+ };
241
+ if (walk((e) => e instanceof viem.UserRejectedRequestError) || walk((e) => e instanceof viem.TransactionRejectedRpcError)) {
242
+ return new chunk56UI7LUR_cjs.WalletRejectedError({
243
+ method: args.method,
244
+ contractAddress: args.contractAddress,
245
+ cause: error
246
+ });
247
+ }
248
+ if (walk((e) => e instanceof viem.ChainMismatchError)) {
249
+ return new chunk56UI7LUR_cjs.WalletChainMismatchError({
250
+ method: args.method,
251
+ contractAddress: args.contractAddress,
252
+ cause: error
253
+ });
254
+ }
255
+ if (walk((e) => e instanceof viem.InsufficientFundsError)) {
256
+ return new chunk56UI7LUR_cjs.InsufficientGasFundsError({
257
+ method: args.method,
258
+ contractAddress: args.contractAddress,
259
+ cause: error
260
+ });
261
+ }
262
+ const httpFrame = walk((e) => e instanceof viem.HttpRequestError);
263
+ if (httpFrame) {
264
+ return new chunk56UI7LUR_cjs.NetworkError({
265
+ method: args.method,
266
+ contractAddress: args.contractAddress,
267
+ statusCode: httpFrame.status,
268
+ cause: error
269
+ });
270
+ }
271
+ if (walk((e) => e instanceof viem.TimeoutError)) {
272
+ return new chunk56UI7LUR_cjs.NetworkError({
273
+ method: args.method,
274
+ contractAddress: args.contractAddress,
275
+ cause: error
276
+ });
277
+ }
278
+ return new chunk56UI7LUR_cjs.UnknownWriteFailureError({
279
+ method: args.method,
280
+ contractAddress: args.contractAddress,
281
+ cause: error
282
+ });
283
+ }
284
+ function findRevertedError(err) {
285
+ if (!(err instanceof viem.BaseError)) {
286
+ if (err instanceof Error) {
287
+ const hex = coerceRevertHex(err.data);
288
+ if (hex) return { raw: hex };
289
+ }
290
+ return void 0;
291
+ }
292
+ const frame = err.walk((f) => f instanceof viem.ContractFunctionRevertedError);
293
+ if (frame instanceof viem.ContractFunctionRevertedError) {
294
+ const data = frame.data ? {
295
+ errorName: frame.data.errorName,
296
+ args: frame.data.args
297
+ } : void 0;
298
+ return {
299
+ data,
300
+ raw: frame.raw,
301
+ reason: frame.reason
302
+ };
303
+ }
304
+ let cursor = err;
305
+ const seen = /* @__PURE__ */ new Set();
306
+ while (cursor && !seen.has(cursor)) {
307
+ seen.add(cursor);
308
+ const hex = coerceRevertHex(cursor.data);
309
+ if (hex) return { raw: hex };
310
+ cursor = cursor.cause;
311
+ }
312
+ return void 0;
313
+ }
314
+ function coerceRevertHex(value) {
315
+ if (typeof value === "string" && value.startsWith("0x") && value.length >= 10) {
316
+ return value;
317
+ }
318
+ if (value !== null && typeof value === "object" && "data" in value) {
319
+ const nested = value.data;
320
+ if (typeof nested === "string" && nested.startsWith("0x") && nested.length >= 10) {
321
+ return nested;
322
+ }
323
+ }
324
+ return void 0;
325
+ }
326
+
327
+ exports.SDK_VERSION = SDK_VERSION;
328
+ exports.isContractRevert = isContractRevert;
329
+ exports.mapContractRevert = mapContractRevert;
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ // src/core/telemetry.ts
4
+ var NoopTelemetry = class {
5
+ event() {
6
+ }
7
+ async span(_name, fn) {
8
+ return fn();
9
+ }
10
+ error() {
11
+ }
12
+ /**
13
+ * No-op telemetry has no state to carry — returning `this` is correct and
14
+ * avoids a per-request allocation. Consumers that swap to a real adapter
15
+ * will get a fresh child instance per call.
16
+ */
17
+ scope(_tags) {
18
+ return this;
19
+ }
20
+ };
21
+ async function withTelemetry(telemetry, name, fn) {
22
+ const t = telemetry ?? new NoopTelemetry();
23
+ try {
24
+ return await t.span(name, fn);
25
+ } catch (err) {
26
+ t.error(err instanceof Error ? err : new Error(String(err)), { span: name });
27
+ throw err;
28
+ }
29
+ }
30
+
31
+ exports.NoopTelemetry = NoopTelemetry;
32
+ exports.withTelemetry = withTelemetry;
@@ -0,0 +1,96 @@
1
+ import { normaliseAddress } from './chunk-BE2AIZ3K.js';
2
+ import { withTelemetry } from './chunk-Q2GP5UDC.js';
3
+ import { TokenOpsContractError } from './chunk-IVE3QEGD.js';
4
+
5
+ // src/fhe/operators.ts
6
+ var ERC7984_SET_OPERATOR_ABI = [
7
+ {
8
+ type: "function",
9
+ name: "setOperator",
10
+ stateMutability: "nonpayable",
11
+ inputs: [
12
+ { name: "operator", type: "address" },
13
+ { name: "until", type: "uint48" }
14
+ ],
15
+ outputs: []
16
+ }
17
+ ];
18
+ var ERC7984_OPERATOR_MAX_DEADLINE = (1n << 48n) - 1n;
19
+ async function setOperator(args) {
20
+ const { publicClient, walletClient, account, waitForReceipt = true, telemetry } = args;
21
+ const token = normaliseAddress(args.token);
22
+ const spender = normaliseAddress(args.spender);
23
+ const deadline = args.deadline ?? ERC7984_OPERATOR_MAX_DEADLINE;
24
+ return withTelemetry(telemetry, "fhe.setOperator", async () => {
25
+ const fromAccount = account ?? walletClient.account;
26
+ if (!fromAccount) {
27
+ throw new TokenOpsContractError(
28
+ "setOperator: no account available \u2014 pass `account` explicitly or attach an account to the walletClient",
29
+ { contract: "ERC7984", call: "setOperator" }
30
+ );
31
+ }
32
+ if (deadline < 0n || deadline > ERC7984_OPERATOR_MAX_DEADLINE) {
33
+ throw new TokenOpsContractError(
34
+ `setOperator: deadline ${deadline} out of uint48 range [0, ${ERC7984_OPERATOR_MAX_DEADLINE}]`,
35
+ { contract: "ERC7984", call: "setOperator", deadline: deadline.toString() }
36
+ );
37
+ }
38
+ const deadlineNum = Number(deadline);
39
+ let hash;
40
+ try {
41
+ hash = await walletClient.writeContract({
42
+ address: token,
43
+ abi: ERC7984_SET_OPERATOR_ABI,
44
+ functionName: "setOperator",
45
+ args: [spender, deadlineNum],
46
+ account: fromAccount,
47
+ // viem requires `chain` to be passed explicitly when the wallet has
48
+ // no default chain (e.g. some consumer-side constructions). Forward
49
+ // whatever the wallet is bound to; viem accepts undefined and falls
50
+ // back to the wallet's chain when present.
51
+ chain: walletClient.chain
52
+ });
53
+ } catch (err) {
54
+ throw new TokenOpsContractError(
55
+ `setOperator: writeContract failed (token=${token}, spender=${spender})`,
56
+ {
57
+ contract: "ERC7984",
58
+ call: "setOperator",
59
+ token,
60
+ spender,
61
+ cause: err
62
+ }
63
+ );
64
+ }
65
+ if (waitForReceipt) {
66
+ try {
67
+ await publicClient.waitForTransactionReceipt({ hash });
68
+ } catch (err) {
69
+ throw new TokenOpsContractError(`setOperator: receipt wait failed (tx=${hash})`, {
70
+ contract: "ERC7984",
71
+ call: "setOperator",
72
+ tx: hash,
73
+ cause: err
74
+ });
75
+ }
76
+ }
77
+ return hash;
78
+ });
79
+ }
80
+ async function revokeOperator(args) {
81
+ return withTelemetry(args.telemetry, "fhe.revokeOperator", async () => {
82
+ return setOperator({
83
+ publicClient: args.publicClient,
84
+ walletClient: args.walletClient,
85
+ ...args.account !== void 0 ? { account: args.account } : {},
86
+ token: args.token,
87
+ spender: args.spender,
88
+ deadline: 0n,
89
+ ...args.waitForReceipt !== void 0 ? { waitForReceipt: args.waitForReceipt } : {}
90
+ // Do NOT forward `telemetry` — the inner `fhe.setOperator` span would
91
+ // double-emit. The outer `fhe.revokeOperator` span carries the call.
92
+ });
93
+ });
94
+ }
95
+
96
+ export { ERC7984_OPERATOR_MAX_DEADLINE, ERC7984_SET_OPERATOR_ABI, revokeOperator, setOperator };
@@ -0,0 +1,135 @@
1
+ import { InvalidArgumentError } from './chunk-IVE3QEGD.js';
2
+
3
+ // src/fhe/scale-ratio.ts
4
+ var FHE_SPLIT_DENOMINATOR = 90090000n;
5
+ var MAX_UINT64 = (1n << 64n) - 1n;
6
+ var MAX_UINT128 = (1n << 128n) - 1n;
7
+ var MAX_FRACTION_DENOMINATOR = 16n;
8
+ var BASIS_POINT_SCALE = 10000n;
9
+ function scaleRatio({
10
+ numerator,
11
+ denominator,
12
+ minDenominator = FHE_SPLIT_DENOMINATOR,
13
+ width = "uint128"
14
+ }) {
15
+ if (denominator <= 0n) {
16
+ throw new InvalidArgumentError({
17
+ method: "scaleRatio",
18
+ argument: "denominator",
19
+ reason: `must be > 0, got ${denominator}`,
20
+ value: denominator
21
+ });
22
+ }
23
+ if (numerator < 0n) {
24
+ throw new InvalidArgumentError({
25
+ method: "scaleRatio",
26
+ argument: "numerator",
27
+ reason: `must be >= 0, got ${numerator}`,
28
+ value: numerator
29
+ });
30
+ }
31
+ if (minDenominator <= 0n) {
32
+ throw new InvalidArgumentError({
33
+ method: "scaleRatio",
34
+ argument: "minDenominator",
35
+ reason: `must be > 0, got ${minDenominator}`,
36
+ value: minDenominator
37
+ });
38
+ }
39
+ if (denominator >= minDenominator) {
40
+ assertWithinWidth(numerator, width, "numerator");
41
+ assertWithinWidth(denominator, width, "denominator");
42
+ return { numerator, denominator };
43
+ }
44
+ const scaledNumerator = (numerator * minDenominator + denominator - 1n) / denominator;
45
+ assertWithinWidth(scaledNumerator, width, "scaled numerator");
46
+ assertWithinWidth(minDenominator, width, "scaled denominator");
47
+ return { numerator: scaledNumerator, denominator: minDenominator };
48
+ }
49
+ function assertWithinWidth(value, width, label) {
50
+ const max = width === "uint64" ? MAX_UINT64 : MAX_UINT128;
51
+ if (value > max) {
52
+ throw new InvalidArgumentError({
53
+ method: "scaleRatio",
54
+ argument: label,
55
+ reason: `exceeds ${width} range`,
56
+ value
57
+ });
58
+ }
59
+ }
60
+ var share = {
61
+ /**
62
+ * Build a `ScaledRatio` from a simple fraction `n/m`.
63
+ *
64
+ * - `m` must be in `1..16` — every integer in this range divides
65
+ * {@link FHE_SPLIT_DENOMINATOR} cleanly, so the result is exact.
66
+ * - `n` must be in `0..m` — `0` is a zero-share (no-op split) and `m`
67
+ * itself is the whole position.
68
+ *
69
+ * Both arguments accept `number` (must be an integer) or `bigint` —
70
+ * use whichever is convenient at the call site.
71
+ *
72
+ * @throws InvalidArgumentError if `m` is outside `1..16` or `n` is
73
+ * outside `0..m`, or either input is a non-integer `number`.
74
+ */
75
+ fraction(numerator, denominator) {
76
+ const n = toIntegerBigInt(numerator, "share.fraction", "numerator");
77
+ const m = toIntegerBigInt(denominator, "share.fraction", "denominator");
78
+ if (m <= 0n || m > MAX_FRACTION_DENOMINATOR) {
79
+ throw new InvalidArgumentError({
80
+ method: "share.fraction",
81
+ argument: "denominator",
82
+ reason: `must be in 1..${MAX_FRACTION_DENOMINATOR}, got ${m}`,
83
+ value: m
84
+ });
85
+ }
86
+ if (n < 0n || n > m) {
87
+ throw new InvalidArgumentError({
88
+ method: "share.fraction",
89
+ argument: "numerator",
90
+ reason: `must be in 0..${m} (denominator), got ${n}`,
91
+ value: n
92
+ });
93
+ }
94
+ return scaleRatio({ numerator: n, denominator: m, width: "uint64" });
95
+ },
96
+ /**
97
+ * Build a `ScaledRatio` from a basis-point amount.
98
+ *
99
+ * `bps` must be in `0..10_000` — `0` is a zero-share and `10_000` is
100
+ * the whole position (= 100%). `10_000` divides
101
+ * {@link FHE_SPLIT_DENOMINATOR} cleanly, so the result is exact:
102
+ * `bps × 9_009` over `90_090_000`.
103
+ *
104
+ * Accepts `number` (must be an integer) or `bigint`.
105
+ *
106
+ * @throws InvalidArgumentError if `bps` is outside `0..10_000`, or is
107
+ * a non-integer `number`.
108
+ */
109
+ basisPoints(bps) {
110
+ const value = toIntegerBigInt(bps, "share.basisPoints", "bps");
111
+ if (value < 0n || value > BASIS_POINT_SCALE) {
112
+ throw new InvalidArgumentError({
113
+ method: "share.basisPoints",
114
+ argument: "bps",
115
+ reason: `must be in 0..${BASIS_POINT_SCALE}, got ${value}`,
116
+ value
117
+ });
118
+ }
119
+ return scaleRatio({ numerator: value, denominator: BASIS_POINT_SCALE, width: "uint64" });
120
+ }
121
+ };
122
+ function toIntegerBigInt(value, method, argument) {
123
+ if (typeof value === "bigint") return value;
124
+ if (!Number.isInteger(value)) {
125
+ throw new InvalidArgumentError({
126
+ method,
127
+ argument,
128
+ reason: `must be an integer, got ${value}`,
129
+ value
130
+ });
131
+ }
132
+ return BigInt(value);
133
+ }
134
+
135
+ export { FHE_SPLIT_DENOMINATOR, scaleRatio, share };