@sequence0/sdk 1.0.0 → 1.0.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.
Files changed (52) hide show
  1. package/README.md +36 -5
  2. package/dist/chains/bitcoin.d.ts +15 -3
  3. package/dist/chains/bitcoin.d.ts.map +1 -1
  4. package/dist/chains/bitcoin.js +23 -3
  5. package/dist/chains/bitcoin.js.map +1 -1
  6. package/dist/chains/ethereum.d.ts +3 -0
  7. package/dist/chains/ethereum.d.ts.map +1 -1
  8. package/dist/chains/ethereum.js +108 -16
  9. package/dist/chains/ethereum.js.map +1 -1
  10. package/dist/core/client.d.ts +117 -4
  11. package/dist/core/client.d.ts.map +1 -1
  12. package/dist/core/client.js +416 -36
  13. package/dist/core/client.js.map +1 -1
  14. package/dist/core/types.d.ts +39 -2
  15. package/dist/core/types.d.ts.map +1 -1
  16. package/dist/index.d.ts +11 -4
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +31 -1
  19. package/dist/index.js.map +1 -1
  20. package/dist/utils/discovery.d.ts +15 -1
  21. package/dist/utils/discovery.d.ts.map +1 -1
  22. package/dist/utils/discovery.js +36 -9
  23. package/dist/utils/discovery.js.map +1 -1
  24. package/dist/utils/errors.d.ts +26 -0
  25. package/dist/utils/errors.d.ts.map +1 -1
  26. package/dist/utils/errors.js +32 -1
  27. package/dist/utils/errors.js.map +1 -1
  28. package/dist/utils/fee.d.ts +107 -0
  29. package/dist/utils/fee.d.ts.map +1 -0
  30. package/dist/utils/fee.js +220 -0
  31. package/dist/utils/fee.js.map +1 -0
  32. package/dist/utils/http.d.ts +97 -1
  33. package/dist/utils/http.d.ts.map +1 -1
  34. package/dist/utils/http.js +238 -6
  35. package/dist/utils/http.js.map +1 -1
  36. package/dist/utils/logger.d.ts +43 -0
  37. package/dist/utils/logger.d.ts.map +1 -0
  38. package/dist/utils/logger.js +129 -0
  39. package/dist/utils/logger.js.map +1 -0
  40. package/dist/utils/rate-limiter.d.ts +43 -0
  41. package/dist/utils/rate-limiter.d.ts.map +1 -0
  42. package/dist/utils/rate-limiter.js +99 -0
  43. package/dist/utils/rate-limiter.js.map +1 -0
  44. package/dist/utils/validation.d.ts +74 -0
  45. package/dist/utils/validation.d.ts.map +1 -0
  46. package/dist/utils/validation.js +380 -0
  47. package/dist/utils/validation.js.map +1 -0
  48. package/dist/wallet/wallet.d.ts +12 -1
  49. package/dist/wallet/wallet.d.ts.map +1 -1
  50. package/dist/wallet/wallet.js +76 -11
  51. package/dist/wallet/wallet.js.map +1 -1
  52. package/package.json +8 -2
