@zama-fhe/sdk 1.0.0-alpha.10

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.
Files changed (38) hide show
  1. package/LICENSE +28 -0
  2. package/README.md +801 -0
  3. package/dist/chunk-5QJTGZHY.js +101 -0
  4. package/dist/chunk-5QJTGZHY.js.map +1 -0
  5. package/dist/chunk-6JRD26PS.js +114 -0
  6. package/dist/chunk-6JRD26PS.js.map +1 -0
  7. package/dist/chunk-PHE3BSIB.js +5143 -0
  8. package/dist/chunk-PHE3BSIB.js.map +1 -0
  9. package/dist/chunk-UF47M3QR.js +32 -0
  10. package/dist/chunk-UF47M3QR.js.map +1 -0
  11. package/dist/chunk-WYWAO3QE.js +182 -0
  12. package/dist/chunk-WYWAO3QE.js.map +1 -0
  13. package/dist/cleartext/index.d.ts +45 -0
  14. package/dist/cleartext/index.js +522 -0
  15. package/dist/cleartext/index.js.map +1 -0
  16. package/dist/ethers/index.d.ts +86 -0
  17. package/dist/ethers/index.js +148 -0
  18. package/dist/ethers/index.js.map +1 -0
  19. package/dist/index.d.ts +33405 -0
  20. package/dist/index.js +3563 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/node/index.d.ts +195 -0
  23. package/dist/node/index.js +337 -0
  24. package/dist/node/index.js.map +1 -0
  25. package/dist/relayer-sdk-Dh9aQmBm.d.ts +39 -0
  26. package/dist/relayer-sdk.node-worker.d.ts +2 -0
  27. package/dist/relayer-sdk.node-worker.js +348 -0
  28. package/dist/relayer-sdk.node-worker.js.map +1 -0
  29. package/dist/relayer-sdk.types-CgHZ6qZn.d.ts +327 -0
  30. package/dist/relayer-sdk.worker.js +511 -0
  31. package/dist/relayer-sdk.worker.js.map +1 -0
  32. package/dist/relayer-utils-phBmWrNB.d.ts +10 -0
  33. package/dist/token.types-CUTkehsp.d.ts +299 -0
  34. package/dist/transfer-batcher-CNtrNMz6.d.ts +197 -0
  35. package/dist/viem/index.d.ts +58 -0
  36. package/dist/viem/index.js +143 -0
  37. package/dist/viem/index.js.map +1 -0
  38. package/package.json +90 -0
