@guveno/wallet-sdk 1.0.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 (100) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +211 -0
  3. package/dist/api/client.d.ts +48 -0
  4. package/dist/api/client.d.ts.map +1 -0
  5. package/dist/api/client.js +563 -0
  6. package/dist/api/client.js.map +1 -0
  7. package/dist/api/types.d.ts +237 -0
  8. package/dist/api/types.d.ts.map +1 -0
  9. package/dist/api/types.js +9 -0
  10. package/dist/api/types.js.map +1 -0
  11. package/dist/chains.d.ts +25 -0
  12. package/dist/chains.d.ts.map +1 -0
  13. package/dist/chains.js +67 -0
  14. package/dist/chains.js.map +1 -0
  15. package/dist/constants.d.ts +17 -0
  16. package/dist/constants.d.ts.map +1 -0
  17. package/dist/constants.js +19 -0
  18. package/dist/constants.js.map +1 -0
  19. package/dist/crypto/sealed-box.d.ts +8 -0
  20. package/dist/crypto/sealed-box.d.ts.map +1 -0
  21. package/dist/crypto/sealed-box.js +66 -0
  22. package/dist/crypto/sealed-box.js.map +1 -0
  23. package/dist/derivation.d.ts +26 -0
  24. package/dist/derivation.d.ts.map +1 -0
  25. package/dist/derivation.js +121 -0
  26. package/dist/derivation.js.map +1 -0
  27. package/dist/errors.d.ts +81 -0
  28. package/dist/errors.d.ts.map +1 -0
  29. package/dist/errors.js +95 -0
  30. package/dist/errors.js.map +1 -0
  31. package/dist/hot-wallet.d.ts +57 -0
  32. package/dist/hot-wallet.d.ts.map +1 -0
  33. package/dist/hot-wallet.js +139 -0
  34. package/dist/hot-wallet.js.map +1 -0
  35. package/dist/index.d.ts +29 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +21 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/keyprovider/file-provider.d.ts +19 -0
  40. package/dist/keyprovider/file-provider.d.ts.map +1 -0
  41. package/dist/keyprovider/file-provider.js +48 -0
  42. package/dist/keyprovider/file-provider.js.map +1 -0
  43. package/dist/keyprovider/index.d.ts +13 -0
  44. package/dist/keyprovider/index.d.ts.map +1 -0
  45. package/dist/keyprovider/index.js +3 -0
  46. package/dist/keyprovider/index.js.map +1 -0
  47. package/dist/keyprovider/kms-provider.d.ts +26 -0
  48. package/dist/keyprovider/kms-provider.d.ts.map +1 -0
  49. package/dist/keyprovider/kms-provider.js +32 -0
  50. package/dist/keyprovider/kms-provider.js.map +1 -0
  51. package/dist/manager.d.ts +28 -0
  52. package/dist/manager.d.ts.map +1 -0
  53. package/dist/manager.js +499 -0
  54. package/dist/manager.js.map +1 -0
  55. package/dist/mnemonic.d.ts +13 -0
  56. package/dist/mnemonic.d.ts.map +1 -0
  57. package/dist/mnemonic.js +44 -0
  58. package/dist/mnemonic.js.map +1 -0
  59. package/dist/session/file-store.d.ts +10 -0
  60. package/dist/session/file-store.d.ts.map +1 -0
  61. package/dist/session/file-store.js +88 -0
  62. package/dist/session/file-store.js.map +1 -0
  63. package/dist/signing/sign-bitcoin.d.ts +14 -0
  64. package/dist/signing/sign-bitcoin.d.ts.map +1 -0
  65. package/dist/signing/sign-bitcoin.js +133 -0
  66. package/dist/signing/sign-bitcoin.js.map +1 -0
  67. package/dist/signing/sign-ethereum.d.ts +13 -0
  68. package/dist/signing/sign-ethereum.d.ts.map +1 -0
  69. package/dist/signing/sign-ethereum.js +49 -0
  70. package/dist/signing/sign-ethereum.js.map +1 -0
  71. package/dist/signing/sign-polkadot.d.ts +9 -0
  72. package/dist/signing/sign-polkadot.d.ts.map +1 -0
  73. package/dist/signing/sign-polkadot.js +79 -0
  74. package/dist/signing/sign-polkadot.js.map +1 -0
  75. package/dist/signing/sign-withdrawal.d.ts +21 -0
  76. package/dist/signing/sign-withdrawal.d.ts.map +1 -0
  77. package/dist/signing/sign-withdrawal.js +35 -0
  78. package/dist/signing/sign-withdrawal.js.map +1 -0
  79. package/dist/signing/sign-xrp.d.ts +7 -0
  80. package/dist/signing/sign-xrp.d.ts.map +1 -0
  81. package/dist/signing/sign-xrp.js +27 -0
  82. package/dist/signing/sign-xrp.js.map +1 -0
  83. package/dist/signing/types.d.ts +84 -0
  84. package/dist/signing/types.d.ts.map +1 -0
  85. package/dist/signing/types.js +15 -0
  86. package/dist/signing/types.js.map +1 -0
  87. package/dist/storage/crypto.d.ts +7 -0
  88. package/dist/storage/crypto.d.ts.map +1 -0
  89. package/dist/storage/crypto.js +80 -0
  90. package/dist/storage/crypto.js.map +1 -0
  91. package/dist/storage/file-store.d.ts +21 -0
  92. package/dist/storage/file-store.d.ts.map +1 -0
  93. package/dist/storage/file-store.js +219 -0
  94. package/dist/storage/file-store.js.map +1 -0
  95. package/dist/types.d.ts +187 -0
  96. package/dist/types.d.ts.map +1 -0
  97. package/dist/types.js +2 -0
  98. package/dist/types.js.map +1 -0
  99. package/docs/security.md +119 -0
  100. package/package.json +76 -0
