coincircuit 0.1.2
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.
- package/README.md +90 -0
- package/dist/index.cjs +513 -0
- package/dist/index.d.cts +5761 -0
- package/dist/index.d.ts +5761 -0
- package/dist/index.js +482 -0
- package/package.json +34 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,482 @@
|
|
|
1
|
+
// src/errors.ts
|
|
2
|
+
var CoinCircuitError = class extends Error {
|
|
3
|
+
constructor(message) {
|
|
4
|
+
super(message);
|
|
5
|
+
this.name = "CoinCircuitError";
|
|
6
|
+
}
|
|
7
|
+
};
|
|
8
|
+
var CoinCircuitApiError = class extends CoinCircuitError {
|
|
9
|
+
statusCode;
|
|
10
|
+
path;
|
|
11
|
+
constructor(message, statusCode, path) {
|
|
12
|
+
super(message);
|
|
13
|
+
this.name = "CoinCircuitApiError";
|
|
14
|
+
this.statusCode = statusCode;
|
|
15
|
+
this.path = path;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
var CoinCircuitAuthError = class extends CoinCircuitApiError {
|
|
19
|
+
constructor(message, statusCode, path) {
|
|
20
|
+
super(message, statusCode, path);
|
|
21
|
+
this.name = "CoinCircuitAuthError";
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
// src/client.ts
|
|
26
|
+
var RETRYABLE_STATUS_CODES = /* @__PURE__ */ new Set([429, 500, 502, 503, 504]);
|
|
27
|
+
var HttpClient = class {
|
|
28
|
+
apiKey;
|
|
29
|
+
baseUrl;
|
|
30
|
+
timeout;
|
|
31
|
+
maxRetries;
|
|
32
|
+
constructor(config) {
|
|
33
|
+
this.apiKey = config.apiKey;
|
|
34
|
+
this.baseUrl = (config.baseUrl ?? "https://api.coincircuit.io").replace(/\/$/, "");
|
|
35
|
+
this.timeout = config.timeout ?? 3e4;
|
|
36
|
+
this.maxRetries = config.maxRetries ?? 2;
|
|
37
|
+
}
|
|
38
|
+
async get(path, params) {
|
|
39
|
+
const url = this.buildUrl(path, params);
|
|
40
|
+
return this.request(url, { method: "GET" });
|
|
41
|
+
}
|
|
42
|
+
async getPaginated(path, params) {
|
|
43
|
+
const url = this.buildUrl(path, params);
|
|
44
|
+
const response = await this.rawRequest(url, { method: "GET" });
|
|
45
|
+
const body = await response.json();
|
|
46
|
+
if (!body.success) {
|
|
47
|
+
throw this.buildError(body, response.status, path);
|
|
48
|
+
}
|
|
49
|
+
return { data: body.data, meta: body.meta };
|
|
50
|
+
}
|
|
51
|
+
async post(path, body) {
|
|
52
|
+
const url = this.buildUrl(path);
|
|
53
|
+
return this.request(url, {
|
|
54
|
+
method: "POST",
|
|
55
|
+
headers: { "Content-Type": "application/json" },
|
|
56
|
+
body: body != null ? JSON.stringify(body) : void 0
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
async patch(path, body) {
|
|
60
|
+
const url = this.buildUrl(path);
|
|
61
|
+
return this.request(url, {
|
|
62
|
+
method: "PATCH",
|
|
63
|
+
headers: { "Content-Type": "application/json" },
|
|
64
|
+
body: body != null ? JSON.stringify(body) : void 0
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
async delete(path) {
|
|
68
|
+
const url = this.buildUrl(path);
|
|
69
|
+
return this.request(url, { method: "DELETE" });
|
|
70
|
+
}
|
|
71
|
+
async request(url, init) {
|
|
72
|
+
const response = await this.rawRequest(url, init);
|
|
73
|
+
const body = await response.json();
|
|
74
|
+
if (!body.success) {
|
|
75
|
+
const path = new URL(url).pathname;
|
|
76
|
+
throw this.buildError(body, response.status, path);
|
|
77
|
+
}
|
|
78
|
+
return body.data;
|
|
79
|
+
}
|
|
80
|
+
async rawRequest(url, init) {
|
|
81
|
+
const headers = {
|
|
82
|
+
"x-api-key": this.apiKey,
|
|
83
|
+
...init.headers ?? {}
|
|
84
|
+
};
|
|
85
|
+
let lastError;
|
|
86
|
+
for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
|
|
87
|
+
try {
|
|
88
|
+
const controller = new AbortController();
|
|
89
|
+
const timer = setTimeout(() => controller.abort(), this.timeout);
|
|
90
|
+
const response = await fetch(url, {
|
|
91
|
+
...init,
|
|
92
|
+
headers,
|
|
93
|
+
signal: controller.signal
|
|
94
|
+
});
|
|
95
|
+
clearTimeout(timer);
|
|
96
|
+
if (RETRYABLE_STATUS_CODES.has(response.status) && attempt < this.maxRetries) {
|
|
97
|
+
const delay = Math.min(1e3 * Math.pow(2, attempt), 8e3);
|
|
98
|
+
await new Promise((r) => setTimeout(r, delay));
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
return response;
|
|
102
|
+
} catch (err) {
|
|
103
|
+
lastError = err;
|
|
104
|
+
if (attempt < this.maxRetries) {
|
|
105
|
+
const delay = Math.min(1e3 * Math.pow(2, attempt), 8e3);
|
|
106
|
+
await new Promise((r) => setTimeout(r, delay));
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
throw lastError ?? new Error("Request failed after retries");
|
|
112
|
+
}
|
|
113
|
+
buildUrl(path, params) {
|
|
114
|
+
const url = new URL(`${this.baseUrl}${path}`);
|
|
115
|
+
if (params) {
|
|
116
|
+
for (const [key, value] of Object.entries(params)) {
|
|
117
|
+
if (value !== void 0 && value !== null) {
|
|
118
|
+
url.searchParams.set(key, String(value));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return url.toString();
|
|
123
|
+
}
|
|
124
|
+
buildError(body, statusCode, path) {
|
|
125
|
+
const message = body?.message ?? "Unknown API error";
|
|
126
|
+
if (statusCode === 401 || statusCode === 403) {
|
|
127
|
+
return new CoinCircuitAuthError(message, statusCode, path);
|
|
128
|
+
}
|
|
129
|
+
return new CoinCircuitApiError(message, statusCode, path);
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
// src/pagination.ts
|
|
134
|
+
function paginate(fetchPage, params = {}) {
|
|
135
|
+
return {
|
|
136
|
+
[Symbol.asyncIterator]() {
|
|
137
|
+
let currentPage = params.page ?? 1;
|
|
138
|
+
const size = params.size ?? 20;
|
|
139
|
+
let items = [];
|
|
140
|
+
let index = 0;
|
|
141
|
+
let totalPages = Infinity;
|
|
142
|
+
let fetched = false;
|
|
143
|
+
return {
|
|
144
|
+
async next() {
|
|
145
|
+
if (index < items.length) {
|
|
146
|
+
return { value: items[index++], done: false };
|
|
147
|
+
}
|
|
148
|
+
if (fetched && currentPage > totalPages) {
|
|
149
|
+
return { value: void 0, done: true };
|
|
150
|
+
}
|
|
151
|
+
const response = await fetchPage({ ...params, page: currentPage, size });
|
|
152
|
+
totalPages = response.meta.totalPages;
|
|
153
|
+
items = response.data;
|
|
154
|
+
index = 0;
|
|
155
|
+
currentPage++;
|
|
156
|
+
fetched = true;
|
|
157
|
+
if (items.length === 0) {
|
|
158
|
+
return { value: void 0, done: true };
|
|
159
|
+
}
|
|
160
|
+
return { value: items[index++], done: false };
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// src/resources/payments.ts
|
|
168
|
+
var Payments = class {
|
|
169
|
+
constructor(client) {
|
|
170
|
+
this.client = client;
|
|
171
|
+
}
|
|
172
|
+
async create(params) {
|
|
173
|
+
return this.client.post("/api/v1/payments", params);
|
|
174
|
+
}
|
|
175
|
+
async list(params) {
|
|
176
|
+
return this.client.getPaginated("/api/v1/payments", params);
|
|
177
|
+
}
|
|
178
|
+
listAutoPaginate(params) {
|
|
179
|
+
return paginate((p) => this.list(p), params);
|
|
180
|
+
}
|
|
181
|
+
async get(reference) {
|
|
182
|
+
return this.client.get(`/api/v1/payments/reference/${reference}`);
|
|
183
|
+
}
|
|
184
|
+
async generateAddress(reference, params) {
|
|
185
|
+
return this.client.post(`/api/v1/payments/${reference}/address`, params);
|
|
186
|
+
}
|
|
187
|
+
async estimate(params) {
|
|
188
|
+
return this.client.get("/api/v1/payments/estimate", params);
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
// src/resources/x402.ts
|
|
193
|
+
var X402 = class {
|
|
194
|
+
constructor(client) {
|
|
195
|
+
this.client = client;
|
|
196
|
+
}
|
|
197
|
+
async settle(params) {
|
|
198
|
+
return this.client.post("/api/v1/payments/agent/settle", params);
|
|
199
|
+
}
|
|
200
|
+
async verify(params) {
|
|
201
|
+
return this.client.post("/api/v1/payments/agent/verify", params);
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
// src/resources/invoices.ts
|
|
206
|
+
var Invoices = class {
|
|
207
|
+
constructor(client) {
|
|
208
|
+
this.client = client;
|
|
209
|
+
}
|
|
210
|
+
async create(params) {
|
|
211
|
+
return this.client.post("/api/v1/invoices", params);
|
|
212
|
+
}
|
|
213
|
+
async list(params) {
|
|
214
|
+
return this.client.getPaginated("/api/v1/invoices", params);
|
|
215
|
+
}
|
|
216
|
+
listAutoPaginate(params) {
|
|
217
|
+
return paginate((p) => this.list(p), params);
|
|
218
|
+
}
|
|
219
|
+
async get(reference) {
|
|
220
|
+
return this.client.get(`/api/v1/invoices/reference/${reference}`);
|
|
221
|
+
}
|
|
222
|
+
};
|
|
223
|
+
|
|
224
|
+
// src/resources/transactions.ts
|
|
225
|
+
var Transactions = class {
|
|
226
|
+
constructor(client) {
|
|
227
|
+
this.client = client;
|
|
228
|
+
}
|
|
229
|
+
async list(params) {
|
|
230
|
+
return this.client.getPaginated("/api/v1/transactions", params);
|
|
231
|
+
}
|
|
232
|
+
listAutoPaginate(params) {
|
|
233
|
+
return paginate((p) => this.list(p), params);
|
|
234
|
+
}
|
|
235
|
+
async get(txHash) {
|
|
236
|
+
return this.client.get(`/api/v1/transactions/${txHash}`);
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
|
|
240
|
+
// src/resources/payouts.ts
|
|
241
|
+
var Payouts = class {
|
|
242
|
+
constructor(client) {
|
|
243
|
+
this.client = client;
|
|
244
|
+
}
|
|
245
|
+
async create(params) {
|
|
246
|
+
return this.client.post("/api/v1/payouts", params);
|
|
247
|
+
}
|
|
248
|
+
async list(params) {
|
|
249
|
+
return this.client.getPaginated("/api/v1/payouts", params);
|
|
250
|
+
}
|
|
251
|
+
listAutoPaginate(params) {
|
|
252
|
+
return paginate((p) => this.list(p), params);
|
|
253
|
+
}
|
|
254
|
+
async get(id) {
|
|
255
|
+
return this.client.get(`/api/v1/payouts/${id}`);
|
|
256
|
+
}
|
|
257
|
+
async estimateFees(params) {
|
|
258
|
+
return this.client.get("/api/v1/payouts/fees", params);
|
|
259
|
+
}
|
|
260
|
+
};
|
|
261
|
+
|
|
262
|
+
// src/resources/balance.ts
|
|
263
|
+
var Balance = class {
|
|
264
|
+
constructor(client) {
|
|
265
|
+
this.client = client;
|
|
266
|
+
}
|
|
267
|
+
async get() {
|
|
268
|
+
return this.client.get("/api/v1/balance");
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
|
|
272
|
+
// src/resources/blockchain.ts
|
|
273
|
+
var Blockchain = class {
|
|
274
|
+
constructor(client) {
|
|
275
|
+
this.client = client;
|
|
276
|
+
}
|
|
277
|
+
async assets() {
|
|
278
|
+
return this.client.get("/api/v1/blockchain/assets");
|
|
279
|
+
}
|
|
280
|
+
async confirmations() {
|
|
281
|
+
return this.client.get("/api/v1/blockchain/confirmations");
|
|
282
|
+
}
|
|
283
|
+
async gasFees() {
|
|
284
|
+
return this.client.get("/api/v1/blockchain/gas-fees");
|
|
285
|
+
}
|
|
286
|
+
};
|
|
287
|
+
|
|
288
|
+
// src/resources/customers.ts
|
|
289
|
+
var Customers = class {
|
|
290
|
+
constructor(client) {
|
|
291
|
+
this.client = client;
|
|
292
|
+
}
|
|
293
|
+
async create(params) {
|
|
294
|
+
return this.client.post("/api/v1/customers", params);
|
|
295
|
+
}
|
|
296
|
+
async list(params) {
|
|
297
|
+
return this.client.getPaginated("/api/v1/customers", params);
|
|
298
|
+
}
|
|
299
|
+
listAutoPaginate(params) {
|
|
300
|
+
return paginate((p) => this.list(p), params);
|
|
301
|
+
}
|
|
302
|
+
async get(id) {
|
|
303
|
+
return this.client.get(`/api/v1/customers/${id}`);
|
|
304
|
+
}
|
|
305
|
+
};
|
|
306
|
+
|
|
307
|
+
// src/resources/refunds.ts
|
|
308
|
+
var Refunds = class {
|
|
309
|
+
constructor(client) {
|
|
310
|
+
this.client = client;
|
|
311
|
+
}
|
|
312
|
+
async createForSession(sessionReference, params) {
|
|
313
|
+
return this.client.post(`/api/v1/refunds/session/${sessionReference}`, params);
|
|
314
|
+
}
|
|
315
|
+
async createForInvoice(invoiceReference, params) {
|
|
316
|
+
return this.client.post(`/api/v1/refunds/invoice/${invoiceReference}`, params);
|
|
317
|
+
}
|
|
318
|
+
async list(params) {
|
|
319
|
+
return this.client.getPaginated("/api/v1/refunds", params);
|
|
320
|
+
}
|
|
321
|
+
listAutoPaginate(params) {
|
|
322
|
+
return paginate((p) => this.list(p), params);
|
|
323
|
+
}
|
|
324
|
+
async get(id) {
|
|
325
|
+
return this.client.get(`/api/v1/refunds/${id}`);
|
|
326
|
+
}
|
|
327
|
+
async estimate(reference) {
|
|
328
|
+
return this.client.get(`/api/v1/refunds/estimate/${reference}`);
|
|
329
|
+
}
|
|
330
|
+
};
|
|
331
|
+
|
|
332
|
+
// src/resources/settlements.ts
|
|
333
|
+
var Settlements = class {
|
|
334
|
+
constructor(client) {
|
|
335
|
+
this.client = client;
|
|
336
|
+
}
|
|
337
|
+
async list(params) {
|
|
338
|
+
return this.client.getPaginated("/api/v1/settlements", params);
|
|
339
|
+
}
|
|
340
|
+
listAutoPaginate(params) {
|
|
341
|
+
return paginate((p) => this.list(p), params);
|
|
342
|
+
}
|
|
343
|
+
async get(reference) {
|
|
344
|
+
return this.client.get(`/api/v1/settlements/${reference}`);
|
|
345
|
+
}
|
|
346
|
+
};
|
|
347
|
+
|
|
348
|
+
// src/resources/rates.ts
|
|
349
|
+
var Rates = class {
|
|
350
|
+
constructor(client) {
|
|
351
|
+
this.client = client;
|
|
352
|
+
}
|
|
353
|
+
async convert(params) {
|
|
354
|
+
return this.client.get("/api/v1/rates/convert", params);
|
|
355
|
+
}
|
|
356
|
+
async list(params) {
|
|
357
|
+
return this.client.get("/api/v1/rates", params);
|
|
358
|
+
}
|
|
359
|
+
};
|
|
360
|
+
|
|
361
|
+
// src/resources/payment-pages.ts
|
|
362
|
+
var PaymentPages = class {
|
|
363
|
+
constructor(client) {
|
|
364
|
+
this.client = client;
|
|
365
|
+
}
|
|
366
|
+
async create(params) {
|
|
367
|
+
return this.client.post("/api/v1/payments/pages", params);
|
|
368
|
+
}
|
|
369
|
+
async list(params) {
|
|
370
|
+
return this.client.getPaginated("/api/v1/payments/pages", params);
|
|
371
|
+
}
|
|
372
|
+
listAutoPaginate(params) {
|
|
373
|
+
return paginate((p) => this.list(p), params);
|
|
374
|
+
}
|
|
375
|
+
async update(id, params) {
|
|
376
|
+
return this.client.patch(`/api/v1/payments/pages/${id}`, params);
|
|
377
|
+
}
|
|
378
|
+
async delete(id) {
|
|
379
|
+
return this.client.delete(`/api/v1/payments/pages/${id}`);
|
|
380
|
+
}
|
|
381
|
+
async sessions(reference, params) {
|
|
382
|
+
return this.client.getPaginated(`/api/v1/payments/pages/${reference}/sessions`, params);
|
|
383
|
+
}
|
|
384
|
+
};
|
|
385
|
+
|
|
386
|
+
// src/resources/bank-accounts.ts
|
|
387
|
+
var BankAccounts = class {
|
|
388
|
+
constructor(client) {
|
|
389
|
+
this.client = client;
|
|
390
|
+
}
|
|
391
|
+
async create(params) {
|
|
392
|
+
return this.client.post("/api/v1/bank-accounts", params);
|
|
393
|
+
}
|
|
394
|
+
async list(params) {
|
|
395
|
+
return this.client.getPaginated("/api/v1/bank-accounts", params);
|
|
396
|
+
}
|
|
397
|
+
listAutoPaginate(params) {
|
|
398
|
+
return paginate((p) => this.list(p), params);
|
|
399
|
+
}
|
|
400
|
+
async get(id) {
|
|
401
|
+
return this.client.get(`/api/v1/bank-accounts/${id}`);
|
|
402
|
+
}
|
|
403
|
+
async update(id, params) {
|
|
404
|
+
return this.client.patch(`/api/v1/bank-accounts/${id}`, params);
|
|
405
|
+
}
|
|
406
|
+
async delete(id) {
|
|
407
|
+
return this.client.delete(`/api/v1/bank-accounts/${id}`);
|
|
408
|
+
}
|
|
409
|
+
async banks() {
|
|
410
|
+
return this.client.get("/api/v1/bank-accounts/banks");
|
|
411
|
+
}
|
|
412
|
+
};
|
|
413
|
+
|
|
414
|
+
// src/resources/crypto-addresses.ts
|
|
415
|
+
var CryptoAddresses = class {
|
|
416
|
+
constructor(client) {
|
|
417
|
+
this.client = client;
|
|
418
|
+
}
|
|
419
|
+
async create(params) {
|
|
420
|
+
return this.client.post("/api/v1/crypto-addresses", params);
|
|
421
|
+
}
|
|
422
|
+
async list(params) {
|
|
423
|
+
return this.client.getPaginated("/api/v1/crypto-addresses", params);
|
|
424
|
+
}
|
|
425
|
+
listAutoPaginate(params) {
|
|
426
|
+
return paginate((p) => this.list(p), params);
|
|
427
|
+
}
|
|
428
|
+
async get(id) {
|
|
429
|
+
return this.client.get(`/api/v1/crypto-addresses/${id}`);
|
|
430
|
+
}
|
|
431
|
+
async update(id, params) {
|
|
432
|
+
return this.client.patch(`/api/v1/crypto-addresses/${id}`, params);
|
|
433
|
+
}
|
|
434
|
+
async delete(id) {
|
|
435
|
+
return this.client.delete(`/api/v1/crypto-addresses/${id}`);
|
|
436
|
+
}
|
|
437
|
+
async validate(params) {
|
|
438
|
+
return this.client.get("/api/v1/crypto-addresses/validate", params);
|
|
439
|
+
}
|
|
440
|
+
};
|
|
441
|
+
|
|
442
|
+
// src/index.ts
|
|
443
|
+
var CoinCircuit = class {
|
|
444
|
+
payments;
|
|
445
|
+
x402;
|
|
446
|
+
invoices;
|
|
447
|
+
transactions;
|
|
448
|
+
payouts;
|
|
449
|
+
balance;
|
|
450
|
+
blockchain;
|
|
451
|
+
customers;
|
|
452
|
+
refunds;
|
|
453
|
+
settlements;
|
|
454
|
+
rates;
|
|
455
|
+
paymentPages;
|
|
456
|
+
bankAccounts;
|
|
457
|
+
cryptoAddresses;
|
|
458
|
+
constructor(config) {
|
|
459
|
+
const client = new HttpClient(config);
|
|
460
|
+
this.payments = new Payments(client);
|
|
461
|
+
this.x402 = new X402(client);
|
|
462
|
+
this.invoices = new Invoices(client);
|
|
463
|
+
this.transactions = new Transactions(client);
|
|
464
|
+
this.payouts = new Payouts(client);
|
|
465
|
+
this.balance = new Balance(client);
|
|
466
|
+
this.blockchain = new Blockchain(client);
|
|
467
|
+
this.customers = new Customers(client);
|
|
468
|
+
this.refunds = new Refunds(client);
|
|
469
|
+
this.settlements = new Settlements(client);
|
|
470
|
+
this.rates = new Rates(client);
|
|
471
|
+
this.paymentPages = new PaymentPages(client);
|
|
472
|
+
this.bankAccounts = new BankAccounts(client);
|
|
473
|
+
this.cryptoAddresses = new CryptoAddresses(client);
|
|
474
|
+
}
|
|
475
|
+
};
|
|
476
|
+
export {
|
|
477
|
+
CoinCircuit,
|
|
478
|
+
CoinCircuitApiError,
|
|
479
|
+
CoinCircuitAuthError,
|
|
480
|
+
CoinCircuitError,
|
|
481
|
+
paginate
|
|
482
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "coincircuit",
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"description": "Official CoinCircuit Node.js SDK",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"require": "./dist/index.cjs",
|
|
12
|
+
"types": "./dist/index.d.ts"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": ["dist"],
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsup src/index.ts --format esm,cjs --dts --clean",
|
|
18
|
+
"generate-types": "npx openapi-typescript ../openapi.json -o src/types/generated.ts"
|
|
19
|
+
},
|
|
20
|
+
"engines": {
|
|
21
|
+
"node": ">=18.0.0"
|
|
22
|
+
},
|
|
23
|
+
"keywords": ["coincircuit", "crypto", "payments", "stablecoin", "x402", "sdk"],
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "https://github.com/coincircuit/coincircuit-node"
|
|
28
|
+
},
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"tsup": "^8.0.0",
|
|
31
|
+
"typescript": "^5.4.0",
|
|
32
|
+
"openapi-typescript": "^7.0.0"
|
|
33
|
+
}
|
|
34
|
+
}
|