@pacspace-io/sdk 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +67 -11
  2. package/dist/client.d.ts +34 -3
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +296 -21
  5. package/dist/client.js.map +1 -1
  6. package/dist/errors/index.d.ts +24 -1
  7. package/dist/errors/index.d.ts.map +1 -1
  8. package/dist/errors/index.js +44 -4
  9. package/dist/errors/index.js.map +1 -1
  10. package/dist/index.d.ts +51 -13
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +107 -8
  13. package/dist/index.js.map +1 -1
  14. package/dist/resources/balance.d.ts +221 -15
  15. package/dist/resources/balance.d.ts.map +1 -1
  16. package/dist/resources/balance.js +772 -27
  17. package/dist/resources/balance.js.map +1 -1
  18. package/dist/resources/submission.d.ts +79 -0
  19. package/dist/resources/submission.d.ts.map +1 -0
  20. package/dist/resources/submission.js +398 -0
  21. package/dist/resources/submission.js.map +1 -0
  22. package/dist/types/balance.d.ts +493 -28
  23. package/dist/types/balance.d.ts.map +1 -1
  24. package/dist/types/common.d.ts +3 -3
  25. package/dist/types/common.d.ts.map +1 -1
  26. package/dist/types/config.d.ts +53 -3
  27. package/dist/types/config.d.ts.map +1 -1
  28. package/dist/types/submission.d.ts +125 -0
  29. package/dist/types/submission.d.ts.map +1 -0
  30. package/dist/types/submission.js +3 -0
  31. package/dist/types/submission.js.map +1 -0
  32. package/dist/utils/polling.d.ts +2 -2
  33. package/dist/utils/polling.d.ts.map +1 -1
  34. package/dist/utils/polling.js +2 -6
  35. package/dist/utils/polling.js.map +1 -1
  36. package/dist/webhooks/index.d.ts +1 -1
  37. package/dist/webhooks/index.d.ts.map +1 -1
  38. package/dist/webhooks/types.d.ts +31 -31
  39. package/dist/webhooks/types.d.ts.map +1 -1
  40. package/dist/webhooks/types.js +0 -3
  41. package/dist/webhooks/types.js.map +1 -1
  42. package/dist/webhooks/verify.d.ts +5 -0
  43. package/dist/webhooks/verify.d.ts.map +1 -1
  44. package/dist/webhooks/verify.js +19 -4
  45. package/dist/webhooks/verify.js.map +1 -1
  46. package/package.json +1 -1
@@ -43,6 +43,25 @@ export declare class RateLimitError extends PacSpaceError {
43
43
  readonly retryAfter: number | null;
44
44
  constructor(message?: string, retryAfter?: number | null, requestPath?: string);
45
45
  }
46
+ /**
47
+ * Thrown when a customer's submission cadence window has not elapsed (HTTP 429).
48
+ * This error is terminal for the current request and should not be auto-retried.
49
+ */
50
+ export declare class CadenceLimitError extends PacSpaceError {
51
+ /** Milliseconds remaining before the next allowed submission, if provided. */
52
+ readonly retryAfterMs: number | null;
53
+ /** Customer ID associated with the cadence block, when provided. */
54
+ readonly customerId: string | null;
55
+ constructor(message?: string, retryAfterSeconds?: number | null, customerId?: string | null, requestPath?: string);
56
+ }
57
+ /**
58
+ * Thrown when the API is temporarily unavailable (HTTP 503).
59
+ */
60
+ export declare class ServiceUnavailableError extends PacSpaceError {
61
+ /** Seconds to wait before retrying, if provided by the API. */
62
+ readonly retryAfter: number | null;
63
+ constructor(message?: string, retryAfter?: number | null, requestPath?: string);
64
+ }
46
65
  /**
47
66
  * Thrown when the API returns a validation error (HTTP 400).
48
67
  */