@@ -0,0 +1,101 @@
1
+ // src/relayer/relayer-utils.ts
2
+ var MAX_RETRIES = 2;
3
+ var RETRY_BASE_MS = 500;
4
+ async function withRetry(fn, retries = MAX_RETRIES) {
5
+ let lastError;
6
+ for (let attempt = 0; attempt <= retries; attempt++) {
7
+ try {
8
+ return await fn();
9
+ } catch (error) {
10
+ lastError = error;
11
+ if (attempt < retries && isTransientError(error)) {
12
+ await sleep(RETRY_BASE_MS * 2 ** attempt);
13
+ continue;
14
+ }
15
+ throw error;
16
+ }
17
+ }
18
+ throw lastError;
19
+ }
20
+ function isTransientError(error) {
21
+ if (!(error instanceof Error)) return false;
22
+ const msg = error.message.toLowerCase();
23
+ return msg.includes("timed out") || msg.includes("timeout") || msg.includes("econnreset") || msg.includes("econnrefused") || msg.includes("network") || msg.includes("fetch failed") || msg.includes("socket hang up") || msg.includes("502") || msg.includes("503") || msg.includes("504");
24
+ }
25
+ function sleep(ms) {
26
+ return new Promise((resolve) => setTimeout(resolve, ms));
27
+ }
28
+ function convertToBigIntRecord(result) {
29
+ const clearValues = {};
30
+ for (const [handle, value] of Object.entries(result)) {
31
+ if (typeof value === "bigint") {
32
+ clearValues[handle] = value;
33
+ } else if (typeof value === "boolean") {
34
+ clearValues[handle] = value ? BigInt(1) : BigInt(0);
35
+ } else if (typeof value === "string" || typeof value === "number") {
36
+ clearValues[handle] = BigInt(value);
37
+ } else {
38
+ throw new TypeError(`Unexpected decrypted value type for handle ${handle}: ${typeof value}`);
39
+ }
40
+ }
41
+ return clearValues;
42
+ }
43
+ var MainnetConfig = {
44
+ chainId: 1,
45
+ gatewayChainId: 261131,
46
+ relayerUrl: "https://relayer.mainnet.zama.org/v2",
47
+ network: "https://ethereum-rpc.publicnode.com",
48
+ aclContractAddress: "0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6",
49
+ kmsContractAddress: "0x77627828a55156b04Ac0DC0eb30467f1a552BB03",
50
+ inputVerifierContractAddress: "0xCe0FC2e05CFff1B719EFF7169f7D80Af770c8EA2",
51
+ verifyingContractAddressDecryption: "0x0f6024a97684f7d90ddb0fAAD79cB15F2C888D24",
52
+ verifyingContractAddressInputVerification: "0xcB1bB072f38bdAF0F328CdEf1Fc6eDa1DF029287"
53
+ };
54
+ var SepoliaConfig = {
55
+ chainId: 11155111,
56
+ gatewayChainId: 10901,
57
+ relayerUrl: "https://relayer.testnet.zama.org/v2",
58
+ network: "https://ethereum-sepolia-rpc.publicnode.com",
59
+ aclContractAddress: "0xf0Ffdc93b7E186bC2f8CB3dAA75D86d1930A433D",
60
+ kmsContractAddress: "0xbE0E383937d564D7FF0BC3b46c51f0bF8d5C311A",
61
+ inputVerifierContractAddress: "0xBBC1fFCdc7C316aAAd72E807D9b0272BE8F84DA0",
62
+ verifyingContractAddressDecryption: "0x5D8BD78e2ea6bbE41f26dFe9fdaEAa349e077478",
63
+ verifyingContractAddressInputVerification: "0x483b9dE06E4E4C7D35CCf5837A1668487406D955"
64
+ };
65
+ var HardhatConfig = {
66
+ chainId: 31337,
67
+ gatewayChainId: 10901,
68
+ relayerUrl: "",
69
+ network: "http://127.0.0.1:8545",
70
+ aclContractAddress: "0x50157CFfD6bBFA2DECe204a89ec419c23ef5755D",
71
+ inputVerifierContractAddress: "0x36772142b74871f255CbD7A3e89B401d3e45825f",
72
+ kmsContractAddress: "0xbE0E383937d564D7FF0BC3b46c51f0bF8d5C311A",
73
+ verifyingContractAddressDecryption: "0x5ffdaAB0373E62E2ea2944776209aEf29E631A64",
74
+ verifyingContractAddressInputVerification: "0x812b06e1CDCE800494b79fFE4f925A504a9A9810"
75
+ };
76
+ var DefaultConfigs = {
77
+ [1]: MainnetConfig,
78
+ [11155111]: SepoliaConfig,
79
+ [31337]: HardhatConfig
80
+ };
81
+ var DOMAIN_FIELD_TYPES = {
82
+ name: "string",
83
+ version: "string",
84
+ chainId: "uint256",
85
+ verifyingContract: "address",
86
+ salt: "bytes32"
87
+ };
88
+ function buildEIP712DomainType(domain) {
89
+ return Object.keys(DOMAIN_FIELD_TYPES).filter((k) => k in domain).map((k) => ({ name: k, type: DOMAIN_FIELD_TYPES[k] }));
90
+ }
91
+ function mergeFhevmConfig(chainId, overrides) {
92
+ const base = DefaultConfigs[chainId];
93
+ if (!base && (!overrides || Object.keys(overrides).length === 0)) {
94
+ throw new Error(`No config for chainId: ${chainId}`);
95
+ }
96
+ return { ...base, ...overrides };
97
+ }
98
+
99
+ export { HardhatConfig, MainnetConfig, SepoliaConfig, buildEIP712DomainType, convertToBigIntRecord, mergeFhevmConfig, withRetry };
100
+ //# sourceMappingURL=chunk-5QJTGZHY.js.map
101
+ //# sourceMappingURL=chunk-5QJTGZHY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/relayer/relayer-utils.ts"],"names":[],"mappings":"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","file":"chunk-5QJTGZHY.js","sourcesContent":["import type { EIP712TypedData, FhevmInstanceConfig } from \"./relayer-sdk.types\";\n\nconst MAX_RETRIES = 2;\nconst RETRY_BASE_MS = 500;\n\n/**\n * Retry an async operation with exponential backoff.\n * Only retries on transient errors (timeout, network). Does not retry user-facing errors.\n */\nexport async function withRetry<T>(fn: () => Promise<T>, retries = MAX_RETRIES): Promise<T> {\n let lastError: unknown;\n for (let attempt = 0; attempt <= retries; attempt++) {\n try {\n return await fn();\n } catch (error) {\n lastError = error;\n if (attempt < retries && isTransientError(error)) {\n await sleep(RETRY_BASE_MS * 2 ** attempt);\n continue;\n }\n throw error;\n }\n }\n throw lastError;\n}\n\nfunction isTransientError(error: unknown): boolean {\n if (!(error instanceof Error)) return false;\n const msg = error.message.toLowerCase();\n return (\n msg.includes(\"timed out\") ||\n msg.includes(\"timeout\") ||\n msg.includes(\"econnreset\") ||\n msg.includes(\"econnrefused\") ||\n msg.includes(\"network\") ||\n msg.includes(\"fetch failed\") ||\n msg.includes(\"socket hang up\") ||\n msg.includes(\"502\") ||\n msg.includes(\"503\") ||\n msg.includes(\"504\")\n );\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Convert SDK result values to bigint record.\n * Handles bigint, boolean, string, and number values.\n */\nexport function convertToBigIntRecord(result: Record<string, unknown>): Record<string, bigint> {\n const clearValues: Record<string, bigint> = {};\n for (const [handle, value] of Object.entries(result)) {\n if (typeof value === \"bigint\") {\n clearValues[handle] = value;\n } else if (typeof value === \"boolean\") {\n clearValues[handle] = value ? BigInt(1) : BigInt(0);\n } else if (typeof value === \"string\" || typeof value === \"number\") {\n clearValues[handle] = BigInt(value);\n } else {\n throw new TypeError(`Unexpected decrypted value type for handle ${handle}: ${typeof value}`);\n }\n }\n return clearValues;\n}\n\n/** Mainnet network configuration (chainId 1). */\nexport const MainnetConfig: FhevmInstanceConfig = {\n chainId: 1,\n gatewayChainId: 261131,\n relayerUrl: \"https://relayer.mainnet.zama.org/v2\",\n network: \"https://ethereum-rpc.publicnode.com\",\n aclContractAddress: \"0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6\",\n kmsContractAddress: \"0x77627828a55156b04Ac0DC0eb30467f1a552BB03\",\n inputVerifierContractAddress: \"0xCe0FC2e05CFff1B719EFF7169f7D80Af770c8EA2\",\n verifyingContractAddressDecryption: \"0x0f6024a97684f7d90ddb0fAAD79cB15F2C888D24\",\n verifyingContractAddressInputVerification: \"0xcB1bB072f38bdAF0F328CdEf1Fc6eDa1DF029287\",\n} as const;\n\n/** Sepolia testnet network configuration (chainId 11155111). */\nexport const SepoliaConfig: FhevmInstanceConfig = {\n chainId: 11155111,\n gatewayChainId: 10901,\n relayerUrl: \"https://relayer.testnet.zama.org/v2\",\n network: \"https://ethereum-sepolia-rpc.publicnode.com\",\n aclContractAddress: \"0xf0Ffdc93b7E186bC2f8CB3dAA75D86d1930A433D\",\n kmsContractAddress: \"0xbE0E383937d564D7FF0BC3b46c51f0bF8d5C311A\",\n inputVerifierContractAddress: \"0xBBC1fFCdc7C316aAAd72E807D9b0272BE8F84DA0\",\n verifyingContractAddressDecryption: \"0x5D8BD78e2ea6bbE41f26dFe9fdaEAa349e077478\",\n verifyingContractAddressInputVerification: \"0x483b9dE06E4E4C7D35CCf5837A1668487406D955\",\n} as const;\n\n/** Hardhat local network configuration (chainId 31337). */\nexport const HardhatConfig: FhevmInstanceConfig = {\n chainId: 31337,\n gatewayChainId: 10901,\n relayerUrl: \"\",\n network: \"http://127.0.0.1:8545\",\n aclContractAddress: \"0x50157CFfD6bBFA2DECe204a89ec419c23ef5755D\",\n inputVerifierContractAddress: \"0x36772142b74871f255CbD7A3e89B401d3e45825f\",\n kmsContractAddress: \"0xbE0E383937d564D7FF0BC3b46c51f0bF8d5C311A\",\n verifyingContractAddressDecryption: \"0x5ffdaAB0373E62E2ea2944776209aEf29E631A64\",\n verifyingContractAddressInputVerification: \"0x812b06e1CDCE800494b79fFE4f925A504a9A9810\",\n} as const;\n\nexport const DefaultConfigs: Record<number, FhevmInstanceConfig> = {\n [1]: MainnetConfig,\n [11155111]: SepoliaConfig,\n [31337]: HardhatConfig,\n} as const;\n\n/** EIP-712 domain field → Solidity type. Order follows the EIP-712 spec. */\nconst DOMAIN_FIELD_TYPES: Record<string, string> = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\",\n};\n\n/**\n * Build `EIP712Domain` type entries from the keys present in a domain object.\n * Order matches the EIP-712 spec (name → version → chainId → verifyingContract → salt).\n */\nexport function buildEIP712DomainType(\n domain: EIP712TypedData[\"domain\"],\n): Array<{ name: string; type: string }> {\n return Object.keys(DOMAIN_FIELD_TYPES)\n .filter((k) => k in domain)\n .map((k) => ({ name: k, type: DOMAIN_FIELD_TYPES[k]! }));\n}\n\n/**\n * Merge user overrides on top of SDK defaults for a given chain.\n */\nexport function mergeFhevmConfig(\n chainId: number,\n overrides?: Partial<FhevmInstanceConfig>,\n): FhevmInstanceConfig {\n const base = DefaultConfigs[chainId];\n if (!base && (!overrides || Object.keys(overrides).length === 0)) {\n throw new Error(`No config for chainId: ${chainId}`);\n }\n return { ...base, ...overrides } as FhevmInstanceConfig;\n}\n"]}
@@ -0,0 +1,114 @@
1
+ // src/token/errors.ts
2
+ var ZamaErrorCode = {
3
+ /** User rejected the wallet signature prompt. */
4
+ SigningRejected: "SIGNING_REJECTED",
5
+ /** Wallet signature failed for a reason other than rejection. */
6
+ SigningFailed: "SIGNING_FAILED",
7
+ /** FHE encryption failed. */
8
+ EncryptionFailed: "ENCRYPTION_FAILED",
9
+ /** FHE decryption failed. */
10
+ DecryptionFailed: "DECRYPTION_FAILED",
11
+ /** ERC-20 approval transaction failed. */
12
+ ApprovalFailed: "APPROVAL_FAILED",
13
+ /** On-chain transaction reverted. */
14
+ TransactionReverted: "TRANSACTION_REVERTED",
15
+ /** FHE credentials have expired and need regeneration. */
16
+ CredentialExpired: "CREDENTIAL_EXPIRED",
17
+ /** Relayer rejected credentials (stale, expired, or malformed). */
18
+ InvalidCredentials: "INVALID_CREDENTIALS",
19
+ /** No FHE ciphertext exists for this account (never shielded). */
20
+ NoCiphertext: "NO_CIPHERTEXT",
21
+ /** Relayer HTTP request failed. */
22
+ RelayerRequestFailed: "RELAYER_REQUEST_FAILED",
23
+ /** SDK configuration is invalid (e.g. forbidden chain ID, unsupported type). */
24
+ Configuration: "CONFIGURATION"
25
+ };
26
+ var ZamaError = class extends Error {
27
+ /** Machine-readable error code. */
28
+ code;
29
+ constructor(code, message, options) {
30
+ super(message, options);
31
+ this.name = "ZamaError";
32
+ this.code = code;
33
+ }
34
+ };
35
+ var SigningRejectedError = class extends ZamaError {
36
+ constructor(message, options) {
37
+ super(ZamaErrorCode.SigningRejected, message, options);
38
+ this.name = "SigningRejectedError";
39
+ }
40
+ };
41
+ var SigningFailedError = class extends ZamaError {
42
+ constructor(message, options) {
43
+ super(ZamaErrorCode.SigningFailed, message, options);
44
+ this.name = "SigningFailedError";
45
+ }
46
+ };
47
+ var EncryptionFailedError = class extends ZamaError {
48
+ constructor(message, options) {
49
+ super(ZamaErrorCode.EncryptionFailed, message, options);
50
+ this.name = "EncryptionFailedError";
51
+ }
52
+ };
53
+ var DecryptionFailedError = class extends ZamaError {
54
+ constructor(message, options) {
55
+ super(ZamaErrorCode.DecryptionFailed, message, options);
56
+ this.name = "DecryptionFailedError";
57
+ }
58
+ };
59
+ var ApprovalFailedError = class extends ZamaError {
60
+ constructor(message, options) {
61
+ super(ZamaErrorCode.ApprovalFailed, message, options);
62
+ this.name = "ApprovalFailedError";
63
+ }
64
+ };
65
+ var TransactionRevertedError = class extends ZamaError {
66
+ constructor(message, options) {
67
+ super(ZamaErrorCode.TransactionReverted, message, options);
68
+ this.name = "TransactionRevertedError";
69
+ }
70
+ };
71
+ var CredentialExpiredError = class extends ZamaError {
72
+ constructor(message, options) {
73
+ super(ZamaErrorCode.CredentialExpired, message, options);
74
+ this.name = "CredentialExpiredError";
75
+ }
76
+ };
77
+ var InvalidCredentialsError = class extends ZamaError {
78
+ constructor(message, options) {
79
+ super(ZamaErrorCode.InvalidCredentials, message, options);
80
+ this.name = "InvalidCredentialsError";
81
+ }
82
+ };
83
+ var NoCiphertextError = class extends ZamaError {
84
+ constructor(message, options) {
85
+ super(ZamaErrorCode.NoCiphertext, message, options);
86
+ this.name = "NoCiphertextError";
87
+ }
88
+ };
89
+ var RelayerRequestFailedError = class extends ZamaError {
90
+ /** HTTP status code from the relayer, if available. */
91
+ statusCode;
92
+ constructor(message, statusCode, options) {
93
+ super(ZamaErrorCode.RelayerRequestFailed, message, options);
94
+ this.name = "RelayerRequestFailedError";
95
+ this.statusCode = statusCode;
96
+ }
97
+ };
98
+ var ConfigurationError = class extends ZamaError {
99
+ constructor(message, options) {
100
+ super(ZamaErrorCode.Configuration, message, options);
101
+ this.name = "ConfigurationError";
102
+ }
103
+ };
104
+ function matchZamaError(error, handlers) {
105
+ if (error instanceof ZamaError) {
106
+ const handler = handlers[error.code];
107
+ if (handler) return handler(error);
108
+ }
109
+ return handlers._?.(error);
110
+ }
111
+
112
+ export { ApprovalFailedError, ConfigurationError, CredentialExpiredError, DecryptionFailedError, EncryptionFailedError, InvalidCredentialsError, NoCiphertextError, RelayerRequestFailedError, SigningFailedError, SigningRejectedError, TransactionRevertedError, ZamaError, ZamaErrorCode, matchZamaError };
113
+ //# sourceMappingURL=chunk-6JRD26PS.js.map
114
+ //# sourceMappingURL=chunk-6JRD26PS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/token/errors.ts"],"names":[],"mappings":"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","file":"chunk-6JRD26PS.js","sourcesContent":["/**\n * Typed error codes thrown by the SDK.\n * Use `error.code` or `instanceof` to programmatically handle specific failure modes.\n *\n * @example\n * ```ts\n * try {\n * await token.confidentialTransfer(\"0xTo\", 100n);\n * } catch (e) {\n * if (e instanceof SigningRejectedError) {\n * // User rejected the wallet signature\n * }\n * }\n * ```\n */\nexport const ZamaErrorCode = {\n /** User rejected the wallet signature prompt. */\n SigningRejected: \"SIGNING_REJECTED\",\n /** Wallet signature failed for a reason other than rejection. */\n SigningFailed: \"SIGNING_FAILED\",\n /** FHE encryption failed. */\n EncryptionFailed: \"ENCRYPTION_FAILED\",\n /** FHE decryption failed. */\n DecryptionFailed: \"DECRYPTION_FAILED\",\n /** ERC-20 approval transaction failed. */\n ApprovalFailed: \"APPROVAL_FAILED\",\n /** On-chain transaction reverted. */\n TransactionReverted: \"TRANSACTION_REVERTED\",\n /** FHE credentials have expired and need regeneration. */\n CredentialExpired: \"CREDENTIAL_EXPIRED\",\n /** Relayer rejected credentials (stale, expired, or malformed). */\n InvalidCredentials: \"INVALID_CREDENTIALS\",\n /** No FHE ciphertext exists for this account (never shielded). */\n NoCiphertext: \"NO_CIPHERTEXT\",\n /** Relayer HTTP request failed. */\n RelayerRequestFailed: \"RELAYER_REQUEST_FAILED\",\n /** SDK configuration is invalid (e.g. forbidden chain ID, unsupported type). */\n Configuration: \"CONFIGURATION\",\n} as const;\n\n/** Union of all {@link ZamaErrorCode} string values. */\nexport type ZamaErrorCode = (typeof ZamaErrorCode)[keyof typeof ZamaErrorCode];\n\n/**\n * Base error thrown by all SDK operations.\n * Carries a {@link ZamaErrorCode} for programmatic error handling.\n * Prefer catching specific subclasses (e.g. {@link EncryptionFailedError}).\n */\nexport class ZamaError extends Error {\n /** Machine-readable error code. */\n readonly code: ZamaErrorCode;\n\n constructor(code: ZamaErrorCode, message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = \"ZamaError\";\n this.code = code;\n }\n}\n\n/** User rejected the wallet signature prompt. */\nexport class SigningRejectedError extends ZamaError {\n constructor(message: string, options?: ErrorOptions) {\n super(ZamaErrorCode.SigningRejected, message, options);\n this.name = \"SigningRejectedError\";\n }\n}\n\n/** Wallet signature failed for a reason other than rejection. */\nexport class SigningFailedError extends ZamaError {\n constructor(message: string, options?: ErrorOptions) {\n super(ZamaErrorCode.SigningFailed, message, options);\n this.name = \"SigningFailedError\";\n }\n}\n\n/** FHE encryption failed. */\nexport class EncryptionFailedError extends ZamaError {\n constructor(message: string, options?: ErrorOptions) {\n super(ZamaErrorCode.EncryptionFailed, message, options);\n this.name = \"EncryptionFailedError\";\n }\n}\n\n/** FHE decryption failed. */\nexport class DecryptionFailedError extends ZamaError {\n constructor(message: string, options?: ErrorOptions) {\n super(ZamaErrorCode.DecryptionFailed, message, options);\n this.name = \"DecryptionFailedError\";\n }\n}\n\n/** ERC-20 approval transaction failed. */\nexport class ApprovalFailedError extends ZamaError {\n constructor(message: string, options?: ErrorOptions) {\n super(ZamaErrorCode.ApprovalFailed, message, options);\n this.name = \"ApprovalFailedError\";\n }\n}\n\n/** On-chain transaction reverted. */\nexport class TransactionRevertedError extends ZamaError {\n constructor(message: string, options?: ErrorOptions) {\n super(ZamaErrorCode.TransactionReverted, message, options);\n this.name = \"TransactionRevertedError\";\n }\n}\n\n/** FHE credentials have expired and need regeneration. */\nexport class CredentialExpiredError extends ZamaError {\n constructor(message: string, options?: ErrorOptions) {\n super(ZamaErrorCode.CredentialExpired, message, options);\n this.name = \"CredentialExpiredError\";\n }\n}\n\n/** Relayer rejected credentials (stale, expired, or malformed). */\nexport class InvalidCredentialsError extends ZamaError {\n constructor(message: string, options?: ErrorOptions) {\n super(ZamaErrorCode.InvalidCredentials, message, options);\n this.name = \"InvalidCredentialsError\";\n }\n}\n\n/** No FHE ciphertext exists for this account (never shielded). */\nexport class NoCiphertextError extends ZamaError {\n constructor(message: string, options?: ErrorOptions) {\n super(ZamaErrorCode.NoCiphertext, message, options);\n this.name = \"NoCiphertextError\";\n }\n}\n\n/** Relayer HTTP request failed. */\nexport class RelayerRequestFailedError extends ZamaError {\n /** HTTP status code from the relayer, if available. */\n readonly statusCode: number | undefined;\n\n constructor(message: string, statusCode?: number, options?: ErrorOptions) {\n super(ZamaErrorCode.RelayerRequestFailed, message, options);\n this.name = \"RelayerRequestFailedError\";\n this.statusCode = statusCode;\n }\n}\n\n/** SDK configuration is invalid (e.g. forbidden chain ID, unsupported type). */\nexport class ConfigurationError extends ZamaError {\n constructor(message: string, options?: ErrorOptions) {\n super(ZamaErrorCode.Configuration, message, options);\n this.name = \"ConfigurationError\";\n }\n}\n\n/**\n * Pattern-match on a {@link ZamaError} by its error code.\n * Falls through to the `_` wildcard handler if no specific handler matches.\n * Returns `undefined` if the error is not a `ZamaError` and no `_` handler is provided.\n *\n * @example\n * ```ts\n * matchZamaError(error, {\n * SIGNING_REJECTED: () => toast(\"Please approve in wallet\"),\n * TRANSACTION_REVERTED: (e) => toast(`Tx failed: ${e.message}`),\n * _: () => toast(\"Unknown error\"),\n * });\n * ```\n */\nexport function matchZamaError<R>(\n error: unknown,\n handlers: Partial<Record<ZamaErrorCode, (error: ZamaError) => R>> & {\n _?: (error: unknown) => R;\n },\n): R | undefined {\n if (error instanceof ZamaError) {\n const handler = handlers[error.code];\n if (handler) return handler(error);\n }\n return handlers._?.(error);\n}\n"]}