@tokenops/sdk 1.6.0 → 2.0.0-alpha.2

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 (263) hide show
  1. package/CHANGELOG.md +77 -8
  2. package/CONTRIBUTING.md +4 -2
  3. package/README.md +146 -90
  4. package/SUPPORT.md +47 -0
  5. package/dist/{chunk-BD4LZBVF.cjs → chunk-3QHNYEQD.cjs} +18 -17
  6. package/dist/{chunk-YFIWCYHC.cjs → chunk-3YHBO2DL.cjs} +56 -54
  7. package/dist/{chunk-QET3Q4JP.js → chunk-44YJPMQC.js} +8 -6
  8. package/dist/{chunk-6WSNS3UV.js → chunk-4RAAATVY.js} +2 -4
  9. package/dist/{chunk-4KJ66YRH.js → chunk-4TSDNZQ3.js} +2 -2
  10. package/dist/chunk-66IHPTOK.cjs +20 -0
  11. package/dist/{chunk-2RNW4MIJ.cjs → chunk-67OV5CX2.cjs} +0 -18
  12. package/dist/{chunk-PD7ME2BT.js → chunk-6GNR22OV.js} +2 -1
  13. package/dist/{chunk-WOEETTH7.cjs → chunk-7AFPOE7N.cjs} +6 -6
  14. package/dist/{chunk-QKKBBH7I.js → chunk-A4DCEE33.js} +34 -7
  15. package/dist/chunk-AREQJHKA.cjs +713 -0
  16. package/dist/{chunk-U57COLUE.js → chunk-AXIPOR3C.js} +2 -2
  17. package/dist/chunk-EBLBPUPI.cjs +255 -0
  18. package/dist/chunk-EYDA6Q6C.js +245 -0
  19. package/dist/{chunk-SYHNZSZZ.cjs → chunk-FAXIIH5R.cjs} +3 -3
  20. package/dist/{chunk-AYGRYDBX.cjs → chunk-FEDX7B6T.cjs} +37 -35
  21. package/dist/{chunk-CBRL2PJA.cjs → chunk-FHWSBGWE.cjs} +12 -12
  22. package/dist/{chunk-WUXUWTFW.cjs → chunk-FT5H2Q7Y.cjs} +37 -7
  23. package/dist/chunk-GADGBQJO.js +423 -0
  24. package/dist/{chunk-VHSNYUYV.js → chunk-IGO5XSPS.js} +5 -5
  25. package/dist/chunk-IUKKNJ2R.cjs +433 -0
  26. package/dist/{chunk-VR3FREBX.cjs → chunk-JK4XMMKM.cjs} +3 -3
  27. package/dist/{chunk-4ZCXK4VI.cjs → chunk-KFRDLKMA.cjs} +14 -14
  28. package/dist/chunk-KWFFIJYX.js +11 -0
  29. package/dist/{chunk-7G7UOQV4.cjs → chunk-MM5BV5CS.cjs} +4 -4
  30. package/dist/{chunk-43RFBQ73.cjs → chunk-MVDQMV25.cjs} +29 -32
  31. package/dist/chunk-NWFMBLSQ.js +4 -0
  32. package/dist/{chunk-HETNKZEE.js → chunk-PYYSB5ZN.js} +1 -1
  33. package/dist/chunk-PZZK3O3S.cjs +9843 -0
  34. package/dist/{chunk-DRSPMIZ7.js → chunk-QBJ7O2B4.js} +1 -11
  35. package/dist/{chunk-WTK6JDSI.js → chunk-SPLNGUFF.js} +6 -4
  36. package/dist/{chunk-UJS4N2XM.cjs → chunk-TEBM66WA.cjs} +12 -12
  37. package/dist/{chunk-TN65XNTI.js → chunk-TWT3STIX.js} +8 -6
  38. package/dist/chunk-UG5RKLU2.cjs +6 -0
  39. package/dist/{chunk-EUKPOXWR.cjs → chunk-UHHMVBLU.cjs} +17 -15
  40. package/dist/chunk-VW356KR3.js +688 -0
  41. package/dist/{chunk-BK7YIVLK.cjs → chunk-WJLECC22.cjs} +75 -73
  42. package/dist/{chunk-V5D7BHW3.js → chunk-WJMEBBU7.js} +6 -4
  43. package/dist/{chunk-NFW7AUEX.js → chunk-WMACINXO.js} +1 -1
  44. package/dist/chunk-X7WBPCEU.js +9817 -0
  45. package/dist/{chunk-46T67CE2.js → chunk-ZA673I3O.js} +1 -1
  46. package/dist/{chunk-YPYCWLYP.js → chunk-ZWXJTBZO.js} +1 -1
  47. package/dist/core/addresses.d.ts +14 -2
  48. package/dist/core/brands.d.ts +8 -2
  49. package/dist/core/errors.d.ts +71 -10
  50. package/dist/core/preflight.d.ts +1 -0
  51. package/dist/fhe/erc7984-abi.d.ts +1 -0
  52. package/dist/fhe/index.cjs +64 -63
  53. package/dist/fhe/index.js +7 -6
  54. package/dist/fhe/operators.d.ts +22 -5
  55. package/dist/fhe/react/index.cjs +13 -12
  56. package/dist/fhe/react/index.js +6 -5
  57. package/dist/fhe/types.d.ts +8 -2
  58. package/dist/fhe-airdrop/abis/{cloneable.d.ts → airdrop-base.d.ts} +254 -396
  59. package/dist/fhe-airdrop/abis/compliance.d.ts +422 -0
  60. package/dist/fhe-airdrop/abis/ecdsa.d.ts +1316 -0
  61. package/dist/fhe-airdrop/abis/factory.d.ts +1319 -190
  62. package/dist/fhe-airdrop/abis/index.d.ts +5 -2
  63. package/dist/fhe-airdrop/abis/merkle.d.ts +1250 -0
  64. package/dist/fhe-airdrop/advanced/index.cjs +11 -12
  65. package/dist/fhe-airdrop/advanced/index.d.cts +34 -11
  66. package/dist/fhe-airdrop/advanced/index.d.ts +34 -11
  67. package/dist/fhe-airdrop/advanced/index.js +3 -8
  68. package/dist/fhe-airdrop/advanced/react/index.cjs +619 -51
  69. package/dist/fhe-airdrop/advanced/react/index.d.cts +43 -3
  70. package/dist/fhe-airdrop/advanced/react/index.d.ts +43 -3
  71. package/dist/fhe-airdrop/advanced/react/index.js +592 -52
  72. package/dist/fhe-airdrop/advanced/react/useClearCompliancePolicy.d.ts +28 -0
  73. package/dist/fhe-airdrop/advanced/react/useClearUpgradeabilityPolicy.d.ts +26 -0
  74. package/dist/fhe-airdrop/advanced/react/useDisableCustomFee.d.ts +25 -0
  75. package/dist/fhe-airdrop/advanced/react/useEcdsaInitCodeHash.d.ts +30 -0
  76. package/dist/fhe-airdrop/advanced/react/useFactoryComplianceDelegate.d.ts +25 -0
  77. package/dist/fhe-airdrop/advanced/react/useFactoryCompliancePolicy.d.ts +38 -0
  78. package/dist/fhe-airdrop/advanced/react/useFactoryCustomFee.d.ts +24 -0
  79. package/dist/fhe-airdrop/advanced/react/useFactoryGrantRole.d.ts +32 -0
  80. package/dist/fhe-airdrop/advanced/react/useFactoryHasRole.d.ts +27 -0
  81. package/dist/fhe-airdrop/advanced/react/useFactoryImplementations.d.ts +33 -0
  82. package/dist/fhe-airdrop/advanced/react/useFactoryRenounceRole.d.ts +36 -0
  83. package/dist/fhe-airdrop/advanced/react/useFactoryRevokeRole.d.ts +35 -0
  84. package/dist/fhe-airdrop/advanced/react/useFactoryRoleConstants.d.ts +46 -0
  85. package/dist/fhe-airdrop/advanced/react/useFactoryRoleMembers.d.ts +47 -0
  86. package/dist/fhe-airdrop/advanced/react/useFactoryUpgradeabilityPolicy.d.ts +39 -0
  87. package/dist/fhe-airdrop/advanced/react/useMerkleInitCodeHash.d.ts +24 -0
  88. package/dist/fhe-airdrop/advanced/react/usePredictEcdsaAirdropAddress.d.ts +33 -0
  89. package/dist/fhe-airdrop/advanced/react/usePredictMerkleAirdropAddress.d.ts +27 -0
  90. package/dist/fhe-airdrop/advanced/react/useSetComplianceDelegate.d.ts +33 -0
  91. package/dist/fhe-airdrop/advanced/react/useSetComplianceManagerImpl.d.ts +27 -0
  92. package/dist/fhe-airdrop/advanced/react/useSetCompliancePolicy.d.ts +28 -0
  93. package/dist/fhe-airdrop/advanced/react/useSetCustomFee.d.ts +28 -0
  94. package/dist/fhe-airdrop/advanced/react/useSetDefaultDelegateToCompliance.d.ts +31 -0
  95. package/dist/fhe-airdrop/advanced/react/useSetDefaultGasFee.d.ts +28 -0
  96. package/dist/fhe-airdrop/advanced/react/useSetDefaultUpgradeable.d.ts +27 -0
  97. package/dist/fhe-airdrop/advanced/react/useSetEcdsaImplementation.d.ts +34 -0
  98. package/dist/fhe-airdrop/advanced/react/useSetFeeCollector.d.ts +27 -0
  99. package/dist/fhe-airdrop/advanced/react/useSetMerkleImplementation.d.ts +30 -0
  100. package/dist/fhe-airdrop/advanced/react/useSetUpgradeabilityPolicy.d.ts +31 -0
  101. package/dist/fhe-airdrop/airdrop-base.d.ts +608 -0
  102. package/dist/fhe-airdrop/campaign.d.ts +338 -0
  103. package/dist/fhe-airdrop/compliance.d.ts +302 -0
  104. package/dist/fhe-airdrop/constants.d.ts +33 -0
  105. package/dist/fhe-airdrop/ecdsa.d.ts +263 -0
  106. package/dist/fhe-airdrop/encryption.d.ts +92 -14
  107. package/dist/fhe-airdrop/errors.d.ts +273 -15
  108. package/dist/fhe-airdrop/factory.d.ts +533 -274
  109. package/dist/fhe-airdrop/guards.d.ts +317 -0
  110. package/dist/fhe-airdrop/index.cjs +233 -73
  111. package/dist/fhe-airdrop/index.d.cts +46 -8
  112. package/dist/fhe-airdrop/index.d.ts +46 -8
  113. package/dist/fhe-airdrop/index.js +11 -7
  114. package/dist/fhe-airdrop/merkle-tree.d.ts +97 -0
  115. package/dist/fhe-airdrop/merkle.d.ts +201 -0
  116. package/dist/fhe-airdrop/react/_shared.d.ts +156 -70
  117. package/dist/fhe-airdrop/react/index.cjs +1174 -384
  118. package/dist/fhe-airdrop/react/index.d.cts +99 -74
  119. package/dist/fhe-airdrop/react/index.d.ts +99 -74
  120. package/dist/fhe-airdrop/react/index.js +993 -303
  121. package/dist/fhe-airdrop/react/keys.d.ts +90 -0
  122. package/dist/fhe-airdrop/react/useAccessEcdsaClaimAmount.d.ts +26 -0
  123. package/dist/fhe-airdrop/react/useAccessMerkleClaimAmount.d.ts +27 -0
  124. package/dist/fhe-airdrop/react/useAddComplianceDelegate.d.ts +37 -0
  125. package/dist/fhe-airdrop/react/useAdminBatchDiscloseBalanceToParties.d.ts +36 -0
  126. package/dist/fhe-airdrop/react/useAdminDiscloseBalanceToParty.d.ts +31 -0
  127. package/dist/fhe-airdrop/react/useAdminGetCurrentBalance.d.ts +27 -0
  128. package/dist/fhe-airdrop/react/useAirdropConfig.d.ts +49 -0
  129. package/dist/fhe-airdrop/react/useAirdropDeploymentMode.d.ts +28 -0
  130. package/dist/fhe-airdrop/react/useAirdropGasFee.d.ts +10 -5
  131. package/dist/fhe-airdrop/react/useAirdropGrantRole.d.ts +29 -10
  132. package/dist/fhe-airdrop/react/useAirdropHasRole.d.ts +15 -6
  133. package/dist/fhe-airdrop/react/useAirdropPause.d.ts +30 -0
  134. package/dist/fhe-airdrop/react/useAirdropPaused.d.ts +17 -0
  135. package/dist/fhe-airdrop/react/useAirdropRenounceRole.d.ts +36 -0
  136. package/dist/fhe-airdrop/react/useAirdropRevokeRole.d.ts +27 -9
  137. package/dist/fhe-airdrop/react/useAirdropRoleAdmin.d.ts +28 -0
  138. package/dist/fhe-airdrop/react/useAirdropRoleConstants.d.ts +67 -0
  139. package/dist/fhe-airdrop/react/useAirdropRoleMembers.d.ts +49 -0
  140. package/dist/fhe-airdrop/react/useAirdropToken.d.ts +11 -4
  141. package/dist/fhe-airdrop/react/useAirdropUpgradeToAndCall.d.ts +45 -0
  142. package/dist/fhe-airdrop/react/useAirdropWindow.d.ts +37 -0
  143. package/dist/fhe-airdrop/react/useBatchDiscloseHandlesToParty.d.ts +32 -0
  144. package/dist/fhe-airdrop/react/useBuildMerkleCampaign.d.ts +68 -0
  145. package/dist/fhe-airdrop/react/useClaimedAmount.d.ts +29 -0
  146. package/dist/fhe-airdrop/react/useComplianceGrantRole.d.ts +32 -0
  147. package/dist/fhe-airdrop/react/useComplianceHasRole.d.ts +37 -0
  148. package/dist/fhe-airdrop/react/useComplianceInfo.d.ts +50 -0
  149. package/dist/fhe-airdrop/react/useComplianceManager.d.ts +16 -0
  150. package/dist/fhe-airdrop/react/useComplianceManagerOf.d.ts +32 -0
  151. package/dist/fhe-airdrop/react/useComplianceRenounceRole.d.ts +38 -0
  152. package/dist/fhe-airdrop/react/useComplianceRevokeRole.d.ts +36 -0
  153. package/dist/fhe-airdrop/react/useComplianceRoleConstants.d.ts +41 -0
  154. package/dist/fhe-airdrop/react/useComplianceRoleMembers.d.ts +45 -0
  155. package/dist/fhe-airdrop/react/useCreateAndFundEcdsaAirdrop.d.ts +55 -0
  156. package/dist/fhe-airdrop/react/useCreateAndFundMerkleAirdrop.d.ts +52 -0
  157. package/dist/fhe-airdrop/react/useCreateEcdsaAirdrop.d.ts +28 -0
  158. package/dist/fhe-airdrop/react/useCreateMerkleAirdrop.d.ts +25 -0
  159. package/dist/fhe-airdrop/react/useDiscloseHandleToParty.d.ts +35 -0
  160. package/dist/fhe-airdrop/react/useEcdsaClaim.d.ts +24 -0
  161. package/dist/fhe-airdrop/react/useEcdsaClaimAndUnwrap.d.ts +27 -0
  162. package/dist/fhe-airdrop/react/useEcdsaDomain.d.ts +41 -0
  163. package/dist/fhe-airdrop/react/useEffectiveDelegateToCompliance.d.ts +26 -0
  164. package/dist/fhe-airdrop/react/useEffectiveUpgradeable.d.ts +20 -0
  165. package/dist/fhe-airdrop/react/useEncryptCampaignAmounts.d.ts +59 -0
  166. package/dist/fhe-airdrop/react/useExtendClaimWindow.d.ts +17 -12
  167. package/dist/fhe-airdrop/react/useFactoryFees.d.ts +28 -0
  168. package/dist/fhe-airdrop/react/useFactoryRegistry.d.ts +35 -0
  169. package/dist/fhe-airdrop/react/useFundAirdrop.d.ts +35 -0
  170. package/dist/fhe-airdrop/react/useGrantInstanceRoles.d.ts +35 -0
  171. package/dist/fhe-airdrop/react/useIsActiveDelegate.d.ts +29 -0
  172. package/dist/fhe-airdrop/react/useIsMerkleRootMutable.d.ts +21 -0
  173. package/dist/fhe-airdrop/react/useIsSignatureValid.d.ts +46 -0
  174. package/dist/fhe-airdrop/react/useMerkleClaim.d.ts +22 -0
  175. package/dist/fhe-airdrop/react/useMerkleClaimAndUnwrap.d.ts +29 -0
  176. package/dist/fhe-airdrop/react/useMerkleRoot.d.ts +15 -0
  177. package/dist/fhe-airdrop/react/usePlanMerkleCampaign.d.ts +53 -0
  178. package/dist/fhe-airdrop/react/usePreflightClaim.d.ts +46 -0
  179. package/dist/fhe-airdrop/react/usePreflightCreateAirdrop.d.ts +51 -35
  180. package/dist/fhe-airdrop/react/useRescueERC20.d.ts +30 -0
  181. package/dist/fhe-airdrop/react/useRescueOtherConfidentialToken.d.ts +34 -0
  182. package/dist/fhe-airdrop/react/useRevokeComplianceDelegate.d.ts +37 -0
  183. package/dist/fhe-airdrop/react/useRotateMerkleRoot.d.ts +52 -0
  184. package/dist/fhe-airdrop/react/useSetMerkleRoot.d.ts +22 -0
  185. package/dist/fhe-airdrop/react/useSignClaimAuthorization.d.ts +32 -21
  186. package/dist/fhe-airdrop/react/useWithdrawConfidential.d.ts +23 -0
  187. package/dist/fhe-airdrop/react/useWithdrawGasFee.d.ts +37 -0
  188. package/dist/fhe-airdrop/roles.d.ts +147 -0
  189. package/dist/fhe-airdrop/types.d.ts +78 -63
  190. package/dist/fhe-disperse/index.cjs +70 -68
  191. package/dist/fhe-disperse/index.js +10 -8
  192. package/dist/fhe-disperse/react/index.cjs +94 -92
  193. package/dist/fhe-disperse/react/index.js +13 -11
  194. package/dist/fhe-vesting/advanced/index.cjs +10 -8
  195. package/dist/fhe-vesting/advanced/index.js +8 -6
  196. package/dist/fhe-vesting/advanced/react/index.cjs +16 -14
  197. package/dist/fhe-vesting/advanced/react/index.js +13 -11
  198. package/dist/fhe-vesting/index.cjs +74 -72
  199. package/dist/fhe-vesting/index.js +11 -9
  200. package/dist/fhe-vesting/react/index.cjs +228 -226
  201. package/dist/fhe-vesting/react/index.js +15 -13
  202. package/dist/index.cjs +100 -87
  203. package/dist/index.js +3 -2
  204. package/dist/testnet-faucet/index.cjs +57 -55
  205. package/dist/testnet-faucet/index.js +7 -5
  206. package/dist/testnet-faucet/react/index.cjs +55 -53
  207. package/dist/testnet-faucet/react/index.js +9 -7
  208. package/package.json +6 -2
  209. package/dist/chunk-CNP4L3GF.js +0 -105
  210. package/dist/chunk-KSDSXJ34.js +0 -41
  211. package/dist/chunk-LBWRFZR3.cjs +0 -1681
  212. package/dist/chunk-OL6SHN3D.cjs +0 -44
  213. package/dist/chunk-S2XD75JM.js +0 -1637
  214. package/dist/chunk-SPGSO5SO.cjs +0 -1644
  215. package/dist/chunk-UE5XK2SY.js +0 -1673
  216. package/dist/chunk-WO72UBQD.cjs +0 -109
  217. package/dist/fhe-airdrop/advanced/factory-advanced.d.ts +0 -53
  218. package/dist/fhe-airdrop/advanced/react/usePredictAirdropAddress.d.ts +0 -49
  219. package/dist/fhe-airdrop/airdrop.d.ts +0 -317
  220. package/dist/fhe-airdrop/react/useAccessClaimAmount.d.ts +0 -37
  221. package/dist/fhe-airdrop/react/useAirdropCanExtendClaimWindow.d.ts +0 -7
  222. package/dist/fhe-airdrop/react/useAirdropClaimTypehash.d.ts +0 -10
  223. package/dist/fhe-airdrop/react/useAirdropClaimedSignatures.d.ts +0 -16
  224. package/dist/fhe-airdrop/react/useAirdropDeploymentBlockNumber.d.ts +0 -6
  225. package/dist/fhe-airdrop/react/useAirdropDomainSeparator.d.ts +0 -8
  226. package/dist/fhe-airdrop/react/useAirdropEndTime.d.ts +0 -10
  227. package/dist/fhe-airdrop/react/useAirdropFactoryCustomFee.d.ts +0 -17
  228. package/dist/fhe-airdrop/react/useAirdropFactoryDefaultGasFee.d.ts +0 -10
  229. package/dist/fhe-airdrop/react/useAirdropFactoryDisableCustomFee.d.ts +0 -15
  230. package/dist/fhe-airdrop/react/useAirdropFactoryFeeCollector.d.ts +0 -11
  231. package/dist/fhe-airdrop/react/useAirdropFactoryInitCodeHash.d.ts +0 -17
  232. package/dist/fhe-airdrop/react/useAirdropFactorySetCustomFee.d.ts +0 -17
  233. package/dist/fhe-airdrop/react/useAirdropFactorySetDefaultGasFee.d.ts +0 -16
  234. package/dist/fhe-airdrop/react/useAirdropFactorySetFeeCollector.d.ts +0 -15
  235. package/dist/fhe-airdrop/react/useAirdropHasClaimEnded.d.ts +0 -7
  236. package/dist/fhe-airdrop/react/useAirdropHasClaimStarted.d.ts +0 -7
  237. package/dist/fhe-airdrop/react/useAirdropIsClaimWindowActive.d.ts +0 -9
  238. package/dist/fhe-airdrop/react/useAirdropIsPaused.d.ts +0 -8
  239. package/dist/fhe-airdrop/react/useAirdropIsSignatureClaimed.d.ts +0 -22
  240. package/dist/fhe-airdrop/react/useAirdropIsSignatureValid.d.ts +0 -51
  241. package/dist/fhe-airdrop/react/useAirdropStartTime.d.ts +0 -10
  242. package/dist/fhe-airdrop/react/useAirdropWithdrawGasFee.d.ts +0 -15
  243. package/dist/fhe-airdrop/react/useAirdropWithdrawOtherConfidentialToken.d.ts +0 -14
  244. package/dist/fhe-airdrop/react/useAirdropWithdrawOtherToken.d.ts +0 -14
  245. package/dist/fhe-airdrop/react/useClaim.d.ts +0 -39
  246. package/dist/fhe-airdrop/react/useConfidentialAirdropFactoryImplementation.d.ts +0 -11
  247. package/dist/fhe-airdrop/react/useCreateAndFundConfidentialAirdrop.d.ts +0 -41
  248. package/dist/fhe-airdrop/react/useCreateAndFundConfidentialAirdropAndGetAddress.d.ts +0 -48
  249. package/dist/fhe-airdrop/react/useCreateConfidentialAirdrop.d.ts +0 -29
  250. package/dist/fhe-airdrop/react/useCreateConfidentialAirdropAndGetAddress.d.ts +0 -31
  251. package/dist/fhe-airdrop/react/useDisableCustomFee.d.ts +0 -14
  252. package/dist/fhe-airdrop/react/useFactoryCustomFee.d.ts +0 -17
  253. package/dist/fhe-airdrop/react/useFactoryDefaultGasFee.d.ts +0 -10
  254. package/dist/fhe-airdrop/react/useFactoryFeeCollector.d.ts +0 -11
  255. package/dist/fhe-airdrop/react/useFactoryInitCodeHash.d.ts +0 -17
  256. package/dist/fhe-airdrop/react/useFundConfidentialAirdrop.d.ts +0 -33
  257. package/dist/fhe-airdrop/react/useSetCustomFee.d.ts +0 -16
  258. package/dist/fhe-airdrop/react/useSetDefaultGasFee.d.ts +0 -15
  259. package/dist/fhe-airdrop/react/useSetFeeCollector.d.ts +0 -14
  260. package/dist/fhe-airdrop/react/useSetPaused.d.ts +0 -14
  261. package/dist/fhe-airdrop/react/useWithdraw.d.ts +0 -12
  262. package/dist/fhe-airdrop/react/useWithdrawOtherConfidentialToken.d.ts +0 -13
  263. package/dist/fhe-airdrop/react/useWithdrawOtherToken.d.ts +0 -13
