@tokenops/sdk 2.0.0-alpha.1 → 2.0.0-alpha.3
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 +67 -2
- package/README.md +14 -8
- package/dist/{chunk-PUX5VXDB.cjs → chunk-4AWQJQXY.cjs} +1415 -69
- package/dist/{chunk-74QFZ5MK.js → chunk-4IB4IY5Y.js} +1 -1
- package/dist/{chunk-DZHYSUGY.js → chunk-6HCT4QIX.js} +12 -5
- package/dist/{chunk-FGEB7RMY.cjs → chunk-6XOAYDC6.cjs} +4 -4
- package/dist/{chunk-XAYGD4E4.cjs → chunk-AHU2HMNE.cjs} +3 -3
- package/dist/{chunk-6NAVMWZQ.js → chunk-BPIVVCSQ.js} +2 -2
- package/dist/{chunk-GKKDAW44.js → chunk-BXX5TETM.js} +1401 -59
- package/dist/{chunk-456VDDA3.js → chunk-GCJFAY4X.js} +78 -25
- package/dist/{chunk-CTED3MTR.cjs → chunk-GKYZQJGP.cjs} +82 -29
- package/dist/{chunk-JZLGCTGK.cjs → chunk-IEKTGJ4J.cjs} +2 -2
- package/dist/{chunk-6PXXGACR.cjs → chunk-JVNJSDQ4.cjs} +2 -2
- package/dist/{chunk-O5676ZWY.js → chunk-LEYYG4RF.js} +232 -6
- package/dist/{chunk-335Z2W67.js → chunk-NGU4JYIR.js} +1 -1
- package/dist/{chunk-5576FRT3.cjs → chunk-PG3WXT3K.cjs} +12 -5
- package/dist/{chunk-H5POPGOZ.js → chunk-PK6Q6J5F.js} +1 -1
- package/dist/chunk-TND5NDV7.cjs +263 -0
- package/dist/chunk-U3TBQRT7.js +253 -0
- package/dist/{chunk-EAJ7SYHE.js → chunk-WRWRA4TN.js} +1 -1
- package/dist/{chunk-JQYC66TO.cjs → chunk-YABHXJNH.cjs} +5 -5
- package/dist/{chunk-M4IT6DNJ.cjs → chunk-YTIYTV4K.cjs} +236 -4
- package/dist/core/addresses.d.ts +4 -4
- package/dist/core/errors.d.ts +1 -1
- package/dist/fhe/types.d.ts +2 -2
- package/dist/fhe-airdrop/abis/airdrop-base.d.ts +19 -0
- package/dist/fhe-airdrop/abis/ecdsa.d.ts +19 -0
- package/dist/fhe-airdrop/abis/factory.d.ts +113 -0
- package/dist/fhe-airdrop/abis/merkle.d.ts +43 -12
- package/dist/fhe-airdrop/advanced/index.cjs +4 -4
- package/dist/fhe-airdrop/advanced/index.js +1 -1
- package/dist/fhe-airdrop/advanced/react/index.cjs +620 -9
- package/dist/fhe-airdrop/advanced/react/index.d.cts +35 -0
- package/dist/fhe-airdrop/advanced/react/index.d.ts +35 -0
- package/dist/fhe-airdrop/advanced/react/index.js +590 -7
- 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 +26 -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 +37 -0
- package/dist/fhe-airdrop/advanced/react/useFactoryRevokeRole.d.ts +37 -0
- package/dist/fhe-airdrop/advanced/react/useFactoryRoleConstants.d.ts +46 -0
- package/dist/fhe-airdrop/advanced/react/useFactoryRoleMembers.d.ts +48 -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/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 +29 -0
- package/dist/fhe-airdrop/advanced/react/useSetDefaultDelegateToCompliance.d.ts +31 -0
- package/dist/fhe-airdrop/advanced/react/useSetDefaultGasFee.d.ts +30 -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/useSetMaxGasFee.d.ts +33 -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 +55 -8
- package/dist/fhe-airdrop/campaign.d.ts +61 -20
- package/dist/fhe-airdrop/constants.d.ts +9 -1
- package/dist/fhe-airdrop/ecdsa.d.ts +13 -0
- package/dist/fhe-airdrop/errors.d.ts +87 -0
- package/dist/fhe-airdrop/factory.d.ts +62 -22
- package/dist/fhe-airdrop/guards.d.ts +133 -4
- package/dist/fhe-airdrop/index.cjs +86 -971
- package/dist/fhe-airdrop/index.d.cts +4 -4
- package/dist/fhe-airdrop/index.d.ts +4 -4
- package/dist/fhe-airdrop/index.js +8 -927
- package/dist/fhe-airdrop/merkle-tree.d.ts +32 -38
- package/dist/fhe-airdrop/merkle.d.ts +52 -31
- package/dist/fhe-airdrop/react/_shared.d.ts +13 -0
- package/dist/fhe-airdrop/react/index.cjs +997 -87
- package/dist/fhe-airdrop/react/index.d.cts +53 -4
- package/dist/fhe-airdrop/react/index.d.ts +53 -4
- package/dist/fhe-airdrop/react/index.js +887 -27
- package/dist/fhe-airdrop/react/keys.d.ts +98 -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/useAirdropGrantRole.d.ts +35 -0
- package/dist/fhe-airdrop/react/useAirdropRenounceRole.d.ts +36 -0
- package/dist/fhe-airdrop/react/useAirdropRevokeRole.d.ts +33 -0
- 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/useAirdropUpgradeToAndCall.d.ts +45 -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/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/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/useDiscloseHandleToParty.d.ts +35 -0
- package/dist/fhe-airdrop/react/useEcdsaClaim.d.ts +4 -3
- 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/useEncryptCampaignAmounts.d.ts +59 -0
- package/dist/fhe-airdrop/react/useFactoryFees.d.ts +11 -4
- package/dist/fhe-airdrop/react/useIsActiveDelegate.d.ts +29 -0
- package/dist/fhe-airdrop/react/useIsAirdrop.d.ts +44 -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 +7 -19
- package/dist/fhe-airdrop/react/useMerkleClaimAndUnwrap.d.ts +29 -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 +67 -0
- package/dist/fhe-airdrop/react/useRefreshComplianceBalance.d.ts +36 -0
- 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/useResolveGasFee.d.ts +30 -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/useSignClaimAuthorization.d.ts +42 -0
- package/dist/fhe-airdrop/react/useWithdrawGasFee.d.ts +37 -0
- package/dist/fhe-airdrop/types.d.ts +27 -1
- package/dist/fhe-disperse/index.cjs +21 -21
- package/dist/fhe-disperse/index.js +2 -2
- package/dist/fhe-disperse/react/index.cjs +22 -22
- package/dist/fhe-disperse/react/index.js +3 -3
- package/dist/fhe-vesting/advanced/index.cjs +5 -5
- package/dist/fhe-vesting/advanced/index.js +3 -3
- package/dist/fhe-vesting/advanced/react/index.cjs +7 -7
- package/dist/fhe-vesting/advanced/react/index.js +4 -4
- package/dist/fhe-vesting/index.cjs +8 -8
- package/dist/fhe-vesting/index.js +2 -2
- package/dist/fhe-vesting/react/index.cjs +114 -114
- package/dist/fhe-vesting/react/index.js +3 -3
- package/dist/index.cjs +18 -18
- package/dist/index.js +1 -1
- package/dist/testnet-faucet/index.cjs +14 -14
- package/dist/testnet-faucet/index.js +2 -2
- package/dist/testnet-faucet/react/index.cjs +8 -8
- package/dist/testnet-faucet/react/index.js +3 -3
- package/package.json +1 -1
- package/dist/chunk-NCVX3K2N.cjs +0 -161
- package/dist/chunk-VP2B4WM2.js +0 -154
|
@@ -0,0 +1,28 @@
|
|
|
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 AirdropClientOptions } from "../../react/_shared.js";
|
|
5
|
+
/** @alpha */
|
|
6
|
+
export interface ClearCompliancePolicyArgs extends WriteAccountOverride {
|
|
7
|
+
/** The creator whose override is dropped - not the admin sending the transaction. */
|
|
8
|
+
creator: Address;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Drop a creator's {@link useSetCompliancePolicy} override, reverting them to
|
|
12
|
+
* the factory default. Requires `COMPLIANCE_WIRING_ROLE`.
|
|
13
|
+
*
|
|
14
|
+
* The cleared state is `overridden: false, delegateToCompliance: false`, so
|
|
15
|
+
* `effectiveDelegateToCompliance` then follows the factory default set by
|
|
16
|
+
* {@link useSetDefaultDelegateToCompliance} rather than staying at whatever
|
|
17
|
+
* the override had been.
|
|
18
|
+
*
|
|
19
|
+
* **Invalidates:** `fn "compliancePolicy"` and
|
|
20
|
+
* `fn "effectiveDelegateToCompliance"`, both keyed on `args.creator`.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* const clearPolicy = useClearCompliancePolicy();
|
|
24
|
+
* await clearPolicy.mutateAsync({ creator });
|
|
25
|
+
*
|
|
26
|
+
* @alpha
|
|
27
|
+
*/
|
|
28
|
+
export declare function useClearCompliancePolicy(options?: AirdropClientOptions): UseMutationResult<Hex, Error, ClearCompliancePolicyArgs>;
|
|
@@ -0,0 +1,26 @@
|
|
|
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 AirdropClientOptions } from "../../react/_shared.js";
|
|
5
|
+
/** @alpha */
|
|
6
|
+
export interface ClearUpgradeabilityPolicyArgs extends WriteAccountOverride {
|
|
7
|
+
/** The creator whose override is dropped - not the admin sending the transaction. */
|
|
8
|
+
creator: Address;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Drop a creator's {@link useSetUpgradeabilityPolicy} override, reverting
|
|
12
|
+
* them to the factory default. Requires `UPGRADE_MANAGER_ROLE`.
|
|
13
|
+
*
|
|
14
|
+
* **Invalidates:** `fn "effectiveUpgradeable"` and `fn "upgradeabilityPolicy"`, both
|
|
15
|
+
* keyed on `args.creator`, plus the `fn "preflightCreate"` PREFIX. Reverting to the
|
|
16
|
+
* default flips `effectiveUpgradeable` exactly as setting an override does, and
|
|
17
|
+
* `preflightCreate` reads it to decide whether a `mode: "uups"` create is refused - so
|
|
18
|
+
* omitting the prefix here would leave a create form showing a stale allow/deny.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* const clearPolicy = useClearUpgradeabilityPolicy();
|
|
22
|
+
* await clearPolicy.mutateAsync({ creator });
|
|
23
|
+
*
|
|
24
|
+
* @alpha
|
|
25
|
+
*/
|
|
26
|
+
export declare function useClearUpgradeabilityPolicy(options?: AirdropClientOptions): UseMutationResult<Hex, Error, ClearUpgradeabilityPolicyArgs>;
|
|
@@ -0,0 +1,26 @@
|
|
|
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 AirdropClientOptions } from "../../react/_shared.js";
|
|
5
|
+
/** @alpha */
|
|
6
|
+
export interface DisableCustomFeeArgs extends WriteAccountOverride {
|
|
7
|
+
/** The creator whose override is dropped - NOT the admin sending the transaction. */
|
|
8
|
+
creator: Address;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Drop a creator's per-creator fee override, reverting them to the factory's
|
|
12
|
+
* `defaultGasFee`.
|
|
13
|
+
*
|
|
14
|
+
* Requires `FEE_MANAGER_ROLE`.
|
|
15
|
+
*
|
|
16
|
+
* **Invalidates:** `useFactoryCustomFee({ creator })` for the TARGET creator -
|
|
17
|
+
* `variables.creator`, never the sending admin. Also every `useResolveGasFee`
|
|
18
|
+
* entry: dropping the override sends this creator back to the default.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* const disableCustomFee = useDisableCustomFee();
|
|
22
|
+
* await disableCustomFee.mutateAsync({ creator });
|
|
23
|
+
*
|
|
24
|
+
* @alpha
|
|
25
|
+
*/
|
|
26
|
+
export declare function useDisableCustomFee(options?: AirdropClientOptions): UseMutationResult<Hex, Error, DisableCustomFeeArgs>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type UseQueryResult } from "@tanstack/react-query";
|
|
2
|
+
import type { Hex } from "viem";
|
|
3
|
+
import type { DeploymentMode } from "../../constants.js";
|
|
4
|
+
import { type AirdropHookOptions } from "../../react/_shared.js";
|
|
5
|
+
import type { EcdsaAirdropParams } from "../../types.js";
|
|
6
|
+
/** @alpha */
|
|
7
|
+
export interface UseEcdsaInitCodeHashArgs extends AirdropHookOptions<Hex> {
|
|
8
|
+
params: EcdsaAirdropParams;
|
|
9
|
+
mode: DeploymentMode;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Init-code hash of the ECDSA proxy the factory would deploy for `mode`.
|
|
13
|
+
*
|
|
14
|
+
* The hash tracks the factory's current implementation pointer, so it exists
|
|
15
|
+
* to bracket a prediction for freshness: read it before a campaign build and
|
|
16
|
+
* again after, and a change between the two means an implementation swap
|
|
17
|
+
* landed mid-flight and every address derived from
|
|
18
|
+
* {@link usePredictEcdsaAirdropAddress} is stale. Feed the first observation
|
|
19
|
+
* to `usePreflightCreateAirdrop`'s `expectedInitCodeHash` to have the drift
|
|
20
|
+
* check made for you.
|
|
21
|
+
*
|
|
22
|
+
* Lives on `/advanced/react` beside the predict hooks rather than the
|
|
23
|
+
* headline subpath: on its own the hash answers nothing a UI can act on.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* const before = useEcdsaInitCodeHash({ params, mode: "clone" });
|
|
27
|
+
*
|
|
28
|
+
* @alpha
|
|
29
|
+
*/
|
|
30
|
+
export declare function useEcdsaInitCodeHash(args: UseEcdsaInitCodeHashArgs): UseQueryResult<Hex, Error>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type UseQueryResult } from "@tanstack/react-query";
|
|
2
|
+
import type { Address } from "viem";
|
|
3
|
+
import { type AirdropHookOptions } from "../../react/_shared.js";
|
|
4
|
+
/** @alpha */
|
|
5
|
+
export type UseFactoryComplianceDelegateArgs = AirdropHookOptions<Address>;
|
|
6
|
+
/**
|
|
7
|
+
* The platform-designated compliance delegate the FACTORY wires into every
|
|
8
|
+
* new compliance-manager clone.
|
|
9
|
+
*
|
|
10
|
+
* Deliberately unbundled: its being set is what gates
|
|
11
|
+
* {@link useSetDefaultDelegateToCompliance} with `on: true` (that write
|
|
12
|
+
* reverts `ZeroComplianceDelegate` against the zero address), so an admin
|
|
13
|
+
* panel reads it alone to decide whether to enable the toggle at all.
|
|
14
|
+
*
|
|
15
|
+
* **Not** `ComplianceManagerClient.complianceDelegate()`. That method has the
|
|
16
|
+
* same name on a different contract and returns the delegate one already-
|
|
17
|
+
* deployed manager clone actually uses; this is the factory-level value
|
|
18
|
+
* applied to future clones.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* const { data: delegate } = useFactoryComplianceDelegate();
|
|
22
|
+
*
|
|
23
|
+
* @alpha
|
|
24
|
+
*/
|
|
25
|
+
export declare function useFactoryComplianceDelegate(args?: UseFactoryComplianceDelegateArgs): UseQueryResult<Address, Error>;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type UseQueryResult } from "@tanstack/react-query";
|
|
2
|
+
import type { Address } from "viem";
|
|
3
|
+
import { type AirdropHookOptions } from "../../react/_shared.js";
|
|
4
|
+
/**
|
|
5
|
+
* One creator's delegate-to-compliance override plus what actually applies.
|
|
6
|
+
*
|
|
7
|
+
* @alpha
|
|
8
|
+
*/
|
|
9
|
+
export interface FactoryCompliancePolicy {
|
|
10
|
+
/** Whether this creator has an override at all. `false` means the factory default applies. */
|
|
11
|
+
overridden: boolean;
|
|
12
|
+
/** The override's value. Meaningless while `overridden` is `false`. */
|
|
13
|
+
delegateToCompliance: boolean;
|
|
14
|
+
/** What the factory actually resolves for this creator - the override if `overridden`, else the default. */
|
|
15
|
+
effective: boolean;
|
|
16
|
+
}
|
|
17
|
+
/** @alpha */
|
|
18
|
+
export interface UseFactoryCompliancePolicyArgs extends AirdropHookOptions<FactoryCompliancePolicy> {
|
|
19
|
+
/** The creator whose policy to inspect. */
|
|
20
|
+
creator?: Address;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The admin's per-creator compliance view: the stored override AND the value
|
|
24
|
+
* the factory resolves for that creator. Bundled because only the pair
|
|
25
|
+
* answers "is this creator's setting doing anything?" - an `overridden: true`
|
|
26
|
+
* whose `delegateToCompliance` already matches the default is a no-op a panel
|
|
27
|
+
* should show as such.
|
|
28
|
+
*
|
|
29
|
+
* Overlaps the creator-facing `useEffectiveDelegateToCompliance` by its
|
|
30
|
+
* `effective` field. Intentional: different subpath, different audience, same
|
|
31
|
+
* split as `useEffectiveUpgradeable` vs {@link useFactoryUpgradeabilityPolicy}.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* const { data: policy } = useFactoryCompliancePolicy({ creator });
|
|
35
|
+
*
|
|
36
|
+
* @alpha
|
|
37
|
+
*/
|
|
38
|
+
export declare function useFactoryCompliancePolicy(args?: UseFactoryCompliancePolicyArgs): UseQueryResult<FactoryCompliancePolicy, Error>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type UseQueryResult } from "@tanstack/react-query";
|
|
2
|
+
import type { Address } from "viem";
|
|
3
|
+
import type { CustomFee } from "../../factory.js";
|
|
4
|
+
import { type AirdropHookOptions } from "../../react/_shared.js";
|
|
5
|
+
/** @alpha */
|
|
6
|
+
export interface UseFactoryCustomFeeArgs extends AirdropHookOptions<CustomFee> {
|
|
7
|
+
/** The creator whose override to read. Disabled until set. */
|
|
8
|
+
creator?: Address;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Read one creator's per-claim fee override. `enabled: false` means the
|
|
12
|
+
* factory's `defaultGasFee` (see `useFactoryFees`) applies to them instead.
|
|
13
|
+
*
|
|
14
|
+
* Kept out of the `useFactoryFees` bundle on purpose: this read is
|
|
15
|
+
* per-creator, and folding it in would put a creator address into that
|
|
16
|
+
* chain-wide fee key and fragment the cache one slot per creator.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* const { data: custom } = useFactoryCustomFee({ creator });
|
|
20
|
+
* const fee = custom?.enabled ? custom.gasFee : fees?.defaultGasFee;
|
|
21
|
+
*
|
|
22
|
+
* @alpha
|
|
23
|
+
*/
|
|
24
|
+
export declare function useFactoryCustomFee(args?: UseFactoryCustomFeeArgs): UseQueryResult<CustomFee, Error>;
|
|
@@ -0,0 +1,32 @@
|
|
|
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 AirdropClientOptions } from "../../react/_shared.js";
|
|
5
|
+
/** @alpha */
|
|
6
|
+
export interface FactoryGrantRoleArgs extends WriteAccountOverride {
|
|
7
|
+
/** A `bytes32` role identifier - from {@link useFactoryRoleConstants}, never hand-hashed. */
|
|
8
|
+
role: Hex;
|
|
9
|
+
/** The account receiving the role. Distinct from `account`, which is who sends the transaction. */
|
|
10
|
+
holder: Address;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Grant one factory role.
|
|
14
|
+
*
|
|
15
|
+
* Requires `DEFAULT_ADMIN_ROLE`: the factory administers all five of its roles
|
|
16
|
+
* through the root role and never calls `_setRoleAdmin`, so unlike an airdrop
|
|
17
|
+
* instance there is no self-administered role here - one admin key can grant
|
|
18
|
+
* every one of them.
|
|
19
|
+
*
|
|
20
|
+
* **Invalidates:** this factory's {@link useFactoryHasRole} entry for exactly
|
|
21
|
+
* `(role, holder)` and its {@link useFactoryRoleMembers} entry for `role` (the
|
|
22
|
+
* list and the count both move). Keyed off `variables.holder`, never the
|
|
23
|
+
* sending `account` - the submitter is an admin whose own membership does not
|
|
24
|
+
* change here.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* const grant = useFactoryGrantRole();
|
|
28
|
+
* await grant.mutateAsync({ role: roles.FEE_MANAGER_ROLE, holder: opsAddress });
|
|
29
|
+
*
|
|
30
|
+
* @alpha
|
|
31
|
+
*/
|
|
32
|
+
export declare function useFactoryGrantRole(options?: AirdropClientOptions): UseMutationResult<Hex, Error, FactoryGrantRoleArgs>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type UseQueryResult } from "@tanstack/react-query";
|
|
2
|
+
import type { Address, Hex } from "viem";
|
|
3
|
+
import { type AirdropHookOptions } from "../../react/_shared.js";
|
|
4
|
+
/** @alpha */
|
|
5
|
+
export interface UseFactoryHasRoleArgs extends AirdropHookOptions<boolean> {
|
|
6
|
+
/** A `bytes32` role identifier - from {@link useFactoryRoleConstants}, never hand-hashed. */
|
|
7
|
+
role?: Hex;
|
|
8
|
+
/** The account to check. */
|
|
9
|
+
holder?: Address;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Whether `holder` holds `role` on the factory.
|
|
13
|
+
*
|
|
14
|
+
* Stays disabled (no request fired) until both `role` and `holder` are defined,
|
|
15
|
+
* so a UI can call it unconditionally while a form is still being filled in.
|
|
16
|
+
*
|
|
17
|
+
* Named apart from the instance-level `useAirdropHasRole` and the clone-level
|
|
18
|
+
* `useComplianceHasRole` because these are three different contracts' role
|
|
19
|
+
* sets; the cache never confuses them either, since the key's address segment
|
|
20
|
+
* is the factory.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* const { data: isFeeManager } = useFactoryHasRole({ role: roles?.FEE_MANAGER_ROLE, holder });
|
|
24
|
+
*
|
|
25
|
+
* @alpha
|
|
26
|
+
*/
|
|
27
|
+
export declare function useFactoryHasRole(args?: UseFactoryHasRoleArgs): UseQueryResult<boolean, Error>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type UseQueryResult } from "@tanstack/react-query";
|
|
2
|
+
import type { Address } from "viem";
|
|
3
|
+
import { type AirdropHookOptions } from "../../react/_shared.js";
|
|
4
|
+
/**
|
|
5
|
+
* The three implementation pointers future clones are cut from.
|
|
6
|
+
*
|
|
7
|
+
* @alpha
|
|
8
|
+
*/
|
|
9
|
+
export interface FactoryImplementations {
|
|
10
|
+
/** What `createEcdsaAirdrop*` currently clones. */
|
|
11
|
+
ecdsa: Address;
|
|
12
|
+
/** What `createMerkleAirdrop*` currently clones. */
|
|
13
|
+
merkle: Address;
|
|
14
|
+
/** What each new compliance-manager clone is cut from. */
|
|
15
|
+
complianceManager: Address;
|
|
16
|
+
}
|
|
17
|
+
/** @alpha */
|
|
18
|
+
export type UseFactoryImplementationsArgs = AirdropHookOptions<FactoryImplementations>;
|
|
19
|
+
/**
|
|
20
|
+
* Read all three of the factory's implementation pointers in one round trip -
|
|
21
|
+
* the row an admin panel shows together, so they are bundled rather than
|
|
22
|
+
* shipped as three one-line hooks over three parallel `eth_call`s.
|
|
23
|
+
*
|
|
24
|
+
* These describe FUTURE creates only. Already-deployed instances and
|
|
25
|
+
* compliance-manager clones stay pinned to whatever was live when they were
|
|
26
|
+
* created.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* const { data: impls } = useFactoryImplementations();
|
|
30
|
+
*
|
|
31
|
+
* @alpha
|
|
32
|
+
*/
|
|
33
|
+
export declare function useFactoryImplementations(args?: UseFactoryImplementationsArgs): UseQueryResult<FactoryImplementations, Error>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type UseMutationResult } from "@tanstack/react-query";
|
|
2
|
+
import type { Hex } from "viem";
|
|
3
|
+
import type { WriteAccountOverride } from "../../airdrop-base.js";
|
|
4
|
+
import { type AirdropClientOptions } from "../../react/_shared.js";
|
|
5
|
+
/** @alpha */
|
|
6
|
+
export interface FactoryRenounceRoleArgs extends WriteAccountOverride {
|
|
7
|
+
/** A `bytes32` role identifier - from {@link useFactoryRoleConstants}, never hand-hashed. */
|
|
8
|
+
role: Hex;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Give up a factory role yourself.
|
|
12
|
+
*
|
|
13
|
+
* Self-only by construction: the contract's `renounceRole(role, callerConfirmation)`
|
|
14
|
+
* reverts `AccessControlBadConfirmation` unless the confirmation is the sender,
|
|
15
|
+
* so there is no holder to pass - the headless client fills it from the
|
|
16
|
+
* resolved sending account. To remove a role from somebody else use
|
|
17
|
+
* {@link useFactoryRevokeRole}.
|
|
18
|
+
*
|
|
19
|
+
* **A sole `DEFAULT_ADMIN_ROLE` holder cannot renounce** (audit-14): the factory
|
|
20
|
+
* carries the same `LastAdmin` floor the instances do, so the call reverts
|
|
21
|
+
* instead of freezing role administration permanently. Grant the successor
|
|
22
|
+
* first, then renounce.
|
|
23
|
+
*
|
|
24
|
+
* **Invalidates:** every {@link useFactoryHasRole} entry for this factory
|
|
25
|
+
* (prefix, all role/holder pairs), plus its {@link useFactoryRoleMembers} entry
|
|
26
|
+
* for `role`. The prefix is deliberate - the holder here is whichever account
|
|
27
|
+
* the wallet client resolves at submit time, which need not match any
|
|
28
|
+
* `(role, holder)` pair a component happens to have cached, and a narrower key
|
|
29
|
+
* would invalidate nothing while throwing nothing.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* const renounce = useFactoryRenounceRole();
|
|
33
|
+
* await renounce.mutateAsync({ role: roles.UPGRADE_MANAGER_ROLE });
|
|
34
|
+
*
|
|
35
|
+
* @alpha
|
|
36
|
+
*/
|
|
37
|
+
export declare function useFactoryRenounceRole(options?: AirdropClientOptions): UseMutationResult<Hex, Error, FactoryRenounceRoleArgs>;
|
|
@@ -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 AirdropClientOptions } from "../../react/_shared.js";
|
|
5
|
+
/** @alpha */
|
|
6
|
+
export interface FactoryRevokeRoleArgs extends WriteAccountOverride {
|
|
7
|
+
/** A `bytes32` role identifier - from {@link useFactoryRoleConstants}, never hand-hashed. */
|
|
8
|
+
role: Hex;
|
|
9
|
+
/** The account losing the role. Distinct from `account`, which is who sends the transaction. */
|
|
10
|
+
holder: Address;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Revoke one factory role from one holder.
|
|
14
|
+
*
|
|
15
|
+
* Requires `DEFAULT_ADMIN_ROLE`, which administers all five factory roles.
|
|
16
|
+
*
|
|
17
|
+
* **`DEFAULT_ADMIN_ROLE` is floored at one live member** (audit-14). Revoking
|
|
18
|
+
* the last holder reverts `LastAdmin` rather than succeeding and freezing role
|
|
19
|
+
* administration, which is what it used to do. Granting the role to the zero
|
|
20
|
+
* address reverts `ZeroAdminGrant`, so the floor cannot be satisfied with a
|
|
21
|
+
* member nobody controls either.
|
|
22
|
+
*
|
|
23
|
+
* On the live deployment all five roles sit on one key, so a handover is two
|
|
24
|
+
* steps: grant the successor, then revoke. Show {@link useFactoryRoleMembers}'s
|
|
25
|
+
* `count` next to the button and disable it at `1n`.
|
|
26
|
+
*
|
|
27
|
+
* **Invalidates:** this factory's {@link useFactoryHasRole} entry for exactly
|
|
28
|
+
* `(role, holder)` and its {@link useFactoryRoleMembers} entry for `role`.
|
|
29
|
+
* Keyed off `variables.holder`, never the sending `account`.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* const revoke = useFactoryRevokeRole();
|
|
33
|
+
* await revoke.mutateAsync({ role: roles.IMPL_MANAGER_ROLE, holder: formerOpsAddress });
|
|
34
|
+
*
|
|
35
|
+
* @alpha
|
|
36
|
+
*/
|
|
37
|
+
export declare function useFactoryRevokeRole(options?: AirdropClientOptions): UseMutationResult<Hex, Error, FactoryRevokeRoleArgs>;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { type UseQueryResult } from "@tanstack/react-query";
|
|
2
|
+
import type { Hex } from "viem";
|
|
3
|
+
import { type AirdropHookOptions } from "../../react/_shared.js";
|
|
4
|
+
/**
|
|
5
|
+
* The five `bytes32` role identifiers the factory's admin surface is gated on.
|
|
6
|
+
*
|
|
7
|
+
* @alpha
|
|
8
|
+
*/
|
|
9
|
+
export interface FactoryRoleConstants {
|
|
10
|
+
/** Gates `useSetFeeCollector`, `useSetDefaultGasFee`, `useSetCustomFee`, `useDisableCustomFee`. */
|
|
11
|
+
FEE_MANAGER_ROLE: Hex;
|
|
12
|
+
/** Gates `useSetEcdsaImplementation` and `useSetMerkleImplementation`. */
|
|
13
|
+
IMPL_MANAGER_ROLE: Hex;
|
|
14
|
+
/** Gates the compliance-wiring setters. */
|
|
15
|
+
COMPLIANCE_WIRING_ROLE: Hex;
|
|
16
|
+
/** Gates the upgradeability-policy setters. */
|
|
17
|
+
UPGRADE_MANAGER_ROLE: Hex;
|
|
18
|
+
/** OpenZeppelin's root role, read off the factory rather than assumed to be `bytes32(0)`. It administers the other four and itself. */
|
|
19
|
+
DEFAULT_ADMIN_ROLE: Hex;
|
|
20
|
+
}
|
|
21
|
+
/** @alpha */
|
|
22
|
+
export type UseFactoryRoleConstantsArgs = AirdropHookOptions<FactoryRoleConstants>;
|
|
23
|
+
/**
|
|
24
|
+
* Read the factory's role identifiers in one fan-out.
|
|
25
|
+
*
|
|
26
|
+
* Every value is a bytecode constant, so this defaults to `staleTime: Infinity`
|
|
27
|
+
* (overridable through `query`). Feed the results into
|
|
28
|
+
* {@link useFactoryHasRole}, {@link useFactoryRoleMembers} and the three
|
|
29
|
+
* factory role mutations - hand-hashing `keccak256("FEE_MANAGER_ROLE")`
|
|
30
|
+
* client-side would turn a constant renamed in a future factory version into a
|
|
31
|
+
* `grantRole` that silently grants a role nothing checks.
|
|
32
|
+
*
|
|
33
|
+
* Bundled rather than shipped as five one-liners: a role panel needs the whole
|
|
34
|
+
* palette to render at all. Paired with {@link useFactoryRoleMembers} it is
|
|
35
|
+
* also the live check `FACTORY_ROLE_CONCENTRATION_NOTE` asks for - read the
|
|
36
|
+
* five roles, list each one's holders, and see for yourself whether they sit on
|
|
37
|
+
* one key on the chain you are actually connected to, rather than trusting a
|
|
38
|
+
* fixed string about one deployment at one point in time.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* const { data: roles } = useFactoryRoleConstants();
|
|
42
|
+
* const { data: feeManagers } = useFactoryRoleMembers({ role: roles?.FEE_MANAGER_ROLE });
|
|
43
|
+
*
|
|
44
|
+
* @alpha
|
|
45
|
+
*/
|
|
46
|
+
export declare function useFactoryRoleConstants(args?: UseFactoryRoleConstantsArgs): UseQueryResult<FactoryRoleConstants, Error>;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type UseQueryResult } from "@tanstack/react-query";
|
|
2
|
+
import type { Address, Hex } from "viem";
|
|
3
|
+
import { type AirdropHookOptions } from "../../react/_shared.js";
|
|
4
|
+
/**
|
|
5
|
+
* One factory role's membership - the set and its size, read together.
|
|
6
|
+
*
|
|
7
|
+
* @alpha
|
|
8
|
+
*/
|
|
9
|
+
export interface FactoryRoleMembership {
|
|
10
|
+
/** Every account currently holding the role, in the contract's `EnumerableSet` order. */
|
|
11
|
+
members: readonly Address[];
|
|
12
|
+
/** How many accounts hold it. */
|
|
13
|
+
count: bigint;
|
|
14
|
+
}
|
|
15
|
+
/** @alpha */
|
|
16
|
+
export interface UseFactoryRoleMembersArgs extends AirdropHookOptions<FactoryRoleMembership> {
|
|
17
|
+
/** The role whose members to list - from {@link useFactoryRoleConstants}, never hand-hashed. */
|
|
18
|
+
role?: Hex;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* List who holds `role` on the factory, with the member count.
|
|
22
|
+
*
|
|
23
|
+
* This is the live half of the role-concentration check
|
|
24
|
+
* `FACTORY_ROLE_CONCENTRATION_NOTE` prescribes: run it over the five roles from
|
|
25
|
+
* {@link useFactoryRoleConstants} and compare the holder sets, instead of
|
|
26
|
+
* trusting a fixed string that describes one deployment at one moment.
|
|
27
|
+
*
|
|
28
|
+
* `count` is bundled with the list rather than split into its own hook because
|
|
29
|
+
* it is what a UI needs in the same render to decide whether a revoke will be
|
|
30
|
+
* accepted: since audit-14 the factory floors `DEFAULT_ADMIN_ROLE` at one live
|
|
31
|
+
* member, so revoking or renouncing the last holder reverts `LastAdmin`.
|
|
32
|
+
* Disable the button at `count === 1n` rather than letting the user burn gas
|
|
33
|
+
* discovering it.
|
|
34
|
+
*
|
|
35
|
+
* Unpaginated: factory role sets are operator-sized, not user-sized.
|
|
36
|
+
*
|
|
37
|
+
* @remarks
|
|
38
|
+
* Invalidated by {@link useFactoryGrantRole}, {@link useFactoryRevokeRole} and
|
|
39
|
+
* {@link useFactoryRenounceRole}. Member order is `EnumerableSet`'s and is not
|
|
40
|
+
* stable across grants and revokes - treat it as a set, not a list.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* const { data } = useFactoryRoleMembers({ role: roles?.DEFAULT_ADMIN_ROLE });
|
|
44
|
+
* const lastAdmin = data?.count === 1n; // revoke/renounce would revert LastAdmin
|
|
45
|
+
*
|
|
46
|
+
* @alpha
|
|
47
|
+
*/
|
|
48
|
+
export declare function useFactoryRoleMembers(args?: UseFactoryRoleMembersArgs): UseQueryResult<FactoryRoleMembership, Error>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type UseQueryResult } from "@tanstack/react-query";
|
|
2
|
+
import type { Address } from "viem";
|
|
3
|
+
import { type AirdropHookOptions } from "../../react/_shared.js";
|
|
4
|
+
/**
|
|
5
|
+
* The factory default, one creator's override, and the resolved value.
|
|
6
|
+
*
|
|
7
|
+
* @alpha
|
|
8
|
+
*/
|
|
9
|
+
export interface FactoryUpgradeabilityPolicy {
|
|
10
|
+
/** What applies to creators with no override. */
|
|
11
|
+
defaultUpgradeable: boolean;
|
|
12
|
+
/** Whether this creator has an override at all. */
|
|
13
|
+
overridden: boolean;
|
|
14
|
+
/** The override's value. Meaningless while `overridden` is `false`. */
|
|
15
|
+
allowed: boolean;
|
|
16
|
+
/** What the factory actually resolves for this creator, and what a `mode: "uups"` create is checked against. */
|
|
17
|
+
effective: boolean;
|
|
18
|
+
}
|
|
19
|
+
/** @alpha */
|
|
20
|
+
export interface UseFactoryUpgradeabilityPolicyArgs extends AirdropHookOptions<FactoryUpgradeabilityPolicy> {
|
|
21
|
+
/** The creator whose policy to inspect. */
|
|
22
|
+
creator?: Address;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* The admin panel's full upgradeability answer for one creator, in one round
|
|
26
|
+
* trip: the factory default, the per-creator override, and the resolved
|
|
27
|
+
* value. Absorbing `defaultUpgradeable()` here is why it needs no hook of its
|
|
28
|
+
* own.
|
|
29
|
+
*
|
|
30
|
+
* Duplicates the creator-facing `useEffectiveUpgradeable`'s single field
|
|
31
|
+
* rather than replacing it - that hook stays the cheap read a create form
|
|
32
|
+
* uses to decide whether to offer UUPS.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* const { data: policy } = useFactoryUpgradeabilityPolicy({ creator });
|
|
36
|
+
*
|
|
37
|
+
* @alpha
|
|
38
|
+
*/
|
|
39
|
+
export declare function useFactoryUpgradeabilityPolicy(args?: UseFactoryUpgradeabilityPolicyArgs): UseQueryResult<FactoryUpgradeabilityPolicy, Error>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type UseQueryResult } from "@tanstack/react-query";
|
|
2
|
+
import type { Hex } from "viem";
|
|
3
|
+
import type { DeploymentMode } from "../../constants.js";
|
|
4
|
+
import { type AirdropHookOptions } from "../../react/_shared.js";
|
|
5
|
+
import type { MerkleAirdropParams } from "../../types.js";
|
|
6
|
+
/** @alpha */
|
|
7
|
+
export interface UseMerkleInitCodeHashArgs extends AirdropHookOptions<Hex> {
|
|
8
|
+
params: MerkleAirdropParams;
|
|
9
|
+
mode: DeploymentMode;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Init-code hash of the Merkle proxy the factory would deploy for `mode` -
|
|
13
|
+
* the Merkle counterpart of {@link useEcdsaInitCodeHash}, with the same
|
|
14
|
+
* before/after bracketing job and the same `/advanced/react` home.
|
|
15
|
+
*
|
|
16
|
+
* `usePlanMerkleCampaign` already brackets its own build with this read, so
|
|
17
|
+
* reach for the hook only when driving prediction by hand.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* const before = useMerkleInitCodeHash({ params, mode: "clone" });
|
|
21
|
+
*
|
|
22
|
+
* @alpha
|
|
23
|
+
*/
|
|
24
|
+
export declare function useMerkleInitCodeHash(args: UseMerkleInitCodeHashArgs): UseQueryResult<Hex, Error>;
|
|
@@ -0,0 +1,33 @@
|
|
|
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 AirdropClientOptions } from "../../react/_shared.js";
|
|
5
|
+
/** @alpha */
|
|
6
|
+
export interface SetComplianceDelegateArgs extends WriteAccountOverride {
|
|
7
|
+
/** Platform delegate wired into future compliance-manager clones. The zero address reverts `ZeroComplianceDelegate`. */
|
|
8
|
+
delegate: Address;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Set the platform-designated compliance delegate that every new
|
|
12
|
+
* compliance-manager clone wires in. Requires `COMPLIANCE_WIRING_ROLE`.
|
|
13
|
+
*
|
|
14
|
+
* **Ordering is load-bearing.** Call this before
|
|
15
|
+
* {@link useSetDefaultDelegateToCompliance} with `on: true` - turning
|
|
16
|
+
* delegation on while no delegate is set reverts `ZeroComplianceDelegate`. An
|
|
17
|
+
* admin panel must sequence the two writes, and read
|
|
18
|
+
* {@link useFactoryComplianceDelegate} to decide whether the toggle is even
|
|
19
|
+
* offerable.
|
|
20
|
+
*
|
|
21
|
+
* Applies to FUTURE clones only; it cannot retro-wire managers that already
|
|
22
|
+
* exist.
|
|
23
|
+
*
|
|
24
|
+
* **Invalidates:** the factory's `fn "complianceDelegate"` entry
|
|
25
|
+
* ({@link useFactoryComplianceDelegate}).
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* const setDelegate = useSetComplianceDelegate();
|
|
29
|
+
* await setDelegate.mutateAsync({ delegate: platformDelegate });
|
|
30
|
+
*
|
|
31
|
+
* @alpha
|
|
32
|
+
*/
|
|
33
|
+
export declare function useSetComplianceDelegate(options?: AirdropClientOptions): UseMutationResult<Hex, Error, SetComplianceDelegateArgs>;
|
|
@@ -0,0 +1,27 @@
|
|
|
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 AirdropClientOptions } from "../../react/_shared.js";
|
|
5
|
+
/** @alpha */
|
|
6
|
+
export interface SetComplianceManagerImplArgs extends WriteAccountOverride {
|
|
7
|
+
/** New compliance-manager implementation. The zero address reverts `ZeroComplianceManagerImpl`. */
|
|
8
|
+
implementation: Address;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Point future compliance-manager clones at a new implementation. Requires
|
|
12
|
+
* `COMPLIANCE_WIRING_ROLE`.
|
|
13
|
+
*
|
|
14
|
+
* Only clones created after this lands use the new code — already-deployed
|
|
15
|
+
* managers keep the implementation they were cloned from, so this is not a
|
|
16
|
+
* fleet-wide upgrade.
|
|
17
|
+
*
|
|
18
|
+
* **Invalidates:** the factory's `fn "implementations"` entry, which carries
|
|
19
|
+
* `complianceManagerImpl` alongside the ECDSA/Merkle pointers.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* const setImpl = useSetComplianceManagerImpl();
|
|
23
|
+
* await setImpl.mutateAsync({ implementation: newManagerImpl });
|
|
24
|
+
*
|
|
25
|
+
* @alpha
|
|
26
|
+
*/
|
|
27
|
+
export declare function useSetComplianceManagerImpl(options?: AirdropClientOptions): UseMutationResult<Hex, Error, SetComplianceManagerImplArgs>;
|
|
@@ -0,0 +1,28 @@
|
|
|
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 AirdropClientOptions } from "../../react/_shared.js";
|
|
5
|
+
/** @alpha */
|
|
6
|
+
export interface SetCompliancePolicyArgs extends WriteAccountOverride {
|
|
7
|
+
/** The creator the override applies to - not the admin sending the transaction. */
|
|
8
|
+
creator: Address;
|
|
9
|
+
/** Whether that creator's new instances delegate compliance disclosure to the platform delegate. */
|
|
10
|
+
delegateToCompliance: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Override the factory's default delegate-to-compliance policy for one
|
|
14
|
+
* creator. Requires `COMPLIANCE_WIRING_ROLE`.
|
|
15
|
+
*
|
|
16
|
+
* **Invalidates:** `fn "compliancePolicy"` and
|
|
17
|
+
* `fn "effectiveDelegateToCompliance"`, both keyed on `args.creator` - the
|
|
18
|
+
* TARGET creator, never the sending admin. Keying on the sender would leave
|
|
19
|
+
* the panel's view of the creator it just edited stale while invalidating an
|
|
20
|
+
* entry nobody rendered.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* const setPolicy = useSetCompliancePolicy();
|
|
24
|
+
* await setPolicy.mutateAsync({ creator, delegateToCompliance: true });
|
|
25
|
+
*
|
|
26
|
+
* @alpha
|
|
27
|
+
*/
|
|
28
|
+
export declare function useSetCompliancePolicy(options?: AirdropClientOptions): UseMutationResult<Hex, Error, SetCompliancePolicyArgs>;
|