stablevoy 1.6.0 → 1.8.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 (51) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +42 -0
  3. package/dist/Stablevoy.d.ts +3 -1
  4. package/dist/Stablevoy.d.ts.map +1 -1
  5. package/dist/Stablevoy.js +5 -2
  6. package/dist/Stablevoy.js.map +1 -1
  7. package/dist/errors/ApiError.d.ts +4 -0
  8. package/dist/errors/ApiError.d.ts.map +1 -1
  9. package/dist/errors/ApiError.js +4 -0
  10. package/dist/errors/ApiError.js.map +1 -1
  11. package/dist/index.d.ts +5 -1
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +3 -0
  14. package/dist/index.js.map +1 -1
  15. package/dist/keys/Crc32.d.ts +3 -0
  16. package/dist/keys/Crc32.d.ts.map +1 -0
  17. package/dist/keys/Crc32.js +18 -0
  18. package/dist/keys/Crc32.js.map +1 -0
  19. package/dist/keys/KeyFormat.d.ts +10 -0
  20. package/dist/keys/KeyFormat.d.ts.map +1 -0
  21. package/dist/keys/KeyFormat.js +37 -0
  22. package/dist/keys/KeyFormat.js.map +1 -0
  23. package/dist/model/ConnectedApp.d.ts.map +1 -1
  24. package/dist/model/ConnectedApp.js +3 -2
  25. package/dist/model/ConnectedApp.js.map +1 -1
  26. package/dist/model/ConnectedStore.d.ts.map +1 -1
  27. package/dist/model/ConnectedStore.js +5 -4
  28. package/dist/model/ConnectedStore.js.map +1 -1
  29. package/dist/model/InvoiceSummary.d.ts +42 -0
  30. package/dist/model/InvoiceSummary.d.ts.map +1 -0
  31. package/dist/model/InvoiceSummary.js +22 -0
  32. package/dist/model/InvoiceSummary.js.map +1 -0
  33. package/dist/model/Platform.d.ts +14 -0
  34. package/dist/model/Platform.d.ts.map +1 -1
  35. package/dist/model/Platform.js +6 -0
  36. package/dist/model/Platform.js.map +1 -1
  37. package/dist/model/UnmatchedTransfer.d.ts +28 -0
  38. package/dist/model/UnmatchedTransfer.d.ts.map +1 -0
  39. package/dist/model/UnmatchedTransfer.js +16 -0
  40. package/dist/model/UnmatchedTransfer.js.map +1 -0
  41. package/dist/resources/Invoices.d.ts +7 -0
  42. package/dist/resources/Invoices.d.ts.map +1 -1
  43. package/dist/resources/Invoices.js +29 -0
  44. package/dist/resources/Invoices.js.map +1 -1
  45. package/dist/resources/UnmatchedTransfers.d.ts +10 -0
  46. package/dist/resources/UnmatchedTransfers.d.ts.map +1 -0
  47. package/dist/resources/UnmatchedTransfers.js +18 -0
  48. package/dist/resources/UnmatchedTransfers.js.map +1 -0
  49. package/dist/version.d.ts +1 -1
  50. package/dist/version.js +1 -1
  51. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.8.0
4
+
5
+ - Stablevoy is moving to its own key formats: API keys `svk_live_...` / `svk_test_...` and webhook signing secrets `svwhsec_...`, each ending in a checksum. The SDK accepts them and the older `sk_live_` / `sk_test_` / `whsec_` in connect answers; older keys keep working.
6
+ - `checkApiKey(value)` and `checkWebhookSecret(value)` tell a pasted key apart: `ok`, `mistyped` (a new-format key whose checksum does not match, so a character is wrong or missing) or `not_a_key`.
7
+
8
+ ## 1.7.0
9
+
10
+ - `invoices.summary({ period })` or `invoices.summary({ createdFrom, createdTo })`: totals of the invoices created in a range of UTC days, with the count per status, the invoiced amount and the money received, also per network and token. Periods are in `SummaryPeriod`; one request covers at most 92 days, and a longer range is refused with `ApiError.INVALID_INVOICE_FILTER`.
11
+ - `unmatchedTransfers.list()`: transfers to the payout wallet that matched no invoice, on the networks of the key's store, each with `sharedWithStores`. Read only; they are attached to an invoice in the dashboard.
12
+ - `Limits` carries `apiKeysPerStore` (`plugin`, `mcp`, `api`), `openInvoicesPerStore` and `invoicesPerMinutePerStore`. New `ApiError.OPEN_INVOICE_LIMIT_REACHED`. These need the API of 7 November 2026; an older answer without them is refused as an unexpected response.
13
+ - `Stablevoy` takes `UnmatchedTransfers` as a fourth constructor argument; `Stablevoy.create()` and `Stablevoy.fromTransport()` are unchanged.
14
+
3
15
  ## 1.6.0
4
16
 
5
17
  - `invoices.cancel(id)` cancels an invoice that is still waiting for its first payment: the payment page tells the buyer not to pay and the webhook `invoice.cancelled` is sent. Cancelling it again returns it unchanged. Once a payment has been seen the API refuses with `ApiError.INVOICE_NOT_CANCELLABLE`; money that still arrives after a cancel makes the invoice `paid_late`. New status `InvoiceStatus.CANCELLED` and webhook type `invoice.cancelled`.
