@zama-fhe/sdk 3.3.0-alpha.2 → 3.3.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/relayer.cjs +1 -1
- package/dist/cjs/relayer.cjs.map +1 -1
- package/dist/esm/{base-signer-DaRQNB29.js → base-signer-B-3qw-ge.js} +2 -2
- package/dist/esm/{base-signer-DaRQNB29.js.map → base-signer-B-3qw-ge.js.map} +1 -1
- package/dist/esm/cleartext/index.js +1 -1
- package/dist/esm/{cleartext-CTla3A3O.js → cleartext-C4zqkAnd.js} +2 -2
- package/dist/esm/{cleartext-CTla3A3O.js.map → cleartext-C4zqkAnd.js.map} +1 -1
- package/dist/esm/{encryption-BGmINekJ.js → encryption-BMUAutx-.js} +2 -2
- package/dist/esm/{encryption-BGmINekJ.js.map → encryption-BMUAutx-.js.map} +1 -1
- package/dist/esm/ethers/index.js +1 -1
- package/dist/esm/{index-BRIQ3Msg.d.ts → index-DZR63OJZ.d.ts} +150 -104
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/node/index.js +1 -1
- package/dist/esm/query/index.d.ts +1 -1
- package/dist/esm/query/index.js +1 -1
- package/dist/esm/{relayer-D-nicEYJ.js → relayer-D58i7vML.js} +2 -2
- package/dist/esm/{relayer-D-nicEYJ.js.map → relayer-D58i7vML.js.map} +1 -1
- package/dist/esm/{relayer-cleartext-DGcb5qtE.js → relayer-cleartext-CLycQNGQ.js} +2 -2
- package/dist/esm/{relayer-cleartext-DGcb5qtE.js.map → relayer-cleartext-CLycQNGQ.js.map} +1 -1
- package/dist/esm/{token-BTgHqRIL.js → token-BPkJ_Cri.js} +2 -2
- package/dist/esm/{token-BTgHqRIL.js.map → token-BPkJ_Cri.js.map} +1 -1
- package/dist/esm/{validation-DHZ3JPOn.js → validation-BAVAr40U.js} +2 -2
- package/dist/esm/{validation-DHZ3JPOn.js.map → validation-BAVAr40U.js.map} +1 -1
- package/dist/esm/viem/index.js +1 -1
- package/dist/esm/web/index.js +1 -1
- package/dist/esm/{wrappers-registry-ChxQp8ty.js → wrappers-registry-CqIdVKtz.js} +2 -2
- package/dist/esm/{wrappers-registry-ChxQp8ty.js.map → wrappers-registry-CqIdVKtz.js.map} +1 -1
- package/package.json +1 -1
package/dist/esm/ethers/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{B as e,F as t,I as n,L as r,M as i,N as a,O as o,P as s,R as c,S as l,T as u,V as d,a as f,i as p,m,n as h,o as g,r as _,s as v,t as y}from"../wrappers-registry-
|
|
1
|
+
import{B as e,F as t,I as n,L as r,M as i,N as a,O as o,P as s,R as c,S as l,T as u,V as d,a as f,i as p,m,n as h,o as g,r as _,s as v,t as y}from"../wrappers-registry-CqIdVKtz.js";import{i as b,t as x}from"../base-signer-B-3qw-ge.js";import{t as S}from"../eip1193-subscribe-CNxVHW6y.js";import{ProviderRpcError as C,decodeFunctionResult as w,encodeFunctionData as T,getAddress as E,isHex as D}from"viem";import{BrowserProvider as O,Contract as k,ethers as A}from"ethers";var j=class{#e;constructor(e){`ethereum`in e?this.#e=new O(e.ethereum):this.#e=e.provider}async getChainId(){let e=await this.#e.getNetwork();return Number(e.chainId)}async readContract(e){return new A.Contract(e.address,e.abi,this.#e).getFunction(e.functionName)(...e.args)}async getBlockTimestamp(){let e=await this.#e.getBlock(`latest`);if(!e)throw Error(`Failed to fetch latest block`);if(e.timestamp===null)throw Error(`Latest block has no timestamp`);return BigInt(e.timestamp)}async waitForTransactionReceipt(e){let t=await this.#e.waitForTransaction(e);if(!t)throw Error(`Transaction receipt not found`);return{logs:t.logs.map(e=>({topics:e.topics.filter(e=>e!==null),data:e.data}))}}},M=class extends x{#e;#t;#n;#r;#i;constructor(e){super(),`ethereum`in e?(this.#e=new O(e.ethereum),this.#n=e.ethereum,this.#r=S({provider:e.ethereum,getInitialWalletAccount:()=>this.#l(),onWalletAccountChange:({next:e})=>{this.walletAccount.setSnapshot(e)}})):(this.#t=e.signer,this.#r=()=>{},r(`refresh wallet account`,async()=>{await this.refreshWalletAccount()}))}requireWalletAccount(t){let n=this.walletAccount.getSnapshot();if(!n&&!this.walletAccount.isReady())throw new e(t);if(!n)throw new d(t);return n}refreshWalletAccount(){return this.#n?this.#c():this.#t?this.#s(this.#t):Promise.resolve(void 0)}onDispose(){this.#r()}async#a(){if(this.#t)return this.#t;if(!this.#e)throw new c(`resolveSigner`);return this.#e.getSigner()}async#o(e){let t=e.provider;if(!t)return;let[n,r]=await Promise.all([e.getAddress(),t.getNetwork()]);return{address:E(n),chainId:Number(r.chainId)}}async signTypedData(e){let t=await this.#a(),{domain:n,types:r,message:i}=e,{EIP712Domain:a,...o}=r,s=Object.fromEntries(Object.entries(o).map(([e,t])=>[e,[...t]])),c=await t.signTypedData(n,s,i);if(!D(c))throw TypeError(`Expected hex string, got: ${c}`);return c}async writeContract(e){let t=await this.#a(),n=new k(e.address,e.abi,t),r={};e.value!==void 0&&(r.value=e.value),e.gas!==void 0&&(r.gasLimit=e.gas);let i=await n.getFunction(e.functionName)(...e.args,r);if(!D(i.hash))throw TypeError(`Expected hex string, got: ${i.hash}`);return i.hash}async#s(e){return this.#i??=this.#o(e).then(e=>(this.walletAccount.setSnapshot(e),e)).finally(()=>{this.#i=void 0}),this.#i}async#c(){let e=await this.#l();return this.walletAccount.setSnapshot(e),e}async#l(){let e=this.#n;if(!e)return;let[t,n]=await Promise.all([e.request({method:`eth_accounts`}),e.request({method:`eth_chainId`})]);if(!Array.isArray(t)||typeof t[0]!=`string`)return;let r=Number(n);if(!(!Number.isSafeInteger(r)||r<=0))return{address:E(t[0]),chainId:r}}};function N(e){if(`signer`in e&&e.signer){let t=new M({signer:e.signer});if(!e.signer.provider)throw Error(`createConfig requires a Signer with an attached provider for chain reads`);return b(t,new j({provider:e.signer.provider}),e)}return b(new M({ethereum:e.ethereum}),`provider`in e&&e.provider?new j({provider:e.provider}):new j({ethereum:e.ethereum}),e)}function P(e){return{to:e.address,data:T({abi:e.abi,functionName:e.functionName,args:e.args}),...e.gas===void 0?{}:{gasLimit:e.gas},...e.value===void 0?{}:{value:e.value}}}async function F(e,t){let n=await e.call(P(t));if(!D(n))throw TypeError(`Expected hex string, got: ${n}`);return w({abi:t.abi,functionName:t.functionName,data:n})}async function I(e,t){let n=await e.sendTransaction(P(t));if(!D(n.hash))throw TypeError(`Expected hex string, got: ${n.hash}`);return n.hash}function L(e,t,n){return F(e,l(t,n))}function R(e,t){return F(e,a(t))}function z(e,t,n){return F(e,m(t,n))}function B(e,t,n,r,i){return I(e,u(t,n,r,i))}function V(e,t,n,r,i,a){return I(e,s(t,n,r,i,a))}function H(e,n,r,i,a){return I(e,t(n,r,i,a))}function U(e,t,n,r,i){return I(e,o(t,n,r,i))}function W(e,t,n,r){return I(e,i(t,n,r))}function G(e,t,r,i){return I(e,n(t,r,i))}function K(e,t){return F(e,p(t))}function q(e,t){return F(e,f(t))}function J(e,t,n,r){return F(e,g(t,n,r))}function Y(e,t,n){return F(e,_(t,n))}function X(e,t,n){return F(e,y(t,n))}function Z(e,t,n){return F(e,h(t,n))}function Q(e,t,n){return F(e,v(t,n))}export{j as EthersProvider,M as EthersSigner,C as ProviderRpcError,N as createConfig,L as readConfidentialBalanceOfContract,X as readConfidentialTokenAddressContract,Q as readIsConfidentialTokenValidContract,z as readSupportsInterfaceContract,Z as readTokenAddressContract,Y as readTokenPairContract,K as readTokenPairsContract,q as readTokenPairsLengthContract,J as readTokenPairsSliceContract,R as readUnderlyingTokenContract,B as writeConfidentialTransferContract,U as writeFinalizeUnwrapContract,W as writeSetOperatorContract,V as writeUnwrapContract,H as writeUnwrapFromBalanceContract,G as writeWrapContract};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -18824,75 +18824,6 @@ declare class ZamaError extends Error {
|
|
|
18824
18824
|
readonly code: ZamaErrorCode;
|
|
18825
18825
|
constructor(code: ZamaErrorCode, message: string, options?: ErrorOptions);
|
|
18826
18826
|
}
|
|
18827
|
-
/**
|
|
18828
|
-
* Pattern-match on a {@link ZamaError} by its error code.
|
|
18829
|
-
* Falls through to the `_` wildcard handler if no specific handler matches.
|
|
18830
|
-
* Returns `undefined` if the error is not a `ZamaError` and no `_` handler is provided.
|
|
18831
|
-
*
|
|
18832
|
-
* @example
|
|
18833
|
-
* ```ts
|
|
18834
|
-
* matchZamaError(error, {
|
|
18835
|
-
* SIGNING_REJECTED: () => toast("Please approve in wallet"),
|
|
18836
|
-
* TRANSACTION_REVERTED: (e) => toast(`Tx failed: ${e.message}`),
|
|
18837
|
-
* _: () => toast("Unknown error"),
|
|
18838
|
-
* });
|
|
18839
|
-
* ```
|
|
18840
|
-
*/
|
|
18841
|
-
declare function matchZamaError<R>(error: unknown, handlers: Partial<Record<ZamaErrorCode, (error: ZamaError) => R>> & {
|
|
18842
|
-
_?: (error: unknown) => R;
|
|
18843
|
-
}): R | undefined;
|
|
18844
|
-
//#endregion
|
|
18845
|
-
//#region src/errors/signing.d.ts
|
|
18846
|
-
/** User rejected the wallet signature prompt. */
|
|
18847
|
-
declare class SigningRejectedError extends ZamaError {
|
|
18848
|
-
constructor(message: string, options?: ErrorOptions);
|
|
18849
|
-
}
|
|
18850
|
-
/** Wallet signature failed for a reason other than rejection. */
|
|
18851
|
-
declare class SigningFailedError extends ZamaError {
|
|
18852
|
-
constructor(message: string, options?: ErrorOptions);
|
|
18853
|
-
}
|
|
18854
|
-
//#endregion
|
|
18855
|
-
//#region src/errors/encryption.d.ts
|
|
18856
|
-
/** FHE encryption failed. */
|
|
18857
|
-
declare class EncryptionFailedError extends ZamaError {
|
|
18858
|
-
constructor(message: string, options?: ErrorOptions);
|
|
18859
|
-
}
|
|
18860
|
-
/** FHE decryption failed. */
|
|
18861
|
-
declare class DecryptionFailedError extends ZamaError {
|
|
18862
|
-
constructor(message: string, options?: ErrorOptions);
|
|
18863
|
-
}
|
|
18864
|
-
//#endregion
|
|
18865
|
-
//#region src/errors/transaction.d.ts
|
|
18866
|
-
/** On-chain transaction reverted. */
|
|
18867
|
-
declare class TransactionRevertedError extends ZamaError {
|
|
18868
|
-
constructor(message: string, options?: ErrorOptions);
|
|
18869
|
-
}
|
|
18870
|
-
//#endregion
|
|
18871
|
-
//#region src/errors/credential.d.ts
|
|
18872
|
-
/** Transport key pair has expired and needs regeneration. */
|
|
18873
|
-
declare class TransportKeyPairExpiredError extends ZamaError {
|
|
18874
|
-
constructor(message: string, options?: ErrorOptions);
|
|
18875
|
-
}
|
|
18876
|
-
/** Relayer rejected the transport key pair (stale, expired, or malformed). */
|
|
18877
|
-
declare class InvalidTransportKeyPairError extends ZamaError {
|
|
18878
|
-
constructor(message: string, options?: ErrorOptions);
|
|
18879
|
-
}
|
|
18880
|
-
/** No FHE ciphertext exists for this account (never shielded). */
|
|
18881
|
-
declare class NoCiphertextError extends ZamaError {
|
|
18882
|
-
constructor(message: string, options?: ErrorOptions);
|
|
18883
|
-
}
|
|
18884
|
-
//#endregion
|
|
18885
|
-
//#region src/errors/relayer.d.ts
|
|
18886
|
-
/** Relayer HTTP request failed. */
|
|
18887
|
-
declare class RelayerRequestFailedError extends ZamaError {
|
|
18888
|
-
/** HTTP status code from the relayer, if available. */
|
|
18889
|
-
readonly statusCode: number | undefined;
|
|
18890
|
-
constructor(message: string, statusCode?: number, options?: ErrorOptions);
|
|
18891
|
-
}
|
|
18892
|
-
/** SDK configuration is invalid (e.g. forbidden chain ID, unsupported type). */
|
|
18893
|
-
declare class ConfigurationError extends ZamaError {
|
|
18894
|
-
constructor(message: string, options?: ErrorOptions);
|
|
18895
|
-
}
|
|
18896
18827
|
//#endregion
|
|
18897
18828
|
//#region src/errors/chain.d.ts
|
|
18898
18829
|
/**
|
|
@@ -18931,41 +18862,18 @@ declare class ChainMismatchError extends ZamaError {
|
|
|
18931
18862
|
}, options?: ErrorOptions);
|
|
18932
18863
|
}
|
|
18933
18864
|
//#endregion
|
|
18934
|
-
//#region src/errors/
|
|
18935
|
-
/**
|
|
18936
|
-
|
|
18937
|
-
|
|
18938
|
-
declare class SignerRequiredError extends ZamaError {
|
|
18939
|
-
readonly operation: string;
|
|
18940
|
-
constructor(code: ZamaErrorCode, operation: string, message: string, options?: ErrorOptions);
|
|
18941
|
-
}
|
|
18942
|
-
/**
|
|
18943
|
-
* Thrown when an operation requires a signer but none is configured.
|
|
18944
|
-
*
|
|
18945
|
-
* The SDK can be constructed without a signer. Operations that need wallet
|
|
18946
|
-
* authority throw this before probing wallet state.
|
|
18947
|
-
*
|
|
18948
|
-
* @example
|
|
18949
|
-
* ```ts
|
|
18950
|
-
* try {
|
|
18951
|
-
* await token.confidentialTransfer("0xTo", 100n);
|
|
18952
|
-
* } catch (e) {
|
|
18953
|
-
* if (e instanceof SignerNotConfiguredError) {
|
|
18954
|
-
* // Fix SDK/provider configuration.
|
|
18955
|
-
* }
|
|
18956
|
-
* }
|
|
18957
|
-
* ```
|
|
18958
|
-
*/
|
|
18959
|
-
declare class SignerNotConfiguredError extends SignerRequiredError {
|
|
18960
|
-
constructor(operation: string, options?: ErrorOptions);
|
|
18865
|
+
//#region src/errors/credential.d.ts
|
|
18866
|
+
/** Transport key pair has expired and needs regeneration. */
|
|
18867
|
+
declare class TransportKeyPairExpiredError extends ZamaError {
|
|
18868
|
+
constructor(message: string, options?: ErrorOptions);
|
|
18961
18869
|
}
|
|
18962
|
-
/**
|
|
18963
|
-
declare class
|
|
18964
|
-
constructor(
|
|
18870
|
+
/** Relayer rejected the transport key pair (stale, expired, or malformed). */
|
|
18871
|
+
declare class InvalidTransportKeyPairError extends ZamaError {
|
|
18872
|
+
constructor(message: string, options?: ErrorOptions);
|
|
18965
18873
|
}
|
|
18966
|
-
/**
|
|
18967
|
-
declare class
|
|
18968
|
-
constructor(
|
|
18874
|
+
/** No FHE ciphertext exists for this account (never shielded). */
|
|
18875
|
+
declare class NoCiphertextError extends ZamaError {
|
|
18876
|
+
constructor(message: string, options?: ErrorOptions);
|
|
18969
18877
|
}
|
|
18970
18878
|
//#endregion
|
|
18971
18879
|
//#region src/errors/delegation.d.ts
|
|
@@ -19025,6 +18933,16 @@ declare class DelegationNotPropagatedError extends ZamaError {
|
|
|
19025
18933
|
constructor(message: string, options?: ErrorOptions);
|
|
19026
18934
|
}
|
|
19027
18935
|
//#endregion
|
|
18936
|
+
//#region src/errors/encryption.d.ts
|
|
18937
|
+
/** FHE encryption failed. */
|
|
18938
|
+
declare class EncryptionFailedError extends ZamaError {
|
|
18939
|
+
constructor(message: string, options?: ErrorOptions);
|
|
18940
|
+
}
|
|
18941
|
+
/** FHE decryption failed. */
|
|
18942
|
+
declare class DecryptionFailedError extends ZamaError {
|
|
18943
|
+
constructor(message: string, options?: ErrorOptions);
|
|
18944
|
+
}
|
|
18945
|
+
//#endregion
|
|
19028
18946
|
//#region src/errors/balance.d.ts
|
|
19029
18947
|
/** Structured details shared by balance-related errors. */
|
|
19030
18948
|
interface BalanceErrorDetails {
|
|
@@ -19061,6 +18979,134 @@ declare class ERC20ReadFailedError extends ZamaError {
|
|
|
19061
18979
|
constructor(message: string, options?: ErrorOptions);
|
|
19062
18980
|
}
|
|
19063
18981
|
//#endregion
|
|
18982
|
+
//#region src/errors/relayer.d.ts
|
|
18983
|
+
/** Relayer HTTP request failed. */
|
|
18984
|
+
declare class RelayerRequestFailedError extends ZamaError {
|
|
18985
|
+
/** HTTP status code from the relayer, if available. */
|
|
18986
|
+
readonly statusCode: number | undefined;
|
|
18987
|
+
constructor(message: string, statusCode?: number, options?: ErrorOptions);
|
|
18988
|
+
}
|
|
18989
|
+
/** SDK configuration is invalid (e.g. forbidden chain ID, unsupported type). */
|
|
18990
|
+
declare class ConfigurationError extends ZamaError {
|
|
18991
|
+
constructor(message: string, options?: ErrorOptions);
|
|
18992
|
+
}
|
|
18993
|
+
//#endregion
|
|
18994
|
+
//#region src/errors/signer.d.ts
|
|
18995
|
+
/**
|
|
18996
|
+
* Base class for signer/account readiness failures.
|
|
18997
|
+
*/
|
|
18998
|
+
declare class SignerRequiredError extends ZamaError {
|
|
18999
|
+
readonly operation: string;
|
|
19000
|
+
constructor(code: ZamaErrorCode, operation: string, message: string, options?: ErrorOptions);
|
|
19001
|
+
}
|
|
19002
|
+
/**
|
|
19003
|
+
* Thrown when an operation requires a signer but none is configured.
|
|
19004
|
+
*
|
|
19005
|
+
* The SDK can be constructed without a signer. Operations that need wallet
|
|
19006
|
+
* authority throw this before probing wallet state.
|
|
19007
|
+
*
|
|
19008
|
+
* @example
|
|
19009
|
+
* ```ts
|
|
19010
|
+
* try {
|
|
19011
|
+
* await token.confidentialTransfer("0xTo", 100n);
|
|
19012
|
+
* } catch (e) {
|
|
19013
|
+
* if (e instanceof SignerNotConfiguredError) {
|
|
19014
|
+
* // Fix SDK/provider configuration.
|
|
19015
|
+
* }
|
|
19016
|
+
* }
|
|
19017
|
+
* ```
|
|
19018
|
+
*/
|
|
19019
|
+
declare class SignerNotConfiguredError extends SignerRequiredError {
|
|
19020
|
+
constructor(operation: string, options?: ErrorOptions);
|
|
19021
|
+
}
|
|
19022
|
+
/** Thrown when a signer exists but no wallet account is currently connected. */
|
|
19023
|
+
declare class WalletNotConnectedError extends SignerRequiredError {
|
|
19024
|
+
constructor(operation: string, options?: ErrorOptions);
|
|
19025
|
+
}
|
|
19026
|
+
/** Thrown when an async adapter has not resolved its initial wallet account yet. */
|
|
19027
|
+
declare class WalletAccountNotReadyError extends SignerRequiredError {
|
|
19028
|
+
constructor(operation: string, options?: ErrorOptions);
|
|
19029
|
+
}
|
|
19030
|
+
//#endregion
|
|
19031
|
+
//#region src/errors/signing.d.ts
|
|
19032
|
+
/** User rejected the wallet signature prompt. */
|
|
19033
|
+
declare class SigningRejectedError extends ZamaError {
|
|
19034
|
+
constructor(message: string, options?: ErrorOptions);
|
|
19035
|
+
}
|
|
19036
|
+
/** Wallet signature failed for a reason other than rejection. */
|
|
19037
|
+
declare class SigningFailedError extends ZamaError {
|
|
19038
|
+
constructor(message: string, options?: ErrorOptions);
|
|
19039
|
+
}
|
|
19040
|
+
//#endregion
|
|
19041
|
+
//#region src/errors/transaction.d.ts
|
|
19042
|
+
/** On-chain transaction reverted. */
|
|
19043
|
+
declare class TransactionRevertedError extends ZamaError {
|
|
19044
|
+
constructor(message: string, options?: ErrorOptions);
|
|
19045
|
+
}
|
|
19046
|
+
//#endregion
|
|
19047
|
+
//#region src/errors/match.d.ts
|
|
19048
|
+
/**
|
|
19049
|
+
* Identity type that fails to instantiate unless `T` maps every code to a `ZamaError`.
|
|
19050
|
+
* Guards presence + value type only: a wrong-but-valid mapping (a code pointing at a
|
|
19051
|
+
* structurally identical sibling class) still compiles — `errors.test-d.ts` backstops that.
|
|
19052
|
+
*/
|
|
19053
|
+
type Complete<T extends Record<ZamaErrorCode, ZamaError>> = T;
|
|
19054
|
+
/**
|
|
19055
|
+
* Maps each {@link ZamaErrorCode} to the error class thrown with that code, so
|
|
19056
|
+
* {@link matchZamaError} handlers receive the matched subtype instead of the base
|
|
19057
|
+
* `ZamaError`. Hand-maintained; the `Complete` wrapper fails the build if a code is
|
|
19058
|
+
* added without an entry here (or mapped to a non-`ZamaError`).
|
|
19059
|
+
*/
|
|
19060
|
+
type ErrorForCode = Complete<{
|
|
19061
|
+
[ZamaErrorCode.SigningRejected]: SigningRejectedError;
|
|
19062
|
+
[ZamaErrorCode.SigningFailed]: SigningFailedError;
|
|
19063
|
+
[ZamaErrorCode.EncryptionFailed]: EncryptionFailedError;
|
|
19064
|
+
[ZamaErrorCode.DecryptionFailed]: DecryptionFailedError;
|
|
19065
|
+
[ZamaErrorCode.TransactionReverted]: TransactionRevertedError;
|
|
19066
|
+
[ZamaErrorCode.TransportKeyPairExpired]: TransportKeyPairExpiredError;
|
|
19067
|
+
[ZamaErrorCode.InvalidTransportKeyPair]: InvalidTransportKeyPairError;
|
|
19068
|
+
[ZamaErrorCode.NoCiphertext]: NoCiphertextError;
|
|
19069
|
+
[ZamaErrorCode.RelayerRequestFailed]: RelayerRequestFailedError;
|
|
19070
|
+
[ZamaErrorCode.Configuration]: ConfigurationError;
|
|
19071
|
+
[ZamaErrorCode.DelegationSelfNotAllowed]: DelegationSelfNotAllowedError;
|
|
19072
|
+
[ZamaErrorCode.DelegationCooldown]: DelegationCooldownError;
|
|
19073
|
+
[ZamaErrorCode.DelegationNotFound]: DelegationNotFoundError;
|
|
19074
|
+
[ZamaErrorCode.DelegationExpired]: DelegationExpiredError;
|
|
19075
|
+
[ZamaErrorCode.InsufficientConfidentialBalance]: InsufficientConfidentialBalanceError;
|
|
19076
|
+
[ZamaErrorCode.InsufficientERC20Balance]: InsufficientERC20BalanceError;
|
|
19077
|
+
[ZamaErrorCode.BalanceCheckUnavailable]: BalanceCheckUnavailableError;
|
|
19078
|
+
[ZamaErrorCode.ERC20ReadFailed]: ERC20ReadFailedError;
|
|
19079
|
+
[ZamaErrorCode.DelegationExpiryUnchanged]: DelegationExpiryUnchangedError;
|
|
19080
|
+
[ZamaErrorCode.DelegationDelegateEqualsContract]: DelegationDelegateEqualsContractError;
|
|
19081
|
+
[ZamaErrorCode.DelegationContractIsSelf]: DelegationContractIsSelfError;
|
|
19082
|
+
[ZamaErrorCode.AclPaused]: AclPausedError;
|
|
19083
|
+
[ZamaErrorCode.DelegationExpirationTooSoon]: DelegationExpirationTooSoonError;
|
|
19084
|
+
[ZamaErrorCode.DelegationNotPropagated]: DelegationNotPropagatedError;
|
|
19085
|
+
[ZamaErrorCode.ChainMismatch]: ChainMismatchError;
|
|
19086
|
+
[ZamaErrorCode.SignerNotConfigured]: SignerNotConfiguredError;
|
|
19087
|
+
[ZamaErrorCode.WalletNotConnected]: WalletNotConnectedError;
|
|
19088
|
+
[ZamaErrorCode.WalletAccountNotReady]: WalletAccountNotReadyError;
|
|
19089
|
+
}>;
|
|
19090
|
+
/**
|
|
19091
|
+
* Pattern-match on a {@link ZamaError} by its error code. Each handler receives the
|
|
19092
|
+
* error class for its code, so subclass fields are available without a cast.
|
|
19093
|
+
* Falls through to the `_` wildcard handler if no specific handler matches.
|
|
19094
|
+
* Returns `undefined` if the error is not a `ZamaError` and no `_` handler is provided.
|
|
19095
|
+
*
|
|
19096
|
+
* @example
|
|
19097
|
+
* ```ts
|
|
19098
|
+
* matchZamaError(error, {
|
|
19099
|
+
* SIGNING_REJECTED: () => toast("Please approve in wallet"),
|
|
19100
|
+
* INSUFFICIENT_CONFIDENTIAL_BALANCE: (e) => toast(`Need ${e.requested}, have ${e.available}`),
|
|
19101
|
+
* RELAYER_REQUEST_FAILED: (e) => toast(`Relayer failed (${e.statusCode})`),
|
|
19102
|
+
* _: () => toast("Unknown error"),
|
|
19103
|
+
* });
|
|
19104
|
+
* ```
|
|
19105
|
+
*/
|
|
19106
|
+
declare function matchZamaError<R>(error: unknown, handlers: { [K in ZamaErrorCode]?: (error: ErrorForCode[K]) => R } & {
|
|
19107
|
+
_?: (error: unknown) => R;
|
|
19108
|
+
}): R | undefined;
|
|
19109
|
+
//#endregion
|
|
19064
19110
|
//#region src/services/caching-service.d.ts
|
|
19065
19111
|
/**
|
|
19066
19112
|
* Storage-backed cache for decrypted FHE plaintext values.
|
|
@@ -20399,5 +20445,5 @@ declare function loadPendingUnshieldRequest(storage: GenericStorage, wrapperAddr
|
|
|
20399
20445
|
*/
|
|
20400
20446
|
declare function clearPendingUnshield(storage: GenericStorage, wrapperAddress: Address): Promise<void>;
|
|
20401
20447
|
//#endregion
|
|
20402
|
-
export { DecryptResult as $,
|
|
20403
|
-
//# sourceMappingURL=index-
|
|
20448
|
+
export { DecryptResult as $, BalanceCheckUnavailableError as A, decimalsContract as At, DelegationDelegateEqualsContractError as B, rateContract as Bt, SigningRejectedError as C, ERC7984_WRAPPER_INTERFACE_ID as Ct, WalletNotConnectedError as D, allowanceContract as Dt, WalletAccountNotReadyError as E, supportsInterfaceContract as Et, DecryptionFailedError as F, confidentialTransferContract as Ft, DelegationNotPropagatedError as G, wrapContract as Gt, DelegationExpiredError as H, underlyingContract as Ht, EncryptionFailedError as I, confidentialTransferFromContract as It, NoCiphertextError as J, resolveStorage as Jt, DelegationSelfNotAllowedError as K, ResolvedChainRelayer as Kt, AclPausedError as L, finalizeUnwrapContract as Lt, ERC20ReadFailedError as M, symbolContract as Mt, InsufficientConfidentialBalanceError as N, confidentialBalanceOfContract as Nt, ConfigurationError as O, approveContract as Ot, InsufficientERC20BalanceError as P, confidentialTotalSupplyContract as Pt, ZamaErrorCode as Q, DelegationContractIsSelfError as R, inferredTotalSupplyContract as Rt, SigningFailedError as S, ERC7984_INTERFACE_ID as St, SignerRequiredError as T, isConfidentialWrapperContract as Tt, DelegationExpiryUnchangedError as U, unwrapContract as Ut, DelegationExpirationTooSoonError as V, setOperatorContract as Vt, DelegationNotFoundError as W, unwrapFromBalanceContract as Wt, ChainMismatchError as X, TransportKeyPairExpiredError as Y, createConfig as Yt, ZamaError as Z, Decryption as _, getDelegationExpiryContract as _t, savePendingUnshield as a, QueryFactoryOptions as at, matchZamaError as b, transferAndCallContract as bt, ListPairsOptions as c, TokenWrapperPairWithMetadata as ct, WrappedToken as d, getTokenPairContract as dt, EncryptedInput as et, BatchBalancesResult as f, getTokenPairsContract as ft, Delegations as g, delegateForUserDecryptionContract as gt, Permits as h, isConfidentialTokenValidContract as ht, loadPendingUnshieldRequest as i, MutationFactoryOptions as it, BalanceErrorDetails as j, nameContract as jt, RelayerRequestFailedError as k, balanceOfContract as kt, WrappersRegistry as l, getConfidentialTokenAddressContract as lt, Token as m, getTokenPairsSliceContract as mt, clearPendingUnshield as n, SignerQueryContext as nt, ZamaSDK as o, PaginatedResult as ot, BatchDecryptAsOptions as p, getTokenPairsLengthContract as pt, InvalidTransportKeyPairError as q, resolveChainRelayers as qt, loadPendingUnshield as r, zamaQueryKeys as rt, DefaultRegistryAddresses as s, TokenWrapperPair as st, PendingUnshieldRequest as t, decryptValuesQueryOptions as tt, WrappersRegistryConfig as u, getTokenAddressContract as ut, BatchDecryptItem as v, isHandleDelegatedContract as vt, SignerNotConfiguredError as w, isConfidentialTokenContract as wt, TransactionRevertedError as x, ERC1363_INTERFACE_ID as xt, BatchDecryptResult as y, revokeDelegationContract as yt, DelegationCooldownError as z, isOperatorContract as zt };
|
|
20449
|
+
//# sourceMappingURL=index-DZR63OJZ.d.ts.map
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { $ as decodeDelegatedForUserDecryption, A as UnshieldPhase2StartedEvent,
|
|
|
5
5
|
import { t as ZamaConfigEthers } from "./types-DJp9eoXC.js";
|
|
6
6
|
import { n as MutableWalletAccountStore, r as createWalletAccountStore, t as BaseSigner } from "./base-signer-ByGw5ReU.js";
|
|
7
7
|
import { t as cleartext } from "./cleartext-4WhQWHZF.js";
|
|
8
|
-
import { $ as DecryptResult, A as
|
|
8
|
+
import { $ as DecryptResult, A as BalanceCheckUnavailableError, At as decimalsContract, B as DelegationDelegateEqualsContractError, Bt as rateContract, C as SigningRejectedError, Ct as ERC7984_WRAPPER_INTERFACE_ID, D as WalletNotConnectedError, Dt as allowanceContract, E as WalletAccountNotReadyError, Et as supportsInterfaceContract, F as DecryptionFailedError, Ft as confidentialTransferContract, G as DelegationNotPropagatedError, Gt as wrapContract, H as DelegationExpiredError, Ht as underlyingContract, I as EncryptionFailedError, It as confidentialTransferFromContract, J as NoCiphertextError, Jt as resolveStorage, K as DelegationSelfNotAllowedError, Kt as ResolvedChainRelayer, L as AclPausedError, Lt as finalizeUnwrapContract, M as ERC20ReadFailedError, Mt as symbolContract, N as InsufficientConfidentialBalanceError, Nt as confidentialBalanceOfContract, O as ConfigurationError, Ot as approveContract, P as InsufficientERC20BalanceError, Pt as confidentialTotalSupplyContract, Q as ZamaErrorCode, R as DelegationContractIsSelfError, Rt as inferredTotalSupplyContract, S as SigningFailedError, St as ERC7984_INTERFACE_ID, T as SignerRequiredError, Tt as isConfidentialWrapperContract, U as DelegationExpiryUnchangedError, Ut as unwrapContract, V as DelegationExpirationTooSoonError, Vt as setOperatorContract, W as DelegationNotFoundError, Wt as unwrapFromBalanceContract, X as ChainMismatchError, Y as TransportKeyPairExpiredError, Yt as createConfig, Z as ZamaError, _ as Decryption, _t as getDelegationExpiryContract, a as savePendingUnshield, b as matchZamaError, bt as transferAndCallContract, c as ListPairsOptions, ct as TokenWrapperPairWithMetadata, d as WrappedToken, dt as getTokenPairContract, et as EncryptedInput, f as BatchBalancesResult, ft as getTokenPairsContract, g as Delegations, gt as delegateForUserDecryptionContract, h as Permits, ht as isConfidentialTokenValidContract, i as loadPendingUnshieldRequest, j as BalanceErrorDetails, jt as nameContract, k as RelayerRequestFailedError, kt as balanceOfContract, l as WrappersRegistry, lt as getConfidentialTokenAddressContract, m as Token, mt as getTokenPairsSliceContract, n as clearPendingUnshield, o as ZamaSDK, ot as PaginatedResult, p as BatchDecryptAsOptions, pt as getTokenPairsLengthContract, q as InvalidTransportKeyPairError, qt as resolveChainRelayers, r as loadPendingUnshield, s as DefaultRegistryAddresses, st as TokenWrapperPair, t as PendingUnshieldRequest, u as WrappersRegistryConfig, ut as getTokenAddressContract, v as BatchDecryptItem, vt as isHandleDelegatedContract, w as SignerNotConfiguredError, wt as isConfidentialTokenContract, x as TransactionRevertedError, xt as ERC1363_INTERFACE_ID, y as BatchDecryptResult, yt as revokeDelegationContract, z as DelegationCooldownError, zt as isOperatorContract } from "./index-DZR63OJZ.js";
|
|
9
9
|
import { t as ZamaConfigViem } from "./types-Cb7AvEOP.js";
|
|
10
10
|
import { Address, Hex } from "viem";
|
|
11
11
|
import { FheTypeName, FhevmInstanceConfig, InputProofBytesType, KmsDelegatedUserDecryptEIP712Type as KmsDelegatedDecryptEIP712Type, ZKProofLike } from "@zama-fhe/relayer-sdk/bundle";
|
package/dist/esm/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e,i as t,n,r,t as i}from"./relayer-D-nicEYJ.js";import{A as a,B as o,C as s,D as c,F as l,H as u,I as d,L as f,M as ee,N as te,O as ne,P as re,R as ie,S as ae,T as oe,U as se,V as ce,W as le,_ as ue,a as de,b as fe,c as pe,d as me,f as he,g as p,h as m,i as ge,j as _e,k as ve,l as ye,m as be,n as xe,o as Se,p as Ce,r as we,s as Te,t as Ee,u as De,v as Oe,x as ke,z as Ae}from"./wrappers-registry-ChxQp8ty.js";import{n as h,t as g}from"./encryption-BGmINekJ.js";import{_ as je,a as Me,b as _,c as v,d as Ne,f as Pe,g as Fe,h as Ie,i as y,l as b,m as Le,n as Re,o as x,p as ze,r as Be,s as S,t as C,u as Ve,v as He,y as Ue}from"./token-BTgHqRIL.js";import{r as w,t as We}from"./error-W1N-FGwV.js";import{t as Ge}from"./cleartext-CTla3A3O.js";import{a as Ke,c as qe,d as Je,f as T,i as Ye,l as Xe,n as Ze,o as E,r as Qe,s as $e,t as et,u as tt}from"./base-signer-DaRQNB29.js";import{n as nt,t as rt}from"./indexeddb-storage-Mi-fCWN3.js";import{n as it,t as at}from"./memory-storage-fp9RY5BQ.js";import{i as ot,t as st}from"./assertions-CnPIS0VN.js";import{t as D}from"./hex-CxtyupeQ.js";import{a as ct,c as lt,i as ut,n as dt,o as ft,r as pt,s as mt,t as ht}from"./chains-CXcO1DBP.js";import{getAddress as O,keccak256 as gt,toBytes as _t}from"viem";import{z as k}from"zod/mini";var vt=class extends r{constructor(e,n){super(t.TransportKeyPairExpired,e,n),this.name=`TransportKeyPairExpiredError`}},yt=class extends r{constructor(e,n){super(t.InvalidTransportKeyPair,e,n),this.name=`InvalidTransportKeyPairError`}},A=class extends r{constructor(e,n){super(t.NoCiphertext,e,n),this.name=`NoCiphertextError`}},j=class extends r{constructor(e,n){super(t.DelegationSelfNotAllowed,e,n),this.name=`DelegationSelfNotAllowedError`}},bt=class extends r{constructor(e,n){super(t.DelegationCooldown,e,n),this.name=`DelegationCooldownError`}},M=class extends r{constructor(e,n){super(t.DelegationNotFound,e,n),this.name=`DelegationNotFoundError`}},N=class extends r{constructor(e,n){super(t.DelegationExpired,e,n),this.name=`DelegationExpiredError`}},P=class extends r{constructor(e,n){super(t.DelegationExpiryUnchanged,e,n),this.name=`DelegationExpiryUnchangedError`}},F=class extends r{constructor(e,n){super(t.DelegationDelegateEqualsContract,e,n),this.name=`DelegationDelegateEqualsContractError`}},xt=class extends r{constructor(e,n){super(t.DelegationContractIsSelf,e,n),this.name=`DelegationContractIsSelfError`}},St=class extends r{constructor(e,n){super(t.AclPaused,e,n),this.name=`AclPausedError`}},I=class extends r{constructor(e,n){super(t.DelegationExpirationTooSoon,e,n),this.name=`DelegationExpirationTooSoonError`}},L=class extends r{constructor(e,n){super(t.DelegationNotPropagated,e,n),this.name=`DelegationNotPropagatedError`}};function R(e,t,r=!1){if(e instanceof g||e instanceof A||e instanceof n||e instanceof L||e instanceof le||e instanceof se)return e;let i=We(e);return i===400?new A(e instanceof Error?e.message:`No ciphertext for this account`,{cause:e}):r&&i===500?new L(`Delegated decryption failed with a server error. This is most commonly caused by the delegation not having propagated to the gateway yet — after granting delegation, allow 1–2 minutes for cross-chain synchronization before retrying. If the error persists, the gateway or relayer may be experiencing an unrelated issue.`,{cause:e}):i===void 0?new g(t,{cause:e}):new n(e instanceof Error?e.message:t,i,{cause:e})}function Ct(e,t){if(e instanceof r)return e;let i=We(e);return i===void 0?new h(t,{cause:e}):new n(e instanceof Error?e.message:t,i,{cause:e})}const wt=[{type:`function`,name:`allowance`,inputs:[{name:`owner`,type:`address`,internalType:`address`},{name:`spender`,type:`address`,internalType:`address`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`approve`,inputs:[{name:`spender`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`approveAndCall`,inputs:[{name:`spender`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`approveAndCall`,inputs:[{name:`spender`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`},{name:`data`,type:`bytes`,internalType:`bytes`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`balanceOf`,inputs:[{name:`account`,type:`address`,internalType:`address`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`supportsInterface`,inputs:[{name:`interfaceId`,type:`bytes4`,internalType:`bytes4`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`totalSupply`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`transfer`,inputs:[{name:`to`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`transferAndCall`,inputs:[{name:`to`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`transferAndCall`,inputs:[{name:`to`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`},{name:`data`,type:`bytes`,internalType:`bytes`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`transferFrom`,inputs:[{name:`from`,type:`address`,internalType:`address`},{name:`to`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`transferFromAndCall`,inputs:[{name:`from`,type:`address`,internalType:`address`},{name:`to`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`},{name:`data`,type:`bytes`,internalType:`bytes`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`transferFromAndCall`,inputs:[{name:`from`,type:`address`,internalType:`address`},{name:`to`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`event`,name:`Approval`,inputs:[{name:`owner`,type:`address`,indexed:!0,internalType:`address`},{name:`spender`,type:`address`,indexed:!0,internalType:`address`},{name:`value`,type:`uint256`,indexed:!1,internalType:`uint256`}],anonymous:!1},{type:`event`,name:`Transfer`,inputs:[{name:`from`,type:`address`,indexed:!0,internalType:`address`},{name:`to`,type:`address`,indexed:!0,internalType:`address`},{name:`value`,type:`uint256`,indexed:!1,internalType:`uint256`}],anonymous:!1}];function Tt(e,t,n,r=`0x`){return{address:e,abi:wt,functionName:`transferAndCall`,args:[t,n,r]}}function Et(e){return Ye(e.signer,e.provider,e)}var Dt=class{#e;#t;#n;#r;constructor(e){this.#e=e.signer,this.#t=e.provider,this.#n=e.relayer,this.#r=e.decryptionService}#i(e){return u(this.#r,e)}async decryptValues(e){let t=this.#i(`decryptValues`),n=await S(`decryptValues`,this.#e,this.#t);return t.userDecrypt(e,n.address)}async delegatedDecryptValues(e,t,n=t){let r=this.#i(`delegatedDecryptValues`),i=await S(`delegatedDecryptValues`,this.#e,this.#t);return r.delegatedUserDecrypt(e,t,i.address,n)}async decryptPublicValues(e){if(e.length===0)return{clearValues:{},decryptionProof:`0x`,abiEncodedClearValues:`0x`};try{return await this.#n.publicDecrypt(e)}catch(e){throw R(e,`Public decryption failed`)}}async delegatedBatchDecryptValues({encryptedInputs:e,delegatorAddress:t,accountAddress:n=t,maxConcurrency:r}){let i=this.#i(`delegatedBatchDecryptValues`),a=await S(`delegatedBatchDecryptValues`,this.#e,this.#t);return i.delegatedBatchDecryptHandlesAs({encryptedInputs:e,delegatorAddress:t,delegateAddress:a.address,accountAddress:n,maxConcurrency:r})}},Ot=class{#e;#t;#n;constructor(e){this.#e=e.signer,this.#t=e.provider,this.#n=e.delegationService}#r(e){return u(this.#e,e)}async delegateDecryption({contractAddress:e,delegateAddress:t,expirationDate:n}){let r=this.#r(`delegateDecryption`),i=await S(`delegateDecryption`,this.#e,this.#t);return this.#n.delegateDecryption(r,{contractAddress:e,delegateAddress:t,delegatorAddress:i.address,expirationDate:n})}async revokeDelegation({contractAddress:e,delegateAddress:t}){let n=this.#r(`revokeDelegation`),r=await S(`revokeDelegation`,this.#e,this.#t);return this.#n.revokeDelegation(n,{contractAddress:e,delegateAddress:t,delegatorAddress:r.address})}async isActive(e){return this.#n.isDelegated(e)}async getExpiry(e){return this.#n.getDelegationExpiry(e)}},kt=class{#e;#t;#n;#r;#i;constructor(e){this.#e=e.signer,this.#t=e.provider,this.#n=e.cachingService,this.#r=e.credentialService,this.#i=e.logger}#a(e){return u(this.#r,e)}async grantPermit(e){if(e.length===0)return;let t=this.#a(`grantPermit`);await v(`grantPermit`,this.#e,this.#t),await t.grantPermit(e)}async grantDelegationPermit(e,t){if(t.length===0)return;let n=this.#a(`grantDelegationPermit`);await v(`grantDelegationPermit`,this.#e,this.#t),await n.grantPermit(t,e)}async hasPermit(e){return this.#r?this.#r.hasPermit(e):!1}async hasDelegationPermit(e,t){return this.#r?this.#r.hasPermit(t,e):!1}async warmTransportKeyPair(){let e=this.#r;if(!e)return;let t=this.#e?.walletAccount.getSnapshot();t&&await e.warmTransportKeyPair(t.address)}async revokePermits(e){let t=this.#a(`revokePermits`),n=O((await S(`revokePermits`,this.#e,this.#t)).address);try{await t.revokePermits(e)}finally{await f(`clear decrypt cache`,()=>this.#n.clearForRequester(n),this.#i)}}async clear(){let e=this.#a(`clear`),t=O((await S(`clear`,this.#e,this.#t)).address);try{await e.clearCredentials()}finally{await f(`clear decrypt cache`,()=>this.#n.clearForRequester(t),this.#i)}}};const At=k.union([k.bigint(),k.boolean(),Je]),jt=k.array(k.string());var Mt=class{#e;#t;#n=`zama:decrypt`;#r=`${this.#n}:keys`;#i=Promise.resolve();constructor(e,t){this.#e=e,this.#t=t}async get(e,t,n){try{let r=this.#c(e,t,n),i=await this.#e.get(r);if(i===null)return null;let a=At.safeParse(i);return a.success?a.data:(await this.delete(e,t,n),null)}catch(e){return this.#t.warn(`CachingService.get failed`,{error:e}),null}}async set(e,t,n,r){try{let i=this.#c(e,t,n);await this.#e.set(i,r),this.#i=this.#i.then(()=>this.#u(i).catch(e=>{this.#t.warn(`CachingService index write failed`,{error:e})})),await this.#i}catch(e){this.#t.warn(`CachingService.set failed`,{error:e})}}async delete(e,t,n){let r=this.#c(e,t,n);this.#i=this.#i.then(()=>this.#a(r).catch(e=>{this.#t.warn(`CachingService.delete failed`,{error:e})})),await this.#i}async clearForRequester(e){this.#i=this.#i.then(()=>this.#o(e).catch(e=>{this.#t.warn(`CachingService.clearForRequester failed`,{error:e})})),await this.#i}async clearAll(){this.#i=this.#i.then(()=>this.#s().catch(e=>{this.#t.warn(`CachingService.clearAll failed`,{error:e})})),await this.#i}async#a(e){await this.#e.delete(e).catch(()=>{});let t=await this.#l(),n=t.filter(t=>t!==e);n.length!==t.length&&await this.#e.set(this.#r,n)}async#o(e){let t=O(e),n=`${this.#n}:${t}:`,r=await this.#l(),i=[],a=[];for(let e of r)e.startsWith(n)?i.push(e):a.push(e);await Promise.all(i.map(e=>this.#e.delete(e).catch(()=>{}))),await this.#e.set(this.#r,a)}async#s(){let e=await this.#l();await Promise.all(e.map(e=>this.#e.delete(e).catch(()=>{}))),await this.#e.delete(this.#r)}#c(e,t,n){return`${this.#n}:${O(e)}:${O(t)}:${n.toLowerCase()}`}async#l(){let e=await this.#e.get(this.#r);if(e===null)return[];let t=jt.safeParse(e);return t.success?t.data:(await this.#e.delete(this.#r).catch(()=>{}),[])}async#u(e){let t=await this.#l();t.includes(e)||(t.push(e),await this.#e.set(this.#r,t))}};function Nt(e,t){let n=It(e,t);if(!n)throw new g(`No permit covers contract ${t} after allow()`);return Ft(e,n)}function Pt(e,t){let n=It(e,t);if(!n)throw new g(`No delegated permit covers contract ${t} after allow()`);return{...Ft(e,n),delegatorAddress:n.delegatorAddress}}function Ft(e,t){return{signedContractAddresses:t.signedContractAddresses,privateKey:e.keypair.privateKey,publicKey:e.keypair.publicKey,signature:t.signature,startTimestamp:t.startTimestamp,durationDays:t.durationDays}}function It(e,t){let n=tt(t);return e.permits.find(e=>e.signedContractAddresses.includes(n))}var Lt=class{#e;#t;#n;#r;#i;constructor({cache:e,credentialService:t,delegationService:n,relayer:r,emitEvent:i}){this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i}async userDecrypt(e,t){let n=O(t);return this.#a(e,{requesterAddress:n,resolveCredentials:e=>this.#t.grantPermit(e),decryptContract:async({credentials:e,contractAddress:t,encryptedValues:r})=>this.#r.userDecrypt({encryptedValues:r,contractAddress:t,...Nt(e,t),signerAddress:n}),errorMessage:`Failed to decrypt encrypted values`})}async delegatedUserDecrypt(e,t,n,r){let i=O(t),a=O(n);return this.#a(e,{requesterAddress:O(r),resolveCredentials:e=>this.#t.grantPermit(e,i),validate:e=>this.#l(e,{delegatorAddress:i,delegateAddress:a}),decryptContract:async({credentials:e,contractAddress:t,encryptedValues:n})=>this.#r.delegatedUserDecrypt({encryptedValues:n,contractAddress:t,...Pt(e,t),delegateAddress:a}),errorMessage:`Failed to decrypt delegated encrypted values`,delegated:!0})}async delegatedBatchDecryptHandlesAs({encryptedInputs:e,delegatorAddress:t,delegateAddress:n,accountAddress:r,maxConcurrency:i=5}){let a=e.map(e=>({encryptedValue:e.encryptedValue,contractAddress:O(e.contractAddress)}));if(a.length===0)return{items:a};let o=O(r);try{let e=await this.delegatedUserDecrypt(a.map(({encryptedValue:e,contractAddress:t})=>({encryptedValue:e,contractAddress:t})),t,n,o);for(let t of a)this.#o(t,e);return{items:a}}catch(e){if(Le(e))throw e;if(a.length===1){let[t=this.#c()]=a;return t.error=this.#s(e,`Failed to decrypt delegated encrypted values`,!0),{items:a}}}return await Me(a.map(e=>async()=>{try{let r=await this.delegatedUserDecrypt([{encryptedValue:e.encryptedValue,contractAddress:e.contractAddress}],t,n,o);this.#o(e,r)}catch(t){if(Le(t))throw t;e.error=this.#s(t,`Failed to decrypt delegated encrypted values`,!0)}}),i),{items:a}}async#a(e,t){if(e.length===0)return{};let n=e.map(e=>({encryptedValue:e.encryptedValue,contractAddress:O(e.contractAddress)})),r={},i=[];for(let e of n)y(e.encryptedValue)?r[e.encryptedValue]=0n:i.push(e);if(i.length===0)return r;let a=Array.from(new Set(n.map(e=>e.contractAddress))),o=Array.from(new Set(i.map(e=>e.contractAddress)));t.validate&&await t.validate(o);let s=[];for(let e of i){let n=await this.#e.get(t.requesterAddress,e.contractAddress,e.encryptedValue);n===null?s.push(e):r[e.encryptedValue]=n}if(s.length===0)return r;let c=await t.resolveCredentials(a),l=new Map;for(let e of s){let t=l.get(e.contractAddress);t?t.push(e.encryptedValue):l.set(e.contractAddress,[e.encryptedValue])}let u=Date.now(),d=s.map(e=>e.encryptedValue);try{this.#i({type:x.DecryptStart,encryptedValues:d}),await Me([...l.entries()].map(([e,n])=>async()=>{let i=await t.decryptContract({credentials:c,contractAddress:e,encryptedValues:n});for(let[n,a]of Object.entries(i))r[n]=a,await this.#e.set(t.requesterAddress,e,n,a)}),5);let e={};for(let t of d){let n=r[t];n!==void 0&&(e[t]=n)}return this.#i({type:x.DecryptEnd,durationMs:Date.now()-u,encryptedValues:d,result:e}),r}catch(e){throw this.#i({type:x.DecryptError,error:w(e),durationMs:Date.now()-u,encryptedValues:d}),R(e,t.errorMessage,t.delegated)}}#o(e,t){let n=t[e.encryptedValue];if(n===void 0){e.error=new g(`Batch delegated decryption returned no value for encrypted value ${e.encryptedValue} on contract ${e.contractAddress}`);return}e.value=n}#s(e,t,n=!1){return e instanceof r?e:R(e,t,n)}#c(){throw new g(`Batch delegated decryption invariant failed: missing item`)}async#l(e,{delegatorAddress:t,delegateAddress:n}){let r=await this.#n.findInactiveDelegations(e,t,n);if(r.size!==0)for(let e of r.values())throw e}};function Rt(e){if(!(e instanceof Error))return null;let t=e.cause;if(typeof t!=`object`||!t||!(`data`in t))return null;let{data:n}=t;return typeof n!=`object`||!n||!(`errorName`in n)?null:typeof n.errorName==`string`?n.errorName:null}const z={AlreadyDelegatedOrRevokedInSameBlock:e=>new bt(`Only one delegate/revoke per (delegator, delegate, contract) per block. Wait for the next block before retrying.`,{cause:e}),SenderCannotBeContractAddress:e=>new xt(`The contract address cannot be the caller address.`,{cause:e}),EnforcedPause:e=>new St(`The ACL contract is paused. Delegation operations are temporarily disabled.`,{cause:e}),SenderCannotBeDelegate:e=>new j(`Cannot delegate to yourself (delegate === msg.sender).`,{cause:e}),DelegateCannotBeContractAddress:e=>new F(`Delegate address cannot be the same as the contract address.`,{cause:e}),ExpirationDateBeforeOneHour:e=>new I(`Expiration date must be at least 1 hour in the future.`,{cause:e}),ExpirationDateAlreadySetToSameValue:e=>new P(`The new expiration date is the same as the current one.`,{cause:e}),NotDelegatedYet:e=>new M(`Cannot revoke: no active delegation exists.`,{cause:e})};function zt(e){return e in z}function Bt(e,t){let n=Rt(e);if(n&&zt(n))return z[n](t);let r=e instanceof Error?e.message:String(e);for(let[e,n]of Object.entries(z))if(r.includes(e))return n(t);return null}var Vt=class{#e;#t;#n;#r;constructor({provider:e,relayer:t,emitEvent:n=()=>{},logger:r}){this.#e=e,this.#t=t,this.#r=r,this.#n=n}async delegateDecryption(e,{contractAddress:t,delegateAddress:n,delegatorAddress:r,expirationDate:i}){if(i&&i.getTime()<Date.now()+36e5)throw new I(`Expiration date must be at least 1 hour in the future`);let a=O(t),o=O(n),s=O(r);if(o===s)throw new j(`Cannot delegate to yourself (delegate === msg.sender).`);if(o===a)throw new F(`Delegate address cannot be the same as the contract address (${a}).`);let c=await this.#t.getAclAddress(),l=i?BigInt(Math.floor(i.getTime()/1e3)):b,u;try{u=await this.getDelegationExpiry({contractAddress:a,delegatorAddress:s,delegateAddress:o})}catch(e){this.#r.warn(`delegateDecryption: pre-flight expiry check failed`,{error:e}),u=-1n}if(u===l)throw new P(`The new expiration date (${l}) is the same as the current one. No on-chain change needed.`);return this.#i({operation:`delegateDecryption`,signer:e,contractAddress:t,config:Ve(c,o,a,l)})}async revokeDelegation(e,{contractAddress:t,delegateAddress:n,delegatorAddress:r}){let i=O(t),a=O(n),o=O(r),s=await this.#t.getAclAddress(),c;try{c=await this.getDelegationExpiry({contractAddress:i,delegatorAddress:o,delegateAddress:a})}catch(e){this.#r.warn(`revokeDelegation: pre-flight expiry check failed`,{error:e}),c=1n}if(c===0n)throw new M(`No active delegation found for delegate ${a} on contract ${i}.`);return this.#i({operation:`revokeDelegation`,signer:e,contractAddress:t,config:ze(s,a,i)})}async isDelegated(e){let t=await this.getDelegationExpiry(e);return t===0n?!1:t===b?!0:t>await this.#e.getBlockTimestamp()}async getDelegationExpiry({contractAddress:e,delegatorAddress:t,delegateAddress:n}){let r=await this.#t.getAclAddress();return this.#e.readContract(Ne(r,O(t),O(n),O(e)))}async#i({operation:e,signer:t,contractAddress:n,config:r}){try{return await Re({operation:e,signer:t,provider:this.#e,config:r,emit:e=>this.#n(e,n),logger:this.#r})}catch(e){throw this.#a(e),e}}#a(e){if(!(e instanceof _))return;let t=Bt(e.cause??e,e);if(t)throw t}async findInactiveDelegations(e,t,n){let r=new Map;return await Promise.all(e.map(async e=>{try{await this.assertDelegationActive(e,t,n)}catch(t){if(t instanceof M||t instanceof N){let n=O(e);r.set(n,t);return}throw t}})),r}async assertDelegationActive(e,t,n){let r=O(e),i=O(t),a=O(n),o=await this.getDelegationExpiry({contractAddress:r,delegatorAddress:i,delegateAddress:a});if(o===0n)throw new M(`No active delegation from ${i} to ${a} for ${r}`);if(o!==b&&o<=await this.#e.getBlockTimestamp())throw new N(`Delegation from ${i} to ${a} for ${r} has expired`)}},Ht=class{#e;#t;constructor({relayer:e,emitEvent:t}){this.#e=e,this.#t=t}async encrypt(e){let t=Date.now();try{this.#t({type:x.EncryptStart},e.contractAddress);let n=await this.#e.encrypt(e);return this.#t({type:x.EncryptEnd,durationMs:Date.now()-t},e.contractAddress),n}catch(n){throw this.#t({type:x.EncryptError,error:w(n),durationMs:Date.now()-t},e.contractAddress),Ct(n,`Encryption failed`)}}},Ut=class{#e;#t;#n;#r;#i;#a=new Set;#o;constructor(e){this.#e=e.signer,this.#t=e.relayer,this.#n=e.cachingService,this.#r=e.credentialService,this.#i=e.logger,this.#e&&(this.#o=this.#e.walletAccount.subscribe(e=>{this.#s(e).catch(e=>{this.#i.warn(`wallet account handler failed`,{error:e})})}))}onWalletAccountChange(e){return this.#a.add(e),()=>{this.#a.delete(e)}}dispose(){this.#o?.(),this.#o=void 0,this.#a.clear()}async#s(e){let t=e.previous,n=e.next,r=n?.chainId;r!==void 0&&await f(`switch relayer chain`,()=>this.#t.switchChain(r),this.#i);let i=this.#r;i&&await f(`credential wallet account change`,()=>i.handleWalletAccountChange(t,n),this.#i),t&&await f(`clear decrypt cache`,()=>this.#n.clearForRequester(t.address),this.#i),await Promise.all(Array.from(this.#a,t=>f(`wallet account listener`,()=>t(e),this.#i)))}};function B(e){return gt(_t(e))}const V={ConfidentialTransfer:B(`ConfidentialTransfer(address,address,bytes32)`),Wrap:B(`Wrap(address,uint256,bytes32)`),UnwrapRequested:B(`UnwrapRequested(address,bytes32,bytes32)`),UnwrapFinalized:B(`UnwrapFinalized(address,bytes32,bytes32,uint64)`)};function H(e){return O(D(e.slice(-40)))}function U(e){return e}function W(e,t){let n=2+t*64,r=e.slice(n,n+64);return r.length===64?r:r.padEnd(64,`0`)}function Wt(e,t){return O(D(W(e,t).slice(-40)))}function G(e,t){return BigInt(`0x`+W(e,t))}function K(e,t){return D(W(e,t))}function Gt(e){return e.topics[0]!==V.ConfidentialTransfer||e.topics.length<4?null:{eventName:`ConfidentialTransfer`,from:H(e.topics[1]),to:H(e.topics[2]),encryptedAmount:U(e.topics[3])}}function q(e){return e.topics[0]!==V.Wrap||e.topics.length<2?null:{eventName:`Wrap`,to:H(e.topics[1]),roundedAmount:G(e.data,0),encryptedWrappedAmount:K(e.data,1)}}function J(e){return e.topics[0]!==V.UnwrapRequested||e.topics.length<3?null:{eventName:`UnwrapRequested`,receiver:H(e.topics[1]),unwrapRequestId:U(e.topics[2]),encryptedAmount:K(e.data,0)}}function Kt(e){return e.topics[0]!==V.UnwrapFinalized||e.topics.length<3?null:{eventName:`UnwrapFinalized`,receiver:H(e.topics[1]),unwrapRequestId:U(e.topics[2]),encryptedAmount:K(e.data,0),cleartextAmount:G(e.data,1)}}function qt(e){return Gt(e)??q(e)??J(e)??Kt(e)}function Jt(e){let t=[];for(let n of e){let e=qt(n);e&&t.push(e)}return t}function Yt(e){for(let t of e){let e=J(t);if(e)return e}return null}function Xt(e){for(let t of e){let e=q(t);if(e)return e}return null}const Zt=[V.ConfidentialTransfer,V.Wrap,V.UnwrapRequested,V.UnwrapFinalized],Y={DelegatedForUserDecryption:B(`DelegatedForUserDecryption(address,address,address,uint64,uint64,uint64)`),RevokedDelegationForUserDecryption:B(`RevokedDelegationForUserDecryption(address,address,address,uint64,uint64)`)};function X(e){return e.topics[0]!==Y.DelegatedForUserDecryption||e.topics.length<3?null:{eventName:`DelegatedForUserDecryption`,delegator:H(e.topics[1]),delegate:H(e.topics[2]),contractAddress:Wt(e.data,0),delegationCounter:G(e.data,1),oldExpirationDate:G(e.data,2),newExpirationDate:G(e.data,3)}}function Z(e){return e.topics[0]!==Y.RevokedDelegationForUserDecryption||e.topics.length<3?null:{eventName:`RevokedDelegationForUserDecryption`,delegator:H(e.topics[1]),delegate:H(e.topics[2]),contractAddress:Wt(e.data,0),delegationCounter:G(e.data,1),oldExpirationDate:G(e.data,2)}}function Qt(e){return X(e)??Z(e)}function $t(e){let t=[];for(let n of e){let e=Qt(n);e&&t.push(e)}return t}function en(e){for(let t of e){let e=X(t);if(e)return e}return null}function tn(e){for(let t of e){let e=Z(t);if(e)return e}return null}const nn=[Y.DelegatedForUserDecryption,Y.RevokedDelegationForUserDecryption];var Q=class extends C{#e;#t=null;#n=null;#r(e){try{return ot(this.sdk.signer,`WrappedToken.sdk.signer`),this.sdk.signer}catch(t){throw new ie(e,{cause:t})}}async underlying(){return this.#o()}async isPayable(){if(this.#n!==null)return this.#n;try{let e=await this.#o();this.#n=await this.sdk.provider.readContract(Ce(e))}catch{this.#n=!1}return this.#n}async allowance(e){let t=await this.#o();return this.sdk.provider.readContract(m(t,O(e),this.address))}async shield(e,t){let n=await S(`shield`,this.sdk.signer,this.sdk.provider),i=await this.isPayable(),a=await this.#o(),o=O(n.address),s;try{s=await this.sdk.provider.readContract(ue(a,o))}catch(e){throw e instanceof r?e:new Fe(`Could not read ERC-20 balance for shield validation (token: ${a})`,{cause:w(e)})}if(s<e)throw new He(`Insufficient ERC-20 balance: requested ${e}, available ${s} (token: ${a})`,{requested:e,available:s,token:a});return i?this.#i(e,a,o,t):this.#a(e,o,t)}async#i(e,t,n,r){this.#r(`shield`);let i=r?.to?O(r.to):n,a=i===n?`0x`:i;return this.submitTransaction({operation:`shield:transferAndCall`,config:Tt(t,this.address,e,a),onSubmitted:r?.onShieldSubmitted})}async#a(e,t,n){this.#r(`shield`);let r=n?.approvalStrategy??`exact`;r!==`skip`&&await this.#c(e,r===`max`,n);let i=n?.to?O(n.to):t;return this.submitTransaction({operation:`shield:approveAndWrap`,config:d(this.address,i,e),onSubmitted:n?.onShieldSubmitted})}async approveUnderlying(e){this.#r(`approveUnderlying`);let t=await S(`approveUnderlying`,this.sdk.signer,this.sdk.provider),n=await this.#o(),r=O(t.address),i=e??2n**256n-1n;return i>0n&&await this.sdk.provider.readContract(m(n,r,this.address))>0n&&await this.submitTransaction({operation:`approveUnderlying:reset`,config:p(n,this.address,0n)}),this.submitTransaction({operation:`approveUnderlying`,config:p(n,this.address,i)})}async unshield(e,t){let{skipBalanceCheck:n=!1,onUnwrapSubmitted:r,onFinalizing:i,onFinalizeSubmitted:a}=t??{};n||await this.assertConfidentialBalance(e);let o={onFinalizing:i,onFinalizeSubmitted:a},s=crypto.randomUUID(),c=await this.unwrap(e);return f(`unshield: onUnwrapSubmitted`,()=>r?.(c.txHash),this.sdk.logger),this.#s(c.txHash,s,o)}async unshieldAll(e){let t=crypto.randomUUID(),n=await this.unwrapAll();return f(`unshieldAll: onUnwrapSubmitted`,()=>e?.onUnwrapSubmitted?.(n.txHash),this.sdk.logger),this.#s(n.txHash,t,e)}async resumeUnshield(e,t){return this.#s(e,crypto.randomUUID(),t)}async unwrap(e){this.#r(`unwrap`);let t=O((await S(`unwrap`,this.sdk.signer,this.sdk.provider)).address),{encryptedValues:n,inputProof:r}=await this.sdk.encrypt({values:[{value:e,type:`euint64`}],contractAddress:this.address,userAddress:t}),[i]=n;if(!i)throw new h(`Encryption returned no encrypted values`);return this.submitTransaction({operation:`unwrap`,config:re(this.address,t,t,i,r)})}async unwrapAll(){this.#r(`unwrapAll`);let e=O((await S(`unwrapAll`,this.sdk.signer,this.sdk.provider)).address),t=await this.readConfidentialBalanceOf(e);if(y(t))throw new g(`Cannot unshield: balance is zero`);return this.submitTransaction({operation:`unwrapAll`,config:l(this.address,e,e,t)})}async finalizeUnwrap(e){this.#r(`finalizeUnwrap`),await v(`finalizeUnwrap`,this.sdk.signer,this.sdk.provider);let t=await this.sdk.decryption.decryptPublicValues([e]),n=t.clearValues[e];return st(n,`finalizeUnwrap: clearValue`),this.submitTransaction({operation:`finalizeUnwrap`,config:ne(this.address,e,n,t.decryptionProof)})}async#o(){return this.#e===void 0?(this.#t||=this.sdk.provider.readContract(te(this.address)).then(e=>(this.#e=e,this.#t=null,e)).catch(e=>{throw this.#t=null,e}),this.#t):this.#e}async#s(e,t,n){this.emit({type:x.UnshieldPhase1Submitted,txHash:e,operationId:t});let i;try{i=await this.sdk.provider.waitForTransactionReceipt(e)}catch(e){throw e instanceof r?e:new _(`Failed to get unshield receipt`,{cause:e})}let a=Yt(i.logs);if(!a)throw new _(`No UnwrapRequested event found in unshield receipt`);this.emit({type:x.UnshieldPhase2Started,operationId:t}),f(`unshield: onFinalizing`,()=>n?.onFinalizing?.(),this.sdk.logger);let o=await this.finalizeUnwrap(a.unwrapRequestId??a.encryptedAmount);return this.emit({type:x.UnshieldPhase2Submitted,txHash:o.txHash,operationId:t}),f(`unshield: onFinalizeSubmitted`,()=>n?.onFinalizeSubmitted?.(o.txHash),this.sdk.logger),o}async#c(e,t,n){this.#r(`approveUnderlying`);let r=await this.#o(),i=O((await S(`approveUnderlying`,this.sdk.signer,this.sdk.provider)).address),a=await this.sdk.provider.readContract(m(r,i,this.address));if(a>=e)return;a>0n&&await this.submitTransaction({operation:`approveUnderlying:reset`,config:p(r,this.address,0n)});let o=t?2n**256n-1n:e;await this.submitTransaction({operation:`approveUnderlying`,config:p(r,this.address,o),onSubmitted:n?.onApprovalSubmitted})}},rn=class{relayer;provider;signer;storage;registry;permits;delegations;decryption;#e;#t;#n;#r;#i;#a;#o;#s;#c;constructor(e){this.relayer=e.relayer,this.provider=e.provider,this.signer=e.signer,this.storage=e.storage,this.#t=e.onEvent??function(){},this.#n=e.logger,this.#r=new Mt(e.storage,this.#n),this.#c=new Vt({provider:this.provider,relayer:this.relayer,emitEvent:this.emitEvent.bind(this),logger:this.#n});let t={};for(let n of e.chains)n.registryAddress&&(t[n.id]=n.registryAddress);this.registry=new E({provider:this.provider,registryAddresses:t,registryTTL:e.registryTTL}),this.#e=e.registryTTL,e.signer&&(this.#s=new Xe({relayer:this.relayer,signer:e.signer,transportKeyPairTTL:e.transportKeyPairTTL,permitTTL:e.permitTTL,storage:this.storage,permitStorage:e.permitStorage,logger:this.#n}),this.#o=new Lt({cache:this.#r,credentialService:this.#s,delegationService:this.#c,relayer:this.relayer,emitEvent:this.emitEvent.bind(this)})),this.#a=new Ht({relayer:this.relayer,emitEvent:this.emitEvent.bind(this)}),this.#i=new Ut({signer:e.signer,relayer:this.relayer,cachingService:this.#r,credentialService:this.#s,logger:this.#n}),this.permits=new kt({signer:this.signer,provider:this.provider,cachingService:this.#r,credentialService:this.#s,logger:this.#n}),this.delegations=new Ot({signer:this.signer,provider:this.provider,delegationService:this.#c}),this.decryption=new Dt({signer:this.signer,provider:this.provider,relayer:this.relayer,decryptionService:this.#o})}onWalletAccountChange(e){return this.#i.onWalletAccountChange(e)}get logger(){return this.#n}emitEvent(e,t){try{this.#t({...e,tokenAddress:t,timestamp:Date.now()})}catch(t){this.#n.warn(`${e.type} event listener silently failed`,{error:t})}}createWrappersRegistry(e){return new E({provider:this.provider,registryAddresses:e,registryTTL:this.#e})}async encrypt(e){return this.#a.encrypt(e)}createToken(e){return new C(this,e)}createWrappedToken(e){return new Q(this,e)}dispose(){this.#i.dispose()}terminate(){this.dispose(),this.relayer.terminate(),this.signer?.dispose?.()}[Symbol.dispose](){this.terminate()}};function $(e){return`zama:pending-unshield:${tt(e)}`}const an=k.union([k.pipe(T,k.transform(e=>({unwrapTxHash:e}))),k.pipe(k.object({version:k.literal(1),unwrapTxHash:T,unwrapRequestId:k.optional(T)}),k.transform(({unwrapTxHash:e,unwrapRequestId:t})=>({unwrapTxHash:e,unwrapRequestId:t})))]);async function on(e,t,n,r){if(r===void 0){await e.set($(t),n);return}await e.set($(t),{version:1,unwrapTxHash:n,unwrapRequestId:r})}async function sn(e,t){return(await cn(e,t))?.unwrapTxHash??null}async function cn(e,t){let n=$(t),r=await e.get(n);if(r==null)return null;let i=an.safeParse(r);return i.success?i.data:(await e.delete(n),null)}async function ln(e,t){await e.delete($(t))}var un=class{async get(e){return(await chrome.storage.session.get(e))[e]??null}async set(e,t){await chrome.storage.session.set({[e]:t})}async delete(e){await chrome.storage.session.remove(e)}};const dn=new un;export{nn as ACL_TOPICS,St as AclPausedError,Y as AclTopics,Ie as BalanceCheckUnavailableError,et as BaseSigner,Ue as ChainMismatchError,un as ChromeSessionStorage,i as ConfigurationError,Dt as Decryption,g as DecryptionFailedError,Ke as DefaultRegistryAddresses,xt as DelegationContractIsSelfError,bt as DelegationCooldownError,F as DelegationDelegateEqualsContractError,I as DelegationExpirationTooSoonError,N as DelegationExpiredError,P as DelegationExpiryUnchangedError,M as DelegationNotFoundError,L as DelegationNotPropagatedError,j as DelegationSelfNotAllowedError,Ot as Delegations,pe as ERC1363_INTERFACE_ID,Fe as ERC20ReadFailedError,ye as ERC7984_INTERFACE_ID,De as ERC7984_WRAPPER_INTERFACE_ID,h as EncryptionFailedError,rt as IndexedDBStorage,je as InsufficientConfidentialBalanceError,He as InsufficientERC20BalanceError,yt as InvalidTransportKeyPairError,at as MemoryStorage,Ze as MutableWalletAccountStore,A as NoCiphertextError,kt as Permits,n as RelayerRequestFailedError,ie as SignerNotConfiguredError,Ae as SignerRequiredError,se as SigningFailedError,le as SigningRejectedError,Zt as TOKEN_TOPICS,C as Token,V as Topics,_ as TransactionRevertedError,vt as TransportKeyPairExpiredError,o as WalletAccountNotReadyError,ce as WalletNotConnectedError,Q as WrappedToken,E as WrappersRegistry,Be as ZERO_ENCRYPTED_VALUE,r as ZamaError,t as ZamaErrorCode,rn as ZamaSDK,x as ZamaSDKEvents,m as allowanceContract,ht as anvil,p as approveContract,ue as balanceOfContract,dt as bscTestnet,pt as chains,dn as chromeSessionStorage,ln as clearPendingUnshield,Ge as cleartext,ae as confidentialBalanceOfContract,s as confidentialTotalSupplyContract,oe as confidentialTransferContract,c as confidentialTransferFromContract,Et as createConfig,Qe as createWalletAccountStore,Oe as decimalsContract,Qt as decodeAclEvent,$t as decodeAclEvents,Gt as decodeConfidentialTransfer,X as decodeDelegatedForUserDecryption,qt as decodeOnChainEvent,Jt as decodeOnChainEvents,Z as decodeRevokedDelegationForUserDecryption,Kt as decodeUnwrapFinalized,J as decodeUnwrapRequested,q as decodeWrap,Ve as delegateForUserDecryptionContract,ne as finalizeUnwrapContract,en as findDelegatedForUserDecryption,tn as findRevokedDelegationForUserDecryption,Yt as findUnwrapRequested,Xt as findWrap,Ee as getConfidentialTokenAddressContract,Ne as getDelegationExpiryContract,xe as getTokenAddressContract,we as getTokenPairContract,ge as getTokenPairsContract,de as getTokenPairsLengthContract,Se as getTokenPairsSliceContract,ut as hardhat,ct as hoodi,nt as indexedDBStorage,ve as inferredTotalSupplyContract,ft as ingenTestnet,me as isConfidentialTokenContract,Te as isConfidentialTokenValidContract,he as isConfidentialWrapperContract,y as isEncryptedValueZero,Pe as isHandleDelegatedContract,a as isOperatorContract,sn as loadPendingUnshield,cn as loadPendingUnshieldRequest,mt as mainnet,e as matchZamaError,it as memoryStorage,fe as nameContract,_e as rateContract,$e as resolveChainRelayers,qe as resolveStorage,ze as revokeDelegationContract,on as savePendingUnshield,lt as sepolia,ee as setOperatorContract,be as supportsInterfaceContract,ke as symbolContract,Tt as transferAndCallContract,te as underlyingContract,re as unwrapContract,l as unwrapFromBalanceContract,d as wrapContract};
|
|
1
|
+
import{i as e,n as t,r as n,t as r}from"./relayer-D58i7vML.js";import{A as i,B as a,C as o,D as s,F as c,H as l,I as u,L as d,M as ee,N as te,O as ne,P as re,R as ie,S as ae,T as oe,U as se,V as ce,W as le,_ as ue,a as de,b as fe,c as pe,d as me,f as he,g as f,h as p,i as ge,j as _e,k as ve,l as ye,m as be,n as xe,o as Se,p as Ce,r as we,s as Te,t as Ee,u as De,v as Oe,x as ke,z as Ae}from"./wrappers-registry-CqIdVKtz.js";import{n as m,t as h}from"./encryption-BMUAutx-.js";import{_ as je,a as Me,b as g,c as _,d as Ne,f as Pe,g as Fe,h as Ie,i as v,l as y,m as Le,n as Re,o as b,p as x,r as ze,s as S,t as C,u as Be,v as Ve,y as He}from"./token-BPkJ_Cri.js";import{r as w,t as Ue}from"./error-W1N-FGwV.js";import{t as We}from"./cleartext-C4zqkAnd.js";import{a as Ge,c as Ke,d as qe,f as T,i as Je,l as Ye,n as Xe,o as E,r as Ze,s as Qe,t as $e,u as et}from"./base-signer-B-3qw-ge.js";import{n as tt,t as nt}from"./indexeddb-storage-Mi-fCWN3.js";import{n as rt,t as it}from"./memory-storage-fp9RY5BQ.js";import{i as at,t as ot}from"./assertions-CnPIS0VN.js";import{t as D}from"./hex-CxtyupeQ.js";import{a as st,c as ct,i as lt,n as ut,o as dt,r as ft,s as pt,t as mt}from"./chains-CXcO1DBP.js";import{getAddress as O,keccak256 as ht,toBytes as gt}from"viem";import{z as k}from"zod/mini";function _t(e,t){if(e instanceof n){let n=t[e.code];if(n)return n(e)}return t._?.(e)}var vt=class extends n{constructor(t,n){super(e.TransportKeyPairExpired,t,n),this.name=`TransportKeyPairExpiredError`}},yt=class extends n{constructor(t,n){super(e.InvalidTransportKeyPair,t,n),this.name=`InvalidTransportKeyPairError`}},A=class extends n{constructor(t,n){super(e.NoCiphertext,t,n),this.name=`NoCiphertextError`}},j=class extends n{constructor(t,n){super(e.DelegationSelfNotAllowed,t,n),this.name=`DelegationSelfNotAllowedError`}},bt=class extends n{constructor(t,n){super(e.DelegationCooldown,t,n),this.name=`DelegationCooldownError`}},M=class extends n{constructor(t,n){super(e.DelegationNotFound,t,n),this.name=`DelegationNotFoundError`}},N=class extends n{constructor(t,n){super(e.DelegationExpired,t,n),this.name=`DelegationExpiredError`}},P=class extends n{constructor(t,n){super(e.DelegationExpiryUnchanged,t,n),this.name=`DelegationExpiryUnchangedError`}},F=class extends n{constructor(t,n){super(e.DelegationDelegateEqualsContract,t,n),this.name=`DelegationDelegateEqualsContractError`}},xt=class extends n{constructor(t,n){super(e.DelegationContractIsSelf,t,n),this.name=`DelegationContractIsSelfError`}},St=class extends n{constructor(t,n){super(e.AclPaused,t,n),this.name=`AclPausedError`}},I=class extends n{constructor(t,n){super(e.DelegationExpirationTooSoon,t,n),this.name=`DelegationExpirationTooSoonError`}},L=class extends n{constructor(t,n){super(e.DelegationNotPropagated,t,n),this.name=`DelegationNotPropagatedError`}};function R(e,n,r=!1){if(e instanceof h||e instanceof A||e instanceof t||e instanceof L||e instanceof le||e instanceof se)return e;let i=Ue(e);return i===400?new A(e instanceof Error?e.message:`No ciphertext for this account`,{cause:e}):r&&i===500?new L(`Delegated decryption failed with a server error. This is most commonly caused by the delegation not having propagated to the gateway yet — after granting delegation, allow 1–2 minutes for cross-chain synchronization before retrying. If the error persists, the gateway or relayer may be experiencing an unrelated issue.`,{cause:e}):i===void 0?new h(n,{cause:e}):new t(e instanceof Error?e.message:n,i,{cause:e})}function Ct(e,r){if(e instanceof n)return e;let i=Ue(e);return i===void 0?new m(r,{cause:e}):new t(e instanceof Error?e.message:r,i,{cause:e})}const wt=[{type:`function`,name:`allowance`,inputs:[{name:`owner`,type:`address`,internalType:`address`},{name:`spender`,type:`address`,internalType:`address`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`approve`,inputs:[{name:`spender`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`approveAndCall`,inputs:[{name:`spender`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`approveAndCall`,inputs:[{name:`spender`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`},{name:`data`,type:`bytes`,internalType:`bytes`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`balanceOf`,inputs:[{name:`account`,type:`address`,internalType:`address`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`supportsInterface`,inputs:[{name:`interfaceId`,type:`bytes4`,internalType:`bytes4`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`totalSupply`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`transfer`,inputs:[{name:`to`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`transferAndCall`,inputs:[{name:`to`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`transferAndCall`,inputs:[{name:`to`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`},{name:`data`,type:`bytes`,internalType:`bytes`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`transferFrom`,inputs:[{name:`from`,type:`address`,internalType:`address`},{name:`to`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`transferFromAndCall`,inputs:[{name:`from`,type:`address`,internalType:`address`},{name:`to`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`},{name:`data`,type:`bytes`,internalType:`bytes`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`transferFromAndCall`,inputs:[{name:`from`,type:`address`,internalType:`address`},{name:`to`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`event`,name:`Approval`,inputs:[{name:`owner`,type:`address`,indexed:!0,internalType:`address`},{name:`spender`,type:`address`,indexed:!0,internalType:`address`},{name:`value`,type:`uint256`,indexed:!1,internalType:`uint256`}],anonymous:!1},{type:`event`,name:`Transfer`,inputs:[{name:`from`,type:`address`,indexed:!0,internalType:`address`},{name:`to`,type:`address`,indexed:!0,internalType:`address`},{name:`value`,type:`uint256`,indexed:!1,internalType:`uint256`}],anonymous:!1}];function Tt(e,t,n,r=`0x`){return{address:e,abi:wt,functionName:`transferAndCall`,args:[t,n,r]}}function Et(e){return Je(e.signer,e.provider,e)}var Dt=class{#e;#t;#n;#r;constructor(e){this.#e=e.signer,this.#t=e.provider,this.#n=e.relayer,this.#r=e.decryptionService}#i(e){return l(this.#r,e)}async decryptValues(e){let t=this.#i(`decryptValues`),n=await S(`decryptValues`,this.#e,this.#t);return t.userDecrypt(e,n.address)}async delegatedDecryptValues(e,t,n=t){let r=this.#i(`delegatedDecryptValues`),i=await S(`delegatedDecryptValues`,this.#e,this.#t);return r.delegatedUserDecrypt(e,t,i.address,n)}async decryptPublicValues(e){if(e.length===0)return{clearValues:{},decryptionProof:`0x`,abiEncodedClearValues:`0x`};try{return await this.#n.publicDecrypt(e)}catch(e){throw R(e,`Public decryption failed`)}}async delegatedBatchDecryptValues({encryptedInputs:e,delegatorAddress:t,accountAddress:n=t,maxConcurrency:r}){let i=this.#i(`delegatedBatchDecryptValues`),a=await S(`delegatedBatchDecryptValues`,this.#e,this.#t);return i.delegatedBatchDecryptHandlesAs({encryptedInputs:e,delegatorAddress:t,delegateAddress:a.address,accountAddress:n,maxConcurrency:r})}},Ot=class{#e;#t;#n;constructor(e){this.#e=e.signer,this.#t=e.provider,this.#n=e.delegationService}#r(e){return l(this.#e,e)}async delegateDecryption({contractAddress:e,delegateAddress:t,expirationDate:n}){let r=this.#r(`delegateDecryption`),i=await S(`delegateDecryption`,this.#e,this.#t);return this.#n.delegateDecryption(r,{contractAddress:e,delegateAddress:t,delegatorAddress:i.address,expirationDate:n})}async revokeDelegation({contractAddress:e,delegateAddress:t}){let n=this.#r(`revokeDelegation`),r=await S(`revokeDelegation`,this.#e,this.#t);return this.#n.revokeDelegation(n,{contractAddress:e,delegateAddress:t,delegatorAddress:r.address})}async isActive(e){return this.#n.isDelegated(e)}async getExpiry(e){return this.#n.getDelegationExpiry(e)}},kt=class{#e;#t;#n;#r;#i;constructor(e){this.#e=e.signer,this.#t=e.provider,this.#n=e.cachingService,this.#r=e.credentialService,this.#i=e.logger}#a(e){return l(this.#r,e)}async grantPermit(e){if(e.length===0)return;let t=this.#a(`grantPermit`);await _(`grantPermit`,this.#e,this.#t),await t.grantPermit(e)}async grantDelegationPermit(e,t){if(t.length===0)return;let n=this.#a(`grantDelegationPermit`);await _(`grantDelegationPermit`,this.#e,this.#t),await n.grantPermit(t,e)}async hasPermit(e){return this.#r?this.#r.hasPermit(e):!1}async hasDelegationPermit(e,t){return this.#r?this.#r.hasPermit(t,e):!1}async warmTransportKeyPair(){let e=this.#r;if(!e)return;let t=this.#e?.walletAccount.getSnapshot();t&&await e.warmTransportKeyPair(t.address)}async revokePermits(e){let t=this.#a(`revokePermits`),n=O((await S(`revokePermits`,this.#e,this.#t)).address);try{await t.revokePermits(e)}finally{await d(`clear decrypt cache`,()=>this.#n.clearForRequester(n),this.#i)}}async clear(){let e=this.#a(`clear`),t=O((await S(`clear`,this.#e,this.#t)).address);try{await e.clearCredentials()}finally{await d(`clear decrypt cache`,()=>this.#n.clearForRequester(t),this.#i)}}};const At=k.union([k.bigint(),k.boolean(),qe]),jt=k.array(k.string());var Mt=class{#e;#t;#n=`zama:decrypt`;#r=`${this.#n}:keys`;#i=Promise.resolve();constructor(e,t){this.#e=e,this.#t=t}async get(e,t,n){try{let r=this.#c(e,t,n),i=await this.#e.get(r);if(i===null)return null;let a=At.safeParse(i);return a.success?a.data:(await this.delete(e,t,n),null)}catch(e){return this.#t.warn(`CachingService.get failed`,{error:e}),null}}async set(e,t,n,r){try{let i=this.#c(e,t,n);await this.#e.set(i,r),this.#i=this.#i.then(()=>this.#u(i).catch(e=>{this.#t.warn(`CachingService index write failed`,{error:e})})),await this.#i}catch(e){this.#t.warn(`CachingService.set failed`,{error:e})}}async delete(e,t,n){let r=this.#c(e,t,n);this.#i=this.#i.then(()=>this.#a(r).catch(e=>{this.#t.warn(`CachingService.delete failed`,{error:e})})),await this.#i}async clearForRequester(e){this.#i=this.#i.then(()=>this.#o(e).catch(e=>{this.#t.warn(`CachingService.clearForRequester failed`,{error:e})})),await this.#i}async clearAll(){this.#i=this.#i.then(()=>this.#s().catch(e=>{this.#t.warn(`CachingService.clearAll failed`,{error:e})})),await this.#i}async#a(e){await this.#e.delete(e).catch(()=>{});let t=await this.#l(),n=t.filter(t=>t!==e);n.length!==t.length&&await this.#e.set(this.#r,n)}async#o(e){let t=O(e),n=`${this.#n}:${t}:`,r=await this.#l(),i=[],a=[];for(let e of r)e.startsWith(n)?i.push(e):a.push(e);await Promise.all(i.map(e=>this.#e.delete(e).catch(()=>{}))),await this.#e.set(this.#r,a)}async#s(){let e=await this.#l();await Promise.all(e.map(e=>this.#e.delete(e).catch(()=>{}))),await this.#e.delete(this.#r)}#c(e,t,n){return`${this.#n}:${O(e)}:${O(t)}:${n.toLowerCase()}`}async#l(){let e=await this.#e.get(this.#r);if(e===null)return[];let t=jt.safeParse(e);return t.success?t.data:(await this.#e.delete(this.#r).catch(()=>{}),[])}async#u(e){let t=await this.#l();t.includes(e)||(t.push(e),await this.#e.set(this.#r,t))}};function Nt(e,t){let n=It(e,t);if(!n)throw new h(`No permit covers contract ${t} after allow()`);return Ft(e,n)}function Pt(e,t){let n=It(e,t);if(!n)throw new h(`No delegated permit covers contract ${t} after allow()`);return{...Ft(e,n),delegatorAddress:n.delegatorAddress}}function Ft(e,t){return{signedContractAddresses:t.signedContractAddresses,privateKey:e.keypair.privateKey,publicKey:e.keypair.publicKey,signature:t.signature,startTimestamp:t.startTimestamp,durationDays:t.durationDays}}function It(e,t){let n=et(t);return e.permits.find(e=>e.signedContractAddresses.includes(n))}var Lt=class{#e;#t;#n;#r;#i;constructor({cache:e,credentialService:t,delegationService:n,relayer:r,emitEvent:i}){this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i}async userDecrypt(e,t){let n=O(t);return this.#a(e,{requesterAddress:n,resolveCredentials:e=>this.#t.grantPermit(e),decryptContract:async({credentials:e,contractAddress:t,encryptedValues:r})=>this.#r.userDecrypt({encryptedValues:r,contractAddress:t,...Nt(e,t),signerAddress:n}),errorMessage:`Failed to decrypt encrypted values`})}async delegatedUserDecrypt(e,t,n,r){let i=O(t),a=O(n);return this.#a(e,{requesterAddress:O(r),resolveCredentials:e=>this.#t.grantPermit(e,i),validate:e=>this.#l(e,{delegatorAddress:i,delegateAddress:a}),decryptContract:async({credentials:e,contractAddress:t,encryptedValues:n})=>this.#r.delegatedUserDecrypt({encryptedValues:n,contractAddress:t,...Pt(e,t),delegateAddress:a}),errorMessage:`Failed to decrypt delegated encrypted values`,delegated:!0})}async delegatedBatchDecryptHandlesAs({encryptedInputs:e,delegatorAddress:t,delegateAddress:n,accountAddress:r,maxConcurrency:i=5}){let a=e.map(e=>({encryptedValue:e.encryptedValue,contractAddress:O(e.contractAddress)}));if(a.length===0)return{items:a};let o=O(r);try{let e=await this.delegatedUserDecrypt(a.map(({encryptedValue:e,contractAddress:t})=>({encryptedValue:e,contractAddress:t})),t,n,o);for(let t of a)this.#o(t,e);return{items:a}}catch(e){if(Le(e))throw e;if(a.length===1){let[t=this.#c()]=a;return t.error=this.#s(e,`Failed to decrypt delegated encrypted values`,!0),{items:a}}}return await Me(a.map(e=>async()=>{try{let r=await this.delegatedUserDecrypt([{encryptedValue:e.encryptedValue,contractAddress:e.contractAddress}],t,n,o);this.#o(e,r)}catch(t){if(Le(t))throw t;e.error=this.#s(t,`Failed to decrypt delegated encrypted values`,!0)}}),i),{items:a}}async#a(e,t){if(e.length===0)return{};let n=e.map(e=>({encryptedValue:e.encryptedValue,contractAddress:O(e.contractAddress)})),r={},i=[];for(let e of n)v(e.encryptedValue)?r[e.encryptedValue]=0n:i.push(e);if(i.length===0)return r;let a=Array.from(new Set(n.map(e=>e.contractAddress))),o=Array.from(new Set(i.map(e=>e.contractAddress)));t.validate&&await t.validate(o);let s=[];for(let e of i){let n=await this.#e.get(t.requesterAddress,e.contractAddress,e.encryptedValue);n===null?s.push(e):r[e.encryptedValue]=n}if(s.length===0)return r;let c=await t.resolveCredentials(a),l=new Map;for(let e of s){let t=l.get(e.contractAddress);t?t.push(e.encryptedValue):l.set(e.contractAddress,[e.encryptedValue])}let u=Date.now(),d=s.map(e=>e.encryptedValue);try{this.#i({type:b.DecryptStart,encryptedValues:d}),await Me([...l.entries()].map(([e,n])=>async()=>{let i=await t.decryptContract({credentials:c,contractAddress:e,encryptedValues:n});for(let[n,a]of Object.entries(i))r[n]=a,await this.#e.set(t.requesterAddress,e,n,a)}),5);let e={};for(let t of d){let n=r[t];n!==void 0&&(e[t]=n)}return this.#i({type:b.DecryptEnd,durationMs:Date.now()-u,encryptedValues:d,result:e}),r}catch(e){throw this.#i({type:b.DecryptError,error:w(e),durationMs:Date.now()-u,encryptedValues:d}),R(e,t.errorMessage,t.delegated)}}#o(e,t){let n=t[e.encryptedValue];if(n===void 0){e.error=new h(`Batch delegated decryption returned no value for encrypted value ${e.encryptedValue} on contract ${e.contractAddress}`);return}e.value=n}#s(e,t,r=!1){return e instanceof n?e:R(e,t,r)}#c(){throw new h(`Batch delegated decryption invariant failed: missing item`)}async#l(e,{delegatorAddress:t,delegateAddress:n}){let r=await this.#n.findInactiveDelegations(e,t,n);if(r.size!==0)for(let e of r.values())throw e}};function Rt(e){if(!(e instanceof Error))return null;let t=e.cause;if(typeof t!=`object`||!t||!(`data`in t))return null;let{data:n}=t;return typeof n!=`object`||!n||!(`errorName`in n)?null:typeof n.errorName==`string`?n.errorName:null}const z={AlreadyDelegatedOrRevokedInSameBlock:e=>new bt(`Only one delegate/revoke per (delegator, delegate, contract) per block. Wait for the next block before retrying.`,{cause:e}),SenderCannotBeContractAddress:e=>new xt(`The contract address cannot be the caller address.`,{cause:e}),EnforcedPause:e=>new St(`The ACL contract is paused. Delegation operations are temporarily disabled.`,{cause:e}),SenderCannotBeDelegate:e=>new j(`Cannot delegate to yourself (delegate === msg.sender).`,{cause:e}),DelegateCannotBeContractAddress:e=>new F(`Delegate address cannot be the same as the contract address.`,{cause:e}),ExpirationDateBeforeOneHour:e=>new I(`Expiration date must be at least 1 hour in the future.`,{cause:e}),ExpirationDateAlreadySetToSameValue:e=>new P(`The new expiration date is the same as the current one.`,{cause:e}),NotDelegatedYet:e=>new M(`Cannot revoke: no active delegation exists.`,{cause:e})};function zt(e){return e in z}function Bt(e,t){let n=Rt(e);if(n&&zt(n))return z[n](t);let r=e instanceof Error?e.message:String(e);for(let[e,n]of Object.entries(z))if(r.includes(e))return n(t);return null}var Vt=class{#e;#t;#n;#r;constructor({provider:e,relayer:t,emitEvent:n=()=>{},logger:r}){this.#e=e,this.#t=t,this.#r=r,this.#n=n}async delegateDecryption(e,{contractAddress:t,delegateAddress:n,delegatorAddress:r,expirationDate:i}){if(i&&i.getTime()<Date.now()+36e5)throw new I(`Expiration date must be at least 1 hour in the future`);let a=O(t),o=O(n),s=O(r);if(o===s)throw new j(`Cannot delegate to yourself (delegate === msg.sender).`);if(o===a)throw new F(`Delegate address cannot be the same as the contract address (${a}).`);let c=await this.#t.getAclAddress(),l=i?BigInt(Math.floor(i.getTime()/1e3)):y,u;try{u=await this.getDelegationExpiry({contractAddress:a,delegatorAddress:s,delegateAddress:o})}catch(e){this.#r.warn(`delegateDecryption: pre-flight expiry check failed`,{error:e}),u=-1n}if(u===l)throw new P(`The new expiration date (${l}) is the same as the current one. No on-chain change needed.`);return this.#i({operation:`delegateDecryption`,signer:e,contractAddress:t,config:Be(c,o,a,l)})}async revokeDelegation(e,{contractAddress:t,delegateAddress:n,delegatorAddress:r}){let i=O(t),a=O(n),o=O(r),s=await this.#t.getAclAddress(),c;try{c=await this.getDelegationExpiry({contractAddress:i,delegatorAddress:o,delegateAddress:a})}catch(e){this.#r.warn(`revokeDelegation: pre-flight expiry check failed`,{error:e}),c=1n}if(c===0n)throw new M(`No active delegation found for delegate ${a} on contract ${i}.`);return this.#i({operation:`revokeDelegation`,signer:e,contractAddress:t,config:x(s,a,i)})}async isDelegated(e){let t=await this.getDelegationExpiry(e);return t===0n?!1:t===y?!0:t>await this.#e.getBlockTimestamp()}async getDelegationExpiry({contractAddress:e,delegatorAddress:t,delegateAddress:n}){let r=await this.#t.getAclAddress();return this.#e.readContract(Ne(r,O(t),O(n),O(e)))}async#i({operation:e,signer:t,contractAddress:n,config:r}){try{return await Re({operation:e,signer:t,provider:this.#e,config:r,emit:e=>this.#n(e,n),logger:this.#r})}catch(e){throw this.#a(e),e}}#a(e){if(!(e instanceof g))return;let t=Bt(e.cause??e,e);if(t)throw t}async findInactiveDelegations(e,t,n){let r=new Map;return await Promise.all(e.map(async e=>{try{await this.assertDelegationActive(e,t,n)}catch(t){if(t instanceof M||t instanceof N){let n=O(e);r.set(n,t);return}throw t}})),r}async assertDelegationActive(e,t,n){let r=O(e),i=O(t),a=O(n),o=await this.getDelegationExpiry({contractAddress:r,delegatorAddress:i,delegateAddress:a});if(o===0n)throw new M(`No active delegation from ${i} to ${a} for ${r}`);if(o!==y&&o<=await this.#e.getBlockTimestamp())throw new N(`Delegation from ${i} to ${a} for ${r} has expired`)}},Ht=class{#e;#t;constructor({relayer:e,emitEvent:t}){this.#e=e,this.#t=t}async encrypt(e){let t=Date.now();try{this.#t({type:b.EncryptStart},e.contractAddress);let n=await this.#e.encrypt(e);return this.#t({type:b.EncryptEnd,durationMs:Date.now()-t},e.contractAddress),n}catch(n){throw this.#t({type:b.EncryptError,error:w(n),durationMs:Date.now()-t},e.contractAddress),Ct(n,`Encryption failed`)}}},Ut=class{#e;#t;#n;#r;#i;#a=new Set;#o;constructor(e){this.#e=e.signer,this.#t=e.relayer,this.#n=e.cachingService,this.#r=e.credentialService,this.#i=e.logger,this.#e&&(this.#o=this.#e.walletAccount.subscribe(e=>{this.#s(e).catch(e=>{this.#i.warn(`wallet account handler failed`,{error:e})})}))}onWalletAccountChange(e){return this.#a.add(e),()=>{this.#a.delete(e)}}dispose(){this.#o?.(),this.#o=void 0,this.#a.clear()}async#s(e){let t=e.previous,n=e.next,r=n?.chainId;r!==void 0&&await d(`switch relayer chain`,()=>this.#t.switchChain(r),this.#i);let i=this.#r;i&&await d(`credential wallet account change`,()=>i.handleWalletAccountChange(t,n),this.#i),t&&await d(`clear decrypt cache`,()=>this.#n.clearForRequester(t.address),this.#i),await Promise.all(Array.from(this.#a,t=>d(`wallet account listener`,()=>t(e),this.#i)))}};function B(e){return ht(gt(e))}const V={ConfidentialTransfer:B(`ConfidentialTransfer(address,address,bytes32)`),Wrap:B(`Wrap(address,uint256,bytes32)`),UnwrapRequested:B(`UnwrapRequested(address,bytes32,bytes32)`),UnwrapFinalized:B(`UnwrapFinalized(address,bytes32,bytes32,uint64)`)};function H(e){return O(D(e.slice(-40)))}function U(e){return e}function W(e,t){let n=2+t*64,r=e.slice(n,n+64);return r.length===64?r:r.padEnd(64,`0`)}function Wt(e,t){return O(D(W(e,t).slice(-40)))}function G(e,t){return BigInt(`0x`+W(e,t))}function K(e,t){return D(W(e,t))}function Gt(e){return e.topics[0]!==V.ConfidentialTransfer||e.topics.length<4?null:{eventName:`ConfidentialTransfer`,from:H(e.topics[1]),to:H(e.topics[2]),encryptedAmount:U(e.topics[3])}}function q(e){return e.topics[0]!==V.Wrap||e.topics.length<2?null:{eventName:`Wrap`,to:H(e.topics[1]),roundedAmount:G(e.data,0),encryptedWrappedAmount:K(e.data,1)}}function J(e){return e.topics[0]!==V.UnwrapRequested||e.topics.length<3?null:{eventName:`UnwrapRequested`,receiver:H(e.topics[1]),unwrapRequestId:U(e.topics[2]),encryptedAmount:K(e.data,0)}}function Y(e){return e.topics[0]!==V.UnwrapFinalized||e.topics.length<3?null:{eventName:`UnwrapFinalized`,receiver:H(e.topics[1]),unwrapRequestId:U(e.topics[2]),encryptedAmount:K(e.data,0),cleartextAmount:G(e.data,1)}}function Kt(e){return Gt(e)??q(e)??J(e)??Y(e)}function qt(e){let t=[];for(let n of e){let e=Kt(n);e&&t.push(e)}return t}function Jt(e){for(let t of e){let e=J(t);if(e)return e}return null}function Yt(e){for(let t of e){let e=q(t);if(e)return e}return null}const Xt=[V.ConfidentialTransfer,V.Wrap,V.UnwrapRequested,V.UnwrapFinalized],X={DelegatedForUserDecryption:B(`DelegatedForUserDecryption(address,address,address,uint64,uint64,uint64)`),RevokedDelegationForUserDecryption:B(`RevokedDelegationForUserDecryption(address,address,address,uint64,uint64)`)};function Z(e){return e.topics[0]!==X.DelegatedForUserDecryption||e.topics.length<3?null:{eventName:`DelegatedForUserDecryption`,delegator:H(e.topics[1]),delegate:H(e.topics[2]),contractAddress:Wt(e.data,0),delegationCounter:G(e.data,1),oldExpirationDate:G(e.data,2),newExpirationDate:G(e.data,3)}}function Q(e){return e.topics[0]!==X.RevokedDelegationForUserDecryption||e.topics.length<3?null:{eventName:`RevokedDelegationForUserDecryption`,delegator:H(e.topics[1]),delegate:H(e.topics[2]),contractAddress:Wt(e.data,0),delegationCounter:G(e.data,1),oldExpirationDate:G(e.data,2)}}function Zt(e){return Z(e)??Q(e)}function Qt(e){let t=[];for(let n of e){let e=Zt(n);e&&t.push(e)}return t}function $t(e){for(let t of e){let e=Z(t);if(e)return e}return null}function en(e){for(let t of e){let e=Q(t);if(e)return e}return null}const tn=[X.DelegatedForUserDecryption,X.RevokedDelegationForUserDecryption];var nn=class extends C{#e;#t=null;#n=null;#r(e){try{return at(this.sdk.signer,`WrappedToken.sdk.signer`),this.sdk.signer}catch(t){throw new ie(e,{cause:t})}}async underlying(){return this.#o()}async isPayable(){if(this.#n!==null)return this.#n;try{let e=await this.#o();this.#n=await this.sdk.provider.readContract(Ce(e))}catch{this.#n=!1}return this.#n}async allowance(e){let t=await this.#o();return this.sdk.provider.readContract(p(t,O(e),this.address))}async shield(e,t){let r=await S(`shield`,this.sdk.signer,this.sdk.provider),i=await this.isPayable(),a=await this.#o(),o=O(r.address),s;try{s=await this.sdk.provider.readContract(ue(a,o))}catch(e){throw e instanceof n?e:new Fe(`Could not read ERC-20 balance for shield validation (token: ${a})`,{cause:w(e)})}if(s<e)throw new Ve(`Insufficient ERC-20 balance: requested ${e}, available ${s} (token: ${a})`,{requested:e,available:s,token:a});return i?this.#i(e,a,o,t):this.#a(e,o,t)}async#i(e,t,n,r){this.#r(`shield`);let i=r?.to?O(r.to):n,a=i===n?`0x`:i;return this.submitTransaction({operation:`shield:transferAndCall`,config:Tt(t,this.address,e,a),onSubmitted:r?.onShieldSubmitted})}async#a(e,t,n){this.#r(`shield`);let r=n?.approvalStrategy??`exact`;r!==`skip`&&await this.#c(e,r===`max`,n);let i=n?.to?O(n.to):t;return this.submitTransaction({operation:`shield:approveAndWrap`,config:u(this.address,i,e),onSubmitted:n?.onShieldSubmitted})}async approveUnderlying(e){this.#r(`approveUnderlying`);let t=await S(`approveUnderlying`,this.sdk.signer,this.sdk.provider),n=await this.#o(),r=O(t.address),i=e??2n**256n-1n;return i>0n&&await this.sdk.provider.readContract(p(n,r,this.address))>0n&&await this.submitTransaction({operation:`approveUnderlying:reset`,config:f(n,this.address,0n)}),this.submitTransaction({operation:`approveUnderlying`,config:f(n,this.address,i)})}async unshield(e,t){let{skipBalanceCheck:n=!1,onUnwrapSubmitted:r,onFinalizing:i,onFinalizeSubmitted:a}=t??{};n||await this.assertConfidentialBalance(e);let o={onFinalizing:i,onFinalizeSubmitted:a},s=crypto.randomUUID(),c=await this.unwrap(e);return d(`unshield: onUnwrapSubmitted`,()=>r?.(c.txHash),this.sdk.logger),this.#s(c.txHash,s,o)}async unshieldAll(e){let t=crypto.randomUUID(),n=await this.unwrapAll();return d(`unshieldAll: onUnwrapSubmitted`,()=>e?.onUnwrapSubmitted?.(n.txHash),this.sdk.logger),this.#s(n.txHash,t,e)}async resumeUnshield(e,t){return this.#s(e,crypto.randomUUID(),t)}async unwrap(e){this.#r(`unwrap`);let t=O((await S(`unwrap`,this.sdk.signer,this.sdk.provider)).address),{encryptedValues:n,inputProof:r}=await this.sdk.encrypt({values:[{value:e,type:`euint64`}],contractAddress:this.address,userAddress:t}),[i]=n;if(!i)throw new m(`Encryption returned no encrypted values`);return this.submitTransaction({operation:`unwrap`,config:re(this.address,t,t,i,r)})}async unwrapAll(){this.#r(`unwrapAll`);let e=O((await S(`unwrapAll`,this.sdk.signer,this.sdk.provider)).address),t=await this.readConfidentialBalanceOf(e);if(v(t))throw new h(`Cannot unshield: balance is zero`);return this.submitTransaction({operation:`unwrapAll`,config:c(this.address,e,e,t)})}async finalizeUnwrap(e){this.#r(`finalizeUnwrap`),await _(`finalizeUnwrap`,this.sdk.signer,this.sdk.provider);let t=await this.sdk.decryption.decryptPublicValues([e]),n=t.clearValues[e];return ot(n,`finalizeUnwrap: clearValue`),this.submitTransaction({operation:`finalizeUnwrap`,config:ne(this.address,e,n,t.decryptionProof)})}async#o(){return this.#e===void 0?(this.#t||=this.sdk.provider.readContract(te(this.address)).then(e=>(this.#e=e,this.#t=null,e)).catch(e=>{throw this.#t=null,e}),this.#t):this.#e}async#s(e,t,r){this.emit({type:b.UnshieldPhase1Submitted,txHash:e,operationId:t});let i;try{i=await this.sdk.provider.waitForTransactionReceipt(e)}catch(e){throw e instanceof n?e:new g(`Failed to get unshield receipt`,{cause:e})}let a=Jt(i.logs);if(!a)throw new g(`No UnwrapRequested event found in unshield receipt`);this.emit({type:b.UnshieldPhase2Started,operationId:t}),d(`unshield: onFinalizing`,()=>r?.onFinalizing?.(),this.sdk.logger);let o=await this.finalizeUnwrap(a.unwrapRequestId??a.encryptedAmount);return this.emit({type:b.UnshieldPhase2Submitted,txHash:o.txHash,operationId:t}),d(`unshield: onFinalizeSubmitted`,()=>r?.onFinalizeSubmitted?.(o.txHash),this.sdk.logger),o}async#c(e,t,n){this.#r(`approveUnderlying`);let r=await this.#o(),i=O((await S(`approveUnderlying`,this.sdk.signer,this.sdk.provider)).address),a=await this.sdk.provider.readContract(p(r,i,this.address));if(a>=e)return;a>0n&&await this.submitTransaction({operation:`approveUnderlying:reset`,config:f(r,this.address,0n)});let o=t?2n**256n-1n:e;await this.submitTransaction({operation:`approveUnderlying`,config:f(r,this.address,o),onSubmitted:n?.onApprovalSubmitted})}},rn=class{relayer;provider;signer;storage;registry;permits;delegations;decryption;#e;#t;#n;#r;#i;#a;#o;#s;#c;constructor(e){this.relayer=e.relayer,this.provider=e.provider,this.signer=e.signer,this.storage=e.storage,this.#t=e.onEvent??function(){},this.#n=e.logger,this.#r=new Mt(e.storage,this.#n),this.#c=new Vt({provider:this.provider,relayer:this.relayer,emitEvent:this.emitEvent.bind(this),logger:this.#n});let t={};for(let n of e.chains)n.registryAddress&&(t[n.id]=n.registryAddress);this.registry=new E({provider:this.provider,registryAddresses:t,registryTTL:e.registryTTL}),this.#e=e.registryTTL,e.signer&&(this.#s=new Ye({relayer:this.relayer,signer:e.signer,transportKeyPairTTL:e.transportKeyPairTTL,permitTTL:e.permitTTL,storage:this.storage,permitStorage:e.permitStorage,logger:this.#n}),this.#o=new Lt({cache:this.#r,credentialService:this.#s,delegationService:this.#c,relayer:this.relayer,emitEvent:this.emitEvent.bind(this)})),this.#a=new Ht({relayer:this.relayer,emitEvent:this.emitEvent.bind(this)}),this.#i=new Ut({signer:e.signer,relayer:this.relayer,cachingService:this.#r,credentialService:this.#s,logger:this.#n}),this.permits=new kt({signer:this.signer,provider:this.provider,cachingService:this.#r,credentialService:this.#s,logger:this.#n}),this.delegations=new Ot({signer:this.signer,provider:this.provider,delegationService:this.#c}),this.decryption=new Dt({signer:this.signer,provider:this.provider,relayer:this.relayer,decryptionService:this.#o})}onWalletAccountChange(e){return this.#i.onWalletAccountChange(e)}get logger(){return this.#n}emitEvent(e,t){try{this.#t({...e,tokenAddress:t,timestamp:Date.now()})}catch(t){this.#n.warn(`${e.type} event listener silently failed`,{error:t})}}createWrappersRegistry(e){return new E({provider:this.provider,registryAddresses:e,registryTTL:this.#e})}async encrypt(e){return this.#a.encrypt(e)}createToken(e){return new C(this,e)}createWrappedToken(e){return new nn(this,e)}dispose(){this.#i.dispose()}terminate(){this.dispose(),this.relayer.terminate(),this.signer?.dispose?.()}[Symbol.dispose](){this.terminate()}};function $(e){return`zama:pending-unshield:${et(e)}`}const an=k.union([k.pipe(T,k.transform(e=>({unwrapTxHash:e}))),k.pipe(k.object({version:k.literal(1),unwrapTxHash:T,unwrapRequestId:k.optional(T)}),k.transform(({unwrapTxHash:e,unwrapRequestId:t})=>({unwrapTxHash:e,unwrapRequestId:t})))]);async function on(e,t,n,r){if(r===void 0){await e.set($(t),n);return}await e.set($(t),{version:1,unwrapTxHash:n,unwrapRequestId:r})}async function sn(e,t){return(await cn(e,t))?.unwrapTxHash??null}async function cn(e,t){let n=$(t),r=await e.get(n);if(r==null)return null;let i=an.safeParse(r);return i.success?i.data:(await e.delete(n),null)}async function ln(e,t){await e.delete($(t))}var un=class{async get(e){return(await chrome.storage.session.get(e))[e]??null}async set(e,t){await chrome.storage.session.set({[e]:t})}async delete(e){await chrome.storage.session.remove(e)}};const dn=new un;export{tn as ACL_TOPICS,St as AclPausedError,X as AclTopics,Ie as BalanceCheckUnavailableError,$e as BaseSigner,He as ChainMismatchError,un as ChromeSessionStorage,r as ConfigurationError,Dt as Decryption,h as DecryptionFailedError,Ge as DefaultRegistryAddresses,xt as DelegationContractIsSelfError,bt as DelegationCooldownError,F as DelegationDelegateEqualsContractError,I as DelegationExpirationTooSoonError,N as DelegationExpiredError,P as DelegationExpiryUnchangedError,M as DelegationNotFoundError,L as DelegationNotPropagatedError,j as DelegationSelfNotAllowedError,Ot as Delegations,pe as ERC1363_INTERFACE_ID,Fe as ERC20ReadFailedError,ye as ERC7984_INTERFACE_ID,De as ERC7984_WRAPPER_INTERFACE_ID,m as EncryptionFailedError,nt as IndexedDBStorage,je as InsufficientConfidentialBalanceError,Ve as InsufficientERC20BalanceError,yt as InvalidTransportKeyPairError,it as MemoryStorage,Xe as MutableWalletAccountStore,A as NoCiphertextError,kt as Permits,t as RelayerRequestFailedError,ie as SignerNotConfiguredError,Ae as SignerRequiredError,se as SigningFailedError,le as SigningRejectedError,Xt as TOKEN_TOPICS,C as Token,V as Topics,g as TransactionRevertedError,vt as TransportKeyPairExpiredError,a as WalletAccountNotReadyError,ce as WalletNotConnectedError,nn as WrappedToken,E as WrappersRegistry,ze as ZERO_ENCRYPTED_VALUE,n as ZamaError,e as ZamaErrorCode,rn as ZamaSDK,b as ZamaSDKEvents,p as allowanceContract,mt as anvil,f as approveContract,ue as balanceOfContract,ut as bscTestnet,ft as chains,dn as chromeSessionStorage,ln as clearPendingUnshield,We as cleartext,ae as confidentialBalanceOfContract,o as confidentialTotalSupplyContract,oe as confidentialTransferContract,s as confidentialTransferFromContract,Et as createConfig,Ze as createWalletAccountStore,Oe as decimalsContract,Zt as decodeAclEvent,Qt as decodeAclEvents,Gt as decodeConfidentialTransfer,Z as decodeDelegatedForUserDecryption,Kt as decodeOnChainEvent,qt as decodeOnChainEvents,Q as decodeRevokedDelegationForUserDecryption,Y as decodeUnwrapFinalized,J as decodeUnwrapRequested,q as decodeWrap,Be as delegateForUserDecryptionContract,ne as finalizeUnwrapContract,$t as findDelegatedForUserDecryption,en as findRevokedDelegationForUserDecryption,Jt as findUnwrapRequested,Yt as findWrap,Ee as getConfidentialTokenAddressContract,Ne as getDelegationExpiryContract,xe as getTokenAddressContract,we as getTokenPairContract,ge as getTokenPairsContract,de as getTokenPairsLengthContract,Se as getTokenPairsSliceContract,lt as hardhat,st as hoodi,tt as indexedDBStorage,ve as inferredTotalSupplyContract,dt as ingenTestnet,me as isConfidentialTokenContract,Te as isConfidentialTokenValidContract,he as isConfidentialWrapperContract,v as isEncryptedValueZero,Pe as isHandleDelegatedContract,i as isOperatorContract,sn as loadPendingUnshield,cn as loadPendingUnshieldRequest,pt as mainnet,_t as matchZamaError,rt as memoryStorage,fe as nameContract,_e as rateContract,Qe as resolveChainRelayers,Ke as resolveStorage,x as revokeDelegationContract,on as savePendingUnshield,ct as sepolia,ee as setOperatorContract,be as supportsInterfaceContract,ke as symbolContract,Tt as transferAndCallContract,te as underlyingContract,re as unwrapContract,c as unwrapFromBalanceContract,u as wrapContract};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|