@@ -0,0 +1,563 @@
1
+ import { z } from 'zod';
2
+ import { DEFAULT_API_BASE_URL, DEFAULT_API_BASE_URL_ENV_VAR } from '../constants.js';
3
+ import { ApiError, AuthenticationError, RateLimitError, ValidationError } from '../errors.js';
4
+ const jsonObjectSchema = z.record(z.string(), z.unknown());
5
+ const companyRoleSchema = z.enum(['owner', 'admin', 'tech', 'manager', 'signer', 'viewer']);
6
+ // The full set of chains/networks the SDK can derive & sign locally, matching what
7
+ // the server custodies (Polkadot uses the `paseo` testnet rather than sepolia/testnet).
8
+ const chainSchema = z.enum(['ethereum', 'bitcoin', 'xrp', 'polkadot']);
9
+ const networkSchema = z.enum(['mainnet', 'sepolia', 'testnet', 'paseo']);
10
+ const walletTypeSchema = z.enum(['single_key', 'mpc_threshold']);
11
+ const recordStatusSchema = z.enum(['active', 'archived']);
12
+ const dateTimeSchema = z.iso.datetime();
13
+ const companyMembershipSchema = z.object({
14
+ id: z.number().int().positive(),
15
+ name: z.string(),
16
+ role: companyRoleSchema
17
+ });
18
+ const userEncryptionKeySchema = z.object({
19
+ id: z.uuid(),
20
+ publicKey: z.string(),
21
+ encryptedPrivateKeyJson: jsonObjectSchema,
22
+ createdAt: dateTimeSchema,
23
+ updatedAt: dateTimeSchema
24
+ });
25
+ const apiUserSchema = z.object({
26
+ id: z.number().int().positive(),
27
+ email: z.email(),
28
+ company: companyMembershipSchema.nullable(),
29
+ encryptionKey: userEncryptionKeySchema.nullable(),
30
+ createdAt: dateTimeSchema,
31
+ updatedAt: dateTimeSchema
32
+ });
33
+ const authResponseSchema = z.object({
34
+ accessToken: z.string().min(1),
35
+ tokenType: z.literal('Bearer'),
36
+ expiresIn: z.string().min(1),
37
+ user: apiUserSchema
38
+ });
39
+ const signupResponseSchema = z.object({
40
+ email: z.email(),
41
+ verificationRequired: z.literal(true)
42
+ });
43
+ const resendVerificationResponseSchema = z.object({
44
+ email: z.email()
45
+ });
46
+ const keySummarySchema = z.object({
47
+ id: z.uuid(),
48
+ fingerprint: z.string().regex(/^[a-f0-9]{64}$/),
49
+ createdAt: dateTimeSchema,
50
+ updatedAt: dateTimeSchema
51
+ });
52
+ // Grant metadata returned on wallet-detail reads — no encrypted secret.
53
+ const keyAccessSchema = z.object({
54
+ id: z.uuid(),
55
+ keyId: z.uuid(),
56
+ userId: z.number().int().positive(),
57
+ createdAt: dateTimeSchema,
58
+ updatedAt: dateTimeSchema
59
+ });
60
+ // Full grant including the encrypted custody secret — returned only by the
61
+ // dedicated reveal endpoint (GET /wallets/:id/secret), which requires an
62
+ // interactive user session (not an API key) and audits each access.
63
+ const keyAccessSecretSchema = keyAccessSchema.extend({
64
+ encryptedSecretJson: jsonObjectSchema
65
+ });
66
+ const walletSummarySchema = z.object({
67
+ id: z.number().int().positive(),
68
+ keyId: z.uuid().nullable(),
69
+ name: z.string(),
70
+ chain: chainSchema,
71
+ network: networkSchema,
72
+ type: walletTypeSchema,
73
+ threshold: z.number().int().positive().nullable(),
74
+ status: recordStatusSchema,
75
+ archivedAt: dateTimeSchema.nullable(),
76
+ addressCount: z.number().int().nonnegative(),
77
+ createdAt: dateTimeSchema,
78
+ updatedAt: dateTimeSchema
79
+ });
80
+ const walletDetailSchema = walletSummarySchema.extend({
81
+ key: keySummarySchema.nullable(),
82
+ keyAccess: keyAccessSchema.nullable()
83
+ });
84
+ const walletAddressSchema = z.object({
85
+ id: z.number().int().positive(),
86
+ walletId: z.number().int().positive(),
87
+ chain: chainSchema,
88
+ network: networkSchema,
89
+ address: z.string().min(1),
90
+ derivationPath: z.string().min(1),
91
+ accountIndex: z.number().int().nonnegative(),
92
+ label: z.string().nullable(),
93
+ status: recordStatusSchema,
94
+ archivedAt: dateTimeSchema.nullable(),
95
+ createdAt: dateTimeSchema,
96
+ updatedAt: dateTimeSchema
97
+ });
98
+ const pageInfoSchema = z.object({
99
+ nextCursor: z.string().nullable(),
100
+ hasNextPage: z.boolean()
101
+ });
102
+ const withdrawalOutputSchema = z.object({
103
+ toAddress: z.string(),
104
+ amount: z.string()
105
+ });
106
+ const withdrawalSchema = z.object({
107
+ id: z.number().int().positive(),
108
+ addressId: z.number().int().positive(),
109
+ assetId: z.number().int().positive(),
110
+ network: z.string(),
111
+ toAddress: z.string().nullish().transform((value) => value ?? null),
112
+ outputs: z.array(withdrawalOutputSchema).nullish().transform((value) => value ?? null),
113
+ destinationTag: z.number().int().nullish().transform((value) => value ?? null),
114
+ amount: z.string(),
115
+ status: z.enum(['prepared', 'broadcast', 'confirmed', 'rejected']),
116
+ rejectionReason: z.string().nullish().transform((value) => value ?? null),
117
+ txHash: z.string().nullish().transform((value) => value ?? null),
118
+ expiresAt: dateTimeSchema,
119
+ createdAt: dateTimeSchema,
120
+ updatedAt: dateTimeSchema
121
+ });
122
+ // `signingPayload` is opaque server-side (additionalProperties: true) — validate it
123
+ // is an object and let `signWithdrawal` enforce the per-chain shape it needs.
124
+ const prepareWithdrawalResponseSchema = z.object({
125
+ withdrawal: withdrawalSchema,
126
+ signingPayload: jsonObjectSchema
127
+ });
128
+ const broadcastWithdrawalResponseSchema = z.object({
129
+ withdrawal: withdrawalSchema
130
+ });
131
+ const withdrawalGetResponseSchema = z.object({
132
+ withdrawal: withdrawalSchema
133
+ });
134
+ const withdrawalListResponseSchema = z.object({
135
+ items: z.array(withdrawalSchema)
136
+ });
137
+ const currentUserResponseSchema = z.object({
138
+ user: apiUserSchema
139
+ });
140
+ const walletCreateResponseSchema = z.object({
141
+ wallet: walletDetailSchema
142
+ });
143
+ const walletListResponseSchema = z.object({
144
+ items: z.array(walletSummarySchema),
145
+ pageInfo: pageInfoSchema
146
+ });
147
+ const walletGetResponseSchema = z.object({
148
+ wallet: walletDetailSchema
149
+ });
150
+ const walletSecretResponseSchema = z.object({
151
+ keyAccess: keyAccessSecretSchema
152
+ });
153
+ const walletAddressListResponseSchema = z.object({
154
+ items: z.array(walletAddressSchema),
155
+ pageInfo: pageInfoSchema
156
+ });
157
+ const webhookTypeSchema = z.enum(['slack', 'telegram', 'api']);
158
+ const webhookSchema = z.object({
159
+ id: z.number().int().positive(),
160
+ type: webhookTypeSchema,
161
+ events: z.array(z.string()),
162
+ enabled: z.boolean(),
163
+ config: jsonObjectSchema,
164
+ createdAt: dateTimeSchema,
165
+ updatedAt: dateTimeSchema
166
+ });
167
+ // The signing secret is only present on the create response.
168
+ const webhookWithSecretSchema = webhookSchema.extend({
169
+ signingSecret: z.string().min(1)
170
+ });
171
+ const webhookDeliverySchema = z.object({
172
+ id: z.number().int().positive(),
173
+ webhookId: z.number().int().positive(),
174
+ eventId: z.string(),
175
+ eventType: z.string().nullable(),
176
+ status: z.enum(['pending', 'delivered', 'failed']),
177
+ attempts: z.number().int().nonnegative(),
178
+ responseCode: z.number().int().nullable(),
179
+ lastError: z.string().nullable(),
180
+ nextAttemptAt: dateTimeSchema,
181
+ createdAt: dateTimeSchema,
182
+ updatedAt: dateTimeSchema
183
+ });
184
+ const webhookCreateResponseSchema = z.object({
185
+ webhook: webhookWithSecretSchema
186
+ });
187
+ const webhookListResponseSchema = z.object({
188
+ items: z.array(webhookSchema)
189
+ });
190
+ const webhookDeliveryListResponseSchema = z.object({
191
+ items: z.array(webhookDeliverySchema)
192
+ });
193
+ function normalizeBaseUrl(baseUrl) {
194
+ const resolved = baseUrl ?? process.env[DEFAULT_API_BASE_URL_ENV_VAR] ?? DEFAULT_API_BASE_URL;
195
+ const normalized = resolved.trim();
196
+ if (!normalized) {
197
+ throw new ValidationError('API base URL cannot be empty.');
198
+ }
199
+ return normalized.endsWith('/') ? normalized.slice(0, -1) : normalized;
200
+ }
201
+ function buildUrl(baseUrl, path, query) {
202
+ const normalizedPath = path.replace(/^\/+/, '');
203
+ const url = new URL(normalizedPath, `${baseUrl}/`);
204
+ if (query != null) {
205
+ url.search = query.toString();
206
+ }
207
+ return url;
208
+ }
209
+ function appendOptionalQuery(query, key, value) {
210
+ if (value !== undefined) {
211
+ query.set(key, String(value));
212
+ }
213
+ }
214
+ async function parseResponseBody(response) {
215
+ if (response.status === 204) {
216
+ return undefined;
217
+ }
218
+ const text = await response.text();
219
+ if (!text) {
220
+ return undefined;
221
+ }
222
+ try {
223
+ return JSON.parse(text);
224
+ }
225
+ catch (error) {
226
+ throw new ApiError('The API returned malformed JSON.', {
227
+ cause: error,
228
+ statusCode: response.status
229
+ });
230
+ }
231
+ }
232
+ export class GuvenoApiClient {
233
+ baseUrl;
234
+ fetchImpl;
235
+ accessToken;
236
+ constructor(options = {}) {
237
+ this.baseUrl = normalizeBaseUrl(options.baseUrl);
238
+ this.fetchImpl = options.fetchImpl ?? fetch;
239
+ this.accessToken = options.accessToken ?? options.apiKey;
240
+ }
241
+ setAccessToken(accessToken) {
242
+ this.accessToken = accessToken;
243
+ }
244
+ /** Authenticate with a `gv_live_...` API key. Sent as the bearer token, like {@link setAccessToken}. */
245
+ setApiKey(apiKey) {
246
+ this.accessToken = apiKey;
247
+ }
248
+ /**
249
+ * Registers an account and triggers a 6-digit verification-code email. No
250
+ * session is issued — call {@link verifyEmail} with the code to obtain the
251
+ * access token.
252
+ */
253
+ async signup(input) {
254
+ return this.request({
255
+ method: 'POST',
256
+ path: 'auth/signup',
257
+ body: {
258
+ email: input.email,
259
+ password: input.password
260
+ },
261
+ responseSchema: signupResponseSchema
262
+ });
263
+ }
264
+ /** Confirms the signup verification code and returns the session token. */
265
+ async verifyEmail(input) {
266
+ return this.request({
267
+ method: 'POST',
268
+ path: 'auth/verify-email',
269
+ body: {
270
+ email: input.email,
271
+ code: input.code
272
+ },
273
+ responseSchema: authResponseSchema
274
+ });
275
+ }
276
+ /** Requests a fresh signup verification code for the given email. */
277
+ async resendVerificationCode(email) {
278
+ return this.request({
279
+ method: 'POST',
280
+ path: 'auth/resend-verification',
281
+ body: { email },
282
+ responseSchema: resendVerificationResponseSchema
283
+ });
284
+ }
285
+ async login(input) {
286
+ return this.request({
287
+ method: 'POST',
288
+ path: 'auth/login',
289
+ body: {
290
+ email: input.email,
291
+ password: input.password
292
+ },
293
+ responseSchema: authResponseSchema
294
+ });
295
+ }
296
+ async getCurrentUser() {
297
+ const body = await this.request({
298
+ method: 'GET',
299
+ path: 'me',
300
+ requiresAuth: true,
301
+ responseSchema: currentUserResponseSchema
302
+ });
303
+ return body.user;
304
+ }
305
+ async createWalletRecord(input) {
306
+ const body = await this.request({
307
+ method: 'POST',
308
+ path: 'wallets',
309
+ body: {
310
+ name: input.name,
311
+ chain: input.chain,
312
+ network: input.network,
313
+ ...(input.type !== undefined ? { type: input.type } : {}),
314
+ ...(input.threshold !== undefined ? { threshold: input.threshold } : {}),
315
+ keyFingerprint: input.keyFingerprint,
316
+ encryptedSecretJson: input.encryptedSecretJson,
317
+ addresses: input.addresses
318
+ },
319
+ requiresAuth: true,
320
+ responseSchema: walletCreateResponseSchema
321
+ });
322
+ return body.wallet;
323
+ }
324
+ async listWalletRecords(options = {}) {
325
+ const body = await this.listWalletRecordPage(options);
326
+ return body.items;
327
+ }
328
+ async listWalletRecordPage(options = {}) {
329
+ const query = new URLSearchParams();
330
+ appendOptionalQuery(query, 'limit', options.limit);
331
+ appendOptionalQuery(query, 'cursor', options.cursor);
332
+ appendOptionalQuery(query, 'chain', options.chain);
333
+ appendOptionalQuery(query, 'network', options.network);
334
+ return this.request({
335
+ method: 'GET',
336
+ path: 'wallets',
337
+ query,
338
+ requiresAuth: true,
339
+ responseSchema: walletListResponseSchema
340
+ });
341
+ }
342
+ async getWalletRecord(walletId) {
343
+ const body = await this.request({
344
+ method: 'GET',
345
+ path: `wallets/${walletId}`,
346
+ requiresAuth: true,
347
+ responseSchema: walletGetResponseSchema
348
+ });
349
+ return body.wallet;
350
+ }
351
+ // Reveal the caller's encrypted custody secret for a wallet. Requires an
352
+ // interactive user session (an `accessToken`) — API keys are rejected — and
353
+ // each access is audited server-side. Call only when actively decrypting the
354
+ // recovery phrase (e.g. to sign or re-share access).
355
+ async getWalletKeySecret(walletId) {
356
+ const body = await this.request({
357
+ method: 'GET',
358
+ path: `wallets/${walletId}/secret`,
359
+ requiresAuth: true,
360
+ responseSchema: walletSecretResponseSchema
361
+ });
362
+ return body.keyAccess;
363
+ }
364
+ async listWalletAddresses(walletId, options = {}) {
365
+ const query = new URLSearchParams();
366
+ appendOptionalQuery(query, 'limit', options.limit);
367
+ appendOptionalQuery(query, 'cursor', options.cursor);
368
+ return this.request({
369
+ method: 'GET',
370
+ path: `wallets/${walletId}/addresses`,
371
+ query,
372
+ requiresAuth: true,
373
+ responseSchema: walletAddressListResponseSchema
374
+ });
375
+ }
376
+ async updateWalletRecord(walletId, input) {
377
+ const body = await this.request({
378
+ method: 'PATCH',
379
+ path: `wallets/${walletId}`,
380
+ body: {
381
+ ...(input.name !== undefined ? { name: input.name } : {}),
382
+ ...(input.addresses !== undefined ? { addresses: input.addresses } : {})
383
+ },
384
+ requiresAuth: true,
385
+ responseSchema: walletGetResponseSchema
386
+ });
387
+ return body.wallet;
388
+ }
389
+ async deleteWalletRecord(walletId) {
390
+ await this.request({
391
+ method: 'DELETE',
392
+ path: `wallets/${walletId}`,
393
+ requiresAuth: true
394
+ });
395
+ }
396
+ async listWebhooks() {
397
+ const body = await this.request({
398
+ method: 'GET',
399
+ path: 'webhooks',
400
+ requiresAuth: true,
401
+ responseSchema: webhookListResponseSchema
402
+ });
403
+ return body.items;
404
+ }
405
+ async createWebhook(input) {
406
+ const body = await this.request({
407
+ method: 'POST',
408
+ path: 'webhooks',
409
+ body: {
410
+ type: input.type,
411
+ config: input.config,
412
+ events: input.events,
413
+ ...(input.enabled !== undefined ? { enabled: input.enabled } : {})
414
+ },
415
+ requiresAuth: true,
416
+ responseSchema: webhookCreateResponseSchema
417
+ });
418
+ return body.webhook;
419
+ }
420
+ async listWebhookDeliveries(webhookId, options = {}) {
421
+ const query = new URLSearchParams();
422
+ appendOptionalQuery(query, 'limit', options.limit);
423
+ const body = await this.request({
424
+ method: 'GET',
425
+ path: `webhooks/${webhookId}/deliveries`,
426
+ query,
427
+ requiresAuth: true,
428
+ responseSchema: webhookDeliveryListResponseSchema
429
+ });
430
+ return body.items;
431
+ }
432
+ async deleteWebhook(webhookId) {
433
+ await this.request({
434
+ method: 'DELETE',
435
+ path: `webhooks/${webhookId}`,
436
+ requiresAuth: true
437
+ });
438
+ }
439
+ async prepareWithdrawal(input) {
440
+ const body = await this.request({
441
+ method: 'POST',
442
+ path: 'withdrawals/prepare',
443
+ body: {
444
+ addressId: input.addressId,
445
+ assetId: input.assetId,
446
+ ...(input.toAddress !== undefined ? { toAddress: input.toAddress } : {}),
447
+ ...(input.amount !== undefined ? { amount: input.amount } : {}),
448
+ ...(input.outputs !== undefined ? { outputs: input.outputs } : {}),
449
+ ...(input.destinationTag !== undefined ? { destinationTag: input.destinationTag } : {}),
450
+ ...(input.idempotencyKey !== undefined ? { idempotencyKey: input.idempotencyKey } : {})
451
+ },
452
+ requiresAuth: true,
453
+ responseSchema: prepareWithdrawalResponseSchema
454
+ });
455
+ return {
456
+ withdrawal: body.withdrawal,
457
+ signingPayload: body.signingPayload
458
+ };
459
+ }
460
+ async broadcastWithdrawal(input) {
461
+ const body = await this.request({
462
+ method: 'POST',
463
+ path: 'withdrawals',
464
+ body: {
465
+ withdrawalId: input.withdrawalId,
466
+ signedRawTx: input.signedRawTx,
467
+ ...(input.idempotencyKey !== undefined ? { idempotencyKey: input.idempotencyKey } : {})
468
+ },
469
+ requiresAuth: true,
470
+ responseSchema: broadcastWithdrawalResponseSchema
471
+ });
472
+ return body.withdrawal;
473
+ }
474
+ async getWithdrawal(withdrawalId) {
475
+ const body = await this.request({
476
+ method: 'GET',
477
+ path: `withdrawals/${withdrawalId}`,
478
+ requiresAuth: true,
479
+ responseSchema: withdrawalGetResponseSchema
480
+ });
481
+ return body.withdrawal;
482
+ }
483
+ async listWithdrawals(options = {}) {
484
+ const query = new URLSearchParams();
485
+ appendOptionalQuery(query, 'walletId', options.walletId);
486
+ appendOptionalQuery(query, 'addressId', options.addressId);
487
+ appendOptionalQuery(query, 'chain', options.chain);
488
+ appendOptionalQuery(query, 'network', options.network);
489
+ appendOptionalQuery(query, 'status', options.status);
490
+ appendOptionalQuery(query, 'limit', options.limit);
491
+ appendOptionalQuery(query, 'cursor', options.cursor);
492
+ const body = await this.request({
493
+ method: 'GET',
494
+ path: 'withdrawals',
495
+ query,
496
+ requiresAuth: true,
497
+ responseSchema: withdrawalListResponseSchema
498
+ });
499
+ return body.items;
500
+ }
501
+ async request(options) {
502
+ const headers = new Headers({
503
+ accept: 'application/json'
504
+ });
505
+ if (options.requiresAuth) {
506
+ if (!this.accessToken) {
507
+ throw new AuthenticationError('No bearer token is configured for this API request.');
508
+ }
509
+ headers.set('authorization', `Bearer ${this.accessToken}`);
510
+ }
511
+ if (options.body !== undefined) {
512
+ headers.set('content-type', 'application/json');
513
+ }
514
+ let response;
515
+ try {
516
+ response = await this.fetchImpl(buildUrl(this.baseUrl, options.path, options.query), {
517
+ method: options.method,
518
+ headers,
519
+ ...(options.body !== undefined ? { body: JSON.stringify(options.body) } : {})
520
+ });
521
+ }
522
+ catch (error) {
523
+ throw new ApiError('Failed to reach the API server.', { cause: error });
524
+ }
525
+ const responseBody = await parseResponseBody(response);
526
+ if (!response.ok) {
527
+ const message = typeof responseBody === 'object' &&
528
+ responseBody !== null &&
529
+ 'message' in responseBody &&
530
+ typeof responseBody.message === 'string'
531
+ ? responseBody.message
532
+ : `API request failed with status ${response.status}.`;
533
+ if (response.status === 401) {
534
+ throw new AuthenticationError(message, { cause: responseBody });
535
+ }
536
+ if (response.status === 429) {
537
+ const header = response.headers.get('Retry-After');
538
+ throw new RateLimitError(message, {
539
+ responseBody,
540
+ ...(header != null && Number.isFinite(Number(header)) ? { retryAfter: Number(header) } : {})
541
+ });
542
+ }
543
+ throw new ApiError(message, {
544
+ statusCode: response.status,
545
+ responseBody
546
+ });
547
+ }
548
+ if (options.responseSchema == null) {
549
+ return undefined;
550
+ }
551
+ try {
552
+ return options.responseSchema.parse(responseBody);
553
+ }
554
+ catch (error) {
555
+ throw new ApiError('The API response did not match the expected schema.', {
556
+ cause: error,
557
+ statusCode: response.status,
558
+ responseBody
559
+ });
560
+ }
561
+ }
562
+ }
563
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}