package/README.md CHANGED
@@ -73,6 +73,36 @@ for await (const invoice of stablevoy.invoices.all({ source: InvoiceSourceFilter
73
73
  }
74
74
  ```
75
75
 
76
+ A store can have up to 1,000 invoices awaiting payment at once; over that `invoices.create()` fails with `ApiError.OPEN_INVOICE_LIMIT_REACHED`, so cancel the ones you no longer need. `stablevoy.platform.limits()` gives this and the other per-store limits.
77
+
78
+ ## Totals for a period
79
+
80
+ Count the invoices of a period and add up what they brought, instead of walking the list. Pass a ready-made period or your own UTC days; one request covers at most 92 days, so ask for a year in four parts.
81
+
82
+ ```ts
83
+ import { SummaryPeriod } from 'stablevoy';
84
+
85
+ const week = await stablevoy.invoices.summary({ period: SummaryPeriod.LAST_7_DAYS });
86
+ console.log(week.invoiceCount, week.invoicesByStatus.paid, week.invoicedUsdCents, week.receivedUsdMicros);
87
+ for (const total of week.byNetwork) console.log(total.network, total.token, total.receivedUsdMicros);
88
+
89
+ const october = await stablevoy.invoices.summary({ createdFrom: '2026-10-01', createdTo: '2026-10-31' });
90
+ ```
91
+
92
+ `invoicedUsdCents` leaves out cancelled and expired invoices. `receivedUsdMicros` (millionths of a dollar, as a string) counts the confirmed payments that passed sanctions screening.
93
+
94
+ ## Unmatched transfers
95
+
96
+ On Tron the buyer pays your own wallet and the last digits of the amount pick the invoice. A transfer whose amount matched no invoice, usually from an exchange that took its fee out of it, is listed here. Attach it to an invoice in the Stablevoy dashboard; an API key can only read the list.
97
+
98
+ ```ts
99
+ for (const transfer of await stablevoy.unmatchedTransfers.list()) {
100
+ console.log(transfer.amountUsdMicros, transfer.fromAddress, transfer.explorerTxUrl + transfer.txHash.replace(/^0x/, ''));
101
+ }
102
+ ```
103
+
104
+ The payout wallet belongs to your account, not to one store, so each transfer has `sharedWithStores`: 1 means it is certainly this store's, more means it may belong to any of that many of your stores.
105
+
76
106
  ## Check the store before going live
77
107
 
78
108
  Invoices need a payout wallet for at least one network the store accepts; without one every invoice is refused with `payout_address_not_set`. An EVM payout wallet that is a smart contract wallet or an EIP-7702 delegation must be confirmed in the dashboard, and confirmed again when it changes; until then new invoices leave out the EVM networks, and a store with nothing else is refused with `payout_address_unacknowledged`. Read the store of the key to find out in advance, and tell the merchant about networks buyers will not be offered:
@@ -151,6 +181,18 @@ export async function POST(request: Request) {
151
181
  }
152
182
  ```
153
183
 
184
+ ## Check a pasted key
185
+
186
+ API keys are `svk_live_...` or `svk_test_...` and webhook signing secrets `svwhsec_...`; both end in a checksum. Keys made before this format (`sk_live_`, `sk_test_`, `whsec_`) keep working.
187
+
188
+ ```ts
189
+ import { checkApiKey } from 'stablevoy';
190
+
191
+ if (checkApiKey(input) === 'mistyped') console.log('A character is wrong or missing: copy the key again from the dashboard.');
192
+ ```
193
+
194
+ `checkApiKey` and `checkWebhookSecret` answer `ok`, `mistyped` or `not_a_key`, without any request.
195
+
154
196
  ## Errors and retries
155
197
 
156
198
  Every error extends `StablevoyError`. API errors are `ApiError` with the HTTP `status`, a stable `code`, a readable `detail` and a link to the [error catalog](https://stablevoy.com/docs/api/errors/); the ones you may want to handle on their own are `AuthenticationError`, `ValidationError` (with `issues`), `NotFoundError`, `RateLimitedError` and `MaintenanceError`. `TransportError` means no answer at all.
@@ -3,6 +3,7 @@ import type { Transport } from './http/Transport.js';
3
3
  import { Invoices } from './resources/Invoices.js';
4
4
  import { Platform } from './resources/Platform.js';
5
5
  import { Stores } from './resources/Stores.js';
6
+ import { UnmatchedTransfers } from './resources/UnmatchedTransfers.js';
6
7
  export interface StablevoyOptions extends ConnectionOptions {
7
8
  /** The store's API key (sk_live_... or sk_test_...). */
8
9
  readonly apiKey: string;
@@ -12,7 +13,8 @@ export declare class Stablevoy {
12
13
  readonly invoices: Invoices;
13
14
  readonly stores: Stores;
14
15
  readonly platform: Platform;
15
- constructor(invoices: Invoices, stores: Stores, platform: Platform);
16
+ readonly unmatchedTransfers: UnmatchedTransfers;
17
+ constructor(invoices: Invoices, stores: Stores, platform: Platform, unmatchedTransfers: UnmatchedTransfers);
16
18
  static create(options: StablevoyOptions): Stablevoy;
17
19
  static fromTransport(transport: Transport): Stablevoy;
18
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Stablevoy.d.ts","sourceRoot":"","sources":["../src/Stablevoy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,wDAAwD;IACxD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,0GAA0G;AAC1G,qBAAa,SAAS;IAElB,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,QAAQ,EAAE,QAAQ;gBAFlB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ;IAG7B,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS;IAInD,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS;CAGtD"}
1
+ {"version":3,"file":"Stablevoy.d.ts","sourceRoot":"","sources":["../src/Stablevoy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,wDAAwD;IACxD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,0GAA0G;AAC1G,qBAAa,SAAS;IAElB,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB;gBAHtC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,kBAAkB,EAAE,kBAAkB;IAGjD,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS;IAInD,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS;CAGtD"}
package/dist/Stablevoy.js CHANGED
@@ -2,21 +2,24 @@ import { createFetchTransport } from './http/createFetchTransport.js';
2
2
  import { Invoices } from './resources/Invoices.js';
3
3
  import { Platform } from './resources/Platform.js';
4
4
  import { Stores } from './resources/Stores.js';
5
+ import { UnmatchedTransfers } from './resources/UnmatchedTransfers.js';
5
6
  /** The Stablevoy API: `const stablevoy = Stablevoy.create({ apiKey: process.env.STABLEVOY_API_KEY })`. */
6
7
  export class Stablevoy {
7
8
  invoices;
8
9
  stores;
9
10
  platform;
10
- constructor(invoices, stores, platform) {
11
+ unmatchedTransfers;
12
+ constructor(invoices, stores, platform, unmatchedTransfers) {
11
13
  this.invoices = invoices;
12
14
  this.stores = stores;
13
15
  this.platform = platform;
16
+ this.unmatchedTransfers = unmatchedTransfers;
14
17
  }
15
18
  static create(options) {
16
19
  return Stablevoy.fromTransport(createFetchTransport(options.apiKey, options));
17
20
  }
18
21
  static fromTransport(transport) {
19
- return new Stablevoy(new Invoices(transport), new Stores(transport), new Platform(transport));
22
+ return new Stablevoy(new Invoices(transport), new Stores(transport), new Platform(transport), new UnmatchedTransfers(transport));
20
23
  }
21
24
  }
22
25
  //# sourceMappingURL=Stablevoy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Stablevoy.js","sourceRoot":"","sources":["../src/Stablevoy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAO/C,0GAA0G;AAC1G,MAAM,OAAO,SAAS;IAET;IACA;IACA;IAHX,YACW,QAAkB,EAClB,MAAc,EACd,QAAkB;QAFlB,aAAQ,GAAR,QAAQ,CAAU;QAClB,WAAM,GAAN,MAAM,CAAQ;QACd,aAAQ,GAAR,QAAQ,CAAU;IAC1B,CAAC;IAEJ,MAAM,CAAC,MAAM,CAAC,OAAyB;QACrC,OAAO,SAAS,CAAC,aAAa,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,SAAoB;QACvC,OAAO,IAAI,SAAS,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAChG,CAAC;CACF"}
1
+ {"version":3,"file":"Stablevoy.js","sourceRoot":"","sources":["../src/Stablevoy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAOvE,0GAA0G;AAC1G,MAAM,OAAO,SAAS;IAET;IACA;IACA;IACA;IAJX,YACW,QAAkB,EAClB,MAAc,EACd,QAAkB,EAClB,kBAAsC;QAHtC,aAAQ,GAAR,QAAQ,CAAU;QAClB,WAAM,GAAN,MAAM,CAAQ;QACd,aAAQ,GAAR,QAAQ,CAAU;QAClB,uBAAkB,GAAlB,kBAAkB,CAAoB;IAC9C,CAAC;IAEJ,MAAM,CAAC,MAAM,CAAC,OAAyB;QACrC,OAAO,SAAS,CAAC,aAAa,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,SAAoB;QACvC,OAAO,IAAI,SAAS,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;IACnI,CAAC;CACF"}
@@ -28,6 +28,10 @@ export declare class ApiError extends StablevoyError {
28
28
  static readonly INVOICE_NOT_CANCELLABLE = "invoice_not_cancellable";
29
29
  /** expiresInMinutes is outside the bounds platform.limits() gives (15 to 10080 minutes). */
30
30
  static readonly INVALID_INVOICE_LIFETIME = "invalid_invoice_lifetime";
31
+ /** The store already has as many invoices awaiting payment as platform.limits() allows: cancel unused ones or let them expire. */
32
+ static readonly OPEN_INVOICE_LIMIT_REACHED = "open_invoice_limit_reached";
33
+ /** A list or summary filter the API refuses, such as a summary range longer than 92 days or one that ends before it starts. */
34
+ static readonly INVALID_INVOICE_FILTER = "invalid_invoice_filter";
31
35
  readonly status: number;
32
36
  readonly code: string;
33
37
  readonly detail: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ApiError.d.ts","sourceRoot":"","sources":["../../src/errors/ApiError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IACzC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC;AAED;;;GAGG;AACH,qBAAa,QAAS,SAAQ,cAAc;IAC1C,yGAAyG;IACzG,MAAM,CAAC,QAAQ,CAAC,sBAAsB,4BAA4B;IAClE;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,6BAA6B,mCAAmC;IAChF,2HAA2H;IAC3H,MAAM,CAAC,QAAQ,CAAC,uBAAuB,6BAA6B;IACpE,4FAA4F;IAC5F,MAAM,CAAC,QAAQ,CAAC,wBAAwB,8BAA8B;IAEtE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,2CAA2C;IAC3C,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IACzC,8DAA8D;IAC9D,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,sHAAsH;IACtH,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;gBAE1B,OAAO,EAAE,eAAe;CAUrC"}
1
+ {"version":3,"file":"ApiError.d.ts","sourceRoot":"","sources":["../../src/errors/ApiError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IACzC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC;AAED;;;GAGG;AACH,qBAAa,QAAS,SAAQ,cAAc;IAC1C,yGAAyG;IACzG,MAAM,CAAC,QAAQ,CAAC,sBAAsB,4BAA4B;IAClE;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,6BAA6B,mCAAmC;IAChF,2HAA2H;IAC3H,MAAM,CAAC,QAAQ,CAAC,uBAAuB,6BAA6B;IACpE,4FAA4F;IAC5F,MAAM,CAAC,QAAQ,CAAC,wBAAwB,8BAA8B;IACtE,kIAAkI;IAClI,MAAM,CAAC,QAAQ,CAAC,0BAA0B,gCAAgC;IAC1E,+HAA+H;IAC/H,MAAM,CAAC,QAAQ,CAAC,sBAAsB,4BAA4B;IAElE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,2CAA2C;IAC3C,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IACzC,8DAA8D;IAC9D,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,sHAAsH;IACtH,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;gBAE1B,OAAO,EAAE,eAAe;CAUrC"}
@@ -15,6 +15,10 @@ export class ApiError extends StablevoyError {
15
15
  static INVOICE_NOT_CANCELLABLE = 'invoice_not_cancellable';
16
16
  /** expiresInMinutes is outside the bounds platform.limits() gives (15 to 10080 minutes). */
17
17
  static INVALID_INVOICE_LIFETIME = 'invalid_invoice_lifetime';
18
+ /** The store already has as many invoices awaiting payment as platform.limits() allows: cancel unused ones or let them expire. */
19
+ static OPEN_INVOICE_LIMIT_REACHED = 'open_invoice_limit_reached';
20
+ /** A list or summary filter the API refuses, such as a summary range longer than 92 days or one that ends before it starts. */
21
+ static INVALID_INVOICE_FILTER = 'invalid_invoice_filter';
18
22
  status;
19
23
  code;
20
24
  detail;
@@ -1 +1 @@
1
- {"version":3,"file":"ApiError.js","sourceRoot":"","sources":["../../src/errors/ApiError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAiBrD;;;GAGG;AACH,MAAM,OAAO,QAAS,SAAQ,cAAc;IAC1C,yGAAyG;IACzG,MAAM,CAAU,sBAAsB,GAAG,wBAAwB,CAAC;IAClE;;;OAGG;IACH,MAAM,CAAU,6BAA6B,GAAG,+BAA+B,CAAC;IAChF,2HAA2H;IAC3H,MAAM,CAAU,uBAAuB,GAAG,yBAAyB,CAAC;IACpE,4FAA4F;IAC5F,MAAM,CAAU,wBAAwB,GAAG,0BAA0B,CAAC;IAE7D,MAAM,CAAS;IACf,IAAI,CAAS;IACb,MAAM,CAAS;IACf,IAAI,CAAgB;IAC7B,2CAA2C;IAClC,MAAM,CAA0B;IACzC,8DAA8D;IACrD,iBAAiB,CAAgB;IAC1C,sHAAsH;IAC7G,aAAa,CAAgB;IAEtC,YAAY,OAAwB;QAClC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,UAAU,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;QACnD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAC7C,CAAC"}
1
+ {"version":3,"file":"ApiError.js","sourceRoot":"","sources":["../../src/errors/ApiError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAiBrD;;;GAGG;AACH,MAAM,OAAO,QAAS,SAAQ,cAAc;IAC1C,yGAAyG;IACzG,MAAM,CAAU,sBAAsB,GAAG,wBAAwB,CAAC;IAClE;;;OAGG;IACH,MAAM,CAAU,6BAA6B,GAAG,+BAA+B,CAAC;IAChF,2HAA2H;IAC3H,MAAM,CAAU,uBAAuB,GAAG,yBAAyB,CAAC;IACpE,4FAA4F;IAC5F,MAAM,CAAU,wBAAwB,GAAG,0BAA0B,CAAC;IACtE,kIAAkI;IAClI,MAAM,CAAU,0BAA0B,GAAG,4BAA4B,CAAC;IAC1E,+HAA+H;IAC/H,MAAM,CAAU,sBAAsB,GAAG,wBAAwB,CAAC;IAEzD,MAAM,CAAS;IACf,IAAI,CAAS;IACb,MAAM,CAAS;IACf,IAAI,CAAgB;IAC7B,2CAA2C;IAClC,MAAM,CAA0B;IACzC,8DAA8D;IACrD,iBAAiB,CAAgB;IAC1C,sHAAsH;IAC7G,aAAa,CAAgB;IAEtC,YAAY,OAAwB;QAClC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,UAAU,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;QACnD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAC7C,CAAC"}
package/dist/index.d.ts CHANGED
@@ -4,16 +4,20 @@ export type { ConnectionOptions } from './ConnectionOptions.js';
4
4
  export type { ConnectedStore } from './model/ConnectedStore.js';
5
5
  export type { ConnectedApp, ConnectedAppStore } from './model/ConnectedApp.js';
6
6
  export { VERSION } from './version.js';
7
+ export { checkApiKey, checkWebhookSecret, type KeyCheck } from './keys/KeyFormat.js';
7
8
  export { RetryPolicy } from './http/RetryPolicy.js';
8
9
  export type { Sleep } from './http/Sleep.js';
9
10
  export type { Query, Transport } from './http/Transport.js';
10
11
  export { Invoices, type InvoiceListFilter, type ListInvoicesOptions } from './resources/Invoices.js';
11
12
  export { Stores } from './resources/Stores.js';
12
13
  export { Platform } from './resources/Platform.js';
14
+ export { UnmatchedTransfers } from './resources/UnmatchedTransfers.js';
15
+ export type { UnmatchedTransfer } from './model/UnmatchedTransfer.js';
16
+ export { SummaryPeriod, type InvoiceSummary, type InvoiceSummaryInput, type NetworkTotal, type SummaryPeriodName } from './model/InvoiceSummary.js';
13
17
  export { InvoiceStatus, isPaidStatus } from './model/InvoiceStatus.js';
14
18
  export { InvoiceSourceFilter, InvoiceSourceKind, type InvoiceSource } from './model/InvoiceSource.js';
15
19
  export type { CreateInvoiceInput, CreatedInvoice, DepositAddress, Invoice, InvoicePage, Payment } from './model/Invoice.js';
16
- export type { Limits, Network, PayoutAddresses, Pricing, Store, Token } from './model/Platform.js';
20
+ export type { ApiKeysPerStore, Limits, Network, PayoutAddresses, Pricing, Store, Token } from './model/Platform.js';
17
21
  export { canAcceptPayments, evmPayoutNeedsReview, EVM_PAYOUT_STATUS } from './model/Platform.js';
18
22
  export { WebhookVerifier, type WebhookVerifierOptions } from './webhook/WebhookVerifier.js';
19
23
  export type { WebhookEvent } from './webhook/WebhookEvent.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACpG,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,KAAK,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACrG,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACtG,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC5H,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC5F,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACpG,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,KAAK,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACrG,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,YAAY,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,KAAK,mBAAmB,EAAE,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpJ,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACtG,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC5H,YAAY,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACpH,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC5F,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC"}
package/dist/index.js CHANGED
@@ -1,10 +1,13 @@
1
1
  export { Stablevoy } from './Stablevoy.js';
2
2
  export { StablevoyConnect } from './StablevoyConnect.js';
3
3
  export { VERSION } from './version.js';
4
+ export { checkApiKey, checkWebhookSecret } from './keys/KeyFormat.js';
4
5
  export { RetryPolicy } from './http/RetryPolicy.js';
5
6
  export { Invoices } from './resources/Invoices.js';
6
7
  export { Stores } from './resources/Stores.js';
7
8
  export { Platform } from './resources/Platform.js';
9
+ export { UnmatchedTransfers } from './resources/UnmatchedTransfers.js';
10
+ export { SummaryPeriod } from './model/InvoiceSummary.js';
8
11
  export { InvoiceStatus, isPaidStatus } from './model/InvoiceStatus.js';
9
12
  export { InvoiceSourceFilter, InvoiceSourceKind } from './model/InvoiceSource.js';
10
13
  export { canAcceptPayments, evmPayoutNeedsReview, EVM_PAYOUT_STATUS } from './model/Platform.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAyB,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAA6C,MAAM,uBAAuB,CAAC;AAIpG,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,EAAE,QAAQ,EAAoD,MAAM,yBAAyB,CAAC;AACrG,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAsB,MAAM,0BAA0B,CAAC;AAGtG,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAAE,eAAe,EAA+B,MAAM,8BAA8B,CAAC;AAG5F,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAA2C,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAyB,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAA6C,MAAM,uBAAuB,CAAC;AAIpG,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAiB,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,EAAE,QAAQ,EAAoD,MAAM,yBAAyB,CAAC;AACrG,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,EAAE,aAAa,EAA4F,MAAM,2BAA2B,CAAC;AACpJ,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAsB,MAAM,0BAA0B,CAAC;AAGtG,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAAE,eAAe,EAA+B,MAAM,8BAA8B,CAAC;AAG5F,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAA2C,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** CRC-32 (IEEE, the zlib one) of an ASCII string. */
2
+ export declare function crc32(text: string): number;
3
+ //# sourceMappingURL=Crc32.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Crc32.d.ts","sourceRoot":"","sources":["../../src/keys/Crc32.ts"],"names":[],"mappings":"AAUA,sDAAsD;AACtD,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI1C"}
@@ -0,0 +1,18 @@
1
+ const TABLE = (() => {
2
+ const table = new Uint32Array(256);
3
+ for (let n = 0; n < 256; n++) {
4
+ let c = n;
5
+ for (let k = 0; k < 8; k++)
6
+ c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1;
7
+ table[n] = c >>> 0;
8
+ }
9
+ return table;
10
+ })();
11
+ /** CRC-32 (IEEE, the zlib one) of an ASCII string. */
12
+ export function crc32(text) {
13
+ let crc = 0xffffffff;
14
+ for (let i = 0; i < text.length; i++)
15
+ crc = TABLE[(crc ^ text.charCodeAt(i)) & 0xff] ^ (crc >>> 8);
16
+ return (crc ^ 0xffffffff) >>> 0;
17
+ }
18
+ //# sourceMappingURL=Crc32.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Crc32.js","sourceRoot":"","sources":["../../src/keys/Crc32.ts"],"names":[],"mappings":"AAAA,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE;IAClB,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACzE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC,EAAE,CAAC;AAEL,sDAAsD;AACtD,MAAM,UAAU,KAAK,CAAC,IAAY;IAChC,IAAI,GAAG,GAAG,UAAU,CAAC;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,GAAG,GAAI,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAY,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAC/G,OAAO,CAAC,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC"}
@@ -0,0 +1,10 @@
1
+ /** How a pasted or received key or secret looks: right, wrong in a way that means a typo or a cut copy, or not one at all. */
2
+ export type KeyCheck = 'ok' | 'mistyped' | 'not_a_key';
3
+ /**
4
+ * Stablevoy store API keys are svk_live_ / svk_test_ followed by 30 random and 6 checksum characters; keys made before the
5
+ * new format are sk_live_ / sk_test_ and keep working. A checksummed key with a broken checksum was mistyped or cut.
6
+ */
7
+ export declare function checkApiKey(value: string): KeyCheck;
8
+ /** Webhook signing secrets: svwhsec_ with a checksum, or the older whsec_. */
9
+ export declare function checkWebhookSecret(value: string): KeyCheck;
10
+ //# sourceMappingURL=KeyFormat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeyFormat.d.ts","sourceRoot":"","sources":["../../src/keys/KeyFormat.ts"],"names":[],"mappings":"AAUA,8HAA8H;AAC9H,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,UAAU,GAAG,WAAW,CAAC;AAEvD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAInD;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAG1D"}
@@ -0,0 +1,37 @@
1
+ import { crc32 } from './Crc32.js';
2
+ const BASE62 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
3
+ const CHECKSUMMED_BODY = /^[0-9A-Za-z]{36}$/;
4
+ const API_KEY_PREFIXES = ['svk_live_', 'svk_test_'];
5
+ const WEBHOOK_SECRET_PREFIX = 'svwhsec_';
6
+ /** The older formats are recognised by prefix only, as before the checksummed ones existed. */
7
+ const OLDER_API_KEY = /^sk_(live|test)_/;
8
+ const OLDER_WEBHOOK_SECRET = /^whsec_/;
9
+ /**
10
+ * Stablevoy store API keys are svk_live_ / svk_test_ followed by 30 random and 6 checksum characters; keys made before the
11
+ * new format are sk_live_ / sk_test_ and keep working. A checksummed key with a broken checksum was mistyped or cut.
12
+ */
13
+ export function checkApiKey(value) {
14
+ const prefix = API_KEY_PREFIXES.find((p) => value.startsWith(p));
15
+ if (prefix !== undefined)
16
+ return hasValidChecksum(prefix, value) ? 'ok' : 'mistyped';
17
+ return OLDER_API_KEY.test(value) ? 'ok' : 'not_a_key';
18
+ }
19
+ /** Webhook signing secrets: svwhsec_ with a checksum, or the older whsec_. */
20
+ export function checkWebhookSecret(value) {
21
+ if (value.startsWith(WEBHOOK_SECRET_PREFIX))
22
+ return hasValidChecksum(WEBHOOK_SECRET_PREFIX, value) ? 'ok' : 'mistyped';
23
+ return OLDER_WEBHOOK_SECRET.test(value) ? 'ok' : 'not_a_key';
24
+ }
25
+ function hasValidChecksum(prefix, value) {
26
+ const body = value.slice(prefix.length);
27
+ if (!CHECKSUMMED_BODY.test(body))
28
+ return false;
29
+ let n = crc32(prefix + body.slice(0, 30));
30
+ let checksum = '';
31
+ for (let i = 0; i < 6; i++) {
32
+ checksum = BASE62.charAt(n % 62) + checksum;
33
+ n = Math.floor(n / 62);
34
+ }
35
+ return body.slice(30) === checksum;
36
+ }
37
+ //# sourceMappingURL=KeyFormat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeyFormat.js","sourceRoot":"","sources":["../../src/keys/KeyFormat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,MAAM,GAAG,gEAAgE,CAAC;AAChF,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAC7C,MAAM,gBAAgB,GAAG,CAAC,WAAW,EAAE,WAAW,CAAU,CAAC;AAC7D,MAAM,qBAAqB,GAAG,UAAU,CAAC;AACzC,+FAA+F;AAC/F,MAAM,aAAa,GAAG,kBAAkB,CAAC;AACzC,MAAM,oBAAoB,GAAG,SAAS,CAAC;AAKvC;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;IACrF,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;AACxD,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,IAAI,KAAK,CAAC,UAAU,CAAC,qBAAqB,CAAC;QAAE,OAAO,gBAAgB,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;IACvH,OAAO,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;AAC/D,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAc,EAAE,KAAa;IACrD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1C,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC;QAC5C,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC;AACrC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectedApp.d.ts","sourceRoot":"","sources":["../../src/model/ConnectedApp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,0FAA0F;AAC1F,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,+GAA+G;AAC/G,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC/C;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,YAAY,CAQzD"}
1
+ {"version":3,"file":"ConnectedApp.d.ts","sourceRoot":"","sources":["../../src/model/ConnectedApp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,0FAA0F;AAC1F,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,+GAA+G;AAC/G,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC/C;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,YAAY,CAQzD"}
@@ -1,9 +1,10 @@
1
1
  import { UnexpectedResponseError } from '../errors/UnexpectedResponseError.js';
2
+ import { checkApiKey } from '../keys/KeyFormat.js';
2
3
  export function parseConnectedApp(f) {
3
4
  const stores = f.objects('stores', (s) => {
4
5
  const apiKey = s.string('apiKey');
5
- if (!/^sk_(live|test)_/.test(apiKey))
6
- throw new UnexpectedResponseError(`${s.pathOf('apiKey')} is not an API key (sk_live_ or sk_test_)`);
6
+ if (checkApiKey(apiKey) !== 'ok')
7
+ throw new UnexpectedResponseError(`${s.pathOf('apiKey')} is not an API key (svk_live_, svk_test_, or the older sk_live_, sk_test_)`);
7
8
  return { storeId: s.string('id'), storeName: s.string('name'), apiKey };
8
9
  });
9
10
  if (stores.length === 0)
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectedApp.js","sourceRoot":"","sources":["../../src/model/ConnectedApp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAe/E,MAAM,UAAU,iBAAiB,CAAC,CAAS;IACzC,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;QACvC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,uBAAuB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,2CAA2C,CAAC,CAAC;QAC1I,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1E,CAAC,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,uBAAuB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC7F,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"ConnectedApp.js","sourceRoot":"","sources":["../../src/model/ConnectedApp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAcnD,MAAM,UAAU,iBAAiB,CAAC,CAAS;IACzC,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;QACvC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI;YAAE,MAAM,IAAI,uBAAuB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,4EAA4E,CAAC,CAAC;QACvK,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1E,CAAC,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,uBAAuB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC7F,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectedStore.d.ts","sourceRoot":"","sources":["../../src/model/ConnectedStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,yHAAyH;AACzH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,cAAc,CAO7D"}
1
+ {"version":3,"file":"ConnectedStore.d.ts","sourceRoot":"","sources":["../../src/model/ConnectedStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,yHAAyH;AACzH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,cAAc,CAO7D"}
@@ -1,11 +1,12 @@
1
1
  import { UnexpectedResponseError } from '../errors/UnexpectedResponseError.js';
2
+ import { checkApiKey, checkWebhookSecret } from '../keys/KeyFormat.js';
2
3
  export function parseConnectedStore(f) {
3
4
  const apiKey = f.string('apiKey');
4
- if (!/^sk_(live|test)_/.test(apiKey))
5
- throw new UnexpectedResponseError(`${f.pathOf('apiKey')} is not an API key (sk_live_ or sk_test_)`);
5
+ if (checkApiKey(apiKey) !== 'ok')
6
+ throw new UnexpectedResponseError(`${f.pathOf('apiKey')} is not an API key (svk_live_, svk_test_, or the older sk_live_, sk_test_)`);
6
7
  const webhookSecret = f.string('webhookSecret');
7
- if (!webhookSecret.startsWith('whsec_'))
8
- throw new UnexpectedResponseError(`${f.pathOf('webhookSecret')} is not a webhook secret (whsec_)`);
8
+ if (checkWebhookSecret(webhookSecret) !== 'ok')
9
+ throw new UnexpectedResponseError(`${f.pathOf('webhookSecret')} is not a webhook secret (svwhsec_, or the older whsec_)`);
9
10
  const store = f.object('store');
10
11
  return { apiKey, webhookSecret, storeId: store.string('id'), storeName: store.string('name') };
11
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectedStore.js","sourceRoot":"","sources":["../../src/model/ConnectedStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAW/E,MAAM,UAAU,mBAAmB,CAAC,CAAS;IAC3C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,uBAAuB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,2CAA2C,CAAC,CAAC;IAC1I,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAChD,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,MAAM,IAAI,uBAAuB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,mCAAmC,CAAC,CAAC;IAC5I,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;AACjG,CAAC"}
1
+ {"version":3,"file":"ConnectedStore.js","sourceRoot":"","sources":["../../src/model/ConnectedStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAUvE,MAAM,UAAU,mBAAmB,CAAC,CAAS;IAC3C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI;QAAE,MAAM,IAAI,uBAAuB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,4EAA4E,CAAC,CAAC;IACvK,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAChD,IAAI,kBAAkB,CAAC,aAAa,CAAC,KAAK,IAAI;QAAE,MAAM,IAAI,uBAAuB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,0DAA0D,CAAC,CAAC;IAC1K,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;AACjG,CAAC"}
@@ -0,0 +1,42 @@
1
+ import type { Fields } from './Fields.js';
2
+ /** The ready-made ranges of invoices.summary(): UTC days ending today; last_3_months is the last 92 days. */
3
+ export declare const SummaryPeriod: {
4
+ readonly LAST_7_DAYS: "last_7_days";
5
+ readonly LAST_30_DAYS: "last_30_days";
6
+ readonly THIS_MONTH: "this_month";
7
+ readonly LAST_MONTH: "last_month";
8
+ readonly LAST_3_MONTHS: "last_3_months";
9
+ };
10
+ export type SummaryPeriodName = (typeof SummaryPeriod)[keyof typeof SummaryPeriod];
11
+ /** A ready-made period, or both days (YYYY-MM-DD, UTC, both included). One request covers at most 92 days. */
12
+ export type InvoiceSummaryInput = {
13
+ readonly period: SummaryPeriodName;
14
+ } | {
15
+ readonly createdFrom: string;
16
+ readonly createdTo: string;
17
+ };
18
+ /** The received money on one network in one token. */
19
+ export interface NetworkTotal {
20
+ readonly network: string;
21
+ /** USDT or USDC. */
22
+ readonly token: string;
23
+ readonly payments: number;
24
+ /** Millionths of a dollar, as a string: "251200000" is $251.20. */
25
+ readonly receivedUsdMicros: string;
26
+ }
27
+ /** Totals of the store's invoices created in a range of UTC days. */
28
+ export interface InvoiceSummary {
29
+ /** The first and last day counted, YYYY-MM-DD, also when a period was asked for. */
30
+ readonly createdFrom: string;
31
+ readonly createdTo: string;
32
+ readonly invoiceCount: number;
33
+ /** How many of them are in each status now, every status included (see InvoiceStatus). */
34
+ readonly invoicesByStatus: Readonly<Record<string, number>>;
35
+ /** Sum of their amounts in US cents, cancelled and expired invoices left out. */
36
+ readonly invoicedUsdCents: number;
37
+ /** The money that counts for them (confirmed and screened clear), in millionths of a dollar, as a string. */
38
+ readonly receivedUsdMicros: string;
39
+ readonly byNetwork: readonly NetworkTotal[];
40
+ }
41
+ export declare function parseInvoiceSummary(f: Fields): InvoiceSummary;
42
+ //# sourceMappingURL=InvoiceSummary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvoiceSummary.d.ts","sourceRoot":"","sources":["../../src/model/InvoiceSummary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,6GAA6G;AAC7G,eAAO,MAAM,aAAa;;;;;;CAMhB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAEnF,8GAA8G;AAC9G,MAAM,MAAM,mBAAmB,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAExI,sDAAsD;AACtD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,oBAAoB;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,mEAAmE;IACnE,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED,qEAAqE;AACrE,MAAM,WAAW,cAAc;IAC7B,oFAAoF;IACpF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,0FAA0F;IAC1F,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5D,iFAAiF;IACjF,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,6GAA6G;IAC7G,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,SAAS,YAAY,EAAE,CAAC;CAC7C;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,cAAc,CAY7D"}
@@ -0,0 +1,22 @@
1
+ /** The ready-made ranges of invoices.summary(): UTC days ending today; last_3_months is the last 92 days. */
2
+ export const SummaryPeriod = {
3
+ LAST_7_DAYS: 'last_7_days',
4
+ LAST_30_DAYS: 'last_30_days',
5
+ THIS_MONTH: 'this_month',
6
+ LAST_MONTH: 'last_month',
7
+ LAST_3_MONTHS: 'last_3_months',
8
+ };
9
+ export function parseInvoiceSummary(f) {
10
+ const invoices = f.object('invoices');
11
+ const byStatus = invoices.object('byStatus');
12
+ return {
13
+ createdFrom: f.string('createdFrom'),
14
+ createdTo: f.string('createdTo'),
15
+ invoiceCount: invoices.int('count'),
16
+ invoicesByStatus: Object.fromEntries(Object.keys(byStatus.raw()).map((status) => [status, byStatus.int(status)])),
17
+ invoicedUsdCents: f.int('invoicedUsdCents'),
18
+ receivedUsdMicros: f.string('receivedUsdMicros'),
19
+ byNetwork: f.objects('byNetwork', (n) => ({ network: n.string('network'), token: n.string('token'), payments: n.int('payments'), receivedUsdMicros: n.string('receivedUsdMicros') })),
20
+ };
21
+ }
22
+ //# sourceMappingURL=InvoiceSummary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvoiceSummary.js","sourceRoot":"","sources":["../../src/model/InvoiceSummary.ts"],"names":[],"mappings":"AAEA,6GAA6G;AAC7G,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,WAAW,EAAE,aAAa;IAC1B,YAAY,EAAE,cAAc;IAC5B,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;CACtB,CAAC;AAgCX,MAAM,UAAU,mBAAmB,CAAC,CAAS;IAC3C,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7C,OAAO;QACL,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QACpC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;QAChC,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;QACnC,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACjH,gBAAgB,EAAE,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC;QAC3C,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC;QAChD,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;KACtL,CAAC;AACJ,CAAC"}
@@ -63,6 +63,20 @@ export interface Limits {
63
63
  /** The bounds of expiresInMinutes and of a store's payment window. */
64
64
  readonly minInvoiceLifetimeMinutes: number;
65
65
  readonly maxInvoiceLifetimeMinutes: number;
66
+ /** How many active API keys one store may hold per integration; revoked keys do not count. */
67
+ readonly apiKeysPerStore: ApiKeysPerStore;
68
+ /** Invoices awaiting payment one store may have at once; over it invoices.create() fails with ApiError.OPEN_INVOICE_LIMIT_REACHED. */
69
+ readonly openInvoicesPerStore: number;
70
+ /** New invoices one store may create per minute; over it the API answers 429 (RateLimitedError). */
71
+ readonly invoicesPerMinutePerStore: number;
72
+ }
73
+ export interface ApiKeysPerStore {
74
+ /** Keys of one plugin (WooCommerce, Easy Digital Downloads, WHMCS). */
75
+ readonly plugin: number;
76
+ /** AI assistant (MCP) keys, one per computer. */
77
+ readonly mcp: number;
78
+ /** Keys for your own code. */
79
+ readonly api: number;
66
80
  }
67
81
  export declare function parseLimits(f: Fields): Limits;
68
82
  /** The live price list: the free volume per payout wallet, the fee and the cap written into the contracts (50 bps is 0.5%). */
@@ -1 +1 @@
1
- {"version":3,"file":"Platform.d.ts","sourceRoot":"","sources":["../../src/model/Platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Platform.d.ts","sourceRoot":"","sources":["../../src/model/Platform.ts"],"names":[],"mappings":"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"}
@@ -51,8 +51,14 @@ export function parseLimits(f) {
51
51
  defaultInvoiceLifetimeMinutes: f.int('defaultInvoiceLifetimeMinutes'),
52
52
  minInvoiceLifetimeMinutes: f.int('minInvoiceLifetimeMinutes'),
53
53
  maxInvoiceLifetimeMinutes: f.int('maxInvoiceLifetimeMinutes'),
54
+ apiKeysPerStore: parseApiKeysPerStore(f.object('apiKeysPerStore')),
55
+ openInvoicesPerStore: f.int('openInvoicesPerStore'),
56
+ invoicesPerMinutePerStore: f.int('invoicesPerMinutePerStore'),
54
57
  };
55
58
  }
59
+ function parseApiKeysPerStore(f) {
60
+ return { plugin: f.int('plugin'), mcp: f.int('mcp'), api: f.int('api') };
61
+ }
56
62
  export function parsePricing(f) {
57
63
  return { freeVolumeUsdCents: f.int('freeVolumeUsdCents'), feeBps: f.int('feeBps'), maxFeeBps: f.int('maxFeeBps') };
58
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Platform.js","sourceRoot":"","sources":["../../src/model/Platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Platform.js","sourceRoot":"","sources":["../../src/model/Platform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { Fields } from './Fields.js';
2
+ /**
3
+ * A payment to the payout wallet on a direct network (Tron) that matched no invoice, usually an exchange that took its
4
+ * withdrawal fee out of the amount. Attach it to an invoice in the Stablevoy dashboard; an API key cannot.
5
+ */
6
+ export interface UnmatchedTransfer {
7
+ readonly id: string;
8
+ /** Network key, for example tron. */
9
+ readonly network: string;
10
+ readonly networkName: string;
11
+ /** The payout wallet the transfer arrived at. */
12
+ readonly payoutAddress: string;
13
+ readonly fromAddress: string;
14
+ readonly txHash: string;
15
+ readonly tokenSymbol: string;
16
+ /** What arrived, in millionths of a dollar, as a string: "98500137" is $98.500137. */
17
+ readonly amountUsdMicros: string;
18
+ readonly detectedAt: Date;
19
+ /** Prefix of the transaction page on the block explorer; Tronscan takes the hash without its 0x prefix. */
20
+ readonly explorerTxUrl: string;
21
+ /**
22
+ * How many active stores of the account offer this network. The payout wallet belongs to the account, not to one store,
23
+ * so 1 means the transfer is certainly this store's and more means it may belong to any of that many stores.
24
+ */
25
+ readonly sharedWithStores: number;
26
+ }
27
+ export declare function parseUnmatchedTransfer(f: Fields): UnmatchedTransfer;
28
+ //# sourceMappingURL=UnmatchedTransfer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnmatchedTransfer.d.ts","sourceRoot":"","sources":["../../src/model/UnmatchedTransfer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,iDAAiD;IACjD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,sFAAsF;IACtF,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;IAC1B,2GAA2G;IAC3G,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAcnE"}
@@ -0,0 +1,16 @@
1
+ export function parseUnmatchedTransfer(f) {
2
+ return {
3
+ id: f.string('id'),
4
+ network: f.string('network'),
5
+ networkName: f.string('networkName'),
6
+ payoutAddress: f.string('payoutAddress'),
7
+ fromAddress: f.string('fromAddress'),
8
+ txHash: f.string('txHash'),
9
+ tokenSymbol: f.string('tokenSymbol'),
10
+ amountUsdMicros: f.string('amountUsdMicros'),
11
+ detectedAt: f.date('detectedAt'),
12
+ explorerTxUrl: f.string('explorerTxUrl'),
13
+ sharedWithStores: f.int('sharedWithStores'),
14
+ };
15
+ }
16
+ //# sourceMappingURL=UnmatchedTransfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnmatchedTransfer.js","sourceRoot":"","sources":["../../src/model/UnmatchedTransfer.ts"],"names":[],"mappings":"AA4BA,MAAM,UAAU,sBAAsB,CAAC,CAAS;IAC9C,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QAClB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;QAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QACpC,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC;QACxC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QACpC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC1B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QACpC,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC;QAC5C,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;QAChC,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC;QACxC,gBAAgB,EAAE,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC;KAC5C,CAAC;AACJ,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { Transport } from '../http/Transport.js';
2
2
  import { type CreatedInvoice, type CreateInvoiceInput, type Invoice, type InvoicePage } from '../model/Invoice.js';
3
+ import { type InvoiceSummary, type InvoiceSummaryInput } from '../model/InvoiceSummary.js';
3
4
  /** Which invoices to list. Every filter is optional and they combine. Days are whole UTC days, both ends included. */
4
5
  export interface InvoiceListFilter {
5
6
  /** Only invoices in this status (see InvoiceStatus). */
@@ -40,6 +41,12 @@ export declare class Invoices {
40
41
  private static checkId;
41
42
  /** One page of invoices, newest first. */
42
43
  list(options?: ListInvoicesOptions): Promise<InvoicePage>;
44
+ /**
45
+ * Totals of the invoices created in a range of UTC days: counts per status, the invoiced amount and the money received,
46
+ * also per network and token. Pass a period (SummaryPeriod) or both days. One request covers at most 92 days, so ask for
47
+ * a year in four parts; a longer range is refused with ApiError.INVALID_INVOICE_FILTER. The API allows 30 calls a minute per store.
48
+ */
49
+ summary(input: InvoiceSummaryInput): Promise<InvoiceSummary>;
43
50
  /** Every invoice, newest first, fetching the pages as you iterate: `for await (const invoice of invoices.all())`. */
44
51
  all(options?: InvoiceListFilter & {
45
52
  readonly pageSize?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"Invoices.d.ts","sourceRoot":"","sources":["../../src/resources/Invoices.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EAAuD,KAAK,cAAc,EAAE,KAAK,kBAAkB,EAAE,KAAK,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAMxK,sHAAsH;AACtH,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,+FAA+F;IAC/F,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB;IAClB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB;IAClB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,mEAAmE;IACnE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;IAC5D,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,oDAAoD;AACpD,qBAAa,QAAQ;IACP,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,SAAS;IAEjD;;;OAGG;IACG,MAAM,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,GAAE;QAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAmB9G,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK9C;;;;;OAKG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMjD,OAAO,CAAC,MAAM,CAAC,OAAO;IAItB,0CAA0C;IACpC,IAAI,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,WAAW,CAAC;IAkBnE,qHAAqH;IAC9G,GAAG,CAAC,OAAO,GAAE,iBAAiB,GAAG;QAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,cAAc,CAAC,OAAO,CAAC;CAStG"}
1
+ {"version":3,"file":"Invoices.d.ts","sourceRoot":"","sources":["../../src/resources/Invoices.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EAAuD,KAAK,cAAc,EAAE,KAAK,kBAAkB,EAAE,KAAK,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACxK,OAAO,EAAsC,KAAK,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAM/H,sHAAsH;AACtH,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,+FAA+F;IAC/F,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB;IAClB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB;IAClB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,mEAAmE;IACnE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;IAC5D,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,oDAAoD;AACpD,qBAAa,QAAQ;IACP,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,SAAS;IAEjD;;;OAGG;IACG,MAAM,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,GAAE;QAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAmB9G,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK9C;;;;;OAKG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMjD,OAAO,CAAC,MAAM,CAAC,OAAO;IAItB,0CAA0C;IACpC,IAAI,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,WAAW,CAAC;IAkBnE;;;;OAIG;IACG,OAAO,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC;IAoBlE,qHAAqH;IAC9G,GAAG,CAAC,OAAO,GAAE,iBAAiB,GAAG;QAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,cAAc,CAAC,OAAO,CAAC;CAStG"}
@@ -1,5 +1,6 @@
1
1
  import { Fields } from '../model/Fields.js';
2
2
  import { parseCreatedInvoice, parseInvoice, parseInvoicePage } from '../model/Invoice.js';
3
+ import { parseInvoiceSummary, SummaryPeriod } from '../model/InvoiceSummary.js';
3
4
  const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
4
5
  const DAY = /^\d{4}-\d{2}-\d{2}$/;
5
6
  const IDEMPOTENCY_KEY = /^[\x21-\x7e]{1,255}$/;
@@ -80,6 +81,34 @@ export class Invoices {
80
81
  query['q'] = options.search;
81
82
  return parseInvoicePage(Fields.of(await this.transport.get('/v1/invoices', query), 'invoices'));
82
83
  }
84
+ /**
85
+ * Totals of the invoices created in a range of UTC days: counts per status, the invoiced amount and the money received,
86
+ * also per network and token. Pass a period (SummaryPeriod) or both days. One request covers at most 92 days, so ask for
87
+ * a year in four parts; a longer range is refused with ApiError.INVALID_INVOICE_FILTER. The API allows 30 calls a minute per store.
88
+ */
89
+ async summary(input) {
90
+ // Read loosely: a JavaScript caller can pass any mix, and it is refused here rather than by the API.
91
+ const given = input;
92
+ const query = {};
93
+ const hasDays = given.createdFrom !== undefined || given.createdTo !== undefined;
94
+ if ((given.period !== undefined) === hasDays)
95
+ throw new RangeError('Pass either period or both createdFrom and createdTo');
96
+ if (hasDays) {
97
+ for (const name of ['createdFrom', 'createdTo']) {
98
+ const day = given[name];
99
+ if (typeof day !== 'string' || !DAY.test(day))
100
+ throw new RangeError(`${name} must be a date as YYYY-MM-DD`);
101
+ query[name] = day;
102
+ }
103
+ }
104
+ else {
105
+ const period = given.period;
106
+ if (typeof period !== 'string' || !Object.values(SummaryPeriod).includes(period))
107
+ throw new RangeError(`period must be one of ${Object.values(SummaryPeriod).join(', ')}`);
108
+ query['period'] = period;
109
+ }
110
+ return parseInvoiceSummary(Fields.of(await this.transport.get('/v1/invoices/summary', query), 'summary'));
111
+ }
83
112
  /** Every invoice, newest first, fetching the pages as you iterate: `for await (const invoice of invoices.all())`. */
84
113
  async *all(options = {}) {
85
114
  const { pageSize, ...filter } = options;
@@ -1 +1 @@
1
- {"version":3,"file":"Invoices.js","sourceRoot":"","sources":["../../src/resources/Invoices.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Invoices.js","sourceRoot":"","sources":["../../src/resources/Invoices.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { Transport } from '../http/Transport.js';
2
+ import { type UnmatchedTransfer } from '../model/UnmatchedTransfer.js';
3
+ /** Transfers to the payout wallet that matched no invoice, on the networks of the key's store. Read only. */
4
+ export declare class UnmatchedTransfers {
5
+ private readonly transport;
6
+ constructor(transport: Transport);
7
+ /** Newest first, at most 100. The API allows 30 calls a minute per store. */
8
+ list(): Promise<UnmatchedTransfer[]>;
9
+ }
10
+ //# sourceMappingURL=UnmatchedTransfers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnmatchedTransfers.d.ts","sourceRoot":"","sources":["../../src/resources/UnmatchedTransfers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAA0B,KAAK,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAE/F,6GAA6G;AAC7G,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,SAAS;IAEjD,6EAA6E;IACvE,IAAI,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;CAK3C"}
@@ -0,0 +1,18 @@
1
+ import { UnexpectedResponseError } from '../errors/UnexpectedResponseError.js';
2
+ import { Fields } from '../model/Fields.js';
3
+ import { parseUnmatchedTransfer } from '../model/UnmatchedTransfer.js';
4
+ /** Transfers to the payout wallet that matched no invoice, on the networks of the key's store. Read only. */
5
+ export class UnmatchedTransfers {
6
+ transport;
7
+ constructor(transport) {
8
+ this.transport = transport;
9
+ }
10
+ /** Newest first, at most 100. The API allows 30 calls a minute per store. */
11
+ async list() {
12
+ const data = await this.transport.get('/v1/unmatched-transfers');
13
+ if (!Array.isArray(data))
14
+ throw new UnexpectedResponseError('unmatchedTransfers is not a list');
15
+ return data.map((item, i) => parseUnmatchedTransfer(Fields.of(item, `unmatchedTransfers[${i}]`)));
16
+ }
17
+ }
18
+ //# sourceMappingURL=UnmatchedTransfers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnmatchedTransfers.js","sourceRoot":"","sources":["../../src/resources/UnmatchedTransfers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAA0B,MAAM,+BAA+B,CAAC;AAE/F,6GAA6G;AAC7G,MAAM,OAAO,kBAAkB;IACA;IAA7B,YAA6B,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;IAAG,CAAC;IAErD,6EAA6E;IAC7E,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,uBAAuB,CAAC,kCAAkC,CAAC,CAAC;QAChG,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACpG,CAAC;CACF"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "1.6.0";
1
+ export declare const VERSION = "1.8.0";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = '1.6.0';
1
+ export const VERSION = '1.8.0';
2
2
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stablevoy",
3
- "version": "1.6.0",
3
+ "version": "1.8.0",
4
4
  "description": "Node.js and TypeScript client for the Stablevoy API: non-custodial USDT and USDC payments, invoices and signed webhooks.",
5
5
  "keywords": [
6
6
  "stablevoy",
@@ -52,10 +52,10 @@
52
52
  "devDependencies": {
53
53
  "@eslint/js": "10.0.1",
54
54
  "@types/node": "26.6.6",
55
- "@vitest/coverage-v8": "5.0.5",
55
+ "@vitest/coverage-v8": "5.1.0",
56
56
  "eslint": "10.14.0",
57
57
  "typescript": "6.0.3",
58
58
  "typescript-eslint": "8.72.1",
59
- "vitest": "5.0.5"
59
+ "vitest": "5.1.0"
60
60
  }
61
61
  }