@bankofai/x402-core 1.0.0-beta.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 (72) hide show
  1. package/README.md +294 -0
  2. package/dist/cjs/client/index.d.ts +149 -0
  3. package/dist/cjs/client/index.js +909 -0
  4. package/dist/cjs/client/index.js.map +1 -0
  5. package/dist/cjs/facilitator/index.d.ts +206 -0
  6. package/dist/cjs/facilitator/index.js +431 -0
  7. package/dist/cjs/facilitator/index.js.map +1 -0
  8. package/dist/cjs/http/index.d.ts +50 -0
  9. package/dist/cjs/http/index.js +1452 -0
  10. package/dist/cjs/http/index.js.map +1 -0
  11. package/dist/cjs/index.d.ts +3 -0
  12. package/dist/cjs/index.js +31 -0
  13. package/dist/cjs/index.js.map +1 -0
  14. package/dist/cjs/schemas/index.d.ts +891 -0
  15. package/dist/cjs/schemas/index.js +216 -0
  16. package/dist/cjs/schemas/index.js.map +1 -0
  17. package/dist/cjs/server/index.d.ts +79 -0
  18. package/dist/cjs/server/index.js +2568 -0
  19. package/dist/cjs/server/index.js.map +1 -0
  20. package/dist/cjs/types/index.d.ts +1 -0
  21. package/dist/cjs/types/index.js +97 -0
  22. package/dist/cjs/types/index.js.map +1 -0
  23. package/dist/cjs/types/v1/index.d.ts +1 -0
  24. package/dist/cjs/types/v1/index.js +19 -0
  25. package/dist/cjs/types/v1/index.js.map +1 -0
  26. package/dist/cjs/utils/index.d.ts +77 -0
  27. package/dist/cjs/utils/index.js +179 -0
  28. package/dist/cjs/utils/index.js.map +1 -0
  29. package/dist/cjs/x402Client-BgegfQgE.d.ts +1807 -0
  30. package/dist/cjs/x402Client-TQHctrG7.d.ts +1807 -0
  31. package/dist/esm/chunk-ABS7D6VX.mjs +145 -0
  32. package/dist/esm/chunk-ABS7D6VX.mjs.map +1 -0
  33. package/dist/esm/chunk-AGOUMC4P.mjs +68 -0
  34. package/dist/esm/chunk-AGOUMC4P.mjs.map +1 -0
  35. package/dist/esm/chunk-BJTO5JO5.mjs +11 -0
  36. package/dist/esm/chunk-BJTO5JO5.mjs.map +1 -0
  37. package/dist/esm/chunk-FPXAE3OS.mjs +161 -0
  38. package/dist/esm/chunk-FPXAE3OS.mjs.map +1 -0
  39. package/dist/esm/chunk-IL77TMJL.mjs +1275 -0
  40. package/dist/esm/chunk-IL77TMJL.mjs.map +1 -0
  41. package/dist/esm/chunk-VE37GDG2.mjs +7 -0
  42. package/dist/esm/chunk-VE37GDG2.mjs.map +1 -0
  43. package/dist/esm/client/index.d.mts +149 -0
  44. package/dist/esm/client/index.mjs +504 -0
  45. package/dist/esm/client/index.mjs.map +1 -0
  46. package/dist/esm/facilitator/index.d.mts +206 -0
  47. package/dist/esm/facilitator/index.mjs +399 -0
  48. package/dist/esm/facilitator/index.mjs.map +1 -0
  49. package/dist/esm/http/index.d.mts +50 -0
  50. package/dist/esm/http/index.mjs +35 -0
  51. package/dist/esm/http/index.mjs.map +1 -0
  52. package/dist/esm/index.d.mts +3 -0
  53. package/dist/esm/index.mjs +8 -0
  54. package/dist/esm/index.mjs.map +1 -0
  55. package/dist/esm/schemas/index.d.mts +891 -0
  56. package/dist/esm/schemas/index.mjs +70 -0
  57. package/dist/esm/schemas/index.mjs.map +1 -0
  58. package/dist/esm/server/index.d.mts +79 -0
  59. package/dist/esm/server/index.mjs +1318 -0
  60. package/dist/esm/server/index.mjs.map +1 -0
  61. package/dist/esm/types/index.d.mts +1 -0
  62. package/dist/esm/types/index.mjs +14 -0
  63. package/dist/esm/types/index.mjs.map +1 -0
  64. package/dist/esm/types/v1/index.d.mts +1 -0
  65. package/dist/esm/types/v1/index.mjs +1 -0
  66. package/dist/esm/types/v1/index.mjs.map +1 -0
  67. package/dist/esm/utils/index.d.mts +77 -0
  68. package/dist/esm/utils/index.mjs +28 -0
  69. package/dist/esm/utils/index.mjs.map +1 -0
  70. package/dist/esm/x402Client-BgegfQgE.d.mts +1807 -0
  71. package/dist/esm/x402Client-TQHctrG7.d.mts +1807 -0
  72. package/package.json +142 -0