@@ -65,5 +84,9 @@ export declare class WebhookVerificationError extends PacSpaceError {
65
84
  * Map an HTTP status code + API response to the appropriate typed error.
66
85
  * @internal
67
86
  */
68
- export declare function mapApiError(statusCode: number, message: string, requestPath?: string, headers?: Headers): PacSpaceError;
87
+ export declare function mapApiError(statusCode: number, message: string, requestPath?: string, headers?: Headers, apiError?: {
88
+ code?: string;
89
+ retryAfterSeconds?: number | null;
90
+ customerId?: string | null;
91
+ }): PacSpaceError;
69
92
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,8CAA8C;IAC9C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;gBAG5B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM;CAWvB;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,aAAa;gBACvC,OAAO,SAA+B,EAAE,WAAW,CAAC,EAAE,MAAM;CAIzE;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,aAAa;gBAEvD,OAAO,SAA4C,EACnD,WAAW,CAAC,EAAE,MAAM;CAKvB;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,aAAa;gBAClC,OAAO,SAAuB,EAAE,WAAW,CAAC,EAAE,MAAM;CAIjE;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,aAAa;gBAEvD,OAAO,SAA0D,EACjE,WAAW,CAAC,EAAE,MAAM;CAKvB;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,aAAa;IAC/C,+DAA+D;IAC/D,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;gBAGjC,OAAO,SAAwB,EAC/B,UAAU,GAAE,MAAM,GAAG,IAAW,EAChC,WAAW,CAAC,EAAE,MAAM;CAMvB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,aAAa;gBACpC,OAAO,SAAyB,EAAE,WAAW,CAAC,EAAE,MAAM;CAInE;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,aAAa;gBAE3C,OAAO,SAAiD,EACxD,WAAW,CAAC,EAAE,MAAM;CAKvB;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,aAAa;gBAC7C,OAAO,SAA0C;CAI9D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,OAAO,GAChB,aAAa,CAuBf"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,8CAA8C;IAC9C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;gBAG5B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM;CAWvB;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,aAAa;gBACvC,OAAO,SAA+B,EAAE,WAAW,CAAC,EAAE,MAAM;CAIzE;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,aAAa;gBAEvD,OAAO,SAA4C,EACnD,WAAW,CAAC,EAAE,MAAM;CAKvB;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,aAAa;gBAClC,OAAO,SAAuB,EAAE,WAAW,CAAC,EAAE,MAAM;CAIjE;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,aAAa;gBAEvD,OAAO,SAA0D,EACjE,WAAW,CAAC,EAAE,MAAM;CAKvB;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,aAAa;IAC/C,+DAA+D;IAC/D,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;gBAGjC,OAAO,SAAwB,EAC/B,UAAU,GAAE,MAAM,GAAG,IAAW,EAChC,WAAW,CAAC,EAAE,MAAM;CAMvB;AAED;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,aAAa;IAClD,8EAA8E;IAC9E,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,oEAAoE;IACpE,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;gBAGjC,OAAO,SAAqC,EAC5C,iBAAiB,GAAE,MAAM,GAAG,IAAW,EACvC,UAAU,GAAE,MAAM,GAAG,IAAW,EAChC,WAAW,CAAC,EAAE,MAAM;CAUvB;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,aAAa;IACxD,+DAA+D;IAC/D,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;gBAGjC,OAAO,SAAoC,EAC3C,UAAU,GAAE,MAAM,GAAG,IAAW,EAChC,WAAW,CAAC,EAAE,MAAM;CAMvB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,aAAa;gBACpC,OAAO,SAAyB,EAAE,WAAW,CAAC,EAAE,MAAM;CAInE;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,aAAa;gBAE3C,OAAO,SAAiD,EACxD,WAAW,CAAC,EAAE,MAAM;CAKvB;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,aAAa;gBAC7C,OAAO,SAA0C;CAI9D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,OAAO,EACjB,QAAQ,CAAC,EAAE;IACT,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,GACA,aAAa,CA+Cf"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WebhookVerificationError = exports.TimeoutError = exports.ValidationError = exports.RateLimitError = exports.ContractNotDeployedError = exports.NotFoundError = exports.InsufficientCreditsError = exports.InvalidApiKeyError = exports.PacSpaceError = void 0;
3
+ exports.WebhookVerificationError = exports.TimeoutError = exports.ValidationError = exports.ServiceUnavailableError = exports.CadenceLimitError = exports.RateLimitError = exports.ContractNotDeployedError = exports.NotFoundError = exports.InsufficientCreditsError = exports.InvalidApiKeyError = exports.PacSpaceError = void 0;
4
4
  exports.mapApiError = mapApiError;
5
5
  /**
6
6
  * Base error class for all PacSpace SDK errors.
@@ -69,6 +69,33 @@ class RateLimitError extends PacSpaceError {
69
69
  }
70
70
  }
71
71
  exports.RateLimitError = RateLimitError;
72
+ /**
73
+ * Thrown when a customer's submission cadence window has not elapsed (HTTP 429).
74
+ * This error is terminal for the current request and should not be auto-retried.
75
+ */
76
+ class CadenceLimitError extends PacSpaceError {
77
+ constructor(message = 'Submission cadence limit reached', retryAfterSeconds = null, customerId = null, requestPath) {
78
+ super(message, 429, 'CADENCE_LIMIT', requestPath);
79
+ this.name = 'CadenceLimitError';
80
+ this.retryAfterMs =
81
+ retryAfterSeconds && Number.isFinite(retryAfterSeconds)
82
+ ? Math.max(0, Math.floor(retryAfterSeconds * 1000))
83
+ : null;
84
+ this.customerId = customerId;
85
+ }
86
+ }
87
+ exports.CadenceLimitError = CadenceLimitError;
88
+ /**
89
+ * Thrown when the API is temporarily unavailable (HTTP 503).
90
+ */
91
+ class ServiceUnavailableError extends PacSpaceError {
92
+ constructor(message = 'Service temporarily unavailable', retryAfter = null, requestPath) {
93
+ super(message, 503, 'SERVICE_UNAVAILABLE', requestPath);
94
+ this.name = 'ServiceUnavailableError';
95
+ this.retryAfter = retryAfter;
96
+ }
97
+ }
98
+ exports.ServiceUnavailableError = ServiceUnavailableError;
72
99
  /**
73
100
  * Thrown when the API returns a validation error (HTTP 400).
74
101
  */
@@ -103,7 +130,15 @@ exports.WebhookVerificationError = WebhookVerificationError;
103
130
  * Map an HTTP status code + API response to the appropriate typed error.
104
131
  * @internal
105
132
  */
106
- function mapApiError(statusCode, message, requestPath, headers) {
133
+ function mapApiError(statusCode, message, requestPath, headers, apiError) {
134
+ const headerRetryAfter = headers?.get('retry-after');
135
+ const parsedHeaderRetryAfter = headerRetryAfter
136
+ ? Number.parseInt(headerRetryAfter, 10)
137
+ : null;
138
+ const retryAfterSeconds = apiError?.retryAfterSeconds ??
139
+ (Number.isFinite(parsedHeaderRetryAfter)
140
+ ? parsedHeaderRetryAfter
141
+ : null);
107
142
  switch (statusCode) {
108
143
  case 400:
109
144
  return new ValidationError(message, requestPath);
@@ -116,8 +151,13 @@ function mapApiError(statusCode, message, requestPath, headers) {
116
151
  case 412:
117
152
  return new ContractNotDeployedError(message, requestPath);
118
153
  case 429: {
119
- const retryAfter = headers?.get('retry-after');
120
- return new RateLimitError(message, retryAfter ? parseInt(retryAfter, 10) : null, requestPath);
154
+ if (apiError?.code === 'CADENCE_LIMIT') {
155
+ return new CadenceLimitError(message, retryAfterSeconds, apiError.customerId ?? null, requestPath);
156
+ }
157
+ return new RateLimitError(message, retryAfterSeconds, requestPath);
158
+ }
159
+ case 503: {
160
+ return new ServiceUnavailableError(message, retryAfterSeconds, requestPath);
121
161
  }
122
162
  default:
123
163
  return new PacSpaceError(message, statusCode, 'API_ERROR', requestPath);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":";;;AAkIA,kCA4BC;AA9JD;;;GAGG;AACH,MAAa,aAAc,SAAQ,KAAK;IAQtC,YACE,OAAe,EACf,UAAkB,EAClB,IAAY,EACZ,WAAoB;QAEpB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAE/B,0CAA0C;QAC1C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAvBD,sCAuBC;AAED;;GAEG;AACH,MAAa,kBAAmB,SAAQ,aAAa;IACnD,YAAY,OAAO,GAAG,4BAA4B,EAAE,WAAoB;QACtE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AALD,gDAKC;AAED;;GAEG;AACH,MAAa,wBAAyB,SAAQ,aAAa;IACzD,YACE,OAAO,GAAG,yCAAyC,EACnD,WAAoB;QAEpB,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,sBAAsB,EAAE,WAAW,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AARD,4DAQC;AAED;;GAEG;AACH,MAAa,aAAc,SAAQ,aAAa;IAC9C,YAAY,OAAO,GAAG,oBAAoB,EAAE,WAAoB;QAC9D,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AALD,sCAKC;AAED;;GAEG;AACH,MAAa,wBAAyB,SAAQ,aAAa;IACzD,YACE,OAAO,GAAG,uDAAuD,EACjE,WAAoB;QAEpB,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,uBAAuB,EAAE,WAAW,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AARD,4DAQC;AAED;;GAEG;AACH,MAAa,cAAe,SAAQ,aAAa;IAI/C,YACE,OAAO,GAAG,qBAAqB,EAC/B,aAA4B,IAAI,EAChC,WAAoB;QAEpB,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAbD,wCAaC;AAED;;GAEG;AACH,MAAa,eAAgB,SAAQ,aAAa;IAChD,YAAY,OAAO,GAAG,sBAAsB,EAAE,WAAoB;QAChE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,kBAAkB,EAAE,WAAW,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AALD,0CAKC;AAED;;GAEG;AACH,MAAa,YAAa,SAAQ,aAAa;IAC7C,YACE,OAAO,GAAG,8CAA8C,EACxD,WAAoB;QAEpB,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AARD,oCAQC;AAED;;GAEG;AACH,MAAa,wBAAyB,SAAQ,aAAa;IACzD,YAAY,OAAO,GAAG,uCAAuC;QAC3D,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,6BAA6B,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AALD,4DAKC;AAED;;;GAGG;AACH,SAAgB,WAAW,CACzB,UAAkB,EAClB,OAAe,EACf,WAAoB,EACpB,OAAiB;IAEjB,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,GAAG;YACN,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACnD,KAAK,GAAG;YACN,OAAO,IAAI,kBAAkB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACtD,KAAK,GAAG;YACN,OAAO,IAAI,wBAAwB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC5D,KAAK,GAAG;YACN,OAAO,IAAI,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACjD,KAAK,GAAG;YACN,OAAO,IAAI,wBAAwB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC5D,KAAK,GAAG,CAAC,CAAC,CAAC;YACT,MAAM,UAAU,GAAG,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAC/C,OAAO,IAAI,cAAc,CACvB,OAAO,EACP,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAC5C,WAAW,CACZ,CAAC;QACJ,CAAC;QACD;YACE,OAAO,IAAI,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":";;;AA8KA,kCAyDC;AAvOD;;;GAGG;AACH,MAAa,aAAc,SAAQ,KAAK;IAQtC,YACE,OAAe,EACf,UAAkB,EAClB,IAAY,EACZ,WAAoB;QAEpB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAE/B,0CAA0C;QAC1C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAvBD,sCAuBC;AAED;;GAEG;AACH,MAAa,kBAAmB,SAAQ,aAAa;IACnD,YAAY,OAAO,GAAG,4BAA4B,EAAE,WAAoB;QACtE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AALD,gDAKC;AAED;;GAEG;AACH,MAAa,wBAAyB,SAAQ,aAAa;IACzD,YACE,OAAO,GAAG,yCAAyC,EACnD,WAAoB;QAEpB,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,sBAAsB,EAAE,WAAW,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AARD,4DAQC;AAED;;GAEG;AACH,MAAa,aAAc,SAAQ,aAAa;IAC9C,YAAY,OAAO,GAAG,oBAAoB,EAAE,WAAoB;QAC9D,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AALD,sCAKC;AAED;;GAEG;AACH,MAAa,wBAAyB,SAAQ,aAAa;IACzD,YACE,OAAO,GAAG,uDAAuD,EACjE,WAAoB;QAEpB,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,uBAAuB,EAAE,WAAW,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AARD,4DAQC;AAED;;GAEG;AACH,MAAa,cAAe,SAAQ,aAAa;IAI/C,YACE,OAAO,GAAG,qBAAqB,EAC/B,aAA4B,IAAI,EAChC,WAAoB;QAEpB,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAbD,wCAaC;AAED;;;GAGG;AACH,MAAa,iBAAkB,SAAQ,aAAa;IAMlD,YACE,OAAO,GAAG,kCAAkC,EAC5C,oBAAmC,IAAI,EACvC,aAA4B,IAAI,EAChC,WAAoB;QAEpB,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,YAAY;YACf,iBAAiB,IAAI,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACrD,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;gBACnD,CAAC,CAAC,IAAI,CAAC;QACX,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AApBD,8CAoBC;AAED;;GAEG;AACH,MAAa,uBAAwB,SAAQ,aAAa;IAIxD,YACE,OAAO,GAAG,iCAAiC,EAC3C,aAA4B,IAAI,EAChC,WAAoB;QAEpB,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,qBAAqB,EAAE,WAAW,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAbD,0DAaC;AAED;;GAEG;AACH,MAAa,eAAgB,SAAQ,aAAa;IAChD,YAAY,OAAO,GAAG,sBAAsB,EAAE,WAAoB;QAChE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,kBAAkB,EAAE,WAAW,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AALD,0CAKC;AAED;;GAEG;AACH,MAAa,YAAa,SAAQ,aAAa;IAC7C,YACE,OAAO,GAAG,8CAA8C,EACxD,WAAoB;QAEpB,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AARD,oCAQC;AAED;;GAEG;AACH,MAAa,wBAAyB,SAAQ,aAAa;IACzD,YAAY,OAAO,GAAG,uCAAuC;QAC3D,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,6BAA6B,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AALD,4DAKC;AAED;;;GAGG;AACH,SAAgB,WAAW,CACzB,UAAkB,EAClB,OAAe,EACf,WAAoB,EACpB,OAAiB,EACjB,QAIC;IAED,MAAM,gBAAgB,GAAG,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;IACrD,MAAM,sBAAsB,GAAG,gBAAgB;QAC7C,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,CAAC;QACvC,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,iBAAiB,GACrB,QAAQ,EAAE,iBAAiB;QAC3B,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YACtC,CAAC,CAAC,sBAAsB;YACxB,CAAC,CAAC,IAAI,CAAC,CAAC;IAEZ,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,GAAG;YACN,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACnD,KAAK,GAAG;YACN,OAAO,IAAI,kBAAkB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACtD,KAAK,GAAG;YACN,OAAO,IAAI,wBAAwB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC5D,KAAK,GAAG;YACN,OAAO,IAAI,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACjD,KAAK,GAAG;YACN,OAAO,IAAI,wBAAwB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC5D,KAAK,GAAG,CAAC,CAAC,CAAC;YACT,IAAI,QAAQ,EAAE,IAAI,KAAK,eAAe,EAAE,CAAC;gBACvC,OAAO,IAAI,iBAAiB,CAC1B,OAAO,EACP,iBAAiB,EACjB,QAAQ,CAAC,UAAU,IAAI,IAAI,EAC3B,WAAW,CACZ,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,cAAc,CACvB,OAAO,EACP,iBAAiB,EACjB,WAAW,CACZ,CAAC;QACJ,CAAC;QACD,KAAK,GAAG,CAAC,CAAC,CAAC;YACT,OAAO,IAAI,uBAAuB,CAChC,OAAO,EACP,iBAAiB,EACjB,WAAW,CACZ,CAAC;QACJ,CAAC;QACD;YACE,OAAO,IAAI,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { BalanceResource } from './resources/balance';
2
2
  import { Webhooks } from './webhooks/verify';
3
3
  import type { PacSpaceConfig } from './types/config';
4
+ import type { VerifyResponse } from './types/balance';
4
5
  /**
5
6
  * PacSpace SDK — the official TypeScript client for the PacSpace Balance API.
6
7
  *
@@ -22,15 +23,24 @@ import type { PacSpaceConfig } from './types/config';
22
23
  * theirs: 98000,
23
24
  * });
24
25
  *
25
- * // Period-end checkpoint
26
- * const checkpoint = await pac.balance.checkpoint('cust_123', {
27
- * period: '2026-02',
28
- * });
26
+ * // Period-end receipt (shareable verification proof)
27
+ * const receipt = await pac.balance.receipt('cust_123', { period: '2026-02' });
28
+ *
29
+ * // Verify a proof root (public, no auth)
30
+ * const verification = await pac.verify(receipt.proofRoot);
29
31
  * ```
30
32
  */
31
33
  export declare class PacSpace {
34
+ /**
35
+ * Preferred SDK initializer for Phase 3 surface.
36
+ */
37
+ static init(apiKey: string, options?: Omit<PacSpaceConfig, 'apiKey'>): PacSpace;
32
38
  /** @internal */
33
39
  private readonly client;
40
+ /** Base URL for API (used by verify, which requires no auth). */
41
+ private readonly baseUrl;
42
+ private readonly fetchFn;
43
+ private readonly timeoutMs;
34
44
  /**
35
45
  * Balance API resource — emit deltas, derive balances, compare, receipt, checkpoint.
36
46
  */
@@ -44,21 +54,49 @@ export declare class PacSpace {
44
54
  * Create a new PacSpace SDK instance.
45
55
  *
46
56
  * @param config - SDK configuration.
47
- * @param config.apiKey - Your PacSpace API key (required).
48
- * @param config.baseUrl - API base URL (optional, defaults to production).
57
+ * @param config.apiKey - Your Balance API key (required).
58
+ * @param config.baseUrl - API base URL (optional, overrides auto-routing).
59
+ * @param config.sandboxUrl - Custom sandbox URL (optional, used for `pk_test_*` keys).
60
+ * @param config.productionUrl - Custom production URL (optional, used for `pk_live_*` keys).
49
61
  * @param config.chainId - Default chain ID (optional, auto-detected from key prefix).
50
62
  * @param config.maxRetries - Max retries on transient errors (default: 2).
51
63
  * @param config.timeout - Request timeout in ms (default: 30000).
52
64
  */
53
- constructor(config: PacSpaceConfig & {
54
- webhookSecret?: string;
55
- });
65
+ constructor(config: PacSpaceConfig);
66
+ /**
67
+ * Close the SDK client and reject buffered write requests.
68
+ */
69
+ close(reason?: string): void;
70
+ /**
71
+ * Graceful shutdown: flush summary queue and close the client.
72
+ */
73
+ shutdown(reason?: string): Promise<void>;
74
+ /**
75
+ * Verify a proof root via the public verification endpoint.
76
+ *
77
+ * No API key required — the proof root itself serves as the access key.
78
+ * Anyone with a proof root can verify it independently.
79
+ *
80
+ * @param proofRoot - The proof root from a receipt (hex string).
81
+ * @returns Verification result with records and metadata.
82
+ *
83
+ * @example
84
+ * ```typescript
85
+ * const result = await pac.verify('0x7f3a9b2c1d4e5f6a...');
86
+ * if (result.verified) {
87
+ * console.log(result.verification?.verificationExplorerUrl);
88
+ * console.log(result.summary?.recordCount);
89
+ * }
90
+ * ```
91
+ */
92
+ verify(proofRoot: string): Promise<VerifyResponse>;
56
93
  }
57
94
  export type { PacSpaceConfig, RequestOptions } from './types/config';
58
- export type { AnchorStatus, CheckpointType } from './types/common';
59
- export type { EmitOptions, EmitAndWaitOptions, EmitResponse, DeriveOptions, DeriveResponse, VerifiedDelta, WindowSummary, CompareOptions, CompareBalances, CompareResponse, DiscrepancyReport, ReceiptResponse, CheckpointOptions, CheckpointResponse, } from './types/balance';
60
- export { PacSpaceError, InvalidApiKeyError, InsufficientCreditsError, NotFoundError, ContractNotDeployedError, RateLimitError, ValidationError, TimeoutError, WebhookVerificationError, } from './errors';
95
+ export type { RecordStatus, CheckpointType } from './types/common';
96
+ export type { EmitOptions, EmitAndWaitOptions, EmitResponse, DeriveOptions, DeriveResponse, VerifiedDelta, WindowSummary, CompareOptions, CompareBalances, CompareResponse, DiscrepancyReport, ReceiptResponse, CheckpointOptions, CheckpointResponse, DeltaStatusResponse, WaitForVerifiedOptions, UsageResponse, SequenceGapsOptions, SequenceGapRange, SequenceGapsResponse, BulkDelta, BulkEmitOptions, BulkEmitResponse, BulkDeltaResult, ListWebhookDeliveriesOptions, ListWebhookDeliveriesResponse, CustomerRecordSummary, CustomerRecordDetail, CustomerRecordActivity, ListCustomersOptions, ListCustomersResponse, GetCustomerOptions, InvoiceProofOptions, InvoiceProofResponse, InvoiceProofDelta, InvoiceProofWindowSummary, InvoiceProofVerification, VerifyResponse, VerifySummary, VerifyRecord, VerifyVerification, } from './types/balance';
97
+ export type { SubmissionProfile, SubmissionAutomationOptions, CustomerUsageSummary, QueuedUsageSummary, FlushSummariesOptions, SummaryFlushFailure, SummaryFlushResult, SubmissionQueueState, } from './types/submission';
98
+ export { PacSpaceError, InvalidApiKeyError, InsufficientCreditsError, NotFoundError, ContractNotDeployedError, CadenceLimitError, RateLimitError, ServiceUnavailableError, ValidationError, TimeoutError, WebhookVerificationError, } from './errors';
61
99
  export { Webhooks } from './webhooks/verify';
62
100
  export type { VerifyOptions, } from './webhooks/verify';
63
- export type { WebhookEventType, WebhookEvent, WebhookEventMap, WebhookHeaders, DeltaVerifiedPayload, DeltaStoredPayload, CheckpointVerifiedPayload, FactVerifiedPayload, RecordTransferredPayload, } from './webhooks/types';
101
+ export type { KnownWebhookEventType, WebhookEventType, WebhookEvent, WebhookEventMap, WebhookHeaders, DeltaVerifiedPayload, DeltaFailedPayload, } from './webhooks/types';
64
102
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,QAAQ;IACnB,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IAEpC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAElC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IAExC;;;;;;;;;OASG;gBACS,MAAM,EAAE,cAAc,GAAG;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE;CAQhE;AAOD,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGnE,YAAY,EACV,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,aAAa,EACb,aAAa,EACb,cAAc,EACd,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,wBAAwB,EACxB,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,eAAe,EACf,YAAY,EACZ,wBAAwB,GACzB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,YAAY,EACV,aAAa,GACd,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,EACzB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAQtD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,QAAQ;IACnB;;OAEG;IACH,MAAM,CAAC,IAAI,CACT,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAM,GAC3C,QAAQ;IAIX,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,iEAAiE;IACjE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAElC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IAExC;;;;;;;;;;;OAWG;gBACS,MAAM,EAAE,cAAc;IA4BlC;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAK5B;;OAEG;IACG,QAAQ,CAAC,MAAM,SAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD;;;;;;;;;;;;;;;;;OAiBG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;CAyCzD;AAOD,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGnE,YAAY,EACV,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,aAAa,EACb,aAAa,EACb,cAAc,EACd,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,4BAA4B,EAC5B,6BAA6B,EAC7B,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,EACxB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,iBAAiB,EACjB,2BAA2B,EAC3B,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,wBAAwB,EACxB,aAAa,EACb,wBAAwB,EACxB,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,eAAe,EACf,YAAY,EACZ,wBAAwB,GACzB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,YAAY,EACV,aAAa,GACd,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -1,9 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Webhooks = exports.WebhookVerificationError = exports.TimeoutError = exports.ValidationError = exports.RateLimitError = exports.ContractNotDeployedError = exports.NotFoundError = exports.InsufficientCreditsError = exports.InvalidApiKeyError = exports.PacSpaceError = exports.PacSpace = void 0;
3
+ exports.Webhooks = exports.WebhookVerificationError = exports.TimeoutError = exports.ValidationError = exports.ServiceUnavailableError = exports.RateLimitError = exports.CadenceLimitError = exports.ContractNotDeployedError = exports.NotFoundError = exports.InsufficientCreditsError = exports.InvalidApiKeyError = exports.PacSpaceError = exports.PacSpace = void 0;
4
4
  const client_1 = require("./client");
5
5
  const balance_1 = require("./resources/balance");
6
6
  const verify_1 = require("./webhooks/verify");
7
+ /** Default sandbox API base URL. */
8
+ const DEFAULT_SANDBOX_URL = 'https://api-sandbox-wnizuypena-uw.a.run.app';
9
+ /** Default production API base URL. */
10
+ const DEFAULT_PRODUCTION_URL = 'https://api.pacspace.io';
7
11
  /**
8
12
  * PacSpace SDK — the official TypeScript client for the PacSpace Balance API.
9
13
  *
@@ -25,30 +29,123 @@ const verify_1 = require("./webhooks/verify");
25
29
  * theirs: 98000,
26
30
  * });
27
31
  *
28
- * // Period-end checkpoint
29
- * const checkpoint = await pac.balance.checkpoint('cust_123', {
30
- * period: '2026-02',
31
- * });
32
+ * // Period-end receipt (shareable verification proof)
33
+ * const receipt = await pac.balance.receipt('cust_123', { period: '2026-02' });
34
+ *
35
+ * // Verify a proof root (public, no auth)
36
+ * const verification = await pac.verify(receipt.proofRoot);
32
37
  * ```
33
38
  */
34
39
  class PacSpace {
40
+ /**
41
+ * Preferred SDK initializer for Phase 3 surface.
42
+ */
43
+ static init(apiKey, options = {}) {
44
+ return new PacSpace({ apiKey, ...options });
45
+ }
35
46
  /**
36
47
  * Create a new PacSpace SDK instance.
37
48
  *
38
49
  * @param config - SDK configuration.
39
- * @param config.apiKey - Your PacSpace API key (required).
40
- * @param config.baseUrl - API base URL (optional, defaults to production).
50
+ * @param config.apiKey - Your Balance API key (required).
51
+ * @param config.baseUrl - API base URL (optional, overrides auto-routing).
52
+ * @param config.sandboxUrl - Custom sandbox URL (optional, used for `pk_test_*` keys).
53
+ * @param config.productionUrl - Custom production URL (optional, used for `pk_live_*` keys).
41
54
  * @param config.chainId - Default chain ID (optional, auto-detected from key prefix).
42
55
  * @param config.maxRetries - Max retries on transient errors (default: 2).
43
56
  * @param config.timeout - Request timeout in ms (default: 30000).
44
57
  */
45
58
  constructor(config) {
59
+ // HttpClient handles base URL auto-routing internally
46
60
  this.client = new client_1.HttpClient(config);
47
- this.balance = new balance_1.BalanceResource(this.client);
61
+ this.fetchFn = config.fetch || globalThis.fetch;
62
+ this.timeoutMs = config.timeout ?? 30000;
63
+ // For verify() method, we need to determine base URL ourselves
64
+ // Use explicit baseUrl if provided, otherwise auto-route
65
+ if (config.baseUrl) {
66
+ this.baseUrl = config.baseUrl.replace(/\/+$/, '');
67
+ }
68
+ else {
69
+ const apiKey = config.apiKey;
70
+ if (apiKey.startsWith('pk_test_')) {
71
+ this.baseUrl = (config.sandboxUrl || DEFAULT_SANDBOX_URL).replace(/\/+$/, '');
72
+ }
73
+ else if (apiKey.startsWith('pk_live_')) {
74
+ this.baseUrl = (config.productionUrl || DEFAULT_PRODUCTION_URL).replace(/\/+$/, '');
75
+ }
76
+ else {
77
+ // Fallback to production
78
+ this.baseUrl = (config.productionUrl || DEFAULT_PRODUCTION_URL).replace(/\/+$/, '');
79
+ }
80
+ }
81
+ this.balance = new balance_1.BalanceResource(this.client, config.submission);
48
82
  if (config.webhookSecret) {
49
83
  this.webhooks = new verify_1.Webhooks(config.webhookSecret);
50
84
  }
51
85
  }
86
+ /**
87
+ * Close the SDK client and reject buffered write requests.
88
+ */
89
+ close(reason) {
90
+ this.balance.stopSummaryScheduler();
91
+ this.client.close(reason);
92
+ }
93
+ /**
94
+ * Graceful shutdown: flush summary queue and close the client.
95
+ */
96
+ async shutdown(reason = 'SDK shutdown') {
97
+ await this.balance.shutdownSummaryScheduler();
98
+ this.client.close(reason);
99
+ }
100
+ /**
101
+ * Verify a proof root via the public verification endpoint.
102
+ *
103
+ * No API key required — the proof root itself serves as the access key.
104
+ * Anyone with a proof root can verify it independently.
105
+ *
106
+ * @param proofRoot - The proof root from a receipt (hex string).
107
+ * @returns Verification result with records and metadata.
108
+ *
109
+ * @example
110
+ * ```typescript
111
+ * const result = await pac.verify('0x7f3a9b2c1d4e5f6a...');
112
+ * if (result.verified) {
113
+ * console.log(result.verification?.verificationExplorerUrl);
114
+ * console.log(result.summary?.recordCount);
115
+ * }
116
+ * ```
117
+ */
118
+ async verify(proofRoot) {
119
+ const url = `${this.baseUrl}/api/v1/verify/${encodeURIComponent(proofRoot)}`;
120
+ const controller = new AbortController();
121
+ const timeoutId = setTimeout(() => controller.abort(), this.timeoutMs);
122
+ let response;
123
+ try {
124
+ response = await this.fetchFn(url, {
125
+ method: 'GET',
126
+ signal: controller.signal,
127
+ });
128
+ }
129
+ catch (error) {
130
+ if (error instanceof Error && error.name === 'AbortError') {
131
+ throw new Error(`Verification request timed out after ${this.timeoutMs}ms`);
132
+ }
133
+ throw error;
134
+ }
135
+ finally {
136
+ clearTimeout(timeoutId);
137
+ }
138
+ if (!response.ok) {
139
+ const body = (await response.json().catch(() => ({})));
140
+ const msg = body.error ?? body.message ?? response.statusText;
141
+ throw new Error(`Verification failed: ${msg}`);
142
+ }
143
+ const raw = (await response.json());
144
+ if (raw.success && raw.data !== undefined) {
145
+ return raw.data;
146
+ }
147
+ throw new Error('Verification failed: unexpected response format');
148
+ }
52
149
  }
53
150
  exports.PacSpace = PacSpace;
54
151
  // Errors
@@ -58,7 +155,9 @@ Object.defineProperty(exports, "InvalidApiKeyError", { enumerable: true, get: fu
58
155
  Object.defineProperty(exports, "InsufficientCreditsError", { enumerable: true, get: function () { return errors_1.InsufficientCreditsError; } });
59
156
  Object.defineProperty(exports, "NotFoundError", { enumerable: true, get: function () { return errors_1.NotFoundError; } });
60
157
  Object.defineProperty(exports, "ContractNotDeployedError", { enumerable: true, get: function () { return errors_1.ContractNotDeployedError; } });
158
+ Object.defineProperty(exports, "CadenceLimitError", { enumerable: true, get: function () { return errors_1.CadenceLimitError; } });
61
159
  Object.defineProperty(exports, "RateLimitError", { enumerable: true, get: function () { return errors_1.RateLimitError; } });
160
+ Object.defineProperty(exports, "ServiceUnavailableError", { enumerable: true, get: function () { return errors_1.ServiceUnavailableError; } });
62
161
  Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return errors_1.ValidationError; } });
63
162
  Object.defineProperty(exports, "TimeoutError", { enumerable: true, get: function () { return errors_1.TimeoutError; } });
64
163
  Object.defineProperty(exports, "WebhookVerificationError", { enumerable: true, get: function () { return errors_1.WebhookVerificationError; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qCAAsC;AACtC,iDAAsD;AACtD,8CAA6C;AAG7C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAa,QAAQ;IAenB;;;;;;;;;OASG;IACH,YAAY,MAAmD;QAC7D,IAAI,CAAC,MAAM,GAAG,IAAI,mBAAU,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,IAAI,yBAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhD,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,iBAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;CACF;AAjCD,4BAiCC;AA4BD,SAAS;AACT,mCAUkB;AAThB,uGAAA,aAAa,OAAA;AACb,4GAAA,kBAAkB,OAAA;AAClB,kHAAA,wBAAwB,OAAA;AACxB,uGAAA,aAAa,OAAA;AACb,kHAAA,wBAAwB,OAAA;AACxB,wGAAA,cAAc,OAAA;AACd,yGAAA,eAAe,OAAA;AACf,sGAAA,YAAY,OAAA;AACZ,kHAAA,wBAAwB,OAAA;AAG1B,WAAW;AACX,4CAA6C;AAApC,kGAAA,QAAQ,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}