@beclab/olaresid 0.1.1 → 0.1.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.
Files changed (93) hide show
  1. package/CLI.md +1300 -0
  2. package/README.md +40 -31
  3. package/TAG.md +589 -0
  4. package/dist/abi/RootResolver2ABI.d.ts +54 -0
  5. package/dist/abi/RootResolver2ABI.d.ts.map +1 -0
  6. package/dist/abi/RootResolver2ABI.js +240 -0
  7. package/dist/abi/RootResolver2ABI.js.map +1 -0
  8. package/dist/business/index.d.ts +302 -0
  9. package/dist/business/index.d.ts.map +1 -0
  10. package/dist/business/index.js +1211 -0
  11. package/dist/business/index.js.map +1 -0
  12. package/dist/business/tag-context.d.ts +219 -0
  13. package/dist/business/tag-context.d.ts.map +1 -0
  14. package/dist/business/tag-context.js +560 -0
  15. package/dist/business/tag-context.js.map +1 -0
  16. package/dist/cli.js +2102 -39
  17. package/dist/cli.js.map +1 -1
  18. package/dist/debug.d.ts.map +1 -1
  19. package/dist/debug.js +14 -2
  20. package/dist/debug.js.map +1 -1
  21. package/dist/index.d.ts +51 -2
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +241 -12
  24. package/dist/index.js.map +1 -1
  25. package/dist/utils/crypto-utils.d.ts +130 -0
  26. package/dist/utils/crypto-utils.d.ts.map +1 -0
  27. package/dist/utils/crypto-utils.js +402 -0
  28. package/dist/utils/crypto-utils.js.map +1 -0
  29. package/dist/utils/error-parser.d.ts +35 -0
  30. package/dist/utils/error-parser.d.ts.map +1 -0
  31. package/dist/utils/error-parser.js +202 -0
  32. package/dist/utils/error-parser.js.map +1 -0
  33. package/dist/utils/olares-id.d.ts +36 -0
  34. package/dist/utils/olares-id.d.ts.map +1 -0
  35. package/dist/utils/olares-id.js +52 -0
  36. package/dist/utils/olares-id.js.map +1 -0
  37. package/dist/utils/tag-abi-codec.d.ts +69 -0
  38. package/dist/utils/tag-abi-codec.d.ts.map +1 -0
  39. package/dist/utils/tag-abi-codec.js +144 -0
  40. package/dist/utils/tag-abi-codec.js.map +1 -0
  41. package/dist/utils/tag-type-builder.d.ts +158 -0
  42. package/dist/utils/tag-type-builder.d.ts.map +1 -0
  43. package/dist/utils/tag-type-builder.js +410 -0
  44. package/dist/utils/tag-type-builder.js.map +1 -0
  45. package/examples/crypto-utilities.ts +140 -0
  46. package/examples/domain-context.ts +80 -0
  47. package/examples/generate-mnemonic.ts +149 -0
  48. package/examples/index.ts +1 -1
  49. package/examples/ip.ts +171 -0
  50. package/examples/legacy.ts +10 -10
  51. package/examples/list-wallets.ts +81 -0
  52. package/examples/olares-id-format.ts +197 -0
  53. package/examples/quasar-demo/.eslintrc.js +23 -0
  54. package/examples/quasar-demo/.quasar/app.js +43 -0
  55. package/examples/quasar-demo/.quasar/client-entry.js +38 -0
  56. package/examples/quasar-demo/.quasar/client-prefetch.js +130 -0
  57. package/examples/quasar-demo/.quasar/quasar-user-options.js +16 -0
  58. package/examples/quasar-demo/README.md +49 -0
  59. package/examples/quasar-demo/index.html +11 -0
  60. package/examples/quasar-demo/package-lock.json +6407 -0
  61. package/examples/quasar-demo/package.json +36 -0
  62. package/examples/quasar-demo/quasar.config.js +73 -0
  63. package/examples/quasar-demo/src/App.vue +13 -0
  64. package/examples/quasar-demo/src/css/app.scss +1 -0
  65. package/examples/quasar-demo/src/layouts/MainLayout.vue +21 -0
  66. package/examples/quasar-demo/src/pages/IndexPage.vue +905 -0
  67. package/examples/quasar-demo/src/router/index.ts +25 -0
  68. package/examples/quasar-demo/src/router/routes.ts +11 -0
  69. package/examples/quasar-demo/tsconfig.json +28 -0
  70. package/examples/register-subdomain.ts +152 -0
  71. package/examples/rsa-keypair.ts +148 -0
  72. package/examples/tag-builder.ts +235 -0
  73. package/examples/tag-management.ts +534 -0
  74. package/examples/tag-nested-tuple.ts +190 -0
  75. package/examples/tag-simple.ts +149 -0
  76. package/examples/tag-tagger.ts +217 -0
  77. package/examples/test-nested-tuple-conversion.ts +143 -0
  78. package/examples/test-type-bytes-parser.ts +70 -0
  79. package/examples/transfer-domain.ts +197 -0
  80. package/examples/wallet-management.ts +196 -0
  81. package/package.json +24 -15
  82. package/src/abi/RootResolver2ABI.ts +237 -0
  83. package/src/business/index.ts +1492 -0
  84. package/src/business/tag-context.ts +747 -0
  85. package/src/cli.ts +2772 -39
  86. package/src/debug.ts +17 -2
  87. package/src/index.ts +313 -17
  88. package/src/utils/crypto-utils.ts +459 -0
  89. package/src/utils/error-parser.ts +225 -0
  90. package/src/utils/olares-id.ts +49 -0
  91. package/src/utils/tag-abi-codec.ts +158 -0
  92. package/src/utils/tag-type-builder.ts +469 -0
  93. package/tsconfig.json +1 -1