@@ -0,0 +1,380 @@
1
+ "use strict";
2
+ /**
3
+ * Response Schema Validation & Input Validation
4
+ *
5
+ * Lightweight runtime checks for agent responses and user inputs.
6
+ * No external dependencies — uses simple type guards and regex.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.validateDkgResponse = validateDkgResponse;
10
+ exports.validateDkgCompletion = validateDkgCompletion;
11
+ exports.validateSignResponse = validateSignResponse;
12
+ exports.validateSignResultResponse = validateSignResultResponse;
13
+ exports.validateHealthResponse = validateHealthResponse;
14
+ exports.validateStatusResponse = validateStatusResponse;
15
+ exports.validateWalletsResponse = validateWalletsResponse;
16
+ exports.validateWalletId = validateWalletId;
17
+ exports.validateChain = validateChain;
18
+ exports.validateAddress = validateAddress;
19
+ exports.validateAmount = validateAmount;
20
+ exports.validateStringAmount = validateStringAmount;
21
+ exports.validateHexMessage = validateHexMessage;
22
+ exports.validateThreshold = validateThreshold;
23
+ const errors_1 = require("./errors");
24
+ // ────────────────────────────────────────────────
25
+ // Response Validation
26
+ // ────────────────────────────────────────────────
27
+ /** Hex string pattern: 0x followed by hex chars, or just hex chars */
28
+ const HEX_PATTERN = /^(0x)?[0-9a-fA-F]+$/;
29
+ /** Ethereum address: 0x followed by exactly 40 hex chars */
30
+ const ETH_ADDRESS_PATTERN = /^0x[0-9a-fA-F]{40}$/;
31
+ function isNonEmptyString(value) {
32
+ return typeof value === 'string' && value.length > 0;
33
+ }
34
+ function isHexString(value) {
35
+ return typeof value === 'string' && HEX_PATTERN.test(value);
36
+ }
37
+ function isEthAddress(value) {
38
+ return typeof value === 'string' && ETH_ADDRESS_PATTERN.test(value);
39
+ }
40
+ function isNumber(value) {
41
+ return typeof value === 'number' && !isNaN(value);
42
+ }
43
+ function isObject(value) {
44
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
45
+ }
46
+ /**
47
+ * Validate a DKG initiation response from an agent.
48
+ * Ensures wallet_id, status, participants, and threshold are present and valid.
49
+ */
50
+ function validateDkgResponse(data, endpoint) {
51
+ if (!isObject(data)) {
52
+ throw new errors_1.InvalidResponseError('DKG response is not a valid object', endpoint);
53
+ }
54
+ const d = data;
55
+ if (!isNonEmptyString(d.wallet_id)) {
56
+ throw new errors_1.InvalidResponseError('DKG response missing or empty wallet_id', endpoint, 'wallet_id');
57
+ }
58
+ if (!isNonEmptyString(d.status)) {
59
+ throw new errors_1.InvalidResponseError('DKG response missing or empty status', endpoint, 'status');
60
+ }
61
+ if (!Array.isArray(d.participants)) {
62
+ throw new errors_1.InvalidResponseError('DKG response missing or invalid participants array', endpoint, 'participants');
63
+ }
64
+ if (!isNumber(d.threshold) || d.threshold < 1) {
65
+ throw new errors_1.InvalidResponseError('DKG response missing or invalid threshold (must be a positive number)', endpoint, 'threshold');
66
+ }
67
+ return d;
68
+ }
69
+ /**
70
+ * Validate a DKG completion event (from WebSocket).
71
+ * Ensures wallet_id exists and public_key/address are valid.
72
+ */
73
+ function validateDkgCompletion(data, endpoint) {
74
+ if (!isObject(data)) {
75
+ throw new errors_1.InvalidResponseError('DKG completion event is not a valid object', endpoint);
76
+ }
77
+ const d = data;
78
+ if (!isNonEmptyString(d.wallet_id)) {
79
+ throw new errors_1.InvalidResponseError('DKG completion event missing wallet_id', endpoint, 'wallet_id');
80
+ }
81
+ if (d.public_key !== undefined && typeof d.public_key === 'string' && d.public_key.length > 0) {
82
+ if (!isHexString(d.public_key)) {
83
+ throw new errors_1.InvalidResponseError('DKG completion event has invalid public_key (must be hex string)', endpoint, 'public_key');
84
+ }
85
+ }
86
+ if (d.address !== undefined && typeof d.address === 'string' && d.address.length > 0) {
87
+ if (!isEthAddress(d.address)) {
88
+ throw new errors_1.InvalidResponseError('DKG completion event has invalid address (must be 0x + 40 hex chars)', endpoint, 'address');
89
+ }
90
+ }
91
+ return {
92
+ wallet_id: d.wallet_id,
93
+ public_key: d.public_key || '',
94
+ address: d.address,
95
+ };
96
+ }
97
+ /**
98
+ * Validate a sign request response from an agent.
99
+ */
100
+ function validateSignResponse(data, endpoint) {
101
+ if (!isObject(data)) {
102
+ throw new errors_1.InvalidResponseError('Sign response is not a valid object', endpoint);
103
+ }
104
+ const d = data;
105
+ if (!isNonEmptyString(d.request_id)) {
106
+ throw new errors_1.InvalidResponseError('Sign response missing or empty request_id', endpoint, 'request_id');
107
+ }
108
+ if (!isNonEmptyString(d.wallet_id)) {
109
+ throw new errors_1.InvalidResponseError('Sign response missing or empty wallet_id', endpoint, 'wallet_id');
110
+ }
111
+ if (!isNonEmptyString(d.status)) {
112
+ throw new errors_1.InvalidResponseError('Sign response missing or empty status', endpoint, 'status');
113
+ }
114
+ return d;
115
+ }
116
+ /**
117
+ * Validate a sign result (polling) response.
118
+ */
119
+ function validateSignResultResponse(data, endpoint) {
120
+ if (!isObject(data)) {
121
+ throw new errors_1.InvalidResponseError('Sign result response is not a valid object', endpoint);
122
+ }
123
+ const d = data;
124
+ if (!isNonEmptyString(d.request_id)) {
125
+ throw new errors_1.InvalidResponseError('Sign result response missing request_id', endpoint, 'request_id');
126
+ }
127
+ if (!isNonEmptyString(d.wallet_id)) {
128
+ throw new errors_1.InvalidResponseError('Sign result response missing wallet_id', endpoint, 'wallet_id');
129
+ }
130
+ if (d.status !== 'pending' && d.status !== 'complete') {
131
+ throw new errors_1.InvalidResponseError(`Sign result response has invalid status: ${d.status} (expected 'pending' or 'complete')`, endpoint, 'status');
132
+ }
133
+ // When complete, signature must be a valid hex string
134
+ if (d.status === 'complete') {
135
+ if (!isNonEmptyString(d.signature)) {
136
+ throw new errors_1.InvalidResponseError('Sign result is complete but missing signature', endpoint, 'signature');
137
+ }
138
+ if (!isHexString(d.signature)) {
139
+ throw new errors_1.InvalidResponseError('Sign result has invalid signature (must be hex string)', endpoint, 'signature');
140
+ }
141
+ // ECDSA signature = 65 bytes = 130 hex chars (+ optional 0x prefix)
142
+ // Schnorr signature = 64 bytes = 128 hex chars
143
+ const sigHex = d.signature.startsWith('0x')
144
+ ? d.signature.slice(2)
145
+ : d.signature;
146
+ if (sigHex.length < 128) {
147
+ throw new errors_1.InvalidResponseError(`Sign result signature too short: ${sigHex.length} hex chars (expected >= 128)`, endpoint, 'signature');
148
+ }
149
+ }
150
+ return d;
151
+ }
152
+ /**
153
+ * Validate a health response.
154
+ */
155
+ function validateHealthResponse(data, endpoint) {
156
+ if (!isObject(data)) {
157
+ throw new errors_1.InvalidResponseError('Health response is not a valid object', endpoint);
158
+ }
159
+ const d = data;
160
+ if (!isNonEmptyString(d.status)) {
161
+ throw new errors_1.InvalidResponseError('Health response missing status', endpoint, 'status');
162
+ }
163
+ return d;
164
+ }
165
+ /**
166
+ * Validate a status response.
167
+ */
168
+ function validateStatusResponse(data, endpoint) {
169
+ if (!isObject(data)) {
170
+ throw new errors_1.InvalidResponseError('Status response is not a valid object', endpoint);
171
+ }
172
+ const d = data;
173
+ if (!isNonEmptyString(d.peer_id)) {
174
+ throw new errors_1.InvalidResponseError('Status response missing peer_id', endpoint, 'peer_id');
175
+ }
176
+ if (!Array.isArray(d.connected_peer_ids)) {
177
+ throw new errors_1.InvalidResponseError('Status response missing connected_peer_ids array', endpoint, 'connected_peer_ids');
178
+ }
179
+ return d;
180
+ }
181
+ /**
182
+ * Validate a wallets list response.
183
+ */
184
+ function validateWalletsResponse(data, endpoint) {
185
+ if (!isObject(data)) {
186
+ throw new errors_1.InvalidResponseError('Wallets response is not a valid object', endpoint);
187
+ }
188
+ const d = data;
189
+ if (!Array.isArray(d.wallets)) {
190
+ throw new errors_1.InvalidResponseError('Wallets response missing wallets array', endpoint, 'wallets');
191
+ }
192
+ // Validate each wallet entry
193
+ for (let i = 0; i < d.wallets.length; i++) {
194
+ const w = d.wallets[i];
195
+ if (!isObject(w)) {
196
+ throw new errors_1.InvalidResponseError(`Wallets response entry ${i} is not a valid object`, endpoint, `wallets[${i}]`);
197
+ }
198
+ if (!isNonEmptyString(w.wallet_id)) {
199
+ throw new errors_1.InvalidResponseError(`Wallets response entry ${i} missing wallet_id`, endpoint, `wallets[${i}].wallet_id`);
200
+ }
201
+ }
202
+ return d;
203
+ }
204
+ // ────────────────────────────────────────────────
205
+ // Input Validation
206
+ // ────────────────────────────────────────────────
207
+ /** All supported chains (must stay in sync with Chain type) */
208
+ const SUPPORTED_CHAINS = [
209
+ // EVM L1s
210
+ 'ethereum', 'polygon', 'bsc', 'avalanche', 'fantom', 'gnosis',
211
+ 'celo', 'cronos', 'moonbeam', 'moonriver', 'harmony', 'kava',
212
+ 'canto', 'aurora', 'klaytn', 'okc', 'fuse', 'evmos', 'core',
213
+ 'flare', 'iotex', 'rootstock', 'telos', 'thundercore',
214
+ // EVM L2s
215
+ 'arbitrum', 'optimism', 'base', 'zksync', 'scroll', 'linea',
216
+ 'mantle', 'blast', 'mode', 'manta', 'polygon-zkevm', 'metis',
217
+ 'zora', 'sei', 'boba', 'taiko', 'opbnb', 'fraxtal', 'worldchain',
218
+ 'lisk', 'redstone', 'cyber', 'mint', 'bob', 'xai', 'morph',
219
+ 'astar-zkevm',
220
+ // Non-EVM
221
+ 'bitcoin', 'solana', 'cosmos', 'near', 'sui', 'aptos',
222
+ 'polkadot', 'cardano', 'tron', 'dogecoin', 'litecoin',
223
+ 'stellar', 'ton', 'algorand', 'tezos', 'ripple',
224
+ ];
225
+ /** EVM-compatible chains (use 0x addresses) */
226
+ const EVM_CHAINS = [
227
+ // Layer 1s
228
+ 'ethereum', 'polygon', 'bsc', 'avalanche', 'fantom', 'gnosis',
229
+ 'celo', 'cronos', 'moonbeam', 'moonriver', 'harmony', 'kava',
230
+ 'canto', 'aurora', 'klaytn', 'okc', 'fuse', 'evmos', 'core',
231
+ 'flare', 'iotex', 'rootstock', 'telos', 'thundercore',
232
+ // Layer 2s
233
+ 'arbitrum', 'optimism', 'base', 'zksync', 'scroll', 'linea',
234
+ 'mantle', 'blast', 'mode', 'manta', 'polygon-zkevm', 'metis',
235
+ 'zora', 'sei', 'boba', 'taiko', 'opbnb', 'fraxtal', 'worldchain',
236
+ 'lisk', 'redstone', 'cyber', 'mint', 'bob', 'xai', 'morph',
237
+ 'astar-zkevm', 'tron',
238
+ ];
239
+ /** Wallet ID: alphanumeric, hyphens, underscores, max 64 chars */
240
+ const WALLET_ID_PATTERN = /^[a-zA-Z0-9_-]{1,64}$/;
241
+ /** Base58 pattern (Solana, Bitcoin) */
242
+ const BASE58_PATTERN = /^[1-9A-HJ-NP-Za-km-z]+$/;
243
+ /**
244
+ * Validate a wallet ID string.
245
+ */
246
+ function validateWalletId(walletId) {
247
+ if (typeof walletId !== 'string' || walletId.length === 0) {
248
+ throw new errors_1.ValidationError('walletId must be a non-empty string', 'walletId');
249
+ }
250
+ if (walletId.length > 64) {
251
+ throw new errors_1.ValidationError(`walletId must be at most 64 characters (got ${walletId.length})`, 'walletId');
252
+ }
253
+ if (!WALLET_ID_PATTERN.test(walletId)) {
254
+ throw new errors_1.ValidationError('walletId must contain only alphanumeric characters, hyphens, and underscores', 'walletId');
255
+ }
256
+ return walletId;
257
+ }
258
+ /**
259
+ * Validate a chain name against the supported chains list.
260
+ */
261
+ function validateChain(chain) {
262
+ if (typeof chain !== 'string' || chain.length === 0) {
263
+ throw new errors_1.ValidationError('chain must be a non-empty string', 'chain');
264
+ }
265
+ if (!SUPPORTED_CHAINS.includes(chain)) {
266
+ throw new errors_1.ValidationError(`Unsupported chain: '${chain}'. Supported chains: ${SUPPORTED_CHAINS.join(', ')}`, 'chain');
267
+ }
268
+ return chain;
269
+ }
270
+ /**
271
+ * Validate an address format based on the target chain.
272
+ */
273
+ function validateAddress(address, chain) {
274
+ if (typeof address !== 'string' || address.length === 0) {
275
+ throw new errors_1.ValidationError('address must be a non-empty string', 'address');
276
+ }
277
+ if (EVM_CHAINS.includes(chain)) {
278
+ if (!ETH_ADDRESS_PATTERN.test(address)) {
279
+ throw new errors_1.ValidationError(`Invalid ${chain} address: must match 0x followed by 40 hex characters`, 'address');
280
+ }
281
+ }
282
+ else if (chain === 'solana') {
283
+ if (!BASE58_PATTERN.test(address) || address.length < 32 || address.length > 44) {
284
+ throw new errors_1.ValidationError('Invalid Solana address: must be 32-44 base58 characters', 'address');
285
+ }
286
+ }
287
+ else if (chain === 'bitcoin') {
288
+ // Bitcoin addresses: legacy (1...), SegWit (3..., bc1...)
289
+ const btcPattern = /^(1|3|bc1)[a-zA-HJ-NP-Z0-9]{25,62}$/;
290
+ if (!btcPattern.test(address)) {
291
+ throw new errors_1.ValidationError('Invalid Bitcoin address format', 'address');
292
+ }
293
+ }
294
+ // For other chains (cosmos, near, etc.) we do basic length check
295
+ else if (address.length < 10) {
296
+ throw new errors_1.ValidationError(`Address too short for ${chain}`, 'address');
297
+ }
298
+ return address;
299
+ }
300
+ /**
301
+ * Validate a positive numeric amount (for transactions).
302
+ */
303
+ function validateAmount(amount, paramName = 'amount') {
304
+ if (typeof amount !== 'number') {
305
+ throw new errors_1.ValidationError(`${paramName} must be a number`, paramName);
306
+ }
307
+ if (isNaN(amount)) {
308
+ throw new errors_1.ValidationError(`${paramName} must not be NaN`, paramName);
309
+ }
310
+ if (!isFinite(amount)) {
311
+ throw new errors_1.ValidationError(`${paramName} must be finite (not Infinity)`, paramName);
312
+ }
313
+ if (amount <= 0) {
314
+ throw new errors_1.ValidationError(`${paramName} must be positive (got ${amount})`, paramName);
315
+ }
316
+ return amount;
317
+ }
318
+ /**
319
+ * Validate a string amount (wei, lamports, etc.) used in EVM transactions.
320
+ * Must represent a valid positive integer or bigint.
321
+ */
322
+ function validateStringAmount(value, paramName = 'value') {
323
+ if (typeof value === 'bigint') {
324
+ if (value <= 0n) {
325
+ throw new errors_1.ValidationError(`${paramName} must be positive`, paramName);
326
+ }
327
+ return value;
328
+ }
329
+ if (typeof value === 'string') {
330
+ if (value.length === 0) {
331
+ throw new errors_1.ValidationError(`${paramName} must be a non-empty string`, paramName);
332
+ }
333
+ try {
334
+ const n = BigInt(value);
335
+ if (n <= 0n) {
336
+ throw new errors_1.ValidationError(`${paramName} must be positive`, paramName);
337
+ }
338
+ }
339
+ catch (e) {
340
+ if (e instanceof errors_1.ValidationError)
341
+ throw e;
342
+ throw new errors_1.ValidationError(`${paramName} must be a valid numeric string (got '${value}')`, paramName);
343
+ }
344
+ return value;
345
+ }
346
+ throw new errors_1.ValidationError(`${paramName} must be a string or bigint`, paramName);
347
+ }
348
+ /**
349
+ * Validate a hex-encoded message for signing.
350
+ */
351
+ function validateHexMessage(message, paramName = 'message') {
352
+ if (typeof message !== 'string' || message.length === 0) {
353
+ throw new errors_1.ValidationError(`${paramName} must be a non-empty string`, paramName);
354
+ }
355
+ if (!isHexString(message)) {
356
+ throw new errors_1.ValidationError(`${paramName} must be a hex-encoded string`, paramName);
357
+ }
358
+ return message;
359
+ }
360
+ /**
361
+ * Validate threshold parameters.
362
+ */
363
+ function validateThreshold(threshold) {
364
+ if (!isObject(threshold)) {
365
+ throw new errors_1.ValidationError('threshold must be an object with t and n fields', 'threshold');
366
+ }
367
+ const t = threshold.t;
368
+ const n = threshold.n;
369
+ if (!isNumber(t) || t < 1 || !Number.isInteger(t)) {
370
+ throw new errors_1.ValidationError('threshold.t must be a positive integer', 'threshold.t');
371
+ }
372
+ if (!isNumber(n) || n < 1 || !Number.isInteger(n)) {
373
+ throw new errors_1.ValidationError('threshold.n must be a positive integer', 'threshold.n');
374
+ }
375
+ if (t > n) {
376
+ throw new errors_1.ValidationError(`threshold.t (${t}) must not exceed threshold.n (${n})`, 'threshold');
377
+ }
378
+ return { t, n };
379
+ }
380
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"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"}
@@ -22,7 +22,7 @@
22
22
  * const balance = await wallet.getBalance();