@@ -0,0 +1,216 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/schemas/index.ts
21
+ var schemas_exports = {};
22
+ __export(schemas_exports, {
23
+ Any: () => Any,
24
+ NetworkSchema: () => NetworkSchema,
25
+ NetworkSchemaV1: () => NetworkSchemaV1,
26
+ NetworkSchemaV2: () => NetworkSchemaV2,
27
+ NonEmptyString: () => NonEmptyString,
28
+ OptionalAny: () => OptionalAny,
29
+ PaymentPayloadSchema: () => PaymentPayloadSchema,
30
+ PaymentPayloadV1Schema: () => PaymentPayloadV1Schema,
31
+ PaymentPayloadV2Schema: () => PaymentPayloadV2Schema,
32
+ PaymentRequiredSchema: () => PaymentRequiredSchema,
33
+ PaymentRequiredV1Schema: () => PaymentRequiredV1Schema,
34
+ PaymentRequiredV2Schema: () => PaymentRequiredV2Schema,
35
+ PaymentRequirementsSchema: () => PaymentRequirementsSchema,
36
+ PaymentRequirementsV1Schema: () => PaymentRequirementsV1Schema,
37
+ PaymentRequirementsV2Schema: () => PaymentRequirementsV2Schema,
38
+ ResourceInfoSchema: () => ResourceInfoSchema,
39
+ isPaymentPayload: () => isPaymentPayload,
40
+ isPaymentPayloadV1: () => isPaymentPayloadV1,
41
+ isPaymentPayloadV2: () => isPaymentPayloadV2,
42
+ isPaymentRequired: () => isPaymentRequired,
43
+ isPaymentRequiredV1: () => isPaymentRequiredV1,
44
+ isPaymentRequiredV2: () => isPaymentRequiredV2,
45
+ isPaymentRequirements: () => isPaymentRequirements,
46
+ isPaymentRequirementsV1: () => isPaymentRequirementsV1,
47
+ isPaymentRequirementsV2: () => isPaymentRequirementsV2,
48
+ parsePaymentPayload: () => parsePaymentPayload,
49
+ parsePaymentRequired: () => parsePaymentRequired,
50
+ parsePaymentRequirements: () => parsePaymentRequirements,
51
+ validatePaymentPayload: () => validatePaymentPayload,
52
+ validatePaymentRequired: () => validatePaymentRequired,
53
+ validatePaymentRequirements: () => validatePaymentRequirements,
54
+ z: () => import_zod2.z
55
+ });
56
+ module.exports = __toCommonJS(schemas_exports);
57
+ var import_zod = require("zod");
58
+ var import_zod2 = require("zod");
59
+ var NonEmptyString = import_zod.z.string().min(1);
60
+ var Any = import_zod.z.record(import_zod.z.unknown());
61
+ var OptionalAny = import_zod.z.record(import_zod.z.unknown()).optional().nullable();
62
+ var NetworkSchemaV1 = NonEmptyString;
63
+ var NetworkSchemaV2 = import_zod.z.string().min(3).refine((val) => val.includes(":"), {
64
+ message: "Network must be in CAIP-2 format (e.g., 'eip155:84532')"
65
+ });
66
+ var NetworkSchema = import_zod.z.union([NetworkSchemaV1, NetworkSchemaV2]);
67
+ var PRINTABLE_ASCII_REGEX = /^[\x20-\x7e]+$/;
68
+ var ResourceInfoSchema = import_zod.z.object({
69
+ url: NonEmptyString,
70
+ description: import_zod.z.string().optional(),
71
+ mimeType: import_zod.z.string().optional(),
72
+ serviceName: import_zod.z.string().min(1).max(32).regex(PRINTABLE_ASCII_REGEX).optional(),
73
+ tags: import_zod.z.array(import_zod.z.string().min(1).max(32).regex(PRINTABLE_ASCII_REGEX)).max(5).optional(),
74
+ iconUrl: import_zod.z.string().max(2048).optional()
75
+ });
76
+ var PaymentRequirementsV1Schema = import_zod.z.object({
77
+ scheme: NonEmptyString,
78
+ network: NetworkSchemaV1,
79
+ maxAmountRequired: NonEmptyString,
80
+ resource: NonEmptyString,
81
+ // URL string in V1
82
+ description: import_zod.z.string(),
83
+ mimeType: import_zod.z.string().optional(),
84
+ outputSchema: Any.optional().nullable(),
85
+ payTo: NonEmptyString,
86
+ maxTimeoutSeconds: import_zod.z.number().positive(),
87
+ asset: NonEmptyString,
88
+ extra: OptionalAny
89
+ });
90
+ var PaymentRequiredV1Schema = import_zod.z.object({
91
+ x402Version: import_zod.z.literal(1),
92
+ error: import_zod.z.string().optional(),
93
+ accepts: import_zod.z.array(PaymentRequirementsV1Schema).min(1)
94
+ });
95
+ var PaymentPayloadV1Schema = import_zod.z.object({
96
+ x402Version: import_zod.z.literal(1),
97
+ scheme: NonEmptyString,
98
+ network: NetworkSchemaV1,
99
+ payload: Any
100
+ });
101
+ var PaymentRequirementsV2Schema = import_zod.z.object({
102
+ scheme: NonEmptyString,
103
+ network: NetworkSchemaV2,
104
+ amount: NonEmptyString,
105
+ asset: NonEmptyString,
106
+ payTo: NonEmptyString,
107
+ maxTimeoutSeconds: import_zod.z.number().positive(),
108
+ extra: OptionalAny
109
+ });
110
+ var PaymentRequiredV2Schema = import_zod.z.object({
111
+ x402Version: import_zod.z.literal(2),
112
+ error: import_zod.z.string().optional(),
113
+ resource: ResourceInfoSchema,
114
+ accepts: import_zod.z.array(PaymentRequirementsV2Schema).min(1),
115
+ extensions: OptionalAny
116
+ });
117
+ var PaymentPayloadV2Schema = import_zod.z.object({
118
+ x402Version: import_zod.z.literal(2),
119
+ resource: ResourceInfoSchema.optional(),
120
+ accepted: PaymentRequirementsV2Schema,
121
+ payload: Any,
122
+ extensions: OptionalAny
123
+ });
124
+ var PaymentRequirementsSchema = import_zod.z.union([
125
+ PaymentRequirementsV1Schema,
126
+ PaymentRequirementsV2Schema
127
+ ]);
128
+ var PaymentRequiredSchema = import_zod.z.discriminatedUnion("x402Version", [
129
+ PaymentRequiredV1Schema,
130
+ PaymentRequiredV2Schema
131
+ ]);
132
+ var PaymentPayloadSchema = import_zod.z.discriminatedUnion("x402Version", [
133
+ PaymentPayloadV1Schema,
134
+ PaymentPayloadV2Schema
135
+ ]);
136
+ function parsePaymentRequired(value) {
137
+ return PaymentRequiredSchema.safeParse(value);
138
+ }
139
+ function validatePaymentRequired(value) {
140
+ return PaymentRequiredSchema.parse(value);
141
+ }
142
+ function isPaymentRequired(value) {
143
+ return PaymentRequiredSchema.safeParse(value).success;
144
+ }
145
+ function parsePaymentRequirements(value) {
146
+ return PaymentRequirementsSchema.safeParse(value);
147
+ }
148
+ function validatePaymentRequirements(value) {
149
+ return PaymentRequirementsSchema.parse(value);
150
+ }
151
+ function isPaymentRequirements(value) {
152
+ return PaymentRequirementsSchema.safeParse(value).success;
153
+ }
154
+ function parsePaymentPayload(value) {
155
+ return PaymentPayloadSchema.safeParse(value);
156
+ }
157
+ function validatePaymentPayload(value) {
158
+ return PaymentPayloadSchema.parse(value);
159
+ }
160
+ function isPaymentPayload(value) {
161
+ return PaymentPayloadSchema.safeParse(value).success;
162
+ }
163
+ function isPaymentRequiredV1(value) {
164
+ return PaymentRequiredV1Schema.safeParse(value).success;
165
+ }
166
+ function isPaymentRequiredV2(value) {
167
+ return PaymentRequiredV2Schema.safeParse(value).success;
168
+ }
169
+ function isPaymentRequirementsV1(value) {
170
+ return PaymentRequirementsV1Schema.safeParse(value).success;
171
+ }
172
+ function isPaymentRequirementsV2(value) {
173
+ return PaymentRequirementsV2Schema.safeParse(value).success;
174
+ }
175
+ function isPaymentPayloadV1(value) {
176
+ return PaymentPayloadV1Schema.safeParse(value).success;
177
+ }
178
+ function isPaymentPayloadV2(value) {
179
+ return PaymentPayloadV2Schema.safeParse(value).success;
180
+ }
181
+ // Annotate the CommonJS export names for ESM import in node:
182
+ 0 && (module.exports = {
183
+ Any,
184
+ NetworkSchema,
185
+ NetworkSchemaV1,
186
+ NetworkSchemaV2,
187
+ NonEmptyString,
188
+ OptionalAny,
189
+ PaymentPayloadSchema,
190
+ PaymentPayloadV1Schema,
191
+ PaymentPayloadV2Schema,
192
+ PaymentRequiredSchema,
193
+ PaymentRequiredV1Schema,
194
+ PaymentRequiredV2Schema,
195
+ PaymentRequirementsSchema,
196
+ PaymentRequirementsV1Schema,
197
+ PaymentRequirementsV2Schema,
198
+ ResourceInfoSchema,
199
+ isPaymentPayload,
200
+ isPaymentPayloadV1,
201
+ isPaymentPayloadV2,
202
+ isPaymentRequired,
203
+ isPaymentRequiredV1,
204
+ isPaymentRequiredV2,
205
+ isPaymentRequirements,
206
+ isPaymentRequirementsV1,
207
+ isPaymentRequirementsV2,
208
+ parsePaymentPayload,
209
+ parsePaymentRequired,
210
+ parsePaymentRequirements,
211
+ validatePaymentPayload,
212
+ validatePaymentRequired,
213
+ validatePaymentRequirements,
214
+ z
215
+ });
216
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/schemas/index.ts"],"sourcesContent":["import { z } from \"zod\";\n\n// ============================================================================\n// Reusable Primitive Schemas\n// ============================================================================\n\n/**\n * Non-empty string schema - a string with at least one character.\n * Used for required string fields that cannot be empty.\n */\nexport const NonEmptyString = z.string().min(1);\nexport type NonEmptyString = z.infer<typeof NonEmptyString>;\n\n/**\n * Any record schema - an object with unknown keys and values.\n * Used for scheme-specific payloads and other extensible objects.\n */\nexport const Any = z.record(z.unknown());\nexport type Any = z.infer<typeof Any>;\n\n/**\n * Optional any record schema - an optional object with unknown keys and values.\n * Used for optional extension fields like `extra` and `extensions`.\n */\nexport const OptionalAny = z.record(z.unknown()).optional().nullable();\nexport type OptionalAny = z.infer<typeof OptionalAny>;\n\n// ============================================================================\n// Network Schemas\n// ============================================================================\n\n/**\n * Network identifier schema for V1 - loose validation.\n * V1 accepts any non-empty string for backwards compatibility.\n */\nexport const NetworkSchemaV1 = NonEmptyString;\nexport type NetworkV1 = z.infer<typeof NetworkSchemaV1>;\n\n/**\n * Network identifier schema for V2 - CAIP-2 format validation.\n * V2 requires minimum length of 3 and a colon separator (e.g., \"eip155:84532\", \"solana:devnet\").\n */\nexport const NetworkSchemaV2 = z\n .string()\n .min(3)\n .refine(val => val.includes(\":\"), {\n message: \"Network must be in CAIP-2 format (e.g., 'eip155:84532')\",\n });\nexport type NetworkV2 = z.infer<typeof NetworkSchemaV2>;\n\n/**\n * Union network schema - accepts either V1 or V2 format.\n */\nexport const NetworkSchema = z.union([NetworkSchemaV1, NetworkSchemaV2]);\nexport type Network = z.infer<typeof NetworkSchema>;\n\n// ============================================================================\n// Shared Schemas\n// ============================================================================\n\n/**\n * ResourceInfo schema for V2 - describes the protected resource.\n */\n// Printable ASCII (U+0020–U+007E) — matches the bazaar-facilitator\n// `isValidServiceName` / `sanitizeTags` regex. Constraining to ASCII keeps\n// the length cap consistent across TS / Python / Go (where String.length /\n// len() / len() otherwise diverge for multi-byte input).\nconst PRINTABLE_ASCII_REGEX = /^[\\x20-\\x7e]+$/;\n\nexport const ResourceInfoSchema = z.object({\n url: NonEmptyString,\n description: z.string().optional(),\n mimeType: z.string().optional(),\n serviceName: z.string().min(1).max(32).regex(PRINTABLE_ASCII_REGEX).optional(),\n tags: z.array(z.string().min(1).max(32).regex(PRINTABLE_ASCII_REGEX)).max(5).optional(),\n iconUrl: z.string().max(2048).optional(),\n});\nexport type ResourceInfo = z.infer<typeof ResourceInfoSchema>;\n\n// ============================================================================\n// V1 Schemas\n// ============================================================================\n\n/**\n * PaymentRequirements schema for V1.\n * V1 includes resource info directly in the requirements object.\n */\nexport const PaymentRequirementsV1Schema = z.object({\n scheme: NonEmptyString,\n network: NetworkSchemaV1,\n maxAmountRequired: NonEmptyString,\n resource: NonEmptyString, // URL string in V1\n description: z.string(),\n mimeType: z.string().optional(),\n outputSchema: Any.optional().nullable(),\n payTo: NonEmptyString,\n maxTimeoutSeconds: z.number().positive(),\n asset: NonEmptyString,\n extra: OptionalAny,\n});\nexport type PaymentRequirementsV1 = z.infer<typeof PaymentRequirementsV1Schema>;\n\n/**\n * PaymentRequired (402 response) schema for V1.\n * Contains payment requirements when a resource requires payment.\n */\nexport const PaymentRequiredV1Schema = z.object({\n x402Version: z.literal(1),\n error: z.string().optional(),\n accepts: z.array(PaymentRequirementsV1Schema).min(1),\n});\nexport type PaymentRequiredV1 = z.infer<typeof PaymentRequiredV1Schema>;\n\n/**\n * PaymentPayload schema for V1.\n * Contains the payment data sent by the client.\n */\nexport const PaymentPayloadV1Schema = z.object({\n x402Version: z.literal(1),\n scheme: NonEmptyString,\n network: NetworkSchemaV1,\n payload: Any,\n});\nexport type PaymentPayloadV1 = z.infer<typeof PaymentPayloadV1Schema>;\n\n// ============================================================================\n// V2 Schemas\n// ============================================================================\n\n/**\n * PaymentRequirements schema for V2.\n * V2 uses \"amount\" instead of \"maxAmountRequired\" and doesn't include resource info.\n */\nexport const PaymentRequirementsV2Schema = z.object({\n scheme: NonEmptyString,\n network: NetworkSchemaV2,\n amount: NonEmptyString,\n asset: NonEmptyString,\n payTo: NonEmptyString,\n maxTimeoutSeconds: z.number().positive(),\n extra: OptionalAny,\n});\nexport type PaymentRequirementsV2 = z.infer<typeof PaymentRequirementsV2Schema>;\n\n/**\n * PaymentRequired (402 response) schema for V2.\n * Contains payment requirements when a resource requires payment.\n */\nexport const PaymentRequiredV2Schema = z.object({\n x402Version: z.literal(2),\n error: z.string().optional(),\n resource: ResourceInfoSchema,\n accepts: z.array(PaymentRequirementsV2Schema).min(1),\n extensions: OptionalAny,\n});\nexport type PaymentRequiredV2 = z.infer<typeof PaymentRequiredV2Schema>;\n\n/**\n * PaymentPayload schema for V2.\n * Contains the payment data sent by the client.\n */\nexport const PaymentPayloadV2Schema = z.object({\n x402Version: z.literal(2),\n resource: ResourceInfoSchema.optional(),\n accepted: PaymentRequirementsV2Schema,\n payload: Any,\n extensions: OptionalAny,\n});\nexport type PaymentPayloadV2 = z.infer<typeof PaymentPayloadV2Schema>;\n\n// ============================================================================\n// Union Schemas (V1 | V2)\n// ============================================================================\n\n/**\n * PaymentRequirements union schema - accepts either V1 or V2 format.\n * Use this when you need to handle both versions.\n */\nexport const PaymentRequirementsSchema = z.union([\n PaymentRequirementsV1Schema,\n PaymentRequirementsV2Schema,\n]);\nexport type PaymentRequirements = z.infer<typeof PaymentRequirementsSchema>;\n\n/**\n * PaymentRequired union schema - accepts either V1 or V2 format.\n * Uses discriminated union on x402Version for efficient parsing.\n */\nexport const PaymentRequiredSchema = z.discriminatedUnion(\"x402Version\", [\n PaymentRequiredV1Schema,\n PaymentRequiredV2Schema,\n]);\nexport type PaymentRequired = z.infer<typeof PaymentRequiredSchema>;\n\n/**\n * PaymentPayload union schema - accepts either V1 or V2 format.\n * Uses discriminated union on x402Version for efficient parsing.\n */\nexport const PaymentPayloadSchema = z.discriminatedUnion(\"x402Version\", [\n PaymentPayloadV1Schema,\n PaymentPayloadV2Schema,\n]);\nexport type PaymentPayload = z.infer<typeof PaymentPayloadSchema>;\n\n// ============================================================================\n// Validation Functions\n// ============================================================================\n\n/**\n * Validates a PaymentRequired object (V1 or V2).\n *\n * @param value - The value to validate\n * @returns A result object with success status and data or error\n */\nexport function parsePaymentRequired(\n value: unknown,\n): z.SafeParseReturnType<unknown, PaymentRequired> {\n return PaymentRequiredSchema.safeParse(value);\n}\n\n/**\n * Validates a PaymentRequired object and throws on error.\n *\n * @param value - The value to validate\n * @returns The validated PaymentRequired\n * @throws ZodError if validation fails\n */\nexport function validatePaymentRequired(value: unknown): PaymentRequired {\n return PaymentRequiredSchema.parse(value);\n}\n\n/**\n * Type guard for PaymentRequired (V1 or V2).\n *\n * @param value - The value to check\n * @returns True if the value is a valid PaymentRequired\n */\nexport function isPaymentRequired(value: unknown): value is PaymentRequired {\n return PaymentRequiredSchema.safeParse(value).success;\n}\n\n/**\n * Validates a PaymentRequirements object (V1 or V2).\n *\n * @param value - The value to validate\n * @returns A result object with success status and data or error\n */\nexport function parsePaymentRequirements(\n value: unknown,\n): z.SafeParseReturnType<unknown, PaymentRequirements> {\n return PaymentRequirementsSchema.safeParse(value);\n}\n\n/**\n * Validates a PaymentRequirements object and throws on error.\n *\n * @param value - The value to validate\n * @returns The validated PaymentRequirements\n * @throws ZodError if validation fails\n */\nexport function validatePaymentRequirements(value: unknown): PaymentRequirements {\n return PaymentRequirementsSchema.parse(value);\n}\n\n/**\n * Type guard for PaymentRequirements (V1 or V2).\n *\n * @param value - The value to check\n * @returns True if the value is a valid PaymentRequirements\n */\nexport function isPaymentRequirements(value: unknown): value is PaymentRequirements {\n return PaymentRequirementsSchema.safeParse(value).success;\n}\n\n/**\n * Validates a PaymentPayload object (V1 or V2).\n *\n * @param value - The value to validate\n * @returns A result object with success status and data or error\n */\nexport function parsePaymentPayload(\n value: unknown,\n): z.SafeParseReturnType<unknown, PaymentPayload> {\n return PaymentPayloadSchema.safeParse(value);\n}\n\n/**\n * Validates a PaymentPayload object and throws on error.\n *\n * @param value - The value to validate\n * @returns The validated PaymentPayload\n * @throws ZodError if validation fails\n */\nexport function validatePaymentPayload(value: unknown): PaymentPayload {\n return PaymentPayloadSchema.parse(value);\n}\n\n/**\n * Type guard for PaymentPayload (V1 or V2).\n *\n * @param value - The value to check\n * @returns True if the value is a valid PaymentPayload\n */\nexport function isPaymentPayload(value: unknown): value is PaymentPayload {\n return PaymentPayloadSchema.safeParse(value).success;\n}\n\n// ============================================================================\n// Version-Specific Type Guards\n// ============================================================================\n\n/**\n * Type guard for PaymentRequiredV1.\n *\n * @param value - The value to check\n * @returns True if the value is a valid PaymentRequiredV1\n */\nexport function isPaymentRequiredV1(value: unknown): value is PaymentRequiredV1 {\n return PaymentRequiredV1Schema.safeParse(value).success;\n}\n\n/**\n * Type guard for PaymentRequiredV2.\n *\n * @param value - The value to check\n * @returns True if the value is a valid PaymentRequiredV2\n */\nexport function isPaymentRequiredV2(value: unknown): value is PaymentRequiredV2 {\n return PaymentRequiredV2Schema.safeParse(value).success;\n}\n\n/**\n * Type guard for PaymentRequirementsV1.\n *\n * @param value - The value to check\n * @returns True if the value is a valid PaymentRequirementsV1\n */\nexport function isPaymentRequirementsV1(value: unknown): value is PaymentRequirementsV1 {\n return PaymentRequirementsV1Schema.safeParse(value).success;\n}\n\n/**\n * Type guard for PaymentRequirementsV2.\n *\n * @param value - The value to check\n * @returns True if the value is a valid PaymentRequirementsV2\n */\nexport function isPaymentRequirementsV2(value: unknown): value is PaymentRequirementsV2 {\n return PaymentRequirementsV2Schema.safeParse(value).success;\n}\n\n/**\n * Type guard for PaymentPayloadV1.\n *\n * @param value - The value to check\n * @returns True if the value is a valid PaymentPayloadV1\n */\nexport function isPaymentPayloadV1(value: unknown): value is PaymentPayloadV1 {\n return PaymentPayloadV1Schema.safeParse(value).success;\n}\n\n/**\n * Type guard for PaymentPayloadV2.\n *\n * @param value - The value to check\n * @returns True if the value is a valid PaymentPayloadV2\n */\nexport function isPaymentPayloadV2(value: unknown): value is PaymentPayloadV2 {\n return PaymentPayloadV2Schema.safeParse(value).success;\n}\n\n// ============================================================================\n// Re-export zod for convenience\n// ============================================================================\n\nexport { z } from \"zod\";\n"],"mappings":"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","names":["import_zod"]}
@@ -0,0 +1,79 @@
1
+ import { a as PaymentRequirements, S as SettleResponse } from '../x402Client-TQHctrG7.js';
2
+ export { a5 as AfterSettleHook, a2 as AfterVerifyHook, a4 as BeforeSettleHook, a1 as BeforeVerifyHook, C as CompiledRoute, _ as ExtensionValidationResult, y as FacilitatorClient, z as FacilitatorConfig, A as FacilitatorResponseError, H as HTTPAdapter, w as HTTPFacilitatorClient, g as HTTPProcessResult, d as HTTPRequestContext, m as HTTPResponseBody, f as HTTPResponseInstructions, e as HTTPTransportContext, a6 as OnSettleFailureHook, a7 as OnVerifiedPaymentCanceledHook, a3 as OnVerifyFailureHook, Y as PaymentCancellationDispatcher, I as PaymentRequiredContext, h as PaywallConfig, i as PaywallProvider, q as ProcessSettleFailureResponse, o as ProcessSettleResultResponse, p as ProcessSettleSuccessResponse, t as ProtectedRequestHook, G as ResourceConfig, a0 as ResourceVerifyRespone, R as RouteConfig, s as RouteConfigurationError, r as RouteValidationError, k as RoutesConfig, ac as SETTLEMENT_OVERRIDES_HEADER, a8 as SchemeEnrichPaymentRequiredResponseHook, aa as SchemeEnrichSettlementPayloadHook, ab as SchemeEnrichSettlementResponseHook, a9 as SchemePaymentRequiredContext, M as SettleContext, Q as SettleFailureContext, O as SettleResultContext, n as SettlementFailedResponseBody, Z as SettlementOverrides, $ as SkipHandlerDirective, U as UnpaidResponseBody, X as VerifiedPaymentCancelOptions, T as VerifiedPaymentCanceledContext, W as VerifiedPaymentCancellationReason, J as VerifyContext, L as VerifyFailureContext, K as VerifyResultContext, ad as checkIfBazaarNeeded, B as getFacilitatorResponseError, x as x402HTTPResourceServer, E as x402ResourceServer } from '../x402Client-TQHctrG7.js';
3
+
4
+ /**
5
+ * True when a string field is treated as unset and may be filled by `enrichPaymentRequiredResponse`.
6
+ *
7
+ * @param value - Candidate string from `PaymentRequirements` (e.g. `payTo`, `amount`, `asset`)
8
+ * @returns Whether the field counts as vacant (empty or whitespace-only)
9
+ */
10
+ declare function isVacantStringField(value: string): boolean;
11
+ /**
12
+ * Deep snapshot of `accepts` entries before any `enrichPaymentRequiredResponse` runs.
13
+ *
14
+ * @param requirements - Payment requirement rows to clone
15
+ * @returns Cloned requirements suitable as an immutable baseline for policy checks
16
+ */
17
+ declare function snapshotPaymentRequirementsList(requirements: PaymentRequirements[]): PaymentRequirements[];
18
+ /**
19
+ * After extension enrichment, each `accepts[i]` must still match the baseline except that
20
+ * **`payTo`**, **`amount`**, and **`asset`** may change only when the baseline value is vacant
21
+ * (whitespace-only string). **`scheme`**, **`network`**, and **`maxTimeoutSeconds`** are never
22
+ * writable by extensions. **`extra`** may gain new keys; values for keys present in the baseline
23
+ * must be unchanged (deep-equal).
24
+ *
25
+ * @param baseline - Snapshot taken before any enrich hooks for this response
26
+ * @param current - Live `accepts` entries after an extension enrich step
27
+ * @param extensionKey - Registered extension key (for error messages)
28
+ * @returns Nothing; throws if the policy is violated
29
+ */
30
+ declare function assertAcceptsAllowlistedAfterExtensionEnrich(baseline: PaymentRequirements[], current: PaymentRequirements[], extensionKey: string): void;
31
+ /**
32
+ * Ensures scheme 402 enrichment only adds `extra` keys to matching accepts.
33
+ *
34
+ * @param baseline - Snapshot before the scheme enrich step
35
+ * @param current - Live `accepts` entries after scheme enrichment
36
+ * @param scheme - Scheme whose hook was invoked
37
+ * @param network - Network whose hook was invoked
38
+ */
39
+ declare function assertAcceptsAdditiveExtraAfterSchemeEnrich(baseline: PaymentRequirements[], current: PaymentRequirements[], scheme: string, network: string): void;
40
+ /**
41
+ * Immutable subset of {@link SettleResponse} compared across settlement extension enrich.
42
+ */
43
+ type SettleResponseCoreSnapshot = Pick<SettleResponse, "success" | "transaction" | "network" | "amount" | "payer" | "errorReason" | "errorMessage">;
44
+ /**
45
+ * Captures facilitator-settled fields that extensions must not rewrite.
46
+ *
47
+ * @param result - Settlement response from the facilitator
48
+ * @returns Plain snapshot of core fields for later comparison
49
+ */
50
+ declare function snapshotSettleResponseCore(result: SettleResponse): SettleResponseCoreSnapshot;
51
+ /**
52
+ * Ensures `enrichSettlementResponse` did not rewrite facilitator outcome fields; only
53
+ * `extensions` may be populated via the merger (in addition to in-place adds on `extensions`).
54
+ *
55
+ * @param before - Snapshot taken before extension settlement enrich
56
+ * @param after - Live settlement result after an extension enrich step
57
+ * @param extensionKey - Registered extension key (for error messages)
58
+ * @returns Nothing; throws if a core field changed
59
+ */
60
+ declare function assertSettleResponseCoreUnchanged(before: SettleResponseCoreSnapshot, after: SettleResponse, extensionKey: string): void;
61
+ /**
62
+ * Ensures scheme settlement-payload enrichment only adds server-owned fields.
63
+ *
64
+ * @param payload - Existing scheme payload before enrichment
65
+ * @param enrichment - Fields returned by the scheme enrichment hook
66
+ * @param callerLabel - Hook source label used in policy error messages
67
+ */
68
+ declare function assertAdditivePayloadEnrichment(payload: Record<string, unknown>, enrichment: Record<string, unknown>, callerLabel: string): void;
69
+ /**
70
+ * Ensures scheme response enrichment only adds new `extra` fields, including nested fields
71
+ * below existing objects.
72
+ *
73
+ * @param extra - Existing settlement extra fields
74
+ * @param enrichment - Fields returned by the scheme response enrichment hook
75
+ * @param callerLabel - Hook label used in policy error messages
76
+ */
77
+ declare function assertAdditiveSettlementExtra(extra: Record<string, unknown>, enrichment: Record<string, unknown>, callerLabel: string): void;
78
+
79
+ export { type SettleResponseCoreSnapshot, assertAcceptsAdditiveExtraAfterSchemeEnrich, assertAcceptsAllowlistedAfterExtensionEnrich, assertAdditivePayloadEnrichment, assertAdditiveSettlementExtra, assertSettleResponseCoreUnchanged, isVacantStringField, snapshotPaymentRequirementsList, snapshotSettleResponseCore };