@aibtc/tx-schemas 0.1.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 (50) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +73 -0
  3. package/dist/core/enums.d.ts +161 -0
  4. package/dist/core/enums.d.ts.map +1 -0
  5. package/dist/core/enums.js +98 -0
  6. package/dist/core/enums.js.map +1 -0
  7. package/dist/core/index.d.ts +6 -0
  8. package/dist/core/index.d.ts.map +1 -0
  9. package/dist/core/index.js +6 -0
  10. package/dist/core/index.js.map +1 -0
  11. package/dist/core/payment.d.ts +267 -0
  12. package/dist/core/payment.d.ts.map +1 -0
  13. package/dist/core/payment.js +85 -0
  14. package/dist/core/payment.js.map +1 -0
  15. package/dist/core/primitives.d.ts +11 -0
  16. package/dist/core/primitives.d.ts.map +1 -0
  17. package/dist/core/primitives.js +29 -0
  18. package/dist/core/primitives.js.map +1 -0
  19. package/dist/core/schemas.d.ts +2 -0
  20. package/dist/core/schemas.d.ts.map +1 -0
  21. package/dist/core/schemas.js +2 -0
  22. package/dist/core/schemas.js.map +1 -0
  23. package/dist/core/terminal-reasons.d.ts +154 -0
  24. package/dist/core/terminal-reasons.d.ts.map +1 -0
  25. package/dist/core/terminal-reasons.js +82 -0
  26. package/dist/core/terminal-reasons.js.map +1 -0
  27. package/dist/http/index.d.ts +2 -0
  28. package/dist/http/index.d.ts.map +1 -0
  29. package/dist/http/index.js +2 -0
  30. package/dist/http/index.js.map +1 -0
  31. package/dist/http/schemas.d.ts +424 -0
  32. package/dist/http/schemas.d.ts.map +1 -0
  33. package/dist/http/schemas.js +171 -0
  34. package/dist/http/schemas.js.map +1 -0
  35. package/dist/index.d.ts +4 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +4 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/rpc/index.d.ts +2 -0
  40. package/dist/rpc/index.d.ts.map +1 -0
  41. package/dist/rpc/index.js +2 -0
  42. package/dist/rpc/index.js.map +1 -0
  43. package/dist/rpc/schemas.d.ts +339 -0
  44. package/dist/rpc/schemas.d.ts.map +1 -0
  45. package/dist/rpc/schemas.js +91 -0
  46. package/dist/rpc/schemas.js.map +1 -0
  47. package/docs/package-schemas.md +52 -0
  48. package/docs/x402-approval-spec.md +530 -0
  49. package/docs/x402-state-machines.md +241 -0
  50. package/package.json +101 -0