23
23
  * ```
24
24
  */
25
- import { Chain, Threshold, SignedTransaction, EvmTransaction, BtcTransaction, SolTransaction } from '../core/types';
25
+ import { Chain, Threshold, SignedTransaction, EvmTransaction, BtcTransaction, SolTransaction, OwnerSigner } from '../core/types';
26
26
  export interface WalletConfig {
27
27
  walletId: string;
28
28
  chain: Chain;
@@ -32,6 +32,8 @@ export interface WalletConfig {
32
32
  agentUrl: string;
33
33
  rpcUrl: string;
34
34
  curve: string;
35
+ /** Optional signer for wallet ownership proofs on sign requests */
36
+ ownerSigner?: OwnerSigner;
35
37
  }
36
38
  export declare class Wallet {
37
39
  /** The wallet's unique ID in the Sequence0 network */
@@ -48,6 +50,7 @@ export declare class Wallet {
48
50
  private http;
49
51
  private adapter;
50
52
  private agentUrl;
53
+ private ownerSigner;
51
54
  constructor(config: WalletConfig);
52
55
  /**
53
56
  * Sign a transaction using the FROST threshold network
@@ -138,6 +141,14 @@ export declare class Wallet {
138
141
  * Submit a message for FROST signing and wait for the result
139
142
  */
140
143
  private requestAndWaitSignature;
144
+ /**
145
+ * Build an ownership proof for a sign request.
146
+ *
147
+ * The proof is: sign( keccak256( wallet_id_bytes + message_hex_bytes + timestamp_be_bytes ) )
148
+ *
149
+ * Returns null when no ownerSigner is configured (backwards compatible).
150
+ */
151
+ private signOwnershipProof;
141
152
  private createAdapter;
142
153
  private static readonly EVM_CHAINS;
143
154
  private isEvmChain;
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/wallet/wallet.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EACH,KAAK,EACL,SAAS,EACT,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,cAAc,EAIjB,MAAM,eAAe,CAAC;AAQvB,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,MAAM;IACf,sDAAsD;IACtD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,wBAAwB;IACxB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,uDAAuD;IACvD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,0BAA0B;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,QAAQ,CAAS;gBAEb,MAAM,EAAE,YAAY;IAiBhC;;;;;;;;;;;;;;;OAeG;IACG,IAAI,CAAC,WAAW,EAAE,cAAc,GAAG,cAAc,GAAG,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAwBrG;;;;;;;;;;;;;;;;;;;OAmBG;IACG,eAAe,CAAC,WAAW,EAAE,cAAc,GAAG,cAAc,GAAG,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAKrG;;;;OAIG;IACG,SAAS,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAU7D;;;;;;;;OAQG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBnD;;;;;;;;;;;OAWG;IACG,aAAa,CAAC,SAAS,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC,CAAC;QAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBnB;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC;;OAEG;IACH,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAe/B;;OAEG;YACW,uBAAuB;IAgDrC,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAMhC;IAEF,OAAO,CAAC,UAAU;CAGrB"}
1
+ {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/wallet/wallet.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EACH,KAAK,EACL,SAAS,EACT,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,cAAc,EAId,WAAW,EACd,MAAM,eAAe,CAAC;AAavB,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,WAAW,CAAC,EAAE,WAAW,CAAC;CAC7B;AAED,qBAAa,MAAM;IACf,sDAAsD;IACtD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,wBAAwB;IACxB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,uDAAuD;IACvD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,0BAA0B;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAqB;gBAE5B,MAAM,EAAE,YAAY;IAkBhC;;;;;;;;;;;;;;;OAeG;IACG,IAAI,CAAC,WAAW,EAAE,cAAc,GAAG,cAAc,GAAG,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAwBrG;;;;;;;;;;;;;;;;;;;OAmBG;IACG,eAAe,CAAC,WAAW,EAAE,cAAc,GAAG,cAAc,GAAG,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAcrG;;;;OAIG;IACG,SAAS,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAU7D;;;;;;;;OAQG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBnD;;;;;;;;;;;OAWG;IACG,aAAa,CAAC,SAAS,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC,CAAC;QAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBnB;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC;;OAEG;IACH,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAe/B;;OAEG;YACW,uBAAuB;IAyDrC;;;;;;OAMG;YACW,kBAAkB;IA+BhC,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAYhC;IAEF,OAAO,CAAC,UAAU;CAGrB"}
@@ -25,6 +25,9 @@
25
25
  */
26
26
  Object.defineProperty(exports, "__esModule", { value: true });
27
27
  exports.Wallet = void 0;
28
+ const ethers_1 = require("ethers");
29
+ // ethers v6 ships without .d.ts — TypedDataEncoder is exported but not typed
30
+ const { TypedDataEncoder } = require('ethers');
28
31
  const http_1 = require("../utils/http");
29
32
  const websocket_1 = require("../utils/websocket");
30
33
  const errors_1 = require("../utils/errors");
@@ -40,6 +43,7 @@ class Wallet {
40
43
  this.curve = config.curve;
41
44
  this.network = config.network;
42
45
  this.agentUrl = config.agentUrl;
46
+ this.ownerSigner = config.ownerSigner || null;
43
47
  this.http = new http_1.HttpClient({ baseUrl: config.agentUrl });
44
48
  this.adapter = this.createAdapter(config.chain, config.rpcUrl);
45
49
  }
@@ -102,6 +106,12 @@ class Wallet {
102
106
  * ```