@@ -0,0 +1,402 @@
1
+ "use strict";
2
+ /**
3
+ * Cross-platform crypto utilities using Trust Wallet Core
4
+ * Works in both Node.js and Browser environments
5
+ *
6
+ * This implementation uses the same approach as TermiPass to ensure
7
+ * compatibility across the entire Olares ecosystem.
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.generateMnemonic = generateMnemonic;
44
+ exports.getEthereumAddressFromMnemonic = getEthereumAddressFromMnemonic;
45
+ exports.getEVMPrivateKeyFromMnemonic = getEVMPrivateKeyFromMnemonic;
46
+ exports.getDIDFromMnemonic = getDIDFromMnemonic;
47
+ exports.deriveDIDFromMnemonic = deriveDIDFromMnemonic;
48
+ exports.generateDIDKeyData = generateDIDKeyData;
49
+ exports.createRsaKeyPair = createRsaKeyPair;
50
+ const bip39 = __importStar(require("bip39"));
51
+ const varint = __importStar(require("varint"));
52
+ // Base58 Bitcoin alphabet
53
+ const BASE58_ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
54
+ /**
55
+ * Encode bytes to base58btc format
56
+ * This is a pure implementation compatible with multiformats/bases/base58
57
+ */
58
+ function base58Encode(bytes) {
59
+ // Convert bytes to bigint
60
+ let num = 0n;
61
+ for (let i = 0; i < bytes.length; i++) {
62
+ num = num * 256n + BigInt(bytes[i]);
63
+ }
64
+ // Convert to base58
65
+ let encoded = '';
66
+ while (num > 0n) {
67
+ const remainder = Number(num % 58n);
68
+ encoded = BASE58_ALPHABET[remainder] + encoded;
69
+ num = num / 58n;
70
+ }
71
+ // Add leading '1's for leading zero bytes
72
+ for (let i = 0; i < bytes.length && bytes[i] === 0; i++) {
73
+ encoded = '1' + encoded;
74
+ }
75
+ // Add 'z' prefix for base58btc multibase
76
+ return 'z' + encoded;
77
+ }
78
+ // ============================================================================
79
+ // Trust Wallet Core Management
80
+ // ============================================================================
81
+ let walletCore = null;
82
+ let walletCoreLoaded = false;
83
+ let loadingPromise = null;
84
+ /**
85
+ * Load Trust Wallet Core (lazy loading)
86
+ * Works in both Node.js and browser environments
87
+ */
88
+ async function loadWalletCore() {
89
+ // Return cached instance if already loaded
90
+ if (walletCoreLoaded && walletCore) {
91
+ return walletCore;
92
+ }
93
+ // If already loading, wait for that promise
94
+ if (loadingPromise) {
95
+ return loadingPromise;
96
+ }
97
+ // Start loading
98
+ loadingPromise = (async () => {
99
+ try {
100
+ // Check if running in browser or Node.js
101
+ if (typeof window !== 'undefined' &&
102
+ typeof require === 'undefined') {
103
+ // Browser environment with ES modules
104
+ const { initWasm } = await Promise.resolve().then(() => __importStar(require('@trustwallet/wallet-core')));
105
+ walletCore = await initWasm();
106
+ }
107
+ else {
108
+ // Node.js environment
109
+ const { initWasm } = require('@trustwallet/wallet-core');
110
+ walletCore = await initWasm();
111
+ }
112
+ walletCoreLoaded = true;
113
+ return walletCore;
114
+ }
115
+ catch (error) {
116
+ loadingPromise = null; // Reset on error to allow retry
117
+ throw new Error(`Failed to load Trust Wallet Core: ${error instanceof Error ? error.message : String(error)}`);
118
+ }
119
+ })();
120
+ return loadingPromise;
121
+ }
122
+ // multicodec code for Ed25519 keys (0xed)
123
+ const ED25519_CODEC_ID = varint.encode(parseInt('0xed', 16));
124
+ // ============================================================================
125
+ // Mnemonic and Key Derivation Functions
126
+ // ============================================================================
127
+ /**
128
+ * Generate a random BIP39 mnemonic phrase
129
+ * @param wordCount Number of words (12, 15, 18, 21, or 24), default is 12
130
+ * @returns A mnemonic phrase string
131
+ *
132
+ * @example
133
+ * ```typescript
134
+ * const mnemonic = generateMnemonic(12);
135
+ * console.log(mnemonic);
136
+ * // Output: "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about"
137
+ * ```
138
+ */
139
+ function generateMnemonic(wordCount = 12) {
140
+ // Convert word count to entropy bits
141
+ // 12 words = 128 bits, 15 words = 160 bits, etc.
142
+ const strengthMap = {
143
+ 12: 128,
144
+ 15: 160,
145
+ 18: 192,
146
+ 21: 224,
147
+ 24: 256
148
+ };
149
+ const strength = strengthMap[wordCount];
150
+ if (!strength) {
151
+ throw new Error('Invalid word count. Must be one of: 12, 15, 18, 21, 24');
152
+ }
153
+ return bip39.generateMnemonic(strength);
154
+ }
155
+ /**
156
+ * Derive Ethereum address from mnemonic using Trust Wallet Core
157
+ * Uses standard BIP44 derivation path for Ethereum
158
+ *
159
+ * @param mnemonic BIP39 mnemonic phrase
160
+ * @returns Ethereum address (0x...)
161
+ *
162
+ * @example
163
+ * ```typescript
164
+ * const address = await getEthereumAddressFromMnemonic(mnemonic);
165
+ * console.log(address); // "0x9858EfFD232B4033E47d90003D41EC34EcaEda94"
166
+ * ```
167
+ */
168
+ async function getEthereumAddressFromMnemonic(mnemonic) {
169
+ // Validate mnemonic
170
+ if (!bip39.validateMnemonic(mnemonic)) {
171
+ throw new Error('Invalid mnemonic phrase');
172
+ }
173
+ const core = await loadWalletCore();
174
+ const { HDWallet, CoinType } = core;
175
+ const wallet = HDWallet.createWithMnemonic(mnemonic, '');
176
+ return wallet.getAddressForCoin(CoinType.ethereum);
177
+ }
178
+ /**
179
+ * Derive EVM-compatible private key from mnemonic using Trust Wallet Core
180
+ * Uses standard BIP44 derivation path for Ethereum (m/44'/60'/0'/0/0)
181
+ *
182
+ * @param mnemonic BIP39 mnemonic phrase
183
+ * @returns Private key in hex format with 0x prefix (0x...)
184
+ *
185
+ * @example
186
+ * ```typescript
187
+ * const privateKey = await getEVMPrivateKeyFromMnemonic(mnemonic);
188
+ * console.log(privateKey); // "0x1234567890abcdef..."
189
+ * // Can be used with ethers.Wallet or setSigner
190
+ * ```
191
+ */
192
+ async function getEVMPrivateKeyFromMnemonic(mnemonic) {
193
+ // Validate mnemonic
194
+ if (!bip39.validateMnemonic(mnemonic)) {
195
+ throw new Error('Invalid mnemonic phrase');
196
+ }
197
+ const core = await loadWalletCore();
198
+ const { HDWallet, CoinType } = core;
199
+ const wallet = HDWallet.createWithMnemonic(mnemonic, '');
200
+ // Get private key for Ethereum
201
+ const privateKeyData = wallet.getKeyForCoin(CoinType.ethereum);
202
+ // Convert to hex string with 0x prefix
203
+ const privateKeyHex = '0x' + Buffer.from(privateKeyData.data()).toString('hex');
204
+ return privateKeyHex;
205
+ }
206
+ /**
207
+ * Get Ed25519 public key ID from mnemonic (internal helper)
208
+ * This is the same implementation as TermiPass
209
+ *
210
+ * @param mnemonic BIP39 mnemonic phrase
211
+ * @returns Base58btc encoded ID with multicodec prefix
212
+ */
213
+ async function getID(mnemonic) {
214
+ const core = await loadWalletCore();
215
+ const { HDWallet, Curve } = core;
216
+ const wallet = HDWallet.createWithMnemonic(mnemonic, '');
217
+ const privateKey = wallet.getMasterKey(Curve.ed25519);
218
+ const publicKey = privateKey.getPublicKeyEd25519();
219
+ // Combine multicodec prefix with public key
220
+ const idBytes = new Uint8Array(publicKey.data().length + ED25519_CODEC_ID.length);
221
+ idBytes.set(ED25519_CODEC_ID, 0);
222
+ idBytes.set(publicKey.data(), ED25519_CODEC_ID.length);
223
+ // Encode to base58btc
224
+ const id = base58Encode(idBytes);
225
+ return id;
226
+ }
227
+ /**
228
+ * Generate DID from mnemonic using Trust Wallet Core
229
+ * Uses Ed25519 key and follows did:key specification
230
+ * This implementation is identical to TermiPass
231
+ *
232
+ * @param mnemonic BIP39 mnemonic phrase
233
+ * @returns DID string in format: did:key:z...
234
+ *
235
+ * @example
236
+ * ```typescript
237
+ * const did = await getDIDFromMnemonic(mnemonic);
238
+ * console.log(did);
239
+ * // Output: "did:key:z6MkhtRJqzrZNaeEvGvgJVJv6dyFWDRYpZuHW61e8hjF6Fow"
240
+ * ```
241
+ */
242
+ async function getDIDFromMnemonic(mnemonic) {
243
+ // Validate mnemonic
244
+ if (!bip39.validateMnemonic(mnemonic)) {
245
+ throw new Error('Invalid mnemonic phrase');
246
+ }
247
+ const id = await getID(mnemonic);
248
+ return `did:key:${id}`;
249
+ }
250
+ /**
251
+ * Derive both owner (Ethereum address) and DID from existing mnemonic
252
+ *
253
+ * @param mnemonic BIP39 mnemonic phrase
254
+ * @returns Object containing owner (Ethereum address) and DID
255
+ *
256
+ * @example
257
+ * ```typescript
258
+ * const { owner, did } = await deriveDIDFromMnemonic(mnemonic);
259
+ * console.log('Owner:', owner);
260
+ * console.log('DID:', did);
261
+ * ```
262
+ */
263
+ async function deriveDIDFromMnemonic(mnemonic) {
264
+ // Validate mnemonic once upfront
265
+ if (!bip39.validateMnemonic(mnemonic)) {
266
+ throw new Error('Invalid mnemonic phrase');
267
+ }
268
+ // Derive both in parallel for better performance
269
+ const [owner, did] = await Promise.all([
270
+ getEthereumAddressFromMnemonic(mnemonic),
271
+ getDIDFromMnemonic(mnemonic)
272
+ ]);
273
+ return { owner, did };
274
+ }
275
+ /**
276
+ * Generate mnemonic, Ethereum address, and DID all at once
277
+ *
278
+ * @param wordCount Number of words in mnemonic (default 12)
279
+ * @returns Object containing mnemonic, owner (Ethereum address), and DID
280
+ *
281
+ * @example
282
+ * ```typescript
283
+ * const keyData = await generateDIDKeyData(12);
284
+ * console.log('Mnemonic:', keyData.mnemonic);
285
+ * console.log('Owner:', keyData.owner);
286
+ * console.log('DID:', keyData.did);
287
+ * ```
288
+ */
289
+ async function generateDIDKeyData(wordCount = 12) {
290
+ const mnemonic = generateMnemonic(wordCount);
291
+ const { owner, did } = await deriveDIDFromMnemonic(mnemonic);
292
+ return {
293
+ mnemonic,
294
+ owner,
295
+ did
296
+ };
297
+ }
298
+ // ============================================================================
299
+ // RSA Key Pair Generation (Browser and Node.js compatible)
300
+ // ============================================================================
301
+ /**
302
+ * Check if running in Node.js environment
303
+ */
304
+ function isNode() {
305
+ return (typeof process !== 'undefined' &&
306
+ process.versions != null &&
307
+ process.versions.node != null);
308
+ }
309
+ /**
310
+ * Convert ArrayBuffer to PEM format
311
+ */
312
+ function arrayBufferToPem(buffer, label) {
313
+ const binary = String.fromCharCode(...new Uint8Array(buffer));
314
+ const base64 = btoa(binary);
315
+ const formatted = base64.match(/.{1,64}/g)?.join('\n') || base64;
316
+ return `-----BEGIN ${label}-----\n${formatted}\n-----END ${label}-----`;
317
+ }
318
+ /**
319
+ * Generate RSA key pair in browser using Web Crypto API
320
+ */
321
+ async function generateKeyPairBrowser(length) {
322
+ if (typeof window === 'undefined' ||
323
+ !window.crypto ||
324
+ !window.crypto.subtle) {
325
+ throw new Error('Web Crypto API not available in this browser');
326
+ }
327
+ const keyPair = await window.crypto.subtle.generateKey({
328
+ name: 'RSA-OAEP',
329
+ modulusLength: length,
330
+ publicExponent: new Uint8Array([1, 0, 1]), // 65537
331
+ hash: 'SHA-256'
332
+ }, true, // extractable
333
+ ['encrypt', 'decrypt']);
334
+ const publicKeySpki = await window.crypto.subtle.exportKey('spki', keyPair.publicKey);
335
+ const privateKeyPkcs8 = await window.crypto.subtle.exportKey('pkcs8', keyPair.privateKey);
336
+ return {
337
+ rsaPublicKey: arrayBufferToPem(publicKeySpki, 'PUBLIC KEY'),
338
+ rsaPrivateKey: arrayBufferToPem(privateKeyPkcs8, 'PRIVATE KEY')
339
+ };
340
+ }
341
+ /**
342
+ * Generate RSA key pair in Node.js using crypto module
343
+ */
344
+ function generateKeyPairNode(length) {
345
+ // Dynamic require to avoid bundler issues
346
+ const crypto = require('crypto');
347
+ const { publicKey, privateKey } = crypto.generateKeyPairSync('rsa', {
348
+ modulusLength: length,
349
+ publicKeyEncoding: {
350
+ type: 'spki',
351
+ format: 'pem'
352
+ },
353
+ privateKeyEncoding: {
354
+ type: 'pkcs8',
355
+ format: 'pem'
356
+ }
357
+ });
358
+ return {
359
+ rsaPublicKey: publicKey,
360
+ rsaPrivateKey: privateKey
361
+ };
362
+ }
363
+ /**
364
+ * Generate RSA key pair (cross-platform)
365
+ *
366
+ * - In Node.js: Returns immediately (synchronous)
367
+ * - In Browser: Returns a Promise (asynchronous, uses Web Crypto API)
368
+ *
369
+ * @param length Key length in bits (minimum 512, must be multiple of 8, default 2048)
370
+ * @returns Public and private keys in PEM PKCS#8 format
371
+ * @throws Error if key length is invalid or crypto API is unavailable
372
+ *
373
+ * @example
374
+ * ```typescript
375
+ * // Node.js (synchronous, but wrapped in Promise for compatibility)
376
+ * const keyPair = await createRsaKeyPair(2048);
377
+ *
378
+ * // Browser (asynchronous)
379
+ * const keyPair = await createRsaKeyPair(2048);
380
+ *
381
+ * console.log(keyPair.rsaPublicKey); // PEM format
382
+ * console.log(keyPair.rsaPrivateKey); // PEM format
383
+ * ```
384
+ */
385
+ function createRsaKeyPair(length = 2048) {
386
+ // Validate key length
387
+ if (length < 512) {
388
+ throw new Error('RSA key length must be at least 512 bits');
389
+ }
390
+ if (length % 8 !== 0) {
391
+ throw new Error('RSA key length must be a multiple of 8');
392
+ }
393
+ if (isNode()) {
394
+ // Node.js environment: use crypto module (synchronous, but wrap in Promise)
395
+ return Promise.resolve(generateKeyPairNode(length));
396
+ }
397
+ else {
398
+ // Browser environment: use Web Crypto API (asynchronous)
399
+ return generateKeyPairBrowser(length);
400
+ }
401
+ }
402
+ //# sourceMappingURL=crypto-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto-utils.js","sourceRoot":"","sources":["../../src/utils/crypto-utils.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8HH,4CAmBC;AAeD,wEAaC;AAgBD,oEAqBC;AA4CD,gDAQC;AAeD,sDAgBC;AAgBD,gDAWC;AAkHD,4CAkBC;AAlcD,6CAA+B;AAC/B,+CAAiC;AAMjC,0BAA0B;AAC1B,MAAM,eAAe,GACpB,4DAA4D,CAAC;AAE9D;;;GAGG;AACH,SAAS,YAAY,CAAC,KAAiB;IACtC,0BAA0B;IAC1B,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,oBAAoB;IACpB,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,OAAO,GAAG,GAAG,EAAE,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;QACpC,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;QAC/C,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,0CAA0C;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzD,OAAO,GAAG,GAAG,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,yCAAyC;IACzC,OAAO,GAAG,GAAG,OAAO,CAAC;AACtB,CAAC;AAaD,+EAA+E;AAC/E,+BAA+B;AAC/B,+EAA+E;AAE/E,IAAI,UAAU,GAAQ,IAAI,CAAC;AAC3B,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAC7B,IAAI,cAAc,GAAwB,IAAI,CAAC;AAE/C;;;GAGG;AACH,KAAK,UAAU,cAAc;IAC5B,2CAA2C;IAC3C,IAAI,gBAAgB,IAAI,UAAU,EAAE,CAAC;QACpC,OAAO,UAAU,CAAC;IACnB,CAAC;IAED,4CAA4C;IAC5C,IAAI,cAAc,EAAE,CAAC;QACpB,OAAO,cAAc,CAAC;IACvB,CAAC;IAED,gBAAgB;IAChB,cAAc,GAAG,CAAC,KAAK,IAAI,EAAE;QAC5B,IAAI,CAAC;YACJ,yCAAyC;YACzC,IACC,OAAO,MAAM,KAAK,WAAW;gBAC7B,OAAO,OAAO,KAAK,WAAW,EAC7B,CAAC;gBACF,sCAAsC;gBACtC,MAAM,EAAE,QAAQ,EAAE,GAAG,wDAAa,0BAA0B,GAAC,CAAC;gBAC9D,UAAU,GAAG,MAAM,QAAQ,EAAE,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACP,sBAAsB;gBACtB,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;gBACzD,UAAU,GAAG,MAAM,QAAQ,EAAE,CAAC;YAC/B,CAAC;YAED,gBAAgB,GAAG,IAAI,CAAC;YACxB,OAAO,UAAU,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,cAAc,GAAG,IAAI,CAAC,CAAC,gCAAgC;YACvD,MAAM,IAAI,KAAK,CACd,qCACC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACtD,EAAE,CACF,CAAC;QACH,CAAC;IACF,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,cAAc,CAAC;AACvB,CAAC;AAED,0CAA0C;AAC1C,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;AAE7D,+EAA+E;AAC/E,wCAAwC;AACxC,+EAA+E;AAE/E;;;;;;;;;;;GAWG;AACH,SAAgB,gBAAgB,CAAC,YAAoB,EAAE;IACtD,qCAAqC;IACrC,iDAAiD;IACjD,MAAM,WAAW,GAA2B;QAC3C,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;KACP,CAAC;IAEF,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACd,wDAAwD,CACxD,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;GAYG;AACI,KAAK,UAAU,8BAA8B,CACnD,QAAgB;IAEhB,oBAAoB;IACpB,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;IACpC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAEpC,MAAM,MAAM,GAAG,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACzD,OAAO,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;;;;;;;GAaG;AACI,KAAK,UAAU,4BAA4B,CACjD,QAAgB;IAEhB,oBAAoB;IACpB,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;IACpC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAEpC,MAAM,MAAM,GAAG,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAEzD,+BAA+B;IAC/B,MAAM,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAE/D,uCAAuC;IACvC,MAAM,aAAa,GAClB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE3D,OAAO,aAAa,CAAC;AACtB,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,KAAK,CAAC,QAAgB;IACpC,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;IACpC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAEjC,MAAM,MAAM,GAAG,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,UAAU,CAAC,mBAAmB,EAAE,CAAC;IAEnD,4CAA4C;IAC5C,MAAM,OAAO,GAAG,IAAI,UAAU,CAC7B,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,CACjD,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEvD,sBAAsB;IACtB,MAAM,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACjC,OAAO,EAAE,CAAC;AACX,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACI,KAAK,UAAU,kBAAkB,CAAC,QAAgB;IACxD,oBAAoB;IACpB,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;IACjC,OAAO,WAAW,EAAE,EAAE,CAAC;AACxB,CAAC;AAED;;;;;;;;;;;;GAYG;AACI,KAAK,UAAU,qBAAqB,CAAC,QAAgB;IAI3D,iCAAiC;IACjC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC5C,CAAC;IAED,iDAAiD;IACjD,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACtC,8BAA8B,CAAC,QAAQ,CAAC;QACxC,kBAAkB,CAAC,QAAQ,CAAC;KAC5B,CAAC,CAAC;IAEH,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACvB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACI,KAAK,UAAU,kBAAkB,CACvC,YAAoB,EAAE;IAEtB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAE7D,OAAO;QACN,QAAQ;QACR,KAAK;QACL,GAAG;KACH,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,2DAA2D;AAC3D,+EAA+E;AAE/E;;GAEG;AACH,SAAS,MAAM;IACd,OAAO,CACN,OAAO,OAAO,KAAK,WAAW;QAC9B,OAAO,CAAC,QAAQ,IAAI,IAAI;QACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAC7B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,MAAmB,EAAE,KAAa;IAC3D,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;IACjE,OAAO,cAAc,KAAK,UAAU,SAAS,cAAc,KAAK,OAAO,CAAC;AACzE,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,sBAAsB,CACpC,MAAc;IAEd,IACC,OAAO,MAAM,KAAK,WAAW;QAC7B,CAAC,MAAM,CAAC,MAAM;QACd,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EACpB,CAAC;QACF,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CACrD;QACC,IAAI,EAAE,UAAU;QAChB,aAAa,EAAE,MAAM;QACrB,cAAc,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ;QACnD,IAAI,EAAE,SAAS;KACf,EACD,IAAI,EAAE,cAAc;IACpB,CAAC,SAAS,EAAE,SAAS,CAAC,CACtB,CAAC;IAEF,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CACzD,MAAM,EACN,OAAO,CAAC,SAAS,CACjB,CAAC;IACF,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAC3D,OAAO,EACP,OAAO,CAAC,UAAU,CAClB,CAAC;IAEF,OAAO;QACN,YAAY,EAAE,gBAAgB,CAAC,aAAa,EAAE,YAAY,CAAC;QAC3D,aAAa,EAAE,gBAAgB,CAAC,eAAe,EAAE,aAAa,CAAC;KAC/D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,MAAc;IAC1C,0CAA0C;IAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEjC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE;QACnE,aAAa,EAAE,MAAM;QACrB,iBAAiB,EAAE;YAClB,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,KAAK;SACb;QACD,kBAAkB,EAAE;YACnB,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,KAAK;SACb;KACD,CAAC,CAAC;IAEH,OAAO;QACN,YAAY,EAAE,SAAS;QACvB,aAAa,EAAE,UAAU;KACzB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAgB,gBAAgB,CAC/B,SAAiB,IAAI;IAErB,sBAAsB;IACtB,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,MAAM,EAAE,EAAE,CAAC;QACd,4EAA4E;QAC5E,OAAO,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACP,yDAAyD;QACzD,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;AACF,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Contract Error Parser Utility
3
+ *
4
+ * This module provides utilities for parsing contract errors from ethers.js
5
+ * and converting them into user-friendly error messages.
6
+ */
7
+ /**
8
+ * Parsed error information
9
+ */
10
+ export interface ParsedContractError {
11
+ message: string;
12
+ isNetworkError: boolean;
13
+ errorName?: string;
14
+ errorArgs?: any[];
15
+ }
16
+ /**
17
+ * Parse contract error and determine if it's a network error or contract error
18
+ * @param error - The error object from ethers.js
19
+ * @returns Parsed error information with friendly message
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * try {
24
+ * await contract.someFunction();
25
+ * } catch (error) {
26
+ * const parsed = parseContractError(error);
27
+ * if (parsed.isNetworkError) {
28
+ * throw new Error(`Network error: ${parsed.message}`);
29
+ * }
30
+ * console.log(parsed.message); // User-friendly message
31
+ * }
32
+ * ```
33
+ */
34
+ export declare function parseContractError(error: any): ParsedContractError;
35
+ //# sourceMappingURL=error-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-parser.d.ts","sourceRoot":"","sources":["../../src/utils/error-parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;CAClB;AA2DD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,GAAG,GAAG,mBAAmB,CA0ClE"}
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+ /**
3
+ * Contract Error Parser Utility
4
+ *
5
+ * This module provides utilities for parsing contract errors from ethers.js
6
+ * and converting them into user-friendly error messages.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.parseContractError = parseContractError;
10
+ /**
11
+ * Complete error selector mapping for all contracts (TerminusDID, RootResolver, RootTagger2, TagRegistry)
12
+ */
13
+ const ERROR_SELECTORS = {
14
+ // TerminusDID contract errors
15
+ '0x89c62b64': 'ERC721InvalidOwner',
16
+ '0x7e273289': 'ERC721NonexistentToken',
17
+ '0x64283d7b': 'ERC721IncorrectOwner',
18
+ '0x73c6ac6e': 'ERC721InvalidSender',
19
+ '0x64a0ae92': 'ERC721InvalidReceiver',
20
+ '0x177e802f': 'ERC721InsufficientApproval',
21
+ '0xa9fbf51f': 'ERC721InvalidApprover',
22
+ '0x5b08ba18': 'ERC721InvalidOperator',
23
+ '0x6db122af': 'DomainNotExist',
24
+ '0x27e1f1e5': 'OnlyOperator',
25
+ '0xfb5c3755': 'InvalidDomain',
26
+ '0xc668cf69': 'SubdomainNotAllowed',
27
+ // RootTagger2 contract errors
28
+ '0xa3114200': 'RootTagNoExists',
29
+ '0xe7c4886e': 'AddressNoExists',
30
+ '0xca7dc5c3': 'AddressHasExisted',
31
+ '0x390642d4': 'SignatureIsValidOnlyInOneHour',
32
+ '0x9cc5a685': 'InvalidAddressSignature',
33
+ '0x871a1000': 'InvalidSolanaAddressSignature',
34
+ // RootResolver contract errors
35
+ '0x4a7f394f': 'InvalidAction',
36
+ '0xfde625f6': 'TagNotExist',
37
+ '0x4bdbac1b': 'InvalidBytes',
38
+ // TagRegistry contract errors
39
+ '0x651e7ee4': 'UndefinedTag',
40
+ '0x7417940b': 'RedefinedTag',
41
+ '0x1f7fe073': 'InvalidTagDefinition',
42
+ '0xc2d32a00': 'TagInvalidOp',
43
+ '0xe3f3bb98': 'TagTypeIncompatible',
44
+ '0xa6df187b': 'IncompatibleArrayLengthsForEncode',
45
+ '0xb62b06eb': 'TagTooManyEntries',
46
+ // ABI utility errors
47
+ '0x63df8171': 'InvalidIndex',
48
+ '0x93c19f61': 'InvalidOp',
49
+ '0xb9688461': 'InvalidType',
50
+ '0xaa7feadc': 'InvalidValue',
51
+ // Common errors
52
+ '0x82b42900': 'Unauthorized'
53
+ };
54
+ /**
55
+ * Network error codes that indicate connectivity issues
56
+ */
57
+ const NETWORK_ERROR_CODES = [
58
+ 'NETWORK_ERROR',
59
+ 'TIMEOUT',
60
+ 'SERVER_ERROR',
61
+ 'ETIMEDOUT',
62
+ 'ECONNREFUSED',
63
+ 'ENOTFOUND'
64
+ ];
65
+ /**
66
+ * Parse contract error and determine if it's a network error or contract error
67
+ * @param error - The error object from ethers.js
68
+ * @returns Parsed error information with friendly message
69
+ *
70
+ * @example
71
+ * ```typescript
72
+ * try {
73
+ * await contract.someFunction();
74
+ * } catch (error) {
75
+ * const parsed = parseContractError(error);
76
+ * if (parsed.isNetworkError) {
77
+ * throw new Error(`Network error: ${parsed.message}`);
78
+ * }
79
+ * console.log(parsed.message); // User-friendly message
80
+ * }
81
+ * ```
82
+ */
83
+ function parseContractError(error) {
84
+ const errorCode = error.code || '';
85
+ const errorMessage = error.message || String(error);
86
+ // Check if it's a network error
87
+ const isNetworkError = NETWORK_ERROR_CODES.some((code) => errorCode.includes(code) || errorMessage.includes(code));
88
+ let errorName;
89
+ let errorArgs;
90
+ // Check for revert with custom error
91
+ if (error.data && typeof error.data === 'string') {
92
+ try {
93
+ const errorSelector = error.data.slice(0, 10);
94
+ errorName = ERROR_SELECTORS[errorSelector];
95
+ }
96
+ catch (e) {
97
+ // Ignore parsing errors
98
+ }
99
+ }
100
+ // Check error message for known patterns (fallback)
101
+ if (!errorName && errorMessage) {
102
+ Object.values(ERROR_SELECTORS).forEach((name) => {
103
+ if (errorMessage.includes(name)) {
104
+ errorName = name;
105
+ }
106
+ });
107
+ }
108
+ // Build friendly error message
109
+ const friendlyMessage = errorName
110
+ ? getFriendlyErrorMessage(errorName)
111
+ : errorMessage;
112
+ return {
113
+ message: friendlyMessage,
114
+ isNetworkError,
115
+ errorName,
116
+ errorArgs
117
+ };
118
+ }
119
+ /**
120
+ * Get user-friendly error message for a given error name
121
+ * @param errorName - The contract error name
122
+ * @returns User-friendly error message
123
+ */
124
+ function getFriendlyErrorMessage(errorName) {
125
+ switch (errorName) {
126
+ // RootTagger2 errors
127
+ case 'RootTagNoExists':
128
+ return `Tag does not exist for this domain`;
129
+ case 'AddressNoExists':
130
+ return `Wallet address does not exist`;
131
+ case 'AddressHasExisted':
132
+ return `This wallet address has already been added to the domain`;
133
+ case 'SignatureIsValidOnlyInOneHour':
134
+ return `Signature expired: Signatures are only valid for 1 hour`;
135
+ case 'InvalidAddressSignature':
136
+ return `Invalid signature: The wallet signature verification failed`;
137
+ case 'InvalidSolanaAddressSignature':
138
+ return `Invalid Solana signature: The wallet signature verification failed`;
139
+ // TerminusDID errors
140
+ case 'ERC721InvalidOwner':
141
+ return `Invalid owner address`;
142
+ case 'ERC721NonexistentToken':
143
+ return `Domain does not exist`;
144
+ case 'ERC721IncorrectOwner':
145
+ return `Incorrect owner: You are not the owner of this domain`;
146
+ case 'ERC721InvalidSender':
147
+ return `Invalid sender address`;
148
+ case 'ERC721InvalidReceiver':
149
+ return `Invalid receiver address`;
150
+ case 'ERC721InsufficientApproval':
151
+ return `Insufficient approval: Caller is not approved to operate this domain`;
152
+ case 'ERC721InvalidApprover':
153
+ return `Invalid approver address`;
154
+ case 'ERC721InvalidOperator':
155
+ return `Invalid operator address`;
156
+ case 'DomainNotExist':
157
+ return `Domain does not exist`;
158
+ case 'OnlyOperator':
159
+ return `Only operator can perform this action`;
160
+ case 'InvalidDomain':
161
+ return `Invalid domain name format`;
162
+ case 'SubdomainNotAllowed':
163
+ return `Subdomain creation is not allowed for this domain`;
164
+ // RootResolver errors
165
+ case 'InvalidAction':
166
+ return `Invalid action`;
167
+ case 'TagNotExist':
168
+ return `Tag does not exist`;
169
+ case 'InvalidBytes':
170
+ return `Invalid bytes data format`;
171
+ // TagRegistry errors
172
+ case 'UndefinedTag':
173
+ return `Tag is not defined: You must define the tag type before using it`;
174
+ case 'RedefinedTag':
175
+ return `Tag already exists: This tag has already been defined for this domain`;
176
+ case 'InvalidTagDefinition':
177
+ return `Invalid tag definition: The tag type definition is malformed`;
178
+ case 'TagInvalidOp':
179
+ return `Invalid tag operation: The operation is not supported for this tag type or state`;
180
+ case 'TagTypeIncompatible':
181
+ return `Tag type mismatch: The value type does not match the defined tag type`;
182
+ case 'IncompatibleArrayLengthsForEncode':
183
+ return `Array encoding error: Mismatched array lengths during encoding`;
184
+ case 'TagTooManyEntries':
185
+ return `Too many tag entries: The maximum number of tags has been reached`;
186
+ // ABI utility errors
187
+ case 'InvalidIndex':
188
+ return `Invalid array index: The index is out of bounds`;
189
+ case 'InvalidOp':
190
+ return `Invalid ABI operation: The operation is not supported for this type`;
191
+ case 'InvalidType':
192
+ return `Invalid ABI type: The type definition is malformed`;
193
+ case 'InvalidValue':
194
+ return `Invalid value: The value cannot be encoded with the specified type`;
195
+ // Common errors
196
+ case 'Unauthorized':
197
+ return `Unauthorized: You do not have permission to perform this action`;
198
+ default:
199
+ return `Contract error: ${errorName}`;
200
+ }
201
+ }
202
+ //# sourceMappingURL=error-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-parser.js","sourceRoot":"","sources":["../../src/utils/error-parser.ts"],"names":[],"mappings":"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"}