@sardis/sdk 0.2.0

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 (146) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/LICENSE +21 -0
  3. package/README.md +439 -0
  4. package/dist/browser/index.js +7049 -0
  5. package/dist/browser/index.js.map +1 -0
  6. package/dist/browser/sardis.umd.js +7071 -0
  7. package/dist/browser/sardis.umd.js.map +1 -0
  8. package/dist/cjs/client.js +644 -0
  9. package/dist/cjs/client.js.map +1 -0
  10. package/dist/cjs/demo.js +699 -0
  11. package/dist/cjs/demo.js.map +1 -0
  12. package/dist/cjs/errors.js +630 -0
  13. package/dist/cjs/errors.js.map +1 -0
  14. package/dist/cjs/index.js +131 -0
  15. package/dist/cjs/index.js.map +1 -0
  16. package/dist/cjs/integrations/index.js +21 -0
  17. package/dist/cjs/integrations/index.js.map +1 -0
  18. package/dist/cjs/integrations/langchain.js +339 -0
  19. package/dist/cjs/integrations/langchain.js.map +1 -0
  20. package/dist/cjs/integrations/openai.js +505 -0
  21. package/dist/cjs/integrations/openai.js.map +1 -0
  22. package/dist/cjs/integrations/vercel-ai.js +198 -0
  23. package/dist/cjs/integrations/vercel-ai.js.map +1 -0
  24. package/dist/cjs/resources/a2a.js +158 -0
  25. package/dist/cjs/resources/a2a.js.map +1 -0
  26. package/dist/cjs/resources/agents.js +142 -0
  27. package/dist/cjs/resources/agents.js.map +1 -0
  28. package/dist/cjs/resources/base.js +124 -0
  29. package/dist/cjs/resources/base.js.map +1 -0
  30. package/dist/cjs/resources/cards.js +43 -0
  31. package/dist/cjs/resources/cards.js.map +1 -0
  32. package/dist/cjs/resources/holds.js +64 -0
  33. package/dist/cjs/resources/holds.js.map +1 -0
  34. package/dist/cjs/resources/index.js +31 -0
  35. package/dist/cjs/resources/index.js.map +1 -0
  36. package/dist/cjs/resources/ledger.js +43 -0
  37. package/dist/cjs/resources/ledger.js.map +1 -0
  38. package/dist/cjs/resources/marketplace.js +88 -0
  39. package/dist/cjs/resources/marketplace.js.map +1 -0
  40. package/dist/cjs/resources/payments.js +33 -0
  41. package/dist/cjs/resources/payments.js.map +1 -0
  42. package/dist/cjs/resources/policies.js +31 -0
  43. package/dist/cjs/resources/policies.js.map +1 -0
  44. package/dist/cjs/resources/transactions.js +37 -0
  45. package/dist/cjs/resources/transactions.js.map +1 -0
  46. package/dist/cjs/resources/ucp.js +133 -0
  47. package/dist/cjs/resources/ucp.js.map +1 -0
  48. package/dist/cjs/resources/wallets.js +109 -0
  49. package/dist/cjs/resources/wallets.js.map +1 -0
  50. package/dist/cjs/resources/webhooks.js +81 -0
  51. package/dist/cjs/resources/webhooks.js.map +1 -0
  52. package/dist/cjs/types.js +11 -0
  53. package/dist/cjs/types.js.map +1 -0
  54. package/dist/client.d.ts +419 -0
  55. package/dist/client.d.ts.map +1 -0
  56. package/dist/client.js +637 -0
  57. package/dist/client.js.map +1 -0
  58. package/dist/demo.d.ts +335 -0
  59. package/dist/demo.d.ts.map +1 -0
  60. package/dist/demo.js +694 -0
  61. package/dist/demo.js.map +1 -0
  62. package/dist/errors.d.ts +522 -0
  63. package/dist/errors.d.ts.map +1 -0
  64. package/dist/errors.js +612 -0
  65. package/dist/errors.js.map +1 -0
  66. package/dist/index.d.ts +83 -0
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.js +85 -0
  69. package/dist/index.js.map +1 -0
  70. package/dist/integrations/index.d.ts +4 -0
  71. package/dist/integrations/index.d.ts.map +1 -0
  72. package/dist/integrations/index.js +5 -0
  73. package/dist/integrations/index.js.map +1 -0
  74. package/dist/integrations/langchain.d.ts +68 -0
  75. package/dist/integrations/langchain.d.ts.map +1 -0
  76. package/dist/integrations/langchain.js +335 -0
  77. package/dist/integrations/langchain.js.map +1 -0
  78. package/dist/integrations/openai.d.ts +97 -0
  79. package/dist/integrations/openai.d.ts.map +1 -0
  80. package/dist/integrations/openai.js +467 -0
  81. package/dist/integrations/openai.js.map +1 -0
  82. package/dist/integrations/vercel-ai.d.ts +180 -0
  83. package/dist/integrations/vercel-ai.d.ts.map +1 -0
  84. package/dist/integrations/vercel-ai.js +194 -0
  85. package/dist/integrations/vercel-ai.js.map +1 -0
  86. package/dist/resources/a2a.d.ts +254 -0
  87. package/dist/resources/a2a.d.ts.map +1 -0
  88. package/dist/resources/a2a.js +154 -0
  89. package/dist/resources/a2a.js.map +1 -0
  90. package/dist/resources/agents.d.ts +111 -0
  91. package/dist/resources/agents.d.ts.map +1 -0
  92. package/dist/resources/agents.js +138 -0
  93. package/dist/resources/agents.js.map +1 -0
  94. package/dist/resources/base.d.ts +115 -0
  95. package/dist/resources/base.d.ts.map +1 -0
  96. package/dist/resources/base.js +120 -0
  97. package/dist/resources/base.js.map +1 -0
  98. package/dist/resources/cards.d.ts +19 -0
  99. package/dist/resources/cards.d.ts.map +1 -0
  100. package/dist/resources/cards.js +39 -0
  101. package/dist/resources/cards.js.map +1 -0
  102. package/dist/resources/holds.d.ts +44 -0
  103. package/dist/resources/holds.d.ts.map +1 -0
  104. package/dist/resources/holds.js +60 -0
  105. package/dist/resources/holds.js.map +1 -0
  106. package/dist/resources/index.d.ts +16 -0
  107. package/dist/resources/index.d.ts.map +1 -0
  108. package/dist/resources/index.js +16 -0
  109. package/dist/resources/index.js.map +1 -0
  110. package/dist/resources/ledger.d.ts +38 -0
  111. package/dist/resources/ledger.d.ts.map +1 -0
  112. package/dist/resources/ledger.js +39 -0
  113. package/dist/resources/ledger.js.map +1 -0
  114. package/dist/resources/marketplace.d.ts +60 -0
  115. package/dist/resources/marketplace.d.ts.map +1 -0
  116. package/dist/resources/marketplace.js +84 -0
  117. package/dist/resources/marketplace.js.map +1 -0
  118. package/dist/resources/payments.d.ts +24 -0
  119. package/dist/resources/payments.d.ts.map +1 -0
  120. package/dist/resources/payments.js +29 -0
  121. package/dist/resources/payments.js.map +1 -0
  122. package/dist/resources/policies.d.ts +23 -0
  123. package/dist/resources/policies.d.ts.map +1 -0
  124. package/dist/resources/policies.js +27 -0
  125. package/dist/resources/policies.js.map +1 -0
  126. package/dist/resources/transactions.d.ts +32 -0
  127. package/dist/resources/transactions.d.ts.map +1 -0
  128. package/dist/resources/transactions.js +33 -0
  129. package/dist/resources/transactions.js.map +1 -0
  130. package/dist/resources/ucp.d.ts +218 -0
  131. package/dist/resources/ucp.d.ts.map +1 -0
  132. package/dist/resources/ucp.js +129 -0
  133. package/dist/resources/ucp.js.map +1 -0
  134. package/dist/resources/wallets.d.ts +71 -0
  135. package/dist/resources/wallets.d.ts.map +1 -0
  136. package/dist/resources/wallets.js +105 -0
  137. package/dist/resources/wallets.js.map +1 -0
  138. package/dist/resources/webhooks.d.ts +57 -0
  139. package/dist/resources/webhooks.d.ts.map +1 -0
  140. package/dist/resources/webhooks.js +77 -0
  141. package/dist/resources/webhooks.js.map +1 -0
  142. package/dist/types.d.ts +1045 -0
  143. package/dist/types.d.ts.map +1 -0
  144. package/dist/types.js +10 -0
  145. package/dist/types.js.map +1 -0
  146. package/package.json +114 -0