@@ -0,0 +1,37 @@
1
+ import { type UseMutationResult } from "@tanstack/react-query";
2
+ import type { Address, Hex } from "viem";
3
+ import type { WriteAccountOverride } from "../airdrop-base.js";
4
+ import { type AirdropInstanceClientOptions } from "./_shared.js";
5
+ /** @alpha */
6
+ export interface WithdrawGasFeeArgs extends WriteAccountOverride {
7
+ /** Where the ETH goes. */
8
+ recipient: Address;
9
+ /**
10
+ * Wei. Exceeding the accrued balance reverts `InsufficientFeeBalance`,
11
+ * surfaced as `InsufficientBalanceError`.
12
+ */
13
+ amount: bigint;
14
+ }
15
+ /**
16
+ * Withdraw an airdrop instance's accrued per-claim fee ETH to `recipient`.
17
+ *
18
+ * Requires `FEE_COLLECTOR_ROLE`, which is self-administered on
19
+ * `ConfidentialAirdropBase` — no other role can grant it, so
20
+ * {@link useGrantInstanceRoles} cannot bootstrap it from an admin key. Use
21
+ * `useAirdropRoleMembers(FEE_COLLECTOR_ROLE)` to show who can actually call
22
+ * this.
23
+ *
24
+ * **`amount` is public ETH in wei, not a confidential quantity** — unlike
25
+ * every other amount in this module it is safe to log and to render.
26
+ *
27
+ * **Invalidates:** nothing. No read hook in this subpath exposes the
28
+ * instance's accrued fee balance, so no cached query is left stale. If such a
29
+ * read is ever added, this is its invalidator.
30
+ *
31
+ * @example
32
+ * const withdrawFees = useWithdrawGasFee({ address: airdropAddress });
33
+ * await withdrawFees.mutateAsync({ recipient: treasuryAddress, amount: parseEther("0.1") });
34
+ *
35
+ * @alpha
36
+ */
37
+ export declare function useWithdrawGasFee(options: AirdropInstanceClientOptions): UseMutationResult<Hex, Error, WithdrawGasFeeArgs>;
@@ -0,0 +1,147 @@
1
+ import type { Address, Hex } from "viem";
2
+ import { type TokenOpsSdkError } from "../core/errors.js";
3
+ import type { AirdropBaseClient } from "./airdrop-base.js";
4
+ /**
5
+ * The on-chain role names this module knows how to grant or revoke.
6
+ *
7
+ * @alpha
8
+ */
9
+ export type RoleName = "DEFAULT_ADMIN_ROLE" | "PAUSER_ROLE" | "WINDOW_ADMIN_ROLE" | "TREASURY_ROLE" | "RESCUER_ROLE" | "DISCLOSURE_ADMIN_ROLE" | "UPGRADER_ROLE" | "MERKLE_ADMIN_ROLE" | "SIGNER_ROLE";
10
+ /**
11
+ * The roles a campaign creator may hand off after `createEcdsaAirdrop` /
12
+ * `createMerkleAirdrop`. Every field is optional — pass only the roles you
13
+ * intend to split.
14
+ *
15
+ * `merkleAdmin` only exists on Merkle instances and `signer` only on ECDSA
16
+ * ones; passing either against the wrong variant is one of
17
+ * {@link planInstanceRoleSplit}'s three refusals.
18
+ *
19
+ * @alpha
20
+ */
21
+ export interface InstanceRoleAssignment {
22
+ pauser?: Address;
23
+ windowAdmin?: Address;
24
+ treasury?: Address;
25
+ rescuer?: Address;
26
+ disclosureAdmin?: Address;
27
+ upgrader?: Address;
28
+ merkleAdmin?: Address;
29
+ signer?: Address;
30
+ /** Granting this always fails from DEFAULT_ADMIN — see planInstanceRoleSplit. */
31
+ feeCollector?: Address;
32
+ /** Transfers DEFAULT_ADMIN_ROLE. Granted first, then revoked from the creator. */
33
+ admin?: Address;
34
+ }
35
+ /**
36
+ * One `grantRole`/`revokeRole` transaction {@link grantInstanceRoles} will submit, in order.
37
+ *
38
+ * @alpha
39
+ */
40
+ export interface RoleGrantStep {
41
+ kind: "grant" | "revoke";
42
+ role: RoleName;
43
+ account: Address;
44
+ }
45
+ /**
46
+ * The outcome of one step from {@link grantInstanceRoles}. Exactly one of
47
+ * `hash` / `error` is set — never both, never neither. `hash` is set only
48
+ * once that transaction's receipt has been confirmed with `status ===
49
+ * "success"`; a transaction that was submitted but mined with a reverted
50
+ * status is reported as `error`, not `hash`.
51
+ *
52
+ * @alpha
53
+ */
54
+ export interface RoleGrantOutcome {
55
+ role: string;
56
+ account: Address;
57
+ hash?: Hex;
58
+ error?: TokenOpsSdkError;
59
+ }
60
+ /**
61
+ * Turn an {@link InstanceRoleAssignment} into an ordered list of
62
+ * `grantRole`/`revokeRole` steps — a pure function, precisely so its ordering
63
+ * guarantees are testable without a chain.
64
+ *
65
+ * Three requests are refused outright rather than turned into a step that
66
+ * would only revert on-chain:
67
+ *
68
+ * 1. **`feeCollector`.** `FEE_COLLECTOR_ROLE` is self-administered
69
+ * (`_setRoleAdmin(FEE_COLLECTOR_ROLE, FEE_COLLECTOR_ROLE)`,
70
+ * `ConfidentialAirdropBase.sol:142`) — `DEFAULT_ADMIN_ROLE` cannot grant
71
+ * it, only an existing member can, and the campaign creator never is one
72
+ * (the factory's collector is seeded instead, `:143`).
73
+ * 2. **`admin` set to the zero address.** Mirrors the contract's
74
+ * unconditional `ZeroAdminGrant` guard (`_grantRole`, `:281`).
75
+ * 3. **A variant-only role on the wrong campaign** — `merkleAdmin` on an
76
+ * ECDSA instance, or `signer` on a Merkle one. Neither role exists there;
77
+ * the getter itself would revert.
78
+ *
79
+ * `admin`, when present, always produces two steps — grant the new admin,
80
+ * then revoke `args.caller` — and the revoke is always ORDERED LAST, after
81
+ * every other step in the plan. `_revokeRole`'s `LastAdmin` floor
82
+ * (`ConfidentialAirdropBase.sol:261`) blocks removing the sole
83
+ * `DEFAULT_ADMIN_ROLE` member, so revoking the creator first would strand
84
+ * every later grant with no admin left to authorize it.
85
+ *
86
+ * @throws {@link FeeCollectorSelfAdministeredError} for refusal 1 — a distinct
87
+ * condition with a distinct remedy (an existing collector must call
88
+ * `grantRole`), so it gets its own type rather than being folded into the
89
+ * generic argument error.
90
+ * @throws {@link InvalidArgumentError} for refusals 2 and 3.
91
+ *
92
+ * @alpha
93
+ */
94
+ export declare function planInstanceRoleSplit(args: {
95
+ assignment: InstanceRoleAssignment;
96
+ caller: Address;
97
+ airdropType: "ecdsa" | "merkle";
98
+ }): RoleGrantStep[];
99
+ /**
100
+ * Execute an {@link InstanceRoleAssignment} against a live instance:
101
+ * {@link planInstanceRoleSplit} the steps, then submit them one at a time,
102
+ * **waiting for each step's receipt before submitting the next.**
103
+ *
104
+ * That confirmation is not optional bookkeeping — it is what makes the
105
+ * `DEFAULT_ADMIN_ROLE` handoff correct. `revokeRole`'s simulate reads
106
+ * `latest` chain state; if the preceding grant were only submitted and not
107
+ * yet mined, the revoke would simulate (and the contract would enforce its
108
+ * `LastAdmin` floor) against a world where the new admin does not exist yet,
109
+ * reverting a step that should succeed. Confirming first makes each step's
110
+ * simulate see every effect the plan already committed.
111
+ *
112
+ * This makes the executor slower than a fire-and-forget submit loop —
113
+ * intentionally: correctness of the ordering guarantee in
114
+ * {@link planInstanceRoleSplit} depends on it.
115
+ *
116
+ * **This is several transactions, not one — never atomic.** Each step is
117
+ * caught individually, so one failing grant or revoke does not abort the
118
+ * rest; inspect each {@link RoleGrantOutcome} rather than assuming
119
+ * all-or-nothing. A step whose transaction is submitted but mined with a
120
+ * reverted status is recorded as a failed outcome (`error` set, not `hash`)
121
+ * — a submitted-but-reverted transaction is never reported as a success. A
122
+ * `DEFAULT_ADMIN_ROLE` handoff that fails on the revoke half after the grant
123
+ * half already landed leaves the instance with TWO admins — not broken, just
124
+ * not yet what was asked for; re-run with only `assignment.admin` set (and
125
+ * `revokeFromCreator: true`) to finish it.
126
+ *
127
+ * The plan's `caller` and `airdropType` are derived from `airdrop` itself —
128
+ * the wallet client's default account, and a chain read of `airdropType()` —
129
+ * so this function's inputs stay limited to what the caller actually chooses.
130
+ *
131
+ * @param args.revokeFromCreator When `assignment.admin` is set, whether to
132
+ * also revoke the creator's `DEFAULT_ADMIN_ROLE` (the default). Pass `false`
133
+ * to grant the new admin only, leaving both addresses as admins — an
134
+ * escape hatch for callers not yet ready to give up the creator's access.
135
+ * @throws {@link FeeCollectorSelfAdministeredError} or {@link InvalidArgumentError} before any
136
+ * transaction — but NOT synchronously: the plan is built after an awaited
137
+ * `airdropType()` read. See the three refusals on {@link planInstanceRoleSplit}.
138
+ * @throws {@link MissingWalletClientError} when `airdrop` has no wallet client.
139
+ * @throws {@link MissingAccountError} when the wallet client has no default account.
140
+ *
141
+ * @alpha
142
+ */
143
+ export declare function grantInstanceRoles(args: {
144
+ airdrop: AirdropBaseClient;
145
+ assignment: InstanceRoleAssignment;
146
+ revokeFromCreator?: boolean;
147
+ }): Promise<RoleGrantOutcome[]>;
@@ -1,77 +1,92 @@
1
- import type { Address } from "viem";
2
- import type { TokenOpsSdkError } from "../core/errors.js";
3
- export type { EncryptedInput, EncryptedInputs, EncryptedViewResult } from "../fhe/types.js";
1
+ import type { Address, Hex } from "viem";
2
+ import type { DedupMode, DeploymentMode } from "./constants.js";
4
3
  /**
5
- * Parameters for creating a confidential airdrop.
4
+ * Create-time fields shared by both variants. There is deliberately no `admin`
5
+ * field: the factory injects `admin = msg.sender`. Split roles after create
6
+ * with `grantInstanceRoles` — see `roles.ts`.
6
7
  *
7
- * `startTimestamp` and `endTimestamp` are unix timestamps (uint32). The SDK
8
- * maps them to the on-chain struct fields `startTime` / `endTime` before
9
- * encoding — do not pass the on-chain names directly.
8
+ * @alpha
10
9
  */
