@zama-fhe/react-sdk 3.0.0-alpha.8 → 3.0.0-alpha.9
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/dist/index.d.ts +73 -81
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import * as _$_zama_fhe_sdk0 from "@zama-fhe/sdk";
|
|
4
|
-
import {
|
|
5
|
-
import { ApproveUnderlyingParams,
|
|
4
|
+
import { Address, BatchBalancesResult, ClearValueType, DelegatedUserDecryptParams, EIP712TypedData, EncryptParams, GenericSigner, GenericStorage, PaginatedResult, PublicKeyData, ReadonlyToken, RelayerSDK, TokenWrapperPair, TokenWrapperPairWithMetadata, TransactionResult, ZKProofLike, ZamaSDK, ZamaSDKEventListener } from "@zama-fhe/sdk";
|
|
5
|
+
import { ApproveUnderlyingParams, BatchDecryptBalancesAsParams, ConfidentialApproveParams, ConfidentialTransferFromParams, ConfidentialTransferParams, CreateDelegatedUserDecryptEIP712Params, CreateEIP712Params, DecryptBalanceAsParams, DecryptResult, DelegateDecryptionParams, DelegationStatusData, FinalizeUnwrapParams, ResumeUnshieldParams, RevokeDelegationParams, ShieldParams, TokenMetadata, UnshieldAllParams, UnshieldParams, UnwrapParams, UserDecryptQueryConfig } from "@zama-fhe/sdk/query";
|
|
6
6
|
import * as _$_tanstack_react_query0 from "@tanstack/react-query";
|
|
7
|
-
import {
|
|
7
|
+
import { UseMutationOptions, UseMutationResult, UseQueryOptions } from "@tanstack/react-query";
|
|
8
8
|
import { PropsWithChildren } from "react";
|
|
9
9
|
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
10
10
|
import * as _$_zama_fhe_relayer_sdk_web0 from "@zama-fhe/relayer-sdk/web";
|
|
@@ -13,16 +13,16 @@ import * as _$_zama_fhe_relayer_sdk_web0 from "@zama-fhe/relayer-sdk/web";
|
|
|
13
13
|
/** Props for {@link ZamaProvider}. */
|
|
14
14
|
interface ZamaProviderProps extends PropsWithChildren {
|
|
15
15
|
/** FHE relayer backend (RelayerWeb for browser, RelayerNode for server). */
|
|
16
|
-
relayer: RelayerSDK
|
|
16
|
+
relayer: RelayerSDK;
|
|
17
17
|
/** Wallet signer (`ViemSigner`, `EthersSigner`, or custom {@link GenericSigner}). */
|
|
18
|
-
signer: GenericSigner
|
|
18
|
+
signer: GenericSigner;
|
|
19
19
|
/** Credential storage backend (IndexedDBStorage for browser, MemoryStorage for tests). */
|
|
20
|
-
storage: GenericStorage
|
|
20
|
+
storage: GenericStorage;
|
|
21
21
|
/**
|
|
22
22
|
* Session storage for wallet signatures. Defaults to in-memory (lost on reload).
|
|
23
23
|
* Pass a `chrome.storage.session`-backed store for web extensions.
|
|
24
24
|
*/
|
|
25
|
-
sessionStorage?: GenericStorage
|
|
25
|
+
sessionStorage?: GenericStorage;
|
|
26
26
|
/**
|
|
27
27
|
* How long the ML-KEM re-encryption keypair remains valid, in seconds.
|
|
28
28
|
* Default: `86400` (1 day). Must be positive — `0` is rejected.
|
|
@@ -39,14 +39,14 @@ interface ZamaProviderProps extends PropsWithChildren {
|
|
|
39
39
|
* Per-chain wrappers registry address overrides, merged on top of built-in defaults.
|
|
40
40
|
* Use this for custom or local chains (e.g. Hardhat) where no default registry exists.
|
|
41
41
|
*/
|
|
42
|
-
registryAddresses?: Record<number, Address
|
|
42
|
+
registryAddresses?: Record<number, Address>;
|
|
43
43
|
/**
|
|
44
44
|
* How long cached registry results remain valid, in seconds.
|
|
45
45
|
* Default: `86400` (24 hours).
|
|
46
46
|
*/
|
|
47
47
|
registryTTL?: number;
|
|
48
48
|
/** Callback invoked on SDK lifecycle events. */
|
|
49
|
-
onEvent?: ZamaSDKEventListener
|
|
49
|
+
onEvent?: ZamaSDKEventListener;
|
|
50
50
|
}
|
|
51
51
|
/**
|
|
52
52
|
* Provides a {@link ZamaSDK} instance to all descendant hooks.
|
|
@@ -80,7 +80,7 @@ declare function ZamaProvider({
|
|
|
80
80
|
* const token = sdk.createReadonlyToken("0x...");
|
|
81
81
|
* ```
|
|
82
82
|
*/
|
|
83
|
-
declare function useZamaSDK(): ZamaSDK
|
|
83
|
+
declare function useZamaSDK(): ZamaSDK;
|
|
84
84
|
//#endregion
|
|
85
85
|
//#region src/relayer/use-encrypt.d.ts
|
|
86
86
|
/**
|
|
@@ -101,14 +101,14 @@ declare function useZamaSDK(): ZamaSDK$1;
|
|
|
101
101
|
declare function useEncrypt(): _$_tanstack_react_query0.UseMutationResult<Readonly<{
|
|
102
102
|
handles: Uint8Array[];
|
|
103
103
|
inputProof: Uint8Array;
|
|
104
|
-
}>, Error, EncryptParams
|
|
104
|
+
}>, Error, EncryptParams, unknown>;
|
|
105
105
|
//#endregion
|
|
106
106
|
//#region src/relayer/use-user-decrypt.d.ts
|
|
107
107
|
/**
|
|
108
108
|
* React hook for FHE user decryption. Thin wrapper around
|
|
109
109
|
* `userDecryptQueryOptions` with `useQuery` semantics.
|
|
110
110
|
*/
|
|
111
|
-
declare function useUserDecrypt(config: UserDecryptQueryConfig
|
|
111
|
+
declare function useUserDecrypt(config: UserDecryptQueryConfig, options?: Omit<UseQueryOptions<DecryptResult>, "queryKey" | "queryFn">): _$_tanstack_react_query0.UseQueryResult<Readonly<Record<`0x${string}`, _$_zama_fhe_sdk0.ClearValueType>>, Error>;
|
|
112
112
|
/** Return type of {@link useUserDecrypt}. */
|
|
113
113
|
type UseUserDecryptResult = ReturnType<typeof useUserDecrypt>;
|
|
114
114
|
//#endregion
|
|
@@ -169,7 +169,7 @@ declare function useGenerateKeypair(): _$_tanstack_react_query0.UseMutationResul
|
|
|
169
169
|
* });
|
|
170
170
|
* ```
|
|
171
171
|
*/
|
|
172
|
-
declare function useCreateEIP712(): _$_tanstack_react_query0.UseMutationResult<EIP712TypedData
|
|
172
|
+
declare function useCreateEIP712(): _$_tanstack_react_query0.UseMutationResult<EIP712TypedData, Error, CreateEIP712Params, unknown>;
|
|
173
173
|
//#endregion
|
|
174
174
|
//#region src/relayer/use-create-delegated-user-decrypt-eip712.d.ts
|
|
175
175
|
/**
|
|
@@ -210,7 +210,7 @@ declare function useCreateDelegatedUserDecryptEIP712(): _$_tanstack_react_query0
|
|
|
210
210
|
* // decrypt.data => { "0xHandle1": 1000n }
|
|
211
211
|
* ```
|
|
212
212
|
*/
|
|
213
|
-
declare function useDelegatedUserDecrypt(): _$_tanstack_react_query0.UseMutationResult<Record<`0x${string}`, ClearValueType
|
|
213
|
+
declare function useDelegatedUserDecrypt(): _$_tanstack_react_query0.UseMutationResult<Record<`0x${string}`, ClearValueType>, Error, DelegatedUserDecryptParams, unknown>;
|
|
214
214
|
//#endregion
|
|
215
215
|
//#region src/relayer/use-request-zk-proof-verification.d.ts
|
|
216
216
|
/**
|
|
@@ -229,7 +229,7 @@ declare function useDelegatedUserDecrypt(): _$_tanstack_react_query0.UseMutation
|
|
|
229
229
|
declare function useRequestZKProofVerification(): _$_tanstack_react_query0.UseMutationResult<Readonly<{
|
|
230
230
|
handles: Uint8Array[];
|
|
231
231
|
inputProof: Uint8Array;
|
|
232
|
-
}>, Error, ZKProofLike
|
|
232
|
+
}>, Error, ZKProofLike, unknown>;
|
|
233
233
|
//#endregion
|
|
234
234
|
//#region src/relayer/use-public-key.d.ts
|
|
235
235
|
/**
|
|
@@ -286,13 +286,13 @@ declare function usePublicParams(bits: number): _$_tanstack_react_query0.UseQuer
|
|
|
286
286
|
* await allow([tokenAddress, auctionAddress, governanceAddress]);
|
|
287
287
|
* ```
|
|
288
288
|
*/
|
|
289
|
-
declare function useAllow(options?: UseMutationOptions<void, Error, Address
|
|
289
|
+
declare function useAllow(options?: UseMutationOptions<void, Error, Address[]>): _$_tanstack_react_query0.UseMutationResult<void, Error, `0x${string}`[], unknown>;
|
|
290
290
|
//#endregion
|
|
291
291
|
//#region src/authorization/use-is-allowed.d.ts
|
|
292
292
|
/** Configuration for {@link useIsAllowed}. */
|
|
293
293
|
interface UseIsAllowedConfig {
|
|
294
294
|
/** Contract addresses to check credentials against (at least one required). */
|
|
295
|
-
contractAddresses: [Address
|
|
295
|
+
contractAddresses: [Address, ...Address[]];
|
|
296
296
|
}
|
|
297
297
|
/**
|
|
298
298
|
* Check whether a session signature is cached for the connected wallet
|
|
@@ -321,7 +321,7 @@ declare function useIsAllowed(config: UseIsAllowedConfig): _$_tanstack_react_que
|
|
|
321
321
|
* revoke([tokenAddress, auctionAddress]);
|
|
322
322
|
* ```
|
|
323
323
|
*/
|
|
324
|
-
declare function useRevoke(options?: UseMutationOptions<void, Error, Address
|
|
324
|
+
declare function useRevoke(options?: UseMutationOptions<void, Error, Address[]>): _$_tanstack_react_query0.UseMutationResult<void, Error, `0x${string}`[], unknown>;
|
|
325
325
|
//#endregion
|
|
326
326
|
//#region src/authorization/use-revoke-session.d.ts
|
|
327
327
|
/**
|
|
@@ -340,9 +340,9 @@ declare function useRevokeSession(options?: UseMutationOptions<void>): _$_tansta
|
|
|
340
340
|
/** Base configuration shared by all mutation hooks that need a Token instance. */
|
|
341
341
|
interface UseZamaConfig {
|
|
342
342
|
/** Address of the confidential token contract. */
|
|
343
|
-
tokenAddress: Address
|
|
343
|
+
tokenAddress: Address;
|
|
344
344
|
/** Address of the wrapper contract (required for shield/unshield operations). */
|
|
345
|
-
wrapperAddress?: Address
|
|
345
|
+
wrapperAddress?: Address;
|
|
346
346
|
}
|
|
347
347
|
/**
|
|
348
348
|
* Get a {@link Token} instance, memoized by address pair.
|
|
@@ -373,13 +373,13 @@ declare function useToken(config: UseZamaConfig): _$_zama_fhe_sdk0.Token;
|
|
|
373
373
|
* // token.balanceOf(), token.isConfidential(), etc.
|
|
374
374
|
* ```
|
|
375
375
|
*/
|
|
376
|
-
declare function useReadonlyToken(address: Address
|
|
376
|
+
declare function useReadonlyToken(address: Address): _$_zama_fhe_sdk0.ReadonlyToken;
|
|
377
377
|
//#endregion
|
|
378
378
|
//#region src/balance/use-confidential-balance.d.ts
|
|
379
379
|
/** Configuration for {@link useConfidentialBalance}. */
|
|
380
380
|
interface UseConfidentialBalanceConfig {
|
|
381
381
|
/** Address of the confidential token contract. */
|
|
382
|
-
tokenAddress: Address
|
|
382
|
+
tokenAddress: Address;
|
|
383
383
|
}
|
|
384
384
|
/** Query options for {@link useConfidentialBalance}. */
|
|
385
385
|
interface UseConfidentialBalanceOptions extends Omit<UseQueryOptions<bigint>, "queryKey" | "queryFn" | "enabled"> {
|
|
@@ -409,10 +409,10 @@ declare function useConfidentialBalance(config: UseConfidentialBalanceConfig, op
|
|
|
409
409
|
/** Configuration for {@link useConfidentialBalances}. */
|
|
410
410
|
interface UseConfidentialBalancesConfig {
|
|
411
411
|
/** Addresses of the confidential token contracts to batch-query. */
|
|
412
|
-
tokenAddresses: Address
|
|
412
|
+
tokenAddresses: Address[];
|
|
413
413
|
}
|
|
414
414
|
/** Query options for {@link useConfidentialBalances}. */
|
|
415
|
-
interface UseConfidentialBalancesOptions extends Omit<UseQueryOptions<BatchBalancesResult
|
|
415
|
+
interface UseConfidentialBalancesOptions extends Omit<UseQueryOptions<BatchBalancesResult>, "queryKey" | "queryFn" | "enabled"> {
|
|
416
416
|
/** Whether the query is enabled. Callback form is not supported in composite hooks. */
|
|
417
417
|
enabled?: boolean;
|
|
418
418
|
}
|
|
@@ -440,7 +440,7 @@ interface UseConfidentialBalancesOptions extends Omit<UseQueryOptions<BatchBalan
|
|
|
440
440
|
* }
|
|
441
441
|
* ```
|
|
442
442
|
*/
|
|
443
|
-
declare function useConfidentialBalances(config: UseConfidentialBalancesConfig, options?: UseConfidentialBalancesOptions): _$_tanstack_react_query0.UseQueryResult<BatchBalancesResult
|
|
443
|
+
declare function useConfidentialBalances(config: UseConfidentialBalancesConfig, options?: UseConfidentialBalancesOptions): _$_tanstack_react_query0.UseQueryResult<BatchBalancesResult, Error>;
|
|
444
444
|
//#endregion
|
|
445
445
|
//#region src/transfer/use-confidential-transfer.d.ts
|
|
446
446
|
/** Configuration for {@link useConfidentialTransfer}. */
|
|
@@ -482,7 +482,7 @@ interface UseConfidentialTransferConfig extends UseZamaConfig {
|
|
|
482
482
|
* );
|
|
483
483
|
* ```
|
|
484
484
|
*/
|
|
485
|
-
declare function useConfidentialTransfer<TContext = unknown>(config: UseConfidentialTransferConfig, options?: UseMutationOptions<TransactionResult
|
|
485
|
+
declare function useConfidentialTransfer<TContext = unknown>(config: UseConfidentialTransferConfig, options?: UseMutationOptions<TransactionResult, Error, ConfidentialTransferParams, TContext>): UseMutationResult<TransactionResult, Error, ConfidentialTransferParams, TContext>;
|
|
486
486
|
//#endregion
|
|
487
487
|
//#region src/transfer/use-confidential-transfer-from.d.ts
|
|
488
488
|
/**
|
|
@@ -503,7 +503,7 @@ declare function useConfidentialTransfer<TContext = unknown>(config: UseConfiden
|
|
|
503
503
|
* transferFrom.mutate({ from: "0xOwner", to: "0xRecipient", amount: 500n });
|
|
504
504
|
* ```
|
|
505
505
|
*/
|
|
506
|
-
declare function useConfidentialTransferFrom(config: UseZamaConfig, options?: UseMutationOptions<TransactionResult
|
|
506
|
+
declare function useConfidentialTransferFrom(config: UseZamaConfig, options?: UseMutationOptions<TransactionResult, Error, ConfidentialTransferFromParams, Address>): _$_tanstack_react_query0.UseMutationResult<TransactionResult, Error, ConfidentialTransferFromParams, `0x${string}`>;
|
|
507
507
|
//#endregion
|
|
508
508
|
//#region src/transfer/use-confidential-approve.d.ts
|
|
509
509
|
/**
|
|
@@ -522,24 +522,24 @@ declare function useConfidentialTransferFrom(config: UseZamaConfig, options?: Us
|
|
|
522
522
|
* approve.mutate({ spender: "0xOperator" });
|
|
523
523
|
* ```
|
|
524
524
|
*/
|
|
525
|
-
declare function useConfidentialApprove(config: UseZamaConfig, options?: UseMutationOptions<TransactionResult
|
|
525
|
+
declare function useConfidentialApprove(config: UseZamaConfig, options?: UseMutationOptions<TransactionResult, Error, ConfidentialApproveParams, Address>): _$_tanstack_react_query0.UseMutationResult<TransactionResult, Error, ConfidentialApproveParams, `0x${string}`>;
|
|
526
526
|
//#endregion
|
|
527
527
|
//#region src/transfer/use-confidential-is-approved.d.ts
|
|
528
528
|
/** Configuration for {@link useConfidentialIsApproved}. */
|
|
529
529
|
interface UseConfidentialIsApprovedConfig {
|
|
530
530
|
/** Address of the confidential token contract. Pass `undefined` to disable the query. */
|
|
531
|
-
tokenAddress: Address
|
|
531
|
+
tokenAddress: Address | undefined;
|
|
532
532
|
/** Address to check approval for. Pass `undefined` to disable the query. */
|
|
533
|
-
spender: Address
|
|
533
|
+
spender: Address | undefined;
|
|
534
534
|
/** Token holder address. Defaults to the connected wallet. */
|
|
535
|
-
holder?: Address
|
|
535
|
+
holder?: Address;
|
|
536
536
|
}
|
|
537
537
|
/** Configuration for {@link useConfidentialIsApprovedSuspense}. */
|
|
538
538
|
interface UseConfidentialIsApprovedSuspenseConfig extends UseZamaConfig {
|
|
539
539
|
/** Address to check approval for. */
|
|
540
|
-
spender: Address
|
|
540
|
+
spender: Address;
|
|
541
541
|
/** Token holder address. Defaults to the connected wallet. */
|
|
542
|
-
holder?: Address
|
|
542
|
+
holder?: Address;
|
|
543
543
|
}
|
|
544
544
|
/**
|
|
545
545
|
* Check if a spender is an approved operator for a given holder (defaults to connected wallet).
|
|
@@ -605,7 +605,7 @@ interface UseShieldConfig extends UseZamaConfig {
|
|
|
605
605
|
* shield.mutate({ amount: 1000n });
|
|
606
606
|
* ```
|
|
607
607
|
*/
|
|
608
|
-
declare function useShield<TContext = unknown>(config: UseShieldConfig, options?: UseMutationOptions<TransactionResult
|
|
608
|
+
declare function useShield<TContext = unknown>(config: UseShieldConfig, options?: UseMutationOptions<TransactionResult, Error, ShieldParams, TContext>): UseMutationResult<TransactionResult, Error, ShieldParams, TContext>;
|
|
609
609
|
//#endregion
|
|
610
610
|
//#region src/unwrap/use-unwrap.d.ts
|
|
611
611
|
/**
|
|
@@ -627,7 +627,7 @@ declare function useShield<TContext = unknown>(config: UseShieldConfig, options?
|
|
|
627
627
|
* unwrap.mutate({ amount: 500n });
|
|
628
628
|
* ```
|
|
629
629
|
*/
|
|
630
|
-
declare function useUnwrap(config: UseZamaConfig, options?: UseMutationOptions<TransactionResult
|
|
630
|
+
declare function useUnwrap(config: UseZamaConfig, options?: UseMutationOptions<TransactionResult, Error, UnwrapParams, Address>): _$_tanstack_react_query0.UseMutationResult<TransactionResult, Error, UnwrapParams, `0x${string}`>;
|
|
631
631
|
//#endregion
|
|
632
632
|
//#region src/unwrap/use-unwrap-all.d.ts
|
|
633
633
|
/**
|
|
@@ -648,7 +648,7 @@ declare function useUnwrap(config: UseZamaConfig, options?: UseMutationOptions<T
|
|
|
648
648
|
* unwrapAll.mutate();
|
|
649
649
|
* ```
|
|
650
650
|
*/
|
|
651
|
-
declare function useUnwrapAll(config: UseZamaConfig, options?: UseMutationOptions<TransactionResult
|
|
651
|
+
declare function useUnwrapAll(config: UseZamaConfig, options?: UseMutationOptions<TransactionResult, Error, void, Address>): _$_tanstack_react_query0.UseMutationResult<TransactionResult, Error, void, `0x${string}`>;
|
|
652
652
|
//#endregion
|
|
653
653
|
//#region src/unwrap/use-finalize-unwrap.d.ts
|
|
654
654
|
/**
|
|
@@ -669,7 +669,7 @@ declare function useUnwrapAll(config: UseZamaConfig, options?: UseMutationOption
|
|
|
669
669
|
* finalize.mutate({ unwrapRequestId: event.unwrapRequestId });
|
|
670
670
|
* ```
|
|
671
671
|
*/
|
|
672
|
-
declare function useFinalizeUnwrap(config: UseZamaConfig, options?: UseMutationOptions<TransactionResult
|
|
672
|
+
declare function useFinalizeUnwrap(config: UseZamaConfig, options?: UseMutationOptions<TransactionResult, Error, FinalizeUnwrapParams, Address>): _$_tanstack_react_query0.UseMutationResult<TransactionResult, Error, FinalizeUnwrapParams, `0x${string}`>;
|
|
673
673
|
//#endregion
|
|
674
674
|
//#region src/unshield/use-unshield.d.ts
|
|
675
675
|
/**
|
|
@@ -691,7 +691,7 @@ declare function useFinalizeUnwrap(config: UseZamaConfig, options?: UseMutationO
|
|
|
691
691
|
* unshield.mutate({ amount: 500n });
|
|
692
692
|
* ```
|
|
693
693
|
*/
|
|
694
|
-
declare function useUnshield(config: UseZamaConfig, options?: UseMutationOptions<TransactionResult
|
|
694
|
+
declare function useUnshield(config: UseZamaConfig, options?: UseMutationOptions<TransactionResult, Error, UnshieldParams, Address>): _$_tanstack_react_query0.UseMutationResult<TransactionResult, Error, UnshieldParams, `0x${string}`>;
|
|
695
695
|
//#endregion
|
|
696
696
|
//#region src/unshield/use-unshield-all.d.ts
|
|
697
697
|
/**
|
|
@@ -712,7 +712,7 @@ declare function useUnshield(config: UseZamaConfig, options?: UseMutationOptions
|
|
|
712
712
|
* unshieldAll.mutate();
|
|
713
713
|
* ```
|
|
714
714
|
*/
|
|
715
|
-
declare function useUnshieldAll(config: UseZamaConfig, options?: UseMutationOptions<TransactionResult
|
|
715
|
+
declare function useUnshieldAll(config: UseZamaConfig, options?: UseMutationOptions<TransactionResult, Error, UnshieldAllParams | void, Address>): _$_tanstack_react_query0.UseMutationResult<TransactionResult, Error, void | UnshieldAllParams, `0x${string}`>;
|
|
716
716
|
//#endregion
|
|
717
717
|
//#region src/unshield/use-resume-unshield.d.ts
|
|
718
718
|
/**
|
|
@@ -733,15 +733,15 @@ declare function useUnshieldAll(config: UseZamaConfig, options?: UseMutationOpti
|
|
|
733
733
|
* resumeUnshield.mutate({ unwrapTxHash: "0xabc..." });
|
|
734
734
|
* ```
|
|
735
735
|
*/
|
|
736
|
-
declare function useResumeUnshield(config: UseZamaConfig, options?: UseMutationOptions<TransactionResult
|
|
736
|
+
declare function useResumeUnshield(config: UseZamaConfig, options?: UseMutationOptions<TransactionResult, Error, ResumeUnshieldParams, Address>): _$_tanstack_react_query0.UseMutationResult<TransactionResult, Error, ResumeUnshieldParams, `0x${string}`>;
|
|
737
737
|
//#endregion
|
|
738
738
|
//#region src/shield/use-underlying-allowance.d.ts
|
|
739
739
|
/** Configuration for {@link useUnderlyingAllowance}. */
|
|
740
740
|
interface UseUnderlyingAllowanceConfig {
|
|
741
741
|
/** Address of the confidential token contract used to scope the query cache. */
|
|
742
|
-
tokenAddress: Address
|
|
742
|
+
tokenAddress: Address;
|
|
743
743
|
/** Address of the wrapper contract whose underlying ERC-20 allowance is checked. */
|
|
744
|
-
wrapperAddress: Address
|
|
744
|
+
wrapperAddress: Address;
|
|
745
745
|
}
|
|
746
746
|
/**
|
|
747
747
|
* Read the underlying ERC-20 allowance granted to the wrapper contract.
|
|
@@ -785,9 +785,9 @@ interface UseWrapperDiscoveryConfig {
|
|
|
785
785
|
* Used only to derive the signer context and to scope the query cache key —
|
|
786
786
|
* it does not affect which wrapper the registry returns.
|
|
787
787
|
*/
|
|
788
|
-
tokenAddress: Address
|
|
788
|
+
tokenAddress: Address;
|
|
789
789
|
/** ERC-20 address to discover the wrapper for. Pass `undefined` to disable the query. */
|
|
790
|
-
erc20Address: Address
|
|
790
|
+
erc20Address: Address | undefined;
|
|
791
791
|
}
|
|
792
792
|
/** Configuration for {@link useWrapperDiscoverySuspense}. */
|
|
793
793
|
interface UseWrapperDiscoverySuspenseConfig {
|
|
@@ -796,9 +796,9 @@ interface UseWrapperDiscoverySuspenseConfig {
|
|
|
796
796
|
* Used only to derive the signer context and to scope the query cache key —
|
|
797
797
|
* it does not affect which wrapper the registry returns.
|
|
798
798
|
*/
|
|
799
|
-
tokenAddress: Address
|
|
799
|
+
tokenAddress: Address;
|
|
800
800
|
/** ERC-20 address to discover the wrapper for. */
|
|
801
|
-
erc20Address: Address
|
|
801
|
+
erc20Address: Address;
|
|
802
802
|
}
|
|
803
803
|
/**
|
|
804
804
|
* Discover the confidential wrapper for an ERC-20 token via the on-chain registry.
|
|
@@ -817,7 +817,7 @@ interface UseWrapperDiscoverySuspenseConfig {
|
|
|
817
817
|
* });
|
|
818
818
|
* ```
|
|
819
819
|
*/
|
|
820
|
-
declare function useWrapperDiscovery(config: UseWrapperDiscoveryConfig, options?: Omit<UseQueryOptions<Address
|
|
820
|
+
declare function useWrapperDiscovery(config: UseWrapperDiscoveryConfig, options?: Omit<UseQueryOptions<Address | null>, "queryKey" | "queryFn">): _$_tanstack_react_query0.UseQueryResult<`0x${string}` | null, Error>;
|
|
821
821
|
/**
|
|
822
822
|
* Suspense variant of {@link useWrapperDiscovery}.
|
|
823
823
|
* Suspends rendering until the wrapper address is resolved.
|
|
@@ -850,7 +850,7 @@ declare function useWrapperDiscoverySuspense(config: UseWrapperDiscoverySuspense
|
|
|
850
850
|
* // metadata?.name, metadata?.symbol, metadata?.decimals
|
|
851
851
|
* ```
|
|
852
852
|
*/
|
|
853
|
-
declare function useMetadata(tokenAddress: Address
|
|
853
|
+
declare function useMetadata(tokenAddress: Address, options?: Omit<UseQueryOptions<TokenMetadata>, "queryKey" | "queryFn">): _$_tanstack_react_query0.UseQueryResult<TokenMetadata, Error>;
|
|
854
854
|
/**
|
|
855
855
|
* Suspense variant of {@link useMetadata}.
|
|
856
856
|
* Suspends rendering until metadata is loaded.
|
|
@@ -863,7 +863,7 @@ declare function useMetadata(tokenAddress: Address$1, options?: Omit<UseQueryOpt
|
|
|
863
863
|
* const { data: metadata } = useMetadataSuspense("0xToken");
|
|
864
864
|
* ```
|
|
865
865
|
*/
|
|
866
|
-
declare function useMetadataSuspense(tokenAddress: Address
|
|
866
|
+
declare function useMetadataSuspense(tokenAddress: Address): _$_tanstack_react_query0.UseSuspenseQueryResult<TokenMetadata, Error>;
|
|
867
867
|
//#endregion
|
|
868
868
|
//#region src/delegation/use-delegate-decryption.d.ts
|
|
869
869
|
/**
|
|
@@ -878,7 +878,7 @@ declare function useMetadataSuspense(tokenAddress: Address$1): _$_tanstack_react
|
|
|
878
878
|
* delegate.mutate({ delegateAddress: "0xDelegate" });
|
|
879
879
|
* ```
|
|
880
880
|
*/
|
|
881
|
-
declare function useDelegateDecryption(config: UseZamaConfig, options?: UseMutationOptions<TransactionResult
|
|
881
|
+
declare function useDelegateDecryption(config: UseZamaConfig, options?: UseMutationOptions<TransactionResult, Error, DelegateDecryptionParams>): _$_tanstack_react_query0.UseMutationResult<TransactionResult, Error, DelegateDecryptionParams, unknown>;
|
|
882
882
|
//#endregion
|
|
883
883
|
//#region src/delegation/use-revoke-delegation.d.ts
|
|
884
884
|
/**
|
|
@@ -893,16 +893,16 @@ declare function useDelegateDecryption(config: UseZamaConfig, options?: UseMutat
|
|
|
893
893
|
* revoke.mutate({ delegateAddress: "0xDelegate" });
|
|
894
894
|
* ```
|
|
895
895
|
*/
|
|
896
|
-
declare function useRevokeDelegation(config: UseZamaConfig, options?: UseMutationOptions<TransactionResult
|
|
896
|
+
declare function useRevokeDelegation(config: UseZamaConfig, options?: UseMutationOptions<TransactionResult, Error, RevokeDelegationParams>): _$_tanstack_react_query0.UseMutationResult<TransactionResult, Error, RevokeDelegationParams, unknown>;
|
|
897
897
|
//#endregion
|
|
898
898
|
//#region src/delegation/use-delegation-status.d.ts
|
|
899
899
|
interface UseDelegationStatusConfig {
|
|
900
900
|
/** Address of the confidential token contract. Pass `undefined` to disable the query. */
|
|
901
|
-
tokenAddress: Address
|
|
901
|
+
tokenAddress: Address | undefined;
|
|
902
902
|
/** The address that granted the delegation. */
|
|
903
|
-
delegatorAddress?: Address
|
|
903
|
+
delegatorAddress?: Address;
|
|
904
904
|
/** The address that received delegation rights. */
|
|
905
|
-
delegateAddress?: Address
|
|
905
|
+
delegateAddress?: Address;
|
|
906
906
|
}
|
|
907
907
|
/**
|
|
908
908
|
* Query delegation status between a delegator and delegate for a token.
|
|
@@ -921,7 +921,7 @@ interface UseDelegationStatusConfig {
|
|
|
921
921
|
* // data?.isDelegated, data?.expiryTimestamp
|
|
922
922
|
* ```
|
|
923
923
|
*/
|
|
924
|
-
declare function useDelegationStatus(config: UseDelegationStatusConfig, options?: Omit<UseQueryOptions<DelegationStatusData
|
|
924
|
+
declare function useDelegationStatus(config: UseDelegationStatusConfig, options?: Omit<UseQueryOptions<DelegationStatusData>, "queryKey" | "queryFn">): _$_tanstack_react_query0.UseQueryResult<DelegationStatusData, Error>;
|
|
925
925
|
//#endregion
|
|
926
926
|
//#region src/delegation/use-decrypt-balance-as.d.ts
|
|
927
927
|
/**
|
|
@@ -937,7 +937,7 @@ declare function useDelegationStatus(config: UseDelegationStatusConfig, options?
|
|
|
937
937
|
* // decryptAs.data => 1000n
|
|
938
938
|
* ```
|
|
939
939
|
*/
|
|
940
|
-
declare function useDecryptBalanceAs(tokenAddress: Address
|
|
940
|
+
declare function useDecryptBalanceAs(tokenAddress: Address, options?: UseMutationOptions<bigint, Error, DecryptBalanceAsParams>): _$_tanstack_react_query0.UseMutationResult<bigint, Error, DecryptBalanceAsParams, unknown>;
|
|
941
941
|
//#endregion
|
|
942
942
|
//#region src/delegation/use-batch-decrypt-balances-as.d.ts
|
|
943
943
|
/**
|
|
@@ -955,7 +955,7 @@ declare function useDecryptBalanceAs(tokenAddress: Address$1, options?: UseMutat
|
|
|
955
955
|
* // batchDecryptAs.data => Map { "0xTokenA" => 100n, "0xTokenB" => 200n }
|
|
956
956
|
* ```
|
|
957
957
|
*/
|
|
958
|
-
declare function useBatchDecryptBalancesAs(tokens: ReadonlyToken
|
|
958
|
+
declare function useBatchDecryptBalancesAs(tokens: ReadonlyToken[], options?: UseMutationOptions<Map<Address, bigint>, Error, BatchDecryptBalancesAsParams>): _$_tanstack_react_query0.UseMutationResult<Map<`0x${string}`, bigint>, Error, _$_zama_fhe_sdk0.BatchDecryptAsOptions, unknown>;
|
|
959
959
|
//#endregion
|
|
960
960
|
//#region src/shield/use-approve-underlying.d.ts
|
|
961
961
|
/**
|
|
@@ -977,7 +977,7 @@ declare function useBatchDecryptBalancesAs(tokens: ReadonlyToken$1[], options?:
|
|
|
977
977
|
* approve.mutate({ amount: 1000n }); // exact amount
|
|
978
978
|
* ```
|
|
979
979
|
*/
|
|
980
|
-
declare function useApproveUnderlying(config: UseZamaConfig, options?: UseMutationOptions<TransactionResult
|
|
980
|
+
declare function useApproveUnderlying(config: UseZamaConfig, options?: UseMutationOptions<TransactionResult, Error, ApproveUnderlyingParams, Address>): _$_tanstack_react_query0.UseMutationResult<TransactionResult, Error, ApproveUnderlyingParams, `0x${string}`>;
|
|
981
981
|
//#endregion
|
|
982
982
|
//#region src/token/use-is-confidential.d.ts
|
|
983
983
|
/**
|
|
@@ -993,7 +993,7 @@ declare function useApproveUnderlying(config: UseZamaConfig, options?: UseMutati
|
|
|
993
993
|
* const { data: isConfidential } = useIsConfidential("0xToken");
|
|
994
994
|
* ```
|
|
995
995
|
*/
|
|
996
|
-
declare function useIsConfidential(tokenAddress: Address
|
|
996
|
+
declare function useIsConfidential(tokenAddress: Address, options?: Omit<UseQueryOptions<boolean>, "queryKey" | "queryFn">): _$_tanstack_react_query0.UseQueryResult<boolean, Error>;
|
|
997
997
|
/**
|
|
998
998
|
* Suspense variant of {@link useIsConfidential}.
|
|
999
999
|
* Suspends rendering until the ERC-165 check resolves.
|
|
@@ -1006,7 +1006,7 @@ declare function useIsConfidential(tokenAddress: Address$1, options?: Omit<UseQu
|
|
|
1006
1006
|
* const { data: isConfidential } = useIsConfidentialSuspense("0xToken");
|
|
1007
1007
|
* ```
|
|
1008
1008
|
*/
|
|
1009
|
-
declare function useIsConfidentialSuspense(tokenAddress: Address
|
|
1009
|
+
declare function useIsConfidentialSuspense(tokenAddress: Address): _$_tanstack_react_query0.UseSuspenseQueryResult<boolean, Error>;
|
|
1010
1010
|
/**
|
|
1011
1011
|
* Check if a token supports the ERC-7984 wrapper interface via ERC-165.
|
|
1012
1012
|
* Result is cached indefinitely since interface support does not change.
|
|
@@ -1020,7 +1020,7 @@ declare function useIsConfidentialSuspense(tokenAddress: Address$1): _$_tanstack
|
|
|
1020
1020
|
* const { data: isWrapper } = useIsWrapper("0xToken");
|
|
1021
1021
|
* ```
|
|
1022
1022
|
*/
|
|
1023
|
-
declare function useIsWrapper(tokenAddress: Address
|
|
1023
|
+
declare function useIsWrapper(tokenAddress: Address, options?: Omit<UseQueryOptions<boolean>, "queryKey" | "queryFn">): _$_tanstack_react_query0.UseQueryResult<boolean, Error>;
|
|
1024
1024
|
/**
|
|
1025
1025
|
* Suspense variant of {@link useIsWrapper}.
|
|
1026
1026
|
* Suspends rendering until the ERC-165 check resolves.
|
|
@@ -1033,7 +1033,7 @@ declare function useIsWrapper(tokenAddress: Address$1, options?: Omit<UseQueryOp
|
|
|
1033
1033
|
* const { data: isWrapper } = useIsWrapperSuspense("0xToken");
|
|
1034
1034
|
* ```
|
|
1035
1035
|
*/
|
|
1036
|
-
declare function useIsWrapperSuspense(tokenAddress: Address
|
|
1036
|
+
declare function useIsWrapperSuspense(tokenAddress: Address): _$_tanstack_react_query0.UseSuspenseQueryResult<boolean, Error>;
|
|
1037
1037
|
//#endregion
|
|
1038
1038
|
//#region src/token/use-total-supply.d.ts
|
|
1039
1039
|
/**
|
|
@@ -1049,7 +1049,7 @@ declare function useIsWrapperSuspense(tokenAddress: Address$1): _$_tanstack_reac
|
|
|
1049
1049
|
* const { data: totalSupply } = useTotalSupply("0xToken");
|
|
1050
1050
|
* ```
|
|
1051
1051
|
*/
|
|
1052
|
-
declare function useTotalSupply(tokenAddress: Address
|
|
1052
|
+
declare function useTotalSupply(tokenAddress: Address, options?: Omit<UseQueryOptions<bigint>, "queryKey" | "queryFn">): _$_tanstack_react_query0.UseQueryResult<bigint, Error>;
|
|
1053
1053
|
/**
|
|
1054
1054
|
* Suspense variant of {@link useTotalSupply}.
|
|
1055
1055
|
* Suspends rendering until the total supply is loaded.
|
|
@@ -1062,7 +1062,7 @@ declare function useTotalSupply(tokenAddress: Address$1, options?: Omit<UseQuery
|
|
|
1062
1062
|
* const { data: totalSupply } = useTotalSupplySuspense("0xToken");
|
|
1063
1063
|
* ```
|
|
1064
1064
|
*/
|
|
1065
|
-
declare function useTotalSupplySuspense(tokenAddress: Address
|
|
1065
|
+
declare function useTotalSupplySuspense(tokenAddress: Address): _$_tanstack_react_query0.UseSuspenseQueryResult<bigint, Error>;
|
|
1066
1066
|
//#endregion
|
|
1067
1067
|
//#region src/wrappers-registry/use-wrappers-registry-address.d.ts
|
|
1068
1068
|
/**
|
|
@@ -1076,14 +1076,14 @@ declare function useTotalSupplySuspense(tokenAddress: Address$1): _$_tanstack_re
|
|
|
1076
1076
|
* The chain ID is cached for 30 seconds (`staleTime`), so chain
|
|
1077
1077
|
* switches may take up to 30s to reflect.
|
|
1078
1078
|
*/
|
|
1079
|
-
declare function useWrappersRegistryAddress(): Address
|
|
1079
|
+
declare function useWrappersRegistryAddress(): Address | undefined;
|
|
1080
1080
|
//#endregion
|
|
1081
1081
|
//#region src/wrappers-registry/use-token-pairs-registry.d.ts
|
|
1082
1082
|
/**
|
|
1083
1083
|
* Fetches all token wrapper pairs from the ConfidentialTokenWrappersRegistry
|
|
1084
1084
|
* contract on the current chain.
|
|
1085
1085
|
*/
|
|
1086
|
-
declare function useTokenPairsRegistry(): _$_tanstack_react_query0.UseQueryResult<readonly TokenWrapperPair
|
|
1086
|
+
declare function useTokenPairsRegistry(): _$_tanstack_react_query0.UseQueryResult<readonly TokenWrapperPair[], Error>;
|
|
1087
1087
|
//#endregion
|
|
1088
1088
|
//#region src/wrappers-registry/use-token-pairs-length.d.ts
|
|
1089
1089
|
/**
|
|
@@ -1104,7 +1104,7 @@ declare function useTokenPairsSlice({
|
|
|
1104
1104
|
}: {
|
|
1105
1105
|
fromIndex: bigint | undefined;
|
|
1106
1106
|
toIndex: bigint | undefined;
|
|
1107
|
-
}): _$_tanstack_react_query0.UseQueryResult<readonly TokenWrapperPair
|
|
1107
|
+
}): _$_tanstack_react_query0.UseQueryResult<readonly TokenWrapperPair[], Error>;
|
|
1108
1108
|
//#endregion
|
|
1109
1109
|
//#region src/wrappers-registry/use-token-pair.d.ts
|
|
1110
1110
|
/**
|
|
@@ -1116,7 +1116,7 @@ declare function useTokenPair({
|
|
|
1116
1116
|
index
|
|
1117
1117
|
}: {
|
|
1118
1118
|
index: bigint | undefined;
|
|
1119
|
-
}): _$_tanstack_react_query0.UseQueryResult<TokenWrapperPair
|
|
1119
|
+
}): _$_tanstack_react_query0.UseQueryResult<TokenWrapperPair, Error>;
|
|
1120
1120
|
//#endregion
|
|
1121
1121
|
//#region src/wrappers-registry/use-confidential-token-address.d.ts
|
|
1122
1122
|
/**
|
|
@@ -1125,7 +1125,7 @@ declare function useTokenPair({
|
|
|
1125
1125
|
declare function useConfidentialTokenAddress({
|
|
1126
1126
|
tokenAddress
|
|
1127
1127
|
}: {
|
|
1128
|
-
tokenAddress: Address
|
|
1128
|
+
tokenAddress: Address | undefined;
|
|
1129
1129
|
}): _$_tanstack_react_query0.UseQueryResult<readonly [boolean, `0x${string}`], Error>;
|
|
1130
1130
|
//#endregion
|
|
1131
1131
|
//#region src/wrappers-registry/use-token-address.d.ts
|
|
@@ -1135,7 +1135,7 @@ declare function useConfidentialTokenAddress({
|
|
|
1135
1135
|
declare function useTokenAddress({
|
|
1136
1136
|
confidentialTokenAddress
|
|
1137
1137
|
}: {
|
|
1138
|
-
confidentialTokenAddress: Address
|
|
1138
|
+
confidentialTokenAddress: Address | undefined;
|
|
1139
1139
|
}): _$_tanstack_react_query0.UseQueryResult<readonly [boolean, `0x${string}`], Error>;
|
|
1140
1140
|
//#endregion
|
|
1141
1141
|
//#region src/wrappers-registry/use-is-confidential-token-valid.d.ts
|
|
@@ -1148,7 +1148,7 @@ declare function useTokenAddress({
|
|
|
1148
1148
|
declare function useIsConfidentialTokenValid({
|
|
1149
1149
|
confidentialTokenAddress
|
|
1150
1150
|
}: {
|
|
1151
|
-
confidentialTokenAddress: Address
|
|
1151
|
+
confidentialTokenAddress: Address | undefined;
|
|
1152
1152
|
}): _$_tanstack_react_query0.UseQueryResult<boolean, Error>;
|
|
1153
1153
|
//#endregion
|
|
1154
1154
|
//#region src/wrappers-registry/use-list-pairs.d.ts
|
|
@@ -1173,15 +1173,7 @@ declare function useListPairs({
|
|
|
1173
1173
|
page?: number;
|
|
1174
1174
|
pageSize?: number;
|
|
1175
1175
|
metadata?: boolean;
|
|
1176
|
-
}): _$_tanstack_react_query0.UseQueryResult<PaginatedResult
|
|
1176
|
+
}): _$_tanstack_react_query0.UseQueryResult<PaginatedResult<TokenWrapperPair | TokenWrapperPairWithMetadata>, Error>;
|
|
1177
1177
|
//#endregion
|
|
1178
|
-
|
|
1179
|
-
type OptimisticBalanceSnapshot = [QueryKey, bigint | undefined][];
|
|
1180
|
-
/** Combined context returned by optimistic `onMutate`. */
|
|
1181
|
-
interface OptimisticMutateContext {
|
|
1182
|
-
snapshot: OptimisticBalanceSnapshot;
|
|
1183
|
-
callerContext?: unknown;
|
|
1184
|
-
}
|
|
1185
|
-
//#endregion
|
|
1186
|
-
export { ACL_TOPICS, type AclEvent, AclPausedError, type Address, ApprovalFailedError, type ApproveSubmittedEvent, type ApproveUnderlyingParams, type ApproveUnderlyingSubmittedEvent, BalanceCheckUnavailableError, type BaseEvent, type BatchBalancesResult, type BatchDecryptAsOptions, type BatchDecryptBalancesAsParams, ChromeSessionStorage, type ClearValueType, type ConfidentialApproveParams, type ConfidentialTransferEvent, type ConfidentialTransferFromParams, type ConfidentialTransferParams, ConfigurationError, type ContractAbi, type CreateDelegatedUserDecryptEIP712Params, type CreateEIP712Params, type CredentialsAllowedEvent, type CredentialsCachedEvent, type CredentialsCreatedEvent, type CredentialsCreatingEvent, type CredentialsExpiredEvent, type CredentialsLoadingEvent, CredentialsManager, type CredentialsManagerConfig, type CredentialsRevokedEvent, type DecryptBalanceAsParams, type DecryptEndEvent, type DecryptErrorEvent, type DecryptHandle, type DecryptResult, type DecryptStartEvent, DecryptionFailedError, DefaultRegistryAddresses, type DelegateDecryptionParams, DelegatedCredentialsManager, type DelegatedCredentialsManagerConfig, type DelegatedForUserDecryptionEvent, type DelegatedStoredCredentials, type DelegatedUserDecryptParams, DelegationContractIsSelfError, DelegationCooldownError, DelegationDelegateEqualsContractError, DelegationExpirationTooSoonError, DelegationExpiredError, DelegationExpiryUnchangedError, DelegationNotFoundError, DelegationNotPropagatedError, DelegationSelfNotAllowedError, type DelegationStatusData, type DelegationStatusQueryConfig, type EIP712TypedData, ERC20ReadFailedError, ERC7984_INTERFACE_ID, ERC7984_WRAPPER_INTERFACE_ID, ERC7984_WRAPPER_INTERFACE_ID_LEGACY, type EncryptEndEvent, type EncryptErrorEvent, type EncryptInput, type EncryptParams, type EncryptResult, type EncryptStartEvent, EncryptionFailedError, type FheTypeName, type FhevmInstanceConfig, type FinalizeUnwrapParams, type FinalizeUnwrapSubmittedEvent, type GenericSigner, type GenericStorage, type Handle, HardhatConfig, type Hex, IndexedDBStorage, type InputProofBytesType, InsufficientConfidentialBalanceError, InsufficientERC20BalanceError, InvalidKeypairError, KeypairExpiredError, type KeypairType, type KmsDelegatedUserDecryptEIP712Type, type ListPairsOptions, type ListPairsQueryConfig, MainnetConfig, MemoryStorage, type NetworkType, NoCiphertextError, type OnChainEvent, type OptimisticBalanceSnapshot, type OptimisticMutateContext, type PaginatedResult, type PublicDecryptResult, type RawLog, type ReadContractArgs, type ReadContractConfig, type ReadContractReturnType, type ReadFunctionName, ReadonlyToken, RelayerRequestFailedError, type RelayerSDK, type RelayerSDKStatus, RelayerWeb, type RelayerWebConfig, type RelayerWebSecurityConfig, type ResumeUnshieldParams, type RevokeDelegationParams, type RevokedDelegationForUserDecryptionEvent, SepoliaConfig, type SessionExpiredEvent, type ShieldCallbacks, type ShieldParams, type ShieldSubmittedEvent, SigningFailedError, SigningRejectedError, type StoredCredentials, TOKEN_TOPICS, Token, type TokenMetadata, type TokenWrapperPair, type TokenWrapperPairWithMetadata, Topics, type TransactionErrorEvent, type TransactionReceipt, type TransactionResult, TransactionRevertedError, type TransferCallbacks, type TransferFromSubmittedEvent, type TransferSubmittedEvent, type UnshieldAllParams, type UnshieldCallbacks, type UnshieldParams, type UnshieldPhase1SubmittedEvent, type UnshieldPhase2StartedEvent, type UnshieldPhase2SubmittedEvent, type UnwrapParams, type UnwrapRequestedEvent, type UnwrapSubmittedEvent, type UnwrappedFinalizedEvent, type UnwrappedStartedEvent, type UseConfidentialBalanceConfig, type UseConfidentialBalanceOptions, type UseConfidentialBalancesConfig, type UseConfidentialBalancesOptions, type UseConfidentialIsApprovedConfig, type UseConfidentialIsApprovedSuspenseConfig, type UseConfidentialTransferConfig, type UseDelegationStatusConfig, type UseIsAllowedConfig, type UseShieldConfig, type UseUnderlyingAllowanceConfig, type UseUserDecryptResult, type UseWrapperDiscoveryConfig, type UseWrapperDiscoverySuspenseConfig, type UseZamaConfig, type UserDecryptParams, type UserDecryptQueryConfig, type WrappedEvent, WrappersRegistry, type WrappersRegistryConfig, type WriteContractArgs, type WriteContractConfig, type WriteFunctionName, ZERO_HANDLE, type ZKProofLike, ZamaError, ZamaErrorCode, ZamaProvider, type ZamaProviderProps, ZamaSDK, type ZamaSDKConfig, type ZamaSDKEvent, type ZamaSDKEventInput, type ZamaSDKEventListener, type ZamaSDKEventType, ZamaSDKEvents, allowMutationOptions, allowanceContract, approveContract, approveUnderlyingMutationOptions, balanceOfContract, batchDecryptBalancesAsMutationOptions, chromeSessionStorage, clearPendingUnshield, confidentialApproveMutationOptions, confidentialBalanceOfContract, confidentialBalanceQueryOptions, confidentialBalancesQueryOptions, confidentialIsApprovedQueryOptions, confidentialTotalSupplyContract, confidentialTransferContract, confidentialTransferFromContract, confidentialTransferFromMutationOptions, confidentialTransferMutationOptions, createDelegatedUserDecryptEIP712MutationOptions, createEIP712MutationOptions, decimalsContract, decodeAclEvent, decodeAclEvents, decodeConfidentialTransfer, decodeDelegatedForUserDecryption, decodeOnChainEvent, decodeOnChainEvents, decodeRevokedDelegationForUserDecryption, decodeUnwrapRequested, decodeUnwrappedFinalized, decodeUnwrappedStarted, decodeWrapped, decryptBalanceAsMutationOptions, delegateDecryptionMutationOptions, delegateForUserDecryptionContract, delegatedUserDecryptMutationOptions, delegationStatusQueryOptions, encryptMutationOptions, filterQueryOptions, finalizeUnwrapContract, finalizeUnwrapMutationOptions, findDelegatedForUserDecryption, findRevokedDelegationForUserDecryption, findUnwrapRequested, findWrapped, generateKeypairMutationOptions, getDelegationExpiryContract, hashFn, indexedDBStorage, inferredTotalSupplyContract, isAllowedQueryOptions, isConfidentialQueryOptions, isConfidentialTokenContract, isConfidentialWrapperContract, isHandleDelegatedContract, isOperatorContract, isWrapperQueryOptions, isZeroHandle, listPairsQueryOptions, loadPendingUnshield, matchAclRevert, matchZamaError, memoryStorage, nameContract, publicDecryptMutationOptions, publicKeyQueryOptions, publicParamsQueryOptions, rateContract, requestZKProofVerificationMutationOptions, resumeUnshieldMutationOptions, revokeDelegationContract, revokeDelegationMutationOptions, revokeMutationOptions, revokeSessionMutationOptions, savePendingUnshield, setOperatorContract, shieldMutationOptions, signerAddressQueryOptions, supportsInterfaceContract, symbolContract, tokenMetadataQueryOptions, totalSupplyContract, totalSupplyQueryOptions, underlyingAllowanceQueryOptions, underlyingContract, unshieldAllMutationOptions, unshieldMutationOptions, unwrapAllMutationOptions, unwrapContract, unwrapFromBalanceContract, unwrapMutationOptions, useAllow, useApproveUnderlying, useBatchDecryptBalancesAs, useConfidentialApprove, useConfidentialBalance, useConfidentialBalances, useConfidentialIsApproved, useConfidentialIsApprovedSuspense, useConfidentialTokenAddress, useConfidentialTransfer, useConfidentialTransferFrom, useCreateDelegatedUserDecryptEIP712, useCreateEIP712, useDecryptBalanceAs, useDelegateDecryption, useDelegatedUserDecrypt, useDelegationStatus, useEncrypt, useFinalizeUnwrap, useGenerateKeypair, useIsAllowed, useIsConfidential, useIsConfidentialSuspense, useIsConfidentialTokenValid, useIsWrapper, useIsWrapperSuspense, useListPairs, useMetadata, useMetadataSuspense, usePublicDecrypt, usePublicKey, usePublicParams, useReadonlyToken, useRequestZKProofVerification, useResumeUnshield, useRevoke, useRevokeDelegation, useRevokeSession, useShield, useToken, useTokenAddress, useTokenPair, useTokenPairsLength, useTokenPairsRegistry, useTokenPairsSlice, useTotalSupply, useTotalSupplySuspense, useUnderlyingAllowance, useUnderlyingAllowanceSuspense, useUnshield, useUnshieldAll, useUnwrap, useUnwrapAll, useUserDecrypt, useWrapperDiscovery, useWrapperDiscoverySuspense, useWrappersRegistryAddress, useZamaSDK, userDecryptQueryOptions, wrapContract, wrapperDiscoveryQueryOptions, zamaQueryKeys };
|
|
1178
|
+
export { type UseConfidentialBalanceConfig, type UseConfidentialBalanceOptions, type UseConfidentialBalancesConfig, type UseConfidentialBalancesOptions, type UseConfidentialIsApprovedConfig, type UseConfidentialIsApprovedSuspenseConfig, type UseConfidentialTransferConfig, type UseDelegationStatusConfig, type UseIsAllowedConfig, type UseShieldConfig, type UseUnderlyingAllowanceConfig, type UseUserDecryptResult, type UseWrapperDiscoveryConfig, type UseWrapperDiscoverySuspenseConfig, type UseZamaConfig, ZamaProvider, type ZamaProviderProps, useAllow, useApproveUnderlying, useBatchDecryptBalancesAs, useConfidentialApprove, useConfidentialBalance, useConfidentialBalances, useConfidentialIsApproved, useConfidentialIsApprovedSuspense, useConfidentialTokenAddress, useConfidentialTransfer, useConfidentialTransferFrom, useCreateDelegatedUserDecryptEIP712, useCreateEIP712, useDecryptBalanceAs, useDelegateDecryption, useDelegatedUserDecrypt, useDelegationStatus, useEncrypt, useFinalizeUnwrap, useGenerateKeypair, useIsAllowed, useIsConfidential, useIsConfidentialSuspense, useIsConfidentialTokenValid, useIsWrapper, useIsWrapperSuspense, useListPairs, useMetadata, useMetadataSuspense, usePublicDecrypt, usePublicKey, usePublicParams, useReadonlyToken, useRequestZKProofVerification, useResumeUnshield, useRevoke, useRevokeDelegation, useRevokeSession, useShield, useToken, useTokenAddress, useTokenPair, useTokenPairsLength, useTokenPairsRegistry, useTokenPairsSlice, useTotalSupply, useTotalSupplySuspense, useUnderlyingAllowance, useUnderlyingAllowanceSuspense, useUnshield, useUnshieldAll, useUnwrap, useUnwrapAll, useUserDecrypt, useWrapperDiscovery, useWrapperDiscoverySuspense, useWrappersRegistryAddress, useZamaSDK };
|
|
1187
1179
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import{ACL_TOPICS as e,AclPausedError as t,ApprovalFailedError as n,BalanceCheckUnavailableError as r,ChromeSessionStorage as i,ConfigurationError as a,CredentialsManager as o,DecryptionFailedError as s,DefaultRegistryAddresses as c,DelegatedCredentialsManager as l,DelegationContractIsSelfError as u,DelegationCooldownError as d,DelegationDelegateEqualsContractError as f,DelegationExpirationTooSoonError as p,DelegationExpiredError as ee,DelegationExpiryUnchangedError as te,DelegationNotFoundError as ne,DelegationNotPropagatedError as re,DelegationSelfNotAllowedError as ie,ERC20ReadFailedError as ae,ERC7984_INTERFACE_ID as oe,ERC7984_WRAPPER_INTERFACE_ID as se,ERC7984_WRAPPER_INTERFACE_ID_LEGACY as ce,EncryptionFailedError as le,HardhatConfig as ue,IndexedDBStorage as de,InsufficientConfidentialBalanceError as fe,InsufficientERC20BalanceError as pe,InvalidKeypairError as me,KeypairExpiredError as he,MainnetConfig as ge,MemoryStorage as _e,NoCiphertextError as ve,ReadonlyToken as ye,RelayerRequestFailedError as be,RelayerWeb as xe,SepoliaConfig as Se,SigningFailedError as Ce,SigningRejectedError as we,TOKEN_TOPICS as Te,Token as Ee,Topics as De,TransactionRevertedError as Oe,WrappersRegistry as ke,ZERO_HANDLE as m,ZamaError as h,ZamaErrorCode as g,ZamaSDK as _,ZamaSDK as v,ZamaSDKEvents as y,allowanceContract as b,approveContract as x,balanceOfContract as S,chromeSessionStorage as C,clearPendingUnshield as w,confidentialBalanceOfContract as Ae,confidentialTotalSupplyContract as je,confidentialTransferContract as Me,confidentialTransferFromContract as Ne,decimalsContract as Pe,decodeAclEvent as Fe,decodeAclEvents as Ie,decodeConfidentialTransfer as Le,decodeDelegatedForUserDecryption as Re,decodeOnChainEvent as ze,decodeOnChainEvents as Be,decodeRevokedDelegationForUserDecryption as Ve,decodeUnwrapRequested as He,decodeUnwrappedFinalized as Ue,decodeUnwrappedStarted as We,decodeWrapped as Ge,delegateForUserDecryptionContract as Ke,finalizeUnwrapContract as qe,findDelegatedForUserDecryption as Je,findRevokedDelegationForUserDecryption as Ye,findUnwrapRequested as Xe,findWrapped as Ze,getDelegationExpiryContract as Qe,indexedDBStorage as $e,inferredTotalSupplyContract as et,isConfidentialTokenContract as tt,isConfidentialWrapperContract as nt,isHandleDelegatedContract as rt,isOperatorContract as it,isZeroHandle as at,loadPendingUnshield as ot,matchAclRevert as st,matchZamaError as ct,memoryStorage as lt,nameContract as ut,rateContract as dt,revokeDelegationContract as ft,savePendingUnshield as pt,setOperatorContract as mt,supportsInterfaceContract as ht,symbolContract as gt,totalSupplyContract as _t,underlyingContract as vt,unwrapContract as yt,unwrapFromBalanceContract as bt,wrapContract as xt}from"@zama-fhe/sdk";import{allowMutationOptions as St,allowMutationOptions as Ct,approveUnderlyingMutationOptions as wt,approveUnderlyingMutationOptions as Tt,batchDecryptBalancesAsMutationOptions as Et,batchDecryptBalancesAsMutationOptions as Dt,confidentialApproveMutationOptions as Ot,confidentialApproveMutationOptions as kt,confidentialBalanceQueryOptions as At,confidentialBalanceQueryOptions as jt,confidentialBalancesQueryOptions as Mt,confidentialBalancesQueryOptions as Nt,confidentialIsApprovedQueryOptions as Pt,confidentialIsApprovedQueryOptions as T,confidentialTokenAddressQueryOptions as Ft,confidentialTransferFromMutationOptions as It,confidentialTransferFromMutationOptions as Lt,confidentialTransferMutationOptions as Rt,confidentialTransferMutationOptions as zt,createDelegatedUserDecryptEIP712MutationOptions as Bt,createDelegatedUserDecryptEIP712MutationOptions as Vt,createEIP712MutationOptions as Ht,createEIP712MutationOptions as Ut,decryptBalanceAsMutationOptions as Wt,decryptBalanceAsMutationOptions as Gt,delegateDecryptionMutationOptions as Kt,delegateDecryptionMutationOptions as qt,delegatedUserDecryptMutationOptions as Jt,delegatedUserDecryptMutationOptions as Yt,delegationStatusQueryOptions as Xt,delegationStatusQueryOptions as Zt,encryptMutationOptions as Qt,encryptMutationOptions as $t,filterQueryOptions as en,finalizeUnwrapMutationOptions as tn,finalizeUnwrapMutationOptions as nn,generateKeypairMutationOptions as rn,generateKeypairMutationOptions as an,hashFn as on,hashFn as E,invalidateAfterApprove as sn,invalidateAfterApproveUnderlying as cn,invalidateAfterShield as ln,invalidateAfterTransfer as D,invalidateAfterUnshield as O,invalidateAfterUnwrap as k,invalidateWalletLifecycleQueries as A,isAllowedQueryOptions as un,isAllowedQueryOptions as dn,isConfidentialQueryOptions as fn,isConfidentialQueryOptions as j,isConfidentialTokenValidQueryOptions as M,isWrapperQueryOptions as pn,isWrapperQueryOptions as N,listPairsQueryOptions as mn,listPairsQueryOptions as hn,publicDecryptMutationOptions as gn,publicDecryptMutationOptions as _n,publicKeyQueryOptions as vn,publicKeyQueryOptions as yn,publicParamsQueryOptions as bn,publicParamsQueryOptions as xn,requestZKProofVerificationMutationOptions as Sn,requestZKProofVerificationMutationOptions as Cn,resumeUnshieldMutationOptions as wn,resumeUnshieldMutationOptions as Tn,revokeDelegationMutationOptions as En,revokeDelegationMutationOptions as Dn,revokeMutationOptions as On,revokeMutationOptions as kn,revokeSessionMutationOptions as An,revokeSessionMutationOptions as jn,shieldMutationOptions as Mn,shieldMutationOptions as Nn,signerAddressQueryOptions as Pn,signerAddressQueryOptions as P,tokenAddressQueryOptions as Fn,tokenMetadataQueryOptions as In,tokenMetadataQueryOptions as F,tokenPairQueryOptions as Ln,tokenPairsLengthQueryOptions as Rn,tokenPairsQueryOptions as zn,tokenPairsSliceQueryOptions as Bn,totalSupplyQueryOptions as Vn,totalSupplyQueryOptions as I,underlyingAllowanceQueryOptions as Hn,underlyingAllowanceQueryOptions as L,unshieldAllMutationOptions as Un,unshieldAllMutationOptions as Wn,unshieldMutationOptions as Gn,unshieldMutationOptions as Kn,unwrapAllMutationOptions as qn,unwrapAllMutationOptions as Jn,unwrapMutationOptions as Yn,unwrapMutationOptions as Xn,userDecryptQueryOptions as Zn,userDecryptQueryOptions as Qn,wrapperDiscoveryQueryOptions as $n,wrapperDiscoveryQueryOptions as R,zamaQueryKeys as er,zamaQueryKeys as z}from"@zama-fhe/sdk/query";import{skipToken as tr,useMutation as B,useQuery as nr,useQueryClient as V,useSuspenseQuery as rr}from"@tanstack/react-query";import{createContext as ir,useContext as ar,useEffect as H,useMemo as U,useRef as or}from"react";import{jsx as sr}from"react/jsx-runtime";const W=ir(null);function cr({children:e,relayer:t,signer:n,storage:r,sessionStorage:i,keypairTTL:a,sessionTTL:o,registryAddresses:s,registryTTL:c,onEvent:l}){let u=V(),d=or(l);H(()=>{d.current=l});let f=U(()=>n?.subscribe?{onDisconnect:()=>A(u),onAccountChange:()=>A(u),onChainChange:()=>A(u)}:void 0,[u,n]),p=U(()=>new v({relayer:t,signer:n,storage:r,sessionStorage:i,keypairTTL:a,sessionTTL:o,registryAddresses:s,registryTTL:c,onEvent:d.current,signerLifecycleCallbacks:f}),[t,n,r,i,a,o,s,c,f]);return H(()=>()=>p.dispose(),[p]),sr(W.Provider,{value:p,children:e})}function G(){let e=ar(W);if(!e)throw Error(`useZamaSDK must be used within a <ZamaProvider>. Wrap your component tree in <ZamaProvider relayer={…} signer={…} storage={…}>.`);return e}function lr(){return B($t(G()))}function K(e){return nr({...e,queryKeyHashFn:E})}function q(e){return rr({...e,queryKeyHashFn:E})}function ur(e,t){let n=Qn(G(),e);return K({...n,...t,enabled:n.enabled&&(t?.enabled??!1)})}function dr(){return B(_n(G()))}function fr(){return B(an(G()))}function pr(){return B(Ut(G()))}function mr(){return B(Vt(G()))}function hr(){return B(Yt(G()))}function gr(){return B(Cn(G()))}function _r(){return K(yn(G()))}function vr(e){return K(xn(G(),e))}function yr(e){return B({...Ct(G()),...e,onSuccess:(t,n,r,i)=>{e?.onSuccess?.(t,n,r,i),i.client.invalidateQueries({queryKey:z.isAllowed.all})}})}function br(e){let t=G(),n=K({...P(t.signer)}).data;return K(n?dn(t,{account:n,contractAddresses:e.contractAddresses}):{queryKey:z.isAllowed.all,queryFn:tr,enabled:!1})}function xr(e){return B({...kn(G()),...e,onSuccess:(t,n,r,i)=>{e?.onSuccess?.(t,n,r,i),i.client.removeQueries({queryKey:z.isAllowed.all}),i.client.removeQueries({queryKey:z.decryption.all})}})}function Sr(e){return B({...jn(G()),...e,onSuccess:(t,n,r,i)=>{e?.onSuccess?.(t,n,r,i),i.client.removeQueries({queryKey:z.isAllowed.all}),i.client.removeQueries({queryKey:z.decryption.all})}})}function J(e){let t=G();return U(()=>t.createToken(e.tokenAddress,e.wrapperAddress),[t,e.tokenAddress,e.wrapperAddress])}function Y(e){let t=G();return U(()=>t.createReadonlyToken(e),[t,e])}function Cr(e,t){let{tokenAddress:n}=e,{enabled:r=!0}=t??{},i=G(),a=Y(n),o=K(P(i.signer)).data,s=jt(a,{tokenAddress:n,owner:o});return K({...s,...t,enabled:s.enabled&&r})}function wr(e,t){let{tokenAddresses:n}=e,{enabled:r=!0}=t??{},i=G(),a=K(P(i.signer)).data,o=Nt(U(()=>n.map(e=>i.createReadonlyToken(e)),[i,n]),{owner:a});return K({...o,...t,enabled:(o.enabled??!0)&&r})}function X(e,t){let n=e?t:void 0;return{wrappedContext:n,callerContext:e?n?.callerContext:t}}async function Z({queryClient:e,tokenAddress:t,amount:n,mode:r}){let i=z.confidentialBalance.token(t);await e.cancelQueries({queryKey:i});let a=e.getQueriesData({queryKey:i});for(let[t,i]of a)i!==void 0&&e.setQueryData(t,r===`add`?i+n:i-n);return a}function Q(e,t){for(let[n,r]of t)e.setQueryData(n,r)}function Tr({optimistic:e,tokenAddress:t,queryClient:n,options:r}){return{onMutate:e?async(e,i)=>({snapshot:await Z({queryClient:n,tokenAddress:t,amount:e.amount,mode:`add`}),callerContext:await r?.onMutate?.(e,i)}):r?.onMutate,onError:(t,i,a,o)=>{let{wrappedContext:s,callerContext:c}=X(e,a);try{s&&Q(n,s.snapshot)}finally{r?.onError?.(t,i,c,o)}},onSuccess:(n,i,a,o)=>{let{callerContext:s}=X(e,a);r?.onSuccess?.(n,i,s,o),ln(o.client,t)},onSettled:(t,n,i,a,o)=>{let{callerContext:s}=X(e,a);r?.onSettled?.(t,n,i,s,o)}}}function Er(e,t){let n=J(e),r=V();return B({...zt(n),...t,onMutate:e.optimistic?async(n,i)=>({snapshot:await Z({queryClient:r,tokenAddress:e.tokenAddress,amount:n.amount,mode:`subtract`}),callerContext:await t?.onMutate?.(n,i)}):t?.onMutate,onError:(n,i,a,o)=>{let{wrappedContext:s,callerContext:c}=X(e.optimistic,a);try{s&&Q(r,s.snapshot)}finally{t?.onError?.(n,i,c,o)}},onSuccess:(n,r,i,a)=>{let{callerContext:o}=X(e.optimistic,i);t?.onSuccess?.(n,r,o,a),D(a.client,e.tokenAddress)},onSettled:(n,r,i,a,o)=>{let{callerContext:s}=X(e.optimistic,a);t?.onSettled?.(n,r,i,s,o)}})}function Dr(e,t){return B({...Lt(J(e)),...t,onSuccess:(n,r,i,a)=>{t?.onSuccess?.(n,r,i,a),D(a.client,e.tokenAddress)}})}function Or(e,t){return B({...kt(J(e)),...t,onSuccess:(n,r,i,a)=>{t?.onSuccess?.(n,r,i,a),sn(a.client,e.tokenAddress)}})}function kr(e,t){let{tokenAddress:n,spender:r,holder:i}=e,a=G(),o=K({...P(a.signer),enabled:n!==void 0&&r!==void 0&&i===void 0}),s=i??o.data,c=T(a.signer,n,{holder:s,spender:r});return K({...c,...t,enabled:(c.enabled??!0)&&(t?.enabled??!0)})}function Ar(e){let{spender:t,holder:n,...r}=e,i=G(),a=J(r),o=q(P(i.signer)),s=n??o.data;return q(T(i.signer,a.address,{holder:s,spender:t}))}function jr(e,t){let n=J(e),r=V();return B({...Nn(n),...t,...Tr({optimistic:e.optimistic,tokenAddress:e.tokenAddress,queryClient:r,options:t})})}function Mr(e,t){return B({...Xn(J(e)),...t,onSuccess:(n,r,i,a)=>{t?.onSuccess?.(n,r,i,a),k(a.client,e.tokenAddress)}})}function Nr(e,t){return B({...Jn(J(e)),...t,onSuccess:(n,r,i,a)=>{t?.onSuccess?.(n,r,i,a),k(a.client,e.tokenAddress)}})}function Pr(e,t){return B({...nn(J(e)),...t,onSuccess:(n,r,i,a)=>{t?.onSuccess?.(n,r,i,a),O(a.client,e.tokenAddress)}})}function Fr(e,t){return B({...Kn(J(e)),...t,onSuccess:(n,r,i,a)=>{t?.onSuccess?.(n,r,i,a),O(a.client,e.tokenAddress)}})}function Ir(e,t){return B({...Wn(J(e)),...t,onSuccess:(n,r,i,a)=>{t?.onSuccess?.(n,r,i,a),O(a.client,e.tokenAddress)}})}function Lr(e,t){return B({...Tn(J(e)),...t,onSuccess:(n,r,i,a)=>{t?.onSuccess?.(n,r,i,a),O(a.client,e.tokenAddress)}})}function Rr(e,t){let{tokenAddress:n,wrapperAddress:r}=e,i=G(),a=K(P(i.signer)).data,o=L(i.signer,n,{owner:a,wrapperAddress:r});return K({...o,...t,enabled:(o.enabled??!0)&&(t?.enabled??!0)})}function zr(e){let{tokenAddress:t,wrapperAddress:n}=e,r=G(),i=q(P(r.signer)).data;return q(L(r.signer,t,{owner:i,wrapperAddress:n}))}function $(){let e=G(),{data:t}=K({queryKey:z.wrappersRegistry.chainId(),queryFn:()=>e.signer.getChainId(),staleTime:3e4});return t===void 0?void 0:e.registry.getAddress(t)}function Br(e,t){let{tokenAddress:n,erc20Address:r}=e,i=G(),a=$(),o=R(i.registry,{tokenAddress:n,erc20Address:r,registryAddress:a});return K({...o,...t,enabled:(o.enabled??!0)&&(t?.enabled??!0)})}function Vr(e){let{tokenAddress:t,erc20Address:n}=e,r=G(),i=$();return q(R(r.registry,{tokenAddress:t,erc20Address:n,registryAddress:i}))}function Hr(e,t){return K({...F(G().signer,e),...t})}function Ur(e){return q(F(G().signer,e))}function Wr(e,t){return B({...qt(J(e)),...t,onSuccess:(e,n,r,i)=>{try{t?.onSuccess?.(e,n,r,i)}finally{i.client.invalidateQueries({queryKey:z.delegationStatus.all})}}})}function Gr(e,t){return B({...Dn(J(e)),...t,onSuccess:(e,n,r,i)=>{try{t?.onSuccess?.(e,n,r,i)}finally{i.client.invalidateQueries({queryKey:z.delegationStatus.all})}}})}function Kr(e,t){let n=Zt(G(),e);return K({...n,...t,enabled:(n.enabled??!0)&&(t?.enabled??!0)})}function qr(e,t){return B({...Gt(Y(e)),...t})}function Jr(e,t){return B({...Dt(e),...t})}function Yr(e,t){return B({...Tt(J(e)),...t,onSuccess:(n,r,i,a)=>{t?.onSuccess?.(n,r,i,a),cn(a.client,e.tokenAddress)}})}function Xr(e,t){return K({...j(G().signer,e),...t})}function Zr(e){return q(j(G().signer,e))}function Qr(e,t){return K({...N(G().signer,e),...t})}function $r(e){return q(N(G().signer,e))}function ei(e,t){return K({...I(G().signer,e),...t})}function ti(e){return q(I(G().signer,e))}function ni(){let e=G(),t=$();return K(zn(e.signer,{registryAddress:t}))}function ri(){let e=G(),t=$();return K(Rn(e.signer,{registryAddress:t}))}function ii({fromIndex:e,toIndex:t}){let n=G(),r=$();return K(Bn(n.signer,{registryAddress:r,fromIndex:e,toIndex:t}))}function ai({index:e}){let t=G(),n=$();return K(Ln(t.signer,{registryAddress:n,index:e}))}function oi({tokenAddress:e}){let t=G(),n=$();return K(Ft(t.signer,{registryAddress:n,tokenAddress:e}))}function si({confidentialTokenAddress:e}){let t=G(),n=$();return K(Fn(t.signer,{registryAddress:n,confidentialTokenAddress:e}))}function ci({confidentialTokenAddress:e}){let t=G(),n=$();return K(M(t.signer,{registryAddress:n,confidentialTokenAddress:e}))}function li({page:e=1,pageSize:t=100,metadata:n=!1}={}){let r=G(),i=$();return K(hn(r.registry,{registryAddress:i,page:e,pageSize:t,metadata:n}))}export{e as ACL_TOPICS,t as AclPausedError,n as ApprovalFailedError,r as BalanceCheckUnavailableError,i as ChromeSessionStorage,a as ConfigurationError,o as CredentialsManager,s as DecryptionFailedError,c as DefaultRegistryAddresses,l as DelegatedCredentialsManager,u as DelegationContractIsSelfError,d as DelegationCooldownError,f as DelegationDelegateEqualsContractError,p as DelegationExpirationTooSoonError,ee as DelegationExpiredError,te as DelegationExpiryUnchangedError,ne as DelegationNotFoundError,re as DelegationNotPropagatedError,ie as DelegationSelfNotAllowedError,ae as ERC20ReadFailedError,oe as ERC7984_INTERFACE_ID,se as ERC7984_WRAPPER_INTERFACE_ID,ce as ERC7984_WRAPPER_INTERFACE_ID_LEGACY,le as EncryptionFailedError,ue as HardhatConfig,de as IndexedDBStorage,fe as InsufficientConfidentialBalanceError,pe as InsufficientERC20BalanceError,me as InvalidKeypairError,he as KeypairExpiredError,ge as MainnetConfig,_e as MemoryStorage,ve as NoCiphertextError,ye as ReadonlyToken,be as RelayerRequestFailedError,xe as RelayerWeb,Se as SepoliaConfig,Ce as SigningFailedError,we as SigningRejectedError,Te as TOKEN_TOPICS,Ee as Token,De as Topics,Oe as TransactionRevertedError,ke as WrappersRegistry,m as ZERO_HANDLE,h as ZamaError,g as ZamaErrorCode,cr as ZamaProvider,_ as ZamaSDK,y as ZamaSDKEvents,St as allowMutationOptions,b as allowanceContract,x as approveContract,wt as approveUnderlyingMutationOptions,S as balanceOfContract,Et as batchDecryptBalancesAsMutationOptions,C as chromeSessionStorage,w as clearPendingUnshield,Ot as confidentialApproveMutationOptions,Ae as confidentialBalanceOfContract,At as confidentialBalanceQueryOptions,Mt as confidentialBalancesQueryOptions,Pt as confidentialIsApprovedQueryOptions,je as confidentialTotalSupplyContract,Me as confidentialTransferContract,Ne as confidentialTransferFromContract,It as confidentialTransferFromMutationOptions,Rt as confidentialTransferMutationOptions,Bt as createDelegatedUserDecryptEIP712MutationOptions,Ht as createEIP712MutationOptions,Pe as decimalsContract,Fe as decodeAclEvent,Ie as decodeAclEvents,Le as decodeConfidentialTransfer,Re as decodeDelegatedForUserDecryption,ze as decodeOnChainEvent,Be as decodeOnChainEvents,Ve as decodeRevokedDelegationForUserDecryption,He as decodeUnwrapRequested,Ue as decodeUnwrappedFinalized,We as decodeUnwrappedStarted,Ge as decodeWrapped,Wt as decryptBalanceAsMutationOptions,Kt as delegateDecryptionMutationOptions,Ke as delegateForUserDecryptionContract,Jt as delegatedUserDecryptMutationOptions,Xt as delegationStatusQueryOptions,Qt as encryptMutationOptions,en as filterQueryOptions,qe as finalizeUnwrapContract,tn as finalizeUnwrapMutationOptions,Je as findDelegatedForUserDecryption,Ye as findRevokedDelegationForUserDecryption,Xe as findUnwrapRequested,Ze as findWrapped,rn as generateKeypairMutationOptions,Qe as getDelegationExpiryContract,on as hashFn,$e as indexedDBStorage,et as inferredTotalSupplyContract,un as isAllowedQueryOptions,fn as isConfidentialQueryOptions,tt as isConfidentialTokenContract,nt as isConfidentialWrapperContract,rt as isHandleDelegatedContract,it as isOperatorContract,pn as isWrapperQueryOptions,at as isZeroHandle,mn as listPairsQueryOptions,ot as loadPendingUnshield,st as matchAclRevert,ct as matchZamaError,lt as memoryStorage,ut as nameContract,gn as publicDecryptMutationOptions,vn as publicKeyQueryOptions,bn as publicParamsQueryOptions,dt as rateContract,Sn as requestZKProofVerificationMutationOptions,wn as resumeUnshieldMutationOptions,ft as revokeDelegationContract,En as revokeDelegationMutationOptions,On as revokeMutationOptions,An as revokeSessionMutationOptions,pt as savePendingUnshield,mt as setOperatorContract,Mn as shieldMutationOptions,Pn as signerAddressQueryOptions,ht as supportsInterfaceContract,gt as symbolContract,In as tokenMetadataQueryOptions,_t as totalSupplyContract,Vn as totalSupplyQueryOptions,Hn as underlyingAllowanceQueryOptions,vt as underlyingContract,Un as unshieldAllMutationOptions,Gn as unshieldMutationOptions,qn as unwrapAllMutationOptions,yt as unwrapContract,bt as unwrapFromBalanceContract,Yn as unwrapMutationOptions,yr as useAllow,Yr as useApproveUnderlying,Jr as useBatchDecryptBalancesAs,Or as useConfidentialApprove,Cr as useConfidentialBalance,wr as useConfidentialBalances,kr as useConfidentialIsApproved,Ar as useConfidentialIsApprovedSuspense,oi as useConfidentialTokenAddress,Er as useConfidentialTransfer,Dr as useConfidentialTransferFrom,mr as useCreateDelegatedUserDecryptEIP712,pr as useCreateEIP712,qr as useDecryptBalanceAs,Wr as useDelegateDecryption,hr as useDelegatedUserDecrypt,Kr as useDelegationStatus,lr as useEncrypt,Pr as useFinalizeUnwrap,fr as useGenerateKeypair,br as useIsAllowed,Xr as useIsConfidential,Zr as useIsConfidentialSuspense,ci as useIsConfidentialTokenValid,Qr as useIsWrapper,$r as useIsWrapperSuspense,li as useListPairs,Hr as useMetadata,Ur as useMetadataSuspense,dr as usePublicDecrypt,_r as usePublicKey,vr as usePublicParams,Y as useReadonlyToken,gr as useRequestZKProofVerification,Lr as useResumeUnshield,xr as useRevoke,Gr as useRevokeDelegation,Sr as useRevokeSession,jr as useShield,J as useToken,si as useTokenAddress,ai as useTokenPair,ri as useTokenPairsLength,ni as useTokenPairsRegistry,ii as useTokenPairsSlice,ei as useTotalSupply,ti as useTotalSupplySuspense,Rr as useUnderlyingAllowance,zr as useUnderlyingAllowanceSuspense,Fr as useUnshield,Ir as useUnshieldAll,Mr as useUnwrap,Nr as useUnwrapAll,ur as useUserDecrypt,Br as useWrapperDiscovery,Vr as useWrapperDiscoverySuspense,$ as useWrappersRegistryAddress,G as useZamaSDK,Zn as userDecryptQueryOptions,xt as wrapContract,$n as wrapperDiscoveryQueryOptions,er as zamaQueryKeys};
|
|
1
|
+
"use client";import{ZamaSDK as e}from"@zama-fhe/sdk";import{allowMutationOptions as t,approveUnderlyingMutationOptions as n,batchDecryptBalancesAsMutationOptions as r,confidentialApproveMutationOptions as i,confidentialBalanceQueryOptions as a,confidentialBalancesQueryOptions as o,confidentialIsApprovedQueryOptions as s,confidentialTokenAddressQueryOptions as c,confidentialTransferFromMutationOptions as l,confidentialTransferMutationOptions as u,createDelegatedUserDecryptEIP712MutationOptions as d,createEIP712MutationOptions as f,decryptBalanceAsMutationOptions as p,delegateDecryptionMutationOptions as m,delegatedUserDecryptMutationOptions as ee,delegationStatusQueryOptions as h,encryptMutationOptions as g,finalizeUnwrapMutationOptions as te,generateKeypairMutationOptions as ne,hashFn as _,invalidateAfterApprove as re,invalidateAfterApproveUnderlying as ie,invalidateAfterShield as v,invalidateAfterTransfer as y,invalidateAfterUnshield as b,invalidateAfterUnwrap as x,invalidateWalletLifecycleQueries as S,isAllowedQueryOptions as ae,isConfidentialQueryOptions as C,isConfidentialTokenValidQueryOptions as oe,isWrapperQueryOptions as w,listPairsQueryOptions as se,publicDecryptMutationOptions as ce,publicKeyQueryOptions as le,publicParamsQueryOptions as ue,requestZKProofVerificationMutationOptions as de,resumeUnshieldMutationOptions as fe,revokeDelegationMutationOptions as pe,revokeMutationOptions as me,revokeSessionMutationOptions as he,shieldMutationOptions as ge,signerAddressQueryOptions as T,tokenAddressQueryOptions as _e,tokenMetadataQueryOptions as E,tokenPairQueryOptions as D,tokenPairsLengthQueryOptions as O,tokenPairsQueryOptions as k,tokenPairsSliceQueryOptions as A,totalSupplyQueryOptions as j,underlyingAllowanceQueryOptions as M,unshieldAllMutationOptions as N,unshieldMutationOptions as P,unwrapAllMutationOptions as F,unwrapMutationOptions as I,userDecryptQueryOptions as ve,wrapperDiscoveryQueryOptions as L,zamaQueryKeys as R}from"@zama-fhe/sdk/query";import{skipToken as ye,useMutation as z,useQuery as be,useQueryClient as B,useSuspenseQuery as xe}from"@tanstack/react-query";import{createContext as Se,useContext as Ce,useEffect as V,useMemo as H,useRef as we}from"react";import{jsx as Te}from"react/jsx-runtime";const U=Se(null);function Ee({children:t,relayer:n,signer:r,storage:i,sessionStorage:a,keypairTTL:o,sessionTTL:s,registryAddresses:c,registryTTL:l,onEvent:u}){let d=B(),f=we(u);V(()=>{f.current=u});let p=H(()=>r?.subscribe?{onDisconnect:()=>S(d),onAccountChange:()=>S(d),onChainChange:()=>S(d)}:void 0,[d,r]),m=H(()=>new e({relayer:n,signer:r,storage:i,sessionStorage:a,keypairTTL:o,sessionTTL:s,registryAddresses:c,registryTTL:l,onEvent:f.current,signerLifecycleCallbacks:p}),[n,r,i,a,o,s,c,l,p]);return V(()=>()=>m.dispose(),[m]),Te(U.Provider,{value:m,children:t})}function W(){let e=Ce(U);if(!e)throw Error(`useZamaSDK must be used within a <ZamaProvider>. Wrap your component tree in <ZamaProvider relayer={…} signer={…} storage={…}>.`);return e}function De(){return z(g(W()))}function G(e){return be({...e,queryKeyHashFn:_})}function K(e){return xe({...e,queryKeyHashFn:_})}function Oe(e,t){let n=ve(W(),e);return G({...n,...t,enabled:n.enabled&&(t?.enabled??!1)})}function ke(){return z(ce(W()))}function Ae(){return z(ne(W()))}function je(){return z(f(W()))}function Me(){return z(d(W()))}function Ne(){return z(ee(W()))}function Pe(){return z(de(W()))}function Fe(){return G(le(W()))}function Ie(e){return G(ue(W(),e))}function Le(e){return z({...t(W()),...e,onSuccess:(t,n,r,i)=>{e?.onSuccess?.(t,n,r,i),i.client.invalidateQueries({queryKey:R.isAllowed.all})}})}function Re(e){let t=W(),n=G({...T(t.signer)}).data;return G(n?ae(t,{account:n,contractAddresses:e.contractAddresses}):{queryKey:R.isAllowed.all,queryFn:ye,enabled:!1})}function ze(e){return z({...me(W()),...e,onSuccess:(t,n,r,i)=>{e?.onSuccess?.(t,n,r,i),i.client.removeQueries({queryKey:R.isAllowed.all}),i.client.removeQueries({queryKey:R.decryption.all})}})}function Be(e){return z({...he(W()),...e,onSuccess:(t,n,r,i)=>{e?.onSuccess?.(t,n,r,i),i.client.removeQueries({queryKey:R.isAllowed.all}),i.client.removeQueries({queryKey:R.decryption.all})}})}function q(e){let t=W();return H(()=>t.createToken(e.tokenAddress,e.wrapperAddress),[t,e.tokenAddress,e.wrapperAddress])}function J(e){let t=W();return H(()=>t.createReadonlyToken(e),[t,e])}function Ve(e,t){let{tokenAddress:n}=e,{enabled:r=!0}=t??{},i=W(),o=J(n),s=G(T(i.signer)).data,c=a(o,{tokenAddress:n,owner:s});return G({...c,...t,enabled:c.enabled&&r})}function He(e,t){let{tokenAddresses:n}=e,{enabled:r=!0}=t??{},i=W(),a=G(T(i.signer)).data,s=o(H(()=>n.map(e=>i.createReadonlyToken(e)),[i,n]),{owner:a});return G({...s,...t,enabled:(s.enabled??!0)&&r})}function Y(e,t){let n=e?t:void 0;return{wrappedContext:n,callerContext:e?n?.callerContext:t}}async function X({queryClient:e,tokenAddress:t,amount:n,mode:r}){let i=R.confidentialBalance.token(t);await e.cancelQueries({queryKey:i});let a=e.getQueriesData({queryKey:i});for(let[t,i]of a)i!==void 0&&e.setQueryData(t,r===`add`?i+n:i-n);return a}function Z(e,t){for(let[n,r]of t)e.setQueryData(n,r)}function Ue({optimistic:e,tokenAddress:t,queryClient:n,options:r}){return{onMutate:e?async(e,i)=>({snapshot:await X({queryClient:n,tokenAddress:t,amount:e.amount,mode:`add`}),callerContext:await r?.onMutate?.(e,i)}):r?.onMutate,onError:(t,i,a,o)=>{let{wrappedContext:s,callerContext:c}=Y(e,a);try{s&&Z(n,s.snapshot)}finally{r?.onError?.(t,i,c,o)}},onSuccess:(n,i,a,o)=>{let{callerContext:s}=Y(e,a);r?.onSuccess?.(n,i,s,o),v(o.client,t)},onSettled:(t,n,i,a,o)=>{let{callerContext:s}=Y(e,a);r?.onSettled?.(t,n,i,s,o)}}}function We(e,t){let n=q(e),r=B();return z({...u(n),...t,onMutate:e.optimistic?async(n,i)=>({snapshot:await X({queryClient:r,tokenAddress:e.tokenAddress,amount:n.amount,mode:`subtract`}),callerContext:await t?.onMutate?.(n,i)}):t?.onMutate,onError:(n,i,a,o)=>{let{wrappedContext:s,callerContext:c}=Y(e.optimistic,a);try{s&&Z(r,s.snapshot)}finally{t?.onError?.(n,i,c,o)}},onSuccess:(n,r,i,a)=>{let{callerContext:o}=Y(e.optimistic,i);t?.onSuccess?.(n,r,o,a),y(a.client,e.tokenAddress)},onSettled:(n,r,i,a,o)=>{let{callerContext:s}=Y(e.optimistic,a);t?.onSettled?.(n,r,i,s,o)}})}function Ge(e,t){return z({...l(q(e)),...t,onSuccess:(n,r,i,a)=>{t?.onSuccess?.(n,r,i,a),y(a.client,e.tokenAddress)}})}function Ke(e,t){return z({...i(q(e)),...t,onSuccess:(n,r,i,a)=>{t?.onSuccess?.(n,r,i,a),re(a.client,e.tokenAddress)}})}function qe(e,t){let{tokenAddress:n,spender:r,holder:i}=e,a=W(),o=G({...T(a.signer),enabled:n!==void 0&&r!==void 0&&i===void 0}),c=i??o.data,l=s(a.signer,n,{holder:c,spender:r});return G({...l,...t,enabled:(l.enabled??!0)&&(t?.enabled??!0)})}function Je(e){let{spender:t,holder:n,...r}=e,i=W(),a=q(r),o=K(T(i.signer)),c=n??o.data;return K(s(i.signer,a.address,{holder:c,spender:t}))}function Ye(e,t){let n=q(e),r=B();return z({...ge(n),...t,...Ue({optimistic:e.optimistic,tokenAddress:e.tokenAddress,queryClient:r,options:t})})}function Xe(e,t){return z({...I(q(e)),...t,onSuccess:(n,r,i,a)=>{t?.onSuccess?.(n,r,i,a),x(a.client,e.tokenAddress)}})}function Ze(e,t){return z({...F(q(e)),...t,onSuccess:(n,r,i,a)=>{t?.onSuccess?.(n,r,i,a),x(a.client,e.tokenAddress)}})}function Qe(e,t){return z({...te(q(e)),...t,onSuccess:(n,r,i,a)=>{t?.onSuccess?.(n,r,i,a),b(a.client,e.tokenAddress)}})}function $e(e,t){return z({...P(q(e)),...t,onSuccess:(n,r,i,a)=>{t?.onSuccess?.(n,r,i,a),b(a.client,e.tokenAddress)}})}function et(e,t){return z({...N(q(e)),...t,onSuccess:(n,r,i,a)=>{t?.onSuccess?.(n,r,i,a),b(a.client,e.tokenAddress)}})}function tt(e,t){return z({...fe(q(e)),...t,onSuccess:(n,r,i,a)=>{t?.onSuccess?.(n,r,i,a),b(a.client,e.tokenAddress)}})}function nt(e,t){let{tokenAddress:n,wrapperAddress:r}=e,i=W(),a=G(T(i.signer)).data,o=M(i.signer,n,{owner:a,wrapperAddress:r});return G({...o,...t,enabled:(o.enabled??!0)&&(t?.enabled??!0)})}function rt(e){let{tokenAddress:t,wrapperAddress:n}=e,r=W(),i=K(T(r.signer)).data;return K(M(r.signer,t,{owner:i,wrapperAddress:n}))}function Q(){let e=W(),{data:t}=G({queryKey:R.wrappersRegistry.chainId(),queryFn:()=>e.signer.getChainId(),staleTime:3e4});return t===void 0?void 0:e.registry.getAddress(t)}function it(e,t){let{tokenAddress:n,erc20Address:r}=e,i=W(),a=Q(),o=L(i.registry,{tokenAddress:n,erc20Address:r,registryAddress:a});return G({...o,...t,enabled:(o.enabled??!0)&&(t?.enabled??!0)})}function at(e){let{tokenAddress:t,erc20Address:n}=e,r=W(),i=Q();return K(L(r.registry,{tokenAddress:t,erc20Address:n,registryAddress:i}))}function ot(e,t){return G({...E(W().signer,e),...t})}function st(e){return K(E(W().signer,e))}function ct(e,t){return z({...m(q(e)),...t,onSuccess:(e,n,r,i)=>{try{t?.onSuccess?.(e,n,r,i)}finally{i.client.invalidateQueries({queryKey:R.delegationStatus.all})}}})}function lt(e,t){return z({...pe(q(e)),...t,onSuccess:(e,n,r,i)=>{try{t?.onSuccess?.(e,n,r,i)}finally{i.client.invalidateQueries({queryKey:R.delegationStatus.all})}}})}function ut(e,t){let n=h(W(),e);return G({...n,...t,enabled:(n.enabled??!0)&&(t?.enabled??!0)})}function dt(e,t){return z({...p(J(e)),...t})}function ft(e,t){return z({...r(e),...t})}function $(e,t){return z({...n(q(e)),...t,onSuccess:(n,r,i,a)=>{t?.onSuccess?.(n,r,i,a),ie(a.client,e.tokenAddress)}})}function pt(e,t){return G({...C(W().signer,e),...t})}function mt(e){return K(C(W().signer,e))}function ht(e,t){return G({...w(W().signer,e),...t})}function gt(e){return K(w(W().signer,e))}function _t(e,t){return G({...j(W().signer,e),...t})}function vt(e){return K(j(W().signer,e))}function yt(){let e=W(),t=Q();return G(k(e.signer,{registryAddress:t}))}function bt(){let e=W(),t=Q();return G(O(e.signer,{registryAddress:t}))}function xt({fromIndex:e,toIndex:t}){let n=W(),r=Q();return G(A(n.signer,{registryAddress:r,fromIndex:e,toIndex:t}))}function St({index:e}){let t=W(),n=Q();return G(D(t.signer,{registryAddress:n,index:e}))}function Ct({tokenAddress:e}){let t=W(),n=Q();return G(c(t.signer,{registryAddress:n,tokenAddress:e}))}function wt({confidentialTokenAddress:e}){let t=W(),n=Q();return G(_e(t.signer,{registryAddress:n,confidentialTokenAddress:e}))}function Tt({confidentialTokenAddress:e}){let t=W(),n=Q();return G(oe(t.signer,{registryAddress:n,confidentialTokenAddress:e}))}function Et({page:e=1,pageSize:t=100,metadata:n=!1}={}){let r=W(),i=Q();return G(se(r.registry,{registryAddress:i,page:e,pageSize:t,metadata:n}))}export{Ee as ZamaProvider,Le as useAllow,$ as useApproveUnderlying,ft as useBatchDecryptBalancesAs,Ke as useConfidentialApprove,Ve as useConfidentialBalance,He as useConfidentialBalances,qe as useConfidentialIsApproved,Je as useConfidentialIsApprovedSuspense,Ct as useConfidentialTokenAddress,We as useConfidentialTransfer,Ge as useConfidentialTransferFrom,Me as useCreateDelegatedUserDecryptEIP712,je as useCreateEIP712,dt as useDecryptBalanceAs,ct as useDelegateDecryption,Ne as useDelegatedUserDecrypt,ut as useDelegationStatus,De as useEncrypt,Qe as useFinalizeUnwrap,Ae as useGenerateKeypair,Re as useIsAllowed,pt as useIsConfidential,mt as useIsConfidentialSuspense,Tt as useIsConfidentialTokenValid,ht as useIsWrapper,gt as useIsWrapperSuspense,Et as useListPairs,ot as useMetadata,st as useMetadataSuspense,ke as usePublicDecrypt,Fe as usePublicKey,Ie as usePublicParams,J as useReadonlyToken,Pe as useRequestZKProofVerification,tt as useResumeUnshield,ze as useRevoke,lt as useRevokeDelegation,Be as useRevokeSession,Ye as useShield,q as useToken,wt as useTokenAddress,St as useTokenPair,bt as useTokenPairsLength,yt as useTokenPairsRegistry,xt as useTokenPairsSlice,_t as useTotalSupply,vt as useTotalSupplySuspense,nt as useUnderlyingAllowance,rt as useUnderlyingAllowanceSuspense,$e as useUnshield,et as useUnshieldAll,Xe as useUnwrap,Ze as useUnwrapAll,Oe as useUserDecrypt,it as useWrapperDiscovery,at as useWrapperDiscoverySuspense,Q as useWrappersRegistryAddress,W as useZamaSDK};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["ZamaSDK","encryptMutationOptions","useQuery","tanstack_useQuery","hashFn","useSuspenseQuery","tanstack_useSuspenseQuery","userDecryptQueryOptions","useQuery","publicDecryptMutationOptions","generateKeypairMutationOptions","createEIP712MutationOptions","createDelegatedUserDecryptEIP712MutationOptions","delegatedUserDecryptMutationOptions","requestZKProofVerificationMutationOptions","useQuery","publicKeyQueryOptions","useQuery","publicParamsQueryOptions","allowMutationOptions","zamaQueryKeys","useQuery","signerAddressQueryOptions","isAllowedQueryOptions","zamaQueryKeys","revokeMutationOptions","zamaQueryKeys","revokeSessionMutationOptions","zamaQueryKeys","useQuery","signerAddressQueryOptions","confidentialBalanceQueryOptions","useQuery","signerAddressQueryOptions","confidentialBalancesQueryOptions","zamaQueryKeys","confidentialTransferMutationOptions","confidentialTransferFromMutationOptions","confidentialApproveMutationOptions","useQuery","signerAddressQueryOptions","confidentialIsApprovedQueryOptions","useSuspenseQuery","shieldMutationOptions","unwrapMutationOptions","unwrapAllMutationOptions","finalizeUnwrapMutationOptions","unshieldMutationOptions","unshieldAllMutationOptions","resumeUnshieldMutationOptions","useQuery","signerAddressQueryOptions","underlyingAllowanceQueryOptions","useSuspenseQuery","useQuery","zamaQueryKeys","wrapperDiscoveryQueryOptions","useQuery","useSuspenseQuery","useQuery","tokenMetadataQueryOptions","useSuspenseQuery","delegateDecryptionMutationOptions","zamaQueryKeys","revokeDelegationMutationOptions","zamaQueryKeys","delegationStatusQueryOptions","useQuery","decryptBalanceAsMutationOptions","batchDecryptBalancesAsMutationOptions","approveUnderlyingMutationOptions","useQuery","isConfidentialQueryOptions","useSuspenseQuery","isWrapperQueryOptions","useQuery","totalSupplyQueryOptions","useSuspenseQuery","useQuery","useQuery","useQuery","useQuery","useQuery","useQuery","useQuery","useQuery","listPairsQueryOptions"],"sources":["../src/provider.tsx","../src/relayer/use-encrypt.ts","../src/utils/query.ts","../src/relayer/use-user-decrypt.ts","../src/relayer/use-public-decrypt.ts","../src/relayer/use-generate-keypair.ts","../src/relayer/use-create-eip712.ts","../src/relayer/use-create-delegated-user-decrypt-eip712.ts","../src/relayer/use-delegated-user-decrypt.ts","../src/relayer/use-request-zk-proof-verification.ts","../src/relayer/use-public-key.ts","../src/relayer/use-public-params.ts","../src/authorization/use-allow.ts","../src/authorization/use-is-allowed.ts","../src/authorization/use-revoke.ts","../src/authorization/use-revoke-session.ts","../src/token/use-token.ts","../src/token/use-readonly-token.ts","../src/balance/use-confidential-balance.ts","../src/balance/use-confidential-balances.ts","../src/balance/optimistic-balance-update.ts","../src/transfer/use-confidential-transfer.ts","../src/transfer/use-confidential-transfer-from.ts","../src/transfer/use-confidential-approve.ts","../src/transfer/use-confidential-is-approved.ts","../src/shield/use-shield.ts","../src/unwrap/use-unwrap.ts","../src/unwrap/use-unwrap-all.ts","../src/unwrap/use-finalize-unwrap.ts","../src/unshield/use-unshield.ts","../src/unshield/use-unshield-all.ts","../src/unshield/use-resume-unshield.ts","../src/shield/use-underlying-allowance.ts","../src/wrappers-registry/use-wrappers-registry-address.ts","../src/token/use-wrapper-discovery.ts","../src/token/use-metadata.ts","../src/delegation/use-delegate-decryption.ts","../src/delegation/use-revoke-delegation.ts","../src/delegation/use-delegation-status.ts","../src/delegation/use-decrypt-balance-as.ts","../src/delegation/use-batch-decrypt-balances-as.ts","../src/shield/use-approve-underlying.ts","../src/token/use-is-confidential.ts","../src/token/use-total-supply.ts","../src/wrappers-registry/use-token-pairs-registry.ts","../src/wrappers-registry/use-token-pairs-length.ts","../src/wrappers-registry/use-token-pairs-slice.ts","../src/wrappers-registry/use-token-pair.ts","../src/wrappers-registry/use-confidential-token-address.ts","../src/wrappers-registry/use-token-address.ts","../src/wrappers-registry/use-is-confidential-token-valid.ts","../src/wrappers-registry/use-list-pairs.ts"],"sourcesContent":["\"use client\";\n\nimport type {\n Address,\n GenericSigner,\n GenericStorage,\n RelayerSDK,\n ZamaSDKEventListener,\n} from \"@zama-fhe/sdk\";\nimport { ZamaSDK } from \"@zama-fhe/sdk\";\nimport { invalidateWalletLifecycleQueries } from \"@zama-fhe/sdk/query\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport {\n createContext,\n type PropsWithChildren,\n useContext,\n useEffect,\n useMemo,\n useRef,\n} from \"react\";\n\n/** Props for {@link ZamaProvider}. */\nexport interface ZamaProviderProps extends PropsWithChildren {\n /** FHE relayer backend (RelayerWeb for browser, RelayerNode for server). */\n relayer: RelayerSDK;\n /** Wallet signer (`ViemSigner`, `EthersSigner`, or custom {@link GenericSigner}). */\n signer: GenericSigner;\n /** Credential storage backend (IndexedDBStorage for browser, MemoryStorage for tests). */\n storage: GenericStorage;\n /**\n * Session storage for wallet signatures. Defaults to in-memory (lost on reload).\n * Pass a `chrome.storage.session`-backed store for web extensions.\n */\n sessionStorage?: GenericStorage;\n /**\n * How long the ML-KEM re-encryption keypair remains valid, in seconds.\n * Default: `86400` (1 day). Must be positive — `0` is rejected.\n */\n keypairTTL?: number;\n /**\n * Controls how long session signatures (EIP-712 wallet signatures) remain valid, in seconds.\n * Default: `2592000` (30 days).\n * - `0`: never persist — every operation triggers a signing prompt (high-security mode).\n * - Positive number: seconds until the session signature expires and requires re-authentication.\n */\n sessionTTL?: number;\n /**\n * Per-chain wrappers registry address overrides, merged on top of built-in defaults.\n * Use this for custom or local chains (e.g. Hardhat) where no default registry exists.\n */\n registryAddresses?: Record<number, Address>;\n /**\n * How long cached registry results remain valid, in seconds.\n * Default: `86400` (24 hours).\n */\n registryTTL?: number;\n /** Callback invoked on SDK lifecycle events. */\n onEvent?: ZamaSDKEventListener;\n}\n\nconst ZamaSDKContext = createContext<ZamaSDK | null>(null);\n\n/**\n * Provides a {@link ZamaSDK} instance to all descendant hooks.\n *\n * @example\n * ```tsx\n * <ZamaProvider relayer={relayer} signer={signer} storage={storage}>\n * <App />\n * </ZamaProvider>\n * ```\n */\nexport function ZamaProvider({\n children,\n relayer,\n signer,\n storage,\n sessionStorage,\n keypairTTL,\n sessionTTL,\n registryAddresses,\n registryTTL,\n onEvent,\n}: ZamaProviderProps) {\n const queryClient = useQueryClient();\n\n // Stabilize onEvent so an inline arrow doesn't recreate the SDK every render.\n const onEventRef = useRef(onEvent);\n\n useEffect(() => {\n onEventRef.current = onEvent;\n });\n\n const signerLifecycleCallbacks = useMemo(\n () =>\n signer?.subscribe\n ? {\n onDisconnect: () => invalidateWalletLifecycleQueries(queryClient),\n onAccountChange: () => invalidateWalletLifecycleQueries(queryClient),\n onChainChange: () => invalidateWalletLifecycleQueries(queryClient),\n }\n : undefined,\n [queryClient, signer],\n );\n\n const sdk = useMemo(\n () =>\n new ZamaSDK({\n relayer,\n signer,\n storage,\n sessionStorage,\n keypairTTL,\n sessionTTL,\n registryAddresses,\n registryTTL,\n onEvent: onEventRef.current,\n signerLifecycleCallbacks,\n }),\n [\n relayer,\n signer,\n storage,\n sessionStorage,\n keypairTTL,\n sessionTTL,\n registryAddresses,\n registryTTL,\n signerLifecycleCallbacks,\n ],\n );\n\n // Clean up signer subscriptions on unmount without terminating the\n // caller-owned relayer. dispose() only unsubscribes from wallet events\n // and is idempotent.\n useEffect(() => () => sdk.dispose(), [sdk]);\n\n return <ZamaSDKContext.Provider value={sdk}>{children}</ZamaSDKContext.Provider>;\n}\n\n/**\n * Access the {@link ZamaSDK} instance from context.\n * Throws if called outside a {@link ZamaProvider} or when no signer is provided.\n *\n * @example\n * ```tsx\n * const sdk = useZamaSDK();\n * const token = sdk.createReadonlyToken(\"0x...\");\n * ```\n */\nexport function useZamaSDK(): ZamaSDK {\n const context = useContext(ZamaSDKContext);\n\n if (!context) {\n throw new Error(\n \"useZamaSDK must be used within a <ZamaProvider>. \" +\n \"Wrap your component tree in <ZamaProvider relayer={…} signer={…} storage={…}>.\",\n );\n }\n\n return context;\n}\n","\"use client\";\n\nimport type { EncryptParams, EncryptResult } from \"@zama-fhe/sdk\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { encryptMutationOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\n/**\n * Encrypt a plaintext value using FHE.\n * Calls the relayer's `encrypt` method via a mutation.\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link EncryptionFailedError} — FHE encryption failed\n *\n * @returns A mutation whose `mutate` accepts {@link EncryptParams}.\n *\n * @example\n * ```tsx\n * const encrypt = useEncrypt();\n * encrypt.mutate({ values: [{ value: 1000n, type: \"euint64\" }], contractAddress: \"0x...\", userAddress: \"0x...\" });\n * ```\n */\nexport function useEncrypt() {\n const sdk = useZamaSDK();\n return useMutation<EncryptResult, Error, EncryptParams>(encryptMutationOptions(sdk));\n}\n","import {\n type DefaultError,\n type QueriesOptions,\n type QueriesResults,\n useQueries as tanstack_useQueries,\n useQuery as tanstack_useQuery,\n useSuspenseQuery as tanstack_useSuspenseQuery,\n type UseQueryOptions,\n type UseQueryResult,\n type UseSuspenseQueryOptions,\n type UseSuspenseQueryResult,\n} from \"@tanstack/react-query\";\nimport { hashFn } from \"@zama-fhe/sdk/query\";\n\n/**\n * Thin wrapper around TanStack's useQuery that injects our custom queryKeyHashFn.\n * Mirrors the wagmi pattern — the type safety boundary is at the factory and hook levels.\n *\n * Callers typically specify only `<TData>` (e.g. `useQuery<PublicKeyData>(...)`) while\n * factory options carry specific tuple keys (e.g. `readonly [\"zama.publicKey\"]`).\n * We erase the QueryKey param via `AnyKeyQueryOptions` so callers don't need to\n * spell out the key type — any QueryKey subtype is accepted.\n */\ntype AnyKeyQueryOptions<TData, TError> = UseQueryOptions<\n TData,\n TError,\n TData,\n // oxlint-disable-next-line typescript/no-explicit-any\n any\n>;\ntype AnyKeySuspenseOptions<TData, TError> = UseSuspenseQueryOptions<\n TData,\n TError,\n TData,\n // oxlint-disable-next-line typescript/no-explicit-any\n any\n>;\n\nexport function useQuery<TData = unknown, TError = DefaultError>(\n options: AnyKeyQueryOptions<TData, TError>,\n): UseQueryResult<TData, TError> {\n return tanstack_useQuery({\n ...options,\n queryKeyHashFn: hashFn,\n });\n}\n\nexport function useSuspenseQuery<TData = unknown, TError = DefaultError>(\n options: AnyKeySuspenseOptions<TData, TError>,\n): UseSuspenseQueryResult<TData, TError> {\n return tanstack_useSuspenseQuery({\n ...options,\n queryKeyHashFn: hashFn,\n });\n}\n\n/**\n * Thin wrapper around TanStack's useQueries that injects our custom queryKeyHashFn\n * on every query in the array.\n */\nexport function useQueries<\n // oxlint-disable-next-line typescript/no-explicit-any\n T extends Array<any>,\n TCombinedResult = QueriesResults<T>,\n>({\n queries,\n ...options\n}: {\n queries: readonly [...QueriesOptions<T>];\n combine?: (result: QueriesResults<T>) => TCombinedResult;\n subscribed?: boolean;\n}): TCombinedResult {\n return tanstack_useQueries({\n ...options,\n queries: queries.map((q) => ({\n ...q,\n queryKeyHashFn: hashFn,\n })) as [...QueriesOptions<T>],\n });\n}\n","\"use client\";\n\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport type { DecryptResult, UserDecryptQueryConfig } from \"@zama-fhe/sdk/query\";\nimport { userDecryptQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useQuery } from \"../utils/query\";\n\n/**\n * React hook for FHE user decryption. Thin wrapper around\n * `userDecryptQueryOptions` with `useQuery` semantics.\n */\nexport function useUserDecrypt(\n config: UserDecryptQueryConfig,\n options?: Omit<UseQueryOptions<DecryptResult>, \"queryKey\" | \"queryFn\">,\n) {\n const sdk = useZamaSDK();\n const queryOpts = userDecryptQueryOptions(sdk, config);\n return useQuery<DecryptResult>({\n ...queryOpts,\n ...options,\n enabled: queryOpts.enabled && (options?.enabled ?? false),\n });\n}\n\n/** Return type of {@link useUserDecrypt}. */\nexport type UseUserDecryptResult = ReturnType<typeof useUserDecrypt>;\n","\"use client\";\n\nimport { useMutation } from \"@tanstack/react-query\";\nimport type { Handle, PublicDecryptResult } from \"@zama-fhe/sdk\";\nimport { publicDecryptMutationOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\n/**\n * Decrypt FHE ciphertext handles using the network public key (no credential needed).\n * On success, results are available via `data.clearValues` and written to the\n * persistent decrypt cache.\n *\n * @returns A mutation whose `mutate` accepts an array of handle strings.\n *\n * @example\n * ```tsx\n * const publicDecrypt = usePublicDecrypt();\n * publicDecrypt.mutate([\"0xHandle1\", \"0xHandle2\"]);\n * // publicDecrypt.data?.clearValues => { \"0xHandle1\": 500n, ... }\n * ```\n */\nexport function usePublicDecrypt() {\n const sdk = useZamaSDK();\n return useMutation<PublicDecryptResult, Error, Handle[]>(publicDecryptMutationOptions(sdk));\n}\n","\"use client\";\n\nimport { useMutation } from \"@tanstack/react-query\";\nimport { generateKeypairMutationOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\n/**\n * Generate an FHE keypair via the relayer.\n * Returns a public/private key pair for use in decrypt authorization.\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link RelayerRequestFailedError} — relayer keypair generation request failed\n *\n * @returns A mutation whose `mutate` takes no parameters.\n *\n * @example\n * ```tsx\n * const generateKeypair = useGenerateKeypair();\n * generateKeypair.mutate();\n * // generateKeypair.data?.publicKey, generateKeypair.data?.privateKey\n * ```\n */\nexport function useGenerateKeypair() {\n const sdk = useZamaSDK();\n return useMutation(generateKeypairMutationOptions(sdk));\n}\n","\"use client\";\n\nimport type { EIP712TypedData } from \"@zama-fhe/sdk\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { createEIP712MutationOptions } from \"@zama-fhe/sdk/query\";\nimport type { CreateEIP712Params } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\nexport type { CreateEIP712Params };\n\n/**\n * Create EIP-712 typed data for signing an FHE decrypt credential.\n * The returned typed data is signed by the wallet to authorize decryption.\n *\n * @returns A mutation whose `mutate` accepts {@link CreateEIP712Params}.\n *\n * @example\n * ```tsx\n * const createEIP712 = useCreateEIP712();\n * createEIP712.mutate({\n * publicKey: keypair.publicKey,\n * contractAddresses: [\"0xToken\"],\n * startTimestamp: Math.floor(Date.now() / 1000),\n * });\n * ```\n */\nexport function useCreateEIP712() {\n const sdk = useZamaSDK();\n return useMutation<EIP712TypedData, Error, CreateEIP712Params>(createEIP712MutationOptions(sdk));\n}\n","\"use client\";\n\nimport type { KmsDelegatedUserDecryptEIP712Type } from \"@zama-fhe/sdk\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { createDelegatedUserDecryptEIP712MutationOptions } from \"@zama-fhe/sdk/query\";\nimport type { CreateDelegatedUserDecryptEIP712Params } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\nexport type { CreateDelegatedUserDecryptEIP712Params };\n\n/**\n * Create EIP-712 typed data for a delegated user decrypt credential.\n * Used when one wallet authorizes another to decrypt on its behalf.\n *\n * @returns A mutation whose `mutate` accepts {@link CreateDelegatedUserDecryptEIP712Params}.\n *\n * @example\n * ```tsx\n * const createEIP712 = useCreateDelegatedUserDecryptEIP712();\n * createEIP712.mutate({\n * publicKey: keypair.publicKey,\n * contractAddresses: [\"0xToken\"],\n * delegatorAddress: \"0xDelegator\",\n * startTimestamp: Math.floor(Date.now() / 1000),\n * });\n * ```\n */\nexport function useCreateDelegatedUserDecryptEIP712() {\n const sdk = useZamaSDK();\n return useMutation<\n KmsDelegatedUserDecryptEIP712Type,\n Error,\n CreateDelegatedUserDecryptEIP712Params\n >(createDelegatedUserDecryptEIP712MutationOptions(sdk));\n}\n","\"use client\";\n\nimport type { DelegatedUserDecryptParams, ClearValueType, Handle } from \"@zama-fhe/sdk\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { delegatedUserDecryptMutationOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\n/**\n * Decrypt FHE ciphertext handles using delegated user credentials.\n * Returns a map of handle → plaintext bigint.\n *\n * @returns A mutation whose `mutate` accepts {@link DelegatedUserDecryptParams}.\n *\n * @example\n * ```tsx\n * const decrypt = useDelegatedUserDecrypt();\n * decrypt.mutate({ handles: [\"0xHandle1\"], ...credentials });\n * // decrypt.data => { \"0xHandle1\": 1000n }\n * ```\n */\nexport function useDelegatedUserDecrypt() {\n const sdk = useZamaSDK();\n return useMutation<Record<Handle, ClearValueType>, Error, DelegatedUserDecryptParams>(\n delegatedUserDecryptMutationOptions(sdk),\n );\n}\n","\"use client\";\n\nimport type { InputProofBytesType, ZKProofLike } from \"@zama-fhe/sdk\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { requestZKProofVerificationMutationOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\n/**\n * Submit a ZK proof for on-chain verification.\n * Returns the input proof bytes for use in contract calls.\n *\n * @returns A mutation whose `mutate` accepts a {@link ZKProofLike}.\n *\n * @example\n * ```tsx\n * const verify = useRequestZKProofVerification();\n * verify.mutate(zkProof);\n * // verify.data => Uint8Array (input proof bytes)\n * ```\n */\nexport function useRequestZKProofVerification() {\n const sdk = useZamaSDK();\n return useMutation<InputProofBytesType, Error, ZKProofLike>(\n requestZKProofVerificationMutationOptions(sdk),\n );\n}\n","\"use client\";\n\nimport type { PublicKeyData } from \"@zama-fhe/sdk\";\nimport { useQuery } from \"../utils/query\";\nimport { publicKeyQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\n/**\n * Fetch the FHE network public key from the relayer.\n * Cached indefinitely since the key does not change during a session.\n *\n * @returns Query result with `data: PublicKeyData | null`.\n *\n * @example\n * ```tsx\n * const { data: publicKey } = usePublicKey();\n * // publicKey?.publicKeyId, publicKey?.publicKey\n * ```\n */\nexport function usePublicKey() {\n const sdk = useZamaSDK();\n return useQuery<PublicKeyData | null>(publicKeyQueryOptions(sdk));\n}\n","\"use client\";\n\nimport type { PublicParamsData } from \"@zama-fhe/sdk\";\nimport { useQuery } from \"../utils/query\";\nimport { publicParamsQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\n/**\n * Fetch FHE public parameters for a given bit size from the relayer.\n * Cached indefinitely since parameters do not change during a session.\n *\n * @param bits - The FHE bit size to fetch parameters for (e.g. 2048).\n * @returns Query result with `data: PublicParamsData | null`.\n *\n * @example\n * ```tsx\n * const { data: params } = usePublicParams(2048);\n * // params?.publicParams, params?.publicParamsId\n * ```\n */\nexport function usePublicParams(bits: number) {\n const sdk = useZamaSDK();\n return useQuery<PublicParamsData | null>(publicParamsQueryOptions(sdk, bits));\n}\n","\"use client\";\n\nimport { useMutation, type UseMutationOptions } from \"@tanstack/react-query\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { allowMutationOptions, zamaQueryKeys } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\n/**\n * Sign an EIP-712 message authorizing decryption of confidential handles\n * for a list of contract addresses. This is not token-specific — any\n * contract that uses FHE-encrypted values (tokens, DeFi vaults, games, etc.)\n * can be authorized in a single wallet signature. Subsequent decrypt\n * operations on any of these contracts reuse cached credentials.\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link SigningRejectedError} — user rejected the wallet prompt\n * - {@link KeypairExpiredError} — the re-encryption keypair has expired\n *\n * @example\n * ```tsx\n * const { mutateAsync: allow, isPending } = useAllow();\n *\n * // Authorize decryption for any contracts with encrypted state:\n * // confidential tokens, auction contracts, governance contracts, etc.\n * await allow([tokenAddress, auctionAddress, governanceAddress]);\n * ```\n */\nexport function useAllow(options?: UseMutationOptions<void, Error, Address[]>) {\n const sdk = useZamaSDK();\n\n return useMutation<void, Error, Address[]>({\n ...allowMutationOptions(sdk),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n void context.client.invalidateQueries({\n queryKey: zamaQueryKeys.isAllowed.all,\n });\n },\n });\n}\n","\"use client\";\n\nimport { useQuery } from \"../utils/query\";\nimport { skipToken } from \"@tanstack/react-query\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport {\n isAllowedQueryOptions,\n signerAddressQueryOptions,\n zamaQueryKeys,\n} from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\n/** Configuration for {@link useIsAllowed}. */\nexport interface UseIsAllowedConfig {\n /** Contract addresses to check credentials against (at least one required). */\n contractAddresses: [Address, ...Address[]];\n}\n\n/**\n * Check whether a session signature is cached for the connected wallet\n * and covers the given contract addresses.\n * Returns `true` if decrypt operations can proceed without a wallet prompt.\n *\n * @example\n * ```tsx\n * const { data: allowed } = useIsAllowed({ contractAddresses: [\"0xToken\"] });\n * ```\n */\nexport function useIsAllowed(config: UseIsAllowedConfig) {\n const sdk = useZamaSDK();\n const addressQuery = useQuery<Address>({\n ...signerAddressQueryOptions(sdk.signer),\n });\n const account = addressQuery.data;\n const baseOpts = account\n ? isAllowedQueryOptions(sdk, { account, contractAddresses: config.contractAddresses })\n : ({\n queryKey: zamaQueryKeys.isAllowed.all,\n queryFn: skipToken,\n enabled: false,\n } as const);\n\n return useQuery<boolean>(baseOpts);\n}\n","\"use client\";\n\nimport { useMutation, type UseMutationOptions } from \"@tanstack/react-query\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { revokeMutationOptions, zamaQueryKeys } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\n/**\n * Revoke stored FHE decrypt credentials for a list of contract addresses.\n * This is not token-specific — it revokes the EIP-712 authorization for\n * any contract that uses FHE-encrypted values. The next decrypt operation\n * on these contracts will require a fresh wallet signature.\n *\n * @example\n * ```tsx\n * const { mutate: revoke } = useRevoke();\n *\n * // Revoke for any contracts: tokens, auctions, governance, etc.\n * revoke([tokenAddress, auctionAddress]);\n * ```\n */\nexport function useRevoke(options?: UseMutationOptions<void, Error, Address[]>) {\n const sdk = useZamaSDK();\n\n return useMutation<void, Error, Address[]>({\n ...revokeMutationOptions(sdk),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n context.client.removeQueries({ queryKey: zamaQueryKeys.isAllowed.all });\n context.client.removeQueries({ queryKey: zamaQueryKeys.decryption.all });\n },\n });\n}\n","\"use client\";\n\nimport { useMutation, type UseMutationOptions } from \"@tanstack/react-query\";\nimport { revokeSessionMutationOptions, zamaQueryKeys } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\n/**\n * Revoke the session signature for the connected wallet without\n * specifying contract addresses. Useful for wallet disconnect handlers.\n *\n * @example\n * ```tsx\n * const { mutate: revokeSession } = useRevokeSession();\n * revokeSession();\n * ```\n */\nexport function useRevokeSession(options?: UseMutationOptions<void>) {\n const sdk = useZamaSDK();\n\n return useMutation<void>({\n ...revokeSessionMutationOptions(sdk),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n context.client.removeQueries({ queryKey: zamaQueryKeys.isAllowed.all });\n context.client.removeQueries({ queryKey: zamaQueryKeys.decryption.all });\n },\n });\n}\n","\"use client\";\n\nimport { useMemo } from \"react\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { useZamaSDK } from \"../provider\";\n\n/** Base configuration shared by all mutation hooks that need a Token instance. */\nexport interface UseZamaConfig {\n /** Address of the confidential token contract. */\n tokenAddress: Address;\n /** Address of the wrapper contract (required for shield/unshield operations). */\n wrapperAddress?: Address;\n}\n\n/**\n * Get a {@link Token} instance, memoized by address pair.\n * Reads signer and storage from the nearest {@link ZamaProvider}.\n *\n * @param config - Token and optional wrapper addresses.\n * @returns A memoized `Token` instance.\n *\n * @example\n * ```tsx\n * const token = useToken({ tokenAddress: \"0xToken\", wrapperAddress: \"0xWrapper\" });\n * ```\n */\nexport function useToken(config: UseZamaConfig) {\n const sdk = useZamaSDK();\n\n return useMemo(\n () => sdk.createToken(config.tokenAddress, config.wrapperAddress),\n [sdk, config.tokenAddress, config.wrapperAddress],\n );\n}\n","\"use client\";\n\nimport { useMemo } from \"react\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { useZamaSDK } from \"../provider\";\n\n/**\n * Get a {@link ReadonlyToken} instance, memoized by address.\n * Supports balance queries, ERC-165 checks, and authorization — no wrapper needed.\n * Reads signer and storage from the nearest {@link ZamaProvider}.\n *\n * @param address - Address of the confidential token contract.\n * @returns A memoized `ReadonlyToken` instance.\n *\n * @example\n * ```tsx\n * const token = useReadonlyToken(\"0xToken\");\n * // token.balanceOf(), token.isConfidential(), etc.\n * ```\n */\nexport function useReadonlyToken(address: Address) {\n const sdk = useZamaSDK();\n\n return useMemo(() => sdk.createReadonlyToken(address), [sdk, address]);\n}\n","\"use client\";\n\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { confidentialBalanceQueryOptions, signerAddressQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useReadonlyToken } from \"../token/use-readonly-token\";\nimport { useQuery } from \"../utils/query\";\n\n/** Configuration for {@link useConfidentialBalance}. */\nexport interface UseConfidentialBalanceConfig {\n /** Address of the confidential token contract. */\n tokenAddress: Address;\n}\n\n/** Query options for {@link useConfidentialBalance}. */\nexport interface UseConfidentialBalanceOptions extends Omit<\n UseQueryOptions<bigint>,\n \"queryKey\" | \"queryFn\" | \"enabled\"\n> {\n /** Whether the query is enabled. Callback form is not supported in composite hooks. */\n enabled?: boolean;\n}\n\n/**\n * Declarative hook to read the connected wallet's confidential token balance.\n * Calls `token.balanceOf(owner)` which reads the on-chain handle and decrypts\n * via the SDK. Cached values are returned instantly — the relayer is only hit\n * when the handle changes.\n *\n * @param config - Token address configuration.\n * @param options - React Query options forwarded to the balance query.\n * @returns The balance query result.\n *\n * @example\n * ```tsx\n * const { data: balance, isLoading } = useConfidentialBalance({\n * tokenAddress: \"0x...\",\n * });\n * ```\n */\nexport function useConfidentialBalance(\n config: UseConfidentialBalanceConfig,\n options?: UseConfidentialBalanceOptions,\n) {\n const { tokenAddress } = config;\n const { enabled = true } = options ?? {};\n const sdk = useZamaSDK();\n const token = useReadonlyToken(tokenAddress);\n\n const addressQuery = useQuery<Address>(signerAddressQueryOptions(sdk.signer));\n\n const owner = addressQuery.data;\n\n const baseOptions = confidentialBalanceQueryOptions(token, {\n tokenAddress,\n owner,\n });\n\n return useQuery<bigint>({\n ...baseOptions,\n ...options,\n enabled: baseOptions.enabled && enabled,\n });\n}\n","\"use client\";\n\nimport { useMemo } from \"react\";\nimport { useQuery } from \"../utils/query\";\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport type { Address, BatchBalancesResult } from \"@zama-fhe/sdk\";\nimport { confidentialBalancesQueryOptions, signerAddressQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\n/** Configuration for {@link useConfidentialBalances}. */\nexport interface UseConfidentialBalancesConfig {\n /** Addresses of the confidential token contracts to batch-query. */\n tokenAddresses: Address[];\n}\n\n/** Query options for {@link useConfidentialBalances}. */\nexport interface UseConfidentialBalancesOptions extends Omit<\n UseQueryOptions<BatchBalancesResult>,\n \"queryKey\" | \"queryFn\" | \"enabled\"\n> {\n /** Whether the query is enabled. Callback form is not supported in composite hooks. */\n enabled?: boolean;\n}\n\n/**\n * Declarative hook to read multiple confidential token balances in batch.\n * Calls `ReadonlyToken.batchBalancesOf()` which decrypts each token via the\n * SDK. Cached values are returned instantly — the relayer is only hit for\n * changed handles.\n *\n * Returns partial results when some tokens fail — successful balances are\n * always returned alongside per-token error information.\n *\n * @param config - Token addresses configuration.\n * @param options - React Query options forwarded to the balance query.\n * @returns The balance query result.\n *\n * @example\n * ```tsx\n * const { data } = useConfidentialBalances({\n * tokenAddresses: [\"0xTokenA\", \"0xTokenB\"],\n * });\n * const balance = data?.results.get(\"0xTokenA\");\n * if (data && data.errors.size > 0) {\n * // some tokens failed — check data.errors\n * }\n * ```\n */\nexport function useConfidentialBalances(\n config: UseConfidentialBalancesConfig,\n options?: UseConfidentialBalancesOptions,\n) {\n const { tokenAddresses } = config;\n const { enabled = true } = options ?? {};\n const sdk = useZamaSDK();\n\n const addressQuery = useQuery<Address>(signerAddressQueryOptions(sdk.signer));\n\n const owner = addressQuery.data;\n\n const tokens = useMemo(\n () => tokenAddresses.map((addr) => sdk.createReadonlyToken(addr)),\n [sdk, tokenAddresses],\n );\n\n const baseOptions = confidentialBalancesQueryOptions(tokens, {\n owner,\n });\n\n return useQuery<BatchBalancesResult>({\n ...baseOptions,\n ...options,\n enabled: (baseOptions.enabled ?? true) && enabled,\n });\n}\n","import type { QueryClient, QueryKey, UseMutationOptions } from \"@tanstack/react-query\";\nimport type { Address, TransactionResult } from \"@zama-fhe/sdk\";\nimport { invalidateAfterShield, zamaQueryKeys } from \"@zama-fhe/sdk/query\";\n\ntype BalanceDeltaMode = \"add\" | \"subtract\";\nexport type OptimisticBalanceSnapshot = [QueryKey, bigint | undefined][];\n\n/** Combined context returned by optimistic `onMutate`. */\nexport interface OptimisticMutateContext {\n snapshot: OptimisticBalanceSnapshot;\n callerContext?: unknown;\n}\n\nexport function unwrapOptimisticCallerContext(\n optimistic: boolean | undefined,\n rawContext: unknown,\n): {\n wrappedContext: OptimisticMutateContext | undefined;\n callerContext: OptimisticMutateContext | undefined;\n} {\n const typed = rawContext as OptimisticMutateContext | undefined;\n const wrappedContext = optimistic ? typed : undefined;\n const callerContext = (optimistic ? wrappedContext?.callerContext : rawContext) as\n | OptimisticMutateContext\n | undefined;\n return { wrappedContext, callerContext };\n}\n\nexport async function applyOptimisticBalanceDelta({\n queryClient,\n tokenAddress,\n amount,\n mode,\n}: {\n queryClient: QueryClient;\n tokenAddress: Address;\n amount: bigint;\n mode: BalanceDeltaMode;\n}): Promise<OptimisticBalanceSnapshot> {\n const balanceKey = zamaQueryKeys.confidentialBalance.token(tokenAddress);\n await queryClient.cancelQueries({ queryKey: balanceKey });\n const previous = queryClient.getQueriesData<bigint>({ queryKey: balanceKey });\n for (const [key, value] of previous) {\n if (value === undefined) {\n continue;\n }\n // Temporary optimistic underflow (`amount > value`) is acceptable because\n // settlement invalidates and rewrites this cache entry.\n queryClient.setQueryData(key, mode === \"add\" ? value + amount : value - amount);\n }\n return previous;\n}\n\nexport function rollbackOptimisticBalanceDelta(\n queryClient: QueryClient,\n snapshot: OptimisticBalanceSnapshot,\n) {\n for (const [key, value] of snapshot) {\n queryClient.setQueryData(key, value);\n }\n}\n\n/**\n * Build optimistic mutation callbacks for shield operations.\n * Wraps the caller's `onMutate`/`onError`/`onSuccess`/`onSettled` with snapshot/rollback logic\n * and returns overrides ready to spread into `useMutation`.\n */\nexport function optimisticBalanceCallbacks<TParams extends { amount: bigint }>({\n optimistic,\n tokenAddress,\n queryClient,\n options,\n}: {\n optimistic: boolean | undefined;\n tokenAddress: Address;\n queryClient: QueryClient;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n options: UseMutationOptions<TransactionResult, Error, TParams, any> | undefined;\n}): Pick<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n UseMutationOptions<TransactionResult, Error, TParams, any>,\n \"onMutate\" | \"onError\" | \"onSuccess\" | \"onSettled\"\n> {\n return {\n onMutate: optimistic\n ? async (variables, mutationContext) => {\n const snapshot = await applyOptimisticBalanceDelta({\n queryClient,\n tokenAddress,\n amount: variables.amount,\n mode: \"add\",\n });\n const callerContext = await options?.onMutate?.(variables, mutationContext);\n return { snapshot, callerContext };\n }\n : options?.onMutate,\n onError: (error, variables, rawContext, context) => {\n const { wrappedContext, callerContext } = unwrapOptimisticCallerContext(\n optimistic,\n rawContext,\n );\n try {\n if (wrappedContext) {\n rollbackOptimisticBalanceDelta(queryClient, wrappedContext.snapshot);\n }\n } finally {\n options?.onError?.(error, variables, callerContext, context);\n }\n },\n onSuccess: (data, variables, rawContext, context) => {\n const { callerContext } = unwrapOptimisticCallerContext(optimistic, rawContext);\n options?.onSuccess?.(data, variables, callerContext, context);\n invalidateAfterShield(context.client, tokenAddress);\n },\n onSettled: (data, error, variables, rawContext, context) => {\n const { callerContext } = unwrapOptimisticCallerContext(optimistic, rawContext);\n options?.onSettled?.(data, error, variables, callerContext, context);\n },\n };\n}\n","\"use client\";\n\nimport {\n useMutation,\n useQueryClient,\n type UseMutationOptions,\n type UseMutationResult,\n} from \"@tanstack/react-query\";\nimport type { TransactionResult } from \"@zama-fhe/sdk\";\nimport {\n confidentialTransferMutationOptions,\n invalidateAfterTransfer,\n type ConfidentialTransferParams,\n} from \"@zama-fhe/sdk/query\";\nimport {\n applyOptimisticBalanceDelta,\n rollbackOptimisticBalanceDelta,\n unwrapOptimisticCallerContext,\n} from \"../balance/optimistic-balance-update\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\n/** Configuration for {@link useConfidentialTransfer}. */\nexport interface UseConfidentialTransferConfig extends UseZamaConfig {\n /**\n * When `true`, optimistically subtracts the transfer amount from cached balance\n * before the transaction confirms. Rolls back on error.\n * @defaultValue false\n */\n optimistic?: boolean;\n}\n\n/**\n * Encrypt and send a confidential transfer. Invalidates balance caches on success.\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link SigningRejectedError} — user rejected the wallet prompt\n * - {@link EncryptionFailedError} — FHE encryption failed\n * - {@link TransactionRevertedError} — on-chain transaction reverted\n *\n * @param config - Token address (and optional wrapper) identifying the token.\n * Set `optimistic: true` to subtract the amount from the cached balance immediately.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const transfer = useConfidentialTransfer({\n * tokenAddress: \"0x...\",\n * optimistic: true,\n * });\n * transfer.mutate(\n * { to: \"0xRecipient\", amount: 1000n },\n * {\n * onError: (error) => {\n * if (error instanceof SigningRejectedError) {\n * // user cancelled — no action needed\n * }\n * },\n * },\n * );\n * ```\n */\nexport function useConfidentialTransfer<TContext = unknown>(\n config: UseConfidentialTransferConfig,\n options?: UseMutationOptions<TransactionResult, Error, ConfidentialTransferParams, TContext>,\n): UseMutationResult<TransactionResult, Error, ConfidentialTransferParams, TContext> {\n const token = useToken(config);\n const queryClient = useQueryClient();\n\n // Internal mutation uses `any` for TContext because optimistic mode wraps\n // the caller's context in OptimisticMutateContext; the public return type\n // is cast back to the caller's TContext.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return useMutation<TransactionResult, Error, ConfidentialTransferParams, any>({\n ...confidentialTransferMutationOptions(token),\n ...options,\n onMutate: config.optimistic\n ? async (variables, mutationContext) => {\n const snapshot = await applyOptimisticBalanceDelta({\n queryClient,\n tokenAddress: config.tokenAddress,\n amount: variables.amount,\n mode: \"subtract\",\n });\n const callerContext = await options?.onMutate?.(variables, mutationContext);\n return { snapshot, callerContext };\n }\n : options?.onMutate,\n onError: (error, variables, rawContext, context) => {\n const { wrappedContext, callerContext } = unwrapOptimisticCallerContext(\n config.optimistic,\n rawContext,\n );\n try {\n if (wrappedContext) {\n rollbackOptimisticBalanceDelta(queryClient, wrappedContext.snapshot);\n }\n } finally {\n options?.onError?.(error, variables, callerContext as TContext, context);\n }\n },\n onSuccess: (data, variables, rawContext, context) => {\n const { callerContext } = unwrapOptimisticCallerContext(config.optimistic, rawContext);\n options?.onSuccess?.(data, variables, callerContext as TContext, context);\n invalidateAfterTransfer(context.client, config.tokenAddress);\n },\n onSettled: (data, error, variables, rawContext, context) => {\n const { callerContext } = unwrapOptimisticCallerContext(config.optimistic, rawContext);\n options?.onSettled?.(data, error, variables, callerContext as TContext, context);\n },\n }) as UseMutationResult<TransactionResult, Error, ConfidentialTransferParams, TContext>;\n}\n","\"use client\";\n\nimport type { UseMutationOptions } from \"@tanstack/react-query\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport type { Address, TransactionResult } from \"@zama-fhe/sdk\";\nimport {\n confidentialTransferFromMutationOptions,\n invalidateAfterTransfer,\n type ConfidentialTransferFromParams,\n} from \"@zama-fhe/sdk/query\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\n/**\n * Operator transfer on behalf of another address. Caller must be an approved operator.\n * Invalidates balance caches on success.\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link SigningRejectedError} — user rejected the wallet prompt\n * - {@link EncryptionFailedError} — FHE encryption of the transfer amount failed\n * - {@link TransactionRevertedError} — on-chain transaction reverted\n *\n * @param config - Token address (and optional wrapper) identifying the token.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const transferFrom = useConfidentialTransferFrom({ tokenAddress: \"0x...\" });\n * transferFrom.mutate({ from: \"0xOwner\", to: \"0xRecipient\", amount: 500n });\n * ```\n */\nexport function useConfidentialTransferFrom(\n config: UseZamaConfig,\n options?: UseMutationOptions<TransactionResult, Error, ConfidentialTransferFromParams, Address>,\n) {\n const token = useToken(config);\n\n return useMutation<TransactionResult, Error, ConfidentialTransferFromParams, Address>({\n ...confidentialTransferFromMutationOptions(token),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n invalidateAfterTransfer(context.client, config.tokenAddress);\n },\n });\n}\n","\"use client\";\n\nimport type { UseMutationOptions } from \"@tanstack/react-query\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport type { Address, TransactionResult } from \"@zama-fhe/sdk\";\nimport {\n confidentialApproveMutationOptions,\n invalidateAfterApprove,\n type ConfidentialApproveParams,\n} from \"@zama-fhe/sdk/query\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\n/**\n * Set operator approval for a confidential token. Defaults to 1 hour.\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link SigningRejectedError} — user rejected the wallet prompt\n * - {@link TransactionRevertedError} — on-chain transaction reverted\n *\n * @param config - Token address (and optional wrapper) identifying the token.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const approve = useConfidentialApprove({ tokenAddress: \"0x...\" });\n * approve.mutate({ spender: \"0xOperator\" });\n * ```\n */\nexport function useConfidentialApprove(\n config: UseZamaConfig,\n options?: UseMutationOptions<TransactionResult, Error, ConfidentialApproveParams, Address>,\n) {\n const token = useToken(config);\n\n return useMutation<TransactionResult, Error, ConfidentialApproveParams, Address>({\n ...confidentialApproveMutationOptions(token),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n invalidateAfterApprove(context.client, config.tokenAddress);\n },\n });\n}\n","\"use client\";\n\nimport { useQuery, useSuspenseQuery } from \"../utils/query\";\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { confidentialIsApprovedQueryOptions, signerAddressQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\nexport { confidentialIsApprovedQueryOptions };\n\n/** Configuration for {@link useConfidentialIsApproved}. */\nexport interface UseConfidentialIsApprovedConfig {\n /** Address of the confidential token contract. Pass `undefined` to disable the query. */\n tokenAddress: Address | undefined;\n /** Address to check approval for. Pass `undefined` to disable the query. */\n spender: Address | undefined;\n /** Token holder address. Defaults to the connected wallet. */\n holder?: Address;\n}\n\n/** Configuration for {@link useConfidentialIsApprovedSuspense}. */\nexport interface UseConfidentialIsApprovedSuspenseConfig extends UseZamaConfig {\n /** Address to check approval for. */\n spender: Address;\n /** Token holder address. Defaults to the connected wallet. */\n holder?: Address;\n}\n\n/**\n * Check if a spender is an approved operator for a given holder (defaults to connected wallet).\n *\n * @param config - Token address, spender, and optional holder to check.\n * @param options - React Query options (forwarded to `useQuery`).\n * @returns Query result with `data: boolean`.\n *\n * @example\n * ```tsx\n * const { data: isApproved } = useConfidentialIsApproved({\n * tokenAddress: \"0xToken\",\n * spender: \"0xSpender\",\n * holder: \"0xHolder\", // optional\n * });\n * ```\n */\nexport function useConfidentialIsApproved(\n config: UseConfidentialIsApprovedConfig,\n options?: Omit<UseQueryOptions<boolean>, \"queryKey\" | \"queryFn\">,\n) {\n const { tokenAddress, spender, holder } = config;\n const sdk = useZamaSDK();\n const holderQuery = useQuery<Address>({\n ...signerAddressQueryOptions(sdk.signer),\n enabled: tokenAddress !== undefined && spender !== undefined && holder === undefined,\n });\n const resolvedHolder = holder ?? holderQuery.data;\n const baseOpts = confidentialIsApprovedQueryOptions(sdk.signer, tokenAddress, {\n holder: resolvedHolder,\n spender,\n });\n\n return useQuery({\n ...baseOpts,\n ...options,\n enabled: (baseOpts.enabled ?? true) && (options?.enabled ?? true),\n });\n}\n\n/**\n * Suspense variant of {@link useConfidentialIsApproved}.\n * Suspends rendering until the approval check resolves.\n *\n * @param config - Token address, spender, and optional holder to check.\n * @returns Suspense query result with `data: boolean`.\n *\n * @example\n * ```tsx\n * const { data: isApproved } = useConfidentialIsApprovedSuspense({\n * tokenAddress: \"0xToken\",\n * spender: \"0xSpender\",\n * holder: \"0xHolder\", // optional\n * });\n * ```\n */\nexport function useConfidentialIsApprovedSuspense(config: UseConfidentialIsApprovedSuspenseConfig) {\n const { spender, holder, ...tokenConfig } = config;\n const sdk = useZamaSDK();\n const token = useToken(tokenConfig);\n const addressQuery = useSuspenseQuery<Address>(signerAddressQueryOptions(sdk.signer));\n const resolvedHolder = holder ?? addressQuery.data;\n\n return useSuspenseQuery<boolean>(\n confidentialIsApprovedQueryOptions(sdk.signer, token.address, {\n holder: resolvedHolder,\n spender,\n }),\n );\n}\n","\"use client\";\n\nimport {\n useMutation,\n useQueryClient,\n type UseMutationOptions,\n type UseMutationResult,\n} from \"@tanstack/react-query\";\nimport type { TransactionResult } from \"@zama-fhe/sdk\";\nimport { shieldMutationOptions, type ShieldParams } from \"@zama-fhe/sdk/query\";\nimport { optimisticBalanceCallbacks } from \"../balance/optimistic-balance-update\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\n/** Configuration for {@link useShield}. */\nexport interface UseShieldConfig extends UseZamaConfig {\n /**\n * When `true`, optimistically adds the wrap amount to the cached confidential balance\n * before the transaction confirms. Rolls back on error.\n * @defaultValue false\n */\n optimistic?: boolean;\n}\n\n/**\n * Shield public ERC-20 tokens into confidential tokens.\n * Handles ERC-20 approval automatically. Invalidates balance caches on success.\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link SigningRejectedError} — user rejected the wallet prompt\n * - {@link ApprovalFailedError} — ERC-20 approval transaction failed\n * - {@link TransactionRevertedError} — shield transaction reverted\n *\n * @param config - Token and wrapper addresses.\n * Set `optimistic: true` to add the amount to the cached balance immediately.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const shield = useShield({ tokenAddress: \"0x...\", wrapperAddress: \"0x...\", optimistic: true });\n * shield.mutate({ amount: 1000n });\n * ```\n */\nexport function useShield<TContext = unknown>(\n config: UseShieldConfig,\n options?: UseMutationOptions<TransactionResult, Error, ShieldParams, TContext>,\n): UseMutationResult<TransactionResult, Error, ShieldParams, TContext> {\n const token = useToken(config);\n const queryClient = useQueryClient();\n\n return useMutation({\n ...shieldMutationOptions(token),\n ...options,\n ...optimisticBalanceCallbacks({\n optimistic: config.optimistic,\n tokenAddress: config.tokenAddress,\n queryClient,\n options,\n }),\n }) as UseMutationResult<TransactionResult, Error, ShieldParams, TContext>;\n}\n","\"use client\";\n\nimport type { UseMutationOptions } from \"@tanstack/react-query\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport type { Address, TransactionResult } from \"@zama-fhe/sdk\";\nimport {\n invalidateAfterUnwrap,\n type UnwrapParams,\n unwrapMutationOptions,\n} from \"@zama-fhe/sdk/query\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\n/**\n * Request an unwrap for a specific amount. Encrypts the amount first.\n * Call {@link useFinalizeUnwrap} after the request is processed on-chain,\n * or use {@link useUnshield} for a single-call orchestration.\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link SigningRejectedError} — user rejected the wallet prompt\n * - {@link EncryptionFailedError} — FHE encryption of the unwrap amount failed\n * - {@link TransactionRevertedError} — on-chain transaction reverted\n *\n * @param config - Token address (and optional wrapper) identifying the token.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const unwrap = useUnwrap({ tokenAddress: \"0x...\" });\n * unwrap.mutate({ amount: 500n });\n * ```\n */\nexport function useUnwrap(\n config: UseZamaConfig,\n options?: UseMutationOptions<TransactionResult, Error, UnwrapParams, Address>,\n) {\n const token = useToken(config);\n\n return useMutation<TransactionResult, Error, UnwrapParams, Address>({\n ...unwrapMutationOptions(token),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n invalidateAfterUnwrap(context.client, config.tokenAddress);\n },\n });\n}\n","\"use client\";\n\nimport type { UseMutationOptions } from \"@tanstack/react-query\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport type { Address, TransactionResult } from \"@zama-fhe/sdk\";\nimport { invalidateAfterUnwrap, unwrapAllMutationOptions } from \"@zama-fhe/sdk/query\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\n/**\n * Request an unwrap for the entire confidential balance.\n * Uses the on-chain balance handle directly (no encryption needed).\n * Call {@link useFinalizeUnwrap} after processing, or use {@link useUnshieldAll} for single-call orchestration.\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link SigningRejectedError} — user rejected the wallet prompt\n * - {@link TransactionRevertedError} — on-chain transaction reverted\n *\n * @param config - Token address (and optional wrapper) identifying the token.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const unwrapAll = useUnwrapAll({ tokenAddress: \"0x...\" });\n * unwrapAll.mutate();\n * ```\n */\nexport function useUnwrapAll(\n config: UseZamaConfig,\n options?: UseMutationOptions<TransactionResult, Error, void, Address>,\n) {\n const token = useToken(config);\n\n return useMutation<TransactionResult, Error, void, Address>({\n ...unwrapAllMutationOptions(token),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n invalidateAfterUnwrap(context.client, config.tokenAddress);\n },\n });\n}\n","\"use client\";\n\nimport type { UseMutationOptions } from \"@tanstack/react-query\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport type { Address, TransactionResult } from \"@zama-fhe/sdk\";\nimport {\n finalizeUnwrapMutationOptions,\n invalidateAfterUnshield,\n type FinalizeUnwrapParams,\n} from \"@zama-fhe/sdk/query\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\n/**\n * Complete an unwrap by providing the public decryption proof.\n * Call this after an unwrap request has been processed on-chain.\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link SigningRejectedError} — user rejected the wallet prompt\n * - {@link DecryptionFailedError} — public decryption of the burn amount failed\n * - {@link TransactionRevertedError} — on-chain finalize transaction reverted\n *\n * @param config - Token address (and optional wrapper) identifying the token.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const finalize = useFinalizeUnwrap({ tokenAddress: \"0x...\" });\n * finalize.mutate({ unwrapRequestId: event.unwrapRequestId });\n * ```\n */\nexport function useFinalizeUnwrap(\n config: UseZamaConfig,\n options?: UseMutationOptions<TransactionResult, Error, FinalizeUnwrapParams, Address>,\n) {\n const token = useToken(config);\n\n return useMutation<TransactionResult, Error, FinalizeUnwrapParams, Address>({\n ...finalizeUnwrapMutationOptions(token),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n invalidateAfterUnshield(context.client, config.tokenAddress);\n },\n });\n}\n","\"use client\";\n\nimport type { UseMutationOptions } from \"@tanstack/react-query\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport type { Address, TransactionResult } from \"@zama-fhe/sdk\";\nimport {\n invalidateAfterUnshield,\n type UnshieldParams,\n unshieldMutationOptions,\n} from \"@zama-fhe/sdk/query\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\n/**\n * Unshield a specific amount and finalize in one call.\n * Orchestrates: unwrap → wait for receipt → parse event → finalize.\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link SigningRejectedError} — user rejected the wallet prompt\n * - {@link EncryptionFailedError} — FHE encryption failed during unwrap\n * - {@link DecryptionFailedError} — public decryption failed during finalize\n * - {@link TransactionRevertedError} — on-chain transaction reverted\n *\n * @param config - Token and wrapper addresses.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const unshield = useUnshield({ tokenAddress: \"0x...\", wrapperAddress: \"0x...\" });\n * unshield.mutate({ amount: 500n });\n * ```\n */\nexport function useUnshield(\n config: UseZamaConfig,\n options?: UseMutationOptions<TransactionResult, Error, UnshieldParams, Address>,\n) {\n const token = useToken(config);\n\n return useMutation<TransactionResult, Error, UnshieldParams, Address>({\n ...unshieldMutationOptions(token),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n invalidateAfterUnshield(context.client, config.tokenAddress);\n },\n });\n}\n","\"use client\";\n\nimport type { UseMutationOptions } from \"@tanstack/react-query\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport type { Address, TransactionResult } from \"@zama-fhe/sdk\";\nimport {\n invalidateAfterUnshield,\n type UnshieldAllParams,\n unshieldAllMutationOptions,\n} from \"@zama-fhe/sdk/query\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\n/**\n * Unshield the entire balance and finalize in one call.\n * Orchestrates: unwrapAll → wait for receipt → parse event → finalize.\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link SigningRejectedError} — user rejected the wallet prompt\n * - {@link DecryptionFailedError} — public decryption failed during finalize\n * - {@link TransactionRevertedError} — on-chain transaction reverted\n *\n * @param config - Token and wrapper addresses.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const unshieldAll = useUnshieldAll({ tokenAddress: \"0x...\", wrapperAddress: \"0x...\" });\n * unshieldAll.mutate();\n * ```\n */\nexport function useUnshieldAll(\n config: UseZamaConfig,\n options?: UseMutationOptions<TransactionResult, Error, UnshieldAllParams | void, Address>,\n) {\n const token = useToken(config);\n\n return useMutation<TransactionResult, Error, UnshieldAllParams | void, Address>({\n ...unshieldAllMutationOptions(token),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n invalidateAfterUnshield(context.client, config.tokenAddress);\n },\n });\n}\n","\"use client\";\n\nimport type { UseMutationOptions } from \"@tanstack/react-query\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport type { Address, TransactionResult } from \"@zama-fhe/sdk\";\nimport {\n invalidateAfterUnshield,\n type ResumeUnshieldParams,\n resumeUnshieldMutationOptions,\n} from \"@zama-fhe/sdk/query\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\n/**\n * Resume an interrupted unshield from an existing unwrap tx hash.\n * Useful when the user submitted the unwrap but the finalize step was\n * interrupted (e.g. page reload, network error).\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link DecryptionFailedError} — public decryption failed during finalize\n * - {@link TransactionRevertedError} — on-chain transaction reverted\n *\n * @param config - Token and wrapper addresses.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const resumeUnshield = useResumeUnshield({ tokenAddress: \"0x...\", wrapperAddress: \"0x...\" });\n * resumeUnshield.mutate({ unwrapTxHash: \"0xabc...\" });\n * ```\n */\nexport function useResumeUnshield(\n config: UseZamaConfig,\n options?: UseMutationOptions<TransactionResult, Error, ResumeUnshieldParams, Address>,\n) {\n const token = useToken(config);\n\n return useMutation<TransactionResult, Error, ResumeUnshieldParams, Address>({\n ...resumeUnshieldMutationOptions(token),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n invalidateAfterUnshield(context.client, config.tokenAddress);\n },\n });\n}\n","\"use client\";\n\nimport { useQuery, useSuspenseQuery } from \"../utils/query\";\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { signerAddressQueryOptions, underlyingAllowanceQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\nexport { underlyingAllowanceQueryOptions };\n\n/** Configuration for {@link useUnderlyingAllowance}. */\nexport interface UseUnderlyingAllowanceConfig {\n /** Address of the confidential token contract used to scope the query cache. */\n tokenAddress: Address;\n /** Address of the wrapper contract whose underlying ERC-20 allowance is checked. */\n wrapperAddress: Address;\n}\n\n/**\n * Read the underlying ERC-20 allowance granted to the wrapper contract.\n * Useful to check if an approval is needed before shielding.\n *\n * @param config - Token and wrapper addresses.\n * @param options - React Query options (forwarded to `useQuery`).\n * @returns Query result with `data: bigint` (current allowance).\n *\n * @example\n * ```tsx\n * const { data: allowance } = useUnderlyingAllowance({\n * tokenAddress: \"0xConfidentialToken\",\n * wrapperAddress: \"0xWrapper\",\n * });\n * ```\n */\nexport function useUnderlyingAllowance(\n config: UseUnderlyingAllowanceConfig,\n options?: Omit<UseQueryOptions<bigint>, \"queryKey\" | \"queryFn\">,\n) {\n const { tokenAddress, wrapperAddress } = config;\n const sdk = useZamaSDK();\n const addressQuery = useQuery<Address>(signerAddressQueryOptions(sdk.signer));\n const owner = addressQuery.data;\n\n const baseOpts = underlyingAllowanceQueryOptions(sdk.signer, tokenAddress, {\n owner,\n wrapperAddress,\n });\n\n return useQuery<bigint>({\n ...baseOpts,\n ...options,\n enabled: (baseOpts.enabled ?? true) && (options?.enabled ?? true),\n });\n}\n\n/**\n * Suspense variant of {@link useUnderlyingAllowance}.\n * Suspends rendering until the allowance is loaded.\n *\n * @param config - Token and wrapper addresses.\n * @returns Suspense query result with `data: bigint`.\n *\n * @example\n * ```tsx\n * const { data: allowance } = useUnderlyingAllowanceSuspense({\n * tokenAddress: \"0xConfidentialToken\",\n * wrapperAddress: \"0xWrapper\",\n * });\n * ```\n */\nexport function useUnderlyingAllowanceSuspense(config: UseUnderlyingAllowanceConfig) {\n const { tokenAddress, wrapperAddress } = config;\n const sdk = useZamaSDK();\n const addressQuery = useSuspenseQuery<Address>(signerAddressQueryOptions(sdk.signer));\n const owner = addressQuery.data;\n\n return useSuspenseQuery<bigint>(\n underlyingAllowanceQueryOptions(sdk.signer, tokenAddress, {\n owner,\n wrapperAddress,\n }),\n );\n}\n","\"use client\";\n\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { zamaQueryKeys } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useQuery } from \"../utils/query\";\n\n/**\n * Resolves the wrappers registry address for the current chain.\n * Uses the merged registry addresses from `sdk.registry` (built-in defaults\n * plus any `registryAddresses` overrides passed to `ZamaSDKConfig`).\n *\n * Returns `undefined` when the chain ID hasn't been fetched yet\n * or when no registry is configured for the connected chain.\n *\n * The chain ID is cached for 30 seconds (`staleTime`), so chain\n * switches may take up to 30s to reflect.\n */\nexport function useWrappersRegistryAddress(): Address | undefined {\n const sdk = useZamaSDK();\n\n const { data: chainId } = useQuery<number>({\n queryKey: zamaQueryKeys.wrappersRegistry.chainId(),\n queryFn: () => sdk.signer.getChainId(),\n staleTime: 30_000,\n });\n\n return chainId !== undefined ? sdk.registry.getAddress(chainId) : undefined;\n}\n","\"use client\";\n\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { wrapperDiscoveryQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useQuery, useSuspenseQuery } from \"../utils/query\";\nimport { useWrappersRegistryAddress } from \"../wrappers-registry/use-wrappers-registry-address\";\n\nexport { wrapperDiscoveryQueryOptions };\n\n/** Configuration for {@link useWrapperDiscovery}. */\nexport interface UseWrapperDiscoveryConfig {\n /**\n * Address of any confidential token you control.\n * Used only to derive the signer context and to scope the query cache key —\n * it does not affect which wrapper the registry returns.\n */\n tokenAddress: Address;\n /** ERC-20 address to discover the wrapper for. Pass `undefined` to disable the query. */\n erc20Address: Address | undefined;\n}\n\n/** Configuration for {@link useWrapperDiscoverySuspense}. */\nexport interface UseWrapperDiscoverySuspenseConfig {\n /**\n * Address of any confidential token you control.\n * Used only to derive the signer context and to scope the query cache key —\n * it does not affect which wrapper the registry returns.\n */\n tokenAddress: Address;\n /** ERC-20 address to discover the wrapper for. */\n erc20Address: Address;\n}\n\n/**\n * Discover the confidential wrapper for an ERC-20 token via the on-chain registry.\n * Returns the wrapper address if one exists, or `null` if not.\n * Cached indefinitely since wrapper mappings are immutable.\n *\n * @param config - Token and ERC-20 addresses.\n * @param options - React Query options (forwarded to `useQuery`).\n * @returns Query result with `data: Address | null`.\n *\n * @example\n * ```tsx\n * const { data: wrapperAddress } = useWrapperDiscovery({\n * tokenAddress: \"0xConfidentialToken\",\n * erc20Address: \"0xUSDC\",\n * });\n * ```\n */\nexport function useWrapperDiscovery(\n config: UseWrapperDiscoveryConfig,\n options?: Omit<UseQueryOptions<Address | null>, \"queryKey\" | \"queryFn\">,\n) {\n const { tokenAddress, erc20Address } = config;\n const sdk = useZamaSDK();\n const registryAddress = useWrappersRegistryAddress();\n\n const baseOpts = wrapperDiscoveryQueryOptions(sdk.registry, {\n tokenAddress,\n erc20Address,\n registryAddress,\n });\n\n return useQuery<Address | null>({\n ...baseOpts,\n ...options,\n enabled: (baseOpts.enabled ?? true) && (options?.enabled ?? true),\n });\n}\n\n/**\n * Suspense variant of {@link useWrapperDiscovery}.\n * Suspends rendering until the wrapper address is resolved.\n *\n * @param config - Token and ERC-20 addresses.\n * @returns Suspense query result with `data: Address | null`.\n *\n * @example\n * ```tsx\n * const { data: wrapperAddress } = useWrapperDiscoverySuspense({\n * tokenAddress: \"0xConfidentialToken\",\n * erc20Address: \"0xUSDC\",\n * });\n * ```\n */\nexport function useWrapperDiscoverySuspense(config: UseWrapperDiscoverySuspenseConfig) {\n const { tokenAddress, erc20Address } = config;\n const sdk = useZamaSDK();\n const registryAddress = useWrappersRegistryAddress();\n\n return useSuspenseQuery<Address | null>(\n wrapperDiscoveryQueryOptions(sdk.registry, {\n tokenAddress,\n erc20Address,\n registryAddress,\n }),\n );\n}\n","\"use client\";\n\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { tokenMetadataQueryOptions, type TokenMetadata } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useQuery, useSuspenseQuery } from \"../utils/query\";\n\nexport { type TokenMetadata };\n\n/**\n * Read ERC-20 token metadata (name, symbol, decimals).\n * Fetches all three in parallel. Cached indefinitely since metadata is immutable.\n *\n * @param tokenAddress - Address of the token contract.\n * @param options - React Query options (forwarded to `useQuery`).\n * @returns Query result with `data: TokenMetadata`.\n *\n * @example\n * ```tsx\n * const { data: metadata } = useMetadata(\"0xToken\");\n * // metadata?.name, metadata?.symbol, metadata?.decimals\n * ```\n */\nexport function useMetadata(\n tokenAddress: Address,\n options?: Omit<UseQueryOptions<TokenMetadata>, \"queryKey\" | \"queryFn\">,\n) {\n const sdk = useZamaSDK();\n return useQuery<TokenMetadata>({\n ...tokenMetadataQueryOptions(sdk.signer, tokenAddress),\n ...options,\n });\n}\n\n/**\n * Suspense variant of {@link useMetadata}.\n * Suspends rendering until metadata is loaded.\n *\n * @param tokenAddress - Address of the token contract.\n * @returns Suspense query result with `data: TokenMetadata`.\n *\n * @example\n * ```tsx\n * const { data: metadata } = useMetadataSuspense(\"0xToken\");\n * ```\n */\nexport function useMetadataSuspense(tokenAddress: Address) {\n const sdk = useZamaSDK();\n return useSuspenseQuery<TokenMetadata>(tokenMetadataQueryOptions(sdk.signer, tokenAddress));\n}\n","\"use client\";\n\nimport { useMutation, type UseMutationOptions } from \"@tanstack/react-query\";\nimport type { TransactionResult } from \"@zama-fhe/sdk\";\nimport {\n delegateDecryptionMutationOptions,\n zamaQueryKeys,\n type DelegateDecryptionParams,\n} from \"@zama-fhe/sdk/query\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\n/**\n * Delegate FHE decryption rights for a token to another address via the on-chain ACL.\n *\n * @param config - Token address identifying the confidential token.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const delegate = useDelegateDecryption({ tokenAddress: \"0x...\" });\n * delegate.mutate({ delegateAddress: \"0xDelegate\" });\n * ```\n */\nexport function useDelegateDecryption(\n config: UseZamaConfig,\n options?: UseMutationOptions<TransactionResult, Error, DelegateDecryptionParams>,\n) {\n const token = useToken(config);\n\n return useMutation<TransactionResult, Error, DelegateDecryptionParams>({\n ...delegateDecryptionMutationOptions(token),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n try {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n } finally {\n void context.client.invalidateQueries({ queryKey: zamaQueryKeys.delegationStatus.all });\n }\n },\n });\n}\n","\"use client\";\n\nimport { useMutation, type UseMutationOptions } from \"@tanstack/react-query\";\nimport type { TransactionResult } from \"@zama-fhe/sdk\";\nimport {\n revokeDelegationMutationOptions,\n zamaQueryKeys,\n type RevokeDelegationParams,\n} from \"@zama-fhe/sdk/query\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\n/**\n * Revoke FHE decryption delegation for a token from a delegate address.\n *\n * @param config - Token address identifying the confidential token.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const revoke = useRevokeDelegation({ tokenAddress: \"0x...\" });\n * revoke.mutate({ delegateAddress: \"0xDelegate\" });\n * ```\n */\nexport function useRevokeDelegation(\n config: UseZamaConfig,\n options?: UseMutationOptions<TransactionResult, Error, RevokeDelegationParams>,\n) {\n const token = useToken(config);\n\n return useMutation<TransactionResult, Error, RevokeDelegationParams>({\n ...revokeDelegationMutationOptions(token),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n try {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n } finally {\n void context.client.invalidateQueries({ queryKey: zamaQueryKeys.delegationStatus.all });\n }\n },\n });\n}\n","\"use client\";\n\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { delegationStatusQueryOptions, type DelegationStatusData } from \"@zama-fhe/sdk/query\";\nimport { useQuery } from \"../utils/query\";\nimport { useZamaSDK } from \"../provider\";\n\nexport interface UseDelegationStatusConfig {\n /** Address of the confidential token contract. Pass `undefined` to disable the query. */\n tokenAddress: Address | undefined;\n /** The address that granted the delegation. */\n delegatorAddress?: Address;\n /** The address that received delegation rights. */\n delegateAddress?: Address;\n}\n\n/**\n * Query delegation status between a delegator and delegate for a token.\n *\n * @param config - Token address, delegator, and delegate addresses.\n * @param options - React Query options (forwarded to `useQuery`).\n * @returns `{ isDelegated, expiryTimestamp, isLoading, error }`.\n *\n * @example\n * ```tsx\n * const { data } = useDelegationStatus({\n * tokenAddress: \"0xToken\",\n * delegatorAddress: \"0xDelegator\",\n * delegateAddress: \"0xDelegate\",\n * });\n * // data?.isDelegated, data?.expiryTimestamp\n * ```\n */\nexport function useDelegationStatus(\n config: UseDelegationStatusConfig,\n options?: Omit<UseQueryOptions<DelegationStatusData>, \"queryKey\" | \"queryFn\">,\n) {\n const sdk = useZamaSDK();\n const baseOpts = delegationStatusQueryOptions(sdk, config);\n\n return useQuery<DelegationStatusData>({\n ...baseOpts,\n ...options,\n enabled: (baseOpts.enabled ?? true) && (options?.enabled ?? true),\n });\n}\n","\"use client\";\n\nimport { useMutation, type UseMutationOptions } from \"@tanstack/react-query\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { decryptBalanceAsMutationOptions, type DecryptBalanceAsParams } from \"@zama-fhe/sdk/query\";\nimport { useReadonlyToken } from \"../token/use-readonly-token\";\n\n/**\n * Decrypt another user's confidential balance as a delegate.\n *\n * @param tokenAddress - Address of the confidential token contract.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const decryptAs = useDecryptBalanceAs(\"0xToken\");\n * decryptAs.mutate({ delegatorAddress: \"0xDelegator\" });\n * // decryptAs.data => 1000n\n * ```\n */\nexport function useDecryptBalanceAs(\n tokenAddress: Address,\n options?: UseMutationOptions<bigint, Error, DecryptBalanceAsParams>,\n) {\n const readonlyToken = useReadonlyToken(tokenAddress);\n\n return useMutation<bigint, Error, DecryptBalanceAsParams>({\n ...decryptBalanceAsMutationOptions(readonlyToken),\n ...options,\n });\n}\n","\"use client\";\n\nimport { useMutation, type UseMutationOptions } from \"@tanstack/react-query\";\nimport type { Address, ReadonlyToken } from \"@zama-fhe/sdk\";\nimport {\n batchDecryptBalancesAsMutationOptions,\n type BatchDecryptBalancesAsParams,\n} from \"@zama-fhe/sdk/query\";\n\n/**\n * Batch decrypt confidential balances as a delegate across multiple tokens.\n *\n * @param tokens - ReadonlyToken instances to decrypt balances for.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const batchDecryptAs = useBatchDecryptBalancesAs(tokens);\n * batchDecryptAs.mutate({\n * delegatorAddress: \"0xDelegator\",\n * });\n * // batchDecryptAs.data => Map { \"0xTokenA\" => 100n, \"0xTokenB\" => 200n }\n * ```\n */\nexport function useBatchDecryptBalancesAs(\n tokens: ReadonlyToken[],\n options?: UseMutationOptions<Map<Address, bigint>, Error, BatchDecryptBalancesAsParams>,\n) {\n return useMutation<Map<Address, bigint>, Error, BatchDecryptBalancesAsParams>({\n ...batchDecryptBalancesAsMutationOptions(tokens),\n ...options,\n });\n}\n","\"use client\";\n\nimport type { UseMutationOptions } from \"@tanstack/react-query\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport type { Address, TransactionResult } from \"@zama-fhe/sdk\";\nimport {\n approveUnderlyingMutationOptions,\n invalidateAfterApproveUnderlying,\n type ApproveUnderlyingParams,\n} from \"@zama-fhe/sdk/query\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\n/**\n * Approve the wrapper contract to spend the underlying ERC-20.\n * Defaults to max uint256. Resets to zero first if there's an existing\n * non-zero allowance (required by tokens like USDT).\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link SigningRejectedError} — user rejected the wallet prompt\n * - {@link TransactionRevertedError} — approval transaction reverted\n *\n * @param config - Token and wrapper addresses.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const approve = useApproveUnderlying({ tokenAddress: \"0x...\", wrapperAddress: \"0x...\" });\n * approve.mutate({}); // max approval\n * approve.mutate({ amount: 1000n }); // exact amount\n * ```\n */\nexport function useApproveUnderlying(\n config: UseZamaConfig,\n options?: UseMutationOptions<TransactionResult, Error, ApproveUnderlyingParams, Address>,\n) {\n const token = useToken(config);\n\n return useMutation<TransactionResult, Error, ApproveUnderlyingParams, Address>({\n ...approveUnderlyingMutationOptions(token),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n invalidateAfterApproveUnderlying(context.client, config.tokenAddress);\n },\n });\n}\n","\"use client\";\n\nimport { useQuery, useSuspenseQuery } from \"../utils/query\";\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { isConfidentialQueryOptions, isWrapperQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\nexport { isConfidentialQueryOptions, isWrapperQueryOptions };\n\n/**\n * Check if a token supports the ERC-7984 confidential interface via ERC-165.\n * Result is cached indefinitely since interface support does not change.\n *\n * @param tokenAddress - Address of the token contract to check.\n * @param options - React Query options (forwarded to `useQuery`).\n * @returns Query result with `data: boolean`.\n *\n * @example\n * ```tsx\n * const { data: isConfidential } = useIsConfidential(\"0xToken\");\n * ```\n */\nexport function useIsConfidential(\n tokenAddress: Address,\n options?: Omit<UseQueryOptions<boolean>, \"queryKey\" | \"queryFn\">,\n) {\n const sdk = useZamaSDK();\n\n return useQuery<boolean>({\n ...isConfidentialQueryOptions(sdk.signer, tokenAddress),\n ...options,\n });\n}\n\n/**\n * Suspense variant of {@link useIsConfidential}.\n * Suspends rendering until the ERC-165 check resolves.\n *\n * @param tokenAddress - Address of the token contract to check.\n * @returns Suspense query result with `data: boolean`.\n *\n * @example\n * ```tsx\n * const { data: isConfidential } = useIsConfidentialSuspense(\"0xToken\");\n * ```\n */\nexport function useIsConfidentialSuspense(tokenAddress: Address) {\n const sdk = useZamaSDK();\n\n return useSuspenseQuery<boolean>(isConfidentialQueryOptions(sdk.signer, tokenAddress));\n}\n\n/**\n * Check if a token supports the ERC-7984 wrapper interface via ERC-165.\n * Result is cached indefinitely since interface support does not change.\n *\n * @param tokenAddress - Address of the token contract to check.\n * @param options - React Query options (forwarded to `useQuery`).\n * @returns Query result with `data: boolean`.\n *\n * @example\n * ```tsx\n * const { data: isWrapper } = useIsWrapper(\"0xToken\");\n * ```\n */\nexport function useIsWrapper(\n tokenAddress: Address,\n options?: Omit<UseQueryOptions<boolean>, \"queryKey\" | \"queryFn\">,\n) {\n const sdk = useZamaSDK();\n\n return useQuery<boolean>({\n ...isWrapperQueryOptions(sdk.signer, tokenAddress),\n ...options,\n });\n}\n\n/**\n * Suspense variant of {@link useIsWrapper}.\n * Suspends rendering until the ERC-165 check resolves.\n *\n * @param tokenAddress - Address of the token contract to check.\n * @returns Suspense query result with `data: boolean`.\n *\n * @example\n * ```tsx\n * const { data: isWrapper } = useIsWrapperSuspense(\"0xToken\");\n * ```\n */\nexport function useIsWrapperSuspense(tokenAddress: Address) {\n const sdk = useZamaSDK();\n\n return useSuspenseQuery<boolean>(isWrapperQueryOptions(sdk.signer, tokenAddress));\n}\n","\"use client\";\n\nimport { useQuery, useSuspenseQuery } from \"../utils/query\";\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { totalSupplyQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\nexport { totalSupplyQueryOptions };\n\n/**\n * Read the total supply of a token.\n * Stale after 30 seconds to balance freshness and RPC cost.\n *\n * @param tokenAddress - Address of the token contract.\n * @param options - React Query options (forwarded to `useQuery`).\n * @returns Query result with `data: bigint`.\n *\n * @example\n * ```tsx\n * const { data: totalSupply } = useTotalSupply(\"0xToken\");\n * ```\n */\nexport function useTotalSupply(\n tokenAddress: Address,\n options?: Omit<UseQueryOptions<bigint>, \"queryKey\" | \"queryFn\">,\n) {\n const sdk = useZamaSDK();\n\n return useQuery<bigint>({\n ...totalSupplyQueryOptions(sdk.signer, tokenAddress),\n ...options,\n });\n}\n\n/**\n * Suspense variant of {@link useTotalSupply}.\n * Suspends rendering until the total supply is loaded.\n *\n * @param tokenAddress - Address of the token contract.\n * @returns Suspense query result with `data: bigint`.\n *\n * @example\n * ```tsx\n * const { data: totalSupply } = useTotalSupplySuspense(\"0xToken\");\n * ```\n */\nexport function useTotalSupplySuspense(tokenAddress: Address) {\n const sdk = useZamaSDK();\n\n return useSuspenseQuery<bigint>(totalSupplyQueryOptions(sdk.signer, tokenAddress));\n}\n","\"use client\";\n\nimport type { TokenWrapperPair } from \"@zama-fhe/sdk\";\nimport { tokenPairsQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useQuery } from \"../utils/query\";\nimport { useWrappersRegistryAddress } from \"./use-wrappers-registry-address\";\n\n/**\n * Fetches all token wrapper pairs from the ConfidentialTokenWrappersRegistry\n * contract on the current chain.\n */\nexport function useTokenPairsRegistry() {\n const sdk = useZamaSDK();\n const registryAddress = useWrappersRegistryAddress();\n\n return useQuery<readonly TokenWrapperPair[]>(\n tokenPairsQueryOptions(sdk.signer, {\n registryAddress,\n }),\n );\n}\n","\"use client\";\n\nimport { tokenPairsLengthQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useQuery } from \"../utils/query\";\nimport { useWrappersRegistryAddress } from \"./use-wrappers-registry-address\";\n\n/**\n * Returns the total number of token wrapper pairs in the registry.\n */\nexport function useTokenPairsLength() {\n const sdk = useZamaSDK();\n const registryAddress = useWrappersRegistryAddress();\n\n return useQuery<bigint>(\n tokenPairsLengthQueryOptions(sdk.signer, {\n registryAddress,\n }),\n );\n}\n","\"use client\";\n\nimport type { TokenWrapperPair } from \"@zama-fhe/sdk\";\nimport { tokenPairsSliceQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useQuery } from \"../utils/query\";\nimport { useWrappersRegistryAddress } from \"./use-wrappers-registry-address\";\n\n/**\n * Fetches a range of token wrapper pairs from the registry (paginated).\n *\n * @param fromIndex - Start index (inclusive). Pass `undefined` to disable.\n * @param toIndex - End index (exclusive). Pass `undefined` to disable.\n */\nexport function useTokenPairsSlice({\n fromIndex,\n toIndex,\n}: {\n fromIndex: bigint | undefined;\n toIndex: bigint | undefined;\n}) {\n const sdk = useZamaSDK();\n const registryAddress = useWrappersRegistryAddress();\n\n return useQuery<readonly TokenWrapperPair[]>(\n tokenPairsSliceQueryOptions(sdk.signer, {\n registryAddress,\n fromIndex,\n toIndex,\n }),\n );\n}\n","\"use client\";\n\nimport type { TokenWrapperPair } from \"@zama-fhe/sdk\";\nimport { tokenPairQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useQuery } from \"../utils/query\";\nimport { useWrappersRegistryAddress } from \"./use-wrappers-registry-address\";\n\n/**\n * Fetches a single token wrapper pair by index from the registry.\n *\n * @param index - Zero-based pair index. Pass `undefined` to disable.\n */\nexport function useTokenPair({ index }: { index: bigint | undefined }) {\n const sdk = useZamaSDK();\n const registryAddress = useWrappersRegistryAddress();\n\n return useQuery<TokenWrapperPair>(\n tokenPairQueryOptions(sdk.signer, {\n registryAddress,\n index,\n }),\n );\n}\n","\"use client\";\n\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { confidentialTokenAddressQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useQuery } from \"../utils/query\";\nimport { useWrappersRegistryAddress } from \"./use-wrappers-registry-address\";\n\n/**\n * Looks up the confidential token address for a given plain token address.\n */\nexport function useConfidentialTokenAddress({\n tokenAddress,\n}: {\n tokenAddress: Address | undefined;\n}) {\n const sdk = useZamaSDK();\n const registryAddress = useWrappersRegistryAddress();\n\n return useQuery<readonly [boolean, Address]>(\n confidentialTokenAddressQueryOptions(sdk.signer, {\n registryAddress,\n tokenAddress,\n }),\n );\n}\n","\"use client\";\n\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { tokenAddressQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useQuery } from \"../utils/query\";\nimport { useWrappersRegistryAddress } from \"./use-wrappers-registry-address\";\n\n/**\n * Looks up the plain token address for a given confidential token address.\n */\nexport function useTokenAddress({\n confidentialTokenAddress,\n}: {\n confidentialTokenAddress: Address | undefined;\n}) {\n const sdk = useZamaSDK();\n const registryAddress = useWrappersRegistryAddress();\n\n return useQuery<readonly [boolean, Address]>(\n tokenAddressQueryOptions(sdk.signer, {\n registryAddress,\n confidentialTokenAddress,\n }),\n );\n}\n","\"use client\";\n\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { isConfidentialTokenValidQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useQuery } from \"../utils/query\";\nimport { useWrappersRegistryAddress } from \"./use-wrappers-registry-address\";\n\n/**\n * Checks whether a confidential token is registered and valid in the\n * on-chain wrappers registry.\n *\n * @param confidentialTokenAddress - The confidential token to check. Pass `undefined` to disable.\n */\nexport function useIsConfidentialTokenValid({\n confidentialTokenAddress,\n}: {\n confidentialTokenAddress: Address | undefined;\n}) {\n const sdk = useZamaSDK();\n const registryAddress = useWrappersRegistryAddress();\n\n return useQuery<boolean>(\n isConfidentialTokenValidQueryOptions(sdk.signer, {\n registryAddress,\n confidentialTokenAddress,\n }),\n );\n}\n","\"use client\";\n\nimport type {\n TokenWrapperPair,\n TokenWrapperPairWithMetadata,\n PaginatedResult,\n} from \"@zama-fhe/sdk\";\nimport { listPairsQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useQuery } from \"../utils/query\";\nimport { useWrappersRegistryAddress } from \"./use-wrappers-registry-address\";\n\n/**\n * Fetches paginated token wrapper pairs from the registry.\n *\n * @param options - Query options: `page` (1-indexed, default `1`), `pageSize` (default `100`), `metadata` (fetch on-chain metadata for both tokens, default `false`).\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useListPairs({ page: 1, pageSize: 20 });\n * if (data) {\n * console.log(`${data.total} pairs, showing page ${data.page}`);\n * }\n * ```\n */\nexport function useListPairs({\n page = 1,\n pageSize = 100,\n metadata = false,\n}: {\n page?: number;\n pageSize?: number;\n metadata?: boolean;\n} = {}) {\n const sdk = useZamaSDK();\n const registryAddress = useWrappersRegistryAddress();\n\n // Pass sdk.registry (a lazy singleton) so the class-level TTL cache is shared\n // across all queryFn executions — rather than constructing a new instance each time.\n return useQuery<PaginatedResult<TokenWrapperPair | TokenWrapperPairWithMetadata>>(\n listPairsQueryOptions(sdk.registry, {\n registryAddress,\n page,\n pageSize,\n metadata,\n }),\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useQuery","tanstack_useQuery","useSuspenseQuery","tanstack_useSuspenseQuery","useQuery","useQuery","useQuery","useQuery","useQuery","useQuery","useQuery","useSuspenseQuery","useQuery","useSuspenseQuery","useQuery","useQuery","useSuspenseQuery","useQuery","useSuspenseQuery","useQuery","useQuery","useSuspenseQuery","useQuery","useSuspenseQuery","useQuery","useQuery","useQuery","useQuery","useQuery","useQuery","useQuery","useQuery"],"sources":["../src/provider.tsx","../src/relayer/use-encrypt.ts","../src/utils/query.ts","../src/relayer/use-user-decrypt.ts","../src/relayer/use-public-decrypt.ts","../src/relayer/use-generate-keypair.ts","../src/relayer/use-create-eip712.ts","../src/relayer/use-create-delegated-user-decrypt-eip712.ts","../src/relayer/use-delegated-user-decrypt.ts","../src/relayer/use-request-zk-proof-verification.ts","../src/relayer/use-public-key.ts","../src/relayer/use-public-params.ts","../src/authorization/use-allow.ts","../src/authorization/use-is-allowed.ts","../src/authorization/use-revoke.ts","../src/authorization/use-revoke-session.ts","../src/token/use-token.ts","../src/token/use-readonly-token.ts","../src/balance/use-confidential-balance.ts","../src/balance/use-confidential-balances.ts","../src/balance/optimistic-balance-update.ts","../src/transfer/use-confidential-transfer.ts","../src/transfer/use-confidential-transfer-from.ts","../src/transfer/use-confidential-approve.ts","../src/transfer/use-confidential-is-approved.ts","../src/shield/use-shield.ts","../src/unwrap/use-unwrap.ts","../src/unwrap/use-unwrap-all.ts","../src/unwrap/use-finalize-unwrap.ts","../src/unshield/use-unshield.ts","../src/unshield/use-unshield-all.ts","../src/unshield/use-resume-unshield.ts","../src/shield/use-underlying-allowance.ts","../src/wrappers-registry/use-wrappers-registry-address.ts","../src/token/use-wrapper-discovery.ts","../src/token/use-metadata.ts","../src/delegation/use-delegate-decryption.ts","../src/delegation/use-revoke-delegation.ts","../src/delegation/use-delegation-status.ts","../src/delegation/use-decrypt-balance-as.ts","../src/delegation/use-batch-decrypt-balances-as.ts","../src/shield/use-approve-underlying.ts","../src/token/use-is-confidential.ts","../src/token/use-total-supply.ts","../src/wrappers-registry/use-token-pairs-registry.ts","../src/wrappers-registry/use-token-pairs-length.ts","../src/wrappers-registry/use-token-pairs-slice.ts","../src/wrappers-registry/use-token-pair.ts","../src/wrappers-registry/use-confidential-token-address.ts","../src/wrappers-registry/use-token-address.ts","../src/wrappers-registry/use-is-confidential-token-valid.ts","../src/wrappers-registry/use-list-pairs.ts"],"sourcesContent":["\"use client\";\n\nimport type {\n Address,\n GenericSigner,\n GenericStorage,\n RelayerSDK,\n ZamaSDKEventListener,\n} from \"@zama-fhe/sdk\";\nimport { ZamaSDK } from \"@zama-fhe/sdk\";\nimport { invalidateWalletLifecycleQueries } from \"@zama-fhe/sdk/query\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport {\n createContext,\n type PropsWithChildren,\n useContext,\n useEffect,\n useMemo,\n useRef,\n} from \"react\";\n\n/** Props for {@link ZamaProvider}. */\nexport interface ZamaProviderProps extends PropsWithChildren {\n /** FHE relayer backend (RelayerWeb for browser, RelayerNode for server). */\n relayer: RelayerSDK;\n /** Wallet signer (`ViemSigner`, `EthersSigner`, or custom {@link GenericSigner}). */\n signer: GenericSigner;\n /** Credential storage backend (IndexedDBStorage for browser, MemoryStorage for tests). */\n storage: GenericStorage;\n /**\n * Session storage for wallet signatures. Defaults to in-memory (lost on reload).\n * Pass a `chrome.storage.session`-backed store for web extensions.\n */\n sessionStorage?: GenericStorage;\n /**\n * How long the ML-KEM re-encryption keypair remains valid, in seconds.\n * Default: `86400` (1 day). Must be positive — `0` is rejected.\n */\n keypairTTL?: number;\n /**\n * Controls how long session signatures (EIP-712 wallet signatures) remain valid, in seconds.\n * Default: `2592000` (30 days).\n * - `0`: never persist — every operation triggers a signing prompt (high-security mode).\n * - Positive number: seconds until the session signature expires and requires re-authentication.\n */\n sessionTTL?: number;\n /**\n * Per-chain wrappers registry address overrides, merged on top of built-in defaults.\n * Use this for custom or local chains (e.g. Hardhat) where no default registry exists.\n */\n registryAddresses?: Record<number, Address>;\n /**\n * How long cached registry results remain valid, in seconds.\n * Default: `86400` (24 hours).\n */\n registryTTL?: number;\n /** Callback invoked on SDK lifecycle events. */\n onEvent?: ZamaSDKEventListener;\n}\n\nconst ZamaSDKContext = createContext<ZamaSDK | null>(null);\n\n/**\n * Provides a {@link ZamaSDK} instance to all descendant hooks.\n *\n * @example\n * ```tsx\n * <ZamaProvider relayer={relayer} signer={signer} storage={storage}>\n * <App />\n * </ZamaProvider>\n * ```\n */\nexport function ZamaProvider({\n children,\n relayer,\n signer,\n storage,\n sessionStorage,\n keypairTTL,\n sessionTTL,\n registryAddresses,\n registryTTL,\n onEvent,\n}: ZamaProviderProps) {\n const queryClient = useQueryClient();\n\n // Stabilize onEvent so an inline arrow doesn't recreate the SDK every render.\n const onEventRef = useRef(onEvent);\n\n useEffect(() => {\n onEventRef.current = onEvent;\n });\n\n const signerLifecycleCallbacks = useMemo(\n () =>\n signer?.subscribe\n ? {\n onDisconnect: () => invalidateWalletLifecycleQueries(queryClient),\n onAccountChange: () => invalidateWalletLifecycleQueries(queryClient),\n onChainChange: () => invalidateWalletLifecycleQueries(queryClient),\n }\n : undefined,\n [queryClient, signer],\n );\n\n const sdk = useMemo(\n () =>\n new ZamaSDK({\n relayer,\n signer,\n storage,\n sessionStorage,\n keypairTTL,\n sessionTTL,\n registryAddresses,\n registryTTL,\n onEvent: onEventRef.current,\n signerLifecycleCallbacks,\n }),\n [\n relayer,\n signer,\n storage,\n sessionStorage,\n keypairTTL,\n sessionTTL,\n registryAddresses,\n registryTTL,\n signerLifecycleCallbacks,\n ],\n );\n\n // Clean up signer subscriptions on unmount without terminating the\n // caller-owned relayer. dispose() only unsubscribes from wallet events\n // and is idempotent.\n useEffect(() => () => sdk.dispose(), [sdk]);\n\n return <ZamaSDKContext.Provider value={sdk}>{children}</ZamaSDKContext.Provider>;\n}\n\n/**\n * Access the {@link ZamaSDK} instance from context.\n * Throws if called outside a {@link ZamaProvider} or when no signer is provided.\n *\n * @example\n * ```tsx\n * const sdk = useZamaSDK();\n * const token = sdk.createReadonlyToken(\"0x...\");\n * ```\n */\nexport function useZamaSDK(): ZamaSDK {\n const context = useContext(ZamaSDKContext);\n\n if (!context) {\n throw new Error(\n \"useZamaSDK must be used within a <ZamaProvider>. \" +\n \"Wrap your component tree in <ZamaProvider relayer={…} signer={…} storage={…}>.\",\n );\n }\n\n return context;\n}\n","\"use client\";\n\nimport type { EncryptParams, EncryptResult } from \"@zama-fhe/sdk\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { encryptMutationOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\n/**\n * Encrypt a plaintext value using FHE.\n * Calls the relayer's `encrypt` method via a mutation.\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link EncryptionFailedError} — FHE encryption failed\n *\n * @returns A mutation whose `mutate` accepts {@link EncryptParams}.\n *\n * @example\n * ```tsx\n * const encrypt = useEncrypt();\n * encrypt.mutate({ values: [{ value: 1000n, type: \"euint64\" }], contractAddress: \"0x...\", userAddress: \"0x...\" });\n * ```\n */\nexport function useEncrypt() {\n const sdk = useZamaSDK();\n return useMutation<EncryptResult, Error, EncryptParams>(encryptMutationOptions(sdk));\n}\n","import {\n type DefaultError,\n type QueriesOptions,\n type QueriesResults,\n useQueries as tanstack_useQueries,\n useQuery as tanstack_useQuery,\n useSuspenseQuery as tanstack_useSuspenseQuery,\n type UseQueryOptions,\n type UseQueryResult,\n type UseSuspenseQueryOptions,\n type UseSuspenseQueryResult,\n} from \"@tanstack/react-query\";\nimport { hashFn } from \"@zama-fhe/sdk/query\";\n\n/**\n * Thin wrapper around TanStack's useQuery that injects our custom queryKeyHashFn.\n * Mirrors the wagmi pattern — the type safety boundary is at the factory and hook levels.\n *\n * Callers typically specify only `<TData>` (e.g. `useQuery<PublicKeyData>(...)`) while\n * factory options carry specific tuple keys (e.g. `readonly [\"zama.publicKey\"]`).\n * We erase the QueryKey param via `AnyKeyQueryOptions` so callers don't need to\n * spell out the key type — any QueryKey subtype is accepted.\n */\ntype AnyKeyQueryOptions<TData, TError> = UseQueryOptions<\n TData,\n TError,\n TData,\n // oxlint-disable-next-line typescript/no-explicit-any\n any\n>;\ntype AnyKeySuspenseOptions<TData, TError> = UseSuspenseQueryOptions<\n TData,\n TError,\n TData,\n // oxlint-disable-next-line typescript/no-explicit-any\n any\n>;\n\nexport function useQuery<TData = unknown, TError = DefaultError>(\n options: AnyKeyQueryOptions<TData, TError>,\n): UseQueryResult<TData, TError> {\n return tanstack_useQuery({\n ...options,\n queryKeyHashFn: hashFn,\n });\n}\n\nexport function useSuspenseQuery<TData = unknown, TError = DefaultError>(\n options: AnyKeySuspenseOptions<TData, TError>,\n): UseSuspenseQueryResult<TData, TError> {\n return tanstack_useSuspenseQuery({\n ...options,\n queryKeyHashFn: hashFn,\n });\n}\n\n/**\n * Thin wrapper around TanStack's useQueries that injects our custom queryKeyHashFn\n * on every query in the array.\n */\nexport function useQueries<\n // oxlint-disable-next-line typescript/no-explicit-any\n T extends Array<any>,\n TCombinedResult = QueriesResults<T>,\n>({\n queries,\n ...options\n}: {\n queries: readonly [...QueriesOptions<T>];\n combine?: (result: QueriesResults<T>) => TCombinedResult;\n subscribed?: boolean;\n}): TCombinedResult {\n return tanstack_useQueries({\n ...options,\n queries: queries.map((q) => ({\n ...q,\n queryKeyHashFn: hashFn,\n })) as [...QueriesOptions<T>],\n });\n}\n","\"use client\";\n\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport type { DecryptResult, UserDecryptQueryConfig } from \"@zama-fhe/sdk/query\";\nimport { userDecryptQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useQuery } from \"../utils/query\";\n\n/**\n * React hook for FHE user decryption. Thin wrapper around\n * `userDecryptQueryOptions` with `useQuery` semantics.\n */\nexport function useUserDecrypt(\n config: UserDecryptQueryConfig,\n options?: Omit<UseQueryOptions<DecryptResult>, \"queryKey\" | \"queryFn\">,\n) {\n const sdk = useZamaSDK();\n const queryOpts = userDecryptQueryOptions(sdk, config);\n return useQuery<DecryptResult>({\n ...queryOpts,\n ...options,\n enabled: queryOpts.enabled && (options?.enabled ?? false),\n });\n}\n\n/** Return type of {@link useUserDecrypt}. */\nexport type UseUserDecryptResult = ReturnType<typeof useUserDecrypt>;\n","\"use client\";\n\nimport { useMutation } from \"@tanstack/react-query\";\nimport type { Handle, PublicDecryptResult } from \"@zama-fhe/sdk\";\nimport { publicDecryptMutationOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\n/**\n * Decrypt FHE ciphertext handles using the network public key (no credential needed).\n * On success, results are available via `data.clearValues` and written to the\n * persistent decrypt cache.\n *\n * @returns A mutation whose `mutate` accepts an array of handle strings.\n *\n * @example\n * ```tsx\n * const publicDecrypt = usePublicDecrypt();\n * publicDecrypt.mutate([\"0xHandle1\", \"0xHandle2\"]);\n * // publicDecrypt.data?.clearValues => { \"0xHandle1\": 500n, ... }\n * ```\n */\nexport function usePublicDecrypt() {\n const sdk = useZamaSDK();\n return useMutation<PublicDecryptResult, Error, Handle[]>(publicDecryptMutationOptions(sdk));\n}\n","\"use client\";\n\nimport { useMutation } from \"@tanstack/react-query\";\nimport { generateKeypairMutationOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\n/**\n * Generate an FHE keypair via the relayer.\n * Returns a public/private key pair for use in decrypt authorization.\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link RelayerRequestFailedError} — relayer keypair generation request failed\n *\n * @returns A mutation whose `mutate` takes no parameters.\n *\n * @example\n * ```tsx\n * const generateKeypair = useGenerateKeypair();\n * generateKeypair.mutate();\n * // generateKeypair.data?.publicKey, generateKeypair.data?.privateKey\n * ```\n */\nexport function useGenerateKeypair() {\n const sdk = useZamaSDK();\n return useMutation(generateKeypairMutationOptions(sdk));\n}\n","\"use client\";\n\nimport type { EIP712TypedData } from \"@zama-fhe/sdk\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { createEIP712MutationOptions } from \"@zama-fhe/sdk/query\";\nimport type { CreateEIP712Params } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\n/**\n * Create EIP-712 typed data for signing an FHE decrypt credential.\n * The returned typed data is signed by the wallet to authorize decryption.\n *\n * @returns A mutation whose `mutate` accepts {@link CreateEIP712Params}.\n *\n * @example\n * ```tsx\n * const createEIP712 = useCreateEIP712();\n * createEIP712.mutate({\n * publicKey: keypair.publicKey,\n * contractAddresses: [\"0xToken\"],\n * startTimestamp: Math.floor(Date.now() / 1000),\n * });\n * ```\n */\nexport function useCreateEIP712() {\n const sdk = useZamaSDK();\n return useMutation<EIP712TypedData, Error, CreateEIP712Params>(createEIP712MutationOptions(sdk));\n}\n","\"use client\";\n\nimport type { KmsDelegatedUserDecryptEIP712Type } from \"@zama-fhe/sdk\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { createDelegatedUserDecryptEIP712MutationOptions } from \"@zama-fhe/sdk/query\";\nimport type { CreateDelegatedUserDecryptEIP712Params } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\n/**\n * Create EIP-712 typed data for a delegated user decrypt credential.\n * Used when one wallet authorizes another to decrypt on its behalf.\n *\n * @returns A mutation whose `mutate` accepts {@link CreateDelegatedUserDecryptEIP712Params}.\n *\n * @example\n * ```tsx\n * const createEIP712 = useCreateDelegatedUserDecryptEIP712();\n * createEIP712.mutate({\n * publicKey: keypair.publicKey,\n * contractAddresses: [\"0xToken\"],\n * delegatorAddress: \"0xDelegator\",\n * startTimestamp: Math.floor(Date.now() / 1000),\n * });\n * ```\n */\nexport function useCreateDelegatedUserDecryptEIP712() {\n const sdk = useZamaSDK();\n return useMutation<\n KmsDelegatedUserDecryptEIP712Type,\n Error,\n CreateDelegatedUserDecryptEIP712Params\n >(createDelegatedUserDecryptEIP712MutationOptions(sdk));\n}\n","\"use client\";\n\nimport type { DelegatedUserDecryptParams, ClearValueType, Handle } from \"@zama-fhe/sdk\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { delegatedUserDecryptMutationOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\n/**\n * Decrypt FHE ciphertext handles using delegated user credentials.\n * Returns a map of handle → plaintext bigint.\n *\n * @returns A mutation whose `mutate` accepts {@link DelegatedUserDecryptParams}.\n *\n * @example\n * ```tsx\n * const decrypt = useDelegatedUserDecrypt();\n * decrypt.mutate({ handles: [\"0xHandle1\"], ...credentials });\n * // decrypt.data => { \"0xHandle1\": 1000n }\n * ```\n */\nexport function useDelegatedUserDecrypt() {\n const sdk = useZamaSDK();\n return useMutation<Record<Handle, ClearValueType>, Error, DelegatedUserDecryptParams>(\n delegatedUserDecryptMutationOptions(sdk),\n );\n}\n","\"use client\";\n\nimport type { InputProofBytesType, ZKProofLike } from \"@zama-fhe/sdk\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { requestZKProofVerificationMutationOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\n/**\n * Submit a ZK proof for on-chain verification.\n * Returns the input proof bytes for use in contract calls.\n *\n * @returns A mutation whose `mutate` accepts a {@link ZKProofLike}.\n *\n * @example\n * ```tsx\n * const verify = useRequestZKProofVerification();\n * verify.mutate(zkProof);\n * // verify.data => Uint8Array (input proof bytes)\n * ```\n */\nexport function useRequestZKProofVerification() {\n const sdk = useZamaSDK();\n return useMutation<InputProofBytesType, Error, ZKProofLike>(\n requestZKProofVerificationMutationOptions(sdk),\n );\n}\n","\"use client\";\n\nimport type { PublicKeyData } from \"@zama-fhe/sdk\";\nimport { useQuery } from \"../utils/query\";\nimport { publicKeyQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\n/**\n * Fetch the FHE network public key from the relayer.\n * Cached indefinitely since the key does not change during a session.\n *\n * @returns Query result with `data: PublicKeyData | null`.\n *\n * @example\n * ```tsx\n * const { data: publicKey } = usePublicKey();\n * // publicKey?.publicKeyId, publicKey?.publicKey\n * ```\n */\nexport function usePublicKey() {\n const sdk = useZamaSDK();\n return useQuery<PublicKeyData | null>(publicKeyQueryOptions(sdk));\n}\n","\"use client\";\n\nimport type { PublicParamsData } from \"@zama-fhe/sdk\";\nimport { useQuery } from \"../utils/query\";\nimport { publicParamsQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\n/**\n * Fetch FHE public parameters for a given bit size from the relayer.\n * Cached indefinitely since parameters do not change during a session.\n *\n * @param bits - The FHE bit size to fetch parameters for (e.g. 2048).\n * @returns Query result with `data: PublicParamsData | null`.\n *\n * @example\n * ```tsx\n * const { data: params } = usePublicParams(2048);\n * // params?.publicParams, params?.publicParamsId\n * ```\n */\nexport function usePublicParams(bits: number) {\n const sdk = useZamaSDK();\n return useQuery<PublicParamsData | null>(publicParamsQueryOptions(sdk, bits));\n}\n","\"use client\";\n\nimport { useMutation, type UseMutationOptions } from \"@tanstack/react-query\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { allowMutationOptions, zamaQueryKeys } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\n/**\n * Sign an EIP-712 message authorizing decryption of confidential handles\n * for a list of contract addresses. This is not token-specific — any\n * contract that uses FHE-encrypted values (tokens, DeFi vaults, games, etc.)\n * can be authorized in a single wallet signature. Subsequent decrypt\n * operations on any of these contracts reuse cached credentials.\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link SigningRejectedError} — user rejected the wallet prompt\n * - {@link KeypairExpiredError} — the re-encryption keypair has expired\n *\n * @example\n * ```tsx\n * const { mutateAsync: allow, isPending } = useAllow();\n *\n * // Authorize decryption for any contracts with encrypted state:\n * // confidential tokens, auction contracts, governance contracts, etc.\n * await allow([tokenAddress, auctionAddress, governanceAddress]);\n * ```\n */\nexport function useAllow(options?: UseMutationOptions<void, Error, Address[]>) {\n const sdk = useZamaSDK();\n\n return useMutation<void, Error, Address[]>({\n ...allowMutationOptions(sdk),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n void context.client.invalidateQueries({\n queryKey: zamaQueryKeys.isAllowed.all,\n });\n },\n });\n}\n","\"use client\";\n\nimport { useQuery } from \"../utils/query\";\nimport { skipToken } from \"@tanstack/react-query\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport {\n isAllowedQueryOptions,\n signerAddressQueryOptions,\n zamaQueryKeys,\n} from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\n/** Configuration for {@link useIsAllowed}. */\nexport interface UseIsAllowedConfig {\n /** Contract addresses to check credentials against (at least one required). */\n contractAddresses: [Address, ...Address[]];\n}\n\n/**\n * Check whether a session signature is cached for the connected wallet\n * and covers the given contract addresses.\n * Returns `true` if decrypt operations can proceed without a wallet prompt.\n *\n * @example\n * ```tsx\n * const { data: allowed } = useIsAllowed({ contractAddresses: [\"0xToken\"] });\n * ```\n */\nexport function useIsAllowed(config: UseIsAllowedConfig) {\n const sdk = useZamaSDK();\n const addressQuery = useQuery<Address>({\n ...signerAddressQueryOptions(sdk.signer),\n });\n const account = addressQuery.data;\n const baseOpts = account\n ? isAllowedQueryOptions(sdk, { account, contractAddresses: config.contractAddresses })\n : ({\n queryKey: zamaQueryKeys.isAllowed.all,\n queryFn: skipToken,\n enabled: false,\n } as const);\n\n return useQuery<boolean>(baseOpts);\n}\n","\"use client\";\n\nimport { useMutation, type UseMutationOptions } from \"@tanstack/react-query\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { revokeMutationOptions, zamaQueryKeys } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\n/**\n * Revoke stored FHE decrypt credentials for a list of contract addresses.\n * This is not token-specific — it revokes the EIP-712 authorization for\n * any contract that uses FHE-encrypted values. The next decrypt operation\n * on these contracts will require a fresh wallet signature.\n *\n * @example\n * ```tsx\n * const { mutate: revoke } = useRevoke();\n *\n * // Revoke for any contracts: tokens, auctions, governance, etc.\n * revoke([tokenAddress, auctionAddress]);\n * ```\n */\nexport function useRevoke(options?: UseMutationOptions<void, Error, Address[]>) {\n const sdk = useZamaSDK();\n\n return useMutation<void, Error, Address[]>({\n ...revokeMutationOptions(sdk),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n context.client.removeQueries({ queryKey: zamaQueryKeys.isAllowed.all });\n context.client.removeQueries({ queryKey: zamaQueryKeys.decryption.all });\n },\n });\n}\n","\"use client\";\n\nimport { useMutation, type UseMutationOptions } from \"@tanstack/react-query\";\nimport { revokeSessionMutationOptions, zamaQueryKeys } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\n/**\n * Revoke the session signature for the connected wallet without\n * specifying contract addresses. Useful for wallet disconnect handlers.\n *\n * @example\n * ```tsx\n * const { mutate: revokeSession } = useRevokeSession();\n * revokeSession();\n * ```\n */\nexport function useRevokeSession(options?: UseMutationOptions<void>) {\n const sdk = useZamaSDK();\n\n return useMutation<void>({\n ...revokeSessionMutationOptions(sdk),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n context.client.removeQueries({ queryKey: zamaQueryKeys.isAllowed.all });\n context.client.removeQueries({ queryKey: zamaQueryKeys.decryption.all });\n },\n });\n}\n","\"use client\";\n\nimport { useMemo } from \"react\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { useZamaSDK } from \"../provider\";\n\n/** Base configuration shared by all mutation hooks that need a Token instance. */\nexport interface UseZamaConfig {\n /** Address of the confidential token contract. */\n tokenAddress: Address;\n /** Address of the wrapper contract (required for shield/unshield operations). */\n wrapperAddress?: Address;\n}\n\n/**\n * Get a {@link Token} instance, memoized by address pair.\n * Reads signer and storage from the nearest {@link ZamaProvider}.\n *\n * @param config - Token and optional wrapper addresses.\n * @returns A memoized `Token` instance.\n *\n * @example\n * ```tsx\n * const token = useToken({ tokenAddress: \"0xToken\", wrapperAddress: \"0xWrapper\" });\n * ```\n */\nexport function useToken(config: UseZamaConfig) {\n const sdk = useZamaSDK();\n\n return useMemo(\n () => sdk.createToken(config.tokenAddress, config.wrapperAddress),\n [sdk, config.tokenAddress, config.wrapperAddress],\n );\n}\n","\"use client\";\n\nimport { useMemo } from \"react\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { useZamaSDK } from \"../provider\";\n\n/**\n * Get a {@link ReadonlyToken} instance, memoized by address.\n * Supports balance queries, ERC-165 checks, and authorization — no wrapper needed.\n * Reads signer and storage from the nearest {@link ZamaProvider}.\n *\n * @param address - Address of the confidential token contract.\n * @returns A memoized `ReadonlyToken` instance.\n *\n * @example\n * ```tsx\n * const token = useReadonlyToken(\"0xToken\");\n * // token.balanceOf(), token.isConfidential(), etc.\n * ```\n */\nexport function useReadonlyToken(address: Address) {\n const sdk = useZamaSDK();\n\n return useMemo(() => sdk.createReadonlyToken(address), [sdk, address]);\n}\n","\"use client\";\n\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { confidentialBalanceQueryOptions, signerAddressQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useReadonlyToken } from \"../token/use-readonly-token\";\nimport { useQuery } from \"../utils/query\";\n\n/** Configuration for {@link useConfidentialBalance}. */\nexport interface UseConfidentialBalanceConfig {\n /** Address of the confidential token contract. */\n tokenAddress: Address;\n}\n\n/** Query options for {@link useConfidentialBalance}. */\nexport interface UseConfidentialBalanceOptions extends Omit<\n UseQueryOptions<bigint>,\n \"queryKey\" | \"queryFn\" | \"enabled\"\n> {\n /** Whether the query is enabled. Callback form is not supported in composite hooks. */\n enabled?: boolean;\n}\n\n/**\n * Declarative hook to read the connected wallet's confidential token balance.\n * Calls `token.balanceOf(owner)` which reads the on-chain handle and decrypts\n * via the SDK. Cached values are returned instantly — the relayer is only hit\n * when the handle changes.\n *\n * @param config - Token address configuration.\n * @param options - React Query options forwarded to the balance query.\n * @returns The balance query result.\n *\n * @example\n * ```tsx\n * const { data: balance, isLoading } = useConfidentialBalance({\n * tokenAddress: \"0x...\",\n * });\n * ```\n */\nexport function useConfidentialBalance(\n config: UseConfidentialBalanceConfig,\n options?: UseConfidentialBalanceOptions,\n) {\n const { tokenAddress } = config;\n const { enabled = true } = options ?? {};\n const sdk = useZamaSDK();\n const token = useReadonlyToken(tokenAddress);\n\n const addressQuery = useQuery<Address>(signerAddressQueryOptions(sdk.signer));\n\n const owner = addressQuery.data;\n\n const baseOptions = confidentialBalanceQueryOptions(token, {\n tokenAddress,\n owner,\n });\n\n return useQuery<bigint>({\n ...baseOptions,\n ...options,\n enabled: baseOptions.enabled && enabled,\n });\n}\n","\"use client\";\n\nimport { useMemo } from \"react\";\nimport { useQuery } from \"../utils/query\";\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport type { Address, BatchBalancesResult } from \"@zama-fhe/sdk\";\nimport { confidentialBalancesQueryOptions, signerAddressQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\n/** Configuration for {@link useConfidentialBalances}. */\nexport interface UseConfidentialBalancesConfig {\n /** Addresses of the confidential token contracts to batch-query. */\n tokenAddresses: Address[];\n}\n\n/** Query options for {@link useConfidentialBalances}. */\nexport interface UseConfidentialBalancesOptions extends Omit<\n UseQueryOptions<BatchBalancesResult>,\n \"queryKey\" | \"queryFn\" | \"enabled\"\n> {\n /** Whether the query is enabled. Callback form is not supported in composite hooks. */\n enabled?: boolean;\n}\n\n/**\n * Declarative hook to read multiple confidential token balances in batch.\n * Calls `ReadonlyToken.batchBalancesOf()` which decrypts each token via the\n * SDK. Cached values are returned instantly — the relayer is only hit for\n * changed handles.\n *\n * Returns partial results when some tokens fail — successful balances are\n * always returned alongside per-token error information.\n *\n * @param config - Token addresses configuration.\n * @param options - React Query options forwarded to the balance query.\n * @returns The balance query result.\n *\n * @example\n * ```tsx\n * const { data } = useConfidentialBalances({\n * tokenAddresses: [\"0xTokenA\", \"0xTokenB\"],\n * });\n * const balance = data?.results.get(\"0xTokenA\");\n * if (data && data.errors.size > 0) {\n * // some tokens failed — check data.errors\n * }\n * ```\n */\nexport function useConfidentialBalances(\n config: UseConfidentialBalancesConfig,\n options?: UseConfidentialBalancesOptions,\n) {\n const { tokenAddresses } = config;\n const { enabled = true } = options ?? {};\n const sdk = useZamaSDK();\n\n const addressQuery = useQuery<Address>(signerAddressQueryOptions(sdk.signer));\n\n const owner = addressQuery.data;\n\n const tokens = useMemo(\n () => tokenAddresses.map((addr) => sdk.createReadonlyToken(addr)),\n [sdk, tokenAddresses],\n );\n\n const baseOptions = confidentialBalancesQueryOptions(tokens, {\n owner,\n });\n\n return useQuery<BatchBalancesResult>({\n ...baseOptions,\n ...options,\n enabled: (baseOptions.enabled ?? true) && enabled,\n });\n}\n","import type { QueryClient, QueryKey, UseMutationOptions } from \"@tanstack/react-query\";\nimport type { Address, TransactionResult } from \"@zama-fhe/sdk\";\nimport { invalidateAfterShield, zamaQueryKeys } from \"@zama-fhe/sdk/query\";\n\ntype BalanceDeltaMode = \"add\" | \"subtract\";\nexport type OptimisticBalanceSnapshot = [QueryKey, bigint | undefined][];\n\n/** Combined context returned by optimistic `onMutate`. */\nexport interface OptimisticMutateContext {\n snapshot: OptimisticBalanceSnapshot;\n callerContext?: unknown;\n}\n\nexport function unwrapOptimisticCallerContext(\n optimistic: boolean | undefined,\n rawContext: unknown,\n): {\n wrappedContext: OptimisticMutateContext | undefined;\n callerContext: OptimisticMutateContext | undefined;\n} {\n const typed = rawContext as OptimisticMutateContext | undefined;\n const wrappedContext = optimistic ? typed : undefined;\n const callerContext = (optimistic ? wrappedContext?.callerContext : rawContext) as\n | OptimisticMutateContext\n | undefined;\n return { wrappedContext, callerContext };\n}\n\nexport async function applyOptimisticBalanceDelta({\n queryClient,\n tokenAddress,\n amount,\n mode,\n}: {\n queryClient: QueryClient;\n tokenAddress: Address;\n amount: bigint;\n mode: BalanceDeltaMode;\n}): Promise<OptimisticBalanceSnapshot> {\n const balanceKey = zamaQueryKeys.confidentialBalance.token(tokenAddress);\n await queryClient.cancelQueries({ queryKey: balanceKey });\n const previous = queryClient.getQueriesData<bigint>({ queryKey: balanceKey });\n for (const [key, value] of previous) {\n if (value === undefined) {\n continue;\n }\n // Temporary optimistic underflow (`amount > value`) is acceptable because\n // settlement invalidates and rewrites this cache entry.\n queryClient.setQueryData(key, mode === \"add\" ? value + amount : value - amount);\n }\n return previous;\n}\n\nexport function rollbackOptimisticBalanceDelta(\n queryClient: QueryClient,\n snapshot: OptimisticBalanceSnapshot,\n) {\n for (const [key, value] of snapshot) {\n queryClient.setQueryData(key, value);\n }\n}\n\n/**\n * Build optimistic mutation callbacks for shield operations.\n * Wraps the caller's `onMutate`/`onError`/`onSuccess`/`onSettled` with snapshot/rollback logic\n * and returns overrides ready to spread into `useMutation`.\n */\nexport function optimisticBalanceCallbacks<TParams extends { amount: bigint }>({\n optimistic,\n tokenAddress,\n queryClient,\n options,\n}: {\n optimistic: boolean | undefined;\n tokenAddress: Address;\n queryClient: QueryClient;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n options: UseMutationOptions<TransactionResult, Error, TParams, any> | undefined;\n}): Pick<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n UseMutationOptions<TransactionResult, Error, TParams, any>,\n \"onMutate\" | \"onError\" | \"onSuccess\" | \"onSettled\"\n> {\n return {\n onMutate: optimistic\n ? async (variables, mutationContext) => {\n const snapshot = await applyOptimisticBalanceDelta({\n queryClient,\n tokenAddress,\n amount: variables.amount,\n mode: \"add\",\n });\n const callerContext = await options?.onMutate?.(variables, mutationContext);\n return { snapshot, callerContext };\n }\n : options?.onMutate,\n onError: (error, variables, rawContext, context) => {\n const { wrappedContext, callerContext } = unwrapOptimisticCallerContext(\n optimistic,\n rawContext,\n );\n try {\n if (wrappedContext) {\n rollbackOptimisticBalanceDelta(queryClient, wrappedContext.snapshot);\n }\n } finally {\n options?.onError?.(error, variables, callerContext, context);\n }\n },\n onSuccess: (data, variables, rawContext, context) => {\n const { callerContext } = unwrapOptimisticCallerContext(optimistic, rawContext);\n options?.onSuccess?.(data, variables, callerContext, context);\n invalidateAfterShield(context.client, tokenAddress);\n },\n onSettled: (data, error, variables, rawContext, context) => {\n const { callerContext } = unwrapOptimisticCallerContext(optimistic, rawContext);\n options?.onSettled?.(data, error, variables, callerContext, context);\n },\n };\n}\n","\"use client\";\n\nimport {\n useMutation,\n useQueryClient,\n type UseMutationOptions,\n type UseMutationResult,\n} from \"@tanstack/react-query\";\nimport type { TransactionResult } from \"@zama-fhe/sdk\";\nimport {\n confidentialTransferMutationOptions,\n invalidateAfterTransfer,\n type ConfidentialTransferParams,\n} from \"@zama-fhe/sdk/query\";\nimport {\n applyOptimisticBalanceDelta,\n rollbackOptimisticBalanceDelta,\n unwrapOptimisticCallerContext,\n} from \"../balance/optimistic-balance-update\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\n/** Configuration for {@link useConfidentialTransfer}. */\nexport interface UseConfidentialTransferConfig extends UseZamaConfig {\n /**\n * When `true`, optimistically subtracts the transfer amount from cached balance\n * before the transaction confirms. Rolls back on error.\n * @defaultValue false\n */\n optimistic?: boolean;\n}\n\n/**\n * Encrypt and send a confidential transfer. Invalidates balance caches on success.\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link SigningRejectedError} — user rejected the wallet prompt\n * - {@link EncryptionFailedError} — FHE encryption failed\n * - {@link TransactionRevertedError} — on-chain transaction reverted\n *\n * @param config - Token address (and optional wrapper) identifying the token.\n * Set `optimistic: true` to subtract the amount from the cached balance immediately.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const transfer = useConfidentialTransfer({\n * tokenAddress: \"0x...\",\n * optimistic: true,\n * });\n * transfer.mutate(\n * { to: \"0xRecipient\", amount: 1000n },\n * {\n * onError: (error) => {\n * if (error instanceof SigningRejectedError) {\n * // user cancelled — no action needed\n * }\n * },\n * },\n * );\n * ```\n */\nexport function useConfidentialTransfer<TContext = unknown>(\n config: UseConfidentialTransferConfig,\n options?: UseMutationOptions<TransactionResult, Error, ConfidentialTransferParams, TContext>,\n): UseMutationResult<TransactionResult, Error, ConfidentialTransferParams, TContext> {\n const token = useToken(config);\n const queryClient = useQueryClient();\n\n // Internal mutation uses `any` for TContext because optimistic mode wraps\n // the caller's context in OptimisticMutateContext; the public return type\n // is cast back to the caller's TContext.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return useMutation<TransactionResult, Error, ConfidentialTransferParams, any>({\n ...confidentialTransferMutationOptions(token),\n ...options,\n onMutate: config.optimistic\n ? async (variables, mutationContext) => {\n const snapshot = await applyOptimisticBalanceDelta({\n queryClient,\n tokenAddress: config.tokenAddress,\n amount: variables.amount,\n mode: \"subtract\",\n });\n const callerContext = await options?.onMutate?.(variables, mutationContext);\n return { snapshot, callerContext };\n }\n : options?.onMutate,\n onError: (error, variables, rawContext, context) => {\n const { wrappedContext, callerContext } = unwrapOptimisticCallerContext(\n config.optimistic,\n rawContext,\n );\n try {\n if (wrappedContext) {\n rollbackOptimisticBalanceDelta(queryClient, wrappedContext.snapshot);\n }\n } finally {\n options?.onError?.(error, variables, callerContext as TContext, context);\n }\n },\n onSuccess: (data, variables, rawContext, context) => {\n const { callerContext } = unwrapOptimisticCallerContext(config.optimistic, rawContext);\n options?.onSuccess?.(data, variables, callerContext as TContext, context);\n invalidateAfterTransfer(context.client, config.tokenAddress);\n },\n onSettled: (data, error, variables, rawContext, context) => {\n const { callerContext } = unwrapOptimisticCallerContext(config.optimistic, rawContext);\n options?.onSettled?.(data, error, variables, callerContext as TContext, context);\n },\n }) as UseMutationResult<TransactionResult, Error, ConfidentialTransferParams, TContext>;\n}\n","\"use client\";\n\nimport type { UseMutationOptions } from \"@tanstack/react-query\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport type { Address, TransactionResult } from \"@zama-fhe/sdk\";\nimport {\n confidentialTransferFromMutationOptions,\n invalidateAfterTransfer,\n type ConfidentialTransferFromParams,\n} from \"@zama-fhe/sdk/query\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\n/**\n * Operator transfer on behalf of another address. Caller must be an approved operator.\n * Invalidates balance caches on success.\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link SigningRejectedError} — user rejected the wallet prompt\n * - {@link EncryptionFailedError} — FHE encryption of the transfer amount failed\n * - {@link TransactionRevertedError} — on-chain transaction reverted\n *\n * @param config - Token address (and optional wrapper) identifying the token.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const transferFrom = useConfidentialTransferFrom({ tokenAddress: \"0x...\" });\n * transferFrom.mutate({ from: \"0xOwner\", to: \"0xRecipient\", amount: 500n });\n * ```\n */\nexport function useConfidentialTransferFrom(\n config: UseZamaConfig,\n options?: UseMutationOptions<TransactionResult, Error, ConfidentialTransferFromParams, Address>,\n) {\n const token = useToken(config);\n\n return useMutation<TransactionResult, Error, ConfidentialTransferFromParams, Address>({\n ...confidentialTransferFromMutationOptions(token),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n invalidateAfterTransfer(context.client, config.tokenAddress);\n },\n });\n}\n","\"use client\";\n\nimport type { UseMutationOptions } from \"@tanstack/react-query\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport type { Address, TransactionResult } from \"@zama-fhe/sdk\";\nimport {\n confidentialApproveMutationOptions,\n invalidateAfterApprove,\n type ConfidentialApproveParams,\n} from \"@zama-fhe/sdk/query\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\n/**\n * Set operator approval for a confidential token. Defaults to 1 hour.\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link SigningRejectedError} — user rejected the wallet prompt\n * - {@link TransactionRevertedError} — on-chain transaction reverted\n *\n * @param config - Token address (and optional wrapper) identifying the token.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const approve = useConfidentialApprove({ tokenAddress: \"0x...\" });\n * approve.mutate({ spender: \"0xOperator\" });\n * ```\n */\nexport function useConfidentialApprove(\n config: UseZamaConfig,\n options?: UseMutationOptions<TransactionResult, Error, ConfidentialApproveParams, Address>,\n) {\n const token = useToken(config);\n\n return useMutation<TransactionResult, Error, ConfidentialApproveParams, Address>({\n ...confidentialApproveMutationOptions(token),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n invalidateAfterApprove(context.client, config.tokenAddress);\n },\n });\n}\n","\"use client\";\n\nimport { useQuery, useSuspenseQuery } from \"../utils/query\";\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { confidentialIsApprovedQueryOptions, signerAddressQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\nexport { confidentialIsApprovedQueryOptions };\n\n/** Configuration for {@link useConfidentialIsApproved}. */\nexport interface UseConfidentialIsApprovedConfig {\n /** Address of the confidential token contract. Pass `undefined` to disable the query. */\n tokenAddress: Address | undefined;\n /** Address to check approval for. Pass `undefined` to disable the query. */\n spender: Address | undefined;\n /** Token holder address. Defaults to the connected wallet. */\n holder?: Address;\n}\n\n/** Configuration for {@link useConfidentialIsApprovedSuspense}. */\nexport interface UseConfidentialIsApprovedSuspenseConfig extends UseZamaConfig {\n /** Address to check approval for. */\n spender: Address;\n /** Token holder address. Defaults to the connected wallet. */\n holder?: Address;\n}\n\n/**\n * Check if a spender is an approved operator for a given holder (defaults to connected wallet).\n *\n * @param config - Token address, spender, and optional holder to check.\n * @param options - React Query options (forwarded to `useQuery`).\n * @returns Query result with `data: boolean`.\n *\n * @example\n * ```tsx\n * const { data: isApproved } = useConfidentialIsApproved({\n * tokenAddress: \"0xToken\",\n * spender: \"0xSpender\",\n * holder: \"0xHolder\", // optional\n * });\n * ```\n */\nexport function useConfidentialIsApproved(\n config: UseConfidentialIsApprovedConfig,\n options?: Omit<UseQueryOptions<boolean>, \"queryKey\" | \"queryFn\">,\n) {\n const { tokenAddress, spender, holder } = config;\n const sdk = useZamaSDK();\n const holderQuery = useQuery<Address>({\n ...signerAddressQueryOptions(sdk.signer),\n enabled: tokenAddress !== undefined && spender !== undefined && holder === undefined,\n });\n const resolvedHolder = holder ?? holderQuery.data;\n const baseOpts = confidentialIsApprovedQueryOptions(sdk.signer, tokenAddress, {\n holder: resolvedHolder,\n spender,\n });\n\n return useQuery({\n ...baseOpts,\n ...options,\n enabled: (baseOpts.enabled ?? true) && (options?.enabled ?? true),\n });\n}\n\n/**\n * Suspense variant of {@link useConfidentialIsApproved}.\n * Suspends rendering until the approval check resolves.\n *\n * @param config - Token address, spender, and optional holder to check.\n * @returns Suspense query result with `data: boolean`.\n *\n * @example\n * ```tsx\n * const { data: isApproved } = useConfidentialIsApprovedSuspense({\n * tokenAddress: \"0xToken\",\n * spender: \"0xSpender\",\n * holder: \"0xHolder\", // optional\n * });\n * ```\n */\nexport function useConfidentialIsApprovedSuspense(config: UseConfidentialIsApprovedSuspenseConfig) {\n const { spender, holder, ...tokenConfig } = config;\n const sdk = useZamaSDK();\n const token = useToken(tokenConfig);\n const addressQuery = useSuspenseQuery<Address>(signerAddressQueryOptions(sdk.signer));\n const resolvedHolder = holder ?? addressQuery.data;\n\n return useSuspenseQuery<boolean>(\n confidentialIsApprovedQueryOptions(sdk.signer, token.address, {\n holder: resolvedHolder,\n spender,\n }),\n );\n}\n","\"use client\";\n\nimport {\n useMutation,\n useQueryClient,\n type UseMutationOptions,\n type UseMutationResult,\n} from \"@tanstack/react-query\";\nimport type { TransactionResult } from \"@zama-fhe/sdk\";\nimport { shieldMutationOptions, type ShieldParams } from \"@zama-fhe/sdk/query\";\nimport { optimisticBalanceCallbacks } from \"../balance/optimistic-balance-update\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\n/** Configuration for {@link useShield}. */\nexport interface UseShieldConfig extends UseZamaConfig {\n /**\n * When `true`, optimistically adds the wrap amount to the cached confidential balance\n * before the transaction confirms. Rolls back on error.\n * @defaultValue false\n */\n optimistic?: boolean;\n}\n\n/**\n * Shield public ERC-20 tokens into confidential tokens.\n * Handles ERC-20 approval automatically. Invalidates balance caches on success.\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link SigningRejectedError} — user rejected the wallet prompt\n * - {@link ApprovalFailedError} — ERC-20 approval transaction failed\n * - {@link TransactionRevertedError} — shield transaction reverted\n *\n * @param config - Token and wrapper addresses.\n * Set `optimistic: true` to add the amount to the cached balance immediately.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const shield = useShield({ tokenAddress: \"0x...\", wrapperAddress: \"0x...\", optimistic: true });\n * shield.mutate({ amount: 1000n });\n * ```\n */\nexport function useShield<TContext = unknown>(\n config: UseShieldConfig,\n options?: UseMutationOptions<TransactionResult, Error, ShieldParams, TContext>,\n): UseMutationResult<TransactionResult, Error, ShieldParams, TContext> {\n const token = useToken(config);\n const queryClient = useQueryClient();\n\n return useMutation({\n ...shieldMutationOptions(token),\n ...options,\n ...optimisticBalanceCallbacks({\n optimistic: config.optimistic,\n tokenAddress: config.tokenAddress,\n queryClient,\n options,\n }),\n }) as UseMutationResult<TransactionResult, Error, ShieldParams, TContext>;\n}\n","\"use client\";\n\nimport type { UseMutationOptions } from \"@tanstack/react-query\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport type { Address, TransactionResult } from \"@zama-fhe/sdk\";\nimport {\n invalidateAfterUnwrap,\n type UnwrapParams,\n unwrapMutationOptions,\n} from \"@zama-fhe/sdk/query\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\n/**\n * Request an unwrap for a specific amount. Encrypts the amount first.\n * Call {@link useFinalizeUnwrap} after the request is processed on-chain,\n * or use {@link useUnshield} for a single-call orchestration.\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link SigningRejectedError} — user rejected the wallet prompt\n * - {@link EncryptionFailedError} — FHE encryption of the unwrap amount failed\n * - {@link TransactionRevertedError} — on-chain transaction reverted\n *\n * @param config - Token address (and optional wrapper) identifying the token.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const unwrap = useUnwrap({ tokenAddress: \"0x...\" });\n * unwrap.mutate({ amount: 500n });\n * ```\n */\nexport function useUnwrap(\n config: UseZamaConfig,\n options?: UseMutationOptions<TransactionResult, Error, UnwrapParams, Address>,\n) {\n const token = useToken(config);\n\n return useMutation<TransactionResult, Error, UnwrapParams, Address>({\n ...unwrapMutationOptions(token),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n invalidateAfterUnwrap(context.client, config.tokenAddress);\n },\n });\n}\n","\"use client\";\n\nimport type { UseMutationOptions } from \"@tanstack/react-query\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport type { Address, TransactionResult } from \"@zama-fhe/sdk\";\nimport { invalidateAfterUnwrap, unwrapAllMutationOptions } from \"@zama-fhe/sdk/query\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\n/**\n * Request an unwrap for the entire confidential balance.\n * Uses the on-chain balance handle directly (no encryption needed).\n * Call {@link useFinalizeUnwrap} after processing, or use {@link useUnshieldAll} for single-call orchestration.\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link SigningRejectedError} — user rejected the wallet prompt\n * - {@link TransactionRevertedError} — on-chain transaction reverted\n *\n * @param config - Token address (and optional wrapper) identifying the token.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const unwrapAll = useUnwrapAll({ tokenAddress: \"0x...\" });\n * unwrapAll.mutate();\n * ```\n */\nexport function useUnwrapAll(\n config: UseZamaConfig,\n options?: UseMutationOptions<TransactionResult, Error, void, Address>,\n) {\n const token = useToken(config);\n\n return useMutation<TransactionResult, Error, void, Address>({\n ...unwrapAllMutationOptions(token),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n invalidateAfterUnwrap(context.client, config.tokenAddress);\n },\n });\n}\n","\"use client\";\n\nimport type { UseMutationOptions } from \"@tanstack/react-query\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport type { Address, TransactionResult } from \"@zama-fhe/sdk\";\nimport {\n finalizeUnwrapMutationOptions,\n invalidateAfterUnshield,\n type FinalizeUnwrapParams,\n} from \"@zama-fhe/sdk/query\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\n/**\n * Complete an unwrap by providing the public decryption proof.\n * Call this after an unwrap request has been processed on-chain.\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link SigningRejectedError} — user rejected the wallet prompt\n * - {@link DecryptionFailedError} — public decryption of the burn amount failed\n * - {@link TransactionRevertedError} — on-chain finalize transaction reverted\n *\n * @param config - Token address (and optional wrapper) identifying the token.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const finalize = useFinalizeUnwrap({ tokenAddress: \"0x...\" });\n * finalize.mutate({ unwrapRequestId: event.unwrapRequestId });\n * ```\n */\nexport function useFinalizeUnwrap(\n config: UseZamaConfig,\n options?: UseMutationOptions<TransactionResult, Error, FinalizeUnwrapParams, Address>,\n) {\n const token = useToken(config);\n\n return useMutation<TransactionResult, Error, FinalizeUnwrapParams, Address>({\n ...finalizeUnwrapMutationOptions(token),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n invalidateAfterUnshield(context.client, config.tokenAddress);\n },\n });\n}\n","\"use client\";\n\nimport type { UseMutationOptions } from \"@tanstack/react-query\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport type { Address, TransactionResult } from \"@zama-fhe/sdk\";\nimport {\n invalidateAfterUnshield,\n type UnshieldParams,\n unshieldMutationOptions,\n} from \"@zama-fhe/sdk/query\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\n/**\n * Unshield a specific amount and finalize in one call.\n * Orchestrates: unwrap → wait for receipt → parse event → finalize.\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link SigningRejectedError} — user rejected the wallet prompt\n * - {@link EncryptionFailedError} — FHE encryption failed during unwrap\n * - {@link DecryptionFailedError} — public decryption failed during finalize\n * - {@link TransactionRevertedError} — on-chain transaction reverted\n *\n * @param config - Token and wrapper addresses.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const unshield = useUnshield({ tokenAddress: \"0x...\", wrapperAddress: \"0x...\" });\n * unshield.mutate({ amount: 500n });\n * ```\n */\nexport function useUnshield(\n config: UseZamaConfig,\n options?: UseMutationOptions<TransactionResult, Error, UnshieldParams, Address>,\n) {\n const token = useToken(config);\n\n return useMutation<TransactionResult, Error, UnshieldParams, Address>({\n ...unshieldMutationOptions(token),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n invalidateAfterUnshield(context.client, config.tokenAddress);\n },\n });\n}\n","\"use client\";\n\nimport type { UseMutationOptions } from \"@tanstack/react-query\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport type { Address, TransactionResult } from \"@zama-fhe/sdk\";\nimport {\n invalidateAfterUnshield,\n type UnshieldAllParams,\n unshieldAllMutationOptions,\n} from \"@zama-fhe/sdk/query\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\n/**\n * Unshield the entire balance and finalize in one call.\n * Orchestrates: unwrapAll → wait for receipt → parse event → finalize.\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link SigningRejectedError} — user rejected the wallet prompt\n * - {@link DecryptionFailedError} — public decryption failed during finalize\n * - {@link TransactionRevertedError} — on-chain transaction reverted\n *\n * @param config - Token and wrapper addresses.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const unshieldAll = useUnshieldAll({ tokenAddress: \"0x...\", wrapperAddress: \"0x...\" });\n * unshieldAll.mutate();\n * ```\n */\nexport function useUnshieldAll(\n config: UseZamaConfig,\n options?: UseMutationOptions<TransactionResult, Error, UnshieldAllParams | void, Address>,\n) {\n const token = useToken(config);\n\n return useMutation<TransactionResult, Error, UnshieldAllParams | void, Address>({\n ...unshieldAllMutationOptions(token),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n invalidateAfterUnshield(context.client, config.tokenAddress);\n },\n });\n}\n","\"use client\";\n\nimport type { UseMutationOptions } from \"@tanstack/react-query\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport type { Address, TransactionResult } from \"@zama-fhe/sdk\";\nimport {\n invalidateAfterUnshield,\n type ResumeUnshieldParams,\n resumeUnshieldMutationOptions,\n} from \"@zama-fhe/sdk/query\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\n/**\n * Resume an interrupted unshield from an existing unwrap tx hash.\n * Useful when the user submitted the unwrap but the finalize step was\n * interrupted (e.g. page reload, network error).\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link DecryptionFailedError} — public decryption failed during finalize\n * - {@link TransactionRevertedError} — on-chain transaction reverted\n *\n * @param config - Token and wrapper addresses.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const resumeUnshield = useResumeUnshield({ tokenAddress: \"0x...\", wrapperAddress: \"0x...\" });\n * resumeUnshield.mutate({ unwrapTxHash: \"0xabc...\" });\n * ```\n */\nexport function useResumeUnshield(\n config: UseZamaConfig,\n options?: UseMutationOptions<TransactionResult, Error, ResumeUnshieldParams, Address>,\n) {\n const token = useToken(config);\n\n return useMutation<TransactionResult, Error, ResumeUnshieldParams, Address>({\n ...resumeUnshieldMutationOptions(token),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n invalidateAfterUnshield(context.client, config.tokenAddress);\n },\n });\n}\n","\"use client\";\n\nimport { useQuery, useSuspenseQuery } from \"../utils/query\";\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { signerAddressQueryOptions, underlyingAllowanceQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\nexport { underlyingAllowanceQueryOptions };\n\n/** Configuration for {@link useUnderlyingAllowance}. */\nexport interface UseUnderlyingAllowanceConfig {\n /** Address of the confidential token contract used to scope the query cache. */\n tokenAddress: Address;\n /** Address of the wrapper contract whose underlying ERC-20 allowance is checked. */\n wrapperAddress: Address;\n}\n\n/**\n * Read the underlying ERC-20 allowance granted to the wrapper contract.\n * Useful to check if an approval is needed before shielding.\n *\n * @param config - Token and wrapper addresses.\n * @param options - React Query options (forwarded to `useQuery`).\n * @returns Query result with `data: bigint` (current allowance).\n *\n * @example\n * ```tsx\n * const { data: allowance } = useUnderlyingAllowance({\n * tokenAddress: \"0xConfidentialToken\",\n * wrapperAddress: \"0xWrapper\",\n * });\n * ```\n */\nexport function useUnderlyingAllowance(\n config: UseUnderlyingAllowanceConfig,\n options?: Omit<UseQueryOptions<bigint>, \"queryKey\" | \"queryFn\">,\n) {\n const { tokenAddress, wrapperAddress } = config;\n const sdk = useZamaSDK();\n const addressQuery = useQuery<Address>(signerAddressQueryOptions(sdk.signer));\n const owner = addressQuery.data;\n\n const baseOpts = underlyingAllowanceQueryOptions(sdk.signer, tokenAddress, {\n owner,\n wrapperAddress,\n });\n\n return useQuery<bigint>({\n ...baseOpts,\n ...options,\n enabled: (baseOpts.enabled ?? true) && (options?.enabled ?? true),\n });\n}\n\n/**\n * Suspense variant of {@link useUnderlyingAllowance}.\n * Suspends rendering until the allowance is loaded.\n *\n * @param config - Token and wrapper addresses.\n * @returns Suspense query result with `data: bigint`.\n *\n * @example\n * ```tsx\n * const { data: allowance } = useUnderlyingAllowanceSuspense({\n * tokenAddress: \"0xConfidentialToken\",\n * wrapperAddress: \"0xWrapper\",\n * });\n * ```\n */\nexport function useUnderlyingAllowanceSuspense(config: UseUnderlyingAllowanceConfig) {\n const { tokenAddress, wrapperAddress } = config;\n const sdk = useZamaSDK();\n const addressQuery = useSuspenseQuery<Address>(signerAddressQueryOptions(sdk.signer));\n const owner = addressQuery.data;\n\n return useSuspenseQuery<bigint>(\n underlyingAllowanceQueryOptions(sdk.signer, tokenAddress, {\n owner,\n wrapperAddress,\n }),\n );\n}\n","\"use client\";\n\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { zamaQueryKeys } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useQuery } from \"../utils/query\";\n\n/**\n * Resolves the wrappers registry address for the current chain.\n * Uses the merged registry addresses from `sdk.registry` (built-in defaults\n * plus any `registryAddresses` overrides passed to `ZamaSDKConfig`).\n *\n * Returns `undefined` when the chain ID hasn't been fetched yet\n * or when no registry is configured for the connected chain.\n *\n * The chain ID is cached for 30 seconds (`staleTime`), so chain\n * switches may take up to 30s to reflect.\n */\nexport function useWrappersRegistryAddress(): Address | undefined {\n const sdk = useZamaSDK();\n\n const { data: chainId } = useQuery<number>({\n queryKey: zamaQueryKeys.wrappersRegistry.chainId(),\n queryFn: () => sdk.signer.getChainId(),\n staleTime: 30_000,\n });\n\n return chainId !== undefined ? sdk.registry.getAddress(chainId) : undefined;\n}\n","\"use client\";\n\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { wrapperDiscoveryQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useQuery, useSuspenseQuery } from \"../utils/query\";\nimport { useWrappersRegistryAddress } from \"../wrappers-registry/use-wrappers-registry-address\";\n\nexport { wrapperDiscoveryQueryOptions };\n\n/** Configuration for {@link useWrapperDiscovery}. */\nexport interface UseWrapperDiscoveryConfig {\n /**\n * Address of any confidential token you control.\n * Used only to derive the signer context and to scope the query cache key —\n * it does not affect which wrapper the registry returns.\n */\n tokenAddress: Address;\n /** ERC-20 address to discover the wrapper for. Pass `undefined` to disable the query. */\n erc20Address: Address | undefined;\n}\n\n/** Configuration for {@link useWrapperDiscoverySuspense}. */\nexport interface UseWrapperDiscoverySuspenseConfig {\n /**\n * Address of any confidential token you control.\n * Used only to derive the signer context and to scope the query cache key —\n * it does not affect which wrapper the registry returns.\n */\n tokenAddress: Address;\n /** ERC-20 address to discover the wrapper for. */\n erc20Address: Address;\n}\n\n/**\n * Discover the confidential wrapper for an ERC-20 token via the on-chain registry.\n * Returns the wrapper address if one exists, or `null` if not.\n * Cached indefinitely since wrapper mappings are immutable.\n *\n * @param config - Token and ERC-20 addresses.\n * @param options - React Query options (forwarded to `useQuery`).\n * @returns Query result with `data: Address | null`.\n *\n * @example\n * ```tsx\n * const { data: wrapperAddress } = useWrapperDiscovery({\n * tokenAddress: \"0xConfidentialToken\",\n * erc20Address: \"0xUSDC\",\n * });\n * ```\n */\nexport function useWrapperDiscovery(\n config: UseWrapperDiscoveryConfig,\n options?: Omit<UseQueryOptions<Address | null>, \"queryKey\" | \"queryFn\">,\n) {\n const { tokenAddress, erc20Address } = config;\n const sdk = useZamaSDK();\n const registryAddress = useWrappersRegistryAddress();\n\n const baseOpts = wrapperDiscoveryQueryOptions(sdk.registry, {\n tokenAddress,\n erc20Address,\n registryAddress,\n });\n\n return useQuery<Address | null>({\n ...baseOpts,\n ...options,\n enabled: (baseOpts.enabled ?? true) && (options?.enabled ?? true),\n });\n}\n\n/**\n * Suspense variant of {@link useWrapperDiscovery}.\n * Suspends rendering until the wrapper address is resolved.\n *\n * @param config - Token and ERC-20 addresses.\n * @returns Suspense query result with `data: Address | null`.\n *\n * @example\n * ```tsx\n * const { data: wrapperAddress } = useWrapperDiscoverySuspense({\n * tokenAddress: \"0xConfidentialToken\",\n * erc20Address: \"0xUSDC\",\n * });\n * ```\n */\nexport function useWrapperDiscoverySuspense(config: UseWrapperDiscoverySuspenseConfig) {\n const { tokenAddress, erc20Address } = config;\n const sdk = useZamaSDK();\n const registryAddress = useWrappersRegistryAddress();\n\n return useSuspenseQuery<Address | null>(\n wrapperDiscoveryQueryOptions(sdk.registry, {\n tokenAddress,\n erc20Address,\n registryAddress,\n }),\n );\n}\n","\"use client\";\n\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { tokenMetadataQueryOptions, type TokenMetadata } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useQuery, useSuspenseQuery } from \"../utils/query\";\n\n/**\n * Read ERC-20 token metadata (name, symbol, decimals).\n * Fetches all three in parallel. Cached indefinitely since metadata is immutable.\n *\n * @param tokenAddress - Address of the token contract.\n * @param options - React Query options (forwarded to `useQuery`).\n * @returns Query result with `data: TokenMetadata`.\n *\n * @example\n * ```tsx\n * const { data: metadata } = useMetadata(\"0xToken\");\n * // metadata?.name, metadata?.symbol, metadata?.decimals\n * ```\n */\nexport function useMetadata(\n tokenAddress: Address,\n options?: Omit<UseQueryOptions<TokenMetadata>, \"queryKey\" | \"queryFn\">,\n) {\n const sdk = useZamaSDK();\n return useQuery<TokenMetadata>({\n ...tokenMetadataQueryOptions(sdk.signer, tokenAddress),\n ...options,\n });\n}\n\n/**\n * Suspense variant of {@link useMetadata}.\n * Suspends rendering until metadata is loaded.\n *\n * @param tokenAddress - Address of the token contract.\n * @returns Suspense query result with `data: TokenMetadata`.\n *\n * @example\n * ```tsx\n * const { data: metadata } = useMetadataSuspense(\"0xToken\");\n * ```\n */\nexport function useMetadataSuspense(tokenAddress: Address) {\n const sdk = useZamaSDK();\n return useSuspenseQuery<TokenMetadata>(tokenMetadataQueryOptions(sdk.signer, tokenAddress));\n}\n","\"use client\";\n\nimport { useMutation, type UseMutationOptions } from \"@tanstack/react-query\";\nimport type { TransactionResult } from \"@zama-fhe/sdk\";\nimport {\n delegateDecryptionMutationOptions,\n zamaQueryKeys,\n type DelegateDecryptionParams,\n} from \"@zama-fhe/sdk/query\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\n/**\n * Delegate FHE decryption rights for a token to another address via the on-chain ACL.\n *\n * @param config - Token address identifying the confidential token.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const delegate = useDelegateDecryption({ tokenAddress: \"0x...\" });\n * delegate.mutate({ delegateAddress: \"0xDelegate\" });\n * ```\n */\nexport function useDelegateDecryption(\n config: UseZamaConfig,\n options?: UseMutationOptions<TransactionResult, Error, DelegateDecryptionParams>,\n) {\n const token = useToken(config);\n\n return useMutation<TransactionResult, Error, DelegateDecryptionParams>({\n ...delegateDecryptionMutationOptions(token),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n try {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n } finally {\n void context.client.invalidateQueries({ queryKey: zamaQueryKeys.delegationStatus.all });\n }\n },\n });\n}\n","\"use client\";\n\nimport { useMutation, type UseMutationOptions } from \"@tanstack/react-query\";\nimport type { TransactionResult } from \"@zama-fhe/sdk\";\nimport {\n revokeDelegationMutationOptions,\n zamaQueryKeys,\n type RevokeDelegationParams,\n} from \"@zama-fhe/sdk/query\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\n/**\n * Revoke FHE decryption delegation for a token from a delegate address.\n *\n * @param config - Token address identifying the confidential token.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const revoke = useRevokeDelegation({ tokenAddress: \"0x...\" });\n * revoke.mutate({ delegateAddress: \"0xDelegate\" });\n * ```\n */\nexport function useRevokeDelegation(\n config: UseZamaConfig,\n options?: UseMutationOptions<TransactionResult, Error, RevokeDelegationParams>,\n) {\n const token = useToken(config);\n\n return useMutation<TransactionResult, Error, RevokeDelegationParams>({\n ...revokeDelegationMutationOptions(token),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n try {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n } finally {\n void context.client.invalidateQueries({ queryKey: zamaQueryKeys.delegationStatus.all });\n }\n },\n });\n}\n","\"use client\";\n\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { delegationStatusQueryOptions, type DelegationStatusData } from \"@zama-fhe/sdk/query\";\nimport { useQuery } from \"../utils/query\";\nimport { useZamaSDK } from \"../provider\";\n\nexport interface UseDelegationStatusConfig {\n /** Address of the confidential token contract. Pass `undefined` to disable the query. */\n tokenAddress: Address | undefined;\n /** The address that granted the delegation. */\n delegatorAddress?: Address;\n /** The address that received delegation rights. */\n delegateAddress?: Address;\n}\n\n/**\n * Query delegation status between a delegator and delegate for a token.\n *\n * @param config - Token address, delegator, and delegate addresses.\n * @param options - React Query options (forwarded to `useQuery`).\n * @returns `{ isDelegated, expiryTimestamp, isLoading, error }`.\n *\n * @example\n * ```tsx\n * const { data } = useDelegationStatus({\n * tokenAddress: \"0xToken\",\n * delegatorAddress: \"0xDelegator\",\n * delegateAddress: \"0xDelegate\",\n * });\n * // data?.isDelegated, data?.expiryTimestamp\n * ```\n */\nexport function useDelegationStatus(\n config: UseDelegationStatusConfig,\n options?: Omit<UseQueryOptions<DelegationStatusData>, \"queryKey\" | \"queryFn\">,\n) {\n const sdk = useZamaSDK();\n const baseOpts = delegationStatusQueryOptions(sdk, config);\n\n return useQuery<DelegationStatusData>({\n ...baseOpts,\n ...options,\n enabled: (baseOpts.enabled ?? true) && (options?.enabled ?? true),\n });\n}\n","\"use client\";\n\nimport { useMutation, type UseMutationOptions } from \"@tanstack/react-query\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { decryptBalanceAsMutationOptions, type DecryptBalanceAsParams } from \"@zama-fhe/sdk/query\";\nimport { useReadonlyToken } from \"../token/use-readonly-token\";\n\n/**\n * Decrypt another user's confidential balance as a delegate.\n *\n * @param tokenAddress - Address of the confidential token contract.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const decryptAs = useDecryptBalanceAs(\"0xToken\");\n * decryptAs.mutate({ delegatorAddress: \"0xDelegator\" });\n * // decryptAs.data => 1000n\n * ```\n */\nexport function useDecryptBalanceAs(\n tokenAddress: Address,\n options?: UseMutationOptions<bigint, Error, DecryptBalanceAsParams>,\n) {\n const readonlyToken = useReadonlyToken(tokenAddress);\n\n return useMutation<bigint, Error, DecryptBalanceAsParams>({\n ...decryptBalanceAsMutationOptions(readonlyToken),\n ...options,\n });\n}\n","\"use client\";\n\nimport { useMutation, type UseMutationOptions } from \"@tanstack/react-query\";\nimport type { Address, ReadonlyToken } from \"@zama-fhe/sdk\";\nimport {\n batchDecryptBalancesAsMutationOptions,\n type BatchDecryptBalancesAsParams,\n} from \"@zama-fhe/sdk/query\";\n\n/**\n * Batch decrypt confidential balances as a delegate across multiple tokens.\n *\n * @param tokens - ReadonlyToken instances to decrypt balances for.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const batchDecryptAs = useBatchDecryptBalancesAs(tokens);\n * batchDecryptAs.mutate({\n * delegatorAddress: \"0xDelegator\",\n * });\n * // batchDecryptAs.data => Map { \"0xTokenA\" => 100n, \"0xTokenB\" => 200n }\n * ```\n */\nexport function useBatchDecryptBalancesAs(\n tokens: ReadonlyToken[],\n options?: UseMutationOptions<Map<Address, bigint>, Error, BatchDecryptBalancesAsParams>,\n) {\n return useMutation<Map<Address, bigint>, Error, BatchDecryptBalancesAsParams>({\n ...batchDecryptBalancesAsMutationOptions(tokens),\n ...options,\n });\n}\n","\"use client\";\n\nimport type { UseMutationOptions } from \"@tanstack/react-query\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport type { Address, TransactionResult } from \"@zama-fhe/sdk\";\nimport {\n approveUnderlyingMutationOptions,\n invalidateAfterApproveUnderlying,\n type ApproveUnderlyingParams,\n} from \"@zama-fhe/sdk/query\";\nimport { useToken, type UseZamaConfig } from \"../token/use-token\";\n\n/**\n * Approve the wrapper contract to spend the underlying ERC-20.\n * Defaults to max uint256. Resets to zero first if there's an existing\n * non-zero allowance (required by tokens like USDT).\n *\n * Errors are {@link ZamaError} subclasses — use `instanceof` to handle specific failures:\n * - {@link SigningRejectedError} — user rejected the wallet prompt\n * - {@link TransactionRevertedError} — approval transaction reverted\n *\n * @param config - Token and wrapper addresses.\n * @param options - React Query mutation options.\n *\n * @example\n * ```tsx\n * const approve = useApproveUnderlying({ tokenAddress: \"0x...\", wrapperAddress: \"0x...\" });\n * approve.mutate({}); // max approval\n * approve.mutate({ amount: 1000n }); // exact amount\n * ```\n */\nexport function useApproveUnderlying(\n config: UseZamaConfig,\n options?: UseMutationOptions<TransactionResult, Error, ApproveUnderlyingParams, Address>,\n) {\n const token = useToken(config);\n\n return useMutation<TransactionResult, Error, ApproveUnderlyingParams, Address>({\n ...approveUnderlyingMutationOptions(token),\n ...options,\n onSuccess: (data, variables, onMutateResult, context) => {\n options?.onSuccess?.(data, variables, onMutateResult, context);\n invalidateAfterApproveUnderlying(context.client, config.tokenAddress);\n },\n });\n}\n","\"use client\";\n\nimport { useQuery, useSuspenseQuery } from \"../utils/query\";\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { isConfidentialQueryOptions, isWrapperQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\nexport { isConfidentialQueryOptions, isWrapperQueryOptions };\n\n/**\n * Check if a token supports the ERC-7984 confidential interface via ERC-165.\n * Result is cached indefinitely since interface support does not change.\n *\n * @param tokenAddress - Address of the token contract to check.\n * @param options - React Query options (forwarded to `useQuery`).\n * @returns Query result with `data: boolean`.\n *\n * @example\n * ```tsx\n * const { data: isConfidential } = useIsConfidential(\"0xToken\");\n * ```\n */\nexport function useIsConfidential(\n tokenAddress: Address,\n options?: Omit<UseQueryOptions<boolean>, \"queryKey\" | \"queryFn\">,\n) {\n const sdk = useZamaSDK();\n\n return useQuery<boolean>({\n ...isConfidentialQueryOptions(sdk.signer, tokenAddress),\n ...options,\n });\n}\n\n/**\n * Suspense variant of {@link useIsConfidential}.\n * Suspends rendering until the ERC-165 check resolves.\n *\n * @param tokenAddress - Address of the token contract to check.\n * @returns Suspense query result with `data: boolean`.\n *\n * @example\n * ```tsx\n * const { data: isConfidential } = useIsConfidentialSuspense(\"0xToken\");\n * ```\n */\nexport function useIsConfidentialSuspense(tokenAddress: Address) {\n const sdk = useZamaSDK();\n\n return useSuspenseQuery<boolean>(isConfidentialQueryOptions(sdk.signer, tokenAddress));\n}\n\n/**\n * Check if a token supports the ERC-7984 wrapper interface via ERC-165.\n * Result is cached indefinitely since interface support does not change.\n *\n * @param tokenAddress - Address of the token contract to check.\n * @param options - React Query options (forwarded to `useQuery`).\n * @returns Query result with `data: boolean`.\n *\n * @example\n * ```tsx\n * const { data: isWrapper } = useIsWrapper(\"0xToken\");\n * ```\n */\nexport function useIsWrapper(\n tokenAddress: Address,\n options?: Omit<UseQueryOptions<boolean>, \"queryKey\" | \"queryFn\">,\n) {\n const sdk = useZamaSDK();\n\n return useQuery<boolean>({\n ...isWrapperQueryOptions(sdk.signer, tokenAddress),\n ...options,\n });\n}\n\n/**\n * Suspense variant of {@link useIsWrapper}.\n * Suspends rendering until the ERC-165 check resolves.\n *\n * @param tokenAddress - Address of the token contract to check.\n * @returns Suspense query result with `data: boolean`.\n *\n * @example\n * ```tsx\n * const { data: isWrapper } = useIsWrapperSuspense(\"0xToken\");\n * ```\n */\nexport function useIsWrapperSuspense(tokenAddress: Address) {\n const sdk = useZamaSDK();\n\n return useSuspenseQuery<boolean>(isWrapperQueryOptions(sdk.signer, tokenAddress));\n}\n","\"use client\";\n\nimport { useQuery, useSuspenseQuery } from \"../utils/query\";\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { totalSupplyQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\n\nexport { totalSupplyQueryOptions };\n\n/**\n * Read the total supply of a token.\n * Stale after 30 seconds to balance freshness and RPC cost.\n *\n * @param tokenAddress - Address of the token contract.\n * @param options - React Query options (forwarded to `useQuery`).\n * @returns Query result with `data: bigint`.\n *\n * @example\n * ```tsx\n * const { data: totalSupply } = useTotalSupply(\"0xToken\");\n * ```\n */\nexport function useTotalSupply(\n tokenAddress: Address,\n options?: Omit<UseQueryOptions<bigint>, \"queryKey\" | \"queryFn\">,\n) {\n const sdk = useZamaSDK();\n\n return useQuery<bigint>({\n ...totalSupplyQueryOptions(sdk.signer, tokenAddress),\n ...options,\n });\n}\n\n/**\n * Suspense variant of {@link useTotalSupply}.\n * Suspends rendering until the total supply is loaded.\n *\n * @param tokenAddress - Address of the token contract.\n * @returns Suspense query result with `data: bigint`.\n *\n * @example\n * ```tsx\n * const { data: totalSupply } = useTotalSupplySuspense(\"0xToken\");\n * ```\n */\nexport function useTotalSupplySuspense(tokenAddress: Address) {\n const sdk = useZamaSDK();\n\n return useSuspenseQuery<bigint>(totalSupplyQueryOptions(sdk.signer, tokenAddress));\n}\n","\"use client\";\n\nimport type { TokenWrapperPair } from \"@zama-fhe/sdk\";\nimport { tokenPairsQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useQuery } from \"../utils/query\";\nimport { useWrappersRegistryAddress } from \"./use-wrappers-registry-address\";\n\n/**\n * Fetches all token wrapper pairs from the ConfidentialTokenWrappersRegistry\n * contract on the current chain.\n */\nexport function useTokenPairsRegistry() {\n const sdk = useZamaSDK();\n const registryAddress = useWrappersRegistryAddress();\n\n return useQuery<readonly TokenWrapperPair[]>(\n tokenPairsQueryOptions(sdk.signer, {\n registryAddress,\n }),\n );\n}\n","\"use client\";\n\nimport { tokenPairsLengthQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useQuery } from \"../utils/query\";\nimport { useWrappersRegistryAddress } from \"./use-wrappers-registry-address\";\n\n/**\n * Returns the total number of token wrapper pairs in the registry.\n */\nexport function useTokenPairsLength() {\n const sdk = useZamaSDK();\n const registryAddress = useWrappersRegistryAddress();\n\n return useQuery<bigint>(\n tokenPairsLengthQueryOptions(sdk.signer, {\n registryAddress,\n }),\n );\n}\n","\"use client\";\n\nimport type { TokenWrapperPair } from \"@zama-fhe/sdk\";\nimport { tokenPairsSliceQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useQuery } from \"../utils/query\";\nimport { useWrappersRegistryAddress } from \"./use-wrappers-registry-address\";\n\n/**\n * Fetches a range of token wrapper pairs from the registry (paginated).\n *\n * @param fromIndex - Start index (inclusive). Pass `undefined` to disable.\n * @param toIndex - End index (exclusive). Pass `undefined` to disable.\n */\nexport function useTokenPairsSlice({\n fromIndex,\n toIndex,\n}: {\n fromIndex: bigint | undefined;\n toIndex: bigint | undefined;\n}) {\n const sdk = useZamaSDK();\n const registryAddress = useWrappersRegistryAddress();\n\n return useQuery<readonly TokenWrapperPair[]>(\n tokenPairsSliceQueryOptions(sdk.signer, {\n registryAddress,\n fromIndex,\n toIndex,\n }),\n );\n}\n","\"use client\";\n\nimport type { TokenWrapperPair } from \"@zama-fhe/sdk\";\nimport { tokenPairQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useQuery } from \"../utils/query\";\nimport { useWrappersRegistryAddress } from \"./use-wrappers-registry-address\";\n\n/**\n * Fetches a single token wrapper pair by index from the registry.\n *\n * @param index - Zero-based pair index. Pass `undefined` to disable.\n */\nexport function useTokenPair({ index }: { index: bigint | undefined }) {\n const sdk = useZamaSDK();\n const registryAddress = useWrappersRegistryAddress();\n\n return useQuery<TokenWrapperPair>(\n tokenPairQueryOptions(sdk.signer, {\n registryAddress,\n index,\n }),\n );\n}\n","\"use client\";\n\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { confidentialTokenAddressQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useQuery } from \"../utils/query\";\nimport { useWrappersRegistryAddress } from \"./use-wrappers-registry-address\";\n\n/**\n * Looks up the confidential token address for a given plain token address.\n */\nexport function useConfidentialTokenAddress({\n tokenAddress,\n}: {\n tokenAddress: Address | undefined;\n}) {\n const sdk = useZamaSDK();\n const registryAddress = useWrappersRegistryAddress();\n\n return useQuery<readonly [boolean, Address]>(\n confidentialTokenAddressQueryOptions(sdk.signer, {\n registryAddress,\n tokenAddress,\n }),\n );\n}\n","\"use client\";\n\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { tokenAddressQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useQuery } from \"../utils/query\";\nimport { useWrappersRegistryAddress } from \"./use-wrappers-registry-address\";\n\n/**\n * Looks up the plain token address for a given confidential token address.\n */\nexport function useTokenAddress({\n confidentialTokenAddress,\n}: {\n confidentialTokenAddress: Address | undefined;\n}) {\n const sdk = useZamaSDK();\n const registryAddress = useWrappersRegistryAddress();\n\n return useQuery<readonly [boolean, Address]>(\n tokenAddressQueryOptions(sdk.signer, {\n registryAddress,\n confidentialTokenAddress,\n }),\n );\n}\n","\"use client\";\n\nimport type { Address } from \"@zama-fhe/sdk\";\nimport { isConfidentialTokenValidQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useQuery } from \"../utils/query\";\nimport { useWrappersRegistryAddress } from \"./use-wrappers-registry-address\";\n\n/**\n * Checks whether a confidential token is registered and valid in the\n * on-chain wrappers registry.\n *\n * @param confidentialTokenAddress - The confidential token to check. Pass `undefined` to disable.\n */\nexport function useIsConfidentialTokenValid({\n confidentialTokenAddress,\n}: {\n confidentialTokenAddress: Address | undefined;\n}) {\n const sdk = useZamaSDK();\n const registryAddress = useWrappersRegistryAddress();\n\n return useQuery<boolean>(\n isConfidentialTokenValidQueryOptions(sdk.signer, {\n registryAddress,\n confidentialTokenAddress,\n }),\n );\n}\n","\"use client\";\n\nimport type {\n TokenWrapperPair,\n TokenWrapperPairWithMetadata,\n PaginatedResult,\n} from \"@zama-fhe/sdk\";\nimport { listPairsQueryOptions } from \"@zama-fhe/sdk/query\";\nimport { useZamaSDK } from \"../provider\";\nimport { useQuery } from \"../utils/query\";\nimport { useWrappersRegistryAddress } from \"./use-wrappers-registry-address\";\n\n/**\n * Fetches paginated token wrapper pairs from the registry.\n *\n * @param options - Query options: `page` (1-indexed, default `1`), `pageSize` (default `100`), `metadata` (fetch on-chain metadata for both tokens, default `false`).\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useListPairs({ page: 1, pageSize: 20 });\n * if (data) {\n * console.log(`${data.total} pairs, showing page ${data.page}`);\n * }\n * ```\n */\nexport function useListPairs({\n page = 1,\n pageSize = 100,\n metadata = false,\n}: {\n page?: number;\n pageSize?: number;\n metadata?: boolean;\n} = {}) {\n const sdk = useZamaSDK();\n const registryAddress = useWrappersRegistryAddress();\n\n // Pass sdk.registry (a lazy singleton) so the class-level TTL cache is shared\n // across all queryFn executions — rather than constructing a new instance each time.\n return useQuery<PaginatedResult<TokenWrapperPair | TokenWrapperPairWithMetadata>>(\n listPairsQueryOptions(sdk.registry, {\n registryAddress,\n page,\n pageSize,\n metadata,\n }),\n );\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zama-fhe/react-sdk",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.9",
|
|
4
4
|
"description": "React hooks for Zama SDK",
|
|
5
5
|
"license": "BSD-3-Clause-Clear",
|
|
6
6
|
"author": "Zama",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
},
|
|
65
65
|
"peerDependencies": {
|
|
66
66
|
"@tanstack/react-query": ">=5",
|
|
67
|
-
"@zama-fhe/sdk": "^3.0.0-alpha.
|
|
67
|
+
"@zama-fhe/sdk": "^3.0.0-alpha.9",
|
|
68
68
|
"react": ">=18",
|
|
69
69
|
"viem": "^2.47.0",
|
|
70
70
|
"wagmi": ">=2"
|