@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.
- package/CHANGELOG.md +77 -8
- package/CONTRIBUTING.md +4 -2
- package/README.md +146 -90
- package/SUPPORT.md +47 -0
- package/dist/{chunk-BD4LZBVF.cjs → chunk-3QHNYEQD.cjs} +18 -17
- package/dist/{chunk-YFIWCYHC.cjs → chunk-3YHBO2DL.cjs} +56 -54
- package/dist/{chunk-QET3Q4JP.js → chunk-44YJPMQC.js} +8 -6
- package/dist/{chunk-6WSNS3UV.js → chunk-4RAAATVY.js} +2 -4
- package/dist/{chunk-4KJ66YRH.js → chunk-4TSDNZQ3.js} +2 -2
- package/dist/chunk-66IHPTOK.cjs +20 -0
- package/dist/{chunk-2RNW4MIJ.cjs → chunk-67OV5CX2.cjs} +0 -18
- package/dist/{chunk-PD7ME2BT.js → chunk-6GNR22OV.js} +2 -1
- package/dist/{chunk-WOEETTH7.cjs → chunk-7AFPOE7N.cjs} +6 -6
- package/dist/{chunk-QKKBBH7I.js → chunk-A4DCEE33.js} +34 -7
- package/dist/chunk-AREQJHKA.cjs +713 -0
- package/dist/{chunk-U57COLUE.js → chunk-AXIPOR3C.js} +2 -2
- package/dist/chunk-EBLBPUPI.cjs +255 -0
- package/dist/chunk-EYDA6Q6C.js +245 -0
- package/dist/{chunk-SYHNZSZZ.cjs → chunk-FAXIIH5R.cjs} +3 -3
- package/dist/{chunk-AYGRYDBX.cjs → chunk-FEDX7B6T.cjs} +37 -35
- package/dist/{chunk-CBRL2PJA.cjs → chunk-FHWSBGWE.cjs} +12 -12
- package/dist/{chunk-WUXUWTFW.cjs → chunk-FT5H2Q7Y.cjs} +37 -7
- package/dist/chunk-GADGBQJO.js +423 -0
- package/dist/{chunk-VHSNYUYV.js → chunk-IGO5XSPS.js} +5 -5
- package/dist/chunk-IUKKNJ2R.cjs +433 -0
- package/dist/{chunk-VR3FREBX.cjs → chunk-JK4XMMKM.cjs} +3 -3
- package/dist/{chunk-4ZCXK4VI.cjs → chunk-KFRDLKMA.cjs} +14 -14
- package/dist/chunk-KWFFIJYX.js +11 -0
- package/dist/{chunk-7G7UOQV4.cjs → chunk-MM5BV5CS.cjs} +4 -4
- package/dist/{chunk-43RFBQ73.cjs → chunk-MVDQMV25.cjs} +29 -32
- package/dist/chunk-NWFMBLSQ.js +4 -0
- package/dist/{chunk-HETNKZEE.js → chunk-PYYSB5ZN.js} +1 -1
- package/dist/chunk-PZZK3O3S.cjs +9843 -0
- package/dist/{chunk-DRSPMIZ7.js → chunk-QBJ7O2B4.js} +1 -11
- package/dist/{chunk-WTK6JDSI.js → chunk-SPLNGUFF.js} +6 -4
- package/dist/{chunk-UJS4N2XM.cjs → chunk-TEBM66WA.cjs} +12 -12
- package/dist/{chunk-TN65XNTI.js → chunk-TWT3STIX.js} +8 -6
- package/dist/chunk-UG5RKLU2.cjs +6 -0
- package/dist/{chunk-EUKPOXWR.cjs → chunk-UHHMVBLU.cjs} +17 -15
- package/dist/chunk-VW356KR3.js +688 -0
- package/dist/{chunk-BK7YIVLK.cjs → chunk-WJLECC22.cjs} +75 -73
- package/dist/{chunk-V5D7BHW3.js → chunk-WJMEBBU7.js} +6 -4
- package/dist/{chunk-NFW7AUEX.js → chunk-WMACINXO.js} +1 -1
- package/dist/chunk-X7WBPCEU.js +9817 -0
- package/dist/{chunk-46T67CE2.js → chunk-ZA673I3O.js} +1 -1
- package/dist/{chunk-YPYCWLYP.js → chunk-ZWXJTBZO.js} +1 -1
- package/dist/core/addresses.d.ts +14 -2
- package/dist/core/brands.d.ts +8 -2
- package/dist/core/errors.d.ts +71 -10
- package/dist/core/preflight.d.ts +1 -0
- package/dist/fhe/erc7984-abi.d.ts +1 -0
- package/dist/fhe/index.cjs +64 -63
- package/dist/fhe/index.js +7 -6
- package/dist/fhe/operators.d.ts +22 -5
- package/dist/fhe/react/index.cjs +13 -12
- package/dist/fhe/react/index.js +6 -5
- package/dist/fhe/types.d.ts +8 -2
- package/dist/fhe-airdrop/abis/{cloneable.d.ts → airdrop-base.d.ts} +254 -396
- package/dist/fhe-airdrop/abis/compliance.d.ts +422 -0
- package/dist/fhe-airdrop/abis/ecdsa.d.ts +1316 -0
- package/dist/fhe-airdrop/abis/factory.d.ts +1319 -190
- package/dist/fhe-airdrop/abis/index.d.ts +5 -2
- package/dist/fhe-airdrop/abis/merkle.d.ts +1250 -0
- package/dist/fhe-airdrop/advanced/index.cjs +11 -12
- package/dist/fhe-airdrop/advanced/index.d.cts +34 -11
- package/dist/fhe-airdrop/advanced/index.d.ts +34 -11
- package/dist/fhe-airdrop/advanced/index.js +3 -8
- package/dist/fhe-airdrop/advanced/react/index.cjs +619 -51
- package/dist/fhe-airdrop/advanced/react/index.d.cts +43 -3
- package/dist/fhe-airdrop/advanced/react/index.d.ts +43 -3
- package/dist/fhe-airdrop/advanced/react/index.js +592 -52
- package/dist/fhe-airdrop/advanced/react/useClearCompliancePolicy.d.ts +28 -0
- package/dist/fhe-airdrop/advanced/react/useClearUpgradeabilityPolicy.d.ts +26 -0
- package/dist/fhe-airdrop/advanced/react/useDisableCustomFee.d.ts +25 -0
- package/dist/fhe-airdrop/advanced/react/useEcdsaInitCodeHash.d.ts +30 -0
- package/dist/fhe-airdrop/advanced/react/useFactoryComplianceDelegate.d.ts +25 -0
- package/dist/fhe-airdrop/advanced/react/useFactoryCompliancePolicy.d.ts +38 -0
- package/dist/fhe-airdrop/advanced/react/useFactoryCustomFee.d.ts +24 -0
- package/dist/fhe-airdrop/advanced/react/useFactoryGrantRole.d.ts +32 -0
- package/dist/fhe-airdrop/advanced/react/useFactoryHasRole.d.ts +27 -0
- package/dist/fhe-airdrop/advanced/react/useFactoryImplementations.d.ts +33 -0
- package/dist/fhe-airdrop/advanced/react/useFactoryRenounceRole.d.ts +36 -0
- package/dist/fhe-airdrop/advanced/react/useFactoryRevokeRole.d.ts +35 -0
- package/dist/fhe-airdrop/advanced/react/useFactoryRoleConstants.d.ts +46 -0
- package/dist/fhe-airdrop/advanced/react/useFactoryRoleMembers.d.ts +47 -0
- package/dist/fhe-airdrop/advanced/react/useFactoryUpgradeabilityPolicy.d.ts +39 -0
- package/dist/fhe-airdrop/advanced/react/useMerkleInitCodeHash.d.ts +24 -0
- package/dist/fhe-airdrop/advanced/react/usePredictEcdsaAirdropAddress.d.ts +33 -0
- package/dist/fhe-airdrop/advanced/react/usePredictMerkleAirdropAddress.d.ts +27 -0
- package/dist/fhe-airdrop/advanced/react/useSetComplianceDelegate.d.ts +33 -0
- package/dist/fhe-airdrop/advanced/react/useSetComplianceManagerImpl.d.ts +27 -0
- package/dist/fhe-airdrop/advanced/react/useSetCompliancePolicy.d.ts +28 -0
- package/dist/fhe-airdrop/advanced/react/useSetCustomFee.d.ts +28 -0
- package/dist/fhe-airdrop/advanced/react/useSetDefaultDelegateToCompliance.d.ts +31 -0
- package/dist/fhe-airdrop/advanced/react/useSetDefaultGasFee.d.ts +28 -0
- package/dist/fhe-airdrop/advanced/react/useSetDefaultUpgradeable.d.ts +27 -0
- package/dist/fhe-airdrop/advanced/react/useSetEcdsaImplementation.d.ts +34 -0
- package/dist/fhe-airdrop/advanced/react/useSetFeeCollector.d.ts +27 -0
- package/dist/fhe-airdrop/advanced/react/useSetMerkleImplementation.d.ts +30 -0
- package/dist/fhe-airdrop/advanced/react/useSetUpgradeabilityPolicy.d.ts +31 -0
- package/dist/fhe-airdrop/airdrop-base.d.ts +608 -0
- package/dist/fhe-airdrop/campaign.d.ts +338 -0
- package/dist/fhe-airdrop/compliance.d.ts +302 -0
- package/dist/fhe-airdrop/constants.d.ts +33 -0
- package/dist/fhe-airdrop/ecdsa.d.ts +263 -0
- package/dist/fhe-airdrop/encryption.d.ts +92 -14
- package/dist/fhe-airdrop/errors.d.ts +273 -15
- package/dist/fhe-airdrop/factory.d.ts +533 -274
- package/dist/fhe-airdrop/guards.d.ts +317 -0
- package/dist/fhe-airdrop/index.cjs +233 -73
- package/dist/fhe-airdrop/index.d.cts +46 -8
- package/dist/fhe-airdrop/index.d.ts +46 -8
- package/dist/fhe-airdrop/index.js +11 -7
- package/dist/fhe-airdrop/merkle-tree.d.ts +97 -0
- package/dist/fhe-airdrop/merkle.d.ts +201 -0
- package/dist/fhe-airdrop/react/_shared.d.ts +156 -70
- package/dist/fhe-airdrop/react/index.cjs +1174 -384
- package/dist/fhe-airdrop/react/index.d.cts +99 -74
- package/dist/fhe-airdrop/react/index.d.ts +99 -74
- package/dist/fhe-airdrop/react/index.js +993 -303
- package/dist/fhe-airdrop/react/keys.d.ts +90 -0
- package/dist/fhe-airdrop/react/useAccessEcdsaClaimAmount.d.ts +26 -0
- package/dist/fhe-airdrop/react/useAccessMerkleClaimAmount.d.ts +27 -0
- package/dist/fhe-airdrop/react/useAddComplianceDelegate.d.ts +37 -0
- package/dist/fhe-airdrop/react/useAdminBatchDiscloseBalanceToParties.d.ts +36 -0
- package/dist/fhe-airdrop/react/useAdminDiscloseBalanceToParty.d.ts +31 -0
- package/dist/fhe-airdrop/react/useAdminGetCurrentBalance.d.ts +27 -0
- package/dist/fhe-airdrop/react/useAirdropConfig.d.ts +49 -0
- package/dist/fhe-airdrop/react/useAirdropDeploymentMode.d.ts +28 -0
- package/dist/fhe-airdrop/react/useAirdropGasFee.d.ts +10 -5
- package/dist/fhe-airdrop/react/useAirdropGrantRole.d.ts +29 -10
- package/dist/fhe-airdrop/react/useAirdropHasRole.d.ts +15 -6
- package/dist/fhe-airdrop/react/useAirdropPause.d.ts +30 -0
- package/dist/fhe-airdrop/react/useAirdropPaused.d.ts +17 -0
- package/dist/fhe-airdrop/react/useAirdropRenounceRole.d.ts +36 -0
- package/dist/fhe-airdrop/react/useAirdropRevokeRole.d.ts +27 -9
- package/dist/fhe-airdrop/react/useAirdropRoleAdmin.d.ts +28 -0
- package/dist/fhe-airdrop/react/useAirdropRoleConstants.d.ts +67 -0
- package/dist/fhe-airdrop/react/useAirdropRoleMembers.d.ts +49 -0
- package/dist/fhe-airdrop/react/useAirdropToken.d.ts +11 -4
- package/dist/fhe-airdrop/react/useAirdropUpgradeToAndCall.d.ts +45 -0
- package/dist/fhe-airdrop/react/useAirdropWindow.d.ts +37 -0
- package/dist/fhe-airdrop/react/useBatchDiscloseHandlesToParty.d.ts +32 -0
- package/dist/fhe-airdrop/react/useBuildMerkleCampaign.d.ts +68 -0
- package/dist/fhe-airdrop/react/useClaimedAmount.d.ts +29 -0
- package/dist/fhe-airdrop/react/useComplianceGrantRole.d.ts +32 -0
- package/dist/fhe-airdrop/react/useComplianceHasRole.d.ts +37 -0
- package/dist/fhe-airdrop/react/useComplianceInfo.d.ts +50 -0
- package/dist/fhe-airdrop/react/useComplianceManager.d.ts +16 -0
- package/dist/fhe-airdrop/react/useComplianceManagerOf.d.ts +32 -0
- package/dist/fhe-airdrop/react/useComplianceRenounceRole.d.ts +38 -0
- package/dist/fhe-airdrop/react/useComplianceRevokeRole.d.ts +36 -0
- package/dist/fhe-airdrop/react/useComplianceRoleConstants.d.ts +41 -0
- package/dist/fhe-airdrop/react/useComplianceRoleMembers.d.ts +45 -0
- package/dist/fhe-airdrop/react/useCreateAndFundEcdsaAirdrop.d.ts +55 -0
- package/dist/fhe-airdrop/react/useCreateAndFundMerkleAirdrop.d.ts +52 -0
- package/dist/fhe-airdrop/react/useCreateEcdsaAirdrop.d.ts +28 -0
- package/dist/fhe-airdrop/react/useCreateMerkleAirdrop.d.ts +25 -0
- package/dist/fhe-airdrop/react/useDiscloseHandleToParty.d.ts +35 -0
- package/dist/fhe-airdrop/react/useEcdsaClaim.d.ts +24 -0
- package/dist/fhe-airdrop/react/useEcdsaClaimAndUnwrap.d.ts +27 -0
- package/dist/fhe-airdrop/react/useEcdsaDomain.d.ts +41 -0
- package/dist/fhe-airdrop/react/useEffectiveDelegateToCompliance.d.ts +26 -0
- package/dist/fhe-airdrop/react/useEffectiveUpgradeable.d.ts +20 -0
- package/dist/fhe-airdrop/react/useEncryptCampaignAmounts.d.ts +59 -0
- package/dist/fhe-airdrop/react/useExtendClaimWindow.d.ts +17 -12
- package/dist/fhe-airdrop/react/useFactoryFees.d.ts +28 -0
- package/dist/fhe-airdrop/react/useFactoryRegistry.d.ts +35 -0
- package/dist/fhe-airdrop/react/useFundAirdrop.d.ts +35 -0
- package/dist/fhe-airdrop/react/useGrantInstanceRoles.d.ts +35 -0
- package/dist/fhe-airdrop/react/useIsActiveDelegate.d.ts +29 -0
- package/dist/fhe-airdrop/react/useIsMerkleRootMutable.d.ts +21 -0
- package/dist/fhe-airdrop/react/useIsSignatureValid.d.ts +46 -0
- package/dist/fhe-airdrop/react/useMerkleClaim.d.ts +22 -0
- package/dist/fhe-airdrop/react/useMerkleClaimAndUnwrap.d.ts +29 -0
- package/dist/fhe-airdrop/react/useMerkleRoot.d.ts +15 -0
- package/dist/fhe-airdrop/react/usePlanMerkleCampaign.d.ts +53 -0
- package/dist/fhe-airdrop/react/usePreflightClaim.d.ts +46 -0
- package/dist/fhe-airdrop/react/usePreflightCreateAirdrop.d.ts +51 -35
- package/dist/fhe-airdrop/react/useRescueERC20.d.ts +30 -0
- package/dist/fhe-airdrop/react/useRescueOtherConfidentialToken.d.ts +34 -0
- package/dist/fhe-airdrop/react/useRevokeComplianceDelegate.d.ts +37 -0
- package/dist/fhe-airdrop/react/useRotateMerkleRoot.d.ts +52 -0
- package/dist/fhe-airdrop/react/useSetMerkleRoot.d.ts +22 -0
- package/dist/fhe-airdrop/react/useSignClaimAuthorization.d.ts +32 -21
- package/dist/fhe-airdrop/react/useWithdrawConfidential.d.ts +23 -0
- package/dist/fhe-airdrop/react/useWithdrawGasFee.d.ts +37 -0
- package/dist/fhe-airdrop/roles.d.ts +147 -0
- package/dist/fhe-airdrop/types.d.ts +78 -63
- package/dist/fhe-disperse/index.cjs +70 -68
- package/dist/fhe-disperse/index.js +10 -8
- package/dist/fhe-disperse/react/index.cjs +94 -92
- package/dist/fhe-disperse/react/index.js +13 -11
- package/dist/fhe-vesting/advanced/index.cjs +10 -8
- package/dist/fhe-vesting/advanced/index.js +8 -6
- package/dist/fhe-vesting/advanced/react/index.cjs +16 -14
- package/dist/fhe-vesting/advanced/react/index.js +13 -11
- package/dist/fhe-vesting/index.cjs +74 -72
- package/dist/fhe-vesting/index.js +11 -9
- package/dist/fhe-vesting/react/index.cjs +228 -226
- package/dist/fhe-vesting/react/index.js +15 -13
- package/dist/index.cjs +100 -87
- package/dist/index.js +3 -2
- package/dist/testnet-faucet/index.cjs +57 -55
- package/dist/testnet-faucet/index.js +7 -5
- package/dist/testnet-faucet/react/index.cjs +55 -53
- package/dist/testnet-faucet/react/index.js +9 -7
- package/package.json +6 -2
- package/dist/chunk-CNP4L3GF.js +0 -105
- package/dist/chunk-KSDSXJ34.js +0 -41
- package/dist/chunk-LBWRFZR3.cjs +0 -1681
- package/dist/chunk-OL6SHN3D.cjs +0 -44
- package/dist/chunk-S2XD75JM.js +0 -1637
- package/dist/chunk-SPGSO5SO.cjs +0 -1644
- package/dist/chunk-UE5XK2SY.js +0 -1673
- package/dist/chunk-WO72UBQD.cjs +0 -109
- package/dist/fhe-airdrop/advanced/factory-advanced.d.ts +0 -53
- package/dist/fhe-airdrop/advanced/react/usePredictAirdropAddress.d.ts +0 -49
- package/dist/fhe-airdrop/airdrop.d.ts +0 -317
- package/dist/fhe-airdrop/react/useAccessClaimAmount.d.ts +0 -37
- package/dist/fhe-airdrop/react/useAirdropCanExtendClaimWindow.d.ts +0 -7
- package/dist/fhe-airdrop/react/useAirdropClaimTypehash.d.ts +0 -10
- package/dist/fhe-airdrop/react/useAirdropClaimedSignatures.d.ts +0 -16
- package/dist/fhe-airdrop/react/useAirdropDeploymentBlockNumber.d.ts +0 -6
- package/dist/fhe-airdrop/react/useAirdropDomainSeparator.d.ts +0 -8
- package/dist/fhe-airdrop/react/useAirdropEndTime.d.ts +0 -10
- package/dist/fhe-airdrop/react/useAirdropFactoryCustomFee.d.ts +0 -17
- package/dist/fhe-airdrop/react/useAirdropFactoryDefaultGasFee.d.ts +0 -10
- package/dist/fhe-airdrop/react/useAirdropFactoryDisableCustomFee.d.ts +0 -15
- package/dist/fhe-airdrop/react/useAirdropFactoryFeeCollector.d.ts +0 -11
- package/dist/fhe-airdrop/react/useAirdropFactoryInitCodeHash.d.ts +0 -17
- package/dist/fhe-airdrop/react/useAirdropFactorySetCustomFee.d.ts +0 -17
- package/dist/fhe-airdrop/react/useAirdropFactorySetDefaultGasFee.d.ts +0 -16
- package/dist/fhe-airdrop/react/useAirdropFactorySetFeeCollector.d.ts +0 -15
- package/dist/fhe-airdrop/react/useAirdropHasClaimEnded.d.ts +0 -7
- package/dist/fhe-airdrop/react/useAirdropHasClaimStarted.d.ts +0 -7
- package/dist/fhe-airdrop/react/useAirdropIsClaimWindowActive.d.ts +0 -9
- package/dist/fhe-airdrop/react/useAirdropIsPaused.d.ts +0 -8
- package/dist/fhe-airdrop/react/useAirdropIsSignatureClaimed.d.ts +0 -22
- package/dist/fhe-airdrop/react/useAirdropIsSignatureValid.d.ts +0 -51
- package/dist/fhe-airdrop/react/useAirdropStartTime.d.ts +0 -10
- package/dist/fhe-airdrop/react/useAirdropWithdrawGasFee.d.ts +0 -15
- package/dist/fhe-airdrop/react/useAirdropWithdrawOtherConfidentialToken.d.ts +0 -14
- package/dist/fhe-airdrop/react/useAirdropWithdrawOtherToken.d.ts +0 -14
- package/dist/fhe-airdrop/react/useClaim.d.ts +0 -39
- package/dist/fhe-airdrop/react/useConfidentialAirdropFactoryImplementation.d.ts +0 -11
- package/dist/fhe-airdrop/react/useCreateAndFundConfidentialAirdrop.d.ts +0 -41
- package/dist/fhe-airdrop/react/useCreateAndFundConfidentialAirdropAndGetAddress.d.ts +0 -48
- package/dist/fhe-airdrop/react/useCreateConfidentialAirdrop.d.ts +0 -29
- package/dist/fhe-airdrop/react/useCreateConfidentialAirdropAndGetAddress.d.ts +0 -31
- package/dist/fhe-airdrop/react/useDisableCustomFee.d.ts +0 -14
- package/dist/fhe-airdrop/react/useFactoryCustomFee.d.ts +0 -17
- package/dist/fhe-airdrop/react/useFactoryDefaultGasFee.d.ts +0 -10
- package/dist/fhe-airdrop/react/useFactoryFeeCollector.d.ts +0 -11
- package/dist/fhe-airdrop/react/useFactoryInitCodeHash.d.ts +0 -17
- package/dist/fhe-airdrop/react/useFundConfidentialAirdrop.d.ts +0 -33
- package/dist/fhe-airdrop/react/useSetCustomFee.d.ts +0 -16
- package/dist/fhe-airdrop/react/useSetDefaultGasFee.d.ts +0 -15
- package/dist/fhe-airdrop/react/useSetFeeCollector.d.ts +0 -14
- package/dist/fhe-airdrop/react/useSetPaused.d.ts +0 -14
- package/dist/fhe-airdrop/react/useWithdraw.d.ts +0 -12
- package/dist/fhe-airdrop/react/useWithdrawOtherConfidentialToken.d.ts +0 -13
- 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 {
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
10
|
+
export interface CommonAirdropParams {
|
|
12
11
|
token: Address;
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
startTime: number;
|
|
13
|
+
endTime: number;
|
|
15
14
|
canExtendClaimWindow: boolean;
|
|
16
|
-
|
|
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
|
-
/**
|
|
19
|
-
export interface
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
*
|
|
38
|
+
* Arguments shared by both `factory.createEcdsaAirdrop` / `createMerkleAirdrop` entrypoints.
|
|
25
39
|
*
|
|
26
|
-
*
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
*
|
|
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
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
*
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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
|
-
*
|
|
74
|
-
*
|
|
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
|
-
|
|
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
|
}
|