@zama-fhe/sdk 3.4.0 → 3.5.0-alpha.1
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/README.md +1 -1
- package/dist/cjs/base-signer.cjs +1 -1
- package/dist/cjs/base-signer.cjs.map +1 -1
- package/dist/cjs/chains/index.cjs +1 -1
- package/dist/cjs/chains.cjs +1 -1
- package/dist/cjs/chains.cjs.map +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/node/index.cjs +1 -1
- package/dist/esm/base-signer-BGEnALwn.js +2 -0
- package/dist/esm/{base-signer-YpkEmlp2.js.map → base-signer-BGEnALwn.js.map} +1 -1
- package/dist/esm/{base-signer-BvL-jMNO.d.ts → base-signer-rvOfr9wl.d.ts} +2 -2
- package/dist/esm/chains/index.d.ts +2 -2
- package/dist/esm/chains/index.js +1 -1
- package/dist/esm/chains-BoqPSzrs.js +2 -0
- package/dist/esm/chains-BoqPSzrs.js.map +1 -0
- package/dist/esm/cleartext/index.d.ts +2 -2
- package/dist/esm/{cleartext-CxlICeUh.d.ts → cleartext-CT4qh3Ra.d.ts} +2 -2
- package/dist/esm/ethers/index.d.ts +4 -4
- package/dist/esm/ethers/index.js +1 -1
- package/dist/esm/{index-DNofJMCK.d.ts → index-BYF_r0pl.d.ts} +4 -4
- package/dist/esm/{index-S6_V7aAH.d.ts → index-SfbUoPTf.d.ts} +19 -4
- package/dist/esm/{index-DLaQtvYu.d.ts → index-bro9lghR.d.ts} +7 -7
- package/dist/esm/index.d.ts +8 -8
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/node/index.d.ts +5 -5
- package/dist/esm/node/index.js +1 -1
- package/dist/esm/node/index.js.map +1 -1
- package/dist/esm/query/index.d.ts +4 -4
- package/dist/esm/{types-CWPSTRF6.d.ts → types-BiA5rWAw.d.ts} +2 -2
- package/dist/esm/{types-BEz-VgR_.d.ts → types-C24EbhTi.d.ts} +3 -3
- package/dist/esm/{types-Dr7AmEs1.d.ts → types-CPJdosAz.d.ts} +3 -3
- package/dist/esm/viem/index.d.ts +4 -4
- package/dist/esm/viem/index.js +1 -1
- package/dist/esm/web/index.d.ts +1 -1
- package/package.json +1 -1
- package/dist/esm/base-signer-YpkEmlp2.js +0 -2
- package/dist/esm/chains-CLv9HEJ_.js +0 -2
- package/dist/esm/chains-CLv9HEJ_.js.map +0 -1
package/dist/esm/node/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as hoodi, c as
|
|
2
|
-
import { Ft as DecryptPublicValuesResult, Gt as FhevmRuntimeConfig, Kt as RelayerOptions, Lt as EIP712TypedData, Pt as ClearValue, Rt as EncryptInput, Ut as FhevmClientOptions, Vt as EncryptedValue, Wt as FhevmRelayerOptions, c as GenericStorage, n as RelayerConfig, s as GenericLogger, t as CleartextRelayerConfig, zt as EncryptParams } from "../types-
|
|
3
|
-
import { t as cleartext } from "../cleartext-
|
|
4
|
-
import { i as node, n as asyncLocalStorage, r as NodeRelayerConfig, t as AsyncLocalMapStorage } from "../index-
|
|
5
|
-
export { AsyncLocalMapStorage, type ClearValue, type CleartextRelayerConfig, type DecryptPublicValuesResult, type EIP712TypedData, type EncryptInput, type EncryptParams, type EncryptedValue, type FheChain, type FheChainAuth, type FhevmClientOptions, type FhevmRelayerOptions, type FhevmRuntimeConfig, type GenericLogger, type GenericStorage, type NodeRelayerConfig, type RelayerConfig, type RelayerOptions, anvil, asyncLocalStorage, bscTestnet, chains, cleartext, hardhat, hoodi, ingenTestnet, mainnet, node, sepolia };
|
|
1
|
+
import { a as hoodi, c as polygonAmoy, d as FheChain, f as FheChainAuth, i as hardhat, l as sepolia, n as bscTestnet, o as ingenTestnet, r as chains, s as mainnet, t as anvil } from "../index-SfbUoPTf.js";
|
|
2
|
+
import { Ft as DecryptPublicValuesResult, Gt as FhevmRuntimeConfig, Kt as RelayerOptions, Lt as EIP712TypedData, Pt as ClearValue, Rt as EncryptInput, Ut as FhevmClientOptions, Vt as EncryptedValue, Wt as FhevmRelayerOptions, c as GenericStorage, n as RelayerConfig, s as GenericLogger, t as CleartextRelayerConfig, zt as EncryptParams } from "../types-BiA5rWAw.js";
|
|
3
|
+
import { t as cleartext } from "../cleartext-CT4qh3Ra.js";
|
|
4
|
+
import { i as node, n as asyncLocalStorage, r as NodeRelayerConfig, t as AsyncLocalMapStorage } from "../index-BYF_r0pl.js";
|
|
5
|
+
export { AsyncLocalMapStorage, type ClearValue, type CleartextRelayerConfig, type DecryptPublicValuesResult, type EIP712TypedData, type EncryptInput, type EncryptParams, type EncryptedValue, type FheChain, type FheChainAuth, type FhevmClientOptions, type FhevmRelayerOptions, type FhevmRuntimeConfig, type GenericLogger, type GenericStorage, type NodeRelayerConfig, type RelayerConfig, type RelayerOptions, anvil, asyncLocalStorage, bscTestnet, chains, cleartext, hardhat, hoodi, ingenTestnet, mainnet, node, polygonAmoy, sepolia };
|
package/dist/esm/node/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"../fhevm-relayer-4Zd4QkKq.js";import{t}from"../cleartext-Qqh5JohW.js";import{a as n,c as r,i,
|
|
1
|
+
import{t as e}from"../fhevm-relayer-4Zd4QkKq.js";import{t}from"../cleartext-Qqh5JohW.js";import{a as n,c as r,i,l as a,n as o,o as s,r as c,s as l,t as u}from"../chains-BoqPSzrs.js";import{AsyncLocalStorage as d}from"node:async_hooks";function f(t){return{type:`node`,createRelayer:n=>new e({chain:n,options:t})}}var p=class{#e=new d;run(e){return this.#e.run(new Map,e)}async get(e){return this.#e.getStore()?.get(e)??null}async set(e,t){this.#e.getStore()?.set(e,t)}async delete(e){this.#e.getStore()?.delete(e)}};const m=new p;export{p as AsyncLocalMapStorage,u as anvil,m as asyncLocalStorage,o as bscTestnet,c as chains,t as cleartext,i as hardhat,n as hoodi,s as ingenTestnet,l as mainnet,f as node,r as polygonAmoy,a as sepolia};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["#als"],"sources":["../../../src/node/config.ts","../../../src/storage/async-local-storage.ts"],"sourcesContent":["import type { FheChain } from \"../chains/types\";\nimport type { RelayerConfig } from \"../config/types\";\nimport { FhevmRelayer } from \"../relayer/fhevm-relayer\";\nimport type { RelayerOptions } from \"../relayer/types\";\n\n/** Node transport — drives the FHE backend directly on the calling thread. */\nexport interface NodeRelayerConfig extends RelayerConfig {\n /** Discriminant for the node transport. */\n readonly type: \"node\";\n /** @internal */\n readonly createRelayer: (chain: FheChain) => FhevmRelayer;\n}\n\n/**\n * Node.js transport — drives `@fhevm/sdk` via {@link FhevmRelayer} on the calling thread.\n *\n * @example\n * ```ts\n * relayers: {\n * [sepolia.id]: node({ timeout: 5 * 60_000 }),\n * [mainnet.id]: node({ batchRpcCalls: true }),\n * }\n * ```\n */\nexport function node(options?: RelayerOptions): NodeRelayerConfig {\n return { type: \"node\", createRelayer: (chain) => new FhevmRelayer({ chain, options }) };\n}\n","import { AsyncLocalStorage } from \"node:async_hooks\";\nimport type { GenericStorage } from \"../types\";\n\n/**\n * {@link GenericStorage} backed by Node.js {@link AsyncLocalStorage}.\n *\n * Each async context (e.g. HTTP request) gets its own isolated `Map`,\n * so credentials from one request never leak into another.\n *\n * Call {@link run} to establish a context before using the SDK:\n *\n * ```ts\n * import { asyncLocalStorage } from \"@zama-fhe/sdk/node\";\n *\n * app.post(\"/api/transfer\", (req, res) => {\n * asyncLocalStorage.run(async () => {\n * const sdk = new ZamaSDK({ relayer, signer, storage: asyncLocalStorage });\n * // credentials are scoped to this request\n * });\n * });\n * ```\n */\nexport class AsyncLocalMapStorage implements GenericStorage {\n readonly #als = new AsyncLocalStorage<Map<string, unknown>>();\n\n /** Execute `fn` within an isolated storage context. */\n run<R>(fn: () => R | Promise<R>): R | Promise<R> {\n return this.#als.run(new Map(), fn);\n }\n\n /**\n * Retrieve a value by key.\n * @returns The stored value, or `null` if the key does not exist.\n */\n async get<T = unknown>(key: string): Promise<T | null> {\n return (this.#als.getStore()?.get(key) as T) ?? null;\n }\n\n /** Store a value under the given key, overwriting any existing entry. */\n async set<T = unknown>(key: string, value: T): Promise<void> {\n this.#als.getStore()?.set(key, value);\n }\n\n /** Remove the entry for the given key (no-op if absent). */\n async delete(key: string): Promise<void> {\n this.#als.getStore()?.delete(key);\n }\n}\n\n/** Default singleton for application-wide use. */\nexport const asyncLocalStorage = new AsyncLocalMapStorage();\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":["#als"],"sources":["../../../src/node/config.ts","../../../src/storage/async-local-storage.ts"],"sourcesContent":["import type { FheChain } from \"../chains/types\";\nimport type { RelayerConfig } from \"../config/types\";\nimport { FhevmRelayer } from \"../relayer/fhevm-relayer\";\nimport type { RelayerOptions } from \"../relayer/types\";\n\n/** Node transport — drives the FHE backend directly on the calling thread. */\nexport interface NodeRelayerConfig extends RelayerConfig {\n /** Discriminant for the node transport. */\n readonly type: \"node\";\n /** @internal */\n readonly createRelayer: (chain: FheChain) => FhevmRelayer;\n}\n\n/**\n * Node.js transport — drives `@fhevm/sdk` via {@link FhevmRelayer} on the calling thread.\n *\n * @example\n * ```ts\n * relayers: {\n * [sepolia.id]: node({ timeout: 5 * 60_000 }),\n * [mainnet.id]: node({ batchRpcCalls: true }),\n * }\n * ```\n */\nexport function node(options?: RelayerOptions): NodeRelayerConfig {\n return { type: \"node\", createRelayer: (chain) => new FhevmRelayer({ chain, options }) };\n}\n","import { AsyncLocalStorage } from \"node:async_hooks\";\nimport type { GenericStorage } from \"../types\";\n\n/**\n * {@link GenericStorage} backed by Node.js {@link AsyncLocalStorage}.\n *\n * Each async context (e.g. HTTP request) gets its own isolated `Map`,\n * so credentials from one request never leak into another.\n *\n * Call {@link run} to establish a context before using the SDK:\n *\n * ```ts\n * import { asyncLocalStorage } from \"@zama-fhe/sdk/node\";\n *\n * app.post(\"/api/transfer\", (req, res) => {\n * asyncLocalStorage.run(async () => {\n * const sdk = new ZamaSDK({ relayer, signer, storage: asyncLocalStorage });\n * // credentials are scoped to this request\n * });\n * });\n * ```\n */\nexport class AsyncLocalMapStorage implements GenericStorage {\n readonly #als = new AsyncLocalStorage<Map<string, unknown>>();\n\n /** Execute `fn` within an isolated storage context. */\n run<R>(fn: () => R | Promise<R>): R | Promise<R> {\n return this.#als.run(new Map(), fn);\n }\n\n /**\n * Retrieve a value by key.\n * @returns The stored value, or `null` if the key does not exist.\n */\n async get<T = unknown>(key: string): Promise<T | null> {\n return (this.#als.getStore()?.get(key) as T) ?? null;\n }\n\n /** Store a value under the given key, overwriting any existing entry. */\n async set<T = unknown>(key: string, value: T): Promise<void> {\n this.#als.getStore()?.set(key, value);\n }\n\n /** Remove the entry for the given key (no-op if absent). */\n async delete(key: string): Promise<void> {\n this.#als.getStore()?.delete(key);\n }\n}\n\n/** Default singleton for application-wide use. */\nexport const asyncLocalStorage = new AsyncLocalMapStorage();\n"],"mappings":"2OAwBA,SAAgB,EAAK,EAA6C,CAChE,MAAO,CAAE,KAAM,OAAQ,cAAgB,GAAU,IAAI,EAAa,CAAE,QAAO,SAAQ,CAAC,CAAE,CACxF,CCJA,IAAa,EAAb,KAA4D,CAC1D,GAAgB,IAAI,EAGpB,IAAO,EAA0C,CAC/C,OAAO,KAAKA,GAAK,IAAI,IAAI,IAAO,CAAE,CACpC,CAMA,MAAM,IAAiB,EAAgC,CACrD,OAAQ,KAAKA,GAAK,SAAS,CAAC,EAAE,IAAI,CAAG,GAAW,IAClD,CAGA,MAAM,IAAiB,EAAa,EAAyB,CAC3D,KAAKA,GAAK,SAAS,CAAC,EAAE,IAAI,EAAK,CAAK,CACtC,CAGA,MAAM,OAAO,EAA4B,CACvC,KAAKA,GAAK,SAAS,CAAC,EAAE,OAAO,CAAG,CAClC,CACF,EAGA,MAAa,EAAoB,IAAI"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { d as
|
|
2
|
-
import { $ as UnshieldOptions, A as EncryptErrorEvent, B as UnshieldPhase1SubmittedEvent, Bt as EncryptResult, C as ApproveUnderlyingSubmittedEvent, D as DecryptStartEvent, E as DecryptErrorEvent, F as ShieldSubmittedEvent, Ft as DecryptPublicValuesResult, G as ZamaSDKEvent, Gt as FhevmRuntimeConfig, H as UnshieldPhase2SubmittedEvent, Ht as FhevmClient, I as TransactionErrorEvent, J as ZamaSDKEvents, K as ZamaSDKEventListener, L as TransactionOperation, Lt as EIP712TypedData, M as FinalizeUnwrapSubmittedEvent, Mt as TransactionReceipt, N as RevokeDelegationSubmittedEvent, Nt as TransactionResult, O as DelegationSubmittedEvent, P as SetOperatorSubmittedEvent, Pt as ClearValue, Q as TransferOptions, R as TransferFromSubmittedEvent, Rt as EncryptInput, S as WriteFunctionName, T as DecryptEndEvent, U as UnwrapSubmittedEvent, V as UnshieldPhase2StartedEvent, Vt as EncryptedValue, W as WrapSubmittedEvent, Wt as FhevmRelayerOptions, X as ShieldOptions, Y as ApprovalStrategy, Z as ShieldPath, _ as ReadContractConfig, b as WriteContractArgs, c as GenericStorage, ct as ConfidentialTransferEvent, d as WalletAccount, et as UnwrapResult, f as WalletAccountChange, g as ReadContractArgs, gt as WrapEvent, h as ContractAbi, ht as UnwrapRequestedEvent, i as ZamaConfig, it as UnshieldCallbacks, j as EncryptStartEvent, jt as RawLog, k as EncryptEndEvent, l as GenericProvider, m as WalletAccountStore, mt as UnwrapFinalizedEvent, nt as ShieldCallbacks, p as WalletAccountListener, qt as RelayerSDK, rt as TransferCallbacks, s as GenericLogger, tt as WrapOptions, u as GenericSigner, ut as OnChainEvent, v as ReadContractReturnType, w as BaseEvent, x as WriteContractConfig, y as ReadFunctionName, z as TransferSubmittedEvent, zt as EncryptParams } from "../types-
|
|
3
|
-
import { A as BatchDecryptResult, C as BatchDecryptAsOptions, Ct as QueryFactoryOptions, D as DelegationStatus, E as Delegations, Et as TokenWrapperPairWithMetadata, O as Decryption, S as BatchBalancesResult, St as MutationFactoryOptions, T as Permits, Tt as TokenWrapperPair, _t as DecryptResult, bt as SignerQueryContext, d as ZamaSDK, h as WrappersRegistryConfig, j as DelegatedDecryptOptions, k as BatchDecryptItem, m as WrappersRegistry, mt as ZamaErrorCode, p as ListPairsOptions, pt as ZamaError, vt as EncryptedInput, w as Token, wt as PaginatedResult, x as WrappedToken, xt as zamaQueryKeys, y as SerializedTransportKeyPair, yt as decryptValuesQueryOptions } from "../index-
|
|
4
|
-
import "../index-
|
|
1
|
+
import { d as FheChain, f as FheChainAuth } from "../index-SfbUoPTf.js";
|
|
2
|
+
import { $ as UnshieldOptions, A as EncryptErrorEvent, B as UnshieldPhase1SubmittedEvent, Bt as EncryptResult, C as ApproveUnderlyingSubmittedEvent, D as DecryptStartEvent, E as DecryptErrorEvent, F as ShieldSubmittedEvent, Ft as DecryptPublicValuesResult, G as ZamaSDKEvent, Gt as FhevmRuntimeConfig, H as UnshieldPhase2SubmittedEvent, Ht as FhevmClient, I as TransactionErrorEvent, J as ZamaSDKEvents, K as ZamaSDKEventListener, L as TransactionOperation, Lt as EIP712TypedData, M as FinalizeUnwrapSubmittedEvent, Mt as TransactionReceipt, N as RevokeDelegationSubmittedEvent, Nt as TransactionResult, O as DelegationSubmittedEvent, P as SetOperatorSubmittedEvent, Pt as ClearValue, Q as TransferOptions, R as TransferFromSubmittedEvent, Rt as EncryptInput, S as WriteFunctionName, T as DecryptEndEvent, U as UnwrapSubmittedEvent, V as UnshieldPhase2StartedEvent, Vt as EncryptedValue, W as WrapSubmittedEvent, Wt as FhevmRelayerOptions, X as ShieldOptions, Y as ApprovalStrategy, Z as ShieldPath, _ as ReadContractConfig, b as WriteContractArgs, c as GenericStorage, ct as ConfidentialTransferEvent, d as WalletAccount, et as UnwrapResult, f as WalletAccountChange, g as ReadContractArgs, gt as WrapEvent, h as ContractAbi, ht as UnwrapRequestedEvent, i as ZamaConfig, it as UnshieldCallbacks, j as EncryptStartEvent, jt as RawLog, k as EncryptEndEvent, l as GenericProvider, m as WalletAccountStore, mt as UnwrapFinalizedEvent, nt as ShieldCallbacks, p as WalletAccountListener, qt as RelayerSDK, rt as TransferCallbacks, s as GenericLogger, tt as WrapOptions, u as GenericSigner, ut as OnChainEvent, v as ReadContractReturnType, w as BaseEvent, x as WriteContractConfig, y as ReadFunctionName, z as TransferSubmittedEvent, zt as EncryptParams } from "../types-BiA5rWAw.js";
|
|
3
|
+
import { A as BatchDecryptResult, C as BatchDecryptAsOptions, Ct as QueryFactoryOptions, D as DelegationStatus, E as Delegations, Et as TokenWrapperPairWithMetadata, O as Decryption, S as BatchBalancesResult, St as MutationFactoryOptions, T as Permits, Tt as TokenWrapperPair, _t as DecryptResult, bt as SignerQueryContext, d as ZamaSDK, h as WrappersRegistryConfig, j as DelegatedDecryptOptions, k as BatchDecryptItem, m as WrappersRegistry, mt as ZamaErrorCode, p as ListPairsOptions, pt as ZamaError, vt as EncryptedInput, w as Token, wt as PaginatedResult, x as WrappedToken, xt as zamaQueryKeys, y as SerializedTransportKeyPair, yt as decryptValuesQueryOptions } from "../index-bro9lghR.js";
|
|
4
|
+
import "../index-BYF_r0pl.js";
|
|
5
5
|
import { Address, Hex } from "viem";
|
|
6
6
|
//#region src/query/utils.d.ts
|
|
7
7
|
/** Union of TanStack Query option keys stripped by {@link filterQueryOptions}, leaving only domain parameters. */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { d as FheChain, u as AtLeastOneChain } from "./index-SfbUoPTf.js";
|
|
2
2
|
import { createFhevmClient, setFhevmRuntimeConfig } from "@fhevm/sdk/viem";
|
|
3
3
|
import { Abi, Address, ContractFunctionArgs, ContractFunctionName, ContractFunctionReturnType, Hex } from "viem";
|
|
4
4
|
import { Eip712Like, TypedValue, TypedValue as TypedValue$1 } from "@fhevm/sdk/types";
|
|
@@ -989,4 +989,4 @@ type ZamaConfig = {
|
|
|
989
989
|
};
|
|
990
990
|
//#endregion
|
|
991
991
|
export { UnshieldOptions as $, EncryptErrorEvent as A, findWrap as At, UnshieldPhase1SubmittedEvent as B, EncryptResult as Bt, ApproveUnderlyingSubmittedEvent as C, decodeRevokedDelegationForUserDecryption as Ct, DecryptStartEvent as D, findDelegatedForUserDecryption as Dt, DecryptErrorEvent as E, decodeWrap as Et, ShieldSubmittedEvent as F, DecryptPublicValuesResult as Ft, ZamaSDKEvent as G, FhevmRuntimeConfig as Gt, UnshieldPhase2SubmittedEvent as H, FhevmClient as Ht, TransactionErrorEvent as I, DecryptValuesParameters as It, ZamaSDKEvents as J, TypedValue$1 as Jt, ZamaSDKEventListener as K, RelayerOptions as Kt, TransactionOperation as L, EIP712TypedData as Lt, FinalizeUnwrapSubmittedEvent as M, TransactionReceipt as Mt, RevokeDelegationSubmittedEvent as N, TransactionResult as Nt, DelegationSubmittedEvent as O, findRevokedDelegationForUserDecryption as Ot, SetOperatorSubmittedEvent as P, ClearValue as Pt, TransferOptions as Q, TransferFromSubmittedEvent as R, EncryptInput as Rt, WriteFunctionName as S, decodeOnChainEvents as St, DecryptEndEvent as T, decodeUnwrapRequested as Tt, UnwrapSubmittedEvent as U, FhevmClientOptions as Ut, UnshieldPhase2StartedEvent as V, EncryptedValue as Vt, WrapSubmittedEvent as W, FhevmRelayerOptions as Wt, ShieldOptions as X, ApprovalStrategy as Y, ShieldPath as Z, ReadContractConfig as _, decodeAclEvent as _t, ZamaConfigBase as a, ACL_TOPICS as at, WriteContractArgs as b, decodeDelegatedForUserDecryption as bt, GenericStorage as c, ConfidentialTransferEvent as ct, WalletAccount as d, RevokedDelegationForUserDecryptionEvent as dt, UnwrapResult as et, WalletAccountChange as f, TOKEN_TOPICS as ft, ReadContractArgs as g, WrapEvent as gt, ContractAbi as h, UnwrapRequestedEvent as ht, ZamaConfig as i, UnshieldCallbacks as it, EncryptStartEvent as j, RawLog as jt, EncryptEndEvent as k, findUnwrapRequested as kt, GenericProvider as l, DelegatedForUserDecryptionEvent as lt, WalletAccountStore as m, UnwrapFinalizedEvent as mt, RelayerConfig as n, ShieldCallbacks as nt, ZamaConfigGeneric as o, AclEvent as ot, WalletAccountListener as p, Topics as pt, ZamaSDKEventType as q, RelayerSDK as qt, WebRelayerConfig as r, TransferCallbacks as rt, GenericLogger as s, AclTopics as st, CleartextRelayerConfig as t, WrapOptions as tt, GenericSigner as u, OnChainEvent as ut, ReadContractReturnType as v, decodeAclEvents as vt, BaseEvent as w, decodeUnwrapFinalized as wt, WriteContractConfig as x, decodeOnChainEvent as xt, ReadFunctionName as y, decodeConfidentialTransfer as yt, TransferSubmittedEvent as z, EncryptParams as zt };
|
|
992
|
-
//# sourceMappingURL=types-
|
|
992
|
+
//# sourceMappingURL=types-BiA5rWAw.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { a as ZamaConfigBase } from "./types-
|
|
1
|
+
import { u as AtLeastOneChain } from "./index-SfbUoPTf.js";
|
|
2
|
+
import { a as ZamaConfigBase } from "./types-BiA5rWAw.js";
|
|
3
3
|
import { EIP1193Provider, PublicClient, WalletClient } from "viem";
|
|
4
4
|
//#region src/viem/types.d.ts
|
|
5
5
|
/** Viem config — pass native viem clients directly. */
|
|
@@ -13,4 +13,4 @@ interface ZamaConfigViem<TChains extends AtLeastOneChain = AtLeastOneChain> exte
|
|
|
13
13
|
}
|
|
14
14
|
//#endregion
|
|
15
15
|
export { ZamaConfigViem as t };
|
|
16
|
-
//# sourceMappingURL=types-
|
|
16
|
+
//# sourceMappingURL=types-C24EbhTi.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { a as ZamaConfigBase } from "./types-
|
|
1
|
+
import { u as AtLeastOneChain } from "./index-SfbUoPTf.js";
|
|
2
|
+
import { a as ZamaConfigBase } from "./types-BiA5rWAw.js";
|
|
3
3
|
import { EIP1193Provider } from "viem";
|
|
4
4
|
import { Provider, Signer } from "ethers";
|
|
5
5
|
//#region src/ethers/types.d.ts
|
|
@@ -26,4 +26,4 @@ type ZamaConfigEthers<TChains extends AtLeastOneChain = AtLeastOneChain> = ZamaC
|
|
|
26
26
|
});
|
|
27
27
|
//#endregion
|
|
28
28
|
export { ZamaConfigEthers as t };
|
|
29
|
-
//# sourceMappingURL=types-
|
|
29
|
+
//# sourceMappingURL=types-CPJdosAz.d.ts.map
|
package/dist/esm/viem/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { d as
|
|
2
|
-
import { A as EncryptErrorEvent, B as UnshieldPhase1SubmittedEvent, C as ApproveUnderlyingSubmittedEvent, D as DecryptStartEvent, E as DecryptErrorEvent, F as ShieldSubmittedEvent, G as ZamaSDKEvent, Gt as FhevmRuntimeConfig, H as UnshieldPhase2SubmittedEvent, I as TransactionErrorEvent, J as ZamaSDKEvents, K as ZamaSDKEventListener, L as TransactionOperation, Lt as EIP712TypedData, M as FinalizeUnwrapSubmittedEvent, Mt as TransactionReceipt, N as RevokeDelegationSubmittedEvent, O as DelegationSubmittedEvent, P as SetOperatorSubmittedEvent, Pt as ClearValue, R as TransferFromSubmittedEvent, S as WriteFunctionName, T as DecryptEndEvent, U as UnwrapSubmittedEvent, V as UnshieldPhase2StartedEvent, Vt as EncryptedValue, W as WrapSubmittedEvent, Z as ShieldPath, _ as ReadContractConfig, a as ZamaConfigBase, b as WriteContractArgs, c as GenericStorage, d as WalletAccount, f as WalletAccountChange, g as ReadContractArgs, h as ContractAbi, i as ZamaConfig, j as EncryptStartEvent, jt as RawLog, k as EncryptEndEvent, l as GenericProvider, m as WalletAccountStore, n as RelayerConfig, p as WalletAccountListener, q as ZamaSDKEventType, s as GenericLogger, u as GenericSigner, v as ReadContractReturnType, w as BaseEvent, x as WriteContractConfig, y as ReadFunctionName, z as TransferSubmittedEvent } from "../types-
|
|
3
|
-
import { n as MutableWalletAccountStore, t as BaseSigner } from "../base-signer-
|
|
4
|
-
import { t as ZamaConfigViem } from "../types-
|
|
1
|
+
import { d as FheChain, f as FheChainAuth, u as AtLeastOneChain } from "../index-SfbUoPTf.js";
|
|
2
|
+
import { A as EncryptErrorEvent, B as UnshieldPhase1SubmittedEvent, C as ApproveUnderlyingSubmittedEvent, D as DecryptStartEvent, E as DecryptErrorEvent, F as ShieldSubmittedEvent, G as ZamaSDKEvent, Gt as FhevmRuntimeConfig, H as UnshieldPhase2SubmittedEvent, I as TransactionErrorEvent, J as ZamaSDKEvents, K as ZamaSDKEventListener, L as TransactionOperation, Lt as EIP712TypedData, M as FinalizeUnwrapSubmittedEvent, Mt as TransactionReceipt, N as RevokeDelegationSubmittedEvent, O as DelegationSubmittedEvent, P as SetOperatorSubmittedEvent, Pt as ClearValue, R as TransferFromSubmittedEvent, S as WriteFunctionName, T as DecryptEndEvent, U as UnwrapSubmittedEvent, V as UnshieldPhase2StartedEvent, Vt as EncryptedValue, W as WrapSubmittedEvent, Z as ShieldPath, _ as ReadContractConfig, a as ZamaConfigBase, b as WriteContractArgs, c as GenericStorage, d as WalletAccount, f as WalletAccountChange, g as ReadContractArgs, h as ContractAbi, i as ZamaConfig, j as EncryptStartEvent, jt as RawLog, k as EncryptEndEvent, l as GenericProvider, m as WalletAccountStore, n as RelayerConfig, p as WalletAccountListener, q as ZamaSDKEventType, s as GenericLogger, u as GenericSigner, v as ReadContractReturnType, w as BaseEvent, x as WriteContractConfig, y as ReadFunctionName, z as TransferSubmittedEvent } from "../types-BiA5rWAw.js";
|
|
3
|
+
import { n as MutableWalletAccountStore, t as BaseSigner } from "../base-signer-rvOfr9wl.js";
|
|
4
|
+
import { t as ZamaConfigViem } from "../types-C24EbhTi.js";
|
|
5
5
|
import { Abi, Address, ContractFunctionArgs, ContractFunctionName, ContractFunctionReturnType, EIP1193Provider, Hex, Hex as Hex$1, PublicClient, WalletClient } from "viem";
|
|
6
6
|
//#region src/viem/config.d.ts
|
|
7
7
|
/** Create a {@link ZamaConfig} from viem clients. */
|
package/dist/esm/viem/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{A as e,D as t,F as n,I as r,L as i,P as a,R as o,U as s,a as c,c as l,g as u,i as d,l as f,o as p,r as m,s as h,t as g,w as _}from"../sdk-events-D68bJ5jT.js";import{i as v,t as y}from"../base-signer-
|
|
1
|
+
import{A as e,D as t,F as n,I as r,L as i,P as a,R as o,U as s,a as c,c as l,g as u,i as d,l as f,o as p,r as m,s as h,t as g,w as _}from"../sdk-events-D68bJ5jT.js";import{i as v,t as y}from"../base-signer-BGEnALwn.js";import{t as b}from"../eip1193-subscribe-CNxVHW6y.js";import{getAddress as x}from"viem";var S=class{#e;constructor(e){this.#e=e.publicClient}async getChainId(){return this.#e.getChainId()}async readContract(e){return this.#e.readContract(e)}async waitForTransactionReceipt(e){return this.#e.waitForTransactionReceipt({hash:e})}async getBlockTimestamp(){return(await this.#e.getBlock()).timestamp}};function C(e){let t=(e.primaryType?e.types[e.primaryType]:void 0)??[],n={...e.message};for(let{name:e,type:r}of t)/^uint\d*$/.test(r)&&(n[e]=BigInt(n[e]));return n}function w(e){if(!(!e.account||!e.chain))return{address:x(e.account.address),chainId:e.chain.id}}var T=class extends y{#e;#t;#n;constructor(e){super(w(e.walletClient)),this.#e=e.walletClient,this.#t=e.ethereum,this.#n=this.#i()}#r(e){if(!this.#e.account)throw new s(e);return{walletClient:this.#e,account:this.#e.account}}async signTypedData(e){let{walletClient:t,account:n}=this.#r(`signTypedData`),{EIP712Domain:r,...i}=e.types;return t.signTypedData({account:n,primaryType:e.primaryType,types:i,domain:e.domain,message:C(e)})}async writeContract(e){let{walletClient:t,account:n}=this.#r(`writeContract`);return t.writeContract({chain:t.chain,account:n,...e})}#i(){return this.#t?b({provider:this.#t,getInitialWalletAccount:()=>w(this.#e),onWalletAccountChange:({next:e})=>{this.walletAccount.setSnapshot(e)}}):()=>{}}onDispose(){this.#n()}};function E(e){return v(new T({walletClient:e.walletClient,ethereum:e.ethereum}),new S({publicClient:e.publicClient}),e)}function D(e){if(!e.account)throw TypeError(`WalletClient has no account`);return e.account}function O(e,t,n){return e.readContract(_(t,n))}function k(e,t){return e.readContract(n(t))}function A(e,t,n){return e.readContract(u(t,n))}function j(e,n,r,i,a){return e.writeContract({chain:e.chain,account:D(e),...t(n,r,i,a)})}function M(e,t,n,i,a,o){return e.writeContract({chain:e.chain,account:D(e),...r(t,n,i,a,o)})}function N(e,t,n,r,a){return e.writeContract({chain:e.chain,account:D(e),...i(t,n,r,a)})}function P(t,n,r,i,a){return t.writeContract({chain:t.chain,account:D(t),...e(n,r,i,a)})}function F(e,t,n,r){return e.writeContract({chain:e.chain,account:D(e),...a(t,n,r)})}function I(e,t,n,r){return e.writeContract({chain:e.chain,account:D(e),...o(t,n,r)})}function L(e,t){return e.readContract(p(t))}function R(e,t){return e.readContract(h(t))}function z(e,t,n,r){return e.readContract(l(t,n,r))}function B(e,t,n){return e.readContract(c(t,n))}function V(e,t,n){return e.readContract(m(t,n))}function H(e,t,n){return e.readContract(d(t,n))}function U(e,t,n){return e.readContract(f(t,n))}export{y as BaseSigner,S as ViemProvider,T as ViemSigner,g as ZamaSDKEvents,E as createConfig,O as readConfidentialBalanceOfContract,V as readConfidentialTokenAddressContract,U as readIsConfidentialTokenValidContract,A as readSupportsInterfaceContract,H as readTokenAddressContract,B as readTokenPairContract,L as readTokenPairsContract,R as readTokenPairsLengthContract,z as readTokenPairsSliceContract,k as readUnderlyingTokenContract,j as writeConfidentialTransferContract,P as writeFinalizeUnwrapContract,F as writeSetOperatorContract,M as writeUnwrapContract,N as writeUnwrapFromBalanceContract,I as writeWrapContract};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/web/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Gt as FhevmRuntimeConfig, Kt as RelayerOptions, Ut as FhevmClientOptions, Wt as FhevmRelayerOptions, n as RelayerConfig, r as WebRelayerConfig } from "../types-
|
|
1
|
+
import { Gt as FhevmRuntimeConfig, Kt as RelayerOptions, Ut as FhevmClientOptions, Wt as FhevmRelayerOptions, n as RelayerConfig, r as WebRelayerConfig } from "../types-BiA5rWAw.js";
|
|
2
2
|
//#region src/config/web.d.ts
|
|
3
3
|
/**
|
|
4
4
|
* Browser relayer — drives `@fhevm/sdk` via {@link FhevmRelayer}.
|
package/package.json
CHANGED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{d as e,r as t,t as n}from"./relayer-BWHOLVcG.js";import{C as r,S as i,U as a,a as o,b as s,c,i as l,l as u,o as d,q as f,r as p,s as m,x as h,z as g}from"./sdk-events-D68bJ5jT.js";import{a as _,c as v,n as y,o as b,s as x}from"./chains-CLv9HEJ_.js";import{hasFhevmRuntimeConfig as ee,setFhevmRuntimeConfig as te}from"@fhevm/sdk/viem";import{getAddress as S,isAddress as ne,isHex as re,zeroAddress as C}from"viem";import{z as w}from"zod/mini";var T=class{#e=null;#t=null;#n;#r;#i;constructor(e=`CredentialStore`,t=1,n=`credentials`){this.#n=e,this.#r=t,this.#i=n}#a(){return this.#e?Promise.resolve(this.#e):(this.#t||=new Promise((e,t)=>{let n=indexedDB.open(this.#n,this.#r);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(this.#i)||e.createObjectStore(this.#i,{keyPath:`key`})},n.onsuccess=()=>{this.#e=n.result,this.#t=null,this.#e.onversionchange=()=>{this.#e?.close(),this.#e=null,this.#t=null},this.#e.onclose=()=>{this.#e=null,this.#t=null},e(this.#e)},n.onerror=()=>{this.#e=null,this.#t=null,t(n.error)}}),this.#t)}async#o(e,t){let n=await this.#a();return new Promise((r,i)=>{let a=n.transaction(this.#i,e);a.onabort=()=>i(a.error??Error(`Transaction aborted`));let o=t(a.objectStore(this.#i));e===`readonly`?o.onsuccess=()=>r(o.result):a.oncomplete=()=>r(o.result),o.onerror=()=>i(o.error)})}async get(e){return(await this.#o(`readonly`,t=>t.get(e)))?.value??null}async set(e,t){await this.#o(`readwrite`,n=>n.put({key:e,value:t}))}async delete(e){await this.#o(`readwrite`,t=>t.delete(e))}async clear(){await this.#o(`readwrite`,e=>e.clear())}};const ie=new T;var E=class{#e=new Map;async get(e){return this.#e.get(e)??null}async set(e,t){this.#e.set(e,t)}async delete(e){this.#e.delete(e)}};const ae=new E;function oe(){return typeof window<`u`?new T(`CredentialStore`):new E}function se(e=oe(),t=e){return{storage:e,permitStorage:t}}function ce(e,t){let r=new Map(e.map(e=>[e.id,e]));if(r.size!==e.length){let t=e.map(e=>e.id);throw new n(`Duplicate chain id(s) [${[...new Set(t.filter((e,n)=>t.indexOf(e)!==n))].join(`, `)}] in the chains array. Each chain id must appear only once. Note: hardhat and anvil are aliases (both use 31337).`)}let i=new Map(Object.entries(t)),a=new Map;for(let e of r.keys()){let t=r.get(e),o=i.get(String(e));if(!o)throw new n(`Chain ${e} has no relayer configured. Add a relayer entry: relayers: { [${e}]: web() }`);if(!t)throw new n(`Chain ${e} has a relayer configured but no entry in the chains array. Add the chain config to the chains array.`);a.set(e,{chain:t,relayerConfig:o})}let o=new Set(Object.keys(t).map(Number)),s=new Set([...o].filter(e=>!r.has(e)));if(s.size>0)throw new n(`Relayer entries for chain(s) [${[...s].join(`, `)}] have no matching entry in the chains array. Remove them or add the corresponding chain config.`);return a}var le=class{#e;#t;#n;constructor(e,t){if(e.length===0)throw new n(`At least one chain is required.`);this.#e=new Map(e.map(e=>[e.id,e])),this.#n=e[0].id;let r=new Map;for(let[n,{relayerConfig:i,chain:a}]of ce(e,t))r.set(n,i.createRelayer(a));this.#t=r}get chains(){return[...this.#e.values()]}get chain(){let e=this.#e.get(this.#n);if(e===void 0)throw new n(`Chain ${this.#n} is not configured. Add it to the chains array.`);return e}switchChain(e){this.#n=e}get relayer(){let e=this.#t.get(this.chain.id);if(e===void 0)throw new n(`No relayer configured for chain ${this.#n}. Add it to the relayers object.`);return e}};function D(e){return S(e)}const O=w.custom(e=>typeof e==`string`&&re(e,{strict:!0}),`expected 0x-prefixed hex string`),ue=w.custom(e=>typeof e==`string`&&ne(e,{strict:!1}),`expected EVM address`),k=w.pipe(ue,w.transform(D)),A=w.int().check(w.nonnegative()),de=w.int().check(w.positive()),fe=w.int().check(w.nonnegative()),pe=w.int().check(w.positive());w.int().check(w.positive());const j=86400;function M(){return Math.floor(Date.now()/1e3)}function N(e){return[...new Set(e.map(D))].toSorted()}const P=`transportKeyPairTTL must be a positive integer number of seconds`,F=`permitTTL must be a positive integer number of days`,I=`transportKeyPairScope must be a non-empty string`,L=365*j,R=w.int({error:P}).check(w.positive({error:P}),w.maximum(L,`transportKeyPairTTL must not exceed the fhevm ACL maximum of ${L}s (365 days)`)),z=w.int({error:F}).check(w.positive({error:F})),B=w.string({error:I}).check(w.minLength(1,I)),me=w.object({publicKey:O,privateKey:O,createdAt:A,expiresAt:de,tkmsVersion:w.optional(w.string())}),he=w.object({domain:w.record(w.string(),w.unknown()),primaryType:w.optional(w.string()),types:w.record(w.string(),w.array(w.object({name:w.string(),type:w.string()}))),message:w.record(w.string(),w.unknown())}),V=w.object({version:w.int().check(w.positive()),eip712:he,signature:O,signerAddress:k}),H=w.object({keypairPublicKey:O,contractAddresses:w.array(k).check(w.maxLength(10)),serializedPermit:V,startTimestamp:A,durationDays:pe}),ge=w.array(H),_e=w.array(w.string());function U(e){return`keypair:${e}`}function W(e){return`keypair:scope:${e}`}function G(e){return`permits:${e.signerAddress}:${e.chainId}:${e.delegatorAddress}`}function K(e){return`permits-index:${e}`}var ve=class{#e;#t;#n;#r;#i;#a=new Map;#o=new Map;constructor(e){this.#e=e.generator,this.#t=e.storage,this.#n=e.ttl,this.#r=e.logger,this.#i=e.scope}#s(e){return this.#i===void 0?U(e):W(this.#i)}async readStored(e){return this.#c(this.#s(e))}async#c(e){let t=await this.#t.get(e);if(t==null)return null;let n=me.safeParse(t);if(!n.success)return await g(`delete transport key pair entry`,()=>this.#t.delete(e),this.#r),null;let r=n.data;return M()>=r.expiresAt?(await g(`delete transport key pair entry`,()=>this.#t.delete(e),this.#r),null):r}async getOrCreate(e){return this.#l(this.#s(e))}async#l(e,t){let n=`${e}::${t?.strict??!1}`,r=this.#a.get(n);if(r)return r;let i=this.#o.get(e)??0,a=(async()=>{let n=await this.#c(e);if(n!==null)return n;let r=await this.#e(),a=M(),o={publicKey:r.publicKey,privateKey:r.privateKey,createdAt:a,expiresAt:a+this.#n};return r.tkmsVersion&&(o.tkmsVersion=r.tkmsVersion),(this.#o.get(e)??0)===i&&(t?.strict?await this.#t.set(e,o):await g(`persist transport key pair`,()=>this.#t.set(e,o),this.#r)),o})().finally(()=>{this.#a.delete(n)});return this.#a.set(n,a),a}async clear(e){let t=U(e);await g(`delete transport key pair entry`,()=>this.#t.delete(t),this.#r)}async evict(e){let t=this.#s(e);await g(`evict transport key pair entry`,()=>this.#t.delete(t),this.#r)}async clearScope(){if(this.#i===void 0)return;let e=W(this.#i);this.#o.set(e,(this.#o.get(e)??0)+1),await this.#t.delete(e)}async warmScope(){this.#i!==void 0&&await this.#l(W(this.#i),{strict:!0})}};function q(e,t){let n=new Set(e.flatMap(e=>e.contractAddresses));return t.filter(e=>!n.has(e))}function ye(e){let t=[];for(let n=0;n<e.length;n+=10)t.push(e.slice(n,n+10));return t}function be(e,t,n){return e.filter(e=>e.keypairPublicKey===t&&n<e.startTimestamp+e.durationDays*86400)}function xe(e,t){let n=new Set(t);return e.filter(e=>!e.contractAddresses.some(e=>n.has(e)))}function Se(e,t){return[...new Set([...e,...t])].toSorted()}function Ce(e,t,n){let r=new Set(n),i=e.filter(e=>new Set([...e.contractAddresses,...t]).size<=10);if(i.length===0)return null;function a(e){return e.contractAddresses.reduce((e,t)=>e+ +!!r.has(t),0)}let o=Math.max(...i.map(a));return i.filter(e=>a(e)===o).reduce((e,t)=>t.startTimestamp>e.startTimestamp?t:e)}var J=class{#e;#t;constructor(e){this.#e=e.storage,this.#t=e.logger}async list(e){let t=G(e),n=await this.#e.get(t);if(n==null)return[];let r=ge.safeParse(n);return r.success?r.data:(await this.#a(t),await this.#i(e),[])}async listUsableAndPrune(e,t){let n=await this.list(e),r=be(n,t,Math.floor(Date.now()/1e3));if(r.length!==n.length){let t=G(e);r.length===0?(await this.#a(t),await this.#i(e)):await g(`update permit entry`,()=>this.#e.set(t,r),this.#t)}return r}async append(e,t){if(t.length===0)return;let n=t.map(e=>H.parse(e)),r=await this.list(e);await this.#e.set(G(e),[...r,...n]),await this.#r(e)}async replace(e,t,n){let r=H.parse(n),i=(await this.list(e)).filter(e=>e.serializedPermit.signature!==t);await this.#e.set(G(e),[...i,r]),await this.#r(e)}async deletePermitsTouching(e,t){let n=await this.list(e);if(n.length===0)return;let r=G(e),i=xe(n,t);i.length===0?(await this.#a(r),await this.#i(e)):await this.#e.set(r,i)}async clearAllForSigner(e){let t=K(e),n=await this.#n(t);await Promise.all(n.map(e=>this.#a(e))),await g(`delete permit index`,()=>this.#e.delete(t),this.#t)}async#n(e){let t=await this.#e.get(e);if(t==null)return[];let n=_e.safeParse(t);return n.success?n.data:(await g(`delete permit index`,()=>this.#e.delete(e),this.#t),[])}async#r(e){let t=K(e.signerAddress),n=G(e),r=await this.#n(t);r.includes(n)||await this.#e.set(t,[...r,n])}async#i(e){let t=K(e.signerAddress),n=G(e),r=await this.#n(t),i=r.filter(e=>e!==n);i.length!==r.length&&(i.length===0?await g(`delete permit index`,()=>this.#e.delete(t),this.#t):await g(`update permit index`,()=>this.#e.set(t,i),this.#t))}async#a(e){await g(`delete permit entry`,()=>this.#e.delete(e),this.#t)}},we=class{#e;#t;#n;#r;#i;#a;#o;constructor(e){this.#e=new ve({generator:async()=>{let t=e.router.relayer,n=await t.generateTransportKeyPair();return t.serializeTransportKeyPair({transportKeyPair:n})},storage:e.storage,ttl:e.transportKeyPairTTL,logger:e.logger,scope:e.scope}),this.#t=new J({storage:e.permitStorage??e.storage,logger:e.logger}),this.#n=e.router,this.#r=e.signer,this.#i=e.permitTTL,this.#a=e.logger,this.#o=e.scope}async grantPermit(e,t){let n=D(this.#r.requireWalletAccount(`grantPermit`).address),r=N(e),i=await this.#e.getOrCreate(n);if(r.length===0)return{keypair:i,permissions:[]};let a={signerAddress:n,chainId:this.#n.chain.id,delegatorAddress:t?D(t):n},o=await this.#t.listUsableAndPrune(a,i.publicKey),s=q(o,r);if(s.length>0){let e=Ce(o,s,r);if(e!==null){let t=Se(e.contractAddresses,s),n=await this.#s({chunk:t,keypair:i,scope:a});await g(`replace permit`,()=>this.#t.replace(a,e.serializedPermit.signature,n),this.#a),o[o.indexOf(e)]=n}else for(let e of ye(s)){let t=await this.#s({chunk:e,keypair:i,scope:a});o.push(t),await g(`persist permit`,()=>this.#t.append(a,[t]),this.#a)}}let c=new Set(r);return{keypair:i,permissions:o.filter(e=>e.contractAddresses.some(e=>c.has(e)))}}async hasPermit(e,t){if(e.length===0)return!0;let n=this.#r.walletAccount.getSnapshot();if(!n)return!1;let r=D(n.address),i=await this.#e.readStored(r);if(i===null)return!1;let a={signerAddress:r,chainId:this.#n.chain.id,delegatorAddress:t?D(t):r};return q(await this.#t.listUsableAndPrune(a,i.publicKey),N(e)).length===0}async revokePermits(e){let t=D(this.#r.requireWalletAccount(`revokePermits`).address);if(e===void 0){await this.#t.clearAllForSigner(t);return}let n=N(e);if(n.length===0)return;let r=this.#n.chain.id;await this.#t.deletePermitsTouching({signerAddress:t,chainId:r,delegatorAddress:t},n)}async clearCredentials(){let e=D(this.#r.requireWalletAccount(`clearCredentials`).address);await this.#e.clear(e),await this.#t.clearAllForSigner(e)}async revokeTransportKeyPair(e){if(this.#o===void 0)throw new n(`revokeTransportKeyPair() requires a transportKeyPairScope to be configured on this SDK instance — there is no shared key pair to revoke.`);if(e!==this.#o)throw new n(`revokeTransportKeyPair("${e}") does not match the configured scope ("${this.#o}").`);await this.#e.clearScope()}async warmTransportKeyPair(e){await this.#e.getOrCreate(D(e))}async warmTransportKeyPairScope(e){if(this.#o===void 0)throw new n(`warmTransportKeyPairScope() requires a transportKeyPairScope to be configured on this SDK instance — there is no shared key pair to warm.`);if(e!==this.#o)throw new n(`warmTransportKeyPairScope("${e}") does not match the configured scope ("${this.#o}").`);await this.#e.warmScope()}async handleWalletAccountChange(e,t){let n=e?D(e.address):void 0;n!==(t?D(t.address):void 0)&&n&&(await this.#e.clear(n),await this.#t.clearAllForSigner(n))}async#s(n){let{chunk:r,keypair:i,scope:a}=n,o=M(),s=a.delegatorAddress!==a.signerAddress,c=this.#n.relayer;try{let e={transportKeyPair:await c.parseTransportKeyPair(i),contractAddresses:r,startTimestamp:o,durationSeconds:this.#i*j,signerAddress:a.signerAddress,signer:this.#r},t=s?await c.signDecryptionPermit({...e,delegatorAddress:a.delegatorAddress}):await c.signDecryptionPermit(e),n=V.parse(await c.serializeSignedDecryptionPermit({signedPermit:t}));return{keypairPublicKey:i.publicKey,contractAddresses:r,serializedPermit:n,startTimestamp:o,durationDays:this.#i}}catch(n){throw n instanceof t?n:(n instanceof Error&&e(n.message)&&await this.#e.evict(a.signerAddress),f(n,`Credential signing failed`))}}async evictTransportKeyPair(){let e=this.#r.walletAccount.getSnapshot();e&&await this.#e.evict(D(e.address))}},Te=class{#e;#t=`[zama-sdk]`;constructor(e){this.#e=e}error(e,t){this.#e?.error(`${this.#t} ${e}`,t)}warn(e,t){this.#e?.warn(`${this.#t} ${e}`,t)}info(e,t){this.#e?.info(`${this.#t} ${e}`,t)}debug(e,t){this.#e?.debug(`${this.#t} ${e}`,t)}};function Y(e,t){let r=w.safeParse(e,t);if(r.success)return r.data;throw new n(w.prettifyError(r.error),{cause:r.error})}const X={[x.id]:x.registryAddress,[v.id]:v.registryAddress,[_.id]:_.registryAddress,[b.id]:b.registryAddress,[y.id]:y.registryAddress},Ee=w.record(w.string().check(w.regex(/^\d+$/,`expected numeric chain id key`)),k),Z=fe,Q=300*1e3;var De=class{provider;#e;#t;#n=new Map;constructor(e){this.provider=e.provider,this.#e=Object.assign({},X,Y(w.optional(Ee),e.registryAddresses)),this.#t=Y(Z,e.registryTTL??86400)*1e3}getAddress(e){return this.#e[e]}#r(e){let t=this.#n.get(e);if(t){if(Date.now()>=t.expiresAt){this.#n.delete(e);return}return t.data}}#i(e,t,n=this.#t){return this.#n.set(e,{data:t,expiresAt:Date.now()+n}),t}refresh(){this.#n.clear()}get ttlMs(){return this.#t}async getRegistryAddress(){let e=await this.provider.getChainId(),t=this.#e[e];if(!t)throw new n(`No wrappers registry address configured for chain ${e}.\nPass a registryAddresses entry for this chain.`);return S(t)}async listPairs(e={}){let t=e.page??1,r=e.pageSize??100,i=e.metadata??!1;if(t<1)throw new n(`page must be >= 1, got ${t}`);if(r<1)throw new n(`pageSize must be >= 1, got ${r}`);let a=await this.getRegistryAddress(),o=`total:${a}`,s=this.#r(o);if(s===void 0){let e=await this.provider.readContract(m(a));s=this.#i(o,Number(e))}let l=BigInt((t-1)*r),u=l+BigInt(r)>BigInt(s)?BigInt(s):l+BigInt(r);if(l>=BigInt(s))return{items:[],total:s,page:t,pageSize:r};let d=`slice:${a}:${l}:${u}`,f=this.#r(d);if(f===void 0){let e=await this.provider.readContract(c(a,l,u));f=this.#i(d,[...e])}if(!i)return{items:f,total:s,page:t,pageSize:r};let p=`metadata:${a}:${l}:${u}`,h=this.#r(p);if(h===void 0){let e=await Promise.allSettled(f.map(e=>this.#a(e))),t=e.some(e=>e.status===`rejected`),n=e.map((e,t)=>e.status===`fulfilled`?e.value:Object.assign({},f[t],{metadataFailed:!0,underlying:{name:`Unknown`,symbol:`???`,decimals:0,totalSupply:0n},confidential:{name:`Unknown`,symbol:`???`,decimals:0}}));h=this.#i(p,n,t?Q:void 0)}return{items:h,total:s,page:t,pageSize:r}}async#a(e){let[t,n,a,o,c,l,u]=await Promise.all([this.provider.readContract(i(e.tokenAddress)),this.provider.readContract(r(e.tokenAddress)),this.provider.readContract(s(e.tokenAddress)),this.provider.readContract(h(e.tokenAddress)),this.provider.readContract(i(e.confidentialTokenAddress)),this.provider.readContract(r(e.confidentialTokenAddress)),this.provider.readContract(s(e.confidentialTokenAddress))]);return{...e,underlying:{name:t,symbol:n,decimals:a,totalSupply:o},confidential:{name:c,symbol:l,decimals:u}}}async getConfidentialToken(e){let t=await this.getRegistryAddress(),n=S(e),r=`ct:${t}:${n}`,i=this.#r(r);if(i!==void 0)return i;let[a,o]=await this.provider.readContract(p(t,n));return o===C?this.#i(r,null,Q):this.#i(r,{confidentialTokenAddress:o,isValid:a})}async getUnderlyingToken(e){let t=await this.getRegistryAddress(),n=S(e),r=`ut:${t}:${n}`,i=this.#r(r);if(i!==void 0)return i;let[a,o]=await this.provider.readContract(l(t,n));return o===C?this.#i(r,null,Q):this.#i(r,{tokenAddress:o,isValid:a})}async getTokenPairs(){let e=await this.getRegistryAddress();return this.provider.readContract(d(e))}async getTokenPairsLength(){let e=await this.getRegistryAddress();return this.provider.readContract(m(e))}async getTokenPairsSlice(e,t){let n=await this.getRegistryAddress();return this.provider.readContract(c(n,e,t))}async getTokenPair(e){let t=await this.getRegistryAddress();return this.provider.readContract(o(t,e))}async getConfidentialTokenAddress(e){let t=await this.getRegistryAddress();return this.provider.readContract(p(t,S(e)))}async getTokenAddress(e){let t=await this.getRegistryAddress();return this.provider.readContract(l(t,S(e)))}async isConfidentialTokenValid(e){let t=await this.getRegistryAddress();return this.provider.readContract(u(t,S(e)))}};function Oe(e,t,n){let r=new Te(n.logger);ee()?r.warn(`runtime configuration is already set and cannot be changed.`):te({wasmAssetLoadMode:`auto`,moduleVersions:`auto`,logger:{error:(e,t)=>n.logger?.error(e,{cause:t}),warn:e=>n.logger?.warn(e),debug:e=>n.logger?.debug(e)},...n.runtime});let{storage:i,permitStorage:a}=se(n.storage,n.permitStorage),o=new le(n.chains,n.relayers);return{chains:n.chains,router:o,provider:t,signer:e,storage:i,permitStorage:a,transportKeyPairTTL:Y(R,n.transportKeyPairTTL??2592e3),permitTTL:Y(z,n.permitTTL??30),transportKeyPairScope:n.transportKeyPairScope===void 0?void 0:Y(B,n.transportKeyPairScope),registryTTL:Y(Z,n.registryTTL??86400),logger:r,onEvent:n.onEvent}}function ke(e,t){return e?.address===t?.address&&e?.chainId===t?.chainId}var $=class{#e=new Set;#t;#n;constructor(e){this.#t=e,this.#n=e!==void 0}getSnapshot(){return this.#t}isReady(){return this.#n}setSnapshot(e){this.#n=!0;let t=this.#t;ke(t,e)||(this.#t=e,this.#r({previous:t,next:e}))}subscribe(e){this.#e.add(e);let t=this.#t;return t&&e({previous:void 0,next:t}),()=>{this.#e.delete(e)}}#r(e){for(let t of this.#e)t(e)}};function Ae(e){return new $(e)}var je=class{walletAccount;#e=!1;constructor(e){this.walletAccount=new $(e)}requireWalletAccount(e){let t=this.walletAccount.getSnapshot();if(!t)throw new a(e);return t}dispose(){this.#e||(this.#e=!0,this.onDispose())}[Symbol.dispose](){this.dispose()}onDispose(){}};export{X as a,D as c,E as d,ae as f,Oe as i,k as l,ie as m,$ as n,De as o,T as p,Ae as r,we as s,je as t,O as u};
|
|
2
|
-
//# sourceMappingURL=base-signer-YpkEmlp2.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e={id:1,gatewayChainId:261131,relayerUrl:`https://relayer.mainnet.zama.org`,network:`https://ethereum-rpc.publicnode.com`,aclContractAddress:`0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6`,kmsContractAddress:`0x77627828a55156b04Ac0DC0eb30467f1a552BB03`,inputVerifierContractAddress:`0xCe0FC2e05CFff1B719EFF7169f7D80Af770c8EA2`,verifyingContractAddressDecryption:`0x0f6024a97684f7d90ddb0fAAD79cB15F2C888D24`,verifyingContractAddressInputVerification:`0xcB1bB072f38bdAF0F328CdEf1Fc6eDa1DF029287`,registryAddress:`0xeb5015fF021DB115aCe010f23F55C2591059bBA0`},t={id:11155111,gatewayChainId:10901,relayerUrl:`https://relayer.testnet.zama.org`,network:`https://ethereum-sepolia-rpc.publicnode.com`,aclContractAddress:`0xf0Ffdc93b7E186bC2f8CB3dAA75D86d1930A433D`,kmsContractAddress:`0xbE0E383937d564D7FF0BC3b46c51f0bF8d5C311A`,inputVerifierContractAddress:`0xBBC1fFCdc7C316aAAd72E807D9b0272BE8F84DA0`,verifyingContractAddressDecryption:`0x5D8BD78e2ea6bbE41f26dFe9fdaEAa349e077478`,verifyingContractAddressInputVerification:`0x483b9dE06E4E4C7D35CCf5837A1668487406D955`,registryAddress:`0x2f0750Bbb0A246059d80e94c454586a7F27a128e`},n={id:560048,gatewayChainId:10901,relayerUrl:``,network:`https://rpc.hoodi.ethpandaops.io`,aclContractAddress:`0x6D3FAf6f86e1fF9F3B0831Dda920AbA1cBd5bd68`,kmsContractAddress:`0x822BE20679CfAfdc352F05dEdfe12a07E912212e`,inputVerifierContractAddress:`0xf3D9A51f32D9bC23E1eECb0fAbF1f1DA4d9Bba26`,verifyingContractAddressDecryption:`0x5ffdaAB0373E62E2ea2944776209aEf29E631A64`,verifyingContractAddressInputVerification:`0x812b06e1CDCE800494b79fFE4f925A504a9A9810`,registryAddress:`0x1807aE2f693F8530DFB126D0eF98F2F2518F292f`,executorAddress:`0xC316692627de536368d82e9121F1D44a550894E6`},r={id:364301,gatewayChainId:10901,relayerUrl:``,network:`https://rpc.ingen.t-rex.network`,aclContractAddress:`0x09a4710BfBe7B557cD5CFE88BB31e9b5b85C419b`,kmsContractAddress:`0xd885DEa6a924785fCcdf9CE993FEe27EA11832e6`,inputVerifierContractAddress:`0x90f05B10db153365D8cB143EA17f5E5714D0bCD5`,verifyingContractAddressDecryption:`0x5ffdaAB0373E62E2ea2944776209aEf29E631A64`,verifyingContractAddressInputVerification:`0x812b06e1CDCE800494b79fFE4f925A504a9A9810`,registryAddress:`0x7FC3D79EF9d01fA318CF2Aa5D91dDC492383Be0F`,executorAddress:`0x1B05DE5b67b8f8363DC04E3a5996a616f11f8C7B`},i={id:97,gatewayChainId:10901,relayerUrl:``,network:`https://bsc-testnet-rpc.publicnode.com`,aclContractAddress:`0x52470e945521E247Cb4754088a836Dc4b838AFBE`,kmsContractAddress:`0x788F5BB2d93aB4Cb67Fe2277757aE95006504F6F`,inputVerifierContractAddress:`0x49e0BAB39904E4192c30CFB58573Cbe27B7E398E`,verifyingContractAddressDecryption:`0x5ffdaAB0373E62E2ea2944776209aEf29E631A64`,verifyingContractAddressInputVerification:`0x812b06e1CDCE800494b79fFE4f925A504a9A9810`,registryAddress:`0xc0E8B73b1C58D846e1d4f8fAE2E1466C85BCeAeC`,executorAddress:`0x5985e48689550c1b2893ABfBbe4cc0eE3A22cc54`},a={id:31337,gatewayChainId:10901,relayerUrl:``,network:`http://127.0.0.1:8545`,aclContractAddress:`0x50157CFfD6bBFA2DECe204a89ec419c23ef5755D`,inputVerifierContractAddress:`0x36772142b74871f255CbD7A3e89B401d3e45825f`,kmsContractAddress:`0x901F8942346f7AB3a01F6D7613119Bca447Bb030`,verifyingContractAddressDecryption:`0x5ffdaAB0373E62E2ea2944776209aEf29E631A64`,verifyingContractAddressInputVerification:`0x812b06e1CDCE800494b79fFE4f925A504a9A9810`,registryAddress:void 0,executorAddress:`0xe3a9105a3a932253A70F126eb1E3b589C643dD24`},o=a,s={[e.id]:e,[t.id]:t,[n.id]:n,[r.id]:r,[i.id]:i,[a.id]:a};export{n as a,t as c,a as i,i as n,r as o,s as r,e as s,o as t};
|
|
2
|
-
//# sourceMappingURL=chains-CLv9HEJ_.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chains-CLv9HEJ_.js","names":[],"sources":["../../src/chains/configs.ts"],"sourcesContent":["import type { FheChain } from \"./types\";\n\n/**\n * Mainnet network configuration (chainId 1).\n */\nexport const mainnet = {\n id: 1,\n gatewayChainId: 261131,\n relayerUrl: \"https://relayer.mainnet.zama.org\",\n network: \"https://ethereum-rpc.publicnode.com\",\n aclContractAddress: \"0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6\",\n kmsContractAddress: \"0x77627828a55156b04Ac0DC0eb30467f1a552BB03\",\n inputVerifierContractAddress: \"0xCe0FC2e05CFff1B719EFF7169f7D80Af770c8EA2\",\n verifyingContractAddressDecryption: \"0x0f6024a97684f7d90ddb0fAAD79cB15F2C888D24\",\n verifyingContractAddressInputVerification: \"0xcB1bB072f38bdAF0F328CdEf1Fc6eDa1DF029287\",\n registryAddress: \"0xeb5015fF021DB115aCe010f23F55C2591059bBA0\",\n} as const satisfies FheChain;\n\n/**\n * Sepolia testnet network configuration (chainId 11155111).\n */\nexport const sepolia = {\n id: 11155111,\n gatewayChainId: 10901,\n relayerUrl: \"https://relayer.testnet.zama.org\",\n network: \"https://ethereum-sepolia-rpc.publicnode.com\",\n aclContractAddress: \"0xf0Ffdc93b7E186bC2f8CB3dAA75D86d1930A433D\",\n kmsContractAddress: \"0xbE0E383937d564D7FF0BC3b46c51f0bF8d5C311A\",\n inputVerifierContractAddress: \"0xBBC1fFCdc7C316aAAd72E807D9b0272BE8F84DA0\",\n verifyingContractAddressDecryption: \"0x5D8BD78e2ea6bbE41f26dFe9fdaEAa349e077478\",\n verifyingContractAddressInputVerification: \"0x483b9dE06E4E4C7D35CCf5837A1668487406D955\",\n registryAddress: \"0x2f0750Bbb0A246059d80e94c454586a7F27a128e\",\n} as const satisfies FheChain;\n\n/**\n * Hoodi testnet configuration (chainId 560048).\n *\n * Hoodi does not have full FHE infrastructure — use with `cleartext()` transport.\n * Contract addresses match the cleartext deployment.\n */\nexport const hoodi = {\n id: 560048,\n gatewayChainId: 10901,\n relayerUrl: \"\",\n network: \"https://rpc.hoodi.ethpandaops.io\",\n aclContractAddress: \"0x6D3FAf6f86e1fF9F3B0831Dda920AbA1cBd5bd68\",\n kmsContractAddress: \"0x822BE20679CfAfdc352F05dEdfe12a07E912212e\",\n inputVerifierContractAddress: \"0xf3D9A51f32D9bC23E1eECb0fAbF1f1DA4d9Bba26\",\n verifyingContractAddressDecryption: \"0x5ffdaAB0373E62E2ea2944776209aEf29E631A64\",\n verifyingContractAddressInputVerification: \"0x812b06e1CDCE800494b79fFE4f925A504a9A9810\",\n registryAddress: \"0x1807aE2f693F8530DFB126D0eF98F2F2518F292f\",\n executorAddress: \"0xC316692627de536368d82e9121F1D44a550894E6\",\n} as const satisfies FheChain;\n\n/**\n * T-Rex InGen testnet configuration (chainId 364301).\n *\n * InGen does not have full FHE infrastructure — use with `cleartext()` transport.\n * Contract addresses match the cleartext deployment.\n */\nexport const ingenTestnet = {\n id: 364301,\n gatewayChainId: 10901,\n relayerUrl: \"\",\n network: \"https://rpc.ingen.t-rex.network\",\n aclContractAddress: \"0x09a4710BfBe7B557cD5CFE88BB31e9b5b85C419b\",\n kmsContractAddress: \"0xd885DEa6a924785fCcdf9CE993FEe27EA11832e6\",\n inputVerifierContractAddress: \"0x90f05B10db153365D8cB143EA17f5E5714D0bCD5\",\n verifyingContractAddressDecryption: \"0x5ffdaAB0373E62E2ea2944776209aEf29E631A64\",\n verifyingContractAddressInputVerification: \"0x812b06e1CDCE800494b79fFE4f925A504a9A9810\",\n registryAddress: \"0x7FC3D79EF9d01fA318CF2Aa5D91dDC492383Be0F\",\n executorAddress: \"0x1B05DE5b67b8f8363DC04E3a5996a616f11f8C7B\",\n} as const satisfies FheChain;\n\n/**\n * BNB Smart Chain testnet configuration (chainId 97, Chapel).\n *\n * BSC testnet does not have full FHE infrastructure — use with `cleartext()` transport.\n * Contract addresses match the cleartext deployment.\n */\nexport const bscTestnet = {\n id: 97,\n gatewayChainId: 10901,\n relayerUrl: \"\",\n network: \"https://bsc-testnet-rpc.publicnode.com\",\n aclContractAddress: \"0x52470e945521E247Cb4754088a836Dc4b838AFBE\",\n kmsContractAddress: \"0x788F5BB2d93aB4Cb67Fe2277757aE95006504F6F\",\n inputVerifierContractAddress: \"0x49e0BAB39904E4192c30CFB58573Cbe27B7E398E\",\n verifyingContractAddressDecryption: \"0x5ffdaAB0373E62E2ea2944776209aEf29E631A64\",\n verifyingContractAddressInputVerification: \"0x812b06e1CDCE800494b79fFE4f925A504a9A9810\",\n registryAddress: \"0xc0E8B73b1C58D846e1d4f8fAE2E1466C85BCeAeC\",\n executorAddress: \"0x5985e48689550c1b2893ABfBbe4cc0eE3A22cc54\",\n} as const satisfies FheChain;\n\n/**\n * Hardhat local network configuration (chainId 31337).\n *\n * The addresses in this configuration must match those of your deployment.\n */\nexport const hardhat = {\n id: 31337,\n gatewayChainId: 10901,\n relayerUrl: \"\",\n network: \"http://127.0.0.1:8545\",\n aclContractAddress: \"0x50157CFfD6bBFA2DECe204a89ec419c23ef5755D\",\n inputVerifierContractAddress: \"0x36772142b74871f255CbD7A3e89B401d3e45825f\",\n kmsContractAddress: \"0x901F8942346f7AB3a01F6D7613119Bca447Bb030\",\n verifyingContractAddressDecryption: \"0x5ffdaAB0373E62E2ea2944776209aEf29E631A64\",\n verifyingContractAddressInputVerification: \"0x812b06e1CDCE800494b79fFE4f925A504a9A9810\",\n registryAddress: undefined,\n executorAddress: \"0xe3a9105a3a932253A70F126eb1E3b589C643dD24\",\n} as const satisfies FheChain;\n\n/** Alias for {@link hardhat}. */\nexport const anvil = hardhat;\n\n/**\n * Built-in chain configurations keyed by chain ID.\n */\nexport const chains: Record<number, FheChain> = {\n [mainnet.id]: mainnet,\n [sepolia.id]: sepolia,\n [hoodi.id]: hoodi,\n [ingenTestnet.id]: ingenTestnet,\n [bscTestnet.id]: bscTestnet,\n [hardhat.id]: hardhat,\n} as const;\n"],"mappings":"AAKA,MAAa,EAAU,CACrB,GAAI,EACJ,eAAgB,OAChB,WAAY,mCACZ,QAAS,sCACT,mBAAoB,6CACpB,mBAAoB,6CACpB,6BAA8B,6CAC9B,mCAAoC,6CACpC,0CAA2C,6CAC3C,gBAAiB,4CACnB,EAKa,EAAU,CACrB,GAAI,SACJ,eAAgB,MAChB,WAAY,mCACZ,QAAS,8CACT,mBAAoB,6CACpB,mBAAoB,6CACpB,6BAA8B,6CAC9B,mCAAoC,6CACpC,0CAA2C,6CAC3C,gBAAiB,4CACnB,EAQa,EAAQ,CACnB,GAAI,OACJ,eAAgB,MAChB,WAAY,GACZ,QAAS,mCACT,mBAAoB,6CACpB,mBAAoB,6CACpB,6BAA8B,6CAC9B,mCAAoC,6CACpC,0CAA2C,6CAC3C,gBAAiB,6CACjB,gBAAiB,4CACnB,EAQa,EAAe,CAC1B,GAAI,OACJ,eAAgB,MAChB,WAAY,GACZ,QAAS,kCACT,mBAAoB,6CACpB,mBAAoB,6CACpB,6BAA8B,6CAC9B,mCAAoC,6CACpC,0CAA2C,6CAC3C,gBAAiB,6CACjB,gBAAiB,4CACnB,EAQa,EAAa,CACxB,GAAI,GACJ,eAAgB,MAChB,WAAY,GACZ,QAAS,yCACT,mBAAoB,6CACpB,mBAAoB,6CACpB,6BAA8B,6CAC9B,mCAAoC,6CACpC,0CAA2C,6CAC3C,gBAAiB,6CACjB,gBAAiB,4CACnB,EAOa,EAAU,CACrB,GAAI,MACJ,eAAgB,MAChB,WAAY,GACZ,QAAS,wBACT,mBAAoB,6CACpB,6BAA8B,6CAC9B,mBAAoB,6CACpB,mCAAoC,6CACpC,0CAA2C,6CAC3C,gBAAiB,IAAA,GACjB,gBAAiB,4CACnB,EAGa,EAAQ,EAKR,EAAmC,EAC7C,EAAQ,IAAK,GACb,EAAQ,IAAK,GACb,EAAM,IAAK,GACX,EAAa,IAAK,GAClB,EAAW,IAAK,GAChB,EAAQ,IAAK,CAChB"}
|