103
107
  */
104
108
  async sendTransaction(transaction) {
109
+ // Guard: Bitcoin-family chains don't have full TX serialization yet
110
+ if (this.chain === 'bitcoin' || this.chain === 'dogecoin' || this.chain === 'litecoin') {
111
+ throw new errors_1.ChainError(`sendTransaction() is not yet supported for ${this.chain}. ` +
112
+ `Use sign() to get a Schnorr signature, then construct and broadcast ` +
113
+ `the raw transaction externally using bitcoinjs-lib.`, this.chain);
114
+ }
105
115
  const signed = await this.sign(transaction);
106
116
  return this.broadcast(signed);
107
117
  }
@@ -160,9 +170,13 @@ class Wallet {
160
170
  if (!this.isEvmChain()) {
161
171
  throw new errors_1.Sequence0Error('signTypedData is only supported on EVM chains');
162
172
  }
163
- // Encode the typed data hash (EIP-712)
164
- const encoded = JSON.stringify(typedData);
165
- const messageHex = Buffer.from(encoded).toString('hex');
173
+ // Compute proper EIP-712 hash using ethers TypedDataEncoder:
174
+ // hash = keccak256( \x19\x01 + domainSeparator + hashStruct(primaryType, message) )
175
+ // Strip the EIP712Domain entry from types (ethers handles it from the domain object)
176
+ const { EIP712Domain: _, ...typesWithoutDomain } = typedData.types;
177
+ const messageHash = TypedDataEncoder.hash(typedData.domain, typesWithoutDomain, typedData.message);
178
+ // messageHash is already 0x-prefixed keccak256 hex — convert to raw hex for signing
179
+ const messageHex = messageHash.startsWith('0x') ? messageHash.slice(2) : messageHash;
166
180
  return this.requestAndWaitSignature(messageHex);
167
181
  }