@@ -0,0 +1,339 @@
1
+ import { z } from "zod";
2
+ export declare const RPC_ERROR_CODES: readonly ["INVALID_TRANSACTION", "NOT_SPONSORED", "SENDER_NONCE_STALE", "SENDER_NONCE_DUPLICATE", "SENDER_NONCE_GAP", "NONCE_CONFLICT", "SPONSOR_NONCE_STALE", "SPONSOR_NONCE_DUPLICATE", "BROADCAST_FAILED", "TX_BROADCAST_ERROR", "SETTLEMENT_FAILED", "INTERNAL_ERROR", "INSUFFICIENT_FUNDS", "CLIENT_NONCE_CONFLICT", "CLIENT_BAD_NONCE", "TOO_MUCH_CHAINING"];
3
+ export declare const RpcErrorCodeSchema: z.ZodEnum<{
4
+ INVALID_TRANSACTION: "INVALID_TRANSACTION";
5
+ NOT_SPONSORED: "NOT_SPONSORED";
6
+ SENDER_NONCE_STALE: "SENDER_NONCE_STALE";
7
+ SENDER_NONCE_DUPLICATE: "SENDER_NONCE_DUPLICATE";
8
+ SENDER_NONCE_GAP: "SENDER_NONCE_GAP";
9
+ NONCE_CONFLICT: "NONCE_CONFLICT";
10
+ SPONSOR_NONCE_STALE: "SPONSOR_NONCE_STALE";
11
+ SPONSOR_NONCE_DUPLICATE: "SPONSOR_NONCE_DUPLICATE";
12
+ BROADCAST_FAILED: "BROADCAST_FAILED";
13
+ TX_BROADCAST_ERROR: "TX_BROADCAST_ERROR";
14
+ SETTLEMENT_FAILED: "SETTLEMENT_FAILED";
15
+ INTERNAL_ERROR: "INTERNAL_ERROR";
16
+ INSUFFICIENT_FUNDS: "INSUFFICIENT_FUNDS";
17
+ CLIENT_NONCE_CONFLICT: "CLIENT_NONCE_CONFLICT";
18
+ CLIENT_BAD_NONCE: "CLIENT_BAD_NONCE";
19
+ TOO_MUCH_CHAINING: "TOO_MUCH_CHAINING";
20
+ }>;
21
+ export declare const RpcSettleOptionsSchema: z.ZodObject<{
22
+ expectedRecipient: z.ZodString;
23
+ minAmount: z.ZodString;
24
+ tokenType: z.ZodOptional<z.ZodString>;
25
+ expectedSender: z.ZodOptional<z.ZodString>;
26
+ resource: z.ZodOptional<z.ZodString>;
27
+ method: z.ZodOptional<z.ZodEnum<{
28
+ GET: "GET";
29
+ POST: "POST";
30
+ PUT: "PUT";
31
+ PATCH: "PATCH";
32
+ DELETE: "DELETE";
33
+ }>>;
34
+ maxTimeoutSeconds: z.ZodOptional<z.ZodNumber>;
35
+ }, z.core.$strip>;
36
+ export declare const RpcSenderNonceInfoSchema: z.ZodObject<{
37
+ provided: z.ZodNumber;
38
+ expected: z.ZodNumber;
39
+ healthy: z.ZodBoolean;
40
+ warning: z.ZodOptional<z.ZodString>;
41
+ }, z.core.$strip>;
42
+ export declare const RpcSubmitPaymentWarningSchema: z.ZodObject<{
43
+ code: z.ZodLiteral<"SENDER_NONCE_GAP">;
44
+ detail: z.ZodString;
45
+ senderNonce: z.ZodObject<{
46
+ provided: z.ZodNumber;
47
+ expected: z.ZodNumber;
48
+ lastSeen: z.ZodNumber;
49
+ }, z.core.$strip>;
50
+ help: z.ZodString;
51
+ action: z.ZodString;
52
+ }, z.core.$strip>;
53
+ export declare const RpcSubmitPaymentRequestSchema: z.ZodObject<{
54
+ txHex: z.ZodString;
55
+ settle: z.ZodOptional<z.ZodObject<{
56
+ expectedRecipient: z.ZodString;
57
+ minAmount: z.ZodString;
58
+ tokenType: z.ZodOptional<z.ZodString>;
59
+ expectedSender: z.ZodOptional<z.ZodString>;
60
+ resource: z.ZodOptional<z.ZodString>;
61
+ method: z.ZodOptional<z.ZodEnum<{
62
+ GET: "GET";
63
+ POST: "POST";
64
+ PUT: "PUT";
65
+ PATCH: "PATCH";
66
+ DELETE: "DELETE";
67
+ }>>;
68
+ maxTimeoutSeconds: z.ZodOptional<z.ZodNumber>;
69
+ }, z.core.$strip>>;
70
+ }, z.core.$strip>;
71
+ export declare const RpcSubmitPaymentAcceptedSchema: z.ZodObject<{
72
+ accepted: z.ZodLiteral<true>;
73
+ paymentId: z.ZodString;
74
+ status: z.ZodUnion<readonly [z.ZodEnum<{
75
+ submitted: "submitted";
76
+ queued: "queued";
77
+ broadcasting: "broadcasting";
78
+ mempool: "mempool";
79
+ }>, z.ZodLiteral<"queued_with_warning">]>;
80
+ senderNonce: z.ZodOptional<z.ZodObject<{
81
+ provided: z.ZodNumber;
82
+ expected: z.ZodNumber;
83
+ healthy: z.ZodBoolean;
84
+ warning: z.ZodOptional<z.ZodString>;
85
+ }, z.core.$strip>>;
86
+ warning: z.ZodOptional<z.ZodObject<{
87
+ code: z.ZodLiteral<"SENDER_NONCE_GAP">;
88
+ detail: z.ZodString;
89
+ senderNonce: z.ZodObject<{
90
+ provided: z.ZodNumber;
91
+ expected: z.ZodNumber;
92
+ lastSeen: z.ZodNumber;
93
+ }, z.core.$strip>;
94
+ help: z.ZodString;
95
+ action: z.ZodString;
96
+ }, z.core.$strip>>;
97
+ checkStatusUrl: z.ZodOptional<z.ZodString>;
98
+ }, z.core.$strip>;
99
+ export declare const RpcSubmitPaymentRejectedSchema: z.ZodObject<{
100
+ accepted: z.ZodLiteral<false>;
101
+ error: z.ZodString;
102
+ code: z.ZodOptional<z.ZodEnum<{
103
+ INVALID_TRANSACTION: "INVALID_TRANSACTION";
104
+ NOT_SPONSORED: "NOT_SPONSORED";
105
+ SENDER_NONCE_STALE: "SENDER_NONCE_STALE";
106
+ SENDER_NONCE_DUPLICATE: "SENDER_NONCE_DUPLICATE";
107
+ SENDER_NONCE_GAP: "SENDER_NONCE_GAP";
108
+ NONCE_CONFLICT: "NONCE_CONFLICT";
109
+ SPONSOR_NONCE_STALE: "SPONSOR_NONCE_STALE";
110
+ SPONSOR_NONCE_DUPLICATE: "SPONSOR_NONCE_DUPLICATE";
111
+ BROADCAST_FAILED: "BROADCAST_FAILED";
112
+ TX_BROADCAST_ERROR: "TX_BROADCAST_ERROR";
113
+ SETTLEMENT_FAILED: "SETTLEMENT_FAILED";
114
+ INTERNAL_ERROR: "INTERNAL_ERROR";
115
+ INSUFFICIENT_FUNDS: "INSUFFICIENT_FUNDS";
116
+ CLIENT_NONCE_CONFLICT: "CLIENT_NONCE_CONFLICT";
117
+ CLIENT_BAD_NONCE: "CLIENT_BAD_NONCE";
118
+ TOO_MUCH_CHAINING: "TOO_MUCH_CHAINING";
119
+ }>>;
120
+ retryable: z.ZodOptional<z.ZodBoolean>;
121
+ help: z.ZodOptional<z.ZodString>;
122
+ action: z.ZodOptional<z.ZodString>;
123
+ senderNonce: z.ZodOptional<z.ZodObject<{
124
+ provided: z.ZodNumber;
125
+ expected: z.ZodNumber;
126
+ healthy: z.ZodBoolean;
127
+ warning: z.ZodOptional<z.ZodString>;
128
+ }, z.core.$strip>>;
129
+ }, z.core.$strip>;
130
+ export declare const RpcSubmitPaymentResultSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
131
+ accepted: z.ZodLiteral<true>;
132
+ paymentId: z.ZodString;
133
+ status: z.ZodUnion<readonly [z.ZodEnum<{
134
+ submitted: "submitted";
135
+ queued: "queued";
136
+ broadcasting: "broadcasting";
137
+ mempool: "mempool";
138
+ }>, z.ZodLiteral<"queued_with_warning">]>;
139
+ senderNonce: z.ZodOptional<z.ZodObject<{
140
+ provided: z.ZodNumber;
141
+ expected: z.ZodNumber;
142
+ healthy: z.ZodBoolean;
143
+ warning: z.ZodOptional<z.ZodString>;
144
+ }, z.core.$strip>>;
145
+ warning: z.ZodOptional<z.ZodObject<{
146
+ code: z.ZodLiteral<"SENDER_NONCE_GAP">;
147
+ detail: z.ZodString;
148
+ senderNonce: z.ZodObject<{
149
+ provided: z.ZodNumber;
150
+ expected: z.ZodNumber;
151
+ lastSeen: z.ZodNumber;
152
+ }, z.core.$strip>;
153
+ help: z.ZodString;
154
+ action: z.ZodString;
155
+ }, z.core.$strip>>;
156
+ checkStatusUrl: z.ZodOptional<z.ZodString>;
157
+ }, z.core.$strip>, z.ZodObject<{
158
+ accepted: z.ZodLiteral<false>;
159
+ error: z.ZodString;
160
+ code: z.ZodOptional<z.ZodEnum<{
161
+ INVALID_TRANSACTION: "INVALID_TRANSACTION";
162
+ NOT_SPONSORED: "NOT_SPONSORED";
163
+ SENDER_NONCE_STALE: "SENDER_NONCE_STALE";
164
+ SENDER_NONCE_DUPLICATE: "SENDER_NONCE_DUPLICATE";
165
+ SENDER_NONCE_GAP: "SENDER_NONCE_GAP";
166
+ NONCE_CONFLICT: "NONCE_CONFLICT";
167
+ SPONSOR_NONCE_STALE: "SPONSOR_NONCE_STALE";
168
+ SPONSOR_NONCE_DUPLICATE: "SPONSOR_NONCE_DUPLICATE";
169
+ BROADCAST_FAILED: "BROADCAST_FAILED";
170
+ TX_BROADCAST_ERROR: "TX_BROADCAST_ERROR";
171
+ SETTLEMENT_FAILED: "SETTLEMENT_FAILED";
172
+ INTERNAL_ERROR: "INTERNAL_ERROR";
173
+ INSUFFICIENT_FUNDS: "INSUFFICIENT_FUNDS";
174
+ CLIENT_NONCE_CONFLICT: "CLIENT_NONCE_CONFLICT";
175
+ CLIENT_BAD_NONCE: "CLIENT_BAD_NONCE";
176
+ TOO_MUCH_CHAINING: "TOO_MUCH_CHAINING";
177
+ }>>;
178
+ retryable: z.ZodOptional<z.ZodBoolean>;
179
+ help: z.ZodOptional<z.ZodString>;
180
+ action: z.ZodOptional<z.ZodString>;
181
+ senderNonce: z.ZodOptional<z.ZodObject<{
182
+ provided: z.ZodNumber;
183
+ expected: z.ZodNumber;
184
+ healthy: z.ZodBoolean;
185
+ warning: z.ZodOptional<z.ZodString>;
186
+ }, z.core.$strip>>;
187
+ }, z.core.$strip>], "accepted">;
188
+ export declare const RpcCheckPaymentRequestSchema: z.ZodObject<{
189
+ paymentId: z.ZodString;
190
+ }, z.core.$strip>;
191
+ export declare const RpcCheckPaymentResultSchema: z.ZodObject<{
192
+ paymentId: z.ZodString;
193
+ status: z.ZodEnum<{
194
+ submitted: "submitted";
195
+ queued: "queued";
196
+ broadcasting: "broadcasting";
197
+ mempool: "mempool";
198
+ confirmed: "confirmed";
199
+ failed: "failed";
200
+ replaced: "replaced";
201
+ not_found: "not_found";
202
+ }>;
203
+ txid: z.ZodOptional<z.ZodString>;
204
+ blockHeight: z.ZodOptional<z.ZodNumber>;
205
+ confirmedAt: z.ZodOptional<z.ZodString>;
206
+ explorerUrl: z.ZodOptional<z.ZodString>;
207
+ error: z.ZodOptional<z.ZodString>;
208
+ errorCode: z.ZodOptional<z.ZodEnum<{
209
+ INVALID_TRANSACTION: "INVALID_TRANSACTION";
210
+ NOT_SPONSORED: "NOT_SPONSORED";
211
+ SENDER_NONCE_STALE: "SENDER_NONCE_STALE";
212
+ SENDER_NONCE_DUPLICATE: "SENDER_NONCE_DUPLICATE";
213
+ SENDER_NONCE_GAP: "SENDER_NONCE_GAP";
214
+ NONCE_CONFLICT: "NONCE_CONFLICT";
215
+ SPONSOR_NONCE_STALE: "SPONSOR_NONCE_STALE";
216
+ SPONSOR_NONCE_DUPLICATE: "SPONSOR_NONCE_DUPLICATE";
217
+ BROADCAST_FAILED: "BROADCAST_FAILED";
218
+ TX_BROADCAST_ERROR: "TX_BROADCAST_ERROR";
219
+ SETTLEMENT_FAILED: "SETTLEMENT_FAILED";
220
+ INTERNAL_ERROR: "INTERNAL_ERROR";
221
+ INSUFFICIENT_FUNDS: "INSUFFICIENT_FUNDS";
222
+ CLIENT_NONCE_CONFLICT: "CLIENT_NONCE_CONFLICT";
223
+ CLIENT_BAD_NONCE: "CLIENT_BAD_NONCE";
224
+ TOO_MUCH_CHAINING: "TOO_MUCH_CHAINING";
225
+ }>>;
226
+ retryable: z.ZodOptional<z.ZodBoolean>;
227
+ senderNonceInfo: z.ZodOptional<z.ZodObject<{
228
+ provided: z.ZodNumber;
229
+ expected: z.ZodNumber;
230
+ healthy: z.ZodBoolean;
231
+ warning: z.ZodOptional<z.ZodString>;
232
+ }, z.core.$strip>>;
233
+ }, z.core.$strip>;
234
+ export type RpcSubmitPaymentRequest = z.infer<typeof RpcSubmitPaymentRequestSchema>;
235
+ export type RpcSubmitPaymentResult = z.infer<typeof RpcSubmitPaymentResultSchema>;
236
+ export type RpcCheckPaymentRequest = z.infer<typeof RpcCheckPaymentRequestSchema>;
237
+ export type RpcCheckPaymentResult = z.infer<typeof RpcCheckPaymentResultSchema>;
238
+ export declare const SubmitPaymentRpcResponseSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
239
+ accepted: z.ZodLiteral<true>;
240
+ paymentId: z.ZodString;
241
+ status: z.ZodUnion<readonly [z.ZodEnum<{
242
+ submitted: "submitted";
243
+ queued: "queued";
244
+ broadcasting: "broadcasting";
245
+ mempool: "mempool";
246
+ }>, z.ZodLiteral<"queued_with_warning">]>;
247
+ senderNonce: z.ZodOptional<z.ZodObject<{
248
+ provided: z.ZodNumber;
249
+ expected: z.ZodNumber;
250
+ healthy: z.ZodBoolean;
251
+ warning: z.ZodOptional<z.ZodString>;
252
+ }, z.core.$strip>>;
253
+ warning: z.ZodOptional<z.ZodObject<{
254
+ code: z.ZodLiteral<"SENDER_NONCE_GAP">;
255
+ detail: z.ZodString;
256
+ senderNonce: z.ZodObject<{
257
+ provided: z.ZodNumber;
258
+ expected: z.ZodNumber;
259
+ lastSeen: z.ZodNumber;
260
+ }, z.core.$strip>;
261
+ help: z.ZodString;
262
+ action: z.ZodString;
263
+ }, z.core.$strip>>;
264
+ checkStatusUrl: z.ZodOptional<z.ZodString>;
265
+ }, z.core.$strip>, z.ZodObject<{
266
+ accepted: z.ZodLiteral<false>;
267
+ error: z.ZodString;
268
+ code: z.ZodOptional<z.ZodEnum<{
269
+ INVALID_TRANSACTION: "INVALID_TRANSACTION";
270
+ NOT_SPONSORED: "NOT_SPONSORED";
271
+ SENDER_NONCE_STALE: "SENDER_NONCE_STALE";
272
+ SENDER_NONCE_DUPLICATE: "SENDER_NONCE_DUPLICATE";
273
+ SENDER_NONCE_GAP: "SENDER_NONCE_GAP";
274
+ NONCE_CONFLICT: "NONCE_CONFLICT";
275
+ SPONSOR_NONCE_STALE: "SPONSOR_NONCE_STALE";
276
+ SPONSOR_NONCE_DUPLICATE: "SPONSOR_NONCE_DUPLICATE";
277
+ BROADCAST_FAILED: "BROADCAST_FAILED";
278
+ TX_BROADCAST_ERROR: "TX_BROADCAST_ERROR";
279
+ SETTLEMENT_FAILED: "SETTLEMENT_FAILED";
280
+ INTERNAL_ERROR: "INTERNAL_ERROR";
281
+ INSUFFICIENT_FUNDS: "INSUFFICIENT_FUNDS";
282
+ CLIENT_NONCE_CONFLICT: "CLIENT_NONCE_CONFLICT";
283
+ CLIENT_BAD_NONCE: "CLIENT_BAD_NONCE";
284
+ TOO_MUCH_CHAINING: "TOO_MUCH_CHAINING";
285
+ }>>;
286
+ retryable: z.ZodOptional<z.ZodBoolean>;
287
+ help: z.ZodOptional<z.ZodString>;
288
+ action: z.ZodOptional<z.ZodString>;
289
+ senderNonce: z.ZodOptional<z.ZodObject<{
290
+ provided: z.ZodNumber;
291
+ expected: z.ZodNumber;
292
+ healthy: z.ZodBoolean;
293
+ warning: z.ZodOptional<z.ZodString>;
294
+ }, z.core.$strip>>;
295
+ }, z.core.$strip>], "accepted">;
296
+ export declare const CheckPaymentRpcResponseSchema: z.ZodObject<{
297
+ paymentId: z.ZodString;
298
+ status: z.ZodEnum<{
299
+ submitted: "submitted";
300
+ queued: "queued";
301
+ broadcasting: "broadcasting";
302
+ mempool: "mempool";
303
+ confirmed: "confirmed";
304
+ failed: "failed";
305
+ replaced: "replaced";
306
+ not_found: "not_found";
307
+ }>;
308
+ txid: z.ZodOptional<z.ZodString>;
309
+ blockHeight: z.ZodOptional<z.ZodNumber>;
310
+ confirmedAt: z.ZodOptional<z.ZodString>;
311
+ explorerUrl: z.ZodOptional<z.ZodString>;
312
+ error: z.ZodOptional<z.ZodString>;
313
+ errorCode: z.ZodOptional<z.ZodEnum<{
314
+ INVALID_TRANSACTION: "INVALID_TRANSACTION";
315
+ NOT_SPONSORED: "NOT_SPONSORED";
316
+ SENDER_NONCE_STALE: "SENDER_NONCE_STALE";
317
+ SENDER_NONCE_DUPLICATE: "SENDER_NONCE_DUPLICATE";
318
+ SENDER_NONCE_GAP: "SENDER_NONCE_GAP";
319
+ NONCE_CONFLICT: "NONCE_CONFLICT";
320
+ SPONSOR_NONCE_STALE: "SPONSOR_NONCE_STALE";
321
+ SPONSOR_NONCE_DUPLICATE: "SPONSOR_NONCE_DUPLICATE";
322
+ BROADCAST_FAILED: "BROADCAST_FAILED";
323
+ TX_BROADCAST_ERROR: "TX_BROADCAST_ERROR";
324
+ SETTLEMENT_FAILED: "SETTLEMENT_FAILED";
325
+ INTERNAL_ERROR: "INTERNAL_ERROR";
326
+ INSUFFICIENT_FUNDS: "INSUFFICIENT_FUNDS";
327
+ CLIENT_NONCE_CONFLICT: "CLIENT_NONCE_CONFLICT";
328
+ CLIENT_BAD_NONCE: "CLIENT_BAD_NONCE";
329
+ TOO_MUCH_CHAINING: "TOO_MUCH_CHAINING";
330
+ }>>;
331
+ retryable: z.ZodOptional<z.ZodBoolean>;
332
+ senderNonceInfo: z.ZodOptional<z.ZodObject<{
333
+ provided: z.ZodNumber;
334
+ expected: z.ZodNumber;
335
+ healthy: z.ZodBoolean;
336
+ warning: z.ZodOptional<z.ZodString>;
337
+ }, z.core.$strip>>;
338
+ }, z.core.$strip>;
339
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/rpc/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,eAAO,MAAM,eAAe,oWAiBlB,CAAC;AAEX,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;EAA0B,CAAC;AAE1D,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;iBAQjC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;iBAKnC,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;;;;;;iBAUxC,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;iBAGxC,CAAC;AAEH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAOzC,CAAC;AAEH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQzC,CAAC;AAEH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BAGvC,CAAC;AAEH,eAAO,MAAM,4BAA4B;;iBAEvC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAWtC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACpF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAClF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAClF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BAA+B,CAAC;AAC3E,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA8B,CAAC"}
@@ -0,0 +1,91 @@
1
+ import { z } from "zod";
2
+ import { InFlightPaymentStateSchema, TrackedPaymentStateSchema } from "../core/enums.js";
3
+ import { AmountStringSchema, NonNegativeIntegerSchema, PaymentIdSchema, PositiveIntegerSchema, StacksAddressSchema, TransactionHexSchema, TransactionIdSchema, UrlSchema, } from "../core/primitives.js";
4
+ export const RPC_ERROR_CODES = [
5
+ "INVALID_TRANSACTION",
6
+ "NOT_SPONSORED",
7
+ "SENDER_NONCE_STALE",
8
+ "SENDER_NONCE_DUPLICATE",
9
+ "SENDER_NONCE_GAP",
10
+ "NONCE_CONFLICT",
11
+ "SPONSOR_NONCE_STALE",
12
+ "SPONSOR_NONCE_DUPLICATE",
13
+ "BROADCAST_FAILED",
14
+ "TX_BROADCAST_ERROR",
15
+ "SETTLEMENT_FAILED",
16
+ "INTERNAL_ERROR",
17
+ "INSUFFICIENT_FUNDS",
18
+ "CLIENT_NONCE_CONFLICT",
19
+ "CLIENT_BAD_NONCE",
20
+ "TOO_MUCH_CHAINING",
21
+ ];
22
+ export const RpcErrorCodeSchema = z.enum(RPC_ERROR_CODES);
23
+ export const RpcSettleOptionsSchema = z.object({
24
+ expectedRecipient: StacksAddressSchema,
25
+ minAmount: AmountStringSchema,
26
+ tokenType: z.string().min(1).optional(),
27
+ expectedSender: StacksAddressSchema.optional(),
28
+ resource: z.string().min(1).optional(),
29
+ method: z.enum(["GET", "POST", "PUT", "PATCH", "DELETE"]).optional(),
30
+ maxTimeoutSeconds: PositiveIntegerSchema.optional(),
31
+ });
32
+ export const RpcSenderNonceInfoSchema = z.object({
33
+ provided: NonNegativeIntegerSchema,
34
+ expected: NonNegativeIntegerSchema,
35
+ healthy: z.boolean(),
36
+ warning: z.string().optional(),
37
+ });
38
+ export const RpcSubmitPaymentWarningSchema = z.object({
39
+ code: z.literal("SENDER_NONCE_GAP"),
40
+ detail: z.string().min(1),
41
+ senderNonce: z.object({
42
+ provided: NonNegativeIntegerSchema,
43
+ expected: NonNegativeIntegerSchema,
44
+ lastSeen: NonNegativeIntegerSchema,
45
+ }),
46
+ help: z.string().min(1),
47
+ action: z.string().min(1),
48
+ });
49
+ export const RpcSubmitPaymentRequestSchema = z.object({
50
+ txHex: TransactionHexSchema,
51
+ settle: RpcSettleOptionsSchema.optional(),
52
+ });
53
+ export const RpcSubmitPaymentAcceptedSchema = z.object({
54
+ accepted: z.literal(true),
55
+ paymentId: PaymentIdSchema,
56
+ status: z.union([InFlightPaymentStateSchema, z.literal("queued_with_warning")]),
57
+ senderNonce: RpcSenderNonceInfoSchema.optional(),
58
+ warning: RpcSubmitPaymentWarningSchema.optional(),
59
+ checkStatusUrl: UrlSchema.optional(),
60
+ });
61
+ export const RpcSubmitPaymentRejectedSchema = z.object({
62
+ accepted: z.literal(false),
63
+ error: z.string().min(1),
64
+ code: RpcErrorCodeSchema.optional(),
65
+ retryable: z.boolean().optional(),
66
+ help: z.string().min(1).optional(),
67
+ action: z.string().min(1).optional(),
68
+ senderNonce: RpcSenderNonceInfoSchema.optional(),
69
+ });
70
+ export const RpcSubmitPaymentResultSchema = z.discriminatedUnion("accepted", [
71
+ RpcSubmitPaymentAcceptedSchema,
72
+ RpcSubmitPaymentRejectedSchema,
73
+ ]);
74
+ export const RpcCheckPaymentRequestSchema = z.object({
75
+ paymentId: PaymentIdSchema,
76
+ });
77
+ export const RpcCheckPaymentResultSchema = z.object({
78
+ paymentId: PaymentIdSchema,
79
+ status: TrackedPaymentStateSchema,
80
+ txid: TransactionIdSchema.optional(),
81
+ blockHeight: NonNegativeIntegerSchema.optional(),
82
+ confirmedAt: z.string().datetime({ offset: true }).optional(),
83
+ explorerUrl: UrlSchema.optional(),
84
+ error: z.string().min(1).optional(),
85
+ errorCode: RpcErrorCodeSchema.optional(),
86
+ retryable: z.boolean().optional(),
87
+ senderNonceInfo: RpcSenderNonceInfoSchema.optional(),
88
+ });
89
+ export const SubmitPaymentRpcResponseSchema = RpcSubmitPaymentResultSchema;
90
+ export const CheckPaymentRpcResponseSchema = RpcCheckPaymentResultSchema;
91
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/rpc/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ # Package Schemas
2
+
3
+ `@aibtc/tx-schemas` is a single-package ESM library with one semantic source of truth and explicit transport adapters.
4
+
5
+ ## Export Strategy
6
+
7
+ - `@aibtc/tx-schemas` exports the full public surface.
8
+ - `@aibtc/tx-schemas/core` exports canonical payment states, categories, terminal reasons, and shared primitives.
9
+ - `@aibtc/tx-schemas/core/enums` exports only state/category enums and maps.
10
+ - `@aibtc/tx-schemas/core/schemas` exports the canonical payment-status schema unions.
11
+ - `@aibtc/tx-schemas/terminal-reasons` exports terminal-reason enums and mappings.
12
+ - `@aibtc/tx-schemas/rpc` exports internal first-party RPC schemas.
13
+ - `@aibtc/tx-schemas/http` exports external HTTP schemas.
14
+
15
+ ## Naming Rules
16
+
17
+ - `state` means the canonical domain payment state.
18
+ - `category` means the canonical domain grouping derived from `state`.
19
+ - `reason` means a terminal domain reason and is only valid for terminal failure states.
20
+ - `status` is reserved for transport-level wire fields already used by the relay and service APIs.
21
+
22
+ This keeps domain semantics stable even when transports choose different field names.
23
+
24
+ ## Transport Boundaries
25
+
26
+ - `src/core` owns canonical semantics only.
27
+ - `src/rpc` owns first-party service-binding request and response shapes.
28
+ - `src/http` owns x402/HTTP request and response shapes plus polling/error envelopes.
29
+
30
+ RPC and HTTP may differ in field names, envelopes, and transport-specific error codes.
31
+
32
+ RPC and HTTP may not redefine:
33
+
34
+ - payment states
35
+ - payment categories
36
+ - terminal success versus terminal failure
37
+ - the meaning of `replaced` and `not_found`
38
+
39
+ ## Delivery Semantics
40
+
41
+ The approval spec establishes these package-level semantics:
42
+
43
+ - `confirmed` is the only canonical terminal-success state.
44
+ - `submitted`, `queued`, `broadcasting`, and `mempool` are in-flight states.
45
+ - `failed`, `replaced`, and `not_found` are terminal-failure states.
46
+ - resource delivery during in-flight states is transport/product policy, not a new domain state
47
+
48
+ ## Documented Assumptions
49
+
50
+ - Terminal reasons are normalized from the repo docs into stable package enums. Current relay/service error codes stay transport-specific in `rpc`.
51
+ - `paymentId` is treated as a relay-owned identifier with a `pay_` prefix because first-party polling endpoints require that prefix.
52
+ - Address and URL primitives are intentionally light-touch. This package validates shared API schemas, not chain-specific checksum rules.