11
- export interface AirdropParams {
10
+ export interface CommonAirdropParams {
12
11
  token: Address;
13
- startTimestamp: number;
14
- endTimestamp: number;
12
+ startTime: number;
13
+ endTime: number;
15
14
  canExtendClaimWindow: boolean;
16
- admin: Address;
15
+ /**
16
+ * Only valid when `token` is a stock ERC7984ERC20Wrapper: `claimAndUnwrap` burns from the
17
+ * airdrop instance's pooled wrapper balance, so a hooked or fee-taking wrapper can deliver an
18
+ * amount the pool balance alone doesn't bound correctly. See {@link NonStockWrapperError}.
19
+ */
20
+ unwrappable: boolean;
21
+ /** Client admin AND client delegate of the compliance clone. Zero means msg.sender. */
22
+ complianceAdmin: Address;
17
23
  }
18
- /** Custom fee override for a campaign creator. */
19
- export interface CustomFee {
20
- enabled: boolean;
21
- gasFee: bigint;
24
+ /** @alpha */
25
+ export interface EcdsaAirdropParams {
26
+ common: CommonAirdropParams;
27
+ signer: Address;
28
+ dedupMode: DedupMode;
29
+ }
30
+ /** @alpha */
31
+ export interface MerkleAirdropParams {
32
+ common: CommonAirdropParams;
33
+ /** Zero root is only permitted when `isMerkleRootMutable` is true. */
34
+ merkleRoot: Hex;
35
+ isMerkleRootMutable: boolean;
22
36
  }
23
37
  /**
24
- * Report returned by `ConfidentialAirdropFactoryClient.preflightCreateAirdrop`.
38
+ * Arguments shared by both `factory.createEcdsaAirdrop` / `createMerkleAirdrop` entrypoints.
25
39
  *
26
- * Fields:
27
- * - `isFactoryOperator` — `true` when the creator has approved the factory as
28
- * an ERC-7984 operator on `params.token`. Only required when funding in the
29
- * same transaction (`createAndFundConfidentialAirdrop` /
30
- * `fundConfidentialAirdrop`).
40
+ * @alpha
41
+ */
42
+ export interface CreateAirdropArgs<P> {
43
+ params: P;
44
+ mode: DeploymentMode;
45
+ userSalt: Hex;
46
+ }
47
+ /** @alpha */
48
+ export interface CreateAirdropResult {
49
+ hash: Hex;
50
+ airdrop: Address;
51
+ complianceManager: Address;
52
+ }
53
+ /**
54
+ * One recipient's committed allocation, keyed for `CampaignEntry.merkleProof` construction.
31
55
  *
32
- * **`false` does not mean "not approved" on its own** — it is also `false`
33
- * when approval could not be determined at all: the token address was
34
- * structurally invalid (read skipped), or the address is not an ERC-7984
35
- * token (read failed). Do not render an "approve the factory" prompt off
36
- * this field alone; check `blockerErrors` for
37
- * `TOKENOPS_OPERATOR_NOT_APPROVED` first, which is present only when the
38
- * approval genuinely is the missing step.
39
- * - `gasFee` — the per-claim gas fee (wei) the factory will embed into the
40
- * clone for this creator: the creator's custom fee when one is enabled,
41
- * otherwise `defaultGasFee`. This is the `gasFee` to use for address
42
- * prediction and later `fundConfidentialAirdrop` calls.
43
- * - `predictedAirdrop` — deterministic CREATE2 clone address for
44
- * `(params, userSalt, creator, gasFee)`. `undefined` when `userSalt` was not
45
- * supplied or the params were structurally invalid.
46
- * - `alreadyDeployed` — `true` when bytecode already exists at
47
- * `predictedAirdrop` (a repeat create with the same salt would revert).
48
- * `undefined` when `predictedAirdrop` is `undefined`.
49
- * - `ready` — `true` when no blockers were detected.
50
- * - `blockers` — human-readable blocker descriptions. Empty when
51
- * `ready === true`.
52
- * - `blockerErrors` — the same blockers as typed `TokenOpsSdkError`s, index-
53
- * aligned with `blockers`. Branch on `error.code` to render UI.
56
+ * @alpha
54
57
  */
55
- export interface CreateAirdropPreflightReport {
56
- /**
57
- * `true` when the creator has approved the factory as operator on
58
- * `params.token`. `false` also covers "could not determine" — an invalid or
59
- * non-ERC-7984 token; branch on `blockerErrors` rather than this field alone.
60
- */
61
- isFactoryOperator: boolean;
62
- /** Per-claim gas fee (wei) the factory will embed into the clone for this creator. */
63
- gasFee: bigint;
64
- /** Predicted CREATE2 clone address. `undefined` without `userSalt` or with invalid params. */
65
- predictedAirdrop?: Address;
66
- /** `true` when bytecode already exists at `predictedAirdrop`. `undefined` when not predicted. */
67
- alreadyDeployed?: boolean;
68
- /** `true` when no blockers were detected — green light to submit the write. */
69
- ready: boolean;
70
- /** Human-readable blocker descriptions. Empty when `ready === true`. */
71
- blockers: string[];
58
+ export interface CampaignRecipient {
59
+ recipient: Address;
60
+ /** The recipient's CUMULATIVE total, not a per-drop tranche. A claim pays
61
+ * `total - min(total, alreadyDelivered)`. */
62
+ cumulativeTotal: bigint;
63
+ }
64
+ /**
65
+ * One recipient's encrypted, proof-bearing claim input — everything `merkle.claim` needs.
66
+ *
67
+ * Carries TWO addresses because the contract keys two different things on them:
68
+ * `account` selects the leaf and the cumulative accounting, `boundTo` is who the
69
+ * coprocessor will accept as the sender. They are equal on a self-claim campaign
70
+ * and differ on a relayed one.
71
+ *
72
+ * @alpha
73
+ */
74
+ export interface CampaignEntry {
75
+ /** The claim identity: whose leaf this is, whose delivered total advances, and where payout defaults. */
76
+ account: Address;
72
77
  /**
73
- * Typed errors that would otherwise surface at write time, index-aligned
74
- * with `blockers`. Empty when `ready === true`.
78
+ * The only address that can submit this entry. The FHE input proof is bound to
79
+ * `(instance, boundTo)`, so any other sender is rejected by the coprocessor —
80
+ * a leaf cannot be re-pointed at a different submitter without re-encrypting,
81
+ * which changes the handle and therefore the root.
75
82
  */
76
- blockerErrors: TokenOpsSdkError[];
83
+ boundTo: Address;
84
+ handle: Hex;
85
+ inputProof: Hex;
86
+ merkleProof: readonly Hex[];
87
+ }
88
+ /** @alpha */
89
+ export interface BuiltCampaign {
90
+ root: Hex;
91
+ entries: readonly CampaignEntry[];
77
92
  }