package/dist/errors.js ADDED
@@ -0,0 +1,612 @@
1
+ /**
2
+ * Sardis SDK Error Classes
3
+ *
4
+ * Comprehensive error types for the Sardis SDK with standardized error codes
5
+ * for better error handling and debugging.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ /**
10
+ * Error codes used throughout the Sardis SDK.
11
+ * These codes provide machine-readable error identification.
12
+ */
13
+ export var SardisErrorCode;
14
+ (function (SardisErrorCode) {
15
+ // General errors (1xxx)
16
+ SardisErrorCode["UNKNOWN_ERROR"] = "SARDIS_1000";
17
+ SardisErrorCode["CONFIGURATION_ERROR"] = "SARDIS_1001";
18
+ SardisErrorCode["INITIALIZATION_ERROR"] = "SARDIS_1002";
19
+ SardisErrorCode["INVALID_ARGUMENT"] = "SARDIS_1003";
20
+ // Authentication errors (2xxx)
21
+ SardisErrorCode["AUTHENTICATION_ERROR"] = "SARDIS_2000";
22
+ SardisErrorCode["INVALID_API_KEY"] = "SARDIS_2001";
23
+ SardisErrorCode["EXPIRED_TOKEN"] = "SARDIS_2002";
24
+ SardisErrorCode["INSUFFICIENT_PERMISSIONS"] = "SARDIS_2003";
25
+ SardisErrorCode["TOKEN_REFRESH_FAILED"] = "SARDIS_2004";
26
+ // API errors (3xxx)
27
+ SardisErrorCode["API_ERROR"] = "SARDIS_3000";
28
+ SardisErrorCode["BAD_REQUEST"] = "SARDIS_3400";
29
+ SardisErrorCode["UNAUTHORIZED"] = "SARDIS_3401";
30
+ SardisErrorCode["FORBIDDEN"] = "SARDIS_3403";
31
+ SardisErrorCode["NOT_FOUND"] = "SARDIS_3404";
32
+ SardisErrorCode["METHOD_NOT_ALLOWED"] = "SARDIS_3405";
33
+ SardisErrorCode["CONFLICT"] = "SARDIS_3409";
34
+ SardisErrorCode["UNPROCESSABLE_ENTITY"] = "SARDIS_3422";
35
+ SardisErrorCode["RATE_LIMIT_EXCEEDED"] = "SARDIS_3429";
36
+ SardisErrorCode["INTERNAL_SERVER_ERROR"] = "SARDIS_3500";
37
+ SardisErrorCode["SERVICE_UNAVAILABLE"] = "SARDIS_3503";
38
+ // Network errors (4xxx)
39
+ SardisErrorCode["NETWORK_ERROR"] = "SARDIS_4000";
40
+ SardisErrorCode["TIMEOUT_ERROR"] = "SARDIS_4001";
41
+ SardisErrorCode["CONNECTION_ERROR"] = "SARDIS_4002";
42
+ SardisErrorCode["REQUEST_ABORTED"] = "SARDIS_4003";
43
+ SardisErrorCode["DNS_ERROR"] = "SARDIS_4004";
44
+ SardisErrorCode["SSL_ERROR"] = "SARDIS_4005";
45
+ // Validation errors (5xxx)
46
+ SardisErrorCode["VALIDATION_ERROR"] = "SARDIS_5000";
47
+ SardisErrorCode["MISSING_REQUIRED_FIELD"] = "SARDIS_5001";
48
+ SardisErrorCode["INVALID_FORMAT"] = "SARDIS_5002";
49
+ SardisErrorCode["VALUE_OUT_OF_RANGE"] = "SARDIS_5003";
50
+ SardisErrorCode["INVALID_CHAIN"] = "SARDIS_5004";
51
+ SardisErrorCode["INVALID_TOKEN"] = "SARDIS_5005";
52
+ SardisErrorCode["INVALID_ADDRESS"] = "SARDIS_5006";
53
+ // Business logic errors (6xxx)
54
+ SardisErrorCode["INSUFFICIENT_BALANCE"] = "SARDIS_6000";
55
+ SardisErrorCode["SPENDING_LIMIT_EXCEEDED"] = "SARDIS_6001";
56
+ SardisErrorCode["POLICY_VIOLATION"] = "SARDIS_6002";
57
+ SardisErrorCode["WALLET_INACTIVE"] = "SARDIS_6003";
58
+ SardisErrorCode["HOLD_EXPIRED"] = "SARDIS_6004";
59
+ SardisErrorCode["HOLD_ALREADY_CAPTURED"] = "SARDIS_6005";
60
+ SardisErrorCode["HOLD_ALREADY_VOIDED"] = "SARDIS_6006";
61
+ SardisErrorCode["DUPLICATE_TRANSACTION"] = "SARDIS_6007";
62
+ SardisErrorCode["AGENT_INACTIVE"] = "SARDIS_6008";
63
+ // Blockchain errors (7xxx)
64
+ SardisErrorCode["BLOCKCHAIN_ERROR"] = "SARDIS_7000";
65
+ SardisErrorCode["TRANSACTION_FAILED"] = "SARDIS_7001";
66
+ SardisErrorCode["GAS_ESTIMATION_FAILED"] = "SARDIS_7002";
67
+ SardisErrorCode["NONCE_ERROR"] = "SARDIS_7003";
68
+ SardisErrorCode["CONTRACT_ERROR"] = "SARDIS_7004";
69
+ SardisErrorCode["CHAIN_UNAVAILABLE"] = "SARDIS_7005";
70
+ })(SardisErrorCode || (SardisErrorCode = {}));
71
+ /**
72
+ * Base error class for all Sardis SDK errors.
73
+ *
74
+ * All errors thrown by the SDK extend this class, providing consistent
75
+ * error handling capabilities across the SDK.
76
+ *
77
+ * @example
78
+ * ```typescript
79
+ * try {
80
+ * await client.payments.executeMandate(mandate);
81
+ * } catch (error) {
82
+ * if (error instanceof SardisError) {
83
+ * console.error(`Error [${error.code}]: ${error.message}`);
84
+ * console.error('Request ID:', error.requestId);
85
+ * }
86
+ * }
87
+ * ```
88
+ */
89
+ export class SardisError extends Error {
90
+ /**
91
+ * Creates a new SardisError instance.
92
+ *
93
+ * @param message - Human-readable error message
94
+ * @param code - Machine-readable error code
95
+ * @param details - Additional error context
96
+ * @param requestId - Request ID for support reference
97
+ * @param retryable - Whether the operation can be retried
98
+ */
99
+ constructor(message, code = SardisErrorCode.UNKNOWN_ERROR, details = {}, requestId, retryable = false) {
100
+ super(message);
101
+ this.name = 'SardisError';
102
+ this.code = code;
103
+ this.details = details;
104
+ this.requestId = requestId;
105
+ this.retryable = retryable;
106
+ this.timestamp = new Date().toISOString();
107
+ // Ensure proper prototype chain for instanceof checks
108
+ Object.setPrototypeOf(this, SardisError.prototype);
109
+ }
110
+ /**
111
+ * Converts the error to a JSON-serializable object.
112
+ *
113
+ * @returns Error details as a plain object
114
+ */
115
+ toJSON() {
116
+ return {
117
+ code: this.code,
118
+ message: this.message,
119
+ details: this.details,
120
+ request_id: this.requestId,
121
+ timestamp: this.timestamp,
122
+ };
123
+ }
124
+ /**
125
+ * Returns a string representation of the error.
126
+ *
127
+ * @returns Formatted error string
128
+ */
129
+ toString() {
130
+ const parts = [`[${this.code}] ${this.message}`];
131
+ if (this.requestId) {
132
+ parts.push(`(Request ID: ${this.requestId})`);
133
+ }
134
+ return parts.join(' ');
135
+ }
136
+ }
137
+ /**
138
+ * API error from HTTP response.
139
+ *
140
+ * Thrown when the Sardis API returns an error response (4xx or 5xx status codes).
141
+ *
142
+ * @example
143
+ * ```typescript
144
+ * try {
145
+ * await client.wallets.get('invalid_id');
146
+ * } catch (error) {
147
+ * if (error instanceof APIError) {
148
+ * console.error(`HTTP ${error.statusCode}: ${error.message}`);
149
+ * }
150
+ * }
151
+ * ```
152
+ */
153
+ export class APIError extends SardisError {
154
+ /**
155
+ * Creates a new APIError instance.
156
+ *
157
+ * @param message - Human-readable error message
158
+ * @param statusCode - HTTP status code
159
+ * @param code - Machine-readable error code
160
+ * @param details - Additional error context
161
+ * @param requestId - Request ID for support reference
162
+ * @param headers - Response headers
163
+ */
164
+ constructor(message, statusCode, code = SardisErrorCode.API_ERROR, details = {}, requestId, headers) {
165
+ // Determine if retryable based on status code
166
+ const retryable = statusCode >= 500 || statusCode === 429;
167
+ super(message, code, details, requestId, retryable);
168
+ this.name = 'APIError';
169
+ this.statusCode = statusCode;
170
+ this.headers = headers;
171
+ Object.setPrototypeOf(this, APIError.prototype);
172
+ }
173
+ /**
174
+ * Creates an APIError from an HTTP response.
175
+ *
176
+ * @param statusCode - HTTP status code
177
+ * @param body - Response body
178
+ * @param headers - Response headers
179
+ * @returns APIError instance
180
+ */
181
+ static fromResponse(statusCode, body, headers) {
182
+ const error = body.error || body.detail || body;
183
+ const errorCode = APIError.getErrorCodeForStatus(statusCode);
184
+ if (typeof error === 'string') {
185
+ return new APIError(error, statusCode, errorCode, {}, undefined, headers);
186
+ }
187
+ const errorObj = error;
188
+ return new APIError(errorObj.message || 'Unknown API error', statusCode, errorObj.code || errorCode, errorObj.details || {}, errorObj.request_id, headers);
189
+ }
190
+ /**
191
+ * Maps HTTP status codes to Sardis error codes.
192
+ */
193
+ static getErrorCodeForStatus(statusCode) {
194
+ switch (statusCode) {
195
+ case 400:
196
+ return SardisErrorCode.BAD_REQUEST;
197
+ case 401:
198
+ return SardisErrorCode.UNAUTHORIZED;
199
+ case 403:
200
+ return SardisErrorCode.FORBIDDEN;
201
+ case 404:
202
+ return SardisErrorCode.NOT_FOUND;
203
+ case 405:
204
+ return SardisErrorCode.METHOD_NOT_ALLOWED;
205
+ case 409:
206
+ return SardisErrorCode.CONFLICT;
207
+ case 422:
208
+ return SardisErrorCode.UNPROCESSABLE_ENTITY;
209
+ case 429:
210
+ return SardisErrorCode.RATE_LIMIT_EXCEEDED;
211
+ case 500:
212
+ return SardisErrorCode.INTERNAL_SERVER_ERROR;
213
+ case 503:
214
+ return SardisErrorCode.SERVICE_UNAVAILABLE;
215
+ default:
216
+ return SardisErrorCode.API_ERROR;
217
+ }
218
+ }
219
+ /**
220
+ * Converts the error to a JSON-serializable object.
221
+ */
222
+ toJSON() {
223
+ return {
224
+ ...super.toJSON(),
225
+ status_code: this.statusCode,
226
+ };
227
+ }
228
+ }
229
+ /**
230
+ * Authentication error.
231
+ *
232
+ * Thrown when authentication fails due to invalid or missing credentials.
233
+ *
234
+ * @example
235
+ * ```typescript
236
+ * try {
237
+ * await client.health();
238
+ * } catch (error) {
239
+ * if (error instanceof AuthenticationError) {
240
+ * console.error('Please check your API key');
241
+ * }
242
+ * }
243
+ * ```
244
+ */
245
+ export class AuthenticationError extends SardisError {
246
+ /**
247
+ * Creates a new AuthenticationError instance.
248
+ *
249
+ * @param message - Human-readable error message
250
+ * @param code - Machine-readable error code
251
+ */
252
+ constructor(message = 'Invalid or missing API key', code = SardisErrorCode.AUTHENTICATION_ERROR) {
253
+ super(message, code, {}, undefined, false);
254
+ this.name = 'AuthenticationError';
255
+ Object.setPrototypeOf(this, AuthenticationError.prototype);
256
+ }
257
+ }
258
+ /**
259
+ * Rate limit exceeded error.
260
+ *
261
+ * Thrown when the API rate limit has been exceeded. Includes retry information.
262
+ *
263
+ * @example
264
+ * ```typescript
265
+ * try {
266
+ * await client.payments.executeMandate(mandate);
267
+ * } catch (error) {
268
+ * if (error instanceof RateLimitError) {
269
+ * console.log(`Rate limited. Retry after ${error.retryAfter} seconds`);
270
+ * await sleep(error.retryAfter * 1000);
271
+ * }
272
+ * }
273
+ * ```
274
+ */
275
+ export class RateLimitError extends SardisError {
276
+ /**
277
+ * Creates a new RateLimitError instance.
278
+ *
279
+ * @param message - Human-readable error message
280
+ * @param retryAfter - Seconds to wait before retrying
281
+ * @param limit - Rate limit quota
282
+ * @param remaining - Remaining requests
283
+ * @param resetAt - Reset timestamp
284
+ */
285
+ constructor(message = 'Rate limit exceeded', retryAfter, limit, remaining, resetAt) {
286
+ super(message, SardisErrorCode.RATE_LIMIT_EXCEEDED, { retry_after: retryAfter, limit, remaining }, undefined, true);
287
+ this.name = 'RateLimitError';
288
+ this.retryAfter = retryAfter;
289
+ this.limit = limit;
290
+ this.remaining = remaining;
291
+ this.resetAt = resetAt;
292
+ Object.setPrototypeOf(this, RateLimitError.prototype);
293
+ }
294
+ }
295
+ /**
296
+ * Request timeout error.
297
+ *
298
+ * Thrown when a request times out before completing.
299
+ *
300
+ * @example
301
+ * ```typescript
302
+ * try {
303
+ * await client.payments.executeMandate(mandate);
304
+ * } catch (error) {
305
+ * if (error instanceof TimeoutError) {
306
+ * console.error(`Request timed out after ${error.timeout}ms`);
307
+ * }
308
+ * }
309
+ * ```
310
+ */
311
+ export class TimeoutError extends SardisError {
312
+ /**
313
+ * Creates a new TimeoutError instance.
314
+ *
315
+ * @param message - Human-readable error message
316
+ * @param timeout - Timeout duration in milliseconds
317
+ */
318
+ constructor(message = 'Request timed out', timeout = 30000) {
319
+ super(message, SardisErrorCode.TIMEOUT_ERROR, { timeout_ms: timeout }, undefined, true);
320
+ this.name = 'TimeoutError';
321
+ this.timeout = timeout;
322
+ Object.setPrototypeOf(this, TimeoutError.prototype);
323
+ }
324
+ }
325
+ /**
326
+ * Request aborted error.
327
+ *
328
+ * Thrown when a request is cancelled via AbortController.
329
+ *
330
+ * @example
331
+ * ```typescript
332
+ * const controller = new AbortController();
333
+ * setTimeout(() => controller.abort(), 1000);
334
+ *
335
+ * try {
336
+ * await client.payments.executeMandate(mandate, { signal: controller.signal });
337
+ * } catch (error) {
338
+ * if (error instanceof AbortError) {
339
+ * console.log('Request was cancelled');
340
+ * }
341
+ * }
342
+ * ```
343
+ */
344
+ export class AbortError extends SardisError {
345
+ /**
346
+ * Creates a new AbortError instance.
347
+ *
348
+ * @param message - Human-readable error message
349
+ */
350
+ constructor(message = 'Request was aborted') {
351
+ super(message, SardisErrorCode.REQUEST_ABORTED, {}, undefined, false);
352
+ this.name = 'AbortError';
353
+ Object.setPrototypeOf(this, AbortError.prototype);
354
+ }
355
+ }
356
+ /**
357
+ * Network error.
358
+ *
359
+ * Thrown when a network-level error occurs (connection refused, DNS failure, etc.).
360
+ *
361
+ * @example
362
+ * ```typescript
363
+ * try {
364
+ * await client.health();
365
+ * } catch (error) {
366
+ * if (error instanceof NetworkError) {
367
+ * console.error('Network error:', error.cause);
368
+ * }
369
+ * }
370
+ * ```
371
+ */
372
+ export class NetworkError extends SardisError {
373
+ /**
374
+ * Creates a new NetworkError instance.
375
+ *
376
+ * @param message - Human-readable error message
377
+ * @param cause - Original error
378
+ * @param code - Machine-readable error code
379
+ */
380
+ constructor(message = 'Network error occurred', cause, code = SardisErrorCode.NETWORK_ERROR) {
381
+ super(message, code, { original_error: cause?.message }, undefined, true);
382
+ this.name = 'NetworkError';
383
+ this.cause = cause;
384
+ Object.setPrototypeOf(this, NetworkError.prototype);
385
+ }
386
+ }
387
+ /**
388
+ * Validation error.
389
+ *
390
+ * Thrown when input validation fails.
391
+ *
392
+ * @example
393
+ * ```typescript
394
+ * try {
395
+ * await client.holds.create({ wallet_id: '', amount: '-100' });
396
+ * } catch (error) {
397
+ * if (error instanceof ValidationError) {
398
+ * console.error(`Validation failed for ${error.field}: ${error.message}`);
399
+ * }
400
+ * }
401
+ * ```
402
+ */
403
+ export class ValidationError extends SardisError {
404
+ /**
405
+ * Creates a new ValidationError instance.
406
+ *
407
+ * @param message - Human-readable error message
408
+ * @param field - Field that failed validation
409
+ * @param expected - Expected value or format
410
+ * @param received - Actual value received
411
+ */
412
+ constructor(message, field, expected, received) {
413
+ super(message, SardisErrorCode.VALIDATION_ERROR, { field, expected, received });
414
+ this.name = 'ValidationError';
415
+ this.field = field;
416
+ this.expected = expected;
417
+ this.received = received;
418
+ Object.setPrototypeOf(this, ValidationError.prototype);
419
+ }
420
+ }
421
+ /**
422
+ * Insufficient balance error.
423
+ *
424
+ * Thrown when a payment cannot be completed due to insufficient funds.
425
+ *
426
+ * @example
427
+ * ```typescript
428
+ * try {
429
+ * await client.payments.executeMandate(mandate);
430
+ * } catch (error) {
431
+ * if (error instanceof InsufficientBalanceError) {
432
+ * console.error(
433
+ * `Need ${error.required} ${error.currency} but only have ${error.available}`
434
+ * );
435
+ * }
436
+ * }
437
+ * ```
438
+ */
439
+ export class InsufficientBalanceError extends SardisError {
440
+ /**
441
+ * Creates a new InsufficientBalanceError instance.
442
+ *
443
+ * @param message - Human-readable error message
444
+ * @param required - Required amount
445
+ * @param available - Available balance
446
+ * @param currency - Currency/token
447
+ * @param walletId - Wallet ID
448
+ */
449
+ constructor(message, required, available, currency, walletId) {
450
+ super(message, SardisErrorCode.INSUFFICIENT_BALANCE, {
451
+ required,
452
+ available,
453
+ currency,
454
+ wallet_id: walletId,
455
+ });
456
+ this.name = 'InsufficientBalanceError';
457
+ this.required = required;
458
+ this.available = available;
459
+ this.currency = currency;
460
+ this.walletId = walletId;
461
+ Object.setPrototypeOf(this, InsufficientBalanceError.prototype);
462
+ }
463
+ }
464
+ /**
465
+ * Resource not found error.
466
+ *
467
+ * Thrown when a requested resource does not exist.
468
+ *
469
+ * @example
470
+ * ```typescript
471
+ * try {
472
+ * await client.wallets.get('nonexistent_wallet');
473
+ * } catch (error) {
474
+ * if (error instanceof NotFoundError) {
475
+ * console.error(`${error.resourceType} not found: ${error.resourceId}`);
476
+ * }
477
+ * }
478
+ * ```
479
+ */
480
+ export class NotFoundError extends SardisError {
481
+ /**
482
+ * Creates a new NotFoundError instance.
483
+ *
484
+ * @param resourceType - Type of resource
485
+ * @param resourceId - ID of the resource
486
+ */
487
+ constructor(resourceType, resourceId) {
488
+ super(`${resourceType} not found: ${resourceId}`, SardisErrorCode.NOT_FOUND, {
489
+ resource_type: resourceType,
490
+ resource_id: resourceId,
491
+ });
492
+ this.name = 'NotFoundError';
493
+ this.resourceType = resourceType;
494
+ this.resourceId = resourceId;
495
+ Object.setPrototypeOf(this, NotFoundError.prototype);
496
+ }
497
+ }
498
+ /**
499
+ * Policy violation error.
500
+ *
501
+ * Thrown when an operation violates spending policies or limits.
502
+ *
503
+ * @example
504
+ * ```typescript
505
+ * try {
506
+ * await client.payments.executeMandate(mandate);
507
+ * } catch (error) {
508
+ * if (error instanceof PolicyViolationError) {
509
+ * console.error(`Policy violated: ${error.policyName}`);
510
+ * console.error(`Limit: ${error.limit}, Attempted: ${error.attempted}`);
511
+ * }
512
+ * }
513
+ * ```
514
+ */
515
+ export class PolicyViolationError extends SardisError {
516
+ /**
517
+ * Creates a new PolicyViolationError instance.
518
+ *
519
+ * @param message - Human-readable error message
520
+ * @param policyName - Name of the violated policy
521
+ * @param limit - Policy limit value
522
+ * @param attempted - Attempted value
523
+ */
524
+ constructor(message, policyName, limit, attempted) {
525
+ super(message, SardisErrorCode.POLICY_VIOLATION, {
526
+ policy_name: policyName,
527
+ limit,
528
+ attempted,
529
+ });
530
+ this.name = 'PolicyViolationError';
531
+ this.policyName = policyName;
532
+ this.limit = limit;
533
+ this.attempted = attempted;
534
+ Object.setPrototypeOf(this, PolicyViolationError.prototype);
535
+ }
536
+ }
537
+ /**
538
+ * Spending limit exceeded error.
539
+ *
540
+ * Thrown when a transaction exceeds configured spending limits.
541
+ */
542
+ export class SpendingLimitError extends SardisError {
543
+ /**
544
+ * Creates a new SpendingLimitError instance.
545
+ *
546
+ * @param message - Human-readable error message
547
+ * @param limitType - Type of limit
548
+ * @param limit - Limit amount
549
+ * @param attempted - Attempted amount
550
+ * @param currency - Currency
551
+ */
552
+ constructor(message, limitType, limit, attempted, currency) {
553
+ super(message, SardisErrorCode.SPENDING_LIMIT_EXCEEDED, {
554
+ limit_type: limitType,
555
+ limit,
556
+ attempted,
557
+ currency,
558
+ });
559
+ this.name = 'SpendingLimitError';
560
+ this.limitType = limitType;
561
+ this.limit = limit;
562
+ this.attempted = attempted;
563
+ this.currency = currency;
564
+ Object.setPrototypeOf(this, SpendingLimitError.prototype);
565
+ }
566
+ }
567
+ /**
568
+ * Blockchain transaction error.
569
+ *
570
+ * Thrown when a blockchain transaction fails.
571
+ */
572
+ export class BlockchainError extends SardisError {
573
+ /**
574
+ * Creates a new BlockchainError instance.
575
+ *
576
+ * @param message - Human-readable error message
577
+ * @param chain - Chain where error occurred
578
+ * @param code - Machine-readable error code
579
+ * @param txHash - Transaction hash
580
+ * @param blockNumber - Block number
581
+ */
582
+ constructor(message, chain, code = SardisErrorCode.BLOCKCHAIN_ERROR, txHash, blockNumber) {
583
+ super(message, code, { chain, tx_hash: txHash, block_number: blockNumber }, undefined, false);
584
+ this.name = 'BlockchainError';
585
+ this.chain = chain;
586
+ this.txHash = txHash;
587
+ this.blockNumber = blockNumber;
588
+ Object.setPrototypeOf(this, BlockchainError.prototype);
589
+ }
590
+ }
591
+ /**
592
+ * Type guard to check if an error is a SardisError.
593
+ *
594
+ * @param error - Error to check
595
+ * @returns True if error is a SardisError
596
+ */
597
+ export function isSardisError(error) {
598
+ return error instanceof SardisError;
599
+ }
600
+ /**
601
+ * Type guard to check if an error is retryable.
602
+ *
603
+ * @param error - Error to check
604
+ * @returns True if error is retryable
605
+ */
606
+ export function isRetryableError(error) {
607
+ if (error instanceof SardisError) {
608
+ return error.retryable;
609
+ }
610
+ return false;
611
+ }
612
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}