@zama-fhe/sdk 3.0.0-alpha.16 → 3.0.0-alpha.17
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/cjs/query/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../relayer.cjs`),t=require(`../readonly-token.cjs`),n=require(`../wrappers-registry.cjs`);let r=require(`viem`);function i(e){if(!a(e))return!1;let t=e.constructor;if(t===void 0)return!0;let n=t.prototype;return!(!a(n)||!n.hasOwnProperty(`isPrototypeOf`))}function a(e){return Object.prototype.toString.call(e)===`[object Object]`}function o(e){let{gcTime:t,staleTime:n,enabled:r,select:i,refetchInterval:a,refetchOnMount:o,refetchOnWindowFocus:s,refetchOnReconnect:c,retry:l,retryDelay:u,retryOnMount:d,queryFn:f,queryKey:p,queryKeyHashFn:m,initialData:h,initialDataUpdatedAt:g,placeholderData:ee,structuralSharing:_,throwOnError:v,meta:y,query:b,pollingInterval:x,...S}=e;return S}function s(e){return JSON.stringify(e,(e,t)=>i(t)?Object.keys(t).toSorted().reduce((e,n)=>(e[n]=t[n],e),{}):typeof t==`bigint`?t.toString():t)}const c=e=>e.map(e=>(0,r.getAddress)(e)),l=e=>e===void 0?void 0:(0,r.getAddress)(e),u={signerAddress:{all:[`zama.signerAddress`],scope:e=>[`zama.signerAddress`,{scope:e}]},confidentialBalance:{all:[`zama.confidentialBalance`],token:e=>[`zama.confidentialBalance`,{tokenAddress:(0,r.getAddress)(e)}],owner:(e,t)=>[`zama.confidentialBalance`,{tokenAddress:(0,r.getAddress)(e),...t?{owner:(0,r.getAddress)(t)}:{}}]},confidentialBalances:{all:[`zama.confidentialBalances`],tokens:(e,t)=>[`zama.confidentialBalances`,{tokenAddresses:c(e),...t?{owner:(0,r.getAddress)(t)}:{}}]},tokenMetadata:{all:[`zama.tokenMetadata`],token:e=>[`zama.tokenMetadata`,{tokenAddress:(0,r.getAddress)(e)}]},isConfidential:{all:[`zama.isConfidential`],token:e=>[`zama.isConfidential`,{tokenAddress:(0,r.getAddress)(e)}]},isWrapper:{all:[`zama.isWrapper`],token:e=>[`zama.isWrapper`,{tokenAddress:(0,r.getAddress)(e)}]},wrapperDiscovery:{all:[`zama.wrapperDiscovery`],token:(e,t,n)=>{let r=l(e),i=l(t),a=l(n);return[`zama.wrapperDiscovery`,{...r?{tokenAddress:r}:{},...i?{erc20Address:i}:{},...a?{registryAddress:a}:{}}]}},underlyingAllowance:{all:[`zama.underlyingAllowance`],token:e=>[`zama.underlyingAllowance`,{tokenAddress:(0,r.getAddress)(e)}],scope:(e,t,n)=>[`zama.underlyingAllowance`,{tokenAddress:(0,r.getAddress)(e),...t?{owner:(0,r.getAddress)(t)}:{},...n?{wrapperAddress:(0,r.getAddress)(n)}:{}}]},confidentialIsApproved:{all:[`zama.confidentialIsApproved`],token:e=>{let t=l(e);return[`zama.confidentialIsApproved`,t?{tokenAddress:t}:{}]},scope:(e,t,n)=>{let r=l(e),i=l(t),a=l(n);return[`zama.confidentialIsApproved`,{...r?{tokenAddress:r}:{},...i?{holder:i}:{},...a?{spender:a}:{}}]}},totalSupply:{all:[`zama.totalSupply`],token:e=>[`zama.totalSupply`,{tokenAddress:(0,r.getAddress)(e)}]},isAllowed:{all:[`zama.isAllowed`],scope:(e,t)=>[`zama.isAllowed`,{account:(0,r.getAddress)(e),contractAddresses:c(t).toSorted()}]},publicKey:{all:[`zama.publicKey`]},publicParams:{all:[`zama.publicParams`],bits:e=>[`zama.publicParams`,{bits:e}]},delegationStatus:{all:[`zama.delegationStatus`],token:e=>{let t=l(e);return[`zama.delegationStatus`,t?{tokenAddress:t}:{}]},scope:(e,t,n)=>{let r=l(e),i=l(t),a=l(n);return[`zama.delegationStatus`,{...r?{tokenAddress:r}:{},...i?{delegatorAddress:i}:{},...a?{delegateAddress:a}:{}}]}},decryption:{all:[`zama.decryption`],handle:(e,t)=>[`zama.decryption`,{handle:e,...t===void 0?{}:{contractAddress:(0,r.getAddress)(t)}}],handles:e=>[`zama.decryption`,{handles:[...e].toSorted((e,t)=>e.handle.localeCompare(t.handle)).map(e=>({handle:e.handle,contractAddress:(0,r.getAddress)(e.contractAddress)}))}]},wrappersRegistry:{all:[`zama.wrappersRegistry`],chainId:()=>[`zama.wrappersRegistry`,{type:`chainId`}],tokenPairs:e=>[`zama.wrappersRegistry`,{type:`tokenPairs`,registryAddress:(0,r.getAddress)(e)}],confidentialTokenAddress:(e,t)=>[`zama.wrappersRegistry`,{type:`confidentialTokenAddress`,registryAddress:(0,r.getAddress)(e),tokenAddress:(0,r.getAddress)(t)}],tokenAddress:(e,t)=>[`zama.wrappersRegistry`,{type:`tokenAddress`,registryAddress:(0,r.getAddress)(e),confidentialTokenAddress:(0,r.getAddress)(t)}],tokenPairsLength:e=>[`zama.wrappersRegistry`,{type:`tokenPairsLength`,registryAddress:(0,r.getAddress)(e)}],tokenPairsSlice:(e,t,n)=>[`zama.wrappersRegistry`,{type:`tokenPairsSlice`,registryAddress:(0,r.getAddress)(e),fromIndex:t,toIndex:n}],tokenPair:(e,t)=>[`zama.wrappersRegistry`,{type:`tokenPair`,registryAddress:(0,r.getAddress)(e),index:t}],isConfidentialTokenValid:(e,t)=>[`zama.wrappersRegistry`,{type:`isConfidentialTokenValid`,registryAddress:(0,r.getAddress)(e),confidentialTokenAddress:(0,r.getAddress)(t)}],listPairs:(e,t,n,i)=>[`zama.wrappersRegistry`,{type:`listPairs`,registryAddress:(0,r.getAddress)(e),page:t,pageSize:n,metadata:i}]}};function d(e,t){e.invalidateQueries({queryKey:u.underlyingAllowance.token(t)})}function f(e,t){p(e,t),d(e,t),b(e)}function p(e,t){e.invalidateQueries({queryKey:u.confidentialBalance.token(t)}),e.invalidateQueries({queryKey:u.confidentialBalances.all})}function m(e,t){p(e,t),d(e,t),b(e)}function h(e,t){p(e,t),d(e,t),b(e)}function g(e,t){p(e,t)}function ee(e,t){d(e,t)}function _(e,t){e.invalidateQueries({queryKey:u.confidentialIsApproved.token(t)})}function v(e){return Array.isArray(e.queryKey)&&typeof e.queryKey[0]==`string`?e.queryKey[0].startsWith(`zama.`):!1}function y(e){return Array.isArray(e.queryKey)&&e.queryKey.some(e=>typeof e!=`object`||!e||!(`functionName`in e)?!1:e.functionName===`balanceOf`)}function b(e){e.invalidateQueries({predicate:y})}function x(e){e.removeQueries({queryKey:u.signerAddress.all}),e.removeQueries({queryKey:u.decryption.all}),e.invalidateQueries({predicate:v}),b(e)}const S=new WeakMap;let C=1;function w(e){let t=S.get(e);if(t!==void 0)return t;let n=C++;return S.set(e,n),n}function T(e){return{queryKey:u.signerAddress.scope(w(e)),queryFn:async()=>e.getAddress(),staleTime:3e4}}function E(e,n,r){let i=u.tokenMetadata.token(n);return{...o(r?.query??{}),queryKey:i,queryFn:async n=>{let[,{tokenAddress:r}]=n.queryKey,[i,a,o]=await Promise.all([e.provider.readContract(t.m(r)),e.provider.readContract(t.h(r)),e.provider.readContract(t.f(r))]);return{name:i,symbol:a,decimals:o}},staleTime:1/0,enabled:r?.query?.enabled!==!1}}function D(e,r,i){let a=u.isConfidential.token(r);return{...o(i?.query??{}),queryKey:a,queryFn:async r=>{let[,{tokenAddress:i}]=r.queryKey;try{return await e.provider.readContract(n.d(i))}catch(e){if(t.v(e))return!1;throw e}},staleTime:1/0,enabled:i?.query?.enabled!==!1}}function O(e,r,i){let a=u.isWrapper.token(r);return{...o(i?.query??{}),queryKey:a,queryFn:async r=>{let[,{tokenAddress:i}]=r.queryKey;try{let[t,r]=await Promise.all([e.provider.readContract(n.f(i)),e.provider.readContract(n.p(i,n.l))]);return t||r}catch(e){if(t.v(e))return!1;throw e}},staleTime:1/0,enabled:i?.query?.enabled!==!1}}async function k(e,r,i){try{return await e.readContract(n.p(r,i))}catch(e){if(t.v(e))return!1;throw e}}async function A(t,n){if(await k(t,n,`0x1f1c62b2`))return`upgraded`;if(await k(t,n,`0xd04584ba`))return`legacy`;throw new e.t(`Contract ${n} does not support a known ERC7984 wrapper interface`)}function j(e,t,r){let i=u.totalSupply.token(t);return{...o(r?.query??{}),queryKey:i,queryFn:async t=>{let[,{tokenAddress:r}]=t.queryKey;return await A(e.provider,r)===`upgraded`?e.provider.readContract(n.h(r)):e.provider.readContract(n.T(r))},staleTime:3e4,enabled:r?.query?.enabled!==!1}}function M(e,n){let r=u.wrapperDiscovery.token(n.tokenAddress,n.erc20Address,n.registryAddress);return{...o(n.query??{}),queryKey:r,queryFn:async n=>{let[,{erc20Address:r}]=n.queryKey;t.w(r,`wrapperDiscoveryQueryOptions: erc20Address`);let i=await e.getConfidentialToken(r);return i?i.confidentialTokenAddress:null},staleTime:1/0,enabled:!!(n.tokenAddress&&n.erc20Address&&n.registryAddress)&&n.query?.enabled!==!1}}function N(e,r,i){let a=i.owner,s=i.wrapperAddress,c=i.query?.enabled!==!1,l=u.underlyingAllowance.scope(r,a,s);return{...o(i.query??{}),queryKey:l,queryFn:async r=>{let[,{owner:i,wrapperAddress:a}]=r.queryKey;t.w(i,`underlyingAllowanceQueryOptions: owner`),t.w(a,`underlyingAllowanceQueryOptions: wrapperAddress`);let o=await e.provider.readContract(n.g(a));return e.provider.readContract(t.l(o,i,a))},staleTime:3e4,enabled:!!(a&&s)&&c}}function P(e,r,i){let a=i.holder,s=i.spender,c=i.query?.enabled!==!1,l=u.confidentialIsApproved.scope(r,a,s);return{...o(i.query??{}),queryKey:l,queryFn:async r=>{let[,{tokenAddress:i,holder:a,spender:o}]=r.queryKey;return t.w(i,`confidentialIsApprovedQueryOptions: tokenAddress`),t.w(a,`confidentialIsApprovedQueryOptions: holder`),t.w(o,`confidentialIsApprovedQueryOptions: spender`),e.provider.readContract(n.S(i,a,o))},staleTime:3e4,enabled:!!(r&&a&&s)&&c}}function F(e,t){let n=u.publicKey.all;return{...o(t?.query??{}),queryKey:n,queryFn:async()=>e.relayer.getPublicKey(),staleTime:1/0,enabled:t?.query?.enabled!==!1}}function I(e,t,n){let r=u.publicParams.bits(t);return{...o(n?.query??{}),queryKey:r,queryFn:async t=>{let[,{bits:n}]=t.queryKey;return e.relayer.getPublicParams(n)},staleTime:1/0,enabled:n?.query?.enabled!==!1}}function L(e,t){let n=t.query??{};return{...o(n),queryKey:u.confidentialBalance.owner(t.tokenAddress,t.owner),queryFn:async t=>{let[,{owner:n}]=t.queryKey;return e.balanceOf(n)},enabled:n?.enabled!==!1}}function R(e,n){let r=n?.owner,i=n?.query??{},a=e.map(e=>e.address);return{...o(i),queryKey:u.confidentialBalances.tokens(a,r),queryFn:async n=>{let[,{owner:r}]=n.queryKey;return t.t.batchBalancesOf(e,r)},enabled:e.length>0&&i?.enabled!==!1}}const z=86400*1e3;function B(e,t){let i=!!t.registryAddress&&t.query?.enabled!==!1,a=u.wrappersRegistry.tokenPairs(t.registryAddress??r.zeroAddress);return{...o(t.query??{}),queryKey:a,queryFn:async t=>{let[,{registryAddress:r}]=t.queryKey;return e.provider.readContract(n.i(r))},staleTime:z,enabled:i}}function V(e,t){let i=!!t.registryAddress&&!!t.tokenAddress&&t.query?.enabled!==!1,a=u.wrappersRegistry.confidentialTokenAddress(t.registryAddress??r.zeroAddress,t.tokenAddress??r.zeroAddress);return{...o(t.query??{}),queryKey:a,queryFn:async t=>{let[,{registryAddress:r,tokenAddress:i}]=t.queryKey;return e.provider.readContract(n.t(r,i))},staleTime:z,enabled:i}}function H(e,t){let i=!!t.registryAddress&&!!t.confidentialTokenAddress&&t.query?.enabled!==!1,a=u.wrappersRegistry.tokenAddress(t.registryAddress??r.zeroAddress,t.confidentialTokenAddress??r.zeroAddress);return{...o(t.query??{}),queryKey:a,queryFn:async t=>{let[,{registryAddress:r,confidentialTokenAddress:i}]=t.queryKey;return e.provider.readContract(n.n(r,i))},staleTime:z,enabled:i}}function U(e,t){let i=!!t.registryAddress&&t.query?.enabled!==!1,a=u.wrappersRegistry.tokenPairsLength(t.registryAddress??r.zeroAddress);return{...o(t.query??{}),queryKey:a,queryFn:async t=>{let[,{registryAddress:r}]=t.queryKey;return e.provider.readContract(n.a(r))},staleTime:z,enabled:i}}function W(e,t){let i=!!t.registryAddress&&t.fromIndex!==void 0&&t.toIndex!==void 0&&t.query?.enabled!==!1,a=u.wrappersRegistry.tokenPairsSlice(t.registryAddress??r.zeroAddress,String(t.fromIndex??0n),String(t.toIndex??0n));return{...o(t.query??{}),queryKey:a,queryFn:async t=>{let[,{registryAddress:r,fromIndex:i,toIndex:a}]=t.queryKey;return e.provider.readContract(n.o(r,BigInt(i),BigInt(a)))},staleTime:z,enabled:i}}function te(e,t){let i=!!t.registryAddress&&t.index!==void 0&&t.query?.enabled!==!1,a=u.wrappersRegistry.tokenPair(t.registryAddress??r.zeroAddress,String(t.index??0n));return{...o(t.query??{}),queryKey:a,queryFn:async t=>{let[,{registryAddress:r,index:i}]=t.queryKey;return e.provider.readContract(n.r(r,BigInt(i)))},staleTime:z,enabled:i}}function G(e,t){let i=!!t.registryAddress&&!!t.confidentialTokenAddress&&t.query?.enabled!==!1,a=u.wrappersRegistry.isConfidentialTokenValid(t.registryAddress??r.zeroAddress,t.confidentialTokenAddress??r.zeroAddress);return{...o(t.query??{}),queryKey:a,queryFn:async t=>{let[,{registryAddress:r,confidentialTokenAddress:i}]=t.queryKey;return e.provider.readContract(n.s(r,i))},staleTime:z,enabled:i}}function K(e,t){let n=!!t.registryAddress&&t.query?.enabled!==!1,i=u.wrappersRegistry.listPairs(t.registryAddress??r.zeroAddress,t.page??1,t.pageSize??100,t.metadata??!1);return{...o(t.query??{}),queryKey:i,queryFn:async t=>{let[,{page:n,pageSize:r,metadata:i}]=t.queryKey;return e.listPairs({page:n,pageSize:r,metadata:i})},staleTime:e.ttlMs,enabled:n}}function q(e){return{mutationKey:[`zama.shield`,e.address],mutationFn:async({amount:t,...n})=>e.shield(t,n)}}function J(e){return{mutationKey:[`zama.confidentialTransfer`,e.address],mutationFn:async({to:t,amount:n,...r})=>e.confidentialTransfer(t,n,r)}}function Y(e){return{mutationKey:[`zama.confidentialTransferFrom`,e.address],mutationFn:async({from:t,to:n,amount:r,callbacks:i})=>e.confidentialTransferFrom(t,n,r,i)}}function X(e){return{mutationKey:[`zama.confidentialApprove`,e.address],mutationFn:async({spender:t,until:n})=>e.approve(t,n)}}function Z(e){return{mutationKey:[`zama.approveUnderlying`,e.address],mutationFn:async({amount:t})=>e.approveUnderlying(t)}}function Q(e){return{mutationKey:[`zama.unshield`,e.address],mutationFn:async({amount:t,...n})=>e.unshield(t,n)}}function ne(e){return{mutationKey:[`zama.unshieldAll`,e.address],mutationFn:async t=>e.unshieldAll(t||void 0)}}function re(e){return{mutationKey:[`zama.resumeUnshield`,e.address],mutationFn:async({unwrapTxHash:t,...n})=>e.resumeUnshield(t,n)}}function ie(e){return{mutationKey:[`zama.unwrap`,e.address],mutationFn:async({amount:t})=>e.unwrap(t)}}function ae(e){return{mutationKey:[`zama.unwrapAll`,e.address],mutationFn:async()=>e.unwrapAll()}}function oe(t){return{mutationKey:[`zama.finalizeUnwrap`,t.address],mutationFn:async n=>{let r=n.unwrapRequestId??n.burnAmountHandle;if(!r)throw new e.t(`finalizeUnwrap requires unwrapRequestId or burnAmountHandle`);return t.finalizeUnwrap(r)}}}function se(e){return{mutationKey:[`zama.encrypt`],mutationFn:async t=>e.relayer.encrypt(t)}}function ce(e){return{mutationKey:[`zama.generateKeypair`],mutationFn:async()=>e.relayer.generateKeypair()}}function le(e){return{mutationKey:[`zama.createEIP712`],mutationFn:async({publicKey:t,contractAddresses:n,startTimestamp:r,durationDays:i})=>e.relayer.createEIP712(t,n,r,i)}}function ue(e){return{mutationKey:[`zama.createDelegatedUserDecryptEIP712`],mutationFn:async({publicKey:t,contractAddresses:n,delegatorAddress:r,startTimestamp:i,durationDays:a})=>e.relayer.createDelegatedUserDecryptEIP712(t,n,r,i,a)}}function de(e){return{mutationKey:[`zama.delegatedUserDecrypt`],mutationFn:async t=>e.relayer.delegatedUserDecrypt(t)}}function fe(e){return{mutationKey:[`zama.publicDecrypt`],mutationFn:async t=>e.publicDecrypt(t),onSuccess:(e,t,n,r)=>{for(let[t,n]of Object.entries(e.clearValues))r.client.setQueryData(u.decryption.handle(t),n)}}}function pe(e){return{mutationKey:[`zama.requestZKProofVerification`],mutationFn:async t=>e.relayer.requestZKProofVerification(t)}}function $(e){return{mutationKey:[`zama.allow`],mutationFn:t=>e.allow(t)}}function me(e,t){return{...o(t?.query??{}),queryKey:u.isAllowed.scope(t.account,t.contractAddresses),queryFn:t=>{let[,{contractAddresses:n}]=t.queryKey;return e.credentials.isAllowed(n)},staleTime:3e4,enabled:t.query?.enabled!==!1}}function he(e){return{mutationKey:[`zama.revoke`],mutationFn:t=>e.credentials.revoke(...t)}}function ge(e){return{mutationKey:[`zama.revokeSession`],mutationFn:()=>e.revokeSession()}}function _e(e){return{mutationKey:[`zama.delegateDecryption`,e.address],mutationFn:async({delegateAddress:t,expirationDate:n})=>e.delegateDecryption({delegateAddress:t,expirationDate:n})}}function ve(e,t){return{queryKey:u.decryption.handles(t.handles),queryFn:t=>{let[,{handles:n}]=t.queryKey;return e.userDecrypt(n)},staleTime:1/0,enabled:t.handles.length>0}}function ye(e){return{mutationKey:[`zama.decryptBalanceAs`,e.address],mutationFn:async({delegatorAddress:t,accountAddress:n})=>e.decryptBalanceAs({delegatorAddress:t,accountAddress:n})}}function be(e){return{mutationKey:[`zama.batchDecryptBalancesAs`,...e.map(e=>e.address)],mutationFn:async n=>t.t.batchDecryptBalancesAs(e,n)}}function xe(e){return{mutationKey:[`zama.revokeDelegation`,e.address],mutationFn:async({delegateAddress:t})=>e.revokeDelegation({delegateAddress:t})}}function Se(e,n){return{...o(n.query??{}),queryKey:u.delegationStatus.scope(n.tokenAddress,n.delegatorAddress,n.delegateAddress),queryFn:async n=>{let[,{tokenAddress:r,delegatorAddress:i,delegateAddress:a}]=n.queryKey;t.w(r,`delegationStatusQueryOptions: tokenAddress`),t.w(i,`delegationStatusQueryOptions: delegatorAddress`),t.w(a,`delegationStatusQueryOptions: delegateAddress`);let o=await e.relayer.getAclAddress(),s=await e.provider.readContract(t.o(o,i,a,r)),c;return c=s===0n?!1:s===t.i?!0:s>await e.provider.getBlockTimestamp(),{isDelegated:c,expiryTimestamp:s}},enabled:!!(n.tokenAddress&&n.delegatorAddress&&n.delegateAddress)&&n.query?.enabled!==!1}}exports.ZamaSDKEvents=t.r,exports.allowMutationOptions=$,exports.approveUnderlyingMutationOptions=Z,exports.batchDecryptBalancesAsMutationOptions=be,exports.confidentialApproveMutationOptions=X,exports.confidentialBalanceQueryOptions=L,exports.confidentialBalancesQueryOptions=R,exports.confidentialIsApprovedQueryOptions=P,exports.confidentialTokenAddressQueryOptions=V,exports.confidentialTransferFromMutationOptions=Y,exports.confidentialTransferMutationOptions=J,exports.createDelegatedUserDecryptEIP712MutationOptions=ue,exports.createEIP712MutationOptions=le,exports.decryptBalanceAsMutationOptions=ye,exports.delegateDecryptionMutationOptions=_e,exports.delegatedUserDecryptMutationOptions=de,exports.delegationStatusQueryOptions=Se,exports.encryptMutationOptions=se,exports.filterQueryOptions=o,exports.finalizeUnwrapMutationOptions=oe,exports.generateKeypairMutationOptions=ce,exports.hashFn=s,exports.invalidateAfterApprove=_,exports.invalidateAfterApproveUnderlying=ee,exports.invalidateAfterShield=m,exports.invalidateAfterTransfer=g,exports.invalidateAfterUnshield=h,exports.invalidateAfterUnwrap=f,exports.invalidateBalanceQueries=p,exports.invalidateWagmiBalanceQueries=b,exports.invalidateWalletLifecycleQueries=x,exports.isAllowedQueryOptions=me,exports.isConfidentialQueryOptions=D,exports.isConfidentialTokenValidQueryOptions=G,exports.isWrapperQueryOptions=O,exports.listPairsQueryOptions=K,exports.publicDecryptMutationOptions=fe,exports.publicKeyQueryOptions=F,exports.publicParamsQueryOptions=I,exports.requestZKProofVerificationMutationOptions=pe,exports.resumeUnshieldMutationOptions=re,exports.revokeDelegationMutationOptions=xe,exports.revokeMutationOptions=he,exports.revokeSessionMutationOptions=ge,exports.shieldMutationOptions=q,exports.signerAddressQueryOptions=T,exports.tokenAddressQueryOptions=H,exports.tokenMetadataQueryOptions=E,exports.tokenPairQueryOptions=te,exports.tokenPairsLengthQueryOptions=U,exports.tokenPairsQueryOptions=B,exports.tokenPairsSliceQueryOptions=W,exports.totalSupplyQueryOptions=j,exports.underlyingAllowanceQueryOptions=N,exports.unshieldAllMutationOptions=ne,exports.unshieldMutationOptions=Q,exports.unwrapAllMutationOptions=ae,exports.unwrapMutationOptions=ie,exports.userDecryptQueryOptions=ve,exports.wrapperDiscoveryQueryOptions=M,exports.zamaQueryKeys=u;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../relayer.cjs`),t=require(`../readonly-token.cjs`),n=require(`../wrappers-registry.cjs`);let r=require(`viem`);function i(e){if(!a(e))return!1;let t=e.constructor;if(t===void 0)return!0;let n=t.prototype;return!(!a(n)||!n.hasOwnProperty(`isPrototypeOf`))}function a(e){return Object.prototype.toString.call(e)===`[object Object]`}function o(e){let{gcTime:t,staleTime:n,enabled:r,select:i,refetchInterval:a,refetchOnMount:o,refetchOnWindowFocus:s,refetchOnReconnect:c,retry:l,retryDelay:u,retryOnMount:d,queryFn:f,queryKey:p,queryKeyHashFn:m,initialData:h,initialDataUpdatedAt:g,placeholderData:ee,structuralSharing:_,throwOnError:v,meta:y,query:b,pollingInterval:x,...S}=e;return S}function s(e){return JSON.stringify(e,(e,t)=>i(t)?Object.keys(t).toSorted().reduce((e,n)=>(e[n]=t[n],e),{}):typeof t==`bigint`?t.toString():t)}const c=e=>e.map(e=>(0,r.getAddress)(e)),l=e=>e===void 0?void 0:(0,r.getAddress)(e),u={signerAddress:{all:[`zama.signerAddress`],scope:e=>[`zama.signerAddress`,{scope:e}]},confidentialBalance:{all:[`zama.confidentialBalance`],token:e=>[`zama.confidentialBalance`,{tokenAddress:(0,r.getAddress)(e)}],owner:(e,t)=>[`zama.confidentialBalance`,{tokenAddress:(0,r.getAddress)(e),...t?{owner:(0,r.getAddress)(t)}:{}}]},confidentialBalances:{all:[`zama.confidentialBalances`],tokens:(e,t)=>[`zama.confidentialBalances`,{tokenAddresses:c(e),...t?{owner:(0,r.getAddress)(t)}:{}}]},tokenMetadata:{all:[`zama.tokenMetadata`],token:e=>[`zama.tokenMetadata`,{tokenAddress:(0,r.getAddress)(e)}]},isConfidential:{all:[`zama.isConfidential`],token:e=>[`zama.isConfidential`,{tokenAddress:(0,r.getAddress)(e)}]},isWrapper:{all:[`zama.isWrapper`],token:e=>[`zama.isWrapper`,{tokenAddress:(0,r.getAddress)(e)}]},wrapperDiscovery:{all:[`zama.wrapperDiscovery`],token:(e,t,n)=>{let r=l(e),i=l(t),a=l(n);return[`zama.wrapperDiscovery`,{...r?{tokenAddress:r}:{},...i?{erc20Address:i}:{},...a?{registryAddress:a}:{}}]}},underlyingAllowance:{all:[`zama.underlyingAllowance`],token:e=>[`zama.underlyingAllowance`,{tokenAddress:(0,r.getAddress)(e)}],scope:(e,t,n)=>[`zama.underlyingAllowance`,{tokenAddress:(0,r.getAddress)(e),...t?{owner:(0,r.getAddress)(t)}:{},...n?{wrapperAddress:(0,r.getAddress)(n)}:{}}]},confidentialIsApproved:{all:[`zama.confidentialIsApproved`],token:e=>{let t=l(e);return[`zama.confidentialIsApproved`,t?{tokenAddress:t}:{}]},scope:(e,t,n)=>{let r=l(e),i=l(t),a=l(n);return[`zama.confidentialIsApproved`,{...r?{tokenAddress:r}:{},...i?{holder:i}:{},...a?{spender:a}:{}}]}},totalSupply:{all:[`zama.totalSupply`],token:e=>[`zama.totalSupply`,{tokenAddress:(0,r.getAddress)(e)}]},isAllowed:{all:[`zama.isAllowed`],scope:(e,t)=>[`zama.isAllowed`,{account:(0,r.getAddress)(e),contractAddresses:c(t).toSorted()}]},publicKey:{all:[`zama.publicKey`]},publicParams:{all:[`zama.publicParams`],bits:e=>[`zama.publicParams`,{bits:e}]},delegationStatus:{all:[`zama.delegationStatus`],token:e=>{let t=l(e);return[`zama.delegationStatus`,t?{tokenAddress:t}:{}]},scope:(e,t,n)=>{let r=l(e),i=l(t),a=l(n);return[`zama.delegationStatus`,{...r?{tokenAddress:r}:{},...i?{delegatorAddress:i}:{},...a?{delegateAddress:a}:{}}]}},decryption:{all:[`zama.decryption`],handle:(e,t)=>[`zama.decryption`,{handle:e,...t===void 0?{}:{contractAddress:(0,r.getAddress)(t)}}],handles:e=>[`zama.decryption`,{handles:[...e].toSorted((e,t)=>e.handle.localeCompare(t.handle)).map(e=>({handle:e.handle,contractAddress:(0,r.getAddress)(e.contractAddress)}))}]},wrappersRegistry:{all:[`zama.wrappersRegistry`],chainId:()=>[`zama.wrappersRegistry`,{type:`chainId`}],tokenPairs:e=>[`zama.wrappersRegistry`,{type:`tokenPairs`,registryAddress:(0,r.getAddress)(e)}],confidentialTokenAddress:(e,t)=>[`zama.wrappersRegistry`,{type:`confidentialTokenAddress`,registryAddress:(0,r.getAddress)(e),tokenAddress:(0,r.getAddress)(t)}],tokenAddress:(e,t)=>[`zama.wrappersRegistry`,{type:`tokenAddress`,registryAddress:(0,r.getAddress)(e),confidentialTokenAddress:(0,r.getAddress)(t)}],tokenPairsLength:e=>[`zama.wrappersRegistry`,{type:`tokenPairsLength`,registryAddress:(0,r.getAddress)(e)}],tokenPairsSlice:(e,t,n)=>[`zama.wrappersRegistry`,{type:`tokenPairsSlice`,registryAddress:(0,r.getAddress)(e),fromIndex:t,toIndex:n}],tokenPair:(e,t)=>[`zama.wrappersRegistry`,{type:`tokenPair`,registryAddress:(0,r.getAddress)(e),index:t}],isConfidentialTokenValid:(e,t)=>[`zama.wrappersRegistry`,{type:`isConfidentialTokenValid`,registryAddress:(0,r.getAddress)(e),confidentialTokenAddress:(0,r.getAddress)(t)}],listPairs:(e,t,n,i)=>[`zama.wrappersRegistry`,{type:`listPairs`,registryAddress:(0,r.getAddress)(e),page:t,pageSize:n,metadata:i}]}};function d(e,t){e.invalidateQueries({queryKey:u.underlyingAllowance.token(t)})}function f(e,t){p(e,t),d(e,t),b(e)}function p(e,t){e.invalidateQueries({queryKey:u.confidentialBalance.token(t)}),e.invalidateQueries({queryKey:u.confidentialBalances.all})}function m(e,t){p(e,t),d(e,t),b(e)}function h(e,t){p(e,t),d(e,t),b(e)}function g(e,t){p(e,t)}function ee(e,t){d(e,t)}function _(e,t){e.invalidateQueries({queryKey:u.confidentialIsApproved.token(t)})}function v(e){return Array.isArray(e.queryKey)&&typeof e.queryKey[0]==`string`?e.queryKey[0].startsWith(`zama.`):!1}function y(e){return Array.isArray(e.queryKey)&&e.queryKey.some(e=>typeof e!=`object`||!e||!(`functionName`in e)?!1:e.functionName===`balanceOf`)}function b(e){e.invalidateQueries({predicate:y})}function x(e){e.removeQueries({queryKey:u.signerAddress.all}),e.removeQueries({queryKey:u.decryption.all}),e.invalidateQueries({predicate:v}),b(e)}const S=new WeakMap;let C=1;function w(e){let t=S.get(e);if(t!==void 0)return t;let n=C++;return S.set(e,n),n}function T(e){return{queryKey:u.signerAddress.scope(w(e)),queryFn:async()=>e.getAddress(),staleTime:3e4}}function E(e,n,r){let i=u.tokenMetadata.token(n);return{...o(r?.query??{}),queryKey:i,queryFn:async n=>{let[,{tokenAddress:r}]=n.queryKey,[i,a,o]=await Promise.all([e.provider.readContract(t.m(r)),e.provider.readContract(t.h(r)),e.provider.readContract(t.f(r))]);return{name:i,symbol:a,decimals:o}},staleTime:1/0,enabled:r?.query?.enabled!==!1}}function D(e,r,i){let a=u.isConfidential.token(r);return{...o(i?.query??{}),queryKey:a,queryFn:async r=>{let[,{tokenAddress:i}]=r.queryKey;try{return await e.provider.readContract(n.d(i))}catch(e){if(t.v(e))return!1;throw e}},staleTime:1/0,enabled:i?.query?.enabled!==!1}}function O(e,r,i){let a=u.isWrapper.token(r);return{...o(i?.query??{}),queryKey:a,queryFn:async r=>{let[,{tokenAddress:i}]=r.queryKey;try{let[t,r]=await Promise.all([e.provider.readContract(n.f(i)),e.provider.readContract(n.p(i,n.l))]);return t||r}catch(e){if(t.v(e))return!1;throw e}},staleTime:1/0,enabled:i?.query?.enabled!==!1}}async function k(e,r,i){try{return await e.readContract(n.p(r,i))}catch(e){if(t.v(e))return!1;throw e}}async function A(t,n){if(await k(t,n,`0x1f1c62b2`))return`upgraded`;if(await k(t,n,`0xd04584ba`))return`legacy`;throw new e.t(`Contract ${n} does not support a known ERC7984 wrapper interface`)}function j(e,t,r){let i=u.totalSupply.token(t);return{...o(r?.query??{}),queryKey:i,queryFn:async t=>{let[,{tokenAddress:r}]=t.queryKey;return await A(e.provider,r)===`upgraded`?e.provider.readContract(n.h(r)):e.provider.readContract(n.T(r))},staleTime:3e4,enabled:r?.query?.enabled!==!1}}function M(e,n){let r=u.wrapperDiscovery.token(n.tokenAddress,n.erc20Address,n.registryAddress);return{...o(n.query??{}),queryKey:r,queryFn:async n=>{let[,{erc20Address:r}]=n.queryKey;t.w(r,`wrapperDiscoveryQueryOptions: erc20Address`);let i=await e.getConfidentialToken(r);return i?i.confidentialTokenAddress:null},staleTime:1/0,enabled:!!(n.tokenAddress&&n.erc20Address&&n.registryAddress)&&n.query?.enabled!==!1}}function N(e,r,i){let a=i.owner,s=i.wrapperAddress,c=i.query?.enabled!==!1,l=u.underlyingAllowance.scope(r,a,s);return{...o(i.query??{}),queryKey:l,queryFn:async r=>{let[,{owner:i,wrapperAddress:a}]=r.queryKey;t.w(i,`underlyingAllowanceQueryOptions: owner`),t.w(a,`underlyingAllowanceQueryOptions: wrapperAddress`);let o=await e.provider.readContract(n.g(a));return e.provider.readContract(t.l(o,i,a))},staleTime:3e4,enabled:!!(a&&s)&&c}}function P(e,r,i){let a=i.holder,s=i.spender,c=i.query?.enabled!==!1,l=u.confidentialIsApproved.scope(r,a,s);return{...o(i.query??{}),queryKey:l,queryFn:async r=>{let[,{tokenAddress:i,holder:a,spender:o}]=r.queryKey;return t.w(i,`confidentialIsApprovedQueryOptions: tokenAddress`),t.w(a,`confidentialIsApprovedQueryOptions: holder`),t.w(o,`confidentialIsApprovedQueryOptions: spender`),e.provider.readContract(n.S(i,a,o))},staleTime:3e4,enabled:!!(r&&a&&s)&&c}}function F(e,t){let n=u.publicKey.all;return{...o(t?.query??{}),queryKey:n,queryFn:async()=>e.relayer.getPublicKey(),staleTime:1/0,enabled:t?.query?.enabled!==!1}}function I(e,t,n){let r=u.publicParams.bits(t);return{...o(n?.query??{}),queryKey:r,queryFn:async t=>{let[,{bits:n}]=t.queryKey;return e.relayer.getPublicParams(n)},staleTime:1/0,enabled:n?.query?.enabled!==!1}}function L(e,t){let n=t.query??{};return{...o(n),queryKey:u.confidentialBalance.owner(t.tokenAddress,t.account),queryFn:async t=>{let[,{owner:n}]=t.queryKey;return e.balanceOf(n)},enabled:!!t.account&&n?.enabled!==!1}}function R(e,n){let r=n?.account,i=n?.query??{},a=e.map(e=>e.address);return{...o(i),queryKey:u.confidentialBalances.tokens(a,r),queryFn:async n=>{let[,{owner:r}]=n.queryKey;return t.t.batchBalancesOf(e,r)},enabled:!!r&&e.length>0&&i?.enabled!==!1}}const z=86400*1e3;function B(e,t){let i=!!t.registryAddress&&t.query?.enabled!==!1,a=u.wrappersRegistry.tokenPairs(t.registryAddress??r.zeroAddress);return{...o(t.query??{}),queryKey:a,queryFn:async t=>{let[,{registryAddress:r}]=t.queryKey;return e.provider.readContract(n.i(r))},staleTime:z,enabled:i}}function V(e,t){let i=!!t.registryAddress&&!!t.tokenAddress&&t.query?.enabled!==!1,a=u.wrappersRegistry.confidentialTokenAddress(t.registryAddress??r.zeroAddress,t.tokenAddress??r.zeroAddress);return{...o(t.query??{}),queryKey:a,queryFn:async t=>{let[,{registryAddress:r,tokenAddress:i}]=t.queryKey;return e.provider.readContract(n.t(r,i))},staleTime:z,enabled:i}}function H(e,t){let i=!!t.registryAddress&&!!t.confidentialTokenAddress&&t.query?.enabled!==!1,a=u.wrappersRegistry.tokenAddress(t.registryAddress??r.zeroAddress,t.confidentialTokenAddress??r.zeroAddress);return{...o(t.query??{}),queryKey:a,queryFn:async t=>{let[,{registryAddress:r,confidentialTokenAddress:i}]=t.queryKey;return e.provider.readContract(n.n(r,i))},staleTime:z,enabled:i}}function U(e,t){let i=!!t.registryAddress&&t.query?.enabled!==!1,a=u.wrappersRegistry.tokenPairsLength(t.registryAddress??r.zeroAddress);return{...o(t.query??{}),queryKey:a,queryFn:async t=>{let[,{registryAddress:r}]=t.queryKey;return e.provider.readContract(n.a(r))},staleTime:z,enabled:i}}function W(e,t){let i=!!t.registryAddress&&t.fromIndex!==void 0&&t.toIndex!==void 0&&t.query?.enabled!==!1,a=u.wrappersRegistry.tokenPairsSlice(t.registryAddress??r.zeroAddress,String(t.fromIndex??0n),String(t.toIndex??0n));return{...o(t.query??{}),queryKey:a,queryFn:async t=>{let[,{registryAddress:r,fromIndex:i,toIndex:a}]=t.queryKey;return e.provider.readContract(n.o(r,BigInt(i),BigInt(a)))},staleTime:z,enabled:i}}function te(e,t){let i=!!t.registryAddress&&t.index!==void 0&&t.query?.enabled!==!1,a=u.wrappersRegistry.tokenPair(t.registryAddress??r.zeroAddress,String(t.index??0n));return{...o(t.query??{}),queryKey:a,queryFn:async t=>{let[,{registryAddress:r,index:i}]=t.queryKey;return e.provider.readContract(n.r(r,BigInt(i)))},staleTime:z,enabled:i}}function G(e,t){let i=!!t.registryAddress&&!!t.confidentialTokenAddress&&t.query?.enabled!==!1,a=u.wrappersRegistry.isConfidentialTokenValid(t.registryAddress??r.zeroAddress,t.confidentialTokenAddress??r.zeroAddress);return{...o(t.query??{}),queryKey:a,queryFn:async t=>{let[,{registryAddress:r,confidentialTokenAddress:i}]=t.queryKey;return e.provider.readContract(n.s(r,i))},staleTime:z,enabled:i}}function K(e,t){let n=!!t.registryAddress&&t.query?.enabled!==!1,i=u.wrappersRegistry.listPairs(t.registryAddress??r.zeroAddress,t.page??1,t.pageSize??100,t.metadata??!1);return{...o(t.query??{}),queryKey:i,queryFn:async t=>{let[,{page:n,pageSize:r,metadata:i}]=t.queryKey;return e.listPairs({page:n,pageSize:r,metadata:i})},staleTime:e.ttlMs,enabled:n}}function q(e){return{mutationKey:[`zama.shield`,e.address],mutationFn:async({amount:t,...n})=>e.shield(t,n)}}function J(e){return{mutationKey:[`zama.confidentialTransfer`,e.address],mutationFn:async({to:t,amount:n,...r})=>e.confidentialTransfer(t,n,r)}}function Y(e){return{mutationKey:[`zama.confidentialTransferFrom`,e.address],mutationFn:async({from:t,to:n,amount:r,callbacks:i})=>e.confidentialTransferFrom(t,n,r,i)}}function X(e){return{mutationKey:[`zama.confidentialApprove`,e.address],mutationFn:async({spender:t,until:n})=>e.approve(t,n)}}function Z(e){return{mutationKey:[`zama.approveUnderlying`,e.address],mutationFn:async({amount:t})=>e.approveUnderlying(t)}}function Q(e){return{mutationKey:[`zama.unshield`,e.address],mutationFn:async({amount:t,...n})=>e.unshield(t,n)}}function ne(e){return{mutationKey:[`zama.unshieldAll`,e.address],mutationFn:async t=>e.unshieldAll(t||void 0)}}function re(e){return{mutationKey:[`zama.resumeUnshield`,e.address],mutationFn:async({unwrapTxHash:t,...n})=>e.resumeUnshield(t,n)}}function ie(e){return{mutationKey:[`zama.unwrap`,e.address],mutationFn:async({amount:t})=>e.unwrap(t)}}function ae(e){return{mutationKey:[`zama.unwrapAll`,e.address],mutationFn:async()=>e.unwrapAll()}}function oe(t){return{mutationKey:[`zama.finalizeUnwrap`,t.address],mutationFn:async n=>{let r=n.unwrapRequestId??n.burnAmountHandle;if(!r)throw new e.t(`finalizeUnwrap requires unwrapRequestId or burnAmountHandle`);return t.finalizeUnwrap(r)}}}function se(e){return{mutationKey:[`zama.encrypt`],mutationFn:async t=>e.relayer.encrypt(t)}}function ce(e){return{mutationKey:[`zama.generateKeypair`],mutationFn:async()=>e.relayer.generateKeypair()}}function le(e){return{mutationKey:[`zama.createEIP712`],mutationFn:async({publicKey:t,contractAddresses:n,startTimestamp:r,durationDays:i})=>e.relayer.createEIP712(t,n,r,i)}}function ue(e){return{mutationKey:[`zama.createDelegatedUserDecryptEIP712`],mutationFn:async({publicKey:t,contractAddresses:n,delegatorAddress:r,startTimestamp:i,durationDays:a})=>e.relayer.createDelegatedUserDecryptEIP712(t,n,r,i,a)}}function de(e){return{mutationKey:[`zama.delegatedUserDecrypt`],mutationFn:async t=>e.relayer.delegatedUserDecrypt(t)}}function fe(e){return{mutationKey:[`zama.publicDecrypt`],mutationFn:async t=>e.publicDecrypt(t),onSuccess:(e,t,n,r)=>{for(let[t,n]of Object.entries(e.clearValues))r.client.setQueryData(u.decryption.handle(t),n)}}}function pe(e){return{mutationKey:[`zama.requestZKProofVerification`],mutationFn:async t=>e.relayer.requestZKProofVerification(t)}}function $(e){return{mutationKey:[`zama.allow`],mutationFn:t=>e.allow(t)}}function me(e,t){return{...o(t?.query??{}),queryKey:u.isAllowed.scope(t.account,t.contractAddresses),queryFn:t=>{let[,{contractAddresses:n}]=t.queryKey;return e.credentials.isAllowed(n)},staleTime:3e4,enabled:t.query?.enabled!==!1}}function he(e){return{mutationKey:[`zama.revoke`],mutationFn:t=>e.credentials.revoke(...t)}}function ge(e){return{mutationKey:[`zama.revokeSession`],mutationFn:()=>e.revokeSession()}}function _e(e){return{mutationKey:[`zama.delegateDecryption`,e.address],mutationFn:async({delegateAddress:t,expirationDate:n})=>e.delegateDecryption({delegateAddress:t,expirationDate:n})}}function ve(e,t){return{queryKey:u.decryption.handles(t.handles),queryFn:t=>{let[,{handles:n}]=t.queryKey;return e.userDecrypt(n)},staleTime:1/0,enabled:t.handles.length>0}}function ye(e){return{mutationKey:[`zama.decryptBalanceAs`,e.address],mutationFn:async({delegatorAddress:t,accountAddress:n})=>e.decryptBalanceAs({delegatorAddress:t,accountAddress:n})}}function be(e){return{mutationKey:[`zama.batchDecryptBalancesAs`,...e.map(e=>e.address)],mutationFn:async n=>t.t.batchDecryptBalancesAs(e,n)}}function xe(e){return{mutationKey:[`zama.revokeDelegation`,e.address],mutationFn:async({delegateAddress:t})=>e.revokeDelegation({delegateAddress:t})}}function Se(e,n){return{...o(n.query??{}),queryKey:u.delegationStatus.scope(n.tokenAddress,n.delegatorAddress,n.delegateAddress),queryFn:async n=>{let[,{tokenAddress:r,delegatorAddress:i,delegateAddress:a}]=n.queryKey;t.w(r,`delegationStatusQueryOptions: tokenAddress`),t.w(i,`delegationStatusQueryOptions: delegatorAddress`),t.w(a,`delegationStatusQueryOptions: delegateAddress`);let o=await e.relayer.getAclAddress(),s=await e.provider.readContract(t.o(o,i,a,r)),c;return c=s===0n?!1:s===t.i?!0:s>await e.provider.getBlockTimestamp(),{isDelegated:c,expiryTimestamp:s}},enabled:!!(n.tokenAddress&&n.delegatorAddress&&n.delegateAddress)&&n.query?.enabled!==!1}}exports.ZamaSDKEvents=t.r,exports.allowMutationOptions=$,exports.approveUnderlyingMutationOptions=Z,exports.batchDecryptBalancesAsMutationOptions=be,exports.confidentialApproveMutationOptions=X,exports.confidentialBalanceQueryOptions=L,exports.confidentialBalancesQueryOptions=R,exports.confidentialIsApprovedQueryOptions=P,exports.confidentialTokenAddressQueryOptions=V,exports.confidentialTransferFromMutationOptions=Y,exports.confidentialTransferMutationOptions=J,exports.createDelegatedUserDecryptEIP712MutationOptions=ue,exports.createEIP712MutationOptions=le,exports.decryptBalanceAsMutationOptions=ye,exports.delegateDecryptionMutationOptions=_e,exports.delegatedUserDecryptMutationOptions=de,exports.delegationStatusQueryOptions=Se,exports.encryptMutationOptions=se,exports.filterQueryOptions=o,exports.finalizeUnwrapMutationOptions=oe,exports.generateKeypairMutationOptions=ce,exports.hashFn=s,exports.invalidateAfterApprove=_,exports.invalidateAfterApproveUnderlying=ee,exports.invalidateAfterShield=m,exports.invalidateAfterTransfer=g,exports.invalidateAfterUnshield=h,exports.invalidateAfterUnwrap=f,exports.invalidateBalanceQueries=p,exports.invalidateWagmiBalanceQueries=b,exports.invalidateWalletLifecycleQueries=x,exports.isAllowedQueryOptions=me,exports.isConfidentialQueryOptions=D,exports.isConfidentialTokenValidQueryOptions=G,exports.isWrapperQueryOptions=O,exports.listPairsQueryOptions=K,exports.publicDecryptMutationOptions=fe,exports.publicKeyQueryOptions=F,exports.publicParamsQueryOptions=I,exports.requestZKProofVerificationMutationOptions=pe,exports.resumeUnshieldMutationOptions=re,exports.revokeDelegationMutationOptions=xe,exports.revokeMutationOptions=he,exports.revokeSessionMutationOptions=ge,exports.shieldMutationOptions=q,exports.signerAddressQueryOptions=T,exports.tokenAddressQueryOptions=H,exports.tokenMetadataQueryOptions=E,exports.tokenPairQueryOptions=te,exports.tokenPairsLengthQueryOptions=U,exports.tokenPairsQueryOptions=B,exports.tokenPairsSliceQueryOptions=W,exports.totalSupplyQueryOptions=j,exports.underlyingAllowanceQueryOptions=N,exports.unshieldAllMutationOptions=ne,exports.unshieldMutationOptions=Q,exports.unwrapAllMutationOptions=ae,exports.unwrapMutationOptions=ie,exports.userDecryptQueryOptions=ve,exports.wrapperDiscoveryQueryOptions=M,exports.zamaQueryKeys=u;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["nameContract","symbolContract","decimalsContract","isConfidentialTokenContract","isContractCallError","isConfidentialWrapperContract","supportsInterfaceContract","ERC7984_WRAPPER_INTERFACE_ID","supportsInterfaceContract","isContractCallError","ConfigurationError","inferredTotalSupplyContract","totalSupplyContract","underlyingContract","allowanceContract","isOperatorContract","ReadonlyToken","zeroAddress","getTokenPairsContract","getConfidentialTokenAddressContract","getTokenAddressContract","getTokenPairsLengthContract","getTokenPairsSliceContract","getTokenPairContract","isConfidentialTokenValidContract","ConfigurationError","ReadonlyToken","getDelegationExpiryContract","MAX_UINT64"],"sources":["../../../src/query/utils.ts","../../../src/query/query-keys.ts","../../../src/query/invalidation.ts","../../../src/query/signer-address.ts","../../../src/query/token-metadata.ts","../../../src/query/is-confidential.ts","../../../src/query/wrapper-interface-version.ts","../../../src/query/total-supply.ts","../../../src/query/wrapper-discovery.ts","../../../src/query/underlying-allowance.ts","../../../src/query/confidential-is-approved.ts","../../../src/query/public-key.ts","../../../src/query/public-params.ts","../../../src/query/confidential-balance.ts","../../../src/query/confidential-balances.ts","../../../src/query/wrappers-registry.ts","../../../src/query/shield.ts","../../../src/query/transfer.ts","../../../src/query/transfer-from.ts","../../../src/query/approve.ts","../../../src/query/approve-underlying.ts","../../../src/query/unshield.ts","../../../src/query/unshield-all.ts","../../../src/query/resume-unshield.ts","../../../src/query/unwrap.ts","../../../src/query/unwrap-all.ts","../../../src/query/finalize-unwrap.ts","../../../src/query/encrypt.ts","../../../src/query/generate-keypair.ts","../../../src/query/create-eip712.ts","../../../src/query/create-delegated-user-decrypt-eip712.ts","../../../src/query/delegated-user-decrypt.ts","../../../src/query/public-decrypt.ts","../../../src/query/request-zk-proof-verification.ts","../../../src/query/allow.ts","../../../src/query/is-allowed.ts","../../../src/query/revoke.ts","../../../src/query/revoke-session.ts","../../../src/query/delegate-decryption.ts","../../../src/query/user-decrypt.ts","../../../src/query/decrypt-balance-as.ts","../../../src/query/batch-decrypt-balances-as.ts","../../../src/query/revoke-delegation.ts","../../../src/query/delegation-status.ts"],"sourcesContent":["// Adapted from the wagmi codebase\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-wrapper-object-types\nfunction isPlainObject(value: any): value is Object {\n if (!hasObjectPrototype(value)) {\n return false;\n }\n\n // If has modified constructor\n const ctor = value.constructor;\n if (ctor === undefined) {\n return true;\n }\n\n // If has modified prototype\n const prot = ctor.prototype;\n if (!hasObjectPrototype(prot)) {\n return false;\n }\n\n // If constructor does not have an Object-specific method\n // biome-ignore lint/suspicious/noPrototypeBuiltins: using\n // eslint-disable-next-line no-prototype-builtins\n if (!prot.hasOwnProperty(\"isPrototypeOf\")) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction hasObjectPrototype(o: any): boolean {\n return Object.prototype.toString.call(o) === \"[object Object]\";\n}\n\nexport type StrippedQueryOptionKeys =\n // Keep this union aligned with @tanstack/query-core behavioral options\n // (for example QueryObserverOptions). Revisit on every upgrade to avoid\n // leaking query controls into lower-level query factories.\n | \"gcTime\"\n | \"staleTime\"\n | \"enabled\"\n | \"select\"\n | \"refetchInterval\"\n | \"refetchOnMount\"\n | \"refetchOnWindowFocus\"\n | \"refetchOnReconnect\"\n | \"retry\"\n | \"retryDelay\"\n | \"retryOnMount\"\n | \"queryFn\"\n | \"queryKey\"\n | \"queryKeyHashFn\"\n | \"initialData\"\n | \"initialDataUpdatedAt\"\n | \"placeholderData\"\n | \"structuralSharing\"\n | \"throwOnError\"\n | \"meta\"\n | \"query\"\n | \"pollingInterval\";\n\n/**\n * Remove TanStack behavioral options from a query config object so only domain\n * parameters remain for the lower-level factory.\n *\n * @example\n * ```ts\n * const params = filterQueryOptions({\n * query: { enabled: false },\n * gcTime: 60_000,\n * owner: \"0xabc\",\n * });\n * // => { owner: \"0xabc\" }\n * ```\n */\nexport function filterQueryOptions<TOptions extends Record<string, unknown>>(\n options: TOptions,\n): Omit<TOptions, StrippedQueryOptionKeys> {\n const {\n gcTime: _gcTime,\n staleTime: _staleTime,\n enabled: _enabled,\n select: _select,\n refetchInterval: _refetchInterval,\n refetchOnMount: _refetchOnMount,\n refetchOnWindowFocus: _refetchOnWindowFocus,\n refetchOnReconnect: _refetchOnReconnect,\n retry: _retry,\n retryDelay: _retryDelay,\n retryOnMount: _retryOnMount,\n queryFn: _queryFn,\n queryKey: _queryKey,\n queryKeyHashFn: _queryKeyHashFn,\n initialData: _initialData,\n initialDataUpdatedAt: _initialDataUpdatedAt,\n placeholderData: _placeholderData,\n structuralSharing: _structuralSharing,\n throwOnError: _throwOnError,\n meta: _meta,\n query: _query,\n pollingInterval: _pollingInterval,\n ...rest\n } = options;\n\n return rest;\n}\n\n/**\n * Stable hash function for query keys.\n * Sorts object keys recursively and converts bigint values to strings.\n *\n * @remarks\n * bigint values are serialized as decimal strings, so `42n` and `\"42\"` hash to\n * the same token when they occupy the same position. This collision is accepted\n * by design for the current query-key conventions in this package.\n */\nexport function hashFn(queryKey: readonly unknown[]): string {\n return JSON.stringify(queryKey, (_, value) => {\n if (isPlainObject(value)) {\n return Object.keys(value)\n .toSorted()\n .reduce(\n (result, key) => {\n result[key] = value[key];\n return result;\n },\n {} as Record<string, unknown>,\n );\n }\n\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n\n return value;\n });\n}\n","import { getAddress } from \"viem\";\nimport type { Address } from \"viem\";\n\nconst normalizeAddresses = (addresses: Address[]): Address[] =>\n addresses.map((address) => getAddress(address));\nconst normalizeAddress = (address?: Address): Address | undefined =>\n address === undefined ? undefined : getAddress(address);\n\n/**\n * Canonical query-key namespace for `@zama-fhe/sdk/query`.\n *\n * @example\n * ```ts\n * queryClient.invalidateQueries({\n * queryKey: zamaQueryKeys.confidentialBalance.token(\"0xToken\"),\n * });\n * ```\n */\nexport const zamaQueryKeys = {\n signerAddress: {\n all: [\"zama.signerAddress\"] as const,\n scope: (scope: number) => [\"zama.signerAddress\", { scope }] as const,\n },\n\n confidentialBalance: {\n all: [\"zama.confidentialBalance\"] as const,\n token: (tokenAddress: Address) =>\n [\"zama.confidentialBalance\", { tokenAddress: getAddress(tokenAddress) }] as const,\n owner: (tokenAddress: Address, owner?: Address) =>\n [\n \"zama.confidentialBalance\",\n {\n tokenAddress: getAddress(tokenAddress),\n ...(owner ? { owner: getAddress(owner) } : {}),\n },\n ] as const,\n },\n\n confidentialBalances: {\n all: [\"zama.confidentialBalances\"] as const,\n tokens: (tokenAddresses: Address[], owner?: Address) =>\n [\n \"zama.confidentialBalances\",\n {\n tokenAddresses: normalizeAddresses(tokenAddresses),\n ...(owner ? { owner: getAddress(owner) } : {}),\n },\n ] as const,\n },\n\n tokenMetadata: {\n all: [\"zama.tokenMetadata\"] as const,\n token: (tokenAddress: Address) =>\n [\"zama.tokenMetadata\", { tokenAddress: getAddress(tokenAddress) }] as const,\n },\n\n isConfidential: {\n all: [\"zama.isConfidential\"] as const,\n token: (tokenAddress: Address) =>\n [\"zama.isConfidential\", { tokenAddress: getAddress(tokenAddress) }] as const,\n },\n\n isWrapper: {\n all: [\"zama.isWrapper\"] as const,\n token: (tokenAddress: Address) =>\n [\"zama.isWrapper\", { tokenAddress: getAddress(tokenAddress) }] as const,\n },\n\n wrapperDiscovery: {\n all: [\"zama.wrapperDiscovery\"] as const,\n token: (tokenAddress?: Address, erc20Address?: Address, registryAddress?: Address) => {\n const t = normalizeAddress(tokenAddress);\n const e = normalizeAddress(erc20Address);\n const r = normalizeAddress(registryAddress);\n return [\n \"zama.wrapperDiscovery\",\n {\n ...(t ? { tokenAddress: t } : {}),\n ...(e ? { erc20Address: e } : {}),\n ...(r ? { registryAddress: r } : {}),\n },\n ] as const;\n },\n },\n\n underlyingAllowance: {\n all: [\"zama.underlyingAllowance\"] as const,\n token: (tokenAddress: Address) =>\n [\"zama.underlyingAllowance\", { tokenAddress: getAddress(tokenAddress) }] as const,\n scope: (tokenAddress: Address, owner?: Address, wrapperAddress?: Address) =>\n [\n \"zama.underlyingAllowance\",\n {\n tokenAddress: getAddress(tokenAddress),\n ...(owner ? { owner: getAddress(owner) } : {}),\n ...(wrapperAddress ? { wrapperAddress: getAddress(wrapperAddress) } : {}),\n },\n ] as const,\n },\n\n confidentialIsApproved: {\n all: [\"zama.confidentialIsApproved\"] as const,\n token: (tokenAddress?: Address) => {\n const t = normalizeAddress(tokenAddress);\n return [\"zama.confidentialIsApproved\", t ? { tokenAddress: t } : {}] as const;\n },\n scope: (tokenAddress?: Address, holder?: Address, spender?: Address) => {\n const t = normalizeAddress(tokenAddress);\n const h = normalizeAddress(holder);\n const s = normalizeAddress(spender);\n return [\n \"zama.confidentialIsApproved\",\n {\n ...(t ? { tokenAddress: t } : {}),\n ...(h ? { holder: h } : {}),\n ...(s ? { spender: s } : {}),\n },\n ] as const;\n },\n },\n\n totalSupply: {\n all: [\"zama.totalSupply\"] as const,\n token: (tokenAddress: Address) =>\n [\"zama.totalSupply\", { tokenAddress: getAddress(tokenAddress) }] as const,\n },\n\n isAllowed: {\n all: [\"zama.isAllowed\"] as const,\n scope: (account: Address, contractAddresses: Address[]) =>\n [\n \"zama.isAllowed\",\n {\n account: getAddress(account),\n contractAddresses: normalizeAddresses(contractAddresses).toSorted(),\n },\n ] as const,\n },\n\n publicKey: {\n all: [\"zama.publicKey\"] as const,\n },\n\n publicParams: {\n all: [\"zama.publicParams\"] as const,\n bits: (bits: number) => [\"zama.publicParams\", { bits }] as const,\n },\n\n delegationStatus: {\n all: [\"zama.delegationStatus\"] as const,\n token: (tokenAddress?: Address) => {\n const t = normalizeAddress(tokenAddress);\n return [\"zama.delegationStatus\", t ? { tokenAddress: t } : {}] as const;\n },\n scope: (tokenAddress?: Address, delegator?: Address, delegate?: Address) => {\n const t = normalizeAddress(tokenAddress);\n const dr = normalizeAddress(delegator);\n const de = normalizeAddress(delegate);\n return [\n \"zama.delegationStatus\",\n {\n ...(t ? { tokenAddress: t } : {}),\n ...(dr ? { delegatorAddress: dr } : {}),\n ...(de ? { delegateAddress: de } : {}),\n },\n ] as const;\n },\n },\n\n decryption: {\n all: [\"zama.decryption\"] as const,\n handle: (handle: string, contractAddress?: Address) =>\n [\n \"zama.decryption\",\n {\n handle,\n ...(contractAddress === undefined\n ? {}\n : { contractAddress: getAddress(contractAddress) }),\n },\n ] as const,\n handles: (handles: readonly { handle: string; contractAddress: Address }[]) =>\n [\n \"zama.decryption\",\n {\n handles: [...handles]\n .toSorted((a, b) => a.handle.localeCompare(b.handle))\n .map((h) => ({\n handle: h.handle,\n contractAddress: getAddress(h.contractAddress),\n })),\n },\n ] as const,\n },\n\n wrappersRegistry: {\n all: [\"zama.wrappersRegistry\"] as const,\n chainId: () => [\"zama.wrappersRegistry\", { type: \"chainId\" }] as const,\n tokenPairs: (registryAddress: Address) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"tokenPairs\",\n registryAddress: getAddress(registryAddress),\n },\n ] as const,\n confidentialTokenAddress: (registryAddress: Address, tokenAddress: Address) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"confidentialTokenAddress\",\n registryAddress: getAddress(registryAddress),\n tokenAddress: getAddress(tokenAddress),\n },\n ] as const,\n tokenAddress: (registryAddress: Address, confidentialTokenAddress: Address) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"tokenAddress\",\n registryAddress: getAddress(registryAddress),\n confidentialTokenAddress: getAddress(confidentialTokenAddress),\n },\n ] as const,\n tokenPairsLength: (registryAddress: Address) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"tokenPairsLength\",\n registryAddress: getAddress(registryAddress),\n },\n ] as const,\n tokenPairsSlice: (registryAddress: Address, fromIndex: string, toIndex: string) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"tokenPairsSlice\",\n registryAddress: getAddress(registryAddress),\n fromIndex,\n toIndex,\n },\n ] as const,\n tokenPair: (registryAddress: Address, index: string) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"tokenPair\",\n registryAddress: getAddress(registryAddress),\n index,\n },\n ] as const,\n isConfidentialTokenValid: (registryAddress: Address, confidentialTokenAddress: Address) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"isConfidentialTokenValid\",\n registryAddress: getAddress(registryAddress),\n confidentialTokenAddress: getAddress(confidentialTokenAddress),\n },\n ] as const,\n listPairs: (registryAddress: Address, page: number, pageSize: number, metadata: boolean) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"listPairs\",\n registryAddress: getAddress(registryAddress),\n page,\n pageSize,\n metadata,\n },\n ] as const,\n },\n} as const;\n","import type { Address } from \"viem\";\nimport { zamaQueryKeys } from \"./query-keys\";\n\nexport interface QueryLike {\n queryKey: readonly unknown[];\n}\n\nexport interface QueryFilterLike {\n queryKey?: readonly unknown[];\n predicate?: (query: QueryLike) => boolean;\n}\n\nexport interface QueryClientLike {\n invalidateQueries(filters: QueryFilterLike): void | Promise<void>;\n removeQueries(filters: QueryFilterLike): void;\n}\n\nfunction invalidateUnderlyingAllowanceQueries(\n queryClient: QueryClientLike,\n tokenAddress: Address,\n): void {\n void queryClient.invalidateQueries({\n queryKey: zamaQueryKeys.underlyingAllowance.token(tokenAddress),\n });\n}\n\nexport function invalidateAfterUnwrap(queryClient: QueryClientLike, tokenAddress: Address): void {\n invalidateBalanceQueries(queryClient, tokenAddress);\n invalidateUnderlyingAllowanceQueries(queryClient, tokenAddress);\n invalidateWagmiBalanceQueries(queryClient);\n}\n\nexport function invalidateBalanceQueries(\n queryClient: QueryClientLike,\n tokenAddress: Address,\n): void {\n void queryClient.invalidateQueries({\n queryKey: zamaQueryKeys.confidentialBalance.token(tokenAddress),\n });\n void queryClient.invalidateQueries({ queryKey: zamaQueryKeys.confidentialBalances.all });\n}\n\nexport function invalidateAfterShield(queryClient: QueryClientLike, tokenAddress: Address): void {\n invalidateBalanceQueries(queryClient, tokenAddress);\n invalidateUnderlyingAllowanceQueries(queryClient, tokenAddress);\n invalidateWagmiBalanceQueries(queryClient);\n}\n\nexport function invalidateAfterUnshield(queryClient: QueryClientLike, tokenAddress: Address): void {\n invalidateBalanceQueries(queryClient, tokenAddress);\n invalidateUnderlyingAllowanceQueries(queryClient, tokenAddress);\n invalidateWagmiBalanceQueries(queryClient);\n}\n\nexport function invalidateAfterTransfer(queryClient: QueryClientLike, tokenAddress: Address): void {\n invalidateBalanceQueries(queryClient, tokenAddress);\n}\n\nexport function invalidateAfterApproveUnderlying(\n queryClient: QueryClientLike,\n tokenAddress: Address,\n): void {\n invalidateUnderlyingAllowanceQueries(queryClient, tokenAddress);\n}\n\nexport function invalidateAfterApprove(queryClient: QueryClientLike, tokenAddress: Address): void {\n void queryClient.invalidateQueries({\n queryKey: zamaQueryKeys.confidentialIsApproved.token(tokenAddress),\n });\n}\n\nfunction isZamaQuery(query: QueryLike): boolean {\n return Array.isArray(query.queryKey) && typeof query.queryKey[0] === \"string\"\n ? query.queryKey[0].startsWith(\"zama.\")\n : false;\n}\n\nfunction isWagmiBalanceQuery(query: QueryLike): boolean {\n return (\n Array.isArray(query.queryKey) &&\n query.queryKey.some((part: unknown) => {\n if (typeof part !== \"object\" || part === null || !(\"functionName\" in part)) {\n return false;\n }\n return part.functionName === \"balanceOf\";\n })\n );\n}\n\nexport function invalidateWagmiBalanceQueries(queryClient: QueryClientLike): void {\n void queryClient.invalidateQueries({ predicate: isWagmiBalanceQuery });\n}\n\nexport function invalidateWalletLifecycleQueries(queryClient: QueryClientLike): void {\n queryClient.removeQueries({ queryKey: zamaQueryKeys.signerAddress.all });\n queryClient.removeQueries({ queryKey: zamaQueryKeys.decryption.all });\n void queryClient.invalidateQueries({ predicate: isZamaQuery });\n invalidateWagmiBalanceQueries(queryClient);\n}\n","import type { Address } from \"viem\";\nimport type { GenericSigner } from \"../types\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\n\nconst signerScopes = new WeakMap<GenericSigner, number>();\nlet nextSignerScope = 1;\n\nfunction getSignerScope(signer: GenericSigner): number {\n const existingScope = signerScopes.get(signer);\n if (existingScope !== undefined) {\n return existingScope;\n }\n const newScope = nextSignerScope++;\n signerScopes.set(signer, newScope);\n return newScope;\n}\n\nexport function signerAddressQueryOptions(\n signer: GenericSigner,\n): QueryFactoryOptions<\n Address,\n Error,\n Address,\n ReturnType<typeof zamaQueryKeys.signerAddress.scope>\n> {\n return {\n queryKey: zamaQueryKeys.signerAddress.scope(getSignerScope(signer)),\n queryFn: async () => signer.getAddress(),\n staleTime: 30_000,\n };\n}\n","import { decimalsContract, nameContract, symbolContract } from \"../contracts\";\n\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\nimport type { Address } from \"viem\";\n\n/** ERC-20 token metadata returned by {@link tokenMetadataQueryOptions}. */\nexport interface TokenMetadata {\n name: string;\n symbol: string;\n decimals: number;\n}\n\nexport interface TokenMetadataQueryConfig {\n query?: Record<string, unknown>;\n}\n\nexport function tokenMetadataQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config?: TokenMetadataQueryConfig,\n): QueryFactoryOptions<\n TokenMetadata,\n Error,\n TokenMetadata,\n ReturnType<typeof zamaQueryKeys.tokenMetadata.token>\n> {\n const queryKey = zamaQueryKeys.tokenMetadata.token(tokenAddress);\n\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress }] = context.queryKey;\n const [name, symbol, decimals] = await Promise.all([\n sdk.provider.readContract(nameContract(keyTokenAddress)),\n sdk.provider.readContract(symbolContract(keyTokenAddress)),\n sdk.provider.readContract(decimalsContract(keyTokenAddress)),\n ]);\n return { name, symbol, decimals };\n },\n staleTime: Infinity,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import {\n isConfidentialTokenContract,\n isConfidentialWrapperContract,\n supportsInterfaceContract,\n ERC7984_WRAPPER_INTERFACE_ID,\n} from \"../contracts\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport { isContractCallError } from \"../utils\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\nimport type { Address } from \"viem\";\n\nexport interface IsConfidentialQueryConfig {\n query?: Record<string, unknown>;\n}\n\nexport function isConfidentialQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config?: IsConfidentialQueryConfig,\n): QueryFactoryOptions<\n boolean,\n Error,\n boolean,\n ReturnType<typeof zamaQueryKeys.isConfidential.token>\n> {\n const queryKey = zamaQueryKeys.isConfidential.token(tokenAddress);\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress }] = context.queryKey;\n try {\n return await sdk.provider.readContract(isConfidentialTokenContract(keyTokenAddress));\n } catch (err) {\n // Only suppress contract execution reverts (non-ERC-165 contracts).\n // Re-throw network/transport errors so TanStack Query's retry logic applies.\n if (isContractCallError(err)) {\n return false;\n }\n throw err;\n }\n },\n staleTime: Infinity,\n enabled: config?.query?.enabled !== false,\n };\n}\n\nexport function isWrapperQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config?: IsConfidentialQueryConfig,\n): QueryFactoryOptions<boolean, Error, boolean, ReturnType<typeof zamaQueryKeys.isWrapper.token>> {\n const queryKey = zamaQueryKeys.isWrapper.token(tokenAddress);\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress }] = context.queryKey;\n try {\n // During the transition period, check both wrapper interface IDs in parallel.\n // Either returning true is sufficient to identify a confidential wrapper.\n const [legacyMatch, newMatch] = await Promise.all([\n sdk.provider.readContract(isConfidentialWrapperContract(keyTokenAddress)),\n sdk.provider.readContract(\n supportsInterfaceContract(keyTokenAddress, ERC7984_WRAPPER_INTERFACE_ID),\n ),\n ]);\n return legacyMatch || newMatch;\n } catch (err) {\n // Only suppress contract execution reverts (non-ERC-165 contracts).\n // Re-throw network/transport errors so TanStack Query's retry logic applies.\n if (isContractCallError(err)) {\n return false;\n }\n throw err;\n }\n },\n staleTime: Infinity,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import {\n ERC7984_WRAPPER_INTERFACE_ID,\n ERC7984_WRAPPER_INTERFACE_ID_LEGACY,\n supportsInterfaceContract,\n} from \"../contracts\";\nimport { ConfigurationError } from \"../errors\";\nimport type { GenericProvider } from \"../types\";\nimport { isContractCallError } from \"../utils\";\nimport type { Address } from \"viem\";\n\nexport type WrapperInterfaceVersion = \"legacy\" | \"upgraded\";\n\nasync function safeSupportsInterface(\n provider: GenericProvider,\n wrapperAddress: Address,\n interfaceId: Address,\n): Promise<boolean> {\n try {\n return await provider.readContract(supportsInterfaceContract(wrapperAddress, interfaceId));\n } catch (error) {\n if (isContractCallError(error)) {\n return false;\n }\n throw error;\n }\n}\n\nexport async function detectWrapperInterfaceVersion(\n provider: GenericProvider,\n wrapperAddress: Address,\n): Promise<WrapperInterfaceVersion> {\n // Probe the upgraded interface first: it is the target steady state and lets\n // post-upgrade wrappers avoid the legacy ERC-165 read on every refetch.\n const supportsUpgraded = await safeSupportsInterface(\n provider,\n wrapperAddress,\n ERC7984_WRAPPER_INTERFACE_ID,\n );\n if (supportsUpgraded) {\n return \"upgraded\";\n }\n\n const supportsLegacy = await safeSupportsInterface(\n provider,\n wrapperAddress,\n ERC7984_WRAPPER_INTERFACE_ID_LEGACY,\n );\n if (supportsLegacy) {\n return \"legacy\";\n }\n\n throw new ConfigurationError(\n `Contract ${wrapperAddress} does not support a known ERC7984 wrapper interface`,\n );\n}\n","import { inferredTotalSupplyContract, totalSupplyContract } from \"../contracts\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\nimport { detectWrapperInterfaceVersion } from \"./wrapper-interface-version\";\nimport type { Address } from \"viem\";\n\nexport interface TotalSupplyQueryConfig {\n query?: Record<string, unknown>;\n}\n\nexport function totalSupplyQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config?: TotalSupplyQueryConfig,\n): QueryFactoryOptions<bigint, Error, bigint, ReturnType<typeof zamaQueryKeys.totalSupply.token>> {\n const queryKey = zamaQueryKeys.totalSupply.token(tokenAddress);\n\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress }] = context.queryKey;\n // ERC-165 detection adds one or two RPC calls per refetch, which is acceptable\n // while both legacy and upgraded wrappers coexist. Remove this branch once\n // all supported wrappers expose `inferredTotalSupply()`.\n const version = await detectWrapperInterfaceVersion(sdk.provider, keyTokenAddress);\n if (version === \"upgraded\") {\n return sdk.provider.readContract(inferredTotalSupplyContract(keyTokenAddress));\n }\n return sdk.provider.readContract(totalSupplyContract(keyTokenAddress));\n },\n staleTime: 30_000,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import type { Address } from \"viem\";\nimport type { WrappersRegistry } from \"../wrappers-registry\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { assertNonNullable } from \"../utils/assertions\";\nimport { filterQueryOptions } from \"./utils\";\n\nexport interface WrapperDiscoveryQueryConfig {\n /**\n * Address of any confidential token you control.\n * Used to scope the query cache key and to gate whether the query\n * is enabled — it does not affect which wrapper the registry returns.\n */\n tokenAddress?: Address;\n /**\n * The ERC-20 token address to discover the confidential wrapper for.\n * The registry is resolved automatically from chain config.\n */\n erc20Address?: Address;\n /**\n * The resolved registry contract address for the current chain.\n * Included in the query key so that switching chains invalidates\n * stale cached results. Pass `undefined` when the chain ID is not\n * yet known — the query will be disabled.\n */\n registryAddress?: Address;\n query?: Record<string, unknown>;\n}\n\nexport function wrapperDiscoveryQueryOptions(\n registry: WrappersRegistry,\n config: WrapperDiscoveryQueryConfig,\n): QueryFactoryOptions<\n Address | null,\n Error,\n Address | null,\n ReturnType<typeof zamaQueryKeys.wrapperDiscovery.token>\n> {\n const queryKey = zamaQueryKeys.wrapperDiscovery.token(\n config.tokenAddress,\n config.erc20Address,\n config.registryAddress,\n );\n\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { erc20Address }] = context.queryKey;\n assertNonNullable(erc20Address, \"wrapperDiscoveryQueryOptions: erc20Address\");\n const result = await registry.getConfidentialToken(erc20Address);\n return result ? result.confidentialTokenAddress : null;\n },\n staleTime: Infinity,\n enabled:\n Boolean(config.tokenAddress && config.erc20Address && config.registryAddress) &&\n config.query?.enabled !== false,\n };\n}\n","import { allowanceContract, underlyingContract } from \"../contracts\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport { assertNonNullable } from \"../utils/assertions\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\nimport type { Address } from \"viem\";\n\nexport interface UnderlyingAllowanceQueryConfig {\n owner?: Address;\n wrapperAddress?: Address;\n query?: Record<string, unknown>;\n}\n\nexport function underlyingAllowanceQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config: UnderlyingAllowanceQueryConfig,\n): QueryFactoryOptions<\n bigint,\n Error,\n bigint,\n ReturnType<typeof zamaQueryKeys.underlyingAllowance.scope>\n> {\n const ownerKey = config.owner;\n const wrapperAddressKey = config.wrapperAddress;\n const queryEnabled = config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.underlyingAllowance.scope(\n tokenAddress,\n ownerKey,\n wrapperAddressKey,\n );\n\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { owner: keyOwner, wrapperAddress: keyWrapperAddress }] = context.queryKey;\n assertNonNullable(keyOwner, \"underlyingAllowanceQueryOptions: owner\");\n assertNonNullable(keyWrapperAddress, \"underlyingAllowanceQueryOptions: wrapperAddress\");\n const underlying = await sdk.provider.readContract(underlyingContract(keyWrapperAddress));\n return sdk.provider.readContract(allowanceContract(underlying, keyOwner, keyWrapperAddress));\n },\n staleTime: 30_000,\n enabled: Boolean(ownerKey && wrapperAddressKey) && queryEnabled,\n };\n}\n","import { isOperatorContract } from \"../contracts\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport { assertNonNullable } from \"../utils/assertions\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { filterQueryOptions } from \"./utils\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport type { Address } from \"viem\";\n\nexport interface ConfidentialIsApprovedQueryConfig {\n holder?: Address;\n spender?: Address;\n query?: Record<string, unknown>;\n}\n\nexport function confidentialIsApprovedQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address | undefined,\n config: ConfidentialIsApprovedQueryConfig,\n): QueryFactoryOptions<\n boolean,\n Error,\n boolean,\n ReturnType<typeof zamaQueryKeys.confidentialIsApproved.scope>\n> {\n const holderKey = config.holder;\n const spenderKey = config.spender;\n const queryEnabled = config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.confidentialIsApproved.scope(tokenAddress, holderKey, spenderKey);\n\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress, holder: keyHolder, spender: keySpender }] =\n context.queryKey;\n assertNonNullable(keyTokenAddress, \"confidentialIsApprovedQueryOptions: tokenAddress\");\n assertNonNullable(keyHolder, \"confidentialIsApprovedQueryOptions: holder\");\n assertNonNullable(keySpender, \"confidentialIsApprovedQueryOptions: spender\");\n return sdk.provider.readContract(isOperatorContract(keyTokenAddress, keyHolder, keySpender));\n },\n staleTime: 30_000,\n enabled: Boolean(tokenAddress && holderKey && spenderKey) && queryEnabled,\n };\n}\n","import type { PublicKeyData } from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\n\nexport interface PublicKeyQueryConfig {\n query?: Record<string, unknown>;\n}\n\nexport function publicKeyQueryOptions(\n sdk: ZamaSDK,\n config?: PublicKeyQueryConfig,\n): QueryFactoryOptions<\n PublicKeyData | null,\n Error,\n PublicKeyData | null,\n typeof zamaQueryKeys.publicKey.all\n> {\n const queryKey = zamaQueryKeys.publicKey.all;\n\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async () => sdk.relayer.getPublicKey(),\n staleTime: Infinity,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import type { PublicParamsData } from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { filterQueryOptions } from \"./utils\";\nimport { zamaQueryKeys } from \"./query-keys\";\n\nexport interface PublicParamsQueryConfig {\n query?: Record<string, unknown>;\n}\n\nexport function publicParamsQueryOptions(\n sdk: ZamaSDK,\n bits: number,\n config?: PublicParamsQueryConfig,\n): QueryFactoryOptions<\n PublicParamsData | null,\n Error,\n PublicParamsData | null,\n ReturnType<typeof zamaQueryKeys.publicParams.bits>\n> {\n const queryKey = zamaQueryKeys.publicParams.bits(bits);\n\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { bits: keyBits }] = context.queryKey;\n return sdk.relayer.getPublicParams(keyBits);\n },\n staleTime: Infinity,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import type { Address } from \"viem\";\nimport type { ReadonlyToken } from \"../token\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\n\nexport interface ConfidentialBalanceQueryConfig {\n tokenAddress: Address;\n owner?: Address;\n query?: Record<string, unknown>;\n}\n\n/**\n * Query options for a single confidential token balance.\n *\n * **Owner gating:** this factory does not gate on `owner !== undefined` because\n * it is also used outside React with an explicit owner. React consumers should\n * apply the gate at the hook level (e.g. `enabled: ... && owner !== undefined`),\n * as {@link useConfidentialBalance} does.\n */\nexport function confidentialBalanceQueryOptions(\n token: ReadonlyToken,\n config: ConfidentialBalanceQueryConfig,\n): QueryFactoryOptions<\n bigint,\n Error,\n bigint,\n ReturnType<typeof zamaQueryKeys.confidentialBalance.owner>\n> {\n const queryOpts = config.query ?? {};\n\n return {\n ...filterQueryOptions(queryOpts),\n queryKey: zamaQueryKeys.confidentialBalance.owner(config.tokenAddress, config.owner),\n queryFn: async (context) => {\n const [, { owner: keyOwner }] = context.queryKey;\n return token.balanceOf(keyOwner);\n },\n enabled: queryOpts?.enabled !== false,\n };\n}\n","import type { Address } from \"viem\";\nimport { ReadonlyToken, type BatchBalancesResult } from \"../token/readonly-token\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\n\nexport interface ConfidentialBalancesQueryConfig {\n owner?: Address;\n query?: Record<string, unknown>;\n}\n\nexport function confidentialBalancesQueryOptions(\n tokens: ReadonlyToken[],\n config?: ConfidentialBalancesQueryConfig,\n): QueryFactoryOptions<\n BatchBalancesResult,\n Error,\n BatchBalancesResult,\n ReturnType<typeof zamaQueryKeys.confidentialBalances.tokens>\n> {\n const ownerKey = config?.owner;\n const queryOpts = config?.query ?? {};\n const tokenAddresses = tokens.map((token) => token.address);\n\n return {\n ...filterQueryOptions(queryOpts),\n queryKey: zamaQueryKeys.confidentialBalances.tokens(tokenAddresses, ownerKey),\n queryFn: async (context) => {\n const [, { owner: keyOwner }] = context.queryKey;\n return ReadonlyToken.batchBalancesOf(tokens, keyOwner);\n },\n enabled: tokens.length > 0 && queryOpts?.enabled !== false,\n };\n}\n","import { type Address, zeroAddress } from \"viem\";\nimport {\n getTokenPairsContract,\n getTokenPairsLengthContract,\n getTokenPairsSliceContract,\n getTokenPairContract,\n getConfidentialTokenAddressContract,\n getTokenAddressContract,\n isConfidentialTokenValidContract,\n} from \"../contracts\";\nimport type {\n TokenWrapperPair,\n TokenWrapperPairWithMetadata,\n PaginatedResult,\n} from \"../contracts/wrappers-registry\";\nimport type { WrappersRegistry } from \"../wrappers-registry\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\n\n/** Default registry TTL in milliseconds — matches {@link WrappersRegistry} default of 86400 s. */\nconst DEFAULT_STALE_TIME_MS = 86400 * 1000;\n\nexport interface WrappersRegistryQueryConfig {\n registryAddress: Address | undefined;\n query?: Record<string, unknown>;\n}\n\nexport function tokenPairsQueryOptions(\n sdk: ZamaSDK,\n config: WrappersRegistryQueryConfig,\n): QueryFactoryOptions<\n readonly TokenWrapperPair[],\n Error,\n readonly TokenWrapperPair[],\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenPairs>\n> {\n const enabled = Boolean(config.registryAddress) && config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenPairs(config.registryAddress ?? zeroAddress);\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress }] = context.queryKey;\n return sdk.provider.readContract(getTokenPairsContract(registryAddress));\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport interface ConfidentialTokenAddressQueryConfig extends WrappersRegistryQueryConfig {\n tokenAddress?: Address;\n}\n\nexport function confidentialTokenAddressQueryOptions(\n sdk: ZamaSDK,\n config: ConfidentialTokenAddressQueryConfig,\n): QueryFactoryOptions<\n readonly [boolean, Address],\n Error,\n readonly [boolean, Address],\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.confidentialTokenAddress>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n Boolean(config.tokenAddress) &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.confidentialTokenAddress(\n config.registryAddress ?? zeroAddress,\n config.tokenAddress ?? zeroAddress,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, tokenAddress }] = context.queryKey;\n return sdk.provider.readContract(\n getConfidentialTokenAddressContract(registryAddress, tokenAddress),\n );\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport interface TokenAddressQueryConfig extends WrappersRegistryQueryConfig {\n confidentialTokenAddress?: Address;\n}\n\nexport function tokenAddressQueryOptions(\n sdk: ZamaSDK,\n config: TokenAddressQueryConfig,\n): QueryFactoryOptions<\n readonly [boolean, Address],\n Error,\n readonly [boolean, Address],\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenAddress>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n Boolean(config.confidentialTokenAddress) &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenAddress(\n config.registryAddress ?? zeroAddress,\n config.confidentialTokenAddress ?? zeroAddress,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, confidentialTokenAddress }] = context.queryKey;\n return sdk.provider.readContract(\n getTokenAddressContract(registryAddress, confidentialTokenAddress),\n );\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport function tokenPairsLengthQueryOptions(\n sdk: ZamaSDK,\n config: WrappersRegistryQueryConfig,\n): QueryFactoryOptions<\n bigint,\n Error,\n bigint,\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenPairsLength>\n> {\n const enabled = Boolean(config.registryAddress) && config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenPairsLength(\n config.registryAddress ?? zeroAddress,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress }] = context.queryKey;\n return sdk.provider.readContract(getTokenPairsLengthContract(registryAddress));\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport interface TokenPairsSliceQueryConfig extends WrappersRegistryQueryConfig {\n fromIndex?: bigint;\n toIndex?: bigint;\n}\n\nexport function tokenPairsSliceQueryOptions(\n sdk: ZamaSDK,\n config: TokenPairsSliceQueryConfig,\n): QueryFactoryOptions<\n readonly TokenWrapperPair[],\n Error,\n readonly TokenWrapperPair[],\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenPairsSlice>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n config.fromIndex !== undefined &&\n config.toIndex !== undefined &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenPairsSlice(\n config.registryAddress ?? zeroAddress,\n String(config.fromIndex ?? 0n),\n String(config.toIndex ?? 0n),\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, fromIndex, toIndex }] = context.queryKey;\n return sdk.provider.readContract(\n getTokenPairsSliceContract(registryAddress, BigInt(fromIndex), BigInt(toIndex)),\n );\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport interface TokenPairQueryConfig extends WrappersRegistryQueryConfig {\n index?: bigint;\n}\n\nexport function tokenPairQueryOptions(\n sdk: ZamaSDK,\n config: TokenPairQueryConfig,\n): QueryFactoryOptions<\n TokenWrapperPair,\n Error,\n TokenWrapperPair,\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenPair>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n config.index !== undefined &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenPair(\n config.registryAddress ?? zeroAddress,\n String(config.index ?? 0n),\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, index }] = context.queryKey;\n return sdk.provider.readContract(getTokenPairContract(registryAddress, BigInt(index)));\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport interface IsConfidentialTokenValidQueryConfig extends WrappersRegistryQueryConfig {\n confidentialTokenAddress?: Address;\n}\n\nexport function isConfidentialTokenValidQueryOptions(\n sdk: ZamaSDK,\n config: IsConfidentialTokenValidQueryConfig,\n): QueryFactoryOptions<\n boolean,\n Error,\n boolean,\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.isConfidentialTokenValid>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n Boolean(config.confidentialTokenAddress) &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.isConfidentialTokenValid(\n config.registryAddress ?? zeroAddress,\n config.confidentialTokenAddress ?? zeroAddress,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, confidentialTokenAddress }] = context.queryKey;\n return sdk.provider.readContract(\n isConfidentialTokenValidContract(registryAddress, confidentialTokenAddress),\n );\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport interface ListPairsQueryConfig {\n /**\n * The registry address for this chain — used as a query key discriminator.\n * The registry instance already knows how to resolve the address for the\n * current chain; this field just keeps the TanStack Query cache isolated\n * per registry contract.\n */\n registryAddress: Address | undefined;\n page?: number;\n pageSize?: number;\n metadata?: boolean;\n query?: Record<string, unknown>;\n}\n\n/**\n * Query options for paginated listing of token wrapper pairs.\n *\n * Accepts a {@link WrappersRegistry} instance rather than a raw provider so that the\n * class-level TTL cache is shared across multiple `queryFn` executions. Pass\n * `sdk.registry` (the ZamaSDK lazy singleton) to ensure a single shared cache.\n */\nexport function listPairsQueryOptions(\n registry: WrappersRegistry,\n config: ListPairsQueryConfig,\n): QueryFactoryOptions<\n PaginatedResult<TokenWrapperPair | TokenWrapperPairWithMetadata>,\n Error,\n PaginatedResult<TokenWrapperPair | TokenWrapperPairWithMetadata>,\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.listPairs>\n> {\n const enabled = Boolean(config.registryAddress) && config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.listPairs(\n config.registryAddress ?? zeroAddress,\n config.page ?? 1,\n config.pageSize ?? 100,\n config.metadata ?? false,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { page, pageSize, metadata }] = context.queryKey;\n return registry.listPairs({ page, pageSize, metadata });\n },\n // Use the registry's own TTL so TanStack Query and the class-level cache\n // operate under the same freshness contract.\n staleTime: registry.ttlMs,\n enabled,\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { ShieldCallbacks, TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link shieldMutationOptions}. */\nexport interface ShieldParams extends ShieldCallbacks {\n amount: bigint;\n approvalStrategy?: \"max\" | \"exact\" | \"skip\";\n /** Recipient address for the shielded tokens. Defaults to the connected wallet. */\n to?: Address;\n}\n\nexport function shieldMutationOptions(\n token: Token,\n): MutationFactoryOptions<readonly [\"zama.shield\", Address], ShieldParams, TransactionResult> {\n return {\n mutationKey: [\"zama.shield\", token.address] as const,\n mutationFn: async ({ amount, ...rest }) => token.shield(amount, rest),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult, TransferOptions } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link confidentialTransferMutationOptions}. */\nexport interface ConfidentialTransferParams extends TransferOptions {\n to: Address;\n amount: bigint;\n}\n\nexport function confidentialTransferMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.confidentialTransfer\", Address],\n ConfidentialTransferParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.confidentialTransfer\", token.address] as const,\n mutationFn: async ({ to, amount, ...options }) =>\n token.confidentialTransfer(to, amount, options),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransferCallbacks, TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link confidentialTransferFromMutationOptions}. */\nexport interface ConfidentialTransferFromParams {\n from: Address;\n to: Address;\n amount: bigint;\n /** Optional progress callbacks for the multi-step transfer flow. */\n callbacks?: TransferCallbacks;\n}\n\nexport function confidentialTransferFromMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.confidentialTransferFrom\", Address],\n ConfidentialTransferFromParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.confidentialTransferFrom\", token.address] as const,\n mutationFn: async ({ from, to, amount, callbacks }) =>\n token.confidentialTransferFrom(from, to, amount, callbacks),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link confidentialApproveMutationOptions}. */\nexport interface ConfidentialApproveParams {\n spender: Address;\n until?: number;\n}\n\nexport function confidentialApproveMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.confidentialApprove\", Address],\n ConfidentialApproveParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.confidentialApprove\", token.address] as const,\n mutationFn: async ({ spender, until }) => token.approve(spender, until),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link approveUnderlyingMutationOptions}. */\nexport interface ApproveUnderlyingParams {\n amount?: bigint;\n}\n\nexport function approveUnderlyingMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.approveUnderlying\", Address],\n ApproveUnderlyingParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.approveUnderlying\", token.address] as const,\n mutationFn: async ({ amount }) => token.approveUnderlying(amount),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult, UnshieldOptions } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link unshieldMutationOptions}. */\nexport interface UnshieldParams extends UnshieldOptions {\n amount: bigint;\n}\n\nexport function unshieldMutationOptions(\n token: Token,\n): MutationFactoryOptions<readonly [\"zama.unshield\", Address], UnshieldParams, TransactionResult> {\n return {\n mutationKey: [\"zama.unshield\", token.address] as const,\n mutationFn: async ({ amount, ...options }) => token.unshield(amount, options),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult, UnshieldCallbacks } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link unshieldAllMutationOptions}. */\nexport interface UnshieldAllParams extends UnshieldCallbacks {}\n\nexport function unshieldAllMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.unshieldAll\", Address],\n UnshieldAllParams | void,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.unshieldAll\", token.address] as const,\n mutationFn: async (params) => token.unshieldAll(params || undefined),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult, UnshieldCallbacks } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address, Hex } from \"viem\";\n\n/** Variables for {@link resumeUnshieldMutationOptions}. */\nexport interface ResumeUnshieldParams extends UnshieldCallbacks {\n unwrapTxHash: Hex;\n}\n\nexport function resumeUnshieldMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.resumeUnshield\", Address],\n ResumeUnshieldParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.resumeUnshield\", token.address] as const,\n mutationFn: async ({ unwrapTxHash, ...callbacks }) =>\n token.resumeUnshield(unwrapTxHash, callbacks),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link unwrapMutationOptions}. */\nexport interface UnwrapParams {\n amount: bigint;\n}\n\nexport function unwrapMutationOptions(\n token: Token,\n): MutationFactoryOptions<readonly [\"zama.unwrap\", Address], UnwrapParams, TransactionResult> {\n return {\n mutationKey: [\"zama.unwrap\", token.address] as const,\n mutationFn: async ({ amount }) => token.unwrap(amount),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\nexport function unwrapAllMutationOptions(\n token: Token,\n): MutationFactoryOptions<readonly [\"zama.unwrapAll\", Address], void, TransactionResult> {\n return {\n mutationKey: [\"zama.unwrapAll\", token.address] as const,\n mutationFn: async () => token.unwrapAll(),\n };\n}\n","import type { Handle } from \"../relayer/relayer-sdk.types\";\nimport type { Token } from \"../token/token\";\nimport type { TransactionResult } from \"../types\";\nimport { ConfigurationError } from \"../errors\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n/** Variables for {@link finalizeUnwrapMutationOptions}. */\nexport type FinalizeUnwrapParams =\n /** Preferred input from upgraded `UnwrapRequested` events. */\n | { unwrapRequestId: Handle; burnAmountHandle?: never }\n /** Legacy input from pre-upgrade `UnwrapRequested` events. */\n | { unwrapRequestId?: never; burnAmountHandle: Handle };\n\nexport function finalizeUnwrapMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.finalizeUnwrap\", Address],\n FinalizeUnwrapParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.finalizeUnwrap\", token.address] as const,\n mutationFn: async (params) => {\n const handle = params.unwrapRequestId ?? params.burnAmountHandle;\n if (!handle) {\n throw new ConfigurationError(\"finalizeUnwrap requires unwrapRequestId or burnAmountHandle\");\n }\n return token.finalizeUnwrap(handle);\n },\n };\n}\n","import type { EncryptParams, EncryptResult } from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\nexport function encryptMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.encrypt\"], EncryptParams, EncryptResult> {\n return {\n mutationKey: [\"zama.encrypt\"],\n mutationFn: async (params) => sdk.relayer.encrypt(params),\n };\n}\n","import type { KeypairType } from \"@zama-fhe/relayer-sdk/bundle\";\nimport type { Hex } from \"viem\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\nexport function generateKeypairMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.generateKeypair\"], void, KeypairType<Hex>> {\n return {\n mutationKey: [\"zama.generateKeypair\"],\n mutationFn: async () => sdk.relayer.generateKeypair(),\n };\n}\n","import type { KmsUserDecryptEIP712UserArgsType } from \"@zama-fhe/relayer-sdk/bundle\";\nimport type { Address, Hex } from \"viem\";\nimport type { EIP712TypedData } from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/**\n * Variables for {@link createEIP712MutationOptions}. Derived from\n * {@link KmsUserDecryptEIP712UserArgsType} with stricter `publicKey`/`contractAddresses`\n * typing and optional `durationDays`. `extraData` is computed internally and omitted.\n */\nexport type CreateEIP712Params = Pick<KmsUserDecryptEIP712UserArgsType, \"startTimestamp\"> & {\n publicKey: Hex;\n contractAddresses: Address[];\n durationDays?: number;\n};\n\nexport function createEIP712MutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.createEIP712\"], CreateEIP712Params, EIP712TypedData> {\n return {\n mutationKey: [\"zama.createEIP712\"],\n mutationFn: async ({ publicKey, contractAddresses, startTimestamp, durationDays }) =>\n sdk.relayer.createEIP712(publicKey, contractAddresses, startTimestamp, durationDays),\n };\n}\n","import type { KmsDelegatedUserDecryptEIP712Type } from \"@zama-fhe/relayer-sdk/bundle\";\nimport type { Address, Hex } from \"viem\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link createDelegatedUserDecryptEIP712MutationOptions}. */\nexport interface CreateDelegatedUserDecryptEIP712Params {\n publicKey: Hex;\n contractAddresses: Address[];\n delegatorAddress: Address;\n startTimestamp: number;\n durationDays?: number;\n}\n\nexport function createDelegatedUserDecryptEIP712MutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<\n readonly [\"zama.createDelegatedUserDecryptEIP712\"],\n CreateDelegatedUserDecryptEIP712Params,\n KmsDelegatedUserDecryptEIP712Type\n> {\n return {\n mutationKey: [\"zama.createDelegatedUserDecryptEIP712\"],\n mutationFn: async ({\n publicKey,\n contractAddresses,\n delegatorAddress,\n startTimestamp,\n durationDays,\n }) =>\n sdk.relayer.createDelegatedUserDecryptEIP712(\n publicKey,\n contractAddresses,\n delegatorAddress,\n startTimestamp,\n durationDays,\n ),\n };\n}\n","import type {\n ClearValueType,\n DelegatedUserDecryptParams,\n Handle,\n} from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\nexport function delegatedUserDecryptMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<\n readonly [\"zama.delegatedUserDecrypt\"],\n DelegatedUserDecryptParams,\n Readonly<Record<Handle, ClearValueType>>\n> {\n return {\n mutationKey: [\"zama.delegatedUserDecrypt\"],\n mutationFn: async (params) => sdk.relayer.delegatedUserDecrypt(params),\n };\n}\n","import type { ClearValueType, Handle, PublicDecryptResult } from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\n\nexport function publicDecryptMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.publicDecrypt\"], Handle[], PublicDecryptResult> {\n return {\n mutationKey: [\"zama.publicDecrypt\"],\n mutationFn: async (handles) => sdk.publicDecrypt(handles),\n onSuccess: (data, _variables, _onMutateResult, context) => {\n for (const [handle, value] of Object.entries(data.clearValues) as [\n Handle,\n ClearValueType,\n ][]) {\n context.client.setQueryData(zamaQueryKeys.decryption.handle(handle), value);\n }\n },\n };\n}\n","import type { InputProofBytesType, ZKProofLike } from \"@zama-fhe/relayer-sdk/bundle\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\nexport function requestZKProofVerificationMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<\n readonly [\"zama.requestZKProofVerification\"],\n ZKProofLike,\n InputProofBytesType\n> {\n return {\n mutationKey: [\"zama.requestZKProofVerification\"],\n mutationFn: async (zkProof) => sdk.relayer.requestZKProofVerification(zkProof),\n };\n}\n","import type { Address } from \"viem\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\nexport function allowMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.allow\"], Address[], void> {\n return {\n mutationKey: [\"zama.allow\"],\n mutationFn: (contractAddresses) => sdk.allow(contractAddresses),\n };\n}\n","import type { Address } from \"viem\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\n\nexport interface IsAllowedQueryConfig {\n account: Address;\n /** Contract addresses to check credentials against. */\n contractAddresses: [Address, ...Address[]];\n query?: Record<string, unknown>;\n}\n\nexport function isAllowedQueryOptions(\n sdk: ZamaSDK,\n config: IsAllowedQueryConfig,\n): QueryFactoryOptions<boolean, Error, boolean, ReturnType<typeof zamaQueryKeys.isAllowed.scope>> {\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey: zamaQueryKeys.isAllowed.scope(config.account, config.contractAddresses),\n queryFn: (context) => {\n const [, { contractAddresses }] = context.queryKey;\n return sdk.credentials.isAllowed(contractAddresses as [Address, ...Address[]]);\n },\n staleTime: 30_000,\n enabled: config.query?.enabled !== false,\n } as const;\n}\n","import type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\nexport function revokeMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.revoke\"], Address[], void> {\n return {\n mutationKey: [\"zama.revoke\"],\n mutationFn: (contractAddresses) => sdk.credentials.revoke(...contractAddresses),\n };\n}\n","import type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\nexport function revokeSessionMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.revokeSession\"], void, void> {\n return {\n mutationKey: [\"zama.revokeSession\"],\n mutationFn: () => sdk.revokeSession(),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { Address } from \"viem\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link delegateDecryptionMutationOptions}. */\nexport interface DelegateDecryptionParams {\n delegateAddress: Address;\n expirationDate?: Date;\n}\n\nexport function delegateDecryptionMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.delegateDecryption\", Address],\n DelegateDecryptionParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.delegateDecryption\", token.address] as const,\n mutationFn: async ({ delegateAddress, expirationDate }) =>\n token.delegateDecryption({ delegateAddress, expirationDate }),\n };\n}\n","import type { UserDecryptResults } from \"@zama-fhe/relayer-sdk/bundle\";\nimport type { Address } from \"viem\";\nimport type { Handle } from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\n\nexport interface DecryptHandle {\n handle: Handle;\n contractAddress: Address;\n}\n\n/** Alias for {@link UserDecryptResults}. */\nexport type DecryptResult = UserDecryptResults;\n\nexport interface UserDecryptQueryConfig {\n handles: DecryptHandle[];\n}\n\nexport function userDecryptQueryOptions(\n sdk: ZamaSDK,\n config: UserDecryptQueryConfig,\n): QueryFactoryOptions<\n DecryptResult,\n Error,\n DecryptResult,\n ReturnType<typeof zamaQueryKeys.decryption.handles>\n> {\n return {\n queryKey: zamaQueryKeys.decryption.handles(config.handles),\n queryFn: (context) => {\n const [, { handles }] = context.queryKey;\n return sdk.userDecrypt(handles as DecryptHandle[]);\n },\n staleTime: Infinity,\n enabled: config.handles.length > 0,\n };\n}\n","import type { Address } from \"viem\";\nimport type { ReadonlyToken } from \"../token/readonly-token\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link decryptBalanceAsMutationOptions}. */\nexport interface DecryptBalanceAsParams {\n delegatorAddress: Address;\n accountAddress?: Address;\n}\n\nexport function decryptBalanceAsMutationOptions(\n readonlyToken: ReadonlyToken,\n): MutationFactoryOptions<\n readonly [\"zama.decryptBalanceAs\", Address],\n DecryptBalanceAsParams,\n bigint\n> {\n return {\n mutationKey: [\"zama.decryptBalanceAs\", readonlyToken.address] as const,\n mutationFn: async ({ delegatorAddress, accountAddress }) =>\n readonlyToken.decryptBalanceAs({ delegatorAddress, accountAddress }),\n };\n}\n","import { ReadonlyToken, type BatchDecryptAsOptions } from \"../token/readonly-token\";\nimport type { Address } from \"viem\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link batchDecryptBalancesAsMutationOptions}. */\nexport type BatchDecryptBalancesAsParams = BatchDecryptAsOptions;\n\nexport function batchDecryptBalancesAsMutationOptions(\n tokens: ReadonlyToken[],\n): MutationFactoryOptions<\n readonly [\"zama.batchDecryptBalancesAs\", ...Address[]],\n BatchDecryptBalancesAsParams,\n Map<Address, bigint>\n> {\n return {\n mutationKey: [\"zama.batchDecryptBalancesAs\", ...tokens.map((t) => t.address)] as const,\n mutationFn: async (params) => ReadonlyToken.batchDecryptBalancesAs(tokens, params),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { Address } from \"viem\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link revokeDelegationMutationOptions}. */\nexport interface RevokeDelegationParams {\n delegateAddress: Address;\n}\n\nexport function revokeDelegationMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.revokeDelegation\", Address],\n RevokeDelegationParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.revokeDelegation\", token.address] as const,\n mutationFn: async ({ delegateAddress }) => token.revokeDelegation({ delegateAddress }),\n };\n}\n","import type { Address } from \"viem\";\nimport { MAX_UINT64 } from \"../contracts\";\nimport { getDelegationExpiryContract } from \"../contracts/acl\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { filterQueryOptions } from \"./utils\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { assertNonNullable } from \"../utils\";\n\nexport interface DelegationStatusData {\n isDelegated: boolean;\n expiryTimestamp: bigint;\n}\n\nexport interface DelegationStatusQueryConfig {\n tokenAddress: Address | undefined;\n delegatorAddress?: Address;\n delegateAddress?: Address;\n query?: Record<string, unknown>;\n}\n\nexport function delegationStatusQueryOptions(\n sdk: ZamaSDK,\n config: DelegationStatusQueryConfig,\n): QueryFactoryOptions<\n DelegationStatusData,\n Error,\n DelegationStatusData,\n ReturnType<typeof zamaQueryKeys.delegationStatus.scope>\n> {\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey: zamaQueryKeys.delegationStatus.scope(\n config.tokenAddress,\n config.delegatorAddress,\n config.delegateAddress,\n ),\n queryFn: async (context) => {\n const [, { tokenAddress, delegatorAddress, delegateAddress }] = context.queryKey;\n assertNonNullable(tokenAddress, \"delegationStatusQueryOptions: tokenAddress\");\n assertNonNullable(delegatorAddress, \"delegationStatusQueryOptions: delegatorAddress\");\n assertNonNullable(delegateAddress, \"delegationStatusQueryOptions: delegateAddress\");\n const acl = await sdk.relayer.getAclAddress();\n const expiryTimestamp = await sdk.provider.readContract(\n getDelegationExpiryContract(acl, delegatorAddress, delegateAddress, tokenAddress),\n );\n // Derive isDelegated from expiry + chain time to stay consistent\n // with ReadonlyToken.isDelegated() (avoids client-clock skew).\n let isDelegated: boolean;\n if (expiryTimestamp === 0n) {\n isDelegated = false;\n } else if (expiryTimestamp === MAX_UINT64) {\n isDelegated = true;\n } else {\n const now = await sdk.provider.getBlockTimestamp();\n isDelegated = expiryTimestamp > now;\n }\n return { isDelegated, expiryTimestamp };\n },\n enabled:\n Boolean(config.tokenAddress && config.delegatorAddress && config.delegateAddress) &&\n config.query?.enabled !== false,\n } as const;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["nameContract","symbolContract","decimalsContract","isConfidentialTokenContract","isContractCallError","isConfidentialWrapperContract","supportsInterfaceContract","ERC7984_WRAPPER_INTERFACE_ID","supportsInterfaceContract","isContractCallError","ConfigurationError","inferredTotalSupplyContract","totalSupplyContract","underlyingContract","allowanceContract","isOperatorContract","ReadonlyToken","zeroAddress","getTokenPairsContract","getConfidentialTokenAddressContract","getTokenAddressContract","getTokenPairsLengthContract","getTokenPairsSliceContract","getTokenPairContract","isConfidentialTokenValidContract","ConfigurationError","ReadonlyToken","getDelegationExpiryContract","MAX_UINT64"],"sources":["../../../src/query/utils.ts","../../../src/query/query-keys.ts","../../../src/query/invalidation.ts","../../../src/query/signer-address.ts","../../../src/query/token-metadata.ts","../../../src/query/is-confidential.ts","../../../src/query/wrapper-interface-version.ts","../../../src/query/total-supply.ts","../../../src/query/wrapper-discovery.ts","../../../src/query/underlying-allowance.ts","../../../src/query/confidential-is-approved.ts","../../../src/query/public-key.ts","../../../src/query/public-params.ts","../../../src/query/confidential-balance.ts","../../../src/query/confidential-balances.ts","../../../src/query/wrappers-registry.ts","../../../src/query/shield.ts","../../../src/query/transfer.ts","../../../src/query/transfer-from.ts","../../../src/query/approve.ts","../../../src/query/approve-underlying.ts","../../../src/query/unshield.ts","../../../src/query/unshield-all.ts","../../../src/query/resume-unshield.ts","../../../src/query/unwrap.ts","../../../src/query/unwrap-all.ts","../../../src/query/finalize-unwrap.ts","../../../src/query/encrypt.ts","../../../src/query/generate-keypair.ts","../../../src/query/create-eip712.ts","../../../src/query/create-delegated-user-decrypt-eip712.ts","../../../src/query/delegated-user-decrypt.ts","../../../src/query/public-decrypt.ts","../../../src/query/request-zk-proof-verification.ts","../../../src/query/allow.ts","../../../src/query/is-allowed.ts","../../../src/query/revoke.ts","../../../src/query/revoke-session.ts","../../../src/query/delegate-decryption.ts","../../../src/query/user-decrypt.ts","../../../src/query/decrypt-balance-as.ts","../../../src/query/batch-decrypt-balances-as.ts","../../../src/query/revoke-delegation.ts","../../../src/query/delegation-status.ts"],"sourcesContent":["// Adapted from the wagmi codebase\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-wrapper-object-types\nfunction isPlainObject(value: any): value is Object {\n if (!hasObjectPrototype(value)) {\n return false;\n }\n\n // If has modified constructor\n const ctor = value.constructor;\n if (ctor === undefined) {\n return true;\n }\n\n // If has modified prototype\n const prot = ctor.prototype;\n if (!hasObjectPrototype(prot)) {\n return false;\n }\n\n // If constructor does not have an Object-specific method\n // biome-ignore lint/suspicious/noPrototypeBuiltins: using\n // eslint-disable-next-line no-prototype-builtins\n if (!prot.hasOwnProperty(\"isPrototypeOf\")) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction hasObjectPrototype(o: any): boolean {\n return Object.prototype.toString.call(o) === \"[object Object]\";\n}\n\nexport type StrippedQueryOptionKeys =\n // Keep this union aligned with @tanstack/query-core behavioral options\n // (for example QueryObserverOptions). Revisit on every upgrade to avoid\n // leaking query controls into lower-level query factories.\n | \"gcTime\"\n | \"staleTime\"\n | \"enabled\"\n | \"select\"\n | \"refetchInterval\"\n | \"refetchOnMount\"\n | \"refetchOnWindowFocus\"\n | \"refetchOnReconnect\"\n | \"retry\"\n | \"retryDelay\"\n | \"retryOnMount\"\n | \"queryFn\"\n | \"queryKey\"\n | \"queryKeyHashFn\"\n | \"initialData\"\n | \"initialDataUpdatedAt\"\n | \"placeholderData\"\n | \"structuralSharing\"\n | \"throwOnError\"\n | \"meta\"\n | \"query\"\n | \"pollingInterval\";\n\n/**\n * Remove TanStack behavioral options from a query config object so only domain\n * parameters remain for the lower-level factory.\n *\n * @example\n * ```ts\n * const params = filterQueryOptions({\n * query: { enabled: false },\n * gcTime: 60_000,\n * owner: \"0xabc\",\n * });\n * // => { owner: \"0xabc\" }\n * ```\n */\nexport function filterQueryOptions<TOptions extends Record<string, unknown>>(\n options: TOptions,\n): Omit<TOptions, StrippedQueryOptionKeys> {\n const {\n gcTime: _gcTime,\n staleTime: _staleTime,\n enabled: _enabled,\n select: _select,\n refetchInterval: _refetchInterval,\n refetchOnMount: _refetchOnMount,\n refetchOnWindowFocus: _refetchOnWindowFocus,\n refetchOnReconnect: _refetchOnReconnect,\n retry: _retry,\n retryDelay: _retryDelay,\n retryOnMount: _retryOnMount,\n queryFn: _queryFn,\n queryKey: _queryKey,\n queryKeyHashFn: _queryKeyHashFn,\n initialData: _initialData,\n initialDataUpdatedAt: _initialDataUpdatedAt,\n placeholderData: _placeholderData,\n structuralSharing: _structuralSharing,\n throwOnError: _throwOnError,\n meta: _meta,\n query: _query,\n pollingInterval: _pollingInterval,\n ...rest\n } = options;\n\n return rest;\n}\n\n/**\n * Stable hash function for query keys.\n * Sorts object keys recursively and converts bigint values to strings.\n *\n * @remarks\n * bigint values are serialized as decimal strings, so `42n` and `\"42\"` hash to\n * the same token when they occupy the same position. This collision is accepted\n * by design for the current query-key conventions in this package.\n */\nexport function hashFn(queryKey: readonly unknown[]): string {\n return JSON.stringify(queryKey, (_, value) => {\n if (isPlainObject(value)) {\n return Object.keys(value)\n .toSorted()\n .reduce(\n (result, key) => {\n result[key] = value[key];\n return result;\n },\n {} as Record<string, unknown>,\n );\n }\n\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n\n return value;\n });\n}\n","import { getAddress } from \"viem\";\nimport type { Address } from \"viem\";\n\nconst normalizeAddresses = (addresses: Address[]): Address[] =>\n addresses.map((address) => getAddress(address));\nconst normalizeAddress = (address?: Address): Address | undefined =>\n address === undefined ? undefined : getAddress(address);\n\n/**\n * Canonical query-key namespace for `@zama-fhe/sdk/query`.\n *\n * @example\n * ```ts\n * queryClient.invalidateQueries({\n * queryKey: zamaQueryKeys.confidentialBalance.token(\"0xToken\"),\n * });\n * ```\n */\nexport const zamaQueryKeys = {\n signerAddress: {\n all: [\"zama.signerAddress\"] as const,\n scope: (scope: number) => [\"zama.signerAddress\", { scope }] as const,\n },\n\n confidentialBalance: {\n all: [\"zama.confidentialBalance\"] as const,\n token: (tokenAddress: Address) =>\n [\"zama.confidentialBalance\", { tokenAddress: getAddress(tokenAddress) }] as const,\n owner: (tokenAddress: Address, owner?: Address) =>\n [\n \"zama.confidentialBalance\",\n {\n tokenAddress: getAddress(tokenAddress),\n ...(owner ? { owner: getAddress(owner) } : {}),\n },\n ] as const,\n },\n\n confidentialBalances: {\n all: [\"zama.confidentialBalances\"] as const,\n tokens: (tokenAddresses: Address[], owner?: Address) =>\n [\n \"zama.confidentialBalances\",\n {\n tokenAddresses: normalizeAddresses(tokenAddresses),\n ...(owner ? { owner: getAddress(owner) } : {}),\n },\n ] as const,\n },\n\n tokenMetadata: {\n all: [\"zama.tokenMetadata\"] as const,\n token: (tokenAddress: Address) =>\n [\"zama.tokenMetadata\", { tokenAddress: getAddress(tokenAddress) }] as const,\n },\n\n isConfidential: {\n all: [\"zama.isConfidential\"] as const,\n token: (tokenAddress: Address) =>\n [\"zama.isConfidential\", { tokenAddress: getAddress(tokenAddress) }] as const,\n },\n\n isWrapper: {\n all: [\"zama.isWrapper\"] as const,\n token: (tokenAddress: Address) =>\n [\"zama.isWrapper\", { tokenAddress: getAddress(tokenAddress) }] as const,\n },\n\n wrapperDiscovery: {\n all: [\"zama.wrapperDiscovery\"] as const,\n token: (tokenAddress?: Address, erc20Address?: Address, registryAddress?: Address) => {\n const t = normalizeAddress(tokenAddress);\n const e = normalizeAddress(erc20Address);\n const r = normalizeAddress(registryAddress);\n return [\n \"zama.wrapperDiscovery\",\n {\n ...(t ? { tokenAddress: t } : {}),\n ...(e ? { erc20Address: e } : {}),\n ...(r ? { registryAddress: r } : {}),\n },\n ] as const;\n },\n },\n\n underlyingAllowance: {\n all: [\"zama.underlyingAllowance\"] as const,\n token: (tokenAddress: Address) =>\n [\"zama.underlyingAllowance\", { tokenAddress: getAddress(tokenAddress) }] as const,\n scope: (tokenAddress: Address, owner?: Address, wrapperAddress?: Address) =>\n [\n \"zama.underlyingAllowance\",\n {\n tokenAddress: getAddress(tokenAddress),\n ...(owner ? { owner: getAddress(owner) } : {}),\n ...(wrapperAddress ? { wrapperAddress: getAddress(wrapperAddress) } : {}),\n },\n ] as const,\n },\n\n confidentialIsApproved: {\n all: [\"zama.confidentialIsApproved\"] as const,\n token: (tokenAddress?: Address) => {\n const t = normalizeAddress(tokenAddress);\n return [\"zama.confidentialIsApproved\", t ? { tokenAddress: t } : {}] as const;\n },\n scope: (tokenAddress?: Address, holder?: Address, spender?: Address) => {\n const t = normalizeAddress(tokenAddress);\n const h = normalizeAddress(holder);\n const s = normalizeAddress(spender);\n return [\n \"zama.confidentialIsApproved\",\n {\n ...(t ? { tokenAddress: t } : {}),\n ...(h ? { holder: h } : {}),\n ...(s ? { spender: s } : {}),\n },\n ] as const;\n },\n },\n\n totalSupply: {\n all: [\"zama.totalSupply\"] as const,\n token: (tokenAddress: Address) =>\n [\"zama.totalSupply\", { tokenAddress: getAddress(tokenAddress) }] as const,\n },\n\n isAllowed: {\n all: [\"zama.isAllowed\"] as const,\n scope: (account: Address, contractAddresses: Address[]) =>\n [\n \"zama.isAllowed\",\n {\n account: getAddress(account),\n contractAddresses: normalizeAddresses(contractAddresses).toSorted(),\n },\n ] as const,\n },\n\n publicKey: {\n all: [\"zama.publicKey\"] as const,\n },\n\n publicParams: {\n all: [\"zama.publicParams\"] as const,\n bits: (bits: number) => [\"zama.publicParams\", { bits }] as const,\n },\n\n delegationStatus: {\n all: [\"zama.delegationStatus\"] as const,\n token: (tokenAddress?: Address) => {\n const t = normalizeAddress(tokenAddress);\n return [\"zama.delegationStatus\", t ? { tokenAddress: t } : {}] as const;\n },\n scope: (tokenAddress?: Address, delegator?: Address, delegate?: Address) => {\n const t = normalizeAddress(tokenAddress);\n const dr = normalizeAddress(delegator);\n const de = normalizeAddress(delegate);\n return [\n \"zama.delegationStatus\",\n {\n ...(t ? { tokenAddress: t } : {}),\n ...(dr ? { delegatorAddress: dr } : {}),\n ...(de ? { delegateAddress: de } : {}),\n },\n ] as const;\n },\n },\n\n decryption: {\n all: [\"zama.decryption\"] as const,\n handle: (handle: string, contractAddress?: Address) =>\n [\n \"zama.decryption\",\n {\n handle,\n ...(contractAddress === undefined\n ? {}\n : { contractAddress: getAddress(contractAddress) }),\n },\n ] as const,\n handles: (handles: readonly { handle: string; contractAddress: Address }[]) =>\n [\n \"zama.decryption\",\n {\n handles: [...handles]\n .toSorted((a, b) => a.handle.localeCompare(b.handle))\n .map((h) => ({\n handle: h.handle,\n contractAddress: getAddress(h.contractAddress),\n })),\n },\n ] as const,\n },\n\n wrappersRegistry: {\n all: [\"zama.wrappersRegistry\"] as const,\n chainId: () => [\"zama.wrappersRegistry\", { type: \"chainId\" }] as const,\n tokenPairs: (registryAddress: Address) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"tokenPairs\",\n registryAddress: getAddress(registryAddress),\n },\n ] as const,\n confidentialTokenAddress: (registryAddress: Address, tokenAddress: Address) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"confidentialTokenAddress\",\n registryAddress: getAddress(registryAddress),\n tokenAddress: getAddress(tokenAddress),\n },\n ] as const,\n tokenAddress: (registryAddress: Address, confidentialTokenAddress: Address) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"tokenAddress\",\n registryAddress: getAddress(registryAddress),\n confidentialTokenAddress: getAddress(confidentialTokenAddress),\n },\n ] as const,\n tokenPairsLength: (registryAddress: Address) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"tokenPairsLength\",\n registryAddress: getAddress(registryAddress),\n },\n ] as const,\n tokenPairsSlice: (registryAddress: Address, fromIndex: string, toIndex: string) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"tokenPairsSlice\",\n registryAddress: getAddress(registryAddress),\n fromIndex,\n toIndex,\n },\n ] as const,\n tokenPair: (registryAddress: Address, index: string) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"tokenPair\",\n registryAddress: getAddress(registryAddress),\n index,\n },\n ] as const,\n isConfidentialTokenValid: (registryAddress: Address, confidentialTokenAddress: Address) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"isConfidentialTokenValid\",\n registryAddress: getAddress(registryAddress),\n confidentialTokenAddress: getAddress(confidentialTokenAddress),\n },\n ] as const,\n listPairs: (registryAddress: Address, page: number, pageSize: number, metadata: boolean) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"listPairs\",\n registryAddress: getAddress(registryAddress),\n page,\n pageSize,\n metadata,\n },\n ] as const,\n },\n} as const;\n","import type { Address } from \"viem\";\nimport { zamaQueryKeys } from \"./query-keys\";\n\nexport interface QueryLike {\n queryKey: readonly unknown[];\n}\n\nexport interface QueryFilterLike {\n queryKey?: readonly unknown[];\n predicate?: (query: QueryLike) => boolean;\n}\n\nexport interface QueryClientLike {\n invalidateQueries(filters: QueryFilterLike): void | Promise<void>;\n removeQueries(filters: QueryFilterLike): void;\n}\n\nfunction invalidateUnderlyingAllowanceQueries(\n queryClient: QueryClientLike,\n tokenAddress: Address,\n): void {\n void queryClient.invalidateQueries({\n queryKey: zamaQueryKeys.underlyingAllowance.token(tokenAddress),\n });\n}\n\nexport function invalidateAfterUnwrap(queryClient: QueryClientLike, tokenAddress: Address): void {\n invalidateBalanceQueries(queryClient, tokenAddress);\n invalidateUnderlyingAllowanceQueries(queryClient, tokenAddress);\n invalidateWagmiBalanceQueries(queryClient);\n}\n\nexport function invalidateBalanceQueries(\n queryClient: QueryClientLike,\n tokenAddress: Address,\n): void {\n void queryClient.invalidateQueries({\n queryKey: zamaQueryKeys.confidentialBalance.token(tokenAddress),\n });\n void queryClient.invalidateQueries({ queryKey: zamaQueryKeys.confidentialBalances.all });\n}\n\nexport function invalidateAfterShield(queryClient: QueryClientLike, tokenAddress: Address): void {\n invalidateBalanceQueries(queryClient, tokenAddress);\n invalidateUnderlyingAllowanceQueries(queryClient, tokenAddress);\n invalidateWagmiBalanceQueries(queryClient);\n}\n\nexport function invalidateAfterUnshield(queryClient: QueryClientLike, tokenAddress: Address): void {\n invalidateBalanceQueries(queryClient, tokenAddress);\n invalidateUnderlyingAllowanceQueries(queryClient, tokenAddress);\n invalidateWagmiBalanceQueries(queryClient);\n}\n\nexport function invalidateAfterTransfer(queryClient: QueryClientLike, tokenAddress: Address): void {\n invalidateBalanceQueries(queryClient, tokenAddress);\n}\n\nexport function invalidateAfterApproveUnderlying(\n queryClient: QueryClientLike,\n tokenAddress: Address,\n): void {\n invalidateUnderlyingAllowanceQueries(queryClient, tokenAddress);\n}\n\nexport function invalidateAfterApprove(queryClient: QueryClientLike, tokenAddress: Address): void {\n void queryClient.invalidateQueries({\n queryKey: zamaQueryKeys.confidentialIsApproved.token(tokenAddress),\n });\n}\n\nfunction isZamaQuery(query: QueryLike): boolean {\n return Array.isArray(query.queryKey) && typeof query.queryKey[0] === \"string\"\n ? query.queryKey[0].startsWith(\"zama.\")\n : false;\n}\n\nfunction isWagmiBalanceQuery(query: QueryLike): boolean {\n return (\n Array.isArray(query.queryKey) &&\n query.queryKey.some((part: unknown) => {\n if (typeof part !== \"object\" || part === null || !(\"functionName\" in part)) {\n return false;\n }\n return part.functionName === \"balanceOf\";\n })\n );\n}\n\nexport function invalidateWagmiBalanceQueries(queryClient: QueryClientLike): void {\n void queryClient.invalidateQueries({ predicate: isWagmiBalanceQuery });\n}\n\nexport function invalidateWalletLifecycleQueries(queryClient: QueryClientLike): void {\n queryClient.removeQueries({ queryKey: zamaQueryKeys.signerAddress.all });\n queryClient.removeQueries({ queryKey: zamaQueryKeys.decryption.all });\n void queryClient.invalidateQueries({ predicate: isZamaQuery });\n invalidateWagmiBalanceQueries(queryClient);\n}\n","import type { Address } from \"viem\";\nimport type { GenericSigner } from \"../types\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\n\nconst signerScopes = new WeakMap<GenericSigner, number>();\nlet nextSignerScope = 1;\n\nfunction getSignerScope(signer: GenericSigner): number {\n const existingScope = signerScopes.get(signer);\n if (existingScope !== undefined) {\n return existingScope;\n }\n const newScope = nextSignerScope++;\n signerScopes.set(signer, newScope);\n return newScope;\n}\n\nexport function signerAddressQueryOptions(\n signer: GenericSigner,\n): QueryFactoryOptions<\n Address,\n Error,\n Address,\n ReturnType<typeof zamaQueryKeys.signerAddress.scope>\n> {\n return {\n queryKey: zamaQueryKeys.signerAddress.scope(getSignerScope(signer)),\n queryFn: async () => signer.getAddress(),\n staleTime: 30_000,\n };\n}\n","import { decimalsContract, nameContract, symbolContract } from \"../contracts\";\n\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\nimport type { Address } from \"viem\";\n\n/** ERC-20 token metadata returned by {@link tokenMetadataQueryOptions}. */\nexport interface TokenMetadata {\n name: string;\n symbol: string;\n decimals: number;\n}\n\nexport interface TokenMetadataQueryConfig {\n query?: Record<string, unknown>;\n}\n\nexport function tokenMetadataQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config?: TokenMetadataQueryConfig,\n): QueryFactoryOptions<\n TokenMetadata,\n Error,\n TokenMetadata,\n ReturnType<typeof zamaQueryKeys.tokenMetadata.token>\n> {\n const queryKey = zamaQueryKeys.tokenMetadata.token(tokenAddress);\n\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress }] = context.queryKey;\n const [name, symbol, decimals] = await Promise.all([\n sdk.provider.readContract(nameContract(keyTokenAddress)),\n sdk.provider.readContract(symbolContract(keyTokenAddress)),\n sdk.provider.readContract(decimalsContract(keyTokenAddress)),\n ]);\n return { name, symbol, decimals };\n },\n staleTime: Infinity,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import {\n isConfidentialTokenContract,\n isConfidentialWrapperContract,\n supportsInterfaceContract,\n ERC7984_WRAPPER_INTERFACE_ID,\n} from \"../contracts\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport { isContractCallError } from \"../utils\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\nimport type { Address } from \"viem\";\n\nexport interface IsConfidentialQueryConfig {\n query?: Record<string, unknown>;\n}\n\nexport function isConfidentialQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config?: IsConfidentialQueryConfig,\n): QueryFactoryOptions<\n boolean,\n Error,\n boolean,\n ReturnType<typeof zamaQueryKeys.isConfidential.token>\n> {\n const queryKey = zamaQueryKeys.isConfidential.token(tokenAddress);\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress }] = context.queryKey;\n try {\n return await sdk.provider.readContract(isConfidentialTokenContract(keyTokenAddress));\n } catch (err) {\n // Only suppress contract execution reverts (non-ERC-165 contracts).\n // Re-throw network/transport errors so TanStack Query's retry logic applies.\n if (isContractCallError(err)) {\n return false;\n }\n throw err;\n }\n },\n staleTime: Infinity,\n enabled: config?.query?.enabled !== false,\n };\n}\n\nexport function isWrapperQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config?: IsConfidentialQueryConfig,\n): QueryFactoryOptions<boolean, Error, boolean, ReturnType<typeof zamaQueryKeys.isWrapper.token>> {\n const queryKey = zamaQueryKeys.isWrapper.token(tokenAddress);\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress }] = context.queryKey;\n try {\n // During the transition period, check both wrapper interface IDs in parallel.\n // Either returning true is sufficient to identify a confidential wrapper.\n const [legacyMatch, newMatch] = await Promise.all([\n sdk.provider.readContract(isConfidentialWrapperContract(keyTokenAddress)),\n sdk.provider.readContract(\n supportsInterfaceContract(keyTokenAddress, ERC7984_WRAPPER_INTERFACE_ID),\n ),\n ]);\n return legacyMatch || newMatch;\n } catch (err) {\n // Only suppress contract execution reverts (non-ERC-165 contracts).\n // Re-throw network/transport errors so TanStack Query's retry logic applies.\n if (isContractCallError(err)) {\n return false;\n }\n throw err;\n }\n },\n staleTime: Infinity,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import {\n ERC7984_WRAPPER_INTERFACE_ID,\n ERC7984_WRAPPER_INTERFACE_ID_LEGACY,\n supportsInterfaceContract,\n} from \"../contracts\";\nimport { ConfigurationError } from \"../errors\";\nimport type { GenericProvider } from \"../types\";\nimport { isContractCallError } from \"../utils\";\nimport type { Address } from \"viem\";\n\nexport type WrapperInterfaceVersion = \"legacy\" | \"upgraded\";\n\nasync function safeSupportsInterface(\n provider: GenericProvider,\n wrapperAddress: Address,\n interfaceId: Address,\n): Promise<boolean> {\n try {\n return await provider.readContract(supportsInterfaceContract(wrapperAddress, interfaceId));\n } catch (error) {\n if (isContractCallError(error)) {\n return false;\n }\n throw error;\n }\n}\n\nexport async function detectWrapperInterfaceVersion(\n provider: GenericProvider,\n wrapperAddress: Address,\n): Promise<WrapperInterfaceVersion> {\n // Probe the upgraded interface first: it is the target steady state and lets\n // post-upgrade wrappers avoid the legacy ERC-165 read on every refetch.\n const supportsUpgraded = await safeSupportsInterface(\n provider,\n wrapperAddress,\n ERC7984_WRAPPER_INTERFACE_ID,\n );\n if (supportsUpgraded) {\n return \"upgraded\";\n }\n\n const supportsLegacy = await safeSupportsInterface(\n provider,\n wrapperAddress,\n ERC7984_WRAPPER_INTERFACE_ID_LEGACY,\n );\n if (supportsLegacy) {\n return \"legacy\";\n }\n\n throw new ConfigurationError(\n `Contract ${wrapperAddress} does not support a known ERC7984 wrapper interface`,\n );\n}\n","import { inferredTotalSupplyContract, totalSupplyContract } from \"../contracts\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\nimport { detectWrapperInterfaceVersion } from \"./wrapper-interface-version\";\nimport type { Address } from \"viem\";\n\nexport interface TotalSupplyQueryConfig {\n query?: Record<string, unknown>;\n}\n\nexport function totalSupplyQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config?: TotalSupplyQueryConfig,\n): QueryFactoryOptions<bigint, Error, bigint, ReturnType<typeof zamaQueryKeys.totalSupply.token>> {\n const queryKey = zamaQueryKeys.totalSupply.token(tokenAddress);\n\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress }] = context.queryKey;\n // ERC-165 detection adds one or two RPC calls per refetch, which is acceptable\n // while both legacy and upgraded wrappers coexist. Remove this branch once\n // all supported wrappers expose `inferredTotalSupply()`.\n const version = await detectWrapperInterfaceVersion(sdk.provider, keyTokenAddress);\n if (version === \"upgraded\") {\n return sdk.provider.readContract(inferredTotalSupplyContract(keyTokenAddress));\n }\n return sdk.provider.readContract(totalSupplyContract(keyTokenAddress));\n },\n staleTime: 30_000,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import type { Address } from \"viem\";\nimport type { WrappersRegistry } from \"../wrappers-registry\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { assertNonNullable } from \"../utils/assertions\";\nimport { filterQueryOptions } from \"./utils\";\n\nexport interface WrapperDiscoveryQueryConfig {\n /**\n * Address of any confidential token you control.\n * Used to scope the query cache key and to gate whether the query\n * is enabled — it does not affect which wrapper the registry returns.\n */\n tokenAddress?: Address;\n /**\n * The ERC-20 token address to discover the confidential wrapper for.\n * The registry is resolved automatically from chain config.\n */\n erc20Address?: Address;\n /**\n * The resolved registry contract address for the current chain.\n * Included in the query key so that switching chains invalidates\n * stale cached results. Pass `undefined` when the chain ID is not\n * yet known — the query will be disabled.\n */\n registryAddress?: Address;\n query?: Record<string, unknown>;\n}\n\nexport function wrapperDiscoveryQueryOptions(\n registry: WrappersRegistry,\n config: WrapperDiscoveryQueryConfig,\n): QueryFactoryOptions<\n Address | null,\n Error,\n Address | null,\n ReturnType<typeof zamaQueryKeys.wrapperDiscovery.token>\n> {\n const queryKey = zamaQueryKeys.wrapperDiscovery.token(\n config.tokenAddress,\n config.erc20Address,\n config.registryAddress,\n );\n\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { erc20Address }] = context.queryKey;\n assertNonNullable(erc20Address, \"wrapperDiscoveryQueryOptions: erc20Address\");\n const result = await registry.getConfidentialToken(erc20Address);\n return result ? result.confidentialTokenAddress : null;\n },\n staleTime: Infinity,\n enabled:\n Boolean(config.tokenAddress && config.erc20Address && config.registryAddress) &&\n config.query?.enabled !== false,\n };\n}\n","import { allowanceContract, underlyingContract } from \"../contracts\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport { assertNonNullable } from \"../utils/assertions\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\nimport type { Address } from \"viem\";\n\nexport interface UnderlyingAllowanceQueryConfig {\n owner?: Address;\n wrapperAddress?: Address;\n query?: Record<string, unknown>;\n}\n\nexport function underlyingAllowanceQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config: UnderlyingAllowanceQueryConfig,\n): QueryFactoryOptions<\n bigint,\n Error,\n bigint,\n ReturnType<typeof zamaQueryKeys.underlyingAllowance.scope>\n> {\n const ownerKey = config.owner;\n const wrapperAddressKey = config.wrapperAddress;\n const queryEnabled = config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.underlyingAllowance.scope(\n tokenAddress,\n ownerKey,\n wrapperAddressKey,\n );\n\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { owner: keyOwner, wrapperAddress: keyWrapperAddress }] = context.queryKey;\n assertNonNullable(keyOwner, \"underlyingAllowanceQueryOptions: owner\");\n assertNonNullable(keyWrapperAddress, \"underlyingAllowanceQueryOptions: wrapperAddress\");\n const underlying = await sdk.provider.readContract(underlyingContract(keyWrapperAddress));\n return sdk.provider.readContract(allowanceContract(underlying, keyOwner, keyWrapperAddress));\n },\n staleTime: 30_000,\n enabled: Boolean(ownerKey && wrapperAddressKey) && queryEnabled,\n };\n}\n","import { isOperatorContract } from \"../contracts\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport { assertNonNullable } from \"../utils/assertions\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { filterQueryOptions } from \"./utils\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport type { Address } from \"viem\";\n\nexport interface ConfidentialIsApprovedQueryConfig {\n holder?: Address;\n spender?: Address;\n query?: Record<string, unknown>;\n}\n\nexport function confidentialIsApprovedQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address | undefined,\n config: ConfidentialIsApprovedQueryConfig,\n): QueryFactoryOptions<\n boolean,\n Error,\n boolean,\n ReturnType<typeof zamaQueryKeys.confidentialIsApproved.scope>\n> {\n const holderKey = config.holder;\n const spenderKey = config.spender;\n const queryEnabled = config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.confidentialIsApproved.scope(tokenAddress, holderKey, spenderKey);\n\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress, holder: keyHolder, spender: keySpender }] =\n context.queryKey;\n assertNonNullable(keyTokenAddress, \"confidentialIsApprovedQueryOptions: tokenAddress\");\n assertNonNullable(keyHolder, \"confidentialIsApprovedQueryOptions: holder\");\n assertNonNullable(keySpender, \"confidentialIsApprovedQueryOptions: spender\");\n return sdk.provider.readContract(isOperatorContract(keyTokenAddress, keyHolder, keySpender));\n },\n staleTime: 30_000,\n enabled: Boolean(tokenAddress && holderKey && spenderKey) && queryEnabled,\n };\n}\n","import type { PublicKeyData } from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\n\nexport interface PublicKeyQueryConfig {\n query?: Record<string, unknown>;\n}\n\nexport function publicKeyQueryOptions(\n sdk: ZamaSDK,\n config?: PublicKeyQueryConfig,\n): QueryFactoryOptions<\n PublicKeyData | null,\n Error,\n PublicKeyData | null,\n typeof zamaQueryKeys.publicKey.all\n> {\n const queryKey = zamaQueryKeys.publicKey.all;\n\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async () => sdk.relayer.getPublicKey(),\n staleTime: Infinity,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import type { PublicParamsData } from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { filterQueryOptions } from \"./utils\";\nimport { zamaQueryKeys } from \"./query-keys\";\n\nexport interface PublicParamsQueryConfig {\n query?: Record<string, unknown>;\n}\n\nexport function publicParamsQueryOptions(\n sdk: ZamaSDK,\n bits: number,\n config?: PublicParamsQueryConfig,\n): QueryFactoryOptions<\n PublicParamsData | null,\n Error,\n PublicParamsData | null,\n ReturnType<typeof zamaQueryKeys.publicParams.bits>\n> {\n const queryKey = zamaQueryKeys.publicParams.bits(bits);\n\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { bits: keyBits }] = context.queryKey;\n return sdk.relayer.getPublicParams(keyBits);\n },\n staleTime: Infinity,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import type { Address } from \"viem\";\nimport type { ReadonlyToken } from \"../token\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\n\nexport interface ConfidentialBalanceQueryConfig {\n tokenAddress: Address;\n account?: Address;\n query?: Record<string, unknown>;\n}\n\n/** Query options for a single confidential token balance. Auto-gated on `account`. */\nexport function confidentialBalanceQueryOptions(\n token: ReadonlyToken,\n config: ConfidentialBalanceQueryConfig,\n): QueryFactoryOptions<\n bigint,\n Error,\n bigint,\n ReturnType<typeof zamaQueryKeys.confidentialBalance.owner>\n> {\n const queryOpts = config.query ?? {};\n\n return {\n ...filterQueryOptions(queryOpts),\n queryKey: zamaQueryKeys.confidentialBalance.owner(config.tokenAddress, config.account),\n queryFn: async (context) => {\n const [, { owner: keyOwner }] = context.queryKey;\n return token.balanceOf(keyOwner);\n },\n enabled: Boolean(config.account) && queryOpts?.enabled !== false,\n };\n}\n","import type { Address } from \"viem\";\nimport { ReadonlyToken, type BatchBalancesResult } from \"../token/readonly-token\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\n\nexport interface ConfidentialBalancesQueryConfig {\n account?: Address;\n query?: Record<string, unknown>;\n}\n\nexport function confidentialBalancesQueryOptions(\n tokens: ReadonlyToken[],\n config?: ConfidentialBalancesQueryConfig,\n): QueryFactoryOptions<\n BatchBalancesResult,\n Error,\n BatchBalancesResult,\n ReturnType<typeof zamaQueryKeys.confidentialBalances.tokens>\n> {\n const accountKey = config?.account;\n const queryOpts = config?.query ?? {};\n const tokenAddresses = tokens.map((token) => token.address);\n\n return {\n ...filterQueryOptions(queryOpts),\n queryKey: zamaQueryKeys.confidentialBalances.tokens(tokenAddresses, accountKey),\n queryFn: async (context) => {\n const [, { owner: keyOwner }] = context.queryKey;\n return ReadonlyToken.batchBalancesOf(tokens, keyOwner);\n },\n enabled: Boolean(accountKey) && tokens.length > 0 && queryOpts?.enabled !== false,\n };\n}\n","import { type Address, zeroAddress } from \"viem\";\nimport {\n getTokenPairsContract,\n getTokenPairsLengthContract,\n getTokenPairsSliceContract,\n getTokenPairContract,\n getConfidentialTokenAddressContract,\n getTokenAddressContract,\n isConfidentialTokenValidContract,\n} from \"../contracts\";\nimport type {\n TokenWrapperPair,\n TokenWrapperPairWithMetadata,\n PaginatedResult,\n} from \"../contracts/wrappers-registry\";\nimport type { WrappersRegistry } from \"../wrappers-registry\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\n\n/** Default registry TTL in milliseconds — matches {@link WrappersRegistry} default of 86400 s. */\nconst DEFAULT_STALE_TIME_MS = 86400 * 1000;\n\nexport interface WrappersRegistryQueryConfig {\n registryAddress: Address | undefined;\n query?: Record<string, unknown>;\n}\n\nexport function tokenPairsQueryOptions(\n sdk: ZamaSDK,\n config: WrappersRegistryQueryConfig,\n): QueryFactoryOptions<\n readonly TokenWrapperPair[],\n Error,\n readonly TokenWrapperPair[],\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenPairs>\n> {\n const enabled = Boolean(config.registryAddress) && config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenPairs(config.registryAddress ?? zeroAddress);\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress }] = context.queryKey;\n return sdk.provider.readContract(getTokenPairsContract(registryAddress));\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport interface ConfidentialTokenAddressQueryConfig extends WrappersRegistryQueryConfig {\n tokenAddress?: Address;\n}\n\nexport function confidentialTokenAddressQueryOptions(\n sdk: ZamaSDK,\n config: ConfidentialTokenAddressQueryConfig,\n): QueryFactoryOptions<\n readonly [boolean, Address],\n Error,\n readonly [boolean, Address],\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.confidentialTokenAddress>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n Boolean(config.tokenAddress) &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.confidentialTokenAddress(\n config.registryAddress ?? zeroAddress,\n config.tokenAddress ?? zeroAddress,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, tokenAddress }] = context.queryKey;\n return sdk.provider.readContract(\n getConfidentialTokenAddressContract(registryAddress, tokenAddress),\n );\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport interface TokenAddressQueryConfig extends WrappersRegistryQueryConfig {\n confidentialTokenAddress?: Address;\n}\n\nexport function tokenAddressQueryOptions(\n sdk: ZamaSDK,\n config: TokenAddressQueryConfig,\n): QueryFactoryOptions<\n readonly [boolean, Address],\n Error,\n readonly [boolean, Address],\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenAddress>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n Boolean(config.confidentialTokenAddress) &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenAddress(\n config.registryAddress ?? zeroAddress,\n config.confidentialTokenAddress ?? zeroAddress,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, confidentialTokenAddress }] = context.queryKey;\n return sdk.provider.readContract(\n getTokenAddressContract(registryAddress, confidentialTokenAddress),\n );\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport function tokenPairsLengthQueryOptions(\n sdk: ZamaSDK,\n config: WrappersRegistryQueryConfig,\n): QueryFactoryOptions<\n bigint,\n Error,\n bigint,\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenPairsLength>\n> {\n const enabled = Boolean(config.registryAddress) && config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenPairsLength(\n config.registryAddress ?? zeroAddress,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress }] = context.queryKey;\n return sdk.provider.readContract(getTokenPairsLengthContract(registryAddress));\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport interface TokenPairsSliceQueryConfig extends WrappersRegistryQueryConfig {\n fromIndex?: bigint;\n toIndex?: bigint;\n}\n\nexport function tokenPairsSliceQueryOptions(\n sdk: ZamaSDK,\n config: TokenPairsSliceQueryConfig,\n): QueryFactoryOptions<\n readonly TokenWrapperPair[],\n Error,\n readonly TokenWrapperPair[],\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenPairsSlice>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n config.fromIndex !== undefined &&\n config.toIndex !== undefined &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenPairsSlice(\n config.registryAddress ?? zeroAddress,\n String(config.fromIndex ?? 0n),\n String(config.toIndex ?? 0n),\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, fromIndex, toIndex }] = context.queryKey;\n return sdk.provider.readContract(\n getTokenPairsSliceContract(registryAddress, BigInt(fromIndex), BigInt(toIndex)),\n );\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport interface TokenPairQueryConfig extends WrappersRegistryQueryConfig {\n index?: bigint;\n}\n\nexport function tokenPairQueryOptions(\n sdk: ZamaSDK,\n config: TokenPairQueryConfig,\n): QueryFactoryOptions<\n TokenWrapperPair,\n Error,\n TokenWrapperPair,\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenPair>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n config.index !== undefined &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenPair(\n config.registryAddress ?? zeroAddress,\n String(config.index ?? 0n),\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, index }] = context.queryKey;\n return sdk.provider.readContract(getTokenPairContract(registryAddress, BigInt(index)));\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport interface IsConfidentialTokenValidQueryConfig extends WrappersRegistryQueryConfig {\n confidentialTokenAddress?: Address;\n}\n\nexport function isConfidentialTokenValidQueryOptions(\n sdk: ZamaSDK,\n config: IsConfidentialTokenValidQueryConfig,\n): QueryFactoryOptions<\n boolean,\n Error,\n boolean,\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.isConfidentialTokenValid>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n Boolean(config.confidentialTokenAddress) &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.isConfidentialTokenValid(\n config.registryAddress ?? zeroAddress,\n config.confidentialTokenAddress ?? zeroAddress,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, confidentialTokenAddress }] = context.queryKey;\n return sdk.provider.readContract(\n isConfidentialTokenValidContract(registryAddress, confidentialTokenAddress),\n );\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport interface ListPairsQueryConfig {\n /**\n * The registry address for this chain — used as a query key discriminator.\n * The registry instance already knows how to resolve the address for the\n * current chain; this field just keeps the TanStack Query cache isolated\n * per registry contract.\n */\n registryAddress: Address | undefined;\n page?: number;\n pageSize?: number;\n metadata?: boolean;\n query?: Record<string, unknown>;\n}\n\n/**\n * Query options for paginated listing of token wrapper pairs.\n *\n * Accepts a {@link WrappersRegistry} instance rather than a raw provider so that the\n * class-level TTL cache is shared across multiple `queryFn` executions. Pass\n * `sdk.registry` (the ZamaSDK lazy singleton) to ensure a single shared cache.\n */\nexport function listPairsQueryOptions(\n registry: WrappersRegistry,\n config: ListPairsQueryConfig,\n): QueryFactoryOptions<\n PaginatedResult<TokenWrapperPair | TokenWrapperPairWithMetadata>,\n Error,\n PaginatedResult<TokenWrapperPair | TokenWrapperPairWithMetadata>,\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.listPairs>\n> {\n const enabled = Boolean(config.registryAddress) && config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.listPairs(\n config.registryAddress ?? zeroAddress,\n config.page ?? 1,\n config.pageSize ?? 100,\n config.metadata ?? false,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { page, pageSize, metadata }] = context.queryKey;\n return registry.listPairs({ page, pageSize, metadata });\n },\n // Use the registry's own TTL so TanStack Query and the class-level cache\n // operate under the same freshness contract.\n staleTime: registry.ttlMs,\n enabled,\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { ShieldCallbacks, TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link shieldMutationOptions}. */\nexport interface ShieldParams extends ShieldCallbacks {\n amount: bigint;\n approvalStrategy?: \"max\" | \"exact\" | \"skip\";\n /** Recipient address for the shielded tokens. Defaults to the connected wallet. */\n to?: Address;\n}\n\nexport function shieldMutationOptions(\n token: Token,\n): MutationFactoryOptions<readonly [\"zama.shield\", Address], ShieldParams, TransactionResult> {\n return {\n mutationKey: [\"zama.shield\", token.address] as const,\n mutationFn: async ({ amount, ...rest }) => token.shield(amount, rest),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult, TransferOptions } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link confidentialTransferMutationOptions}. */\nexport interface ConfidentialTransferParams extends TransferOptions {\n to: Address;\n amount: bigint;\n}\n\nexport function confidentialTransferMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.confidentialTransfer\", Address],\n ConfidentialTransferParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.confidentialTransfer\", token.address] as const,\n mutationFn: async ({ to, amount, ...options }) =>\n token.confidentialTransfer(to, amount, options),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransferCallbacks, TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link confidentialTransferFromMutationOptions}. */\nexport interface ConfidentialTransferFromParams {\n from: Address;\n to: Address;\n amount: bigint;\n /** Optional progress callbacks for the multi-step transfer flow. */\n callbacks?: TransferCallbacks;\n}\n\nexport function confidentialTransferFromMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.confidentialTransferFrom\", Address],\n ConfidentialTransferFromParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.confidentialTransferFrom\", token.address] as const,\n mutationFn: async ({ from, to, amount, callbacks }) =>\n token.confidentialTransferFrom(from, to, amount, callbacks),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link confidentialApproveMutationOptions}. */\nexport interface ConfidentialApproveParams {\n spender: Address;\n until?: number;\n}\n\nexport function confidentialApproveMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.confidentialApprove\", Address],\n ConfidentialApproveParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.confidentialApprove\", token.address] as const,\n mutationFn: async ({ spender, until }) => token.approve(spender, until),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link approveUnderlyingMutationOptions}. */\nexport interface ApproveUnderlyingParams {\n amount?: bigint;\n}\n\nexport function approveUnderlyingMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.approveUnderlying\", Address],\n ApproveUnderlyingParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.approveUnderlying\", token.address] as const,\n mutationFn: async ({ amount }) => token.approveUnderlying(amount),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult, UnshieldOptions } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link unshieldMutationOptions}. */\nexport interface UnshieldParams extends UnshieldOptions {\n amount: bigint;\n}\n\nexport function unshieldMutationOptions(\n token: Token,\n): MutationFactoryOptions<readonly [\"zama.unshield\", Address], UnshieldParams, TransactionResult> {\n return {\n mutationKey: [\"zama.unshield\", token.address] as const,\n mutationFn: async ({ amount, ...options }) => token.unshield(amount, options),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult, UnshieldCallbacks } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link unshieldAllMutationOptions}. */\nexport interface UnshieldAllParams extends UnshieldCallbacks {}\n\nexport function unshieldAllMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.unshieldAll\", Address],\n UnshieldAllParams | void,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.unshieldAll\", token.address] as const,\n mutationFn: async (params) => token.unshieldAll(params || undefined),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult, UnshieldCallbacks } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address, Hex } from \"viem\";\n\n/** Variables for {@link resumeUnshieldMutationOptions}. */\nexport interface ResumeUnshieldParams extends UnshieldCallbacks {\n unwrapTxHash: Hex;\n}\n\nexport function resumeUnshieldMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.resumeUnshield\", Address],\n ResumeUnshieldParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.resumeUnshield\", token.address] as const,\n mutationFn: async ({ unwrapTxHash, ...callbacks }) =>\n token.resumeUnshield(unwrapTxHash, callbacks),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link unwrapMutationOptions}. */\nexport interface UnwrapParams {\n amount: bigint;\n}\n\nexport function unwrapMutationOptions(\n token: Token,\n): MutationFactoryOptions<readonly [\"zama.unwrap\", Address], UnwrapParams, TransactionResult> {\n return {\n mutationKey: [\"zama.unwrap\", token.address] as const,\n mutationFn: async ({ amount }) => token.unwrap(amount),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\nexport function unwrapAllMutationOptions(\n token: Token,\n): MutationFactoryOptions<readonly [\"zama.unwrapAll\", Address], void, TransactionResult> {\n return {\n mutationKey: [\"zama.unwrapAll\", token.address] as const,\n mutationFn: async () => token.unwrapAll(),\n };\n}\n","import type { Handle } from \"../relayer/relayer-sdk.types\";\nimport type { Token } from \"../token/token\";\nimport type { TransactionResult } from \"../types\";\nimport { ConfigurationError } from \"../errors\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n/** Variables for {@link finalizeUnwrapMutationOptions}. */\nexport type FinalizeUnwrapParams =\n /** Preferred input from upgraded `UnwrapRequested` events. */\n | { unwrapRequestId: Handle; burnAmountHandle?: never }\n /** Legacy input from pre-upgrade `UnwrapRequested` events. */\n | { unwrapRequestId?: never; burnAmountHandle: Handle };\n\nexport function finalizeUnwrapMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.finalizeUnwrap\", Address],\n FinalizeUnwrapParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.finalizeUnwrap\", token.address] as const,\n mutationFn: async (params) => {\n const handle = params.unwrapRequestId ?? params.burnAmountHandle;\n if (!handle) {\n throw new ConfigurationError(\"finalizeUnwrap requires unwrapRequestId or burnAmountHandle\");\n }\n return token.finalizeUnwrap(handle);\n },\n };\n}\n","import type { EncryptParams, EncryptResult } from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\nexport function encryptMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.encrypt\"], EncryptParams, EncryptResult> {\n return {\n mutationKey: [\"zama.encrypt\"],\n mutationFn: async (params) => sdk.relayer.encrypt(params),\n };\n}\n","import type { KeypairType } from \"@zama-fhe/relayer-sdk/bundle\";\nimport type { Hex } from \"viem\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\nexport function generateKeypairMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.generateKeypair\"], void, KeypairType<Hex>> {\n return {\n mutationKey: [\"zama.generateKeypair\"],\n mutationFn: async () => sdk.relayer.generateKeypair(),\n };\n}\n","import type { KmsUserDecryptEIP712UserArgsType } from \"@zama-fhe/relayer-sdk/bundle\";\nimport type { Address, Hex } from \"viem\";\nimport type { EIP712TypedData } from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/**\n * Variables for {@link createEIP712MutationOptions}. Derived from\n * {@link KmsUserDecryptEIP712UserArgsType} with stricter `publicKey`/`contractAddresses`\n * typing and optional `durationDays`. `extraData` is computed internally and omitted.\n */\nexport type CreateEIP712Params = Pick<KmsUserDecryptEIP712UserArgsType, \"startTimestamp\"> & {\n publicKey: Hex;\n contractAddresses: Address[];\n durationDays?: number;\n};\n\nexport function createEIP712MutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.createEIP712\"], CreateEIP712Params, EIP712TypedData> {\n return {\n mutationKey: [\"zama.createEIP712\"],\n mutationFn: async ({ publicKey, contractAddresses, startTimestamp, durationDays }) =>\n sdk.relayer.createEIP712(publicKey, contractAddresses, startTimestamp, durationDays),\n };\n}\n","import type { KmsDelegatedUserDecryptEIP712Type } from \"@zama-fhe/relayer-sdk/bundle\";\nimport type { Address, Hex } from \"viem\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link createDelegatedUserDecryptEIP712MutationOptions}. */\nexport interface CreateDelegatedUserDecryptEIP712Params {\n publicKey: Hex;\n contractAddresses: Address[];\n delegatorAddress: Address;\n startTimestamp: number;\n durationDays?: number;\n}\n\nexport function createDelegatedUserDecryptEIP712MutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<\n readonly [\"zama.createDelegatedUserDecryptEIP712\"],\n CreateDelegatedUserDecryptEIP712Params,\n KmsDelegatedUserDecryptEIP712Type\n> {\n return {\n mutationKey: [\"zama.createDelegatedUserDecryptEIP712\"],\n mutationFn: async ({\n publicKey,\n contractAddresses,\n delegatorAddress,\n startTimestamp,\n durationDays,\n }) =>\n sdk.relayer.createDelegatedUserDecryptEIP712(\n publicKey,\n contractAddresses,\n delegatorAddress,\n startTimestamp,\n durationDays,\n ),\n };\n}\n","import type {\n ClearValueType,\n DelegatedUserDecryptParams,\n Handle,\n} from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\nexport function delegatedUserDecryptMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<\n readonly [\"zama.delegatedUserDecrypt\"],\n DelegatedUserDecryptParams,\n Readonly<Record<Handle, ClearValueType>>\n> {\n return {\n mutationKey: [\"zama.delegatedUserDecrypt\"],\n mutationFn: async (params) => sdk.relayer.delegatedUserDecrypt(params),\n };\n}\n","import type { ClearValueType, Handle, PublicDecryptResult } from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\n\nexport function publicDecryptMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.publicDecrypt\"], Handle[], PublicDecryptResult> {\n return {\n mutationKey: [\"zama.publicDecrypt\"],\n mutationFn: async (handles) => sdk.publicDecrypt(handles),\n onSuccess: (data, _variables, _onMutateResult, context) => {\n for (const [handle, value] of Object.entries(data.clearValues) as [\n Handle,\n ClearValueType,\n ][]) {\n context.client.setQueryData(zamaQueryKeys.decryption.handle(handle), value);\n }\n },\n };\n}\n","import type { InputProofBytesType, ZKProofLike } from \"@zama-fhe/relayer-sdk/bundle\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\nexport function requestZKProofVerificationMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<\n readonly [\"zama.requestZKProofVerification\"],\n ZKProofLike,\n InputProofBytesType\n> {\n return {\n mutationKey: [\"zama.requestZKProofVerification\"],\n mutationFn: async (zkProof) => sdk.relayer.requestZKProofVerification(zkProof),\n };\n}\n","import type { Address } from \"viem\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\nexport function allowMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.allow\"], Address[], void> {\n return {\n mutationKey: [\"zama.allow\"],\n mutationFn: (contractAddresses) => sdk.allow(contractAddresses),\n };\n}\n","import type { Address } from \"viem\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\n\nexport interface IsAllowedQueryConfig {\n account: Address;\n /** Contract addresses to check credentials against. */\n contractAddresses: [Address, ...Address[]];\n query?: Record<string, unknown>;\n}\n\nexport function isAllowedQueryOptions(\n sdk: ZamaSDK,\n config: IsAllowedQueryConfig,\n): QueryFactoryOptions<boolean, Error, boolean, ReturnType<typeof zamaQueryKeys.isAllowed.scope>> {\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey: zamaQueryKeys.isAllowed.scope(config.account, config.contractAddresses),\n queryFn: (context) => {\n const [, { contractAddresses }] = context.queryKey;\n return sdk.credentials.isAllowed(contractAddresses as [Address, ...Address[]]);\n },\n staleTime: 30_000,\n enabled: config.query?.enabled !== false,\n } as const;\n}\n","import type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\nexport function revokeMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.revoke\"], Address[], void> {\n return {\n mutationKey: [\"zama.revoke\"],\n mutationFn: (contractAddresses) => sdk.credentials.revoke(...contractAddresses),\n };\n}\n","import type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\nexport function revokeSessionMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.revokeSession\"], void, void> {\n return {\n mutationKey: [\"zama.revokeSession\"],\n mutationFn: () => sdk.revokeSession(),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { Address } from \"viem\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link delegateDecryptionMutationOptions}. */\nexport interface DelegateDecryptionParams {\n delegateAddress: Address;\n expirationDate?: Date;\n}\n\nexport function delegateDecryptionMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.delegateDecryption\", Address],\n DelegateDecryptionParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.delegateDecryption\", token.address] as const,\n mutationFn: async ({ delegateAddress, expirationDate }) =>\n token.delegateDecryption({ delegateAddress, expirationDate }),\n };\n}\n","import type { UserDecryptResults } from \"@zama-fhe/relayer-sdk/bundle\";\nimport type { Address } from \"viem\";\nimport type { Handle } from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\n\nexport interface DecryptHandle {\n handle: Handle;\n contractAddress: Address;\n}\n\n/** Alias for {@link UserDecryptResults}. */\nexport type DecryptResult = UserDecryptResults;\n\nexport interface UserDecryptQueryConfig {\n handles: DecryptHandle[];\n}\n\nexport function userDecryptQueryOptions(\n sdk: ZamaSDK,\n config: UserDecryptQueryConfig,\n): QueryFactoryOptions<\n DecryptResult,\n Error,\n DecryptResult,\n ReturnType<typeof zamaQueryKeys.decryption.handles>\n> {\n return {\n queryKey: zamaQueryKeys.decryption.handles(config.handles),\n queryFn: (context) => {\n const [, { handles }] = context.queryKey;\n return sdk.userDecrypt(handles as DecryptHandle[]);\n },\n staleTime: Infinity,\n enabled: config.handles.length > 0,\n };\n}\n","import type { Address } from \"viem\";\nimport type { ReadonlyToken } from \"../token/readonly-token\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link decryptBalanceAsMutationOptions}. */\nexport interface DecryptBalanceAsParams {\n delegatorAddress: Address;\n accountAddress?: Address;\n}\n\nexport function decryptBalanceAsMutationOptions(\n readonlyToken: ReadonlyToken,\n): MutationFactoryOptions<\n readonly [\"zama.decryptBalanceAs\", Address],\n DecryptBalanceAsParams,\n bigint\n> {\n return {\n mutationKey: [\"zama.decryptBalanceAs\", readonlyToken.address] as const,\n mutationFn: async ({ delegatorAddress, accountAddress }) =>\n readonlyToken.decryptBalanceAs({ delegatorAddress, accountAddress }),\n };\n}\n","import { ReadonlyToken, type BatchDecryptAsOptions } from \"../token/readonly-token\";\nimport type { Address } from \"viem\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link batchDecryptBalancesAsMutationOptions}. */\nexport type BatchDecryptBalancesAsParams = BatchDecryptAsOptions;\n\nexport function batchDecryptBalancesAsMutationOptions(\n tokens: ReadonlyToken[],\n): MutationFactoryOptions<\n readonly [\"zama.batchDecryptBalancesAs\", ...Address[]],\n BatchDecryptBalancesAsParams,\n Map<Address, bigint>\n> {\n return {\n mutationKey: [\"zama.batchDecryptBalancesAs\", ...tokens.map((t) => t.address)] as const,\n mutationFn: async (params) => ReadonlyToken.batchDecryptBalancesAs(tokens, params),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { Address } from \"viem\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link revokeDelegationMutationOptions}. */\nexport interface RevokeDelegationParams {\n delegateAddress: Address;\n}\n\nexport function revokeDelegationMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.revokeDelegation\", Address],\n RevokeDelegationParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.revokeDelegation\", token.address] as const,\n mutationFn: async ({ delegateAddress }) => token.revokeDelegation({ delegateAddress }),\n };\n}\n","import type { Address } from \"viem\";\nimport { MAX_UINT64 } from \"../contracts\";\nimport { getDelegationExpiryContract } from \"../contracts/acl\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { filterQueryOptions } from \"./utils\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { assertNonNullable } from \"../utils\";\n\nexport interface DelegationStatusData {\n isDelegated: boolean;\n expiryTimestamp: bigint;\n}\n\nexport interface DelegationStatusQueryConfig {\n tokenAddress: Address | undefined;\n delegatorAddress?: Address;\n delegateAddress?: Address;\n query?: Record<string, unknown>;\n}\n\nexport function delegationStatusQueryOptions(\n sdk: ZamaSDK,\n config: DelegationStatusQueryConfig,\n): QueryFactoryOptions<\n DelegationStatusData,\n Error,\n DelegationStatusData,\n ReturnType<typeof zamaQueryKeys.delegationStatus.scope>\n> {\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey: zamaQueryKeys.delegationStatus.scope(\n config.tokenAddress,\n config.delegatorAddress,\n config.delegateAddress,\n ),\n queryFn: async (context) => {\n const [, { tokenAddress, delegatorAddress, delegateAddress }] = context.queryKey;\n assertNonNullable(tokenAddress, \"delegationStatusQueryOptions: tokenAddress\");\n assertNonNullable(delegatorAddress, \"delegationStatusQueryOptions: delegatorAddress\");\n assertNonNullable(delegateAddress, \"delegationStatusQueryOptions: delegateAddress\");\n const acl = await sdk.relayer.getAclAddress();\n const expiryTimestamp = await sdk.provider.readContract(\n getDelegationExpiryContract(acl, delegatorAddress, delegateAddress, tokenAddress),\n );\n // Derive isDelegated from expiry + chain time to stay consistent\n // with ReadonlyToken.isDelegated() (avoids client-clock skew).\n let isDelegated: boolean;\n if (expiryTimestamp === 0n) {\n isDelegated = false;\n } else if (expiryTimestamp === MAX_UINT64) {\n isDelegated = true;\n } else {\n const now = await sdk.provider.getBlockTimestamp();\n isDelegated = expiryTimestamp > now;\n }\n return { isDelegated, expiryTimestamp };\n },\n enabled:\n Boolean(config.tokenAddress && config.delegatorAddress && config.delegateAddress) &&\n config.query?.enabled !== false,\n } as const;\n}\n"],"mappings":"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"}
|
|
@@ -137,22 +137,15 @@ declare function publicParamsQueryOptions(sdk: ZamaSDK, bits: number, config?: P
|
|
|
137
137
|
//#region src/query/confidential-balance.d.ts
|
|
138
138
|
interface ConfidentialBalanceQueryConfig {
|
|
139
139
|
tokenAddress: Address;
|
|
140
|
-
|
|
140
|
+
account?: Address;
|
|
141
141
|
query?: Record<string, unknown>;
|
|
142
142
|
}
|
|
143
|
-
/**
|
|
144
|
-
* Query options for a single confidential token balance.
|
|
145
|
-
*
|
|
146
|
-
* **Owner gating:** this factory does not gate on `owner !== undefined` because
|
|
147
|
-
* it is also used outside React with an explicit owner. React consumers should
|
|
148
|
-
* apply the gate at the hook level (e.g. `enabled: ... && owner !== undefined`),
|
|
149
|
-
* as {@link useConfidentialBalance} does.
|
|
150
|
-
*/
|
|
143
|
+
/** Query options for a single confidential token balance. Auto-gated on `account`. */
|
|
151
144
|
declare function confidentialBalanceQueryOptions(token: ReadonlyToken, config: ConfidentialBalanceQueryConfig): QueryFactoryOptions<bigint, Error, bigint, ReturnType<typeof zamaQueryKeys.confidentialBalance.owner>>;
|
|
152
145
|
//#endregion
|
|
153
146
|
//#region src/query/confidential-balances.d.ts
|
|
154
147
|
interface ConfidentialBalancesQueryConfig {
|
|
155
|
-
|
|
148
|
+
account?: Address;
|
|
156
149
|
query?: Record<string, unknown>;
|
|
157
150
|
}
|
|
158
151
|
declare function confidentialBalancesQueryOptions(tokens: ReadonlyToken[], config?: ConfidentialBalancesQueryConfig): QueryFactoryOptions<BatchBalancesResult, Error, BatchBalancesResult, ReturnType<typeof zamaQueryKeys.confidentialBalances.tokens>>;
|
package/dist/esm/query/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"../relayer-8ObvIuu-.js";import{f as t,h as n,i as r,l as i,m as a,o,r as s,t as c}from"../readonly-token-D4euKn0-.js";import{a as l}from"../assertions-BARApuMj.js";import{t as u}from"../error-B6H-mBAh.js";import{S as d,T as f,a as ee,d as te,f as p,g as m,h,i as g,l as _,n as v,o as y,p as b,r as x,s as S,t as ne}from"../wrappers-registry-DuhA_F3e.js";import{getAddress as C,zeroAddress as w}from"viem";function T(e){if(!E(e))return!1;let t=e.constructor;if(t===void 0)return!0;let n=t.prototype;return!(!E(n)||!n.hasOwnProperty(`isPrototypeOf`))}function E(e){return Object.prototype.toString.call(e)===`[object Object]`}function D(e){let{gcTime:t,staleTime:n,enabled:r,select:i,refetchInterval:a,refetchOnMount:o,refetchOnWindowFocus:s,refetchOnReconnect:c,retry:l,retryDelay:u,retryOnMount:d,queryFn:f,queryKey:ee,queryKeyHashFn:te,initialData:p,initialDataUpdatedAt:m,placeholderData:h,structuralSharing:g,throwOnError:_,meta:v,query:y,pollingInterval:b,...x}=e;return x}function O(e){return JSON.stringify(e,(e,t)=>T(t)?Object.keys(t).toSorted().reduce((e,n)=>(e[n]=t[n],e),{}):typeof t==`bigint`?t.toString():t)}const k=e=>e.map(e=>C(e)),A=e=>e===void 0?void 0:C(e),j={signerAddress:{all:[`zama.signerAddress`],scope:e=>[`zama.signerAddress`,{scope:e}]},confidentialBalance:{all:[`zama.confidentialBalance`],token:e=>[`zama.confidentialBalance`,{tokenAddress:C(e)}],owner:(e,t)=>[`zama.confidentialBalance`,{tokenAddress:C(e),...t?{owner:C(t)}:{}}]},confidentialBalances:{all:[`zama.confidentialBalances`],tokens:(e,t)=>[`zama.confidentialBalances`,{tokenAddresses:k(e),...t?{owner:C(t)}:{}}]},tokenMetadata:{all:[`zama.tokenMetadata`],token:e=>[`zama.tokenMetadata`,{tokenAddress:C(e)}]},isConfidential:{all:[`zama.isConfidential`],token:e=>[`zama.isConfidential`,{tokenAddress:C(e)}]},isWrapper:{all:[`zama.isWrapper`],token:e=>[`zama.isWrapper`,{tokenAddress:C(e)}]},wrapperDiscovery:{all:[`zama.wrapperDiscovery`],token:(e,t,n)=>{let r=A(e),i=A(t),a=A(n);return[`zama.wrapperDiscovery`,{...r?{tokenAddress:r}:{},...i?{erc20Address:i}:{},...a?{registryAddress:a}:{}}]}},underlyingAllowance:{all:[`zama.underlyingAllowance`],token:e=>[`zama.underlyingAllowance`,{tokenAddress:C(e)}],scope:(e,t,n)=>[`zama.underlyingAllowance`,{tokenAddress:C(e),...t?{owner:C(t)}:{},...n?{wrapperAddress:C(n)}:{}}]},confidentialIsApproved:{all:[`zama.confidentialIsApproved`],token:e=>{let t=A(e);return[`zama.confidentialIsApproved`,t?{tokenAddress:t}:{}]},scope:(e,t,n)=>{let r=A(e),i=A(t),a=A(n);return[`zama.confidentialIsApproved`,{...r?{tokenAddress:r}:{},...i?{holder:i}:{},...a?{spender:a}:{}}]}},totalSupply:{all:[`zama.totalSupply`],token:e=>[`zama.totalSupply`,{tokenAddress:C(e)}]},isAllowed:{all:[`zama.isAllowed`],scope:(e,t)=>[`zama.isAllowed`,{account:C(e),contractAddresses:k(t).toSorted()}]},publicKey:{all:[`zama.publicKey`]},publicParams:{all:[`zama.publicParams`],bits:e=>[`zama.publicParams`,{bits:e}]},delegationStatus:{all:[`zama.delegationStatus`],token:e=>{let t=A(e);return[`zama.delegationStatus`,t?{tokenAddress:t}:{}]},scope:(e,t,n)=>{let r=A(e),i=A(t),a=A(n);return[`zama.delegationStatus`,{...r?{tokenAddress:r}:{},...i?{delegatorAddress:i}:{},...a?{delegateAddress:a}:{}}]}},decryption:{all:[`zama.decryption`],handle:(e,t)=>[`zama.decryption`,{handle:e,...t===void 0?{}:{contractAddress:C(t)}}],handles:e=>[`zama.decryption`,{handles:[...e].toSorted((e,t)=>e.handle.localeCompare(t.handle)).map(e=>({handle:e.handle,contractAddress:C(e.contractAddress)}))}]},wrappersRegistry:{all:[`zama.wrappersRegistry`],chainId:()=>[`zama.wrappersRegistry`,{type:`chainId`}],tokenPairs:e=>[`zama.wrappersRegistry`,{type:`tokenPairs`,registryAddress:C(e)}],confidentialTokenAddress:(e,t)=>[`zama.wrappersRegistry`,{type:`confidentialTokenAddress`,registryAddress:C(e),tokenAddress:C(t)}],tokenAddress:(e,t)=>[`zama.wrappersRegistry`,{type:`tokenAddress`,registryAddress:C(e),confidentialTokenAddress:C(t)}],tokenPairsLength:e=>[`zama.wrappersRegistry`,{type:`tokenPairsLength`,registryAddress:C(e)}],tokenPairsSlice:(e,t,n)=>[`zama.wrappersRegistry`,{type:`tokenPairsSlice`,registryAddress:C(e),fromIndex:t,toIndex:n}],tokenPair:(e,t)=>[`zama.wrappersRegistry`,{type:`tokenPair`,registryAddress:C(e),index:t}],isConfidentialTokenValid:(e,t)=>[`zama.wrappersRegistry`,{type:`isConfidentialTokenValid`,registryAddress:C(e),confidentialTokenAddress:C(t)}],listPairs:(e,t,n,r)=>[`zama.wrappersRegistry`,{type:`listPairs`,registryAddress:C(e),page:t,pageSize:n,metadata:r}]}};function M(e,t){e.invalidateQueries({queryKey:j.underlyingAllowance.token(t)})}function N(e,t){P(e,t),M(e,t),H(e)}function P(e,t){e.invalidateQueries({queryKey:j.confidentialBalance.token(t)}),e.invalidateQueries({queryKey:j.confidentialBalances.all})}function F(e,t){P(e,t),M(e,t),H(e)}function I(e,t){P(e,t),M(e,t),H(e)}function L(e,t){P(e,t)}function R(e,t){M(e,t)}function z(e,t){e.invalidateQueries({queryKey:j.confidentialIsApproved.token(t)})}function B(e){return Array.isArray(e.queryKey)&&typeof e.queryKey[0]==`string`?e.queryKey[0].startsWith(`zama.`):!1}function V(e){return Array.isArray(e.queryKey)&&e.queryKey.some(e=>typeof e!=`object`||!e||!(`functionName`in e)?!1:e.functionName===`balanceOf`)}function H(e){e.invalidateQueries({predicate:V})}function U(e){e.removeQueries({queryKey:j.signerAddress.all}),e.removeQueries({queryKey:j.decryption.all}),e.invalidateQueries({predicate:B}),H(e)}const W=new WeakMap;let G=1;function K(e){let t=W.get(e);if(t!==void 0)return t;let n=G++;return W.set(e,n),n}function q(e){return{queryKey:j.signerAddress.scope(K(e)),queryFn:async()=>e.getAddress(),staleTime:3e4}}function J(e,r,i){let o=j.tokenMetadata.token(r);return{...D(i?.query??{}),queryKey:o,queryFn:async r=>{let[,{tokenAddress:i}]=r.queryKey,[o,s,c]=await Promise.all([e.provider.readContract(a(i)),e.provider.readContract(n(i)),e.provider.readContract(t(i))]);return{name:o,symbol:s,decimals:c}},staleTime:1/0,enabled:i?.query?.enabled!==!1}}function Y(e,t,n){let r=j.isConfidential.token(t);return{...D(n?.query??{}),queryKey:r,queryFn:async t=>{let[,{tokenAddress:n}]=t.queryKey;try{return await e.provider.readContract(te(n))}catch(e){if(u(e))return!1;throw e}},staleTime:1/0,enabled:n?.query?.enabled!==!1}}function X(e,t,n){let r=j.isWrapper.token(t);return{...D(n?.query??{}),queryKey:r,queryFn:async t=>{let[,{tokenAddress:n}]=t.queryKey;try{let[t,r]=await Promise.all([e.provider.readContract(p(n)),e.provider.readContract(b(n,_))]);return t||r}catch(e){if(u(e))return!1;throw e}},staleTime:1/0,enabled:n?.query?.enabled!==!1}}async function Z(e,t,n){try{return await e.readContract(b(t,n))}catch(e){if(u(e))return!1;throw e}}async function re(t,n){if(await Z(t,n,`0x1f1c62b2`))return`upgraded`;if(await Z(t,n,`0xd04584ba`))return`legacy`;throw new e(`Contract ${n} does not support a known ERC7984 wrapper interface`)}function ie(e,t,n){let r=j.totalSupply.token(t);return{...D(n?.query??{}),queryKey:r,queryFn:async t=>{let[,{tokenAddress:n}]=t.queryKey;return await re(e.provider,n)===`upgraded`?e.provider.readContract(h(n)):e.provider.readContract(f(n))},staleTime:3e4,enabled:n?.query?.enabled!==!1}}function ae(e,t){let n=j.wrapperDiscovery.token(t.tokenAddress,t.erc20Address,t.registryAddress);return{...D(t.query??{}),queryKey:n,queryFn:async t=>{let[,{erc20Address:n}]=t.queryKey;l(n,`wrapperDiscoveryQueryOptions: erc20Address`);let r=await e.getConfidentialToken(n);return r?r.confidentialTokenAddress:null},staleTime:1/0,enabled:!!(t.tokenAddress&&t.erc20Address&&t.registryAddress)&&t.query?.enabled!==!1}}function oe(e,t,n){let r=n.owner,a=n.wrapperAddress,o=n.query?.enabled!==!1,s=j.underlyingAllowance.scope(t,r,a);return{...D(n.query??{}),queryKey:s,queryFn:async t=>{let[,{owner:n,wrapperAddress:r}]=t.queryKey;l(n,`underlyingAllowanceQueryOptions: owner`),l(r,`underlyingAllowanceQueryOptions: wrapperAddress`);let a=await e.provider.readContract(m(r));return e.provider.readContract(i(a,n,r))},staleTime:3e4,enabled:!!(r&&a)&&o}}function se(e,t,n){let r=n.holder,i=n.spender,a=n.query?.enabled!==!1,o=j.confidentialIsApproved.scope(t,r,i);return{...D(n.query??{}),queryKey:o,queryFn:async t=>{let[,{tokenAddress:n,holder:r,spender:i}]=t.queryKey;return l(n,`confidentialIsApprovedQueryOptions: tokenAddress`),l(r,`confidentialIsApprovedQueryOptions: holder`),l(i,`confidentialIsApprovedQueryOptions: spender`),e.provider.readContract(d(n,r,i))},staleTime:3e4,enabled:!!(t&&r&&i)&&a}}function ce(e,t){let n=j.publicKey.all;return{...D(t?.query??{}),queryKey:n,queryFn:async()=>e.relayer.getPublicKey(),staleTime:1/0,enabled:t?.query?.enabled!==!1}}function le(e,t,n){let r=j.publicParams.bits(t);return{...D(n?.query??{}),queryKey:r,queryFn:async t=>{let[,{bits:n}]=t.queryKey;return e.relayer.getPublicParams(n)},staleTime:1/0,enabled:n?.query?.enabled!==!1}}function ue(e,t){let n=t.query??{};return{...D(n),queryKey:j.confidentialBalance.owner(t.tokenAddress,t.owner),queryFn:async t=>{let[,{owner:n}]=t.queryKey;return e.balanceOf(n)},enabled:n?.enabled!==!1}}function de(e,t){let n=t?.owner,r=t?.query??{},i=e.map(e=>e.address);return{...D(r),queryKey:j.confidentialBalances.tokens(i,n),queryFn:async t=>{let[,{owner:n}]=t.queryKey;return c.batchBalancesOf(e,n)},enabled:e.length>0&&r?.enabled!==!1}}const Q=86400*1e3;function fe(e,t){let n=!!t.registryAddress&&t.query?.enabled!==!1,r=j.wrappersRegistry.tokenPairs(t.registryAddress??w);return{...D(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n}]=t.queryKey;return e.provider.readContract(g(n))},staleTime:Q,enabled:n}}function pe(e,t){let n=!!t.registryAddress&&!!t.tokenAddress&&t.query?.enabled!==!1,r=j.wrappersRegistry.confidentialTokenAddress(t.registryAddress??w,t.tokenAddress??w);return{...D(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n,tokenAddress:r}]=t.queryKey;return e.provider.readContract(ne(n,r))},staleTime:Q,enabled:n}}function me(e,t){let n=!!t.registryAddress&&!!t.confidentialTokenAddress&&t.query?.enabled!==!1,r=j.wrappersRegistry.tokenAddress(t.registryAddress??w,t.confidentialTokenAddress??w);return{...D(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n,confidentialTokenAddress:r}]=t.queryKey;return e.provider.readContract(v(n,r))},staleTime:Q,enabled:n}}function he(e,t){let n=!!t.registryAddress&&t.query?.enabled!==!1,r=j.wrappersRegistry.tokenPairsLength(t.registryAddress??w);return{...D(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n}]=t.queryKey;return e.provider.readContract(ee(n))},staleTime:Q,enabled:n}}function ge(e,t){let n=!!t.registryAddress&&t.fromIndex!==void 0&&t.toIndex!==void 0&&t.query?.enabled!==!1,r=j.wrappersRegistry.tokenPairsSlice(t.registryAddress??w,String(t.fromIndex??0n),String(t.toIndex??0n));return{...D(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n,fromIndex:r,toIndex:i}]=t.queryKey;return e.provider.readContract(y(n,BigInt(r),BigInt(i)))},staleTime:Q,enabled:n}}function _e(e,t){let n=!!t.registryAddress&&t.index!==void 0&&t.query?.enabled!==!1,r=j.wrappersRegistry.tokenPair(t.registryAddress??w,String(t.index??0n));return{...D(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n,index:r}]=t.queryKey;return e.provider.readContract(x(n,BigInt(r)))},staleTime:Q,enabled:n}}function ve(e,t){let n=!!t.registryAddress&&!!t.confidentialTokenAddress&&t.query?.enabled!==!1,r=j.wrappersRegistry.isConfidentialTokenValid(t.registryAddress??w,t.confidentialTokenAddress??w);return{...D(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n,confidentialTokenAddress:r}]=t.queryKey;return e.provider.readContract(S(n,r))},staleTime:Q,enabled:n}}function ye(e,t){let n=!!t.registryAddress&&t.query?.enabled!==!1,r=j.wrappersRegistry.listPairs(t.registryAddress??w,t.page??1,t.pageSize??100,t.metadata??!1);return{...D(t.query??{}),queryKey:r,queryFn:async t=>{let[,{page:n,pageSize:r,metadata:i}]=t.queryKey;return e.listPairs({page:n,pageSize:r,metadata:i})},staleTime:e.ttlMs,enabled:n}}function be(e){return{mutationKey:[`zama.shield`,e.address],mutationFn:async({amount:t,...n})=>e.shield(t,n)}}function xe(e){return{mutationKey:[`zama.confidentialTransfer`,e.address],mutationFn:async({to:t,amount:n,...r})=>e.confidentialTransfer(t,n,r)}}function Se(e){return{mutationKey:[`zama.confidentialTransferFrom`,e.address],mutationFn:async({from:t,to:n,amount:r,callbacks:i})=>e.confidentialTransferFrom(t,n,r,i)}}function Ce(e){return{mutationKey:[`zama.confidentialApprove`,e.address],mutationFn:async({spender:t,until:n})=>e.approve(t,n)}}function we(e){return{mutationKey:[`zama.approveUnderlying`,e.address],mutationFn:async({amount:t})=>e.approveUnderlying(t)}}function Te(e){return{mutationKey:[`zama.unshield`,e.address],mutationFn:async({amount:t,...n})=>e.unshield(t,n)}}function Ee(e){return{mutationKey:[`zama.unshieldAll`,e.address],mutationFn:async t=>e.unshieldAll(t||void 0)}}function De(e){return{mutationKey:[`zama.resumeUnshield`,e.address],mutationFn:async({unwrapTxHash:t,...n})=>e.resumeUnshield(t,n)}}function Oe(e){return{mutationKey:[`zama.unwrap`,e.address],mutationFn:async({amount:t})=>e.unwrap(t)}}function ke(e){return{mutationKey:[`zama.unwrapAll`,e.address],mutationFn:async()=>e.unwrapAll()}}function Ae(t){return{mutationKey:[`zama.finalizeUnwrap`,t.address],mutationFn:async n=>{let r=n.unwrapRequestId??n.burnAmountHandle;if(!r)throw new e(`finalizeUnwrap requires unwrapRequestId or burnAmountHandle`);return t.finalizeUnwrap(r)}}}function je(e){return{mutationKey:[`zama.encrypt`],mutationFn:async t=>e.relayer.encrypt(t)}}function Me(e){return{mutationKey:[`zama.generateKeypair`],mutationFn:async()=>e.relayer.generateKeypair()}}function Ne(e){return{mutationKey:[`zama.createEIP712`],mutationFn:async({publicKey:t,contractAddresses:n,startTimestamp:r,durationDays:i})=>e.relayer.createEIP712(t,n,r,i)}}function Pe(e){return{mutationKey:[`zama.createDelegatedUserDecryptEIP712`],mutationFn:async({publicKey:t,contractAddresses:n,delegatorAddress:r,startTimestamp:i,durationDays:a})=>e.relayer.createDelegatedUserDecryptEIP712(t,n,r,i,a)}}function $(e){return{mutationKey:[`zama.delegatedUserDecrypt`],mutationFn:async t=>e.relayer.delegatedUserDecrypt(t)}}function Fe(e){return{mutationKey:[`zama.publicDecrypt`],mutationFn:async t=>e.publicDecrypt(t),onSuccess:(e,t,n,r)=>{for(let[t,n]of Object.entries(e.clearValues))r.client.setQueryData(j.decryption.handle(t),n)}}}function Ie(e){return{mutationKey:[`zama.requestZKProofVerification`],mutationFn:async t=>e.relayer.requestZKProofVerification(t)}}function Le(e){return{mutationKey:[`zama.allow`],mutationFn:t=>e.allow(t)}}function Re(e,t){return{...D(t?.query??{}),queryKey:j.isAllowed.scope(t.account,t.contractAddresses),queryFn:t=>{let[,{contractAddresses:n}]=t.queryKey;return e.credentials.isAllowed(n)},staleTime:3e4,enabled:t.query?.enabled!==!1}}function ze(e){return{mutationKey:[`zama.revoke`],mutationFn:t=>e.credentials.revoke(...t)}}function Be(e){return{mutationKey:[`zama.revokeSession`],mutationFn:()=>e.revokeSession()}}function Ve(e){return{mutationKey:[`zama.delegateDecryption`,e.address],mutationFn:async({delegateAddress:t,expirationDate:n})=>e.delegateDecryption({delegateAddress:t,expirationDate:n})}}function He(e,t){return{queryKey:j.decryption.handles(t.handles),queryFn:t=>{let[,{handles:n}]=t.queryKey;return e.userDecrypt(n)},staleTime:1/0,enabled:t.handles.length>0}}function Ue(e){return{mutationKey:[`zama.decryptBalanceAs`,e.address],mutationFn:async({delegatorAddress:t,accountAddress:n})=>e.decryptBalanceAs({delegatorAddress:t,accountAddress:n})}}function We(e){return{mutationKey:[`zama.batchDecryptBalancesAs`,...e.map(e=>e.address)],mutationFn:async t=>c.batchDecryptBalancesAs(e,t)}}function Ge(e){return{mutationKey:[`zama.revokeDelegation`,e.address],mutationFn:async({delegateAddress:t})=>e.revokeDelegation({delegateAddress:t})}}function Ke(e,t){return{...D(t.query??{}),queryKey:j.delegationStatus.scope(t.tokenAddress,t.delegatorAddress,t.delegateAddress),queryFn:async t=>{let[,{tokenAddress:n,delegatorAddress:i,delegateAddress:a}]=t.queryKey;l(n,`delegationStatusQueryOptions: tokenAddress`),l(i,`delegationStatusQueryOptions: delegatorAddress`),l(a,`delegationStatusQueryOptions: delegateAddress`);let s=await e.relayer.getAclAddress(),c=await e.provider.readContract(o(s,i,a,n)),u;return u=c===0n?!1:c===r?!0:c>await e.provider.getBlockTimestamp(),{isDelegated:u,expiryTimestamp:c}},enabled:!!(t.tokenAddress&&t.delegatorAddress&&t.delegateAddress)&&t.query?.enabled!==!1}}export{s as ZamaSDKEvents,Le as allowMutationOptions,we as approveUnderlyingMutationOptions,We as batchDecryptBalancesAsMutationOptions,Ce as confidentialApproveMutationOptions,ue as confidentialBalanceQueryOptions,de as confidentialBalancesQueryOptions,se as confidentialIsApprovedQueryOptions,pe as confidentialTokenAddressQueryOptions,Se as confidentialTransferFromMutationOptions,xe as confidentialTransferMutationOptions,Pe as createDelegatedUserDecryptEIP712MutationOptions,Ne as createEIP712MutationOptions,Ue as decryptBalanceAsMutationOptions,Ve as delegateDecryptionMutationOptions,$ as delegatedUserDecryptMutationOptions,Ke as delegationStatusQueryOptions,je as encryptMutationOptions,D as filterQueryOptions,Ae as finalizeUnwrapMutationOptions,Me as generateKeypairMutationOptions,O as hashFn,z as invalidateAfterApprove,R as invalidateAfterApproveUnderlying,F as invalidateAfterShield,L as invalidateAfterTransfer,I as invalidateAfterUnshield,N as invalidateAfterUnwrap,P as invalidateBalanceQueries,H as invalidateWagmiBalanceQueries,U as invalidateWalletLifecycleQueries,Re as isAllowedQueryOptions,Y as isConfidentialQueryOptions,ve as isConfidentialTokenValidQueryOptions,X as isWrapperQueryOptions,ye as listPairsQueryOptions,Fe as publicDecryptMutationOptions,ce as publicKeyQueryOptions,le as publicParamsQueryOptions,Ie as requestZKProofVerificationMutationOptions,De as resumeUnshieldMutationOptions,Ge as revokeDelegationMutationOptions,ze as revokeMutationOptions,Be as revokeSessionMutationOptions,be as shieldMutationOptions,q as signerAddressQueryOptions,me as tokenAddressQueryOptions,J as tokenMetadataQueryOptions,_e as tokenPairQueryOptions,he as tokenPairsLengthQueryOptions,fe as tokenPairsQueryOptions,ge as tokenPairsSliceQueryOptions,ie as totalSupplyQueryOptions,oe as underlyingAllowanceQueryOptions,Ee as unshieldAllMutationOptions,Te as unshieldMutationOptions,ke as unwrapAllMutationOptions,Oe as unwrapMutationOptions,He as userDecryptQueryOptions,ae as wrapperDiscoveryQueryOptions,j as zamaQueryKeys};
|
|
1
|
+
import{t as e}from"../relayer-8ObvIuu-.js";import{f as t,h as n,i as r,l as i,m as a,o,r as s,t as c}from"../readonly-token-D4euKn0-.js";import{a as l}from"../assertions-BARApuMj.js";import{t as u}from"../error-B6H-mBAh.js";import{S as d,T as f,a as ee,d as te,f as p,g as m,h,i as g,l as _,n as v,o as y,p as b,r as x,s as S,t as ne}from"../wrappers-registry-DuhA_F3e.js";import{getAddress as C,zeroAddress as w}from"viem";function T(e){if(!E(e))return!1;let t=e.constructor;if(t===void 0)return!0;let n=t.prototype;return!(!E(n)||!n.hasOwnProperty(`isPrototypeOf`))}function E(e){return Object.prototype.toString.call(e)===`[object Object]`}function D(e){let{gcTime:t,staleTime:n,enabled:r,select:i,refetchInterval:a,refetchOnMount:o,refetchOnWindowFocus:s,refetchOnReconnect:c,retry:l,retryDelay:u,retryOnMount:d,queryFn:f,queryKey:ee,queryKeyHashFn:te,initialData:p,initialDataUpdatedAt:m,placeholderData:h,structuralSharing:g,throwOnError:_,meta:v,query:y,pollingInterval:b,...x}=e;return x}function O(e){return JSON.stringify(e,(e,t)=>T(t)?Object.keys(t).toSorted().reduce((e,n)=>(e[n]=t[n],e),{}):typeof t==`bigint`?t.toString():t)}const k=e=>e.map(e=>C(e)),A=e=>e===void 0?void 0:C(e),j={signerAddress:{all:[`zama.signerAddress`],scope:e=>[`zama.signerAddress`,{scope:e}]},confidentialBalance:{all:[`zama.confidentialBalance`],token:e=>[`zama.confidentialBalance`,{tokenAddress:C(e)}],owner:(e,t)=>[`zama.confidentialBalance`,{tokenAddress:C(e),...t?{owner:C(t)}:{}}]},confidentialBalances:{all:[`zama.confidentialBalances`],tokens:(e,t)=>[`zama.confidentialBalances`,{tokenAddresses:k(e),...t?{owner:C(t)}:{}}]},tokenMetadata:{all:[`zama.tokenMetadata`],token:e=>[`zama.tokenMetadata`,{tokenAddress:C(e)}]},isConfidential:{all:[`zama.isConfidential`],token:e=>[`zama.isConfidential`,{tokenAddress:C(e)}]},isWrapper:{all:[`zama.isWrapper`],token:e=>[`zama.isWrapper`,{tokenAddress:C(e)}]},wrapperDiscovery:{all:[`zama.wrapperDiscovery`],token:(e,t,n)=>{let r=A(e),i=A(t),a=A(n);return[`zama.wrapperDiscovery`,{...r?{tokenAddress:r}:{},...i?{erc20Address:i}:{},...a?{registryAddress:a}:{}}]}},underlyingAllowance:{all:[`zama.underlyingAllowance`],token:e=>[`zama.underlyingAllowance`,{tokenAddress:C(e)}],scope:(e,t,n)=>[`zama.underlyingAllowance`,{tokenAddress:C(e),...t?{owner:C(t)}:{},...n?{wrapperAddress:C(n)}:{}}]},confidentialIsApproved:{all:[`zama.confidentialIsApproved`],token:e=>{let t=A(e);return[`zama.confidentialIsApproved`,t?{tokenAddress:t}:{}]},scope:(e,t,n)=>{let r=A(e),i=A(t),a=A(n);return[`zama.confidentialIsApproved`,{...r?{tokenAddress:r}:{},...i?{holder:i}:{},...a?{spender:a}:{}}]}},totalSupply:{all:[`zama.totalSupply`],token:e=>[`zama.totalSupply`,{tokenAddress:C(e)}]},isAllowed:{all:[`zama.isAllowed`],scope:(e,t)=>[`zama.isAllowed`,{account:C(e),contractAddresses:k(t).toSorted()}]},publicKey:{all:[`zama.publicKey`]},publicParams:{all:[`zama.publicParams`],bits:e=>[`zama.publicParams`,{bits:e}]},delegationStatus:{all:[`zama.delegationStatus`],token:e=>{let t=A(e);return[`zama.delegationStatus`,t?{tokenAddress:t}:{}]},scope:(e,t,n)=>{let r=A(e),i=A(t),a=A(n);return[`zama.delegationStatus`,{...r?{tokenAddress:r}:{},...i?{delegatorAddress:i}:{},...a?{delegateAddress:a}:{}}]}},decryption:{all:[`zama.decryption`],handle:(e,t)=>[`zama.decryption`,{handle:e,...t===void 0?{}:{contractAddress:C(t)}}],handles:e=>[`zama.decryption`,{handles:[...e].toSorted((e,t)=>e.handle.localeCompare(t.handle)).map(e=>({handle:e.handle,contractAddress:C(e.contractAddress)}))}]},wrappersRegistry:{all:[`zama.wrappersRegistry`],chainId:()=>[`zama.wrappersRegistry`,{type:`chainId`}],tokenPairs:e=>[`zama.wrappersRegistry`,{type:`tokenPairs`,registryAddress:C(e)}],confidentialTokenAddress:(e,t)=>[`zama.wrappersRegistry`,{type:`confidentialTokenAddress`,registryAddress:C(e),tokenAddress:C(t)}],tokenAddress:(e,t)=>[`zama.wrappersRegistry`,{type:`tokenAddress`,registryAddress:C(e),confidentialTokenAddress:C(t)}],tokenPairsLength:e=>[`zama.wrappersRegistry`,{type:`tokenPairsLength`,registryAddress:C(e)}],tokenPairsSlice:(e,t,n)=>[`zama.wrappersRegistry`,{type:`tokenPairsSlice`,registryAddress:C(e),fromIndex:t,toIndex:n}],tokenPair:(e,t)=>[`zama.wrappersRegistry`,{type:`tokenPair`,registryAddress:C(e),index:t}],isConfidentialTokenValid:(e,t)=>[`zama.wrappersRegistry`,{type:`isConfidentialTokenValid`,registryAddress:C(e),confidentialTokenAddress:C(t)}],listPairs:(e,t,n,r)=>[`zama.wrappersRegistry`,{type:`listPairs`,registryAddress:C(e),page:t,pageSize:n,metadata:r}]}};function M(e,t){e.invalidateQueries({queryKey:j.underlyingAllowance.token(t)})}function N(e,t){P(e,t),M(e,t),H(e)}function P(e,t){e.invalidateQueries({queryKey:j.confidentialBalance.token(t)}),e.invalidateQueries({queryKey:j.confidentialBalances.all})}function F(e,t){P(e,t),M(e,t),H(e)}function I(e,t){P(e,t),M(e,t),H(e)}function L(e,t){P(e,t)}function R(e,t){M(e,t)}function z(e,t){e.invalidateQueries({queryKey:j.confidentialIsApproved.token(t)})}function B(e){return Array.isArray(e.queryKey)&&typeof e.queryKey[0]==`string`?e.queryKey[0].startsWith(`zama.`):!1}function V(e){return Array.isArray(e.queryKey)&&e.queryKey.some(e=>typeof e!=`object`||!e||!(`functionName`in e)?!1:e.functionName===`balanceOf`)}function H(e){e.invalidateQueries({predicate:V})}function U(e){e.removeQueries({queryKey:j.signerAddress.all}),e.removeQueries({queryKey:j.decryption.all}),e.invalidateQueries({predicate:B}),H(e)}const W=new WeakMap;let G=1;function K(e){let t=W.get(e);if(t!==void 0)return t;let n=G++;return W.set(e,n),n}function q(e){return{queryKey:j.signerAddress.scope(K(e)),queryFn:async()=>e.getAddress(),staleTime:3e4}}function J(e,r,i){let o=j.tokenMetadata.token(r);return{...D(i?.query??{}),queryKey:o,queryFn:async r=>{let[,{tokenAddress:i}]=r.queryKey,[o,s,c]=await Promise.all([e.provider.readContract(a(i)),e.provider.readContract(n(i)),e.provider.readContract(t(i))]);return{name:o,symbol:s,decimals:c}},staleTime:1/0,enabled:i?.query?.enabled!==!1}}function Y(e,t,n){let r=j.isConfidential.token(t);return{...D(n?.query??{}),queryKey:r,queryFn:async t=>{let[,{tokenAddress:n}]=t.queryKey;try{return await e.provider.readContract(te(n))}catch(e){if(u(e))return!1;throw e}},staleTime:1/0,enabled:n?.query?.enabled!==!1}}function X(e,t,n){let r=j.isWrapper.token(t);return{...D(n?.query??{}),queryKey:r,queryFn:async t=>{let[,{tokenAddress:n}]=t.queryKey;try{let[t,r]=await Promise.all([e.provider.readContract(p(n)),e.provider.readContract(b(n,_))]);return t||r}catch(e){if(u(e))return!1;throw e}},staleTime:1/0,enabled:n?.query?.enabled!==!1}}async function Z(e,t,n){try{return await e.readContract(b(t,n))}catch(e){if(u(e))return!1;throw e}}async function re(t,n){if(await Z(t,n,`0x1f1c62b2`))return`upgraded`;if(await Z(t,n,`0xd04584ba`))return`legacy`;throw new e(`Contract ${n} does not support a known ERC7984 wrapper interface`)}function ie(e,t,n){let r=j.totalSupply.token(t);return{...D(n?.query??{}),queryKey:r,queryFn:async t=>{let[,{tokenAddress:n}]=t.queryKey;return await re(e.provider,n)===`upgraded`?e.provider.readContract(h(n)):e.provider.readContract(f(n))},staleTime:3e4,enabled:n?.query?.enabled!==!1}}function ae(e,t){let n=j.wrapperDiscovery.token(t.tokenAddress,t.erc20Address,t.registryAddress);return{...D(t.query??{}),queryKey:n,queryFn:async t=>{let[,{erc20Address:n}]=t.queryKey;l(n,`wrapperDiscoveryQueryOptions: erc20Address`);let r=await e.getConfidentialToken(n);return r?r.confidentialTokenAddress:null},staleTime:1/0,enabled:!!(t.tokenAddress&&t.erc20Address&&t.registryAddress)&&t.query?.enabled!==!1}}function oe(e,t,n){let r=n.owner,a=n.wrapperAddress,o=n.query?.enabled!==!1,s=j.underlyingAllowance.scope(t,r,a);return{...D(n.query??{}),queryKey:s,queryFn:async t=>{let[,{owner:n,wrapperAddress:r}]=t.queryKey;l(n,`underlyingAllowanceQueryOptions: owner`),l(r,`underlyingAllowanceQueryOptions: wrapperAddress`);let a=await e.provider.readContract(m(r));return e.provider.readContract(i(a,n,r))},staleTime:3e4,enabled:!!(r&&a)&&o}}function se(e,t,n){let r=n.holder,i=n.spender,a=n.query?.enabled!==!1,o=j.confidentialIsApproved.scope(t,r,i);return{...D(n.query??{}),queryKey:o,queryFn:async t=>{let[,{tokenAddress:n,holder:r,spender:i}]=t.queryKey;return l(n,`confidentialIsApprovedQueryOptions: tokenAddress`),l(r,`confidentialIsApprovedQueryOptions: holder`),l(i,`confidentialIsApprovedQueryOptions: spender`),e.provider.readContract(d(n,r,i))},staleTime:3e4,enabled:!!(t&&r&&i)&&a}}function ce(e,t){let n=j.publicKey.all;return{...D(t?.query??{}),queryKey:n,queryFn:async()=>e.relayer.getPublicKey(),staleTime:1/0,enabled:t?.query?.enabled!==!1}}function le(e,t,n){let r=j.publicParams.bits(t);return{...D(n?.query??{}),queryKey:r,queryFn:async t=>{let[,{bits:n}]=t.queryKey;return e.relayer.getPublicParams(n)},staleTime:1/0,enabled:n?.query?.enabled!==!1}}function ue(e,t){let n=t.query??{};return{...D(n),queryKey:j.confidentialBalance.owner(t.tokenAddress,t.account),queryFn:async t=>{let[,{owner:n}]=t.queryKey;return e.balanceOf(n)},enabled:!!t.account&&n?.enabled!==!1}}function de(e,t){let n=t?.account,r=t?.query??{},i=e.map(e=>e.address);return{...D(r),queryKey:j.confidentialBalances.tokens(i,n),queryFn:async t=>{let[,{owner:n}]=t.queryKey;return c.batchBalancesOf(e,n)},enabled:!!n&&e.length>0&&r?.enabled!==!1}}const Q=86400*1e3;function fe(e,t){let n=!!t.registryAddress&&t.query?.enabled!==!1,r=j.wrappersRegistry.tokenPairs(t.registryAddress??w);return{...D(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n}]=t.queryKey;return e.provider.readContract(g(n))},staleTime:Q,enabled:n}}function pe(e,t){let n=!!t.registryAddress&&!!t.tokenAddress&&t.query?.enabled!==!1,r=j.wrappersRegistry.confidentialTokenAddress(t.registryAddress??w,t.tokenAddress??w);return{...D(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n,tokenAddress:r}]=t.queryKey;return e.provider.readContract(ne(n,r))},staleTime:Q,enabled:n}}function me(e,t){let n=!!t.registryAddress&&!!t.confidentialTokenAddress&&t.query?.enabled!==!1,r=j.wrappersRegistry.tokenAddress(t.registryAddress??w,t.confidentialTokenAddress??w);return{...D(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n,confidentialTokenAddress:r}]=t.queryKey;return e.provider.readContract(v(n,r))},staleTime:Q,enabled:n}}function he(e,t){let n=!!t.registryAddress&&t.query?.enabled!==!1,r=j.wrappersRegistry.tokenPairsLength(t.registryAddress??w);return{...D(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n}]=t.queryKey;return e.provider.readContract(ee(n))},staleTime:Q,enabled:n}}function ge(e,t){let n=!!t.registryAddress&&t.fromIndex!==void 0&&t.toIndex!==void 0&&t.query?.enabled!==!1,r=j.wrappersRegistry.tokenPairsSlice(t.registryAddress??w,String(t.fromIndex??0n),String(t.toIndex??0n));return{...D(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n,fromIndex:r,toIndex:i}]=t.queryKey;return e.provider.readContract(y(n,BigInt(r),BigInt(i)))},staleTime:Q,enabled:n}}function _e(e,t){let n=!!t.registryAddress&&t.index!==void 0&&t.query?.enabled!==!1,r=j.wrappersRegistry.tokenPair(t.registryAddress??w,String(t.index??0n));return{...D(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n,index:r}]=t.queryKey;return e.provider.readContract(x(n,BigInt(r)))},staleTime:Q,enabled:n}}function ve(e,t){let n=!!t.registryAddress&&!!t.confidentialTokenAddress&&t.query?.enabled!==!1,r=j.wrappersRegistry.isConfidentialTokenValid(t.registryAddress??w,t.confidentialTokenAddress??w);return{...D(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n,confidentialTokenAddress:r}]=t.queryKey;return e.provider.readContract(S(n,r))},staleTime:Q,enabled:n}}function ye(e,t){let n=!!t.registryAddress&&t.query?.enabled!==!1,r=j.wrappersRegistry.listPairs(t.registryAddress??w,t.page??1,t.pageSize??100,t.metadata??!1);return{...D(t.query??{}),queryKey:r,queryFn:async t=>{let[,{page:n,pageSize:r,metadata:i}]=t.queryKey;return e.listPairs({page:n,pageSize:r,metadata:i})},staleTime:e.ttlMs,enabled:n}}function be(e){return{mutationKey:[`zama.shield`,e.address],mutationFn:async({amount:t,...n})=>e.shield(t,n)}}function xe(e){return{mutationKey:[`zama.confidentialTransfer`,e.address],mutationFn:async({to:t,amount:n,...r})=>e.confidentialTransfer(t,n,r)}}function Se(e){return{mutationKey:[`zama.confidentialTransferFrom`,e.address],mutationFn:async({from:t,to:n,amount:r,callbacks:i})=>e.confidentialTransferFrom(t,n,r,i)}}function Ce(e){return{mutationKey:[`zama.confidentialApprove`,e.address],mutationFn:async({spender:t,until:n})=>e.approve(t,n)}}function we(e){return{mutationKey:[`zama.approveUnderlying`,e.address],mutationFn:async({amount:t})=>e.approveUnderlying(t)}}function Te(e){return{mutationKey:[`zama.unshield`,e.address],mutationFn:async({amount:t,...n})=>e.unshield(t,n)}}function Ee(e){return{mutationKey:[`zama.unshieldAll`,e.address],mutationFn:async t=>e.unshieldAll(t||void 0)}}function De(e){return{mutationKey:[`zama.resumeUnshield`,e.address],mutationFn:async({unwrapTxHash:t,...n})=>e.resumeUnshield(t,n)}}function Oe(e){return{mutationKey:[`zama.unwrap`,e.address],mutationFn:async({amount:t})=>e.unwrap(t)}}function ke(e){return{mutationKey:[`zama.unwrapAll`,e.address],mutationFn:async()=>e.unwrapAll()}}function Ae(t){return{mutationKey:[`zama.finalizeUnwrap`,t.address],mutationFn:async n=>{let r=n.unwrapRequestId??n.burnAmountHandle;if(!r)throw new e(`finalizeUnwrap requires unwrapRequestId or burnAmountHandle`);return t.finalizeUnwrap(r)}}}function je(e){return{mutationKey:[`zama.encrypt`],mutationFn:async t=>e.relayer.encrypt(t)}}function Me(e){return{mutationKey:[`zama.generateKeypair`],mutationFn:async()=>e.relayer.generateKeypair()}}function Ne(e){return{mutationKey:[`zama.createEIP712`],mutationFn:async({publicKey:t,contractAddresses:n,startTimestamp:r,durationDays:i})=>e.relayer.createEIP712(t,n,r,i)}}function Pe(e){return{mutationKey:[`zama.createDelegatedUserDecryptEIP712`],mutationFn:async({publicKey:t,contractAddresses:n,delegatorAddress:r,startTimestamp:i,durationDays:a})=>e.relayer.createDelegatedUserDecryptEIP712(t,n,r,i,a)}}function $(e){return{mutationKey:[`zama.delegatedUserDecrypt`],mutationFn:async t=>e.relayer.delegatedUserDecrypt(t)}}function Fe(e){return{mutationKey:[`zama.publicDecrypt`],mutationFn:async t=>e.publicDecrypt(t),onSuccess:(e,t,n,r)=>{for(let[t,n]of Object.entries(e.clearValues))r.client.setQueryData(j.decryption.handle(t),n)}}}function Ie(e){return{mutationKey:[`zama.requestZKProofVerification`],mutationFn:async t=>e.relayer.requestZKProofVerification(t)}}function Le(e){return{mutationKey:[`zama.allow`],mutationFn:t=>e.allow(t)}}function Re(e,t){return{...D(t?.query??{}),queryKey:j.isAllowed.scope(t.account,t.contractAddresses),queryFn:t=>{let[,{contractAddresses:n}]=t.queryKey;return e.credentials.isAllowed(n)},staleTime:3e4,enabled:t.query?.enabled!==!1}}function ze(e){return{mutationKey:[`zama.revoke`],mutationFn:t=>e.credentials.revoke(...t)}}function Be(e){return{mutationKey:[`zama.revokeSession`],mutationFn:()=>e.revokeSession()}}function Ve(e){return{mutationKey:[`zama.delegateDecryption`,e.address],mutationFn:async({delegateAddress:t,expirationDate:n})=>e.delegateDecryption({delegateAddress:t,expirationDate:n})}}function He(e,t){return{queryKey:j.decryption.handles(t.handles),queryFn:t=>{let[,{handles:n}]=t.queryKey;return e.userDecrypt(n)},staleTime:1/0,enabled:t.handles.length>0}}function Ue(e){return{mutationKey:[`zama.decryptBalanceAs`,e.address],mutationFn:async({delegatorAddress:t,accountAddress:n})=>e.decryptBalanceAs({delegatorAddress:t,accountAddress:n})}}function We(e){return{mutationKey:[`zama.batchDecryptBalancesAs`,...e.map(e=>e.address)],mutationFn:async t=>c.batchDecryptBalancesAs(e,t)}}function Ge(e){return{mutationKey:[`zama.revokeDelegation`,e.address],mutationFn:async({delegateAddress:t})=>e.revokeDelegation({delegateAddress:t})}}function Ke(e,t){return{...D(t.query??{}),queryKey:j.delegationStatus.scope(t.tokenAddress,t.delegatorAddress,t.delegateAddress),queryFn:async t=>{let[,{tokenAddress:n,delegatorAddress:i,delegateAddress:a}]=t.queryKey;l(n,`delegationStatusQueryOptions: tokenAddress`),l(i,`delegationStatusQueryOptions: delegatorAddress`),l(a,`delegationStatusQueryOptions: delegateAddress`);let s=await e.relayer.getAclAddress(),c=await e.provider.readContract(o(s,i,a,n)),u;return u=c===0n?!1:c===r?!0:c>await e.provider.getBlockTimestamp(),{isDelegated:u,expiryTimestamp:c}},enabled:!!(t.tokenAddress&&t.delegatorAddress&&t.delegateAddress)&&t.query?.enabled!==!1}}export{s as ZamaSDKEvents,Le as allowMutationOptions,we as approveUnderlyingMutationOptions,We as batchDecryptBalancesAsMutationOptions,Ce as confidentialApproveMutationOptions,ue as confidentialBalanceQueryOptions,de as confidentialBalancesQueryOptions,se as confidentialIsApprovedQueryOptions,pe as confidentialTokenAddressQueryOptions,Se as confidentialTransferFromMutationOptions,xe as confidentialTransferMutationOptions,Pe as createDelegatedUserDecryptEIP712MutationOptions,Ne as createEIP712MutationOptions,Ue as decryptBalanceAsMutationOptions,Ve as delegateDecryptionMutationOptions,$ as delegatedUserDecryptMutationOptions,Ke as delegationStatusQueryOptions,je as encryptMutationOptions,D as filterQueryOptions,Ae as finalizeUnwrapMutationOptions,Me as generateKeypairMutationOptions,O as hashFn,z as invalidateAfterApprove,R as invalidateAfterApproveUnderlying,F as invalidateAfterShield,L as invalidateAfterTransfer,I as invalidateAfterUnshield,N as invalidateAfterUnwrap,P as invalidateBalanceQueries,H as invalidateWagmiBalanceQueries,U as invalidateWalletLifecycleQueries,Re as isAllowedQueryOptions,Y as isConfidentialQueryOptions,ve as isConfidentialTokenValidQueryOptions,X as isWrapperQueryOptions,ye as listPairsQueryOptions,Fe as publicDecryptMutationOptions,ce as publicKeyQueryOptions,le as publicParamsQueryOptions,Ie as requestZKProofVerificationMutationOptions,De as resumeUnshieldMutationOptions,Ge as revokeDelegationMutationOptions,ze as revokeMutationOptions,Be as revokeSessionMutationOptions,be as shieldMutationOptions,q as signerAddressQueryOptions,me as tokenAddressQueryOptions,J as tokenMetadataQueryOptions,_e as tokenPairQueryOptions,he as tokenPairsLengthQueryOptions,fe as tokenPairsQueryOptions,ge as tokenPairsSliceQueryOptions,ie as totalSupplyQueryOptions,oe as underlyingAllowanceQueryOptions,Ee as unshieldAllMutationOptions,Te as unshieldMutationOptions,ke as unwrapAllMutationOptions,Oe as unwrapMutationOptions,He as userDecryptQueryOptions,ae as wrapperDiscoveryQueryOptions,j as zamaQueryKeys};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/query/utils.ts","../../../src/query/query-keys.ts","../../../src/query/invalidation.ts","../../../src/query/signer-address.ts","../../../src/query/token-metadata.ts","../../../src/query/is-confidential.ts","../../../src/query/wrapper-interface-version.ts","../../../src/query/total-supply.ts","../../../src/query/wrapper-discovery.ts","../../../src/query/underlying-allowance.ts","../../../src/query/confidential-is-approved.ts","../../../src/query/public-key.ts","../../../src/query/public-params.ts","../../../src/query/confidential-balance.ts","../../../src/query/confidential-balances.ts","../../../src/query/wrappers-registry.ts","../../../src/query/shield.ts","../../../src/query/transfer.ts","../../../src/query/transfer-from.ts","../../../src/query/approve.ts","../../../src/query/approve-underlying.ts","../../../src/query/unshield.ts","../../../src/query/unshield-all.ts","../../../src/query/resume-unshield.ts","../../../src/query/unwrap.ts","../../../src/query/unwrap-all.ts","../../../src/query/finalize-unwrap.ts","../../../src/query/encrypt.ts","../../../src/query/generate-keypair.ts","../../../src/query/create-eip712.ts","../../../src/query/create-delegated-user-decrypt-eip712.ts","../../../src/query/delegated-user-decrypt.ts","../../../src/query/public-decrypt.ts","../../../src/query/request-zk-proof-verification.ts","../../../src/query/allow.ts","../../../src/query/is-allowed.ts","../../../src/query/revoke.ts","../../../src/query/revoke-session.ts","../../../src/query/delegate-decryption.ts","../../../src/query/user-decrypt.ts","../../../src/query/decrypt-balance-as.ts","../../../src/query/batch-decrypt-balances-as.ts","../../../src/query/revoke-delegation.ts","../../../src/query/delegation-status.ts"],"sourcesContent":["// Adapted from the wagmi codebase\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-wrapper-object-types\nfunction isPlainObject(value: any): value is Object {\n if (!hasObjectPrototype(value)) {\n return false;\n }\n\n // If has modified constructor\n const ctor = value.constructor;\n if (ctor === undefined) {\n return true;\n }\n\n // If has modified prototype\n const prot = ctor.prototype;\n if (!hasObjectPrototype(prot)) {\n return false;\n }\n\n // If constructor does not have an Object-specific method\n // biome-ignore lint/suspicious/noPrototypeBuiltins: using\n // eslint-disable-next-line no-prototype-builtins\n if (!prot.hasOwnProperty(\"isPrototypeOf\")) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction hasObjectPrototype(o: any): boolean {\n return Object.prototype.toString.call(o) === \"[object Object]\";\n}\n\nexport type StrippedQueryOptionKeys =\n // Keep this union aligned with @tanstack/query-core behavioral options\n // (for example QueryObserverOptions). Revisit on every upgrade to avoid\n // leaking query controls into lower-level query factories.\n | \"gcTime\"\n | \"staleTime\"\n | \"enabled\"\n | \"select\"\n | \"refetchInterval\"\n | \"refetchOnMount\"\n | \"refetchOnWindowFocus\"\n | \"refetchOnReconnect\"\n | \"retry\"\n | \"retryDelay\"\n | \"retryOnMount\"\n | \"queryFn\"\n | \"queryKey\"\n | \"queryKeyHashFn\"\n | \"initialData\"\n | \"initialDataUpdatedAt\"\n | \"placeholderData\"\n | \"structuralSharing\"\n | \"throwOnError\"\n | \"meta\"\n | \"query\"\n | \"pollingInterval\";\n\n/**\n * Remove TanStack behavioral options from a query config object so only domain\n * parameters remain for the lower-level factory.\n *\n * @example\n * ```ts\n * const params = filterQueryOptions({\n * query: { enabled: false },\n * gcTime: 60_000,\n * owner: \"0xabc\",\n * });\n * // => { owner: \"0xabc\" }\n * ```\n */\nexport function filterQueryOptions<TOptions extends Record<string, unknown>>(\n options: TOptions,\n): Omit<TOptions, StrippedQueryOptionKeys> {\n const {\n gcTime: _gcTime,\n staleTime: _staleTime,\n enabled: _enabled,\n select: _select,\n refetchInterval: _refetchInterval,\n refetchOnMount: _refetchOnMount,\n refetchOnWindowFocus: _refetchOnWindowFocus,\n refetchOnReconnect: _refetchOnReconnect,\n retry: _retry,\n retryDelay: _retryDelay,\n retryOnMount: _retryOnMount,\n queryFn: _queryFn,\n queryKey: _queryKey,\n queryKeyHashFn: _queryKeyHashFn,\n initialData: _initialData,\n initialDataUpdatedAt: _initialDataUpdatedAt,\n placeholderData: _placeholderData,\n structuralSharing: _structuralSharing,\n throwOnError: _throwOnError,\n meta: _meta,\n query: _query,\n pollingInterval: _pollingInterval,\n ...rest\n } = options;\n\n return rest;\n}\n\n/**\n * Stable hash function for query keys.\n * Sorts object keys recursively and converts bigint values to strings.\n *\n * @remarks\n * bigint values are serialized as decimal strings, so `42n` and `\"42\"` hash to\n * the same token when they occupy the same position. This collision is accepted\n * by design for the current query-key conventions in this package.\n */\nexport function hashFn(queryKey: readonly unknown[]): string {\n return JSON.stringify(queryKey, (_, value) => {\n if (isPlainObject(value)) {\n return Object.keys(value)\n .toSorted()\n .reduce(\n (result, key) => {\n result[key] = value[key];\n return result;\n },\n {} as Record<string, unknown>,\n );\n }\n\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n\n return value;\n });\n}\n","import { getAddress } from \"viem\";\nimport type { Address } from \"viem\";\n\nconst normalizeAddresses = (addresses: Address[]): Address[] =>\n addresses.map((address) => getAddress(address));\nconst normalizeAddress = (address?: Address): Address | undefined =>\n address === undefined ? undefined : getAddress(address);\n\n/**\n * Canonical query-key namespace for `@zama-fhe/sdk/query`.\n *\n * @example\n * ```ts\n * queryClient.invalidateQueries({\n * queryKey: zamaQueryKeys.confidentialBalance.token(\"0xToken\"),\n * });\n * ```\n */\nexport const zamaQueryKeys = {\n signerAddress: {\n all: [\"zama.signerAddress\"] as const,\n scope: (scope: number) => [\"zama.signerAddress\", { scope }] as const,\n },\n\n confidentialBalance: {\n all: [\"zama.confidentialBalance\"] as const,\n token: (tokenAddress: Address) =>\n [\"zama.confidentialBalance\", { tokenAddress: getAddress(tokenAddress) }] as const,\n owner: (tokenAddress: Address, owner?: Address) =>\n [\n \"zama.confidentialBalance\",\n {\n tokenAddress: getAddress(tokenAddress),\n ...(owner ? { owner: getAddress(owner) } : {}),\n },\n ] as const,\n },\n\n confidentialBalances: {\n all: [\"zama.confidentialBalances\"] as const,\n tokens: (tokenAddresses: Address[], owner?: Address) =>\n [\n \"zama.confidentialBalances\",\n {\n tokenAddresses: normalizeAddresses(tokenAddresses),\n ...(owner ? { owner: getAddress(owner) } : {}),\n },\n ] as const,\n },\n\n tokenMetadata: {\n all: [\"zama.tokenMetadata\"] as const,\n token: (tokenAddress: Address) =>\n [\"zama.tokenMetadata\", { tokenAddress: getAddress(tokenAddress) }] as const,\n },\n\n isConfidential: {\n all: [\"zama.isConfidential\"] as const,\n token: (tokenAddress: Address) =>\n [\"zama.isConfidential\", { tokenAddress: getAddress(tokenAddress) }] as const,\n },\n\n isWrapper: {\n all: [\"zama.isWrapper\"] as const,\n token: (tokenAddress: Address) =>\n [\"zama.isWrapper\", { tokenAddress: getAddress(tokenAddress) }] as const,\n },\n\n wrapperDiscovery: {\n all: [\"zama.wrapperDiscovery\"] as const,\n token: (tokenAddress?: Address, erc20Address?: Address, registryAddress?: Address) => {\n const t = normalizeAddress(tokenAddress);\n const e = normalizeAddress(erc20Address);\n const r = normalizeAddress(registryAddress);\n return [\n \"zama.wrapperDiscovery\",\n {\n ...(t ? { tokenAddress: t } : {}),\n ...(e ? { erc20Address: e } : {}),\n ...(r ? { registryAddress: r } : {}),\n },\n ] as const;\n },\n },\n\n underlyingAllowance: {\n all: [\"zama.underlyingAllowance\"] as const,\n token: (tokenAddress: Address) =>\n [\"zama.underlyingAllowance\", { tokenAddress: getAddress(tokenAddress) }] as const,\n scope: (tokenAddress: Address, owner?: Address, wrapperAddress?: Address) =>\n [\n \"zama.underlyingAllowance\",\n {\n tokenAddress: getAddress(tokenAddress),\n ...(owner ? { owner: getAddress(owner) } : {}),\n ...(wrapperAddress ? { wrapperAddress: getAddress(wrapperAddress) } : {}),\n },\n ] as const,\n },\n\n confidentialIsApproved: {\n all: [\"zama.confidentialIsApproved\"] as const,\n token: (tokenAddress?: Address) => {\n const t = normalizeAddress(tokenAddress);\n return [\"zama.confidentialIsApproved\", t ? { tokenAddress: t } : {}] as const;\n },\n scope: (tokenAddress?: Address, holder?: Address, spender?: Address) => {\n const t = normalizeAddress(tokenAddress);\n const h = normalizeAddress(holder);\n const s = normalizeAddress(spender);\n return [\n \"zama.confidentialIsApproved\",\n {\n ...(t ? { tokenAddress: t } : {}),\n ...(h ? { holder: h } : {}),\n ...(s ? { spender: s } : {}),\n },\n ] as const;\n },\n },\n\n totalSupply: {\n all: [\"zama.totalSupply\"] as const,\n token: (tokenAddress: Address) =>\n [\"zama.totalSupply\", { tokenAddress: getAddress(tokenAddress) }] as const,\n },\n\n isAllowed: {\n all: [\"zama.isAllowed\"] as const,\n scope: (account: Address, contractAddresses: Address[]) =>\n [\n \"zama.isAllowed\",\n {\n account: getAddress(account),\n contractAddresses: normalizeAddresses(contractAddresses).toSorted(),\n },\n ] as const,\n },\n\n publicKey: {\n all: [\"zama.publicKey\"] as const,\n },\n\n publicParams: {\n all: [\"zama.publicParams\"] as const,\n bits: (bits: number) => [\"zama.publicParams\", { bits }] as const,\n },\n\n delegationStatus: {\n all: [\"zama.delegationStatus\"] as const,\n token: (tokenAddress?: Address) => {\n const t = normalizeAddress(tokenAddress);\n return [\"zama.delegationStatus\", t ? { tokenAddress: t } : {}] as const;\n },\n scope: (tokenAddress?: Address, delegator?: Address, delegate?: Address) => {\n const t = normalizeAddress(tokenAddress);\n const dr = normalizeAddress(delegator);\n const de = normalizeAddress(delegate);\n return [\n \"zama.delegationStatus\",\n {\n ...(t ? { tokenAddress: t } : {}),\n ...(dr ? { delegatorAddress: dr } : {}),\n ...(de ? { delegateAddress: de } : {}),\n },\n ] as const;\n },\n },\n\n decryption: {\n all: [\"zama.decryption\"] as const,\n handle: (handle: string, contractAddress?: Address) =>\n [\n \"zama.decryption\",\n {\n handle,\n ...(contractAddress === undefined\n ? {}\n : { contractAddress: getAddress(contractAddress) }),\n },\n ] as const,\n handles: (handles: readonly { handle: string; contractAddress: Address }[]) =>\n [\n \"zama.decryption\",\n {\n handles: [...handles]\n .toSorted((a, b) => a.handle.localeCompare(b.handle))\n .map((h) => ({\n handle: h.handle,\n contractAddress: getAddress(h.contractAddress),\n })),\n },\n ] as const,\n },\n\n wrappersRegistry: {\n all: [\"zama.wrappersRegistry\"] as const,\n chainId: () => [\"zama.wrappersRegistry\", { type: \"chainId\" }] as const,\n tokenPairs: (registryAddress: Address) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"tokenPairs\",\n registryAddress: getAddress(registryAddress),\n },\n ] as const,\n confidentialTokenAddress: (registryAddress: Address, tokenAddress: Address) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"confidentialTokenAddress\",\n registryAddress: getAddress(registryAddress),\n tokenAddress: getAddress(tokenAddress),\n },\n ] as const,\n tokenAddress: (registryAddress: Address, confidentialTokenAddress: Address) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"tokenAddress\",\n registryAddress: getAddress(registryAddress),\n confidentialTokenAddress: getAddress(confidentialTokenAddress),\n },\n ] as const,\n tokenPairsLength: (registryAddress: Address) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"tokenPairsLength\",\n registryAddress: getAddress(registryAddress),\n },\n ] as const,\n tokenPairsSlice: (registryAddress: Address, fromIndex: string, toIndex: string) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"tokenPairsSlice\",\n registryAddress: getAddress(registryAddress),\n fromIndex,\n toIndex,\n },\n ] as const,\n tokenPair: (registryAddress: Address, index: string) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"tokenPair\",\n registryAddress: getAddress(registryAddress),\n index,\n },\n ] as const,\n isConfidentialTokenValid: (registryAddress: Address, confidentialTokenAddress: Address) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"isConfidentialTokenValid\",\n registryAddress: getAddress(registryAddress),\n confidentialTokenAddress: getAddress(confidentialTokenAddress),\n },\n ] as const,\n listPairs: (registryAddress: Address, page: number, pageSize: number, metadata: boolean) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"listPairs\",\n registryAddress: getAddress(registryAddress),\n page,\n pageSize,\n metadata,\n },\n ] as const,\n },\n} as const;\n","import type { Address } from \"viem\";\nimport { zamaQueryKeys } from \"./query-keys\";\n\nexport interface QueryLike {\n queryKey: readonly unknown[];\n}\n\nexport interface QueryFilterLike {\n queryKey?: readonly unknown[];\n predicate?: (query: QueryLike) => boolean;\n}\n\nexport interface QueryClientLike {\n invalidateQueries(filters: QueryFilterLike): void | Promise<void>;\n removeQueries(filters: QueryFilterLike): void;\n}\n\nfunction invalidateUnderlyingAllowanceQueries(\n queryClient: QueryClientLike,\n tokenAddress: Address,\n): void {\n void queryClient.invalidateQueries({\n queryKey: zamaQueryKeys.underlyingAllowance.token(tokenAddress),\n });\n}\n\nexport function invalidateAfterUnwrap(queryClient: QueryClientLike, tokenAddress: Address): void {\n invalidateBalanceQueries(queryClient, tokenAddress);\n invalidateUnderlyingAllowanceQueries(queryClient, tokenAddress);\n invalidateWagmiBalanceQueries(queryClient);\n}\n\nexport function invalidateBalanceQueries(\n queryClient: QueryClientLike,\n tokenAddress: Address,\n): void {\n void queryClient.invalidateQueries({\n queryKey: zamaQueryKeys.confidentialBalance.token(tokenAddress),\n });\n void queryClient.invalidateQueries({ queryKey: zamaQueryKeys.confidentialBalances.all });\n}\n\nexport function invalidateAfterShield(queryClient: QueryClientLike, tokenAddress: Address): void {\n invalidateBalanceQueries(queryClient, tokenAddress);\n invalidateUnderlyingAllowanceQueries(queryClient, tokenAddress);\n invalidateWagmiBalanceQueries(queryClient);\n}\n\nexport function invalidateAfterUnshield(queryClient: QueryClientLike, tokenAddress: Address): void {\n invalidateBalanceQueries(queryClient, tokenAddress);\n invalidateUnderlyingAllowanceQueries(queryClient, tokenAddress);\n invalidateWagmiBalanceQueries(queryClient);\n}\n\nexport function invalidateAfterTransfer(queryClient: QueryClientLike, tokenAddress: Address): void {\n invalidateBalanceQueries(queryClient, tokenAddress);\n}\n\nexport function invalidateAfterApproveUnderlying(\n queryClient: QueryClientLike,\n tokenAddress: Address,\n): void {\n invalidateUnderlyingAllowanceQueries(queryClient, tokenAddress);\n}\n\nexport function invalidateAfterApprove(queryClient: QueryClientLike, tokenAddress: Address): void {\n void queryClient.invalidateQueries({\n queryKey: zamaQueryKeys.confidentialIsApproved.token(tokenAddress),\n });\n}\n\nfunction isZamaQuery(query: QueryLike): boolean {\n return Array.isArray(query.queryKey) && typeof query.queryKey[0] === \"string\"\n ? query.queryKey[0].startsWith(\"zama.\")\n : false;\n}\n\nfunction isWagmiBalanceQuery(query: QueryLike): boolean {\n return (\n Array.isArray(query.queryKey) &&\n query.queryKey.some((part: unknown) => {\n if (typeof part !== \"object\" || part === null || !(\"functionName\" in part)) {\n return false;\n }\n return part.functionName === \"balanceOf\";\n })\n );\n}\n\nexport function invalidateWagmiBalanceQueries(queryClient: QueryClientLike): void {\n void queryClient.invalidateQueries({ predicate: isWagmiBalanceQuery });\n}\n\nexport function invalidateWalletLifecycleQueries(queryClient: QueryClientLike): void {\n queryClient.removeQueries({ queryKey: zamaQueryKeys.signerAddress.all });\n queryClient.removeQueries({ queryKey: zamaQueryKeys.decryption.all });\n void queryClient.invalidateQueries({ predicate: isZamaQuery });\n invalidateWagmiBalanceQueries(queryClient);\n}\n","import type { Address } from \"viem\";\nimport type { GenericSigner } from \"../types\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\n\nconst signerScopes = new WeakMap<GenericSigner, number>();\nlet nextSignerScope = 1;\n\nfunction getSignerScope(signer: GenericSigner): number {\n const existingScope = signerScopes.get(signer);\n if (existingScope !== undefined) {\n return existingScope;\n }\n const newScope = nextSignerScope++;\n signerScopes.set(signer, newScope);\n return newScope;\n}\n\nexport function signerAddressQueryOptions(\n signer: GenericSigner,\n): QueryFactoryOptions<\n Address,\n Error,\n Address,\n ReturnType<typeof zamaQueryKeys.signerAddress.scope>\n> {\n return {\n queryKey: zamaQueryKeys.signerAddress.scope(getSignerScope(signer)),\n queryFn: async () => signer.getAddress(),\n staleTime: 30_000,\n };\n}\n","import { decimalsContract, nameContract, symbolContract } from \"../contracts\";\n\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\nimport type { Address } from \"viem\";\n\n/** ERC-20 token metadata returned by {@link tokenMetadataQueryOptions}. */\nexport interface TokenMetadata {\n name: string;\n symbol: string;\n decimals: number;\n}\n\nexport interface TokenMetadataQueryConfig {\n query?: Record<string, unknown>;\n}\n\nexport function tokenMetadataQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config?: TokenMetadataQueryConfig,\n): QueryFactoryOptions<\n TokenMetadata,\n Error,\n TokenMetadata,\n ReturnType<typeof zamaQueryKeys.tokenMetadata.token>\n> {\n const queryKey = zamaQueryKeys.tokenMetadata.token(tokenAddress);\n\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress }] = context.queryKey;\n const [name, symbol, decimals] = await Promise.all([\n sdk.provider.readContract(nameContract(keyTokenAddress)),\n sdk.provider.readContract(symbolContract(keyTokenAddress)),\n sdk.provider.readContract(decimalsContract(keyTokenAddress)),\n ]);\n return { name, symbol, decimals };\n },\n staleTime: Infinity,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import {\n isConfidentialTokenContract,\n isConfidentialWrapperContract,\n supportsInterfaceContract,\n ERC7984_WRAPPER_INTERFACE_ID,\n} from \"../contracts\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport { isContractCallError } from \"../utils\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\nimport type { Address } from \"viem\";\n\nexport interface IsConfidentialQueryConfig {\n query?: Record<string, unknown>;\n}\n\nexport function isConfidentialQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config?: IsConfidentialQueryConfig,\n): QueryFactoryOptions<\n boolean,\n Error,\n boolean,\n ReturnType<typeof zamaQueryKeys.isConfidential.token>\n> {\n const queryKey = zamaQueryKeys.isConfidential.token(tokenAddress);\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress }] = context.queryKey;\n try {\n return await sdk.provider.readContract(isConfidentialTokenContract(keyTokenAddress));\n } catch (err) {\n // Only suppress contract execution reverts (non-ERC-165 contracts).\n // Re-throw network/transport errors so TanStack Query's retry logic applies.\n if (isContractCallError(err)) {\n return false;\n }\n throw err;\n }\n },\n staleTime: Infinity,\n enabled: config?.query?.enabled !== false,\n };\n}\n\nexport function isWrapperQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config?: IsConfidentialQueryConfig,\n): QueryFactoryOptions<boolean, Error, boolean, ReturnType<typeof zamaQueryKeys.isWrapper.token>> {\n const queryKey = zamaQueryKeys.isWrapper.token(tokenAddress);\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress }] = context.queryKey;\n try {\n // During the transition period, check both wrapper interface IDs in parallel.\n // Either returning true is sufficient to identify a confidential wrapper.\n const [legacyMatch, newMatch] = await Promise.all([\n sdk.provider.readContract(isConfidentialWrapperContract(keyTokenAddress)),\n sdk.provider.readContract(\n supportsInterfaceContract(keyTokenAddress, ERC7984_WRAPPER_INTERFACE_ID),\n ),\n ]);\n return legacyMatch || newMatch;\n } catch (err) {\n // Only suppress contract execution reverts (non-ERC-165 contracts).\n // Re-throw network/transport errors so TanStack Query's retry logic applies.\n if (isContractCallError(err)) {\n return false;\n }\n throw err;\n }\n },\n staleTime: Infinity,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import {\n ERC7984_WRAPPER_INTERFACE_ID,\n ERC7984_WRAPPER_INTERFACE_ID_LEGACY,\n supportsInterfaceContract,\n} from \"../contracts\";\nimport { ConfigurationError } from \"../errors\";\nimport type { GenericProvider } from \"../types\";\nimport { isContractCallError } from \"../utils\";\nimport type { Address } from \"viem\";\n\nexport type WrapperInterfaceVersion = \"legacy\" | \"upgraded\";\n\nasync function safeSupportsInterface(\n provider: GenericProvider,\n wrapperAddress: Address,\n interfaceId: Address,\n): Promise<boolean> {\n try {\n return await provider.readContract(supportsInterfaceContract(wrapperAddress, interfaceId));\n } catch (error) {\n if (isContractCallError(error)) {\n return false;\n }\n throw error;\n }\n}\n\nexport async function detectWrapperInterfaceVersion(\n provider: GenericProvider,\n wrapperAddress: Address,\n): Promise<WrapperInterfaceVersion> {\n // Probe the upgraded interface first: it is the target steady state and lets\n // post-upgrade wrappers avoid the legacy ERC-165 read on every refetch.\n const supportsUpgraded = await safeSupportsInterface(\n provider,\n wrapperAddress,\n ERC7984_WRAPPER_INTERFACE_ID,\n );\n if (supportsUpgraded) {\n return \"upgraded\";\n }\n\n const supportsLegacy = await safeSupportsInterface(\n provider,\n wrapperAddress,\n ERC7984_WRAPPER_INTERFACE_ID_LEGACY,\n );\n if (supportsLegacy) {\n return \"legacy\";\n }\n\n throw new ConfigurationError(\n `Contract ${wrapperAddress} does not support a known ERC7984 wrapper interface`,\n );\n}\n","import { inferredTotalSupplyContract, totalSupplyContract } from \"../contracts\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\nimport { detectWrapperInterfaceVersion } from \"./wrapper-interface-version\";\nimport type { Address } from \"viem\";\n\nexport interface TotalSupplyQueryConfig {\n query?: Record<string, unknown>;\n}\n\nexport function totalSupplyQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config?: TotalSupplyQueryConfig,\n): QueryFactoryOptions<bigint, Error, bigint, ReturnType<typeof zamaQueryKeys.totalSupply.token>> {\n const queryKey = zamaQueryKeys.totalSupply.token(tokenAddress);\n\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress }] = context.queryKey;\n // ERC-165 detection adds one or two RPC calls per refetch, which is acceptable\n // while both legacy and upgraded wrappers coexist. Remove this branch once\n // all supported wrappers expose `inferredTotalSupply()`.\n const version = await detectWrapperInterfaceVersion(sdk.provider, keyTokenAddress);\n if (version === \"upgraded\") {\n return sdk.provider.readContract(inferredTotalSupplyContract(keyTokenAddress));\n }\n return sdk.provider.readContract(totalSupplyContract(keyTokenAddress));\n },\n staleTime: 30_000,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import type { Address } from \"viem\";\nimport type { WrappersRegistry } from \"../wrappers-registry\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { assertNonNullable } from \"../utils/assertions\";\nimport { filterQueryOptions } from \"./utils\";\n\nexport interface WrapperDiscoveryQueryConfig {\n /**\n * Address of any confidential token you control.\n * Used to scope the query cache key and to gate whether the query\n * is enabled — it does not affect which wrapper the registry returns.\n */\n tokenAddress?: Address;\n /**\n * The ERC-20 token address to discover the confidential wrapper for.\n * The registry is resolved automatically from chain config.\n */\n erc20Address?: Address;\n /**\n * The resolved registry contract address for the current chain.\n * Included in the query key so that switching chains invalidates\n * stale cached results. Pass `undefined` when the chain ID is not\n * yet known — the query will be disabled.\n */\n registryAddress?: Address;\n query?: Record<string, unknown>;\n}\n\nexport function wrapperDiscoveryQueryOptions(\n registry: WrappersRegistry,\n config: WrapperDiscoveryQueryConfig,\n): QueryFactoryOptions<\n Address | null,\n Error,\n Address | null,\n ReturnType<typeof zamaQueryKeys.wrapperDiscovery.token>\n> {\n const queryKey = zamaQueryKeys.wrapperDiscovery.token(\n config.tokenAddress,\n config.erc20Address,\n config.registryAddress,\n );\n\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { erc20Address }] = context.queryKey;\n assertNonNullable(erc20Address, \"wrapperDiscoveryQueryOptions: erc20Address\");\n const result = await registry.getConfidentialToken(erc20Address);\n return result ? result.confidentialTokenAddress : null;\n },\n staleTime: Infinity,\n enabled:\n Boolean(config.tokenAddress && config.erc20Address && config.registryAddress) &&\n config.query?.enabled !== false,\n };\n}\n","import { allowanceContract, underlyingContract } from \"../contracts\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport { assertNonNullable } from \"../utils/assertions\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\nimport type { Address } from \"viem\";\n\nexport interface UnderlyingAllowanceQueryConfig {\n owner?: Address;\n wrapperAddress?: Address;\n query?: Record<string, unknown>;\n}\n\nexport function underlyingAllowanceQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config: UnderlyingAllowanceQueryConfig,\n): QueryFactoryOptions<\n bigint,\n Error,\n bigint,\n ReturnType<typeof zamaQueryKeys.underlyingAllowance.scope>\n> {\n const ownerKey = config.owner;\n const wrapperAddressKey = config.wrapperAddress;\n const queryEnabled = config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.underlyingAllowance.scope(\n tokenAddress,\n ownerKey,\n wrapperAddressKey,\n );\n\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { owner: keyOwner, wrapperAddress: keyWrapperAddress }] = context.queryKey;\n assertNonNullable(keyOwner, \"underlyingAllowanceQueryOptions: owner\");\n assertNonNullable(keyWrapperAddress, \"underlyingAllowanceQueryOptions: wrapperAddress\");\n const underlying = await sdk.provider.readContract(underlyingContract(keyWrapperAddress));\n return sdk.provider.readContract(allowanceContract(underlying, keyOwner, keyWrapperAddress));\n },\n staleTime: 30_000,\n enabled: Boolean(ownerKey && wrapperAddressKey) && queryEnabled,\n };\n}\n","import { isOperatorContract } from \"../contracts\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport { assertNonNullable } from \"../utils/assertions\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { filterQueryOptions } from \"./utils\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport type { Address } from \"viem\";\n\nexport interface ConfidentialIsApprovedQueryConfig {\n holder?: Address;\n spender?: Address;\n query?: Record<string, unknown>;\n}\n\nexport function confidentialIsApprovedQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address | undefined,\n config: ConfidentialIsApprovedQueryConfig,\n): QueryFactoryOptions<\n boolean,\n Error,\n boolean,\n ReturnType<typeof zamaQueryKeys.confidentialIsApproved.scope>\n> {\n const holderKey = config.holder;\n const spenderKey = config.spender;\n const queryEnabled = config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.confidentialIsApproved.scope(tokenAddress, holderKey, spenderKey);\n\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress, holder: keyHolder, spender: keySpender }] =\n context.queryKey;\n assertNonNullable(keyTokenAddress, \"confidentialIsApprovedQueryOptions: tokenAddress\");\n assertNonNullable(keyHolder, \"confidentialIsApprovedQueryOptions: holder\");\n assertNonNullable(keySpender, \"confidentialIsApprovedQueryOptions: spender\");\n return sdk.provider.readContract(isOperatorContract(keyTokenAddress, keyHolder, keySpender));\n },\n staleTime: 30_000,\n enabled: Boolean(tokenAddress && holderKey && spenderKey) && queryEnabled,\n };\n}\n","import type { PublicKeyData } from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\n\nexport interface PublicKeyQueryConfig {\n query?: Record<string, unknown>;\n}\n\nexport function publicKeyQueryOptions(\n sdk: ZamaSDK,\n config?: PublicKeyQueryConfig,\n): QueryFactoryOptions<\n PublicKeyData | null,\n Error,\n PublicKeyData | null,\n typeof zamaQueryKeys.publicKey.all\n> {\n const queryKey = zamaQueryKeys.publicKey.all;\n\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async () => sdk.relayer.getPublicKey(),\n staleTime: Infinity,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import type { PublicParamsData } from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { filterQueryOptions } from \"./utils\";\nimport { zamaQueryKeys } from \"./query-keys\";\n\nexport interface PublicParamsQueryConfig {\n query?: Record<string, unknown>;\n}\n\nexport function publicParamsQueryOptions(\n sdk: ZamaSDK,\n bits: number,\n config?: PublicParamsQueryConfig,\n): QueryFactoryOptions<\n PublicParamsData | null,\n Error,\n PublicParamsData | null,\n ReturnType<typeof zamaQueryKeys.publicParams.bits>\n> {\n const queryKey = zamaQueryKeys.publicParams.bits(bits);\n\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { bits: keyBits }] = context.queryKey;\n return sdk.relayer.getPublicParams(keyBits);\n },\n staleTime: Infinity,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import type { Address } from \"viem\";\nimport type { ReadonlyToken } from \"../token\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\n\nexport interface ConfidentialBalanceQueryConfig {\n tokenAddress: Address;\n owner?: Address;\n query?: Record<string, unknown>;\n}\n\n/**\n * Query options for a single confidential token balance.\n *\n * **Owner gating:** this factory does not gate on `owner !== undefined` because\n * it is also used outside React with an explicit owner. React consumers should\n * apply the gate at the hook level (e.g. `enabled: ... && owner !== undefined`),\n * as {@link useConfidentialBalance} does.\n */\nexport function confidentialBalanceQueryOptions(\n token: ReadonlyToken,\n config: ConfidentialBalanceQueryConfig,\n): QueryFactoryOptions<\n bigint,\n Error,\n bigint,\n ReturnType<typeof zamaQueryKeys.confidentialBalance.owner>\n> {\n const queryOpts = config.query ?? {};\n\n return {\n ...filterQueryOptions(queryOpts),\n queryKey: zamaQueryKeys.confidentialBalance.owner(config.tokenAddress, config.owner),\n queryFn: async (context) => {\n const [, { owner: keyOwner }] = context.queryKey;\n return token.balanceOf(keyOwner);\n },\n enabled: queryOpts?.enabled !== false,\n };\n}\n","import type { Address } from \"viem\";\nimport { ReadonlyToken, type BatchBalancesResult } from \"../token/readonly-token\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\n\nexport interface ConfidentialBalancesQueryConfig {\n owner?: Address;\n query?: Record<string, unknown>;\n}\n\nexport function confidentialBalancesQueryOptions(\n tokens: ReadonlyToken[],\n config?: ConfidentialBalancesQueryConfig,\n): QueryFactoryOptions<\n BatchBalancesResult,\n Error,\n BatchBalancesResult,\n ReturnType<typeof zamaQueryKeys.confidentialBalances.tokens>\n> {\n const ownerKey = config?.owner;\n const queryOpts = config?.query ?? {};\n const tokenAddresses = tokens.map((token) => token.address);\n\n return {\n ...filterQueryOptions(queryOpts),\n queryKey: zamaQueryKeys.confidentialBalances.tokens(tokenAddresses, ownerKey),\n queryFn: async (context) => {\n const [, { owner: keyOwner }] = context.queryKey;\n return ReadonlyToken.batchBalancesOf(tokens, keyOwner);\n },\n enabled: tokens.length > 0 && queryOpts?.enabled !== false,\n };\n}\n","import { type Address, zeroAddress } from \"viem\";\nimport {\n getTokenPairsContract,\n getTokenPairsLengthContract,\n getTokenPairsSliceContract,\n getTokenPairContract,\n getConfidentialTokenAddressContract,\n getTokenAddressContract,\n isConfidentialTokenValidContract,\n} from \"../contracts\";\nimport type {\n TokenWrapperPair,\n TokenWrapperPairWithMetadata,\n PaginatedResult,\n} from \"../contracts/wrappers-registry\";\nimport type { WrappersRegistry } from \"../wrappers-registry\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\n\n/** Default registry TTL in milliseconds — matches {@link WrappersRegistry} default of 86400 s. */\nconst DEFAULT_STALE_TIME_MS = 86400 * 1000;\n\nexport interface WrappersRegistryQueryConfig {\n registryAddress: Address | undefined;\n query?: Record<string, unknown>;\n}\n\nexport function tokenPairsQueryOptions(\n sdk: ZamaSDK,\n config: WrappersRegistryQueryConfig,\n): QueryFactoryOptions<\n readonly TokenWrapperPair[],\n Error,\n readonly TokenWrapperPair[],\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenPairs>\n> {\n const enabled = Boolean(config.registryAddress) && config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenPairs(config.registryAddress ?? zeroAddress);\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress }] = context.queryKey;\n return sdk.provider.readContract(getTokenPairsContract(registryAddress));\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport interface ConfidentialTokenAddressQueryConfig extends WrappersRegistryQueryConfig {\n tokenAddress?: Address;\n}\n\nexport function confidentialTokenAddressQueryOptions(\n sdk: ZamaSDK,\n config: ConfidentialTokenAddressQueryConfig,\n): QueryFactoryOptions<\n readonly [boolean, Address],\n Error,\n readonly [boolean, Address],\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.confidentialTokenAddress>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n Boolean(config.tokenAddress) &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.confidentialTokenAddress(\n config.registryAddress ?? zeroAddress,\n config.tokenAddress ?? zeroAddress,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, tokenAddress }] = context.queryKey;\n return sdk.provider.readContract(\n getConfidentialTokenAddressContract(registryAddress, tokenAddress),\n );\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport interface TokenAddressQueryConfig extends WrappersRegistryQueryConfig {\n confidentialTokenAddress?: Address;\n}\n\nexport function tokenAddressQueryOptions(\n sdk: ZamaSDK,\n config: TokenAddressQueryConfig,\n): QueryFactoryOptions<\n readonly [boolean, Address],\n Error,\n readonly [boolean, Address],\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenAddress>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n Boolean(config.confidentialTokenAddress) &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenAddress(\n config.registryAddress ?? zeroAddress,\n config.confidentialTokenAddress ?? zeroAddress,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, confidentialTokenAddress }] = context.queryKey;\n return sdk.provider.readContract(\n getTokenAddressContract(registryAddress, confidentialTokenAddress),\n );\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport function tokenPairsLengthQueryOptions(\n sdk: ZamaSDK,\n config: WrappersRegistryQueryConfig,\n): QueryFactoryOptions<\n bigint,\n Error,\n bigint,\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenPairsLength>\n> {\n const enabled = Boolean(config.registryAddress) && config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenPairsLength(\n config.registryAddress ?? zeroAddress,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress }] = context.queryKey;\n return sdk.provider.readContract(getTokenPairsLengthContract(registryAddress));\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport interface TokenPairsSliceQueryConfig extends WrappersRegistryQueryConfig {\n fromIndex?: bigint;\n toIndex?: bigint;\n}\n\nexport function tokenPairsSliceQueryOptions(\n sdk: ZamaSDK,\n config: TokenPairsSliceQueryConfig,\n): QueryFactoryOptions<\n readonly TokenWrapperPair[],\n Error,\n readonly TokenWrapperPair[],\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenPairsSlice>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n config.fromIndex !== undefined &&\n config.toIndex !== undefined &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenPairsSlice(\n config.registryAddress ?? zeroAddress,\n String(config.fromIndex ?? 0n),\n String(config.toIndex ?? 0n),\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, fromIndex, toIndex }] = context.queryKey;\n return sdk.provider.readContract(\n getTokenPairsSliceContract(registryAddress, BigInt(fromIndex), BigInt(toIndex)),\n );\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport interface TokenPairQueryConfig extends WrappersRegistryQueryConfig {\n index?: bigint;\n}\n\nexport function tokenPairQueryOptions(\n sdk: ZamaSDK,\n config: TokenPairQueryConfig,\n): QueryFactoryOptions<\n TokenWrapperPair,\n Error,\n TokenWrapperPair,\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenPair>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n config.index !== undefined &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenPair(\n config.registryAddress ?? zeroAddress,\n String(config.index ?? 0n),\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, index }] = context.queryKey;\n return sdk.provider.readContract(getTokenPairContract(registryAddress, BigInt(index)));\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport interface IsConfidentialTokenValidQueryConfig extends WrappersRegistryQueryConfig {\n confidentialTokenAddress?: Address;\n}\n\nexport function isConfidentialTokenValidQueryOptions(\n sdk: ZamaSDK,\n config: IsConfidentialTokenValidQueryConfig,\n): QueryFactoryOptions<\n boolean,\n Error,\n boolean,\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.isConfidentialTokenValid>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n Boolean(config.confidentialTokenAddress) &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.isConfidentialTokenValid(\n config.registryAddress ?? zeroAddress,\n config.confidentialTokenAddress ?? zeroAddress,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, confidentialTokenAddress }] = context.queryKey;\n return sdk.provider.readContract(\n isConfidentialTokenValidContract(registryAddress, confidentialTokenAddress),\n );\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport interface ListPairsQueryConfig {\n /**\n * The registry address for this chain — used as a query key discriminator.\n * The registry instance already knows how to resolve the address for the\n * current chain; this field just keeps the TanStack Query cache isolated\n * per registry contract.\n */\n registryAddress: Address | undefined;\n page?: number;\n pageSize?: number;\n metadata?: boolean;\n query?: Record<string, unknown>;\n}\n\n/**\n * Query options for paginated listing of token wrapper pairs.\n *\n * Accepts a {@link WrappersRegistry} instance rather than a raw provider so that the\n * class-level TTL cache is shared across multiple `queryFn` executions. Pass\n * `sdk.registry` (the ZamaSDK lazy singleton) to ensure a single shared cache.\n */\nexport function listPairsQueryOptions(\n registry: WrappersRegistry,\n config: ListPairsQueryConfig,\n): QueryFactoryOptions<\n PaginatedResult<TokenWrapperPair | TokenWrapperPairWithMetadata>,\n Error,\n PaginatedResult<TokenWrapperPair | TokenWrapperPairWithMetadata>,\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.listPairs>\n> {\n const enabled = Boolean(config.registryAddress) && config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.listPairs(\n config.registryAddress ?? zeroAddress,\n config.page ?? 1,\n config.pageSize ?? 100,\n config.metadata ?? false,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { page, pageSize, metadata }] = context.queryKey;\n return registry.listPairs({ page, pageSize, metadata });\n },\n // Use the registry's own TTL so TanStack Query and the class-level cache\n // operate under the same freshness contract.\n staleTime: registry.ttlMs,\n enabled,\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { ShieldCallbacks, TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link shieldMutationOptions}. */\nexport interface ShieldParams extends ShieldCallbacks {\n amount: bigint;\n approvalStrategy?: \"max\" | \"exact\" | \"skip\";\n /** Recipient address for the shielded tokens. Defaults to the connected wallet. */\n to?: Address;\n}\n\nexport function shieldMutationOptions(\n token: Token,\n): MutationFactoryOptions<readonly [\"zama.shield\", Address], ShieldParams, TransactionResult> {\n return {\n mutationKey: [\"zama.shield\", token.address] as const,\n mutationFn: async ({ amount, ...rest }) => token.shield(amount, rest),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult, TransferOptions } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link confidentialTransferMutationOptions}. */\nexport interface ConfidentialTransferParams extends TransferOptions {\n to: Address;\n amount: bigint;\n}\n\nexport function confidentialTransferMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.confidentialTransfer\", Address],\n ConfidentialTransferParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.confidentialTransfer\", token.address] as const,\n mutationFn: async ({ to, amount, ...options }) =>\n token.confidentialTransfer(to, amount, options),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransferCallbacks, TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link confidentialTransferFromMutationOptions}. */\nexport interface ConfidentialTransferFromParams {\n from: Address;\n to: Address;\n amount: bigint;\n /** Optional progress callbacks for the multi-step transfer flow. */\n callbacks?: TransferCallbacks;\n}\n\nexport function confidentialTransferFromMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.confidentialTransferFrom\", Address],\n ConfidentialTransferFromParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.confidentialTransferFrom\", token.address] as const,\n mutationFn: async ({ from, to, amount, callbacks }) =>\n token.confidentialTransferFrom(from, to, amount, callbacks),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link confidentialApproveMutationOptions}. */\nexport interface ConfidentialApproveParams {\n spender: Address;\n until?: number;\n}\n\nexport function confidentialApproveMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.confidentialApprove\", Address],\n ConfidentialApproveParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.confidentialApprove\", token.address] as const,\n mutationFn: async ({ spender, until }) => token.approve(spender, until),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link approveUnderlyingMutationOptions}. */\nexport interface ApproveUnderlyingParams {\n amount?: bigint;\n}\n\nexport function approveUnderlyingMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.approveUnderlying\", Address],\n ApproveUnderlyingParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.approveUnderlying\", token.address] as const,\n mutationFn: async ({ amount }) => token.approveUnderlying(amount),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult, UnshieldOptions } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link unshieldMutationOptions}. */\nexport interface UnshieldParams extends UnshieldOptions {\n amount: bigint;\n}\n\nexport function unshieldMutationOptions(\n token: Token,\n): MutationFactoryOptions<readonly [\"zama.unshield\", Address], UnshieldParams, TransactionResult> {\n return {\n mutationKey: [\"zama.unshield\", token.address] as const,\n mutationFn: async ({ amount, ...options }) => token.unshield(amount, options),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult, UnshieldCallbacks } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link unshieldAllMutationOptions}. */\nexport interface UnshieldAllParams extends UnshieldCallbacks {}\n\nexport function unshieldAllMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.unshieldAll\", Address],\n UnshieldAllParams | void,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.unshieldAll\", token.address] as const,\n mutationFn: async (params) => token.unshieldAll(params || undefined),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult, UnshieldCallbacks } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address, Hex } from \"viem\";\n\n/** Variables for {@link resumeUnshieldMutationOptions}. */\nexport interface ResumeUnshieldParams extends UnshieldCallbacks {\n unwrapTxHash: Hex;\n}\n\nexport function resumeUnshieldMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.resumeUnshield\", Address],\n ResumeUnshieldParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.resumeUnshield\", token.address] as const,\n mutationFn: async ({ unwrapTxHash, ...callbacks }) =>\n token.resumeUnshield(unwrapTxHash, callbacks),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link unwrapMutationOptions}. */\nexport interface UnwrapParams {\n amount: bigint;\n}\n\nexport function unwrapMutationOptions(\n token: Token,\n): MutationFactoryOptions<readonly [\"zama.unwrap\", Address], UnwrapParams, TransactionResult> {\n return {\n mutationKey: [\"zama.unwrap\", token.address] as const,\n mutationFn: async ({ amount }) => token.unwrap(amount),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\nexport function unwrapAllMutationOptions(\n token: Token,\n): MutationFactoryOptions<readonly [\"zama.unwrapAll\", Address], void, TransactionResult> {\n return {\n mutationKey: [\"zama.unwrapAll\", token.address] as const,\n mutationFn: async () => token.unwrapAll(),\n };\n}\n","import type { Handle } from \"../relayer/relayer-sdk.types\";\nimport type { Token } from \"../token/token\";\nimport type { TransactionResult } from \"../types\";\nimport { ConfigurationError } from \"../errors\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n/** Variables for {@link finalizeUnwrapMutationOptions}. */\nexport type FinalizeUnwrapParams =\n /** Preferred input from upgraded `UnwrapRequested` events. */\n | { unwrapRequestId: Handle; burnAmountHandle?: never }\n /** Legacy input from pre-upgrade `UnwrapRequested` events. */\n | { unwrapRequestId?: never; burnAmountHandle: Handle };\n\nexport function finalizeUnwrapMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.finalizeUnwrap\", Address],\n FinalizeUnwrapParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.finalizeUnwrap\", token.address] as const,\n mutationFn: async (params) => {\n const handle = params.unwrapRequestId ?? params.burnAmountHandle;\n if (!handle) {\n throw new ConfigurationError(\"finalizeUnwrap requires unwrapRequestId or burnAmountHandle\");\n }\n return token.finalizeUnwrap(handle);\n },\n };\n}\n","import type { EncryptParams, EncryptResult } from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\nexport function encryptMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.encrypt\"], EncryptParams, EncryptResult> {\n return {\n mutationKey: [\"zama.encrypt\"],\n mutationFn: async (params) => sdk.relayer.encrypt(params),\n };\n}\n","import type { KeypairType } from \"@zama-fhe/relayer-sdk/bundle\";\nimport type { Hex } from \"viem\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\nexport function generateKeypairMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.generateKeypair\"], void, KeypairType<Hex>> {\n return {\n mutationKey: [\"zama.generateKeypair\"],\n mutationFn: async () => sdk.relayer.generateKeypair(),\n };\n}\n","import type { KmsUserDecryptEIP712UserArgsType } from \"@zama-fhe/relayer-sdk/bundle\";\nimport type { Address, Hex } from \"viem\";\nimport type { EIP712TypedData } from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/**\n * Variables for {@link createEIP712MutationOptions}. Derived from\n * {@link KmsUserDecryptEIP712UserArgsType} with stricter `publicKey`/`contractAddresses`\n * typing and optional `durationDays`. `extraData` is computed internally and omitted.\n */\nexport type CreateEIP712Params = Pick<KmsUserDecryptEIP712UserArgsType, \"startTimestamp\"> & {\n publicKey: Hex;\n contractAddresses: Address[];\n durationDays?: number;\n};\n\nexport function createEIP712MutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.createEIP712\"], CreateEIP712Params, EIP712TypedData> {\n return {\n mutationKey: [\"zama.createEIP712\"],\n mutationFn: async ({ publicKey, contractAddresses, startTimestamp, durationDays }) =>\n sdk.relayer.createEIP712(publicKey, contractAddresses, startTimestamp, durationDays),\n };\n}\n","import type { KmsDelegatedUserDecryptEIP712Type } from \"@zama-fhe/relayer-sdk/bundle\";\nimport type { Address, Hex } from \"viem\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link createDelegatedUserDecryptEIP712MutationOptions}. */\nexport interface CreateDelegatedUserDecryptEIP712Params {\n publicKey: Hex;\n contractAddresses: Address[];\n delegatorAddress: Address;\n startTimestamp: number;\n durationDays?: number;\n}\n\nexport function createDelegatedUserDecryptEIP712MutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<\n readonly [\"zama.createDelegatedUserDecryptEIP712\"],\n CreateDelegatedUserDecryptEIP712Params,\n KmsDelegatedUserDecryptEIP712Type\n> {\n return {\n mutationKey: [\"zama.createDelegatedUserDecryptEIP712\"],\n mutationFn: async ({\n publicKey,\n contractAddresses,\n delegatorAddress,\n startTimestamp,\n durationDays,\n }) =>\n sdk.relayer.createDelegatedUserDecryptEIP712(\n publicKey,\n contractAddresses,\n delegatorAddress,\n startTimestamp,\n durationDays,\n ),\n };\n}\n","import type {\n ClearValueType,\n DelegatedUserDecryptParams,\n Handle,\n} from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\nexport function delegatedUserDecryptMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<\n readonly [\"zama.delegatedUserDecrypt\"],\n DelegatedUserDecryptParams,\n Readonly<Record<Handle, ClearValueType>>\n> {\n return {\n mutationKey: [\"zama.delegatedUserDecrypt\"],\n mutationFn: async (params) => sdk.relayer.delegatedUserDecrypt(params),\n };\n}\n","import type { ClearValueType, Handle, PublicDecryptResult } from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\n\nexport function publicDecryptMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.publicDecrypt\"], Handle[], PublicDecryptResult> {\n return {\n mutationKey: [\"zama.publicDecrypt\"],\n mutationFn: async (handles) => sdk.publicDecrypt(handles),\n onSuccess: (data, _variables, _onMutateResult, context) => {\n for (const [handle, value] of Object.entries(data.clearValues) as [\n Handle,\n ClearValueType,\n ][]) {\n context.client.setQueryData(zamaQueryKeys.decryption.handle(handle), value);\n }\n },\n };\n}\n","import type { InputProofBytesType, ZKProofLike } from \"@zama-fhe/relayer-sdk/bundle\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\nexport function requestZKProofVerificationMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<\n readonly [\"zama.requestZKProofVerification\"],\n ZKProofLike,\n InputProofBytesType\n> {\n return {\n mutationKey: [\"zama.requestZKProofVerification\"],\n mutationFn: async (zkProof) => sdk.relayer.requestZKProofVerification(zkProof),\n };\n}\n","import type { Address } from \"viem\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\nexport function allowMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.allow\"], Address[], void> {\n return {\n mutationKey: [\"zama.allow\"],\n mutationFn: (contractAddresses) => sdk.allow(contractAddresses),\n };\n}\n","import type { Address } from \"viem\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\n\nexport interface IsAllowedQueryConfig {\n account: Address;\n /** Contract addresses to check credentials against. */\n contractAddresses: [Address, ...Address[]];\n query?: Record<string, unknown>;\n}\n\nexport function isAllowedQueryOptions(\n sdk: ZamaSDK,\n config: IsAllowedQueryConfig,\n): QueryFactoryOptions<boolean, Error, boolean, ReturnType<typeof zamaQueryKeys.isAllowed.scope>> {\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey: zamaQueryKeys.isAllowed.scope(config.account, config.contractAddresses),\n queryFn: (context) => {\n const [, { contractAddresses }] = context.queryKey;\n return sdk.credentials.isAllowed(contractAddresses as [Address, ...Address[]]);\n },\n staleTime: 30_000,\n enabled: config.query?.enabled !== false,\n } as const;\n}\n","import type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\nexport function revokeMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.revoke\"], Address[], void> {\n return {\n mutationKey: [\"zama.revoke\"],\n mutationFn: (contractAddresses) => sdk.credentials.revoke(...contractAddresses),\n };\n}\n","import type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\nexport function revokeSessionMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.revokeSession\"], void, void> {\n return {\n mutationKey: [\"zama.revokeSession\"],\n mutationFn: () => sdk.revokeSession(),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { Address } from \"viem\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link delegateDecryptionMutationOptions}. */\nexport interface DelegateDecryptionParams {\n delegateAddress: Address;\n expirationDate?: Date;\n}\n\nexport function delegateDecryptionMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.delegateDecryption\", Address],\n DelegateDecryptionParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.delegateDecryption\", token.address] as const,\n mutationFn: async ({ delegateAddress, expirationDate }) =>\n token.delegateDecryption({ delegateAddress, expirationDate }),\n };\n}\n","import type { UserDecryptResults } from \"@zama-fhe/relayer-sdk/bundle\";\nimport type { Address } from \"viem\";\nimport type { Handle } from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\n\nexport interface DecryptHandle {\n handle: Handle;\n contractAddress: Address;\n}\n\n/** Alias for {@link UserDecryptResults}. */\nexport type DecryptResult = UserDecryptResults;\n\nexport interface UserDecryptQueryConfig {\n handles: DecryptHandle[];\n}\n\nexport function userDecryptQueryOptions(\n sdk: ZamaSDK,\n config: UserDecryptQueryConfig,\n): QueryFactoryOptions<\n DecryptResult,\n Error,\n DecryptResult,\n ReturnType<typeof zamaQueryKeys.decryption.handles>\n> {\n return {\n queryKey: zamaQueryKeys.decryption.handles(config.handles),\n queryFn: (context) => {\n const [, { handles }] = context.queryKey;\n return sdk.userDecrypt(handles as DecryptHandle[]);\n },\n staleTime: Infinity,\n enabled: config.handles.length > 0,\n };\n}\n","import type { Address } from \"viem\";\nimport type { ReadonlyToken } from \"../token/readonly-token\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link decryptBalanceAsMutationOptions}. */\nexport interface DecryptBalanceAsParams {\n delegatorAddress: Address;\n accountAddress?: Address;\n}\n\nexport function decryptBalanceAsMutationOptions(\n readonlyToken: ReadonlyToken,\n): MutationFactoryOptions<\n readonly [\"zama.decryptBalanceAs\", Address],\n DecryptBalanceAsParams,\n bigint\n> {\n return {\n mutationKey: [\"zama.decryptBalanceAs\", readonlyToken.address] as const,\n mutationFn: async ({ delegatorAddress, accountAddress }) =>\n readonlyToken.decryptBalanceAs({ delegatorAddress, accountAddress }),\n };\n}\n","import { ReadonlyToken, type BatchDecryptAsOptions } from \"../token/readonly-token\";\nimport type { Address } from \"viem\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link batchDecryptBalancesAsMutationOptions}. */\nexport type BatchDecryptBalancesAsParams = BatchDecryptAsOptions;\n\nexport function batchDecryptBalancesAsMutationOptions(\n tokens: ReadonlyToken[],\n): MutationFactoryOptions<\n readonly [\"zama.batchDecryptBalancesAs\", ...Address[]],\n BatchDecryptBalancesAsParams,\n Map<Address, bigint>\n> {\n return {\n mutationKey: [\"zama.batchDecryptBalancesAs\", ...tokens.map((t) => t.address)] as const,\n mutationFn: async (params) => ReadonlyToken.batchDecryptBalancesAs(tokens, params),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { Address } from \"viem\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link revokeDelegationMutationOptions}. */\nexport interface RevokeDelegationParams {\n delegateAddress: Address;\n}\n\nexport function revokeDelegationMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.revokeDelegation\", Address],\n RevokeDelegationParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.revokeDelegation\", token.address] as const,\n mutationFn: async ({ delegateAddress }) => token.revokeDelegation({ delegateAddress }),\n };\n}\n","import type { Address } from \"viem\";\nimport { MAX_UINT64 } from \"../contracts\";\nimport { getDelegationExpiryContract } from \"../contracts/acl\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { filterQueryOptions } from \"./utils\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { assertNonNullable } from \"../utils\";\n\nexport interface DelegationStatusData {\n isDelegated: boolean;\n expiryTimestamp: bigint;\n}\n\nexport interface DelegationStatusQueryConfig {\n tokenAddress: Address | undefined;\n delegatorAddress?: Address;\n delegateAddress?: Address;\n query?: Record<string, unknown>;\n}\n\nexport function delegationStatusQueryOptions(\n sdk: ZamaSDK,\n config: DelegationStatusQueryConfig,\n): QueryFactoryOptions<\n DelegationStatusData,\n Error,\n DelegationStatusData,\n ReturnType<typeof zamaQueryKeys.delegationStatus.scope>\n> {\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey: zamaQueryKeys.delegationStatus.scope(\n config.tokenAddress,\n config.delegatorAddress,\n config.delegateAddress,\n ),\n queryFn: async (context) => {\n const [, { tokenAddress, delegatorAddress, delegateAddress }] = context.queryKey;\n assertNonNullable(tokenAddress, \"delegationStatusQueryOptions: tokenAddress\");\n assertNonNullable(delegatorAddress, \"delegationStatusQueryOptions: delegatorAddress\");\n assertNonNullable(delegateAddress, \"delegationStatusQueryOptions: delegateAddress\");\n const acl = await sdk.relayer.getAclAddress();\n const expiryTimestamp = await sdk.provider.readContract(\n getDelegationExpiryContract(acl, delegatorAddress, delegateAddress, tokenAddress),\n );\n // Derive isDelegated from expiry + chain time to stay consistent\n // with ReadonlyToken.isDelegated() (avoids client-clock skew).\n let isDelegated: boolean;\n if (expiryTimestamp === 0n) {\n isDelegated = false;\n } else if (expiryTimestamp === MAX_UINT64) {\n isDelegated = true;\n } else {\n const now = await sdk.provider.getBlockTimestamp();\n isDelegated = expiryTimestamp > now;\n }\n return { isDelegated, expiryTimestamp };\n },\n enabled:\n Boolean(config.tokenAddress && config.delegatorAddress && config.delegateAddress) &&\n config.query?.enabled !== false,\n } as const;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/query/utils.ts","../../../src/query/query-keys.ts","../../../src/query/invalidation.ts","../../../src/query/signer-address.ts","../../../src/query/token-metadata.ts","../../../src/query/is-confidential.ts","../../../src/query/wrapper-interface-version.ts","../../../src/query/total-supply.ts","../../../src/query/wrapper-discovery.ts","../../../src/query/underlying-allowance.ts","../../../src/query/confidential-is-approved.ts","../../../src/query/public-key.ts","../../../src/query/public-params.ts","../../../src/query/confidential-balance.ts","../../../src/query/confidential-balances.ts","../../../src/query/wrappers-registry.ts","../../../src/query/shield.ts","../../../src/query/transfer.ts","../../../src/query/transfer-from.ts","../../../src/query/approve.ts","../../../src/query/approve-underlying.ts","../../../src/query/unshield.ts","../../../src/query/unshield-all.ts","../../../src/query/resume-unshield.ts","../../../src/query/unwrap.ts","../../../src/query/unwrap-all.ts","../../../src/query/finalize-unwrap.ts","../../../src/query/encrypt.ts","../../../src/query/generate-keypair.ts","../../../src/query/create-eip712.ts","../../../src/query/create-delegated-user-decrypt-eip712.ts","../../../src/query/delegated-user-decrypt.ts","../../../src/query/public-decrypt.ts","../../../src/query/request-zk-proof-verification.ts","../../../src/query/allow.ts","../../../src/query/is-allowed.ts","../../../src/query/revoke.ts","../../../src/query/revoke-session.ts","../../../src/query/delegate-decryption.ts","../../../src/query/user-decrypt.ts","../../../src/query/decrypt-balance-as.ts","../../../src/query/batch-decrypt-balances-as.ts","../../../src/query/revoke-delegation.ts","../../../src/query/delegation-status.ts"],"sourcesContent":["// Adapted from the wagmi codebase\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-wrapper-object-types\nfunction isPlainObject(value: any): value is Object {\n if (!hasObjectPrototype(value)) {\n return false;\n }\n\n // If has modified constructor\n const ctor = value.constructor;\n if (ctor === undefined) {\n return true;\n }\n\n // If has modified prototype\n const prot = ctor.prototype;\n if (!hasObjectPrototype(prot)) {\n return false;\n }\n\n // If constructor does not have an Object-specific method\n // biome-ignore lint/suspicious/noPrototypeBuiltins: using\n // eslint-disable-next-line no-prototype-builtins\n if (!prot.hasOwnProperty(\"isPrototypeOf\")) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction hasObjectPrototype(o: any): boolean {\n return Object.prototype.toString.call(o) === \"[object Object]\";\n}\n\nexport type StrippedQueryOptionKeys =\n // Keep this union aligned with @tanstack/query-core behavioral options\n // (for example QueryObserverOptions). Revisit on every upgrade to avoid\n // leaking query controls into lower-level query factories.\n | \"gcTime\"\n | \"staleTime\"\n | \"enabled\"\n | \"select\"\n | \"refetchInterval\"\n | \"refetchOnMount\"\n | \"refetchOnWindowFocus\"\n | \"refetchOnReconnect\"\n | \"retry\"\n | \"retryDelay\"\n | \"retryOnMount\"\n | \"queryFn\"\n | \"queryKey\"\n | \"queryKeyHashFn\"\n | \"initialData\"\n | \"initialDataUpdatedAt\"\n | \"placeholderData\"\n | \"structuralSharing\"\n | \"throwOnError\"\n | \"meta\"\n | \"query\"\n | \"pollingInterval\";\n\n/**\n * Remove TanStack behavioral options from a query config object so only domain\n * parameters remain for the lower-level factory.\n *\n * @example\n * ```ts\n * const params = filterQueryOptions({\n * query: { enabled: false },\n * gcTime: 60_000,\n * owner: \"0xabc\",\n * });\n * // => { owner: \"0xabc\" }\n * ```\n */\nexport function filterQueryOptions<TOptions extends Record<string, unknown>>(\n options: TOptions,\n): Omit<TOptions, StrippedQueryOptionKeys> {\n const {\n gcTime: _gcTime,\n staleTime: _staleTime,\n enabled: _enabled,\n select: _select,\n refetchInterval: _refetchInterval,\n refetchOnMount: _refetchOnMount,\n refetchOnWindowFocus: _refetchOnWindowFocus,\n refetchOnReconnect: _refetchOnReconnect,\n retry: _retry,\n retryDelay: _retryDelay,\n retryOnMount: _retryOnMount,\n queryFn: _queryFn,\n queryKey: _queryKey,\n queryKeyHashFn: _queryKeyHashFn,\n initialData: _initialData,\n initialDataUpdatedAt: _initialDataUpdatedAt,\n placeholderData: _placeholderData,\n structuralSharing: _structuralSharing,\n throwOnError: _throwOnError,\n meta: _meta,\n query: _query,\n pollingInterval: _pollingInterval,\n ...rest\n } = options;\n\n return rest;\n}\n\n/**\n * Stable hash function for query keys.\n * Sorts object keys recursively and converts bigint values to strings.\n *\n * @remarks\n * bigint values are serialized as decimal strings, so `42n` and `\"42\"` hash to\n * the same token when they occupy the same position. This collision is accepted\n * by design for the current query-key conventions in this package.\n */\nexport function hashFn(queryKey: readonly unknown[]): string {\n return JSON.stringify(queryKey, (_, value) => {\n if (isPlainObject(value)) {\n return Object.keys(value)\n .toSorted()\n .reduce(\n (result, key) => {\n result[key] = value[key];\n return result;\n },\n {} as Record<string, unknown>,\n );\n }\n\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n\n return value;\n });\n}\n","import { getAddress } from \"viem\";\nimport type { Address } from \"viem\";\n\nconst normalizeAddresses = (addresses: Address[]): Address[] =>\n addresses.map((address) => getAddress(address));\nconst normalizeAddress = (address?: Address): Address | undefined =>\n address === undefined ? undefined : getAddress(address);\n\n/**\n * Canonical query-key namespace for `@zama-fhe/sdk/query`.\n *\n * @example\n * ```ts\n * queryClient.invalidateQueries({\n * queryKey: zamaQueryKeys.confidentialBalance.token(\"0xToken\"),\n * });\n * ```\n */\nexport const zamaQueryKeys = {\n signerAddress: {\n all: [\"zama.signerAddress\"] as const,\n scope: (scope: number) => [\"zama.signerAddress\", { scope }] as const,\n },\n\n confidentialBalance: {\n all: [\"zama.confidentialBalance\"] as const,\n token: (tokenAddress: Address) =>\n [\"zama.confidentialBalance\", { tokenAddress: getAddress(tokenAddress) }] as const,\n owner: (tokenAddress: Address, owner?: Address) =>\n [\n \"zama.confidentialBalance\",\n {\n tokenAddress: getAddress(tokenAddress),\n ...(owner ? { owner: getAddress(owner) } : {}),\n },\n ] as const,\n },\n\n confidentialBalances: {\n all: [\"zama.confidentialBalances\"] as const,\n tokens: (tokenAddresses: Address[], owner?: Address) =>\n [\n \"zama.confidentialBalances\",\n {\n tokenAddresses: normalizeAddresses(tokenAddresses),\n ...(owner ? { owner: getAddress(owner) } : {}),\n },\n ] as const,\n },\n\n tokenMetadata: {\n all: [\"zama.tokenMetadata\"] as const,\n token: (tokenAddress: Address) =>\n [\"zama.tokenMetadata\", { tokenAddress: getAddress(tokenAddress) }] as const,\n },\n\n isConfidential: {\n all: [\"zama.isConfidential\"] as const,\n token: (tokenAddress: Address) =>\n [\"zama.isConfidential\", { tokenAddress: getAddress(tokenAddress) }] as const,\n },\n\n isWrapper: {\n all: [\"zama.isWrapper\"] as const,\n token: (tokenAddress: Address) =>\n [\"zama.isWrapper\", { tokenAddress: getAddress(tokenAddress) }] as const,\n },\n\n wrapperDiscovery: {\n all: [\"zama.wrapperDiscovery\"] as const,\n token: (tokenAddress?: Address, erc20Address?: Address, registryAddress?: Address) => {\n const t = normalizeAddress(tokenAddress);\n const e = normalizeAddress(erc20Address);\n const r = normalizeAddress(registryAddress);\n return [\n \"zama.wrapperDiscovery\",\n {\n ...(t ? { tokenAddress: t } : {}),\n ...(e ? { erc20Address: e } : {}),\n ...(r ? { registryAddress: r } : {}),\n },\n ] as const;\n },\n },\n\n underlyingAllowance: {\n all: [\"zama.underlyingAllowance\"] as const,\n token: (tokenAddress: Address) =>\n [\"zama.underlyingAllowance\", { tokenAddress: getAddress(tokenAddress) }] as const,\n scope: (tokenAddress: Address, owner?: Address, wrapperAddress?: Address) =>\n [\n \"zama.underlyingAllowance\",\n {\n tokenAddress: getAddress(tokenAddress),\n ...(owner ? { owner: getAddress(owner) } : {}),\n ...(wrapperAddress ? { wrapperAddress: getAddress(wrapperAddress) } : {}),\n },\n ] as const,\n },\n\n confidentialIsApproved: {\n all: [\"zama.confidentialIsApproved\"] as const,\n token: (tokenAddress?: Address) => {\n const t = normalizeAddress(tokenAddress);\n return [\"zama.confidentialIsApproved\", t ? { tokenAddress: t } : {}] as const;\n },\n scope: (tokenAddress?: Address, holder?: Address, spender?: Address) => {\n const t = normalizeAddress(tokenAddress);\n const h = normalizeAddress(holder);\n const s = normalizeAddress(spender);\n return [\n \"zama.confidentialIsApproved\",\n {\n ...(t ? { tokenAddress: t } : {}),\n ...(h ? { holder: h } : {}),\n ...(s ? { spender: s } : {}),\n },\n ] as const;\n },\n },\n\n totalSupply: {\n all: [\"zama.totalSupply\"] as const,\n token: (tokenAddress: Address) =>\n [\"zama.totalSupply\", { tokenAddress: getAddress(tokenAddress) }] as const,\n },\n\n isAllowed: {\n all: [\"zama.isAllowed\"] as const,\n scope: (account: Address, contractAddresses: Address[]) =>\n [\n \"zama.isAllowed\",\n {\n account: getAddress(account),\n contractAddresses: normalizeAddresses(contractAddresses).toSorted(),\n },\n ] as const,\n },\n\n publicKey: {\n all: [\"zama.publicKey\"] as const,\n },\n\n publicParams: {\n all: [\"zama.publicParams\"] as const,\n bits: (bits: number) => [\"zama.publicParams\", { bits }] as const,\n },\n\n delegationStatus: {\n all: [\"zama.delegationStatus\"] as const,\n token: (tokenAddress?: Address) => {\n const t = normalizeAddress(tokenAddress);\n return [\"zama.delegationStatus\", t ? { tokenAddress: t } : {}] as const;\n },\n scope: (tokenAddress?: Address, delegator?: Address, delegate?: Address) => {\n const t = normalizeAddress(tokenAddress);\n const dr = normalizeAddress(delegator);\n const de = normalizeAddress(delegate);\n return [\n \"zama.delegationStatus\",\n {\n ...(t ? { tokenAddress: t } : {}),\n ...(dr ? { delegatorAddress: dr } : {}),\n ...(de ? { delegateAddress: de } : {}),\n },\n ] as const;\n },\n },\n\n decryption: {\n all: [\"zama.decryption\"] as const,\n handle: (handle: string, contractAddress?: Address) =>\n [\n \"zama.decryption\",\n {\n handle,\n ...(contractAddress === undefined\n ? {}\n : { contractAddress: getAddress(contractAddress) }),\n },\n ] as const,\n handles: (handles: readonly { handle: string; contractAddress: Address }[]) =>\n [\n \"zama.decryption\",\n {\n handles: [...handles]\n .toSorted((a, b) => a.handle.localeCompare(b.handle))\n .map((h) => ({\n handle: h.handle,\n contractAddress: getAddress(h.contractAddress),\n })),\n },\n ] as const,\n },\n\n wrappersRegistry: {\n all: [\"zama.wrappersRegistry\"] as const,\n chainId: () => [\"zama.wrappersRegistry\", { type: \"chainId\" }] as const,\n tokenPairs: (registryAddress: Address) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"tokenPairs\",\n registryAddress: getAddress(registryAddress),\n },\n ] as const,\n confidentialTokenAddress: (registryAddress: Address, tokenAddress: Address) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"confidentialTokenAddress\",\n registryAddress: getAddress(registryAddress),\n tokenAddress: getAddress(tokenAddress),\n },\n ] as const,\n tokenAddress: (registryAddress: Address, confidentialTokenAddress: Address) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"tokenAddress\",\n registryAddress: getAddress(registryAddress),\n confidentialTokenAddress: getAddress(confidentialTokenAddress),\n },\n ] as const,\n tokenPairsLength: (registryAddress: Address) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"tokenPairsLength\",\n registryAddress: getAddress(registryAddress),\n },\n ] as const,\n tokenPairsSlice: (registryAddress: Address, fromIndex: string, toIndex: string) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"tokenPairsSlice\",\n registryAddress: getAddress(registryAddress),\n fromIndex,\n toIndex,\n },\n ] as const,\n tokenPair: (registryAddress: Address, index: string) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"tokenPair\",\n registryAddress: getAddress(registryAddress),\n index,\n },\n ] as const,\n isConfidentialTokenValid: (registryAddress: Address, confidentialTokenAddress: Address) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"isConfidentialTokenValid\",\n registryAddress: getAddress(registryAddress),\n confidentialTokenAddress: getAddress(confidentialTokenAddress),\n },\n ] as const,\n listPairs: (registryAddress: Address, page: number, pageSize: number, metadata: boolean) =>\n [\n \"zama.wrappersRegistry\",\n {\n type: \"listPairs\",\n registryAddress: getAddress(registryAddress),\n page,\n pageSize,\n metadata,\n },\n ] as const,\n },\n} as const;\n","import type { Address } from \"viem\";\nimport { zamaQueryKeys } from \"./query-keys\";\n\nexport interface QueryLike {\n queryKey: readonly unknown[];\n}\n\nexport interface QueryFilterLike {\n queryKey?: readonly unknown[];\n predicate?: (query: QueryLike) => boolean;\n}\n\nexport interface QueryClientLike {\n invalidateQueries(filters: QueryFilterLike): void | Promise<void>;\n removeQueries(filters: QueryFilterLike): void;\n}\n\nfunction invalidateUnderlyingAllowanceQueries(\n queryClient: QueryClientLike,\n tokenAddress: Address,\n): void {\n void queryClient.invalidateQueries({\n queryKey: zamaQueryKeys.underlyingAllowance.token(tokenAddress),\n });\n}\n\nexport function invalidateAfterUnwrap(queryClient: QueryClientLike, tokenAddress: Address): void {\n invalidateBalanceQueries(queryClient, tokenAddress);\n invalidateUnderlyingAllowanceQueries(queryClient, tokenAddress);\n invalidateWagmiBalanceQueries(queryClient);\n}\n\nexport function invalidateBalanceQueries(\n queryClient: QueryClientLike,\n tokenAddress: Address,\n): void {\n void queryClient.invalidateQueries({\n queryKey: zamaQueryKeys.confidentialBalance.token(tokenAddress),\n });\n void queryClient.invalidateQueries({ queryKey: zamaQueryKeys.confidentialBalances.all });\n}\n\nexport function invalidateAfterShield(queryClient: QueryClientLike, tokenAddress: Address): void {\n invalidateBalanceQueries(queryClient, tokenAddress);\n invalidateUnderlyingAllowanceQueries(queryClient, tokenAddress);\n invalidateWagmiBalanceQueries(queryClient);\n}\n\nexport function invalidateAfterUnshield(queryClient: QueryClientLike, tokenAddress: Address): void {\n invalidateBalanceQueries(queryClient, tokenAddress);\n invalidateUnderlyingAllowanceQueries(queryClient, tokenAddress);\n invalidateWagmiBalanceQueries(queryClient);\n}\n\nexport function invalidateAfterTransfer(queryClient: QueryClientLike, tokenAddress: Address): void {\n invalidateBalanceQueries(queryClient, tokenAddress);\n}\n\nexport function invalidateAfterApproveUnderlying(\n queryClient: QueryClientLike,\n tokenAddress: Address,\n): void {\n invalidateUnderlyingAllowanceQueries(queryClient, tokenAddress);\n}\n\nexport function invalidateAfterApprove(queryClient: QueryClientLike, tokenAddress: Address): void {\n void queryClient.invalidateQueries({\n queryKey: zamaQueryKeys.confidentialIsApproved.token(tokenAddress),\n });\n}\n\nfunction isZamaQuery(query: QueryLike): boolean {\n return Array.isArray(query.queryKey) && typeof query.queryKey[0] === \"string\"\n ? query.queryKey[0].startsWith(\"zama.\")\n : false;\n}\n\nfunction isWagmiBalanceQuery(query: QueryLike): boolean {\n return (\n Array.isArray(query.queryKey) &&\n query.queryKey.some((part: unknown) => {\n if (typeof part !== \"object\" || part === null || !(\"functionName\" in part)) {\n return false;\n }\n return part.functionName === \"balanceOf\";\n })\n );\n}\n\nexport function invalidateWagmiBalanceQueries(queryClient: QueryClientLike): void {\n void queryClient.invalidateQueries({ predicate: isWagmiBalanceQuery });\n}\n\nexport function invalidateWalletLifecycleQueries(queryClient: QueryClientLike): void {\n queryClient.removeQueries({ queryKey: zamaQueryKeys.signerAddress.all });\n queryClient.removeQueries({ queryKey: zamaQueryKeys.decryption.all });\n void queryClient.invalidateQueries({ predicate: isZamaQuery });\n invalidateWagmiBalanceQueries(queryClient);\n}\n","import type { Address } from \"viem\";\nimport type { GenericSigner } from \"../types\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\n\nconst signerScopes = new WeakMap<GenericSigner, number>();\nlet nextSignerScope = 1;\n\nfunction getSignerScope(signer: GenericSigner): number {\n const existingScope = signerScopes.get(signer);\n if (existingScope !== undefined) {\n return existingScope;\n }\n const newScope = nextSignerScope++;\n signerScopes.set(signer, newScope);\n return newScope;\n}\n\nexport function signerAddressQueryOptions(\n signer: GenericSigner,\n): QueryFactoryOptions<\n Address,\n Error,\n Address,\n ReturnType<typeof zamaQueryKeys.signerAddress.scope>\n> {\n return {\n queryKey: zamaQueryKeys.signerAddress.scope(getSignerScope(signer)),\n queryFn: async () => signer.getAddress(),\n staleTime: 30_000,\n };\n}\n","import { decimalsContract, nameContract, symbolContract } from \"../contracts\";\n\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\nimport type { Address } from \"viem\";\n\n/** ERC-20 token metadata returned by {@link tokenMetadataQueryOptions}. */\nexport interface TokenMetadata {\n name: string;\n symbol: string;\n decimals: number;\n}\n\nexport interface TokenMetadataQueryConfig {\n query?: Record<string, unknown>;\n}\n\nexport function tokenMetadataQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config?: TokenMetadataQueryConfig,\n): QueryFactoryOptions<\n TokenMetadata,\n Error,\n TokenMetadata,\n ReturnType<typeof zamaQueryKeys.tokenMetadata.token>\n> {\n const queryKey = zamaQueryKeys.tokenMetadata.token(tokenAddress);\n\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress }] = context.queryKey;\n const [name, symbol, decimals] = await Promise.all([\n sdk.provider.readContract(nameContract(keyTokenAddress)),\n sdk.provider.readContract(symbolContract(keyTokenAddress)),\n sdk.provider.readContract(decimalsContract(keyTokenAddress)),\n ]);\n return { name, symbol, decimals };\n },\n staleTime: Infinity,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import {\n isConfidentialTokenContract,\n isConfidentialWrapperContract,\n supportsInterfaceContract,\n ERC7984_WRAPPER_INTERFACE_ID,\n} from \"../contracts\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport { isContractCallError } from \"../utils\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\nimport type { Address } from \"viem\";\n\nexport interface IsConfidentialQueryConfig {\n query?: Record<string, unknown>;\n}\n\nexport function isConfidentialQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config?: IsConfidentialQueryConfig,\n): QueryFactoryOptions<\n boolean,\n Error,\n boolean,\n ReturnType<typeof zamaQueryKeys.isConfidential.token>\n> {\n const queryKey = zamaQueryKeys.isConfidential.token(tokenAddress);\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress }] = context.queryKey;\n try {\n return await sdk.provider.readContract(isConfidentialTokenContract(keyTokenAddress));\n } catch (err) {\n // Only suppress contract execution reverts (non-ERC-165 contracts).\n // Re-throw network/transport errors so TanStack Query's retry logic applies.\n if (isContractCallError(err)) {\n return false;\n }\n throw err;\n }\n },\n staleTime: Infinity,\n enabled: config?.query?.enabled !== false,\n };\n}\n\nexport function isWrapperQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config?: IsConfidentialQueryConfig,\n): QueryFactoryOptions<boolean, Error, boolean, ReturnType<typeof zamaQueryKeys.isWrapper.token>> {\n const queryKey = zamaQueryKeys.isWrapper.token(tokenAddress);\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress }] = context.queryKey;\n try {\n // During the transition period, check both wrapper interface IDs in parallel.\n // Either returning true is sufficient to identify a confidential wrapper.\n const [legacyMatch, newMatch] = await Promise.all([\n sdk.provider.readContract(isConfidentialWrapperContract(keyTokenAddress)),\n sdk.provider.readContract(\n supportsInterfaceContract(keyTokenAddress, ERC7984_WRAPPER_INTERFACE_ID),\n ),\n ]);\n return legacyMatch || newMatch;\n } catch (err) {\n // Only suppress contract execution reverts (non-ERC-165 contracts).\n // Re-throw network/transport errors so TanStack Query's retry logic applies.\n if (isContractCallError(err)) {\n return false;\n }\n throw err;\n }\n },\n staleTime: Infinity,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import {\n ERC7984_WRAPPER_INTERFACE_ID,\n ERC7984_WRAPPER_INTERFACE_ID_LEGACY,\n supportsInterfaceContract,\n} from \"../contracts\";\nimport { ConfigurationError } from \"../errors\";\nimport type { GenericProvider } from \"../types\";\nimport { isContractCallError } from \"../utils\";\nimport type { Address } from \"viem\";\n\nexport type WrapperInterfaceVersion = \"legacy\" | \"upgraded\";\n\nasync function safeSupportsInterface(\n provider: GenericProvider,\n wrapperAddress: Address,\n interfaceId: Address,\n): Promise<boolean> {\n try {\n return await provider.readContract(supportsInterfaceContract(wrapperAddress, interfaceId));\n } catch (error) {\n if (isContractCallError(error)) {\n return false;\n }\n throw error;\n }\n}\n\nexport async function detectWrapperInterfaceVersion(\n provider: GenericProvider,\n wrapperAddress: Address,\n): Promise<WrapperInterfaceVersion> {\n // Probe the upgraded interface first: it is the target steady state and lets\n // post-upgrade wrappers avoid the legacy ERC-165 read on every refetch.\n const supportsUpgraded = await safeSupportsInterface(\n provider,\n wrapperAddress,\n ERC7984_WRAPPER_INTERFACE_ID,\n );\n if (supportsUpgraded) {\n return \"upgraded\";\n }\n\n const supportsLegacy = await safeSupportsInterface(\n provider,\n wrapperAddress,\n ERC7984_WRAPPER_INTERFACE_ID_LEGACY,\n );\n if (supportsLegacy) {\n return \"legacy\";\n }\n\n throw new ConfigurationError(\n `Contract ${wrapperAddress} does not support a known ERC7984 wrapper interface`,\n );\n}\n","import { inferredTotalSupplyContract, totalSupplyContract } from \"../contracts\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\nimport { detectWrapperInterfaceVersion } from \"./wrapper-interface-version\";\nimport type { Address } from \"viem\";\n\nexport interface TotalSupplyQueryConfig {\n query?: Record<string, unknown>;\n}\n\nexport function totalSupplyQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config?: TotalSupplyQueryConfig,\n): QueryFactoryOptions<bigint, Error, bigint, ReturnType<typeof zamaQueryKeys.totalSupply.token>> {\n const queryKey = zamaQueryKeys.totalSupply.token(tokenAddress);\n\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress }] = context.queryKey;\n // ERC-165 detection adds one or two RPC calls per refetch, which is acceptable\n // while both legacy and upgraded wrappers coexist. Remove this branch once\n // all supported wrappers expose `inferredTotalSupply()`.\n const version = await detectWrapperInterfaceVersion(sdk.provider, keyTokenAddress);\n if (version === \"upgraded\") {\n return sdk.provider.readContract(inferredTotalSupplyContract(keyTokenAddress));\n }\n return sdk.provider.readContract(totalSupplyContract(keyTokenAddress));\n },\n staleTime: 30_000,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import type { Address } from \"viem\";\nimport type { WrappersRegistry } from \"../wrappers-registry\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { assertNonNullable } from \"../utils/assertions\";\nimport { filterQueryOptions } from \"./utils\";\n\nexport interface WrapperDiscoveryQueryConfig {\n /**\n * Address of any confidential token you control.\n * Used to scope the query cache key and to gate whether the query\n * is enabled — it does not affect which wrapper the registry returns.\n */\n tokenAddress?: Address;\n /**\n * The ERC-20 token address to discover the confidential wrapper for.\n * The registry is resolved automatically from chain config.\n */\n erc20Address?: Address;\n /**\n * The resolved registry contract address for the current chain.\n * Included in the query key so that switching chains invalidates\n * stale cached results. Pass `undefined` when the chain ID is not\n * yet known — the query will be disabled.\n */\n registryAddress?: Address;\n query?: Record<string, unknown>;\n}\n\nexport function wrapperDiscoveryQueryOptions(\n registry: WrappersRegistry,\n config: WrapperDiscoveryQueryConfig,\n): QueryFactoryOptions<\n Address | null,\n Error,\n Address | null,\n ReturnType<typeof zamaQueryKeys.wrapperDiscovery.token>\n> {\n const queryKey = zamaQueryKeys.wrapperDiscovery.token(\n config.tokenAddress,\n config.erc20Address,\n config.registryAddress,\n );\n\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { erc20Address }] = context.queryKey;\n assertNonNullable(erc20Address, \"wrapperDiscoveryQueryOptions: erc20Address\");\n const result = await registry.getConfidentialToken(erc20Address);\n return result ? result.confidentialTokenAddress : null;\n },\n staleTime: Infinity,\n enabled:\n Boolean(config.tokenAddress && config.erc20Address && config.registryAddress) &&\n config.query?.enabled !== false,\n };\n}\n","import { allowanceContract, underlyingContract } from \"../contracts\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport { assertNonNullable } from \"../utils/assertions\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\nimport type { Address } from \"viem\";\n\nexport interface UnderlyingAllowanceQueryConfig {\n owner?: Address;\n wrapperAddress?: Address;\n query?: Record<string, unknown>;\n}\n\nexport function underlyingAllowanceQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config: UnderlyingAllowanceQueryConfig,\n): QueryFactoryOptions<\n bigint,\n Error,\n bigint,\n ReturnType<typeof zamaQueryKeys.underlyingAllowance.scope>\n> {\n const ownerKey = config.owner;\n const wrapperAddressKey = config.wrapperAddress;\n const queryEnabled = config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.underlyingAllowance.scope(\n tokenAddress,\n ownerKey,\n wrapperAddressKey,\n );\n\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { owner: keyOwner, wrapperAddress: keyWrapperAddress }] = context.queryKey;\n assertNonNullable(keyOwner, \"underlyingAllowanceQueryOptions: owner\");\n assertNonNullable(keyWrapperAddress, \"underlyingAllowanceQueryOptions: wrapperAddress\");\n const underlying = await sdk.provider.readContract(underlyingContract(keyWrapperAddress));\n return sdk.provider.readContract(allowanceContract(underlying, keyOwner, keyWrapperAddress));\n },\n staleTime: 30_000,\n enabled: Boolean(ownerKey && wrapperAddressKey) && queryEnabled,\n };\n}\n","import { isOperatorContract } from \"../contracts\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport { assertNonNullable } from \"../utils/assertions\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { filterQueryOptions } from \"./utils\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport type { Address } from \"viem\";\n\nexport interface ConfidentialIsApprovedQueryConfig {\n holder?: Address;\n spender?: Address;\n query?: Record<string, unknown>;\n}\n\nexport function confidentialIsApprovedQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address | undefined,\n config: ConfidentialIsApprovedQueryConfig,\n): QueryFactoryOptions<\n boolean,\n Error,\n boolean,\n ReturnType<typeof zamaQueryKeys.confidentialIsApproved.scope>\n> {\n const holderKey = config.holder;\n const spenderKey = config.spender;\n const queryEnabled = config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.confidentialIsApproved.scope(tokenAddress, holderKey, spenderKey);\n\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress, holder: keyHolder, spender: keySpender }] =\n context.queryKey;\n assertNonNullable(keyTokenAddress, \"confidentialIsApprovedQueryOptions: tokenAddress\");\n assertNonNullable(keyHolder, \"confidentialIsApprovedQueryOptions: holder\");\n assertNonNullable(keySpender, \"confidentialIsApprovedQueryOptions: spender\");\n return sdk.provider.readContract(isOperatorContract(keyTokenAddress, keyHolder, keySpender));\n },\n staleTime: 30_000,\n enabled: Boolean(tokenAddress && holderKey && spenderKey) && queryEnabled,\n };\n}\n","import type { PublicKeyData } from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\n\nexport interface PublicKeyQueryConfig {\n query?: Record<string, unknown>;\n}\n\nexport function publicKeyQueryOptions(\n sdk: ZamaSDK,\n config?: PublicKeyQueryConfig,\n): QueryFactoryOptions<\n PublicKeyData | null,\n Error,\n PublicKeyData | null,\n typeof zamaQueryKeys.publicKey.all\n> {\n const queryKey = zamaQueryKeys.publicKey.all;\n\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async () => sdk.relayer.getPublicKey(),\n staleTime: Infinity,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import type { PublicParamsData } from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { filterQueryOptions } from \"./utils\";\nimport { zamaQueryKeys } from \"./query-keys\";\n\nexport interface PublicParamsQueryConfig {\n query?: Record<string, unknown>;\n}\n\nexport function publicParamsQueryOptions(\n sdk: ZamaSDK,\n bits: number,\n config?: PublicParamsQueryConfig,\n): QueryFactoryOptions<\n PublicParamsData | null,\n Error,\n PublicParamsData | null,\n ReturnType<typeof zamaQueryKeys.publicParams.bits>\n> {\n const queryKey = zamaQueryKeys.publicParams.bits(bits);\n\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { bits: keyBits }] = context.queryKey;\n return sdk.relayer.getPublicParams(keyBits);\n },\n staleTime: Infinity,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import type { Address } from \"viem\";\nimport type { ReadonlyToken } from \"../token\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\n\nexport interface ConfidentialBalanceQueryConfig {\n tokenAddress: Address;\n account?: Address;\n query?: Record<string, unknown>;\n}\n\n/** Query options for a single confidential token balance. Auto-gated on `account`. */\nexport function confidentialBalanceQueryOptions(\n token: ReadonlyToken,\n config: ConfidentialBalanceQueryConfig,\n): QueryFactoryOptions<\n bigint,\n Error,\n bigint,\n ReturnType<typeof zamaQueryKeys.confidentialBalance.owner>\n> {\n const queryOpts = config.query ?? {};\n\n return {\n ...filterQueryOptions(queryOpts),\n queryKey: zamaQueryKeys.confidentialBalance.owner(config.tokenAddress, config.account),\n queryFn: async (context) => {\n const [, { owner: keyOwner }] = context.queryKey;\n return token.balanceOf(keyOwner);\n },\n enabled: Boolean(config.account) && queryOpts?.enabled !== false,\n };\n}\n","import type { Address } from \"viem\";\nimport { ReadonlyToken, type BatchBalancesResult } from \"../token/readonly-token\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\n\nexport interface ConfidentialBalancesQueryConfig {\n account?: Address;\n query?: Record<string, unknown>;\n}\n\nexport function confidentialBalancesQueryOptions(\n tokens: ReadonlyToken[],\n config?: ConfidentialBalancesQueryConfig,\n): QueryFactoryOptions<\n BatchBalancesResult,\n Error,\n BatchBalancesResult,\n ReturnType<typeof zamaQueryKeys.confidentialBalances.tokens>\n> {\n const accountKey = config?.account;\n const queryOpts = config?.query ?? {};\n const tokenAddresses = tokens.map((token) => token.address);\n\n return {\n ...filterQueryOptions(queryOpts),\n queryKey: zamaQueryKeys.confidentialBalances.tokens(tokenAddresses, accountKey),\n queryFn: async (context) => {\n const [, { owner: keyOwner }] = context.queryKey;\n return ReadonlyToken.batchBalancesOf(tokens, keyOwner);\n },\n enabled: Boolean(accountKey) && tokens.length > 0 && queryOpts?.enabled !== false,\n };\n}\n","import { type Address, zeroAddress } from \"viem\";\nimport {\n getTokenPairsContract,\n getTokenPairsLengthContract,\n getTokenPairsSliceContract,\n getTokenPairContract,\n getConfidentialTokenAddressContract,\n getTokenAddressContract,\n isConfidentialTokenValidContract,\n} from \"../contracts\";\nimport type {\n TokenWrapperPair,\n TokenWrapperPairWithMetadata,\n PaginatedResult,\n} from \"../contracts/wrappers-registry\";\nimport type { WrappersRegistry } from \"../wrappers-registry\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\n\n/** Default registry TTL in milliseconds — matches {@link WrappersRegistry} default of 86400 s. */\nconst DEFAULT_STALE_TIME_MS = 86400 * 1000;\n\nexport interface WrappersRegistryQueryConfig {\n registryAddress: Address | undefined;\n query?: Record<string, unknown>;\n}\n\nexport function tokenPairsQueryOptions(\n sdk: ZamaSDK,\n config: WrappersRegistryQueryConfig,\n): QueryFactoryOptions<\n readonly TokenWrapperPair[],\n Error,\n readonly TokenWrapperPair[],\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenPairs>\n> {\n const enabled = Boolean(config.registryAddress) && config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenPairs(config.registryAddress ?? zeroAddress);\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress }] = context.queryKey;\n return sdk.provider.readContract(getTokenPairsContract(registryAddress));\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport interface ConfidentialTokenAddressQueryConfig extends WrappersRegistryQueryConfig {\n tokenAddress?: Address;\n}\n\nexport function confidentialTokenAddressQueryOptions(\n sdk: ZamaSDK,\n config: ConfidentialTokenAddressQueryConfig,\n): QueryFactoryOptions<\n readonly [boolean, Address],\n Error,\n readonly [boolean, Address],\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.confidentialTokenAddress>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n Boolean(config.tokenAddress) &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.confidentialTokenAddress(\n config.registryAddress ?? zeroAddress,\n config.tokenAddress ?? zeroAddress,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, tokenAddress }] = context.queryKey;\n return sdk.provider.readContract(\n getConfidentialTokenAddressContract(registryAddress, tokenAddress),\n );\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport interface TokenAddressQueryConfig extends WrappersRegistryQueryConfig {\n confidentialTokenAddress?: Address;\n}\n\nexport function tokenAddressQueryOptions(\n sdk: ZamaSDK,\n config: TokenAddressQueryConfig,\n): QueryFactoryOptions<\n readonly [boolean, Address],\n Error,\n readonly [boolean, Address],\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenAddress>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n Boolean(config.confidentialTokenAddress) &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenAddress(\n config.registryAddress ?? zeroAddress,\n config.confidentialTokenAddress ?? zeroAddress,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, confidentialTokenAddress }] = context.queryKey;\n return sdk.provider.readContract(\n getTokenAddressContract(registryAddress, confidentialTokenAddress),\n );\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport function tokenPairsLengthQueryOptions(\n sdk: ZamaSDK,\n config: WrappersRegistryQueryConfig,\n): QueryFactoryOptions<\n bigint,\n Error,\n bigint,\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenPairsLength>\n> {\n const enabled = Boolean(config.registryAddress) && config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenPairsLength(\n config.registryAddress ?? zeroAddress,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress }] = context.queryKey;\n return sdk.provider.readContract(getTokenPairsLengthContract(registryAddress));\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport interface TokenPairsSliceQueryConfig extends WrappersRegistryQueryConfig {\n fromIndex?: bigint;\n toIndex?: bigint;\n}\n\nexport function tokenPairsSliceQueryOptions(\n sdk: ZamaSDK,\n config: TokenPairsSliceQueryConfig,\n): QueryFactoryOptions<\n readonly TokenWrapperPair[],\n Error,\n readonly TokenWrapperPair[],\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenPairsSlice>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n config.fromIndex !== undefined &&\n config.toIndex !== undefined &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenPairsSlice(\n config.registryAddress ?? zeroAddress,\n String(config.fromIndex ?? 0n),\n String(config.toIndex ?? 0n),\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, fromIndex, toIndex }] = context.queryKey;\n return sdk.provider.readContract(\n getTokenPairsSliceContract(registryAddress, BigInt(fromIndex), BigInt(toIndex)),\n );\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport interface TokenPairQueryConfig extends WrappersRegistryQueryConfig {\n index?: bigint;\n}\n\nexport function tokenPairQueryOptions(\n sdk: ZamaSDK,\n config: TokenPairQueryConfig,\n): QueryFactoryOptions<\n TokenWrapperPair,\n Error,\n TokenWrapperPair,\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenPair>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n config.index !== undefined &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenPair(\n config.registryAddress ?? zeroAddress,\n String(config.index ?? 0n),\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, index }] = context.queryKey;\n return sdk.provider.readContract(getTokenPairContract(registryAddress, BigInt(index)));\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport interface IsConfidentialTokenValidQueryConfig extends WrappersRegistryQueryConfig {\n confidentialTokenAddress?: Address;\n}\n\nexport function isConfidentialTokenValidQueryOptions(\n sdk: ZamaSDK,\n config: IsConfidentialTokenValidQueryConfig,\n): QueryFactoryOptions<\n boolean,\n Error,\n boolean,\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.isConfidentialTokenValid>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n Boolean(config.confidentialTokenAddress) &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.isConfidentialTokenValid(\n config.registryAddress ?? zeroAddress,\n config.confidentialTokenAddress ?? zeroAddress,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, confidentialTokenAddress }] = context.queryKey;\n return sdk.provider.readContract(\n isConfidentialTokenValidContract(registryAddress, confidentialTokenAddress),\n );\n },\n staleTime: DEFAULT_STALE_TIME_MS,\n enabled,\n };\n}\n\nexport interface ListPairsQueryConfig {\n /**\n * The registry address for this chain — used as a query key discriminator.\n * The registry instance already knows how to resolve the address for the\n * current chain; this field just keeps the TanStack Query cache isolated\n * per registry contract.\n */\n registryAddress: Address | undefined;\n page?: number;\n pageSize?: number;\n metadata?: boolean;\n query?: Record<string, unknown>;\n}\n\n/**\n * Query options for paginated listing of token wrapper pairs.\n *\n * Accepts a {@link WrappersRegistry} instance rather than a raw provider so that the\n * class-level TTL cache is shared across multiple `queryFn` executions. Pass\n * `sdk.registry` (the ZamaSDK lazy singleton) to ensure a single shared cache.\n */\nexport function listPairsQueryOptions(\n registry: WrappersRegistry,\n config: ListPairsQueryConfig,\n): QueryFactoryOptions<\n PaginatedResult<TokenWrapperPair | TokenWrapperPairWithMetadata>,\n Error,\n PaginatedResult<TokenWrapperPair | TokenWrapperPairWithMetadata>,\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.listPairs>\n> {\n const enabled = Boolean(config.registryAddress) && config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.listPairs(\n config.registryAddress ?? zeroAddress,\n config.page ?? 1,\n config.pageSize ?? 100,\n config.metadata ?? false,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { page, pageSize, metadata }] = context.queryKey;\n return registry.listPairs({ page, pageSize, metadata });\n },\n // Use the registry's own TTL so TanStack Query and the class-level cache\n // operate under the same freshness contract.\n staleTime: registry.ttlMs,\n enabled,\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { ShieldCallbacks, TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link shieldMutationOptions}. */\nexport interface ShieldParams extends ShieldCallbacks {\n amount: bigint;\n approvalStrategy?: \"max\" | \"exact\" | \"skip\";\n /** Recipient address for the shielded tokens. Defaults to the connected wallet. */\n to?: Address;\n}\n\nexport function shieldMutationOptions(\n token: Token,\n): MutationFactoryOptions<readonly [\"zama.shield\", Address], ShieldParams, TransactionResult> {\n return {\n mutationKey: [\"zama.shield\", token.address] as const,\n mutationFn: async ({ amount, ...rest }) => token.shield(amount, rest),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult, TransferOptions } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link confidentialTransferMutationOptions}. */\nexport interface ConfidentialTransferParams extends TransferOptions {\n to: Address;\n amount: bigint;\n}\n\nexport function confidentialTransferMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.confidentialTransfer\", Address],\n ConfidentialTransferParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.confidentialTransfer\", token.address] as const,\n mutationFn: async ({ to, amount, ...options }) =>\n token.confidentialTransfer(to, amount, options),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransferCallbacks, TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link confidentialTransferFromMutationOptions}. */\nexport interface ConfidentialTransferFromParams {\n from: Address;\n to: Address;\n amount: bigint;\n /** Optional progress callbacks for the multi-step transfer flow. */\n callbacks?: TransferCallbacks;\n}\n\nexport function confidentialTransferFromMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.confidentialTransferFrom\", Address],\n ConfidentialTransferFromParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.confidentialTransferFrom\", token.address] as const,\n mutationFn: async ({ from, to, amount, callbacks }) =>\n token.confidentialTransferFrom(from, to, amount, callbacks),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link confidentialApproveMutationOptions}. */\nexport interface ConfidentialApproveParams {\n spender: Address;\n until?: number;\n}\n\nexport function confidentialApproveMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.confidentialApprove\", Address],\n ConfidentialApproveParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.confidentialApprove\", token.address] as const,\n mutationFn: async ({ spender, until }) => token.approve(spender, until),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link approveUnderlyingMutationOptions}. */\nexport interface ApproveUnderlyingParams {\n amount?: bigint;\n}\n\nexport function approveUnderlyingMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.approveUnderlying\", Address],\n ApproveUnderlyingParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.approveUnderlying\", token.address] as const,\n mutationFn: async ({ amount }) => token.approveUnderlying(amount),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult, UnshieldOptions } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link unshieldMutationOptions}. */\nexport interface UnshieldParams extends UnshieldOptions {\n amount: bigint;\n}\n\nexport function unshieldMutationOptions(\n token: Token,\n): MutationFactoryOptions<readonly [\"zama.unshield\", Address], UnshieldParams, TransactionResult> {\n return {\n mutationKey: [\"zama.unshield\", token.address] as const,\n mutationFn: async ({ amount, ...options }) => token.unshield(amount, options),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult, UnshieldCallbacks } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link unshieldAllMutationOptions}. */\nexport interface UnshieldAllParams extends UnshieldCallbacks {}\n\nexport function unshieldAllMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.unshieldAll\", Address],\n UnshieldAllParams | void,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.unshieldAll\", token.address] as const,\n mutationFn: async (params) => token.unshieldAll(params || undefined),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult, UnshieldCallbacks } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address, Hex } from \"viem\";\n\n/** Variables for {@link resumeUnshieldMutationOptions}. */\nexport interface ResumeUnshieldParams extends UnshieldCallbacks {\n unwrapTxHash: Hex;\n}\n\nexport function resumeUnshieldMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.resumeUnshield\", Address],\n ResumeUnshieldParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.resumeUnshield\", token.address] as const,\n mutationFn: async ({ unwrapTxHash, ...callbacks }) =>\n token.resumeUnshield(unwrapTxHash, callbacks),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link unwrapMutationOptions}. */\nexport interface UnwrapParams {\n amount: bigint;\n}\n\nexport function unwrapMutationOptions(\n token: Token,\n): MutationFactoryOptions<readonly [\"zama.unwrap\", Address], UnwrapParams, TransactionResult> {\n return {\n mutationKey: [\"zama.unwrap\", token.address] as const,\n mutationFn: async ({ amount }) => token.unwrap(amount),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\nexport function unwrapAllMutationOptions(\n token: Token,\n): MutationFactoryOptions<readonly [\"zama.unwrapAll\", Address], void, TransactionResult> {\n return {\n mutationKey: [\"zama.unwrapAll\", token.address] as const,\n mutationFn: async () => token.unwrapAll(),\n };\n}\n","import type { Handle } from \"../relayer/relayer-sdk.types\";\nimport type { Token } from \"../token/token\";\nimport type { TransactionResult } from \"../types\";\nimport { ConfigurationError } from \"../errors\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n/** Variables for {@link finalizeUnwrapMutationOptions}. */\nexport type FinalizeUnwrapParams =\n /** Preferred input from upgraded `UnwrapRequested` events. */\n | { unwrapRequestId: Handle; burnAmountHandle?: never }\n /** Legacy input from pre-upgrade `UnwrapRequested` events. */\n | { unwrapRequestId?: never; burnAmountHandle: Handle };\n\nexport function finalizeUnwrapMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.finalizeUnwrap\", Address],\n FinalizeUnwrapParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.finalizeUnwrap\", token.address] as const,\n mutationFn: async (params) => {\n const handle = params.unwrapRequestId ?? params.burnAmountHandle;\n if (!handle) {\n throw new ConfigurationError(\"finalizeUnwrap requires unwrapRequestId or burnAmountHandle\");\n }\n return token.finalizeUnwrap(handle);\n },\n };\n}\n","import type { EncryptParams, EncryptResult } from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\nexport function encryptMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.encrypt\"], EncryptParams, EncryptResult> {\n return {\n mutationKey: [\"zama.encrypt\"],\n mutationFn: async (params) => sdk.relayer.encrypt(params),\n };\n}\n","import type { KeypairType } from \"@zama-fhe/relayer-sdk/bundle\";\nimport type { Hex } from \"viem\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\nexport function generateKeypairMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.generateKeypair\"], void, KeypairType<Hex>> {\n return {\n mutationKey: [\"zama.generateKeypair\"],\n mutationFn: async () => sdk.relayer.generateKeypair(),\n };\n}\n","import type { KmsUserDecryptEIP712UserArgsType } from \"@zama-fhe/relayer-sdk/bundle\";\nimport type { Address, Hex } from \"viem\";\nimport type { EIP712TypedData } from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/**\n * Variables for {@link createEIP712MutationOptions}. Derived from\n * {@link KmsUserDecryptEIP712UserArgsType} with stricter `publicKey`/`contractAddresses`\n * typing and optional `durationDays`. `extraData` is computed internally and omitted.\n */\nexport type CreateEIP712Params = Pick<KmsUserDecryptEIP712UserArgsType, \"startTimestamp\"> & {\n publicKey: Hex;\n contractAddresses: Address[];\n durationDays?: number;\n};\n\nexport function createEIP712MutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.createEIP712\"], CreateEIP712Params, EIP712TypedData> {\n return {\n mutationKey: [\"zama.createEIP712\"],\n mutationFn: async ({ publicKey, contractAddresses, startTimestamp, durationDays }) =>\n sdk.relayer.createEIP712(publicKey, contractAddresses, startTimestamp, durationDays),\n };\n}\n","import type { KmsDelegatedUserDecryptEIP712Type } from \"@zama-fhe/relayer-sdk/bundle\";\nimport type { Address, Hex } from \"viem\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link createDelegatedUserDecryptEIP712MutationOptions}. */\nexport interface CreateDelegatedUserDecryptEIP712Params {\n publicKey: Hex;\n contractAddresses: Address[];\n delegatorAddress: Address;\n startTimestamp: number;\n durationDays?: number;\n}\n\nexport function createDelegatedUserDecryptEIP712MutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<\n readonly [\"zama.createDelegatedUserDecryptEIP712\"],\n CreateDelegatedUserDecryptEIP712Params,\n KmsDelegatedUserDecryptEIP712Type\n> {\n return {\n mutationKey: [\"zama.createDelegatedUserDecryptEIP712\"],\n mutationFn: async ({\n publicKey,\n contractAddresses,\n delegatorAddress,\n startTimestamp,\n durationDays,\n }) =>\n sdk.relayer.createDelegatedUserDecryptEIP712(\n publicKey,\n contractAddresses,\n delegatorAddress,\n startTimestamp,\n durationDays,\n ),\n };\n}\n","import type {\n ClearValueType,\n DelegatedUserDecryptParams,\n Handle,\n} from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\nexport function delegatedUserDecryptMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<\n readonly [\"zama.delegatedUserDecrypt\"],\n DelegatedUserDecryptParams,\n Readonly<Record<Handle, ClearValueType>>\n> {\n return {\n mutationKey: [\"zama.delegatedUserDecrypt\"],\n mutationFn: async (params) => sdk.relayer.delegatedUserDecrypt(params),\n };\n}\n","import type { ClearValueType, Handle, PublicDecryptResult } from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\n\nexport function publicDecryptMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.publicDecrypt\"], Handle[], PublicDecryptResult> {\n return {\n mutationKey: [\"zama.publicDecrypt\"],\n mutationFn: async (handles) => sdk.publicDecrypt(handles),\n onSuccess: (data, _variables, _onMutateResult, context) => {\n for (const [handle, value] of Object.entries(data.clearValues) as [\n Handle,\n ClearValueType,\n ][]) {\n context.client.setQueryData(zamaQueryKeys.decryption.handle(handle), value);\n }\n },\n };\n}\n","import type { InputProofBytesType, ZKProofLike } from \"@zama-fhe/relayer-sdk/bundle\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\nexport function requestZKProofVerificationMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<\n readonly [\"zama.requestZKProofVerification\"],\n ZKProofLike,\n InputProofBytesType\n> {\n return {\n mutationKey: [\"zama.requestZKProofVerification\"],\n mutationFn: async (zkProof) => sdk.relayer.requestZKProofVerification(zkProof),\n };\n}\n","import type { Address } from \"viem\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\nexport function allowMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.allow\"], Address[], void> {\n return {\n mutationKey: [\"zama.allow\"],\n mutationFn: (contractAddresses) => sdk.allow(contractAddresses),\n };\n}\n","import type { Address } from \"viem\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\n\nexport interface IsAllowedQueryConfig {\n account: Address;\n /** Contract addresses to check credentials against. */\n contractAddresses: [Address, ...Address[]];\n query?: Record<string, unknown>;\n}\n\nexport function isAllowedQueryOptions(\n sdk: ZamaSDK,\n config: IsAllowedQueryConfig,\n): QueryFactoryOptions<boolean, Error, boolean, ReturnType<typeof zamaQueryKeys.isAllowed.scope>> {\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey: zamaQueryKeys.isAllowed.scope(config.account, config.contractAddresses),\n queryFn: (context) => {\n const [, { contractAddresses }] = context.queryKey;\n return sdk.credentials.isAllowed(contractAddresses as [Address, ...Address[]]);\n },\n staleTime: 30_000,\n enabled: config.query?.enabled !== false,\n } as const;\n}\n","import type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\nexport function revokeMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.revoke\"], Address[], void> {\n return {\n mutationKey: [\"zama.revoke\"],\n mutationFn: (contractAddresses) => sdk.credentials.revoke(...contractAddresses),\n };\n}\n","import type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\nexport function revokeSessionMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.revokeSession\"], void, void> {\n return {\n mutationKey: [\"zama.revokeSession\"],\n mutationFn: () => sdk.revokeSession(),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { Address } from \"viem\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link delegateDecryptionMutationOptions}. */\nexport interface DelegateDecryptionParams {\n delegateAddress: Address;\n expirationDate?: Date;\n}\n\nexport function delegateDecryptionMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.delegateDecryption\", Address],\n DelegateDecryptionParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.delegateDecryption\", token.address] as const,\n mutationFn: async ({ delegateAddress, expirationDate }) =>\n token.delegateDecryption({ delegateAddress, expirationDate }),\n };\n}\n","import type { UserDecryptResults } from \"@zama-fhe/relayer-sdk/bundle\";\nimport type { Address } from \"viem\";\nimport type { Handle } from \"../relayer/relayer-sdk.types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\n\nexport interface DecryptHandle {\n handle: Handle;\n contractAddress: Address;\n}\n\n/** Alias for {@link UserDecryptResults}. */\nexport type DecryptResult = UserDecryptResults;\n\nexport interface UserDecryptQueryConfig {\n handles: DecryptHandle[];\n}\n\nexport function userDecryptQueryOptions(\n sdk: ZamaSDK,\n config: UserDecryptQueryConfig,\n): QueryFactoryOptions<\n DecryptResult,\n Error,\n DecryptResult,\n ReturnType<typeof zamaQueryKeys.decryption.handles>\n> {\n return {\n queryKey: zamaQueryKeys.decryption.handles(config.handles),\n queryFn: (context) => {\n const [, { handles }] = context.queryKey;\n return sdk.userDecrypt(handles as DecryptHandle[]);\n },\n staleTime: Infinity,\n enabled: config.handles.length > 0,\n };\n}\n","import type { Address } from \"viem\";\nimport type { ReadonlyToken } from \"../token/readonly-token\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link decryptBalanceAsMutationOptions}. */\nexport interface DecryptBalanceAsParams {\n delegatorAddress: Address;\n accountAddress?: Address;\n}\n\nexport function decryptBalanceAsMutationOptions(\n readonlyToken: ReadonlyToken,\n): MutationFactoryOptions<\n readonly [\"zama.decryptBalanceAs\", Address],\n DecryptBalanceAsParams,\n bigint\n> {\n return {\n mutationKey: [\"zama.decryptBalanceAs\", readonlyToken.address] as const,\n mutationFn: async ({ delegatorAddress, accountAddress }) =>\n readonlyToken.decryptBalanceAs({ delegatorAddress, accountAddress }),\n };\n}\n","import { ReadonlyToken, type BatchDecryptAsOptions } from \"../token/readonly-token\";\nimport type { Address } from \"viem\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link batchDecryptBalancesAsMutationOptions}. */\nexport type BatchDecryptBalancesAsParams = BatchDecryptAsOptions;\n\nexport function batchDecryptBalancesAsMutationOptions(\n tokens: ReadonlyToken[],\n): MutationFactoryOptions<\n readonly [\"zama.batchDecryptBalancesAs\", ...Address[]],\n BatchDecryptBalancesAsParams,\n Map<Address, bigint>\n> {\n return {\n mutationKey: [\"zama.batchDecryptBalancesAs\", ...tokens.map((t) => t.address)] as const,\n mutationFn: async (params) => ReadonlyToken.batchDecryptBalancesAs(tokens, params),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { Address } from \"viem\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link revokeDelegationMutationOptions}. */\nexport interface RevokeDelegationParams {\n delegateAddress: Address;\n}\n\nexport function revokeDelegationMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.revokeDelegation\", Address],\n RevokeDelegationParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.revokeDelegation\", token.address] as const,\n mutationFn: async ({ delegateAddress }) => token.revokeDelegation({ delegateAddress }),\n };\n}\n","import type { Address } from \"viem\";\nimport { MAX_UINT64 } from \"../contracts\";\nimport { getDelegationExpiryContract } from \"../contracts/acl\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { filterQueryOptions } from \"./utils\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { assertNonNullable } from \"../utils\";\n\nexport interface DelegationStatusData {\n isDelegated: boolean;\n expiryTimestamp: bigint;\n}\n\nexport interface DelegationStatusQueryConfig {\n tokenAddress: Address | undefined;\n delegatorAddress?: Address;\n delegateAddress?: Address;\n query?: Record<string, unknown>;\n}\n\nexport function delegationStatusQueryOptions(\n sdk: ZamaSDK,\n config: DelegationStatusQueryConfig,\n): QueryFactoryOptions<\n DelegationStatusData,\n Error,\n DelegationStatusData,\n ReturnType<typeof zamaQueryKeys.delegationStatus.scope>\n> {\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey: zamaQueryKeys.delegationStatus.scope(\n config.tokenAddress,\n config.delegatorAddress,\n config.delegateAddress,\n ),\n queryFn: async (context) => {\n const [, { tokenAddress, delegatorAddress, delegateAddress }] = context.queryKey;\n assertNonNullable(tokenAddress, \"delegationStatusQueryOptions: tokenAddress\");\n assertNonNullable(delegatorAddress, \"delegationStatusQueryOptions: delegatorAddress\");\n assertNonNullable(delegateAddress, \"delegationStatusQueryOptions: delegateAddress\");\n const acl = await sdk.relayer.getAclAddress();\n const expiryTimestamp = await sdk.provider.readContract(\n getDelegationExpiryContract(acl, delegatorAddress, delegateAddress, tokenAddress),\n );\n // Derive isDelegated from expiry + chain time to stay consistent\n // with ReadonlyToken.isDelegated() (avoids client-clock skew).\n let isDelegated: boolean;\n if (expiryTimestamp === 0n) {\n isDelegated = false;\n } else if (expiryTimestamp === MAX_UINT64) {\n isDelegated = true;\n } else {\n const now = await sdk.provider.getBlockTimestamp();\n isDelegated = expiryTimestamp > now;\n }\n return { isDelegated, expiryTimestamp };\n },\n enabled:\n Boolean(config.tokenAddress && config.delegatorAddress && config.delegateAddress) &&\n config.query?.enabled !== false,\n } as const;\n}\n"],"mappings":"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"}
|