168
182
  // ────────────────────────────────────────────────
@@ -196,11 +210,18 @@ class Wallet {
196
210
  * Submit a message for FROST signing and wait for the result
197
211
  */
198
212
  async requestAndWaitSignature(messageHex, timeoutMs = 30000) {
199
- // Submit signing request
200
- const response = await this.http.post('/sign', {
213
+ // Build the POST body, optionally including ownership proof
214
+ const body = {
201
215
  wallet_id: this.walletId,
202
216
  message: messageHex,
203
- });
217
+ };
218
+ const proof = await this.signOwnershipProof(messageHex);
219
+ if (proof) {
220
+ body.owner_signature = proof.owner_signature;
221
+ body.timestamp = proof.timestamp;
222
+ }
223
+ // Submit signing request
224
+ const response = await this.http.post('/sign', body);
204
225
  const requestId = response.request_id;
205
226
  // Try WebSocket first for instant notification
206
227
  try {
@@ -229,15 +250,53 @@ class Wallet {
229
250
  }
230
251
  throw new errors_1.TimeoutError(`Signing timed out after ${timeoutMs}ms (request: ${requestId})`);
231
252
  }
253
+ /**
254
+ * Build an ownership proof for a sign request.
255
+ *
256
+ * The proof is: sign( keccak256( wallet_id_bytes + message_hex_bytes + timestamp_be_bytes ) )
257
+ *
258
+ * Returns null when no ownerSigner is configured (backwards compatible).
259
+ */
260
+ async signOwnershipProof(messageHex) {
261
+ if (!this.ownerSigner)
262
+ return null;
263
+ const timestamp = Math.floor(Date.now() / 1000);
264
+ // wallet_id as UTF-8 bytes
265
+ const walletIdBytes = new TextEncoder().encode(this.walletId);
266
+ // message as UTF-8 string bytes (must match Rust: message.as_bytes())
267
+ const messageBytes = new TextEncoder().encode(messageHex);
268
+ // timestamp as 8-byte big-endian
269
+ const timestampBytes = new Uint8Array(8);
270
+ const view = new DataView(timestampBytes.buffer);
271
+ view.setBigUint64(0, BigInt(timestamp), false);
272
+ // Concatenate and hash: keccak256(walletId + message + timestamp)
273
+ const payload = (0, ethers_1.concat)([walletIdBytes, messageBytes, timestampBytes]);
274
+ const digest = (0, ethers_1.getBytes)((0, ethers_1.keccak256)(payload));
275
+ // Sign the digest
276
+ const signature = await this.ownerSigner(digest);
277
+ return {
278
+ owner_signature: signature.startsWith('0x') ? signature : '0x' + signature,
279
+ timestamp,
280
+ };
281
+ }
232
282
  createAdapter(chain, rpcUrl) {
233
- if (chain === 'bitcoin') {
283
+ if (chain === 'bitcoin' || chain === 'dogecoin' || chain === 'litecoin') {
234
284
  return new bitcoin_1.BitcoinAdapter(this.network === 'testnet' ? 'testnet' : 'mainnet');
235
285
  }
236
286
  if (chain === 'solana') {
237
287
  return new solana_1.SolanaAdapter(this.network === 'testnet' ? 'devnet' : 'mainnet', rpcUrl);
238
288
  }
239
- // All other chains are EVM-compatible
240
- return new ethereum_1.EthereumAdapter(chain, rpcUrl);
289
+ // EVM-compatible chains
290
+ if (this.isEvmChain() || chain === 'tron') {
291
+ return new ethereum_1.EthereumAdapter(chain, rpcUrl);
292
+ }
293
+ // Non-EVM chains without full adapter support.
294
+ // Wallet creation and raw message signing work (agent node is chain-agnostic),
295
+ // but sendTransaction() requires a chain-specific adapter.
296
+ // Users can still call sign() directly with pre-built transaction bytes.
297
+ throw new errors_1.ChainError(`Chain '${chain}' does not have a transaction adapter yet. ` +
298
+ `You can still use sign() and signMessage() for raw byte signing. ` +
299
+ `For sendTransaction(), provide a custom RPC URL and use sign() to get the signed transaction.`);
241
300
  }
242
301
  isEvmChain() {
243
302
  return Wallet.EVM_CHAINS.includes(this.chain);
@@ -245,10 +304,16 @@ class Wallet {
245
304
  }
246
305
  exports.Wallet = Wallet;
247
306
  Wallet.EVM_CHAINS = [
307
+ // Layer 1s
248
308
  'ethereum', 'polygon', 'bsc', 'avalanche', 'fantom', 'gnosis',
249
- 'celo', 'cronos', 'moonbeam', 'harmony', 'kava', 'canto', 'aurora',
309
+ 'celo', 'cronos', 'moonbeam', 'moonriver', 'harmony', 'kava',
310
+ 'canto', 'aurora', 'klaytn', 'okc', 'fuse', 'evmos', 'core',
311
+ 'flare', 'iotex', 'rootstock', 'telos', 'thundercore',
312
+ // Layer 2s
250
313
  'arbitrum', 'optimism', 'base', 'zksync', 'scroll', 'linea',
251
314
  'mantle', 'blast', 'mode', 'manta', 'polygon-zkevm', 'metis',
252
- 'zora', 'sei',
315
+ 'zora', 'sei', 'boba', 'taiko', 'opbnb', 'fraxtal', 'worldchain',
316
+ 'lisk', 'redstone', 'cyber', 'mint', 'bob', 'xai', 'morph',
317
+ 'astar-zkevm',
253
318
  ];
254
319
  //# sourceMappingURL=wallet.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/wallet/wallet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/wallet/wallet.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;;AAcH,mCAAqD;AACrD,6EAA6E;AAC7E,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,QAAQ,CAE1C,CAAC;AACJ,wCAA2C;AAC3C,kDAA8C;AAC9C,4CAAyF;AACzF,iDAAqD;AACrD,+CAAmD;AACnD,6CAAiD;AAejD,MAAa,MAAM;IAkBf,YAAY,MAAoB;QAC5B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC;QAE9C,IAAI,CAAC,IAAI,GAAG,IAAI,iBAAU,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACnE,CAAC;IAED,mDAAmD;IACnD,uBAAuB;IACvB,mDAAmD;IAEnD;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,IAAI,CAAC,WAA6D;QACpE,4DAA4D;QAC5D,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAElF,+CAA+C;QAC/C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;QAEjE,yCAAyC;QACzC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAEjF,gCAAgC;QAChC,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAExE,OAAO;YACH,cAAc;YACd,IAAI,EAAE,EAAE,EAAE,8BAA8B;YACxC,SAAS,EAAE;gBACP,CAAC,EAAE,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC1B,CAAC,EAAE,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC;gBAC5B,CAAC,EAAE,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;aACvE;SACJ,CAAC;IACN,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,KAAK,CAAC,eAAe,CAAC,WAA6D;QAC/E,oEAAoE;QACpE,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACrF,MAAM,IAAI,mBAAU,CAChB,8CAA8C,IAAI,CAAC,KAAK,IAAI;gBAC5D,sEAAsE;gBACtE,qDAAqD,EACrD,IAAI,CAAC,KAAK,CACb,CAAC;QACN,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS,CAAC,QAA2B;QACvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QACnE,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,mDAAmD;IACnD,mBAAmB;IACnB,mDAAmD;IAEnD;;;;;;;;OAQG;IACH,KAAK,CAAC,WAAW,CAAC,OAAe;QAC7B,gCAAgC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAChC,IAAI,aAAqB,CAAC;QAE1B,IAAI,KAAK,EAAE,CAAC;YACR,MAAM,MAAM,GAAG,iCAAiC,OAAO,CAAC,MAAM,EAAE,CAAC;YACjE,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;YAClC,sBAAsB;YACtB,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACvC,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACJ,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,aAAa,CAAC,SAKnB;QACG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YACrB,MAAM,IAAI,uBAAc,CAAC,+CAA+C,CAAC,CAAC;QAC9E,CAAC;QAED,6DAA6D;QAC7D,oFAAoF;QACpF,qFAAqF;QACrF,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,kBAAkB,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC;QACnE,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CACrC,SAAS,CAAC,MAAM,EAChB,kBAAkB,EAClB,SAAS,CAAC,OAAO,CACpB,CAAC;QACF,oFAAoF;QACpF,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAErF,OAAO,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC;IAED,mDAAmD;IACnD,kBAAkB;IAClB,mDAAmD;IAEnD;;;;OAIG;IACH,KAAK,CAAC,UAAU;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,IAAI;QACA,OAAO;YACH,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE;YACvD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;SACxB,CAAC;IACN,CAAC;IAED,mDAAmD;IACnD,aAAa;IACb,mDAAmD;IAEnD;;OAEG;IACK,KAAK,CAAC,uBAAuB,CACjC,UAAkB,EAClB,SAAS,GAAG,KAAM;QAElB,4DAA4D;QAC5D,MAAM,IAAI,GAA4B;YAClC,SAAS,EAAE,IAAI,CAAC,QAAQ;YACxB,OAAO,EAAE,UAAU;SACtB,CAAC;QAEF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;YAC7C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACrC,CAAC;QAED,yBAAyB;QACzB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAe,OAAO,EAAE,IAAI,CAAC,CAAC;QAEnE,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC;QAEtC,+CAA+C;QAC/C,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;YAC3D,MAAM,EAAE,GAAG,IAAI,oBAAQ,CAAC;gBACpB,GAAG,EAAE,KAAK;gBACV,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,aAAa,EAAE,KAAK;aACvB,CAAC,CAAC;YACH,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;YAEnB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAC3B,iBAAiB,EACjB,CAAC,CAAC,EAAE,EAAE,CAAE,CAAS,CAAC,UAAU,KAAK,SAAS,EAC1C,SAAS,CACZ,CAAC;YACF,EAAE,CAAC,UAAU,EAAE,CAAC;YAChB,OAAQ,MAAc,CAAC,SAAS,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACL,yCAAyC;QAC7C,CAAC;QAED,mBAAmB;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACxC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAqB,SAAS,SAAS,EAAE,CAAC,CAAC;YAC7E,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACnD,OAAO,MAAM,CAAC,SAAS,CAAC;YAC5B,CAAC;YACD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,IAAI,qBAAY,CAClB,2BAA2B,SAAS,gBAAgB,SAAS,GAAG,CACnE,CAAC;IACN,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,kBAAkB,CAC5B,UAAkB;QAElB,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC;QAEnC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAEhD,2BAA2B;QAC3B,MAAM,aAAa,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE9D,sEAAsE;QACtE,MAAM,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAE1D,iCAAiC;QACjC,MAAM,cAAc,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;QAE/C,kEAAkE;QAClE,MAAM,OAAO,GAAG,IAAA,eAAM,EAAC,CAAC,aAAa,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,IAAA,iBAAQ,EAAC,IAAA,kBAAS,EAAC,OAAO,CAAC,CAAC,CAAC;QAE5C,kBAAkB;QAClB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAEjD,OAAO;YACH,eAAe,EAAE,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,SAAS;YAC1E,SAAS;SACZ,CAAC;IACN,CAAC;IAEO,aAAa,CAAC,KAAY,EAAE,MAAe;QAC/C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YACtE,OAAO,IAAI,wBAAc,CACrB,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CACrD,CAAC;QACN,CAAC;QACD,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrB,OAAO,IAAI,sBAAa,CACpB,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EACjD,MAAM,CACT,CAAC;QACN,CAAC;QACD,wBAAwB;QACxB,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACxC,OAAO,IAAI,0BAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC9C,CAAC;QACD,+CAA+C;QAC/C,+EAA+E;QAC/E,2DAA2D;QAC3D,yEAAyE;QACzE,MAAM,IAAI,mBAAU,CAChB,UAAU,KAAK,6CAA6C;YAC5D,mEAAmE;YACnE,+FAA+F,CAClG,CAAC;IACN,CAAC;IAgBO,UAAU;QACd,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;;AA1WL,wBA2WC;AAjB2B,iBAAU,GAAa;IAC3C,WAAW;IACX,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ;IAC7D,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM;IAC5D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAC3D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa;IACrD,WAAW;IACX,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO;IAC3D,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO;IAC5D,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY;IAChE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO;IAC1D,aAAa;CAChB,CAAC"}