@marcohefti/request-network-api-client 0.5.12 → 0.6.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 (82) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/domains/currencies/v1/index.js +288 -0
  3. package/dist/cjs/domains/currencies/v1/index.js.map +1 -0
  4. package/dist/cjs/domains/pay/index.js +251 -0
  5. package/dist/cjs/domains/pay/index.js.map +1 -0
  6. package/dist/cjs/domains/pay/v1/index.js +241 -0
  7. package/dist/cjs/domains/pay/v1/index.js.map +1 -0
  8. package/dist/cjs/domains/payer/v1/index.js +355 -0
  9. package/dist/cjs/domains/payer/v1/index.js.map +1 -0
  10. package/dist/cjs/domains/payer/v2/index.js +355 -0
  11. package/dist/cjs/domains/payer/v2/index.js.map +1 -0
  12. package/dist/cjs/domains/payments/index.js +274 -0
  13. package/dist/cjs/domains/payments/index.js.map +1 -0
  14. package/dist/cjs/domains/requests/index.js +38 -10
  15. package/dist/cjs/domains/requests/index.js.map +1 -1
  16. package/dist/cjs/domains/requests/v1/index.js +499 -0
  17. package/dist/cjs/domains/requests/v1/index.js.map +1 -0
  18. package/dist/cjs/domains/secure-payments/index.js +248 -0
  19. package/dist/cjs/domains/secure-payments/index.js.map +1 -0
  20. package/dist/cjs/index.js +234 -242
  21. package/dist/cjs/index.js.map +1 -1
  22. package/dist/esm/{index-DJGHELE1.d.mts → currencies.v1.facade-ROQlpyCp.d.mts} +2 -34
  23. package/dist/esm/domains/client-ids/index.d.mts +2 -2
  24. package/dist/esm/domains/currencies/index.d.mts +3 -2
  25. package/dist/esm/domains/currencies/v1/index.d.mts +3 -0
  26. package/dist/esm/domains/currencies/v1/index.js +286 -0
  27. package/dist/esm/domains/currencies/v1/index.js.map +1 -0
  28. package/dist/esm/domains/pay/index.d.mts +3 -0
  29. package/dist/esm/domains/pay/index.js +248 -0
  30. package/dist/esm/domains/pay/index.js.map +1 -0
  31. package/dist/esm/domains/pay/v1/index.d.mts +2 -0
  32. package/dist/esm/domains/pay/v1/index.js +239 -0
  33. package/dist/esm/domains/pay/v1/index.js.map +1 -0
  34. package/dist/esm/domains/payer/index.d.mts +4 -2
  35. package/dist/esm/domains/payer/v1/index.d.mts +2 -0
  36. package/dist/esm/domains/payer/v1/index.js +353 -0
  37. package/dist/esm/domains/payer/v1/index.js.map +1 -0
  38. package/dist/esm/domains/payer/v2/index.d.mts +2 -0
  39. package/dist/esm/domains/payer/v2/index.js +353 -0
  40. package/dist/esm/domains/payer/v2/index.js.map +1 -0
  41. package/dist/esm/domains/payments/index.d.mts +3 -0
  42. package/dist/esm/domains/payments/index.js +272 -0
  43. package/dist/esm/domains/payments/index.js.map +1 -0
  44. package/dist/esm/domains/payouts/index.d.mts +2 -2
  45. package/dist/esm/domains/requests/index.d.mts +3 -2
  46. package/dist/esm/domains/requests/index.js +38 -10
  47. package/dist/esm/domains/requests/index.js.map +1 -1
  48. package/dist/esm/domains/requests/v1/index.d.mts +3 -0
  49. package/dist/esm/domains/requests/v1/index.js +497 -0
  50. package/dist/esm/domains/requests/v1/index.js.map +1 -0
  51. package/dist/esm/domains/secure-payments/index.d.mts +2 -0
  52. package/dist/esm/domains/secure-payments/index.js +246 -0
  53. package/dist/esm/domains/secure-payments/index.js.map +1 -0
  54. package/dist/esm/index-4zmukpkJ.d.mts +12 -0
  55. package/dist/esm/index-BPikysYP.d.mts +10 -0
  56. package/dist/esm/index-BlEg0bI1.d.mts +25 -0
  57. package/dist/esm/{index-hYoC2ndH.d.mts → index-CBcZqEQp.d.mts} +1 -1
  58. package/dist/esm/index-CS9UrTd6.d.mts +10 -0
  59. package/dist/esm/index-CeMw0yOZ.d.mts +3393 -0
  60. package/dist/esm/index-DPVFRK3h.d.mts +36 -0
  61. package/dist/esm/{index-DbnV_D6L.d.mts → index-DPx06HBi.d.mts} +18 -58
  62. package/dist/esm/index-DZ0iw_Xz.d.mts +10 -0
  63. package/dist/esm/index-DpFThmL3.d.mts +57 -0
  64. package/dist/esm/{index-y1nxa55y.d.mts → index-DuMayMNI.d.mts} +1 -1
  65. package/dist/esm/index-Kx46FKbk.d.mts +38 -0
  66. package/dist/esm/index-srhKdWh7.d.mts +21 -0
  67. package/dist/esm/index.d.mts +31 -3520
  68. package/dist/esm/index.js +234 -242
  69. package/dist/esm/index.js.map +1 -1
  70. package/dist/esm/{openapi-types-CQ1z27_K.d.mts → openapi-types-JhYQOcil.d.mts} +252 -117
  71. package/dist/esm/pay.v1.facade-wxvuDX9t.d.mts +17 -0
  72. package/dist/esm/payer.v1.facade-Rcl1BBPl.d.mts +31 -0
  73. package/dist/esm/payer.v2.facade-BqcIOIBY.d.mts +31 -0
  74. package/dist/esm/request.helpers-DgzNANMt.d.mts +51 -0
  75. package/package.json +6 -6
  76. package/dist/cjs/domains/payee-destination/index.js +0 -276
  77. package/dist/cjs/domains/payee-destination/index.js.map +0 -1
  78. package/dist/esm/domains/payee-destination/index.d.mts +0 -2
  79. package/dist/esm/domains/payee-destination/index.js +0 -274
  80. package/dist/esm/domains/payee-destination/index.js.map +0 -1
  81. package/dist/esm/index-DJjp2Jbk.d.mts +0 -79
  82. package/dist/esm/index-DQIf9k5x.d.mts +0 -31
@@ -0,0 +1,274 @@
1
+ 'use strict';
2
+
3
+ var zod = require('zod');
4
+
5
+ // src/domains/payments/payments.schemas.ts
6
+
7
+ // src/validation/schema.registry.ts
8
+ function serialiseKey(key) {
9
+ const variant = key.variant ?? "default";
10
+ const status = key.status?.toString() ?? "any";
11
+ return `${key.operationId}|${key.kind}|${variant}|${status}`;
12
+ }
13
+ var SchemaRegistry = class {
14
+ store = /* @__PURE__ */ new Map();
15
+ register(entry) {
16
+ const id = serialiseKey(entry.key);
17
+ this.store.set(id, entry);
18
+ }
19
+ get(key) {
20
+ const id = serialiseKey(key);
21
+ return this.store.get(id)?.schema;
22
+ }
23
+ /**
24
+ * Removes every registered schema — primarily useful in tests.
25
+ */
26
+ clear() {
27
+ this.store.clear();
28
+ }
29
+ };
30
+ var schemaRegistry = new SchemaRegistry();
31
+
32
+ // src/validation/generated/groups/v2/payments.schemas.generated.ts
33
+ var ErrorDetailSchema = zod.z.object({
34
+ message: zod.z.string(),
35
+ code: zod.z.string().optional(),
36
+ field: zod.z.string().optional(),
37
+ source: zod.z.object({
38
+ pointer: zod.z.string().optional(),
39
+ parameter: zod.z.string().optional()
40
+ }).passthrough().optional(),
41
+ meta: zod.z.record(zod.z.unknown()).optional()
42
+ }).passthrough();
43
+ var ErrorEnvelopeSchema = zod.z.object({
44
+ status: zod.z.number().optional(),
45
+ statusCode: zod.z.number().optional(),
46
+ code: zod.z.string().optional(),
47
+ error: zod.z.string().optional(),
48
+ message: zod.z.union([
49
+ zod.z.string(),
50
+ zod.z.array(zod.z.union([zod.z.string(), ErrorDetailSchema])),
51
+ ErrorDetailSchema
52
+ ]).optional(),
53
+ detail: zod.z.unknown().optional(),
54
+ errors: zod.z.array(ErrorDetailSchema).optional(),
55
+ requestId: zod.z.string().optional(),
56
+ correlationId: zod.z.string().optional(),
57
+ retryAfter: zod.z.union([zod.z.number(), zod.z.string()]).optional(),
58
+ retryAfterMs: zod.z.number().optional(),
59
+ meta: zod.z.record(zod.z.unknown()).optional()
60
+ }).passthrough();
61
+ var PaymentV2Controller_searchPayments_v2_200 = zod.z.object({ "payments": zod.z.array(zod.z.object({ "id": zod.z.string(), "amount": zod.z.string(), "sourceNetwork": zod.z.string(), "destinationNetwork": zod.z.string(), "sourceTxHash": zod.z.string().nullable().optional(), "destinationTxHash": zod.z.string().nullable().optional(), "timestamp": zod.z.string(), "type": zod.z.enum(["direct", "conversion", "crosschain", "recurring"]), "conversionRateSource": zod.z.string().nullable().optional(), "conversionRateDestination": zod.z.string().nullable().optional(), "convertedAmountSource": zod.z.string().nullable().optional(), "convertedAmountDestination": zod.z.string().nullable().optional(), "currency": zod.z.string(), "paymentCurrency": zod.z.string(), "fees": zod.z.array(zod.z.object({ "type": zod.z.enum(["gas", "platform", "crosschain", "crypto-to-fiat", "offramp", "protocol"]).optional(), "stage": zod.z.enum(["sending", "receiving", "proxying", "refunding"]).optional(), "provider": zod.z.string().optional(), "amount": zod.z.string().nullable().optional(), "amountInUSD": zod.z.string().nullable().optional(), "currency": zod.z.string().optional(), "receiverAddress": zod.z.string().optional(), "network": zod.z.string().optional(), "rateProvider": zod.z.string().optional() }).passthrough()).nullable().optional(), "recurringPaymentId": zod.z.string().nullable().optional(), "rateProvider": zod.z.enum(["lifi", "chainlink", "coingecko", "unknown"]).optional(), "request": zod.z.object({ "requestId": zod.z.string().optional(), "paymentReference": zod.z.string().optional(), "hasBeenPaid": zod.z.boolean().optional(), "customerInfo": zod.z.object({ "firstName": zod.z.string().optional(), "lastName": zod.z.string().optional(), "email": zod.z.string().optional(), "address": zod.z.object({ "street": zod.z.string().optional(), "city": zod.z.string().optional(), "state": zod.z.string().optional(), "postalCode": zod.z.string().optional(), "country": zod.z.string().optional() }).passthrough().optional() }).passthrough().nullable().optional(), "reference": zod.z.string().nullable().optional() }).passthrough().optional() }).passthrough()), "pagination": zod.z.object({ "total": zod.z.number(), "limit": zod.z.number(), "offset": zod.z.number(), "hasMore": zod.z.boolean() }).passthrough() }).passthrough();
62
+ schemaRegistry.register({ key: { operationId: "PaymentV2Controller_searchPayments_v2", kind: "response", status: 200 }, schema: PaymentV2Controller_searchPayments_v2_200 });
63
+ var PaymentV2Controller_searchPayments_v2_400 = zod.z.object({ "statusCode": zod.z.number().optional(), "message": zod.z.string().optional(), "errors": zod.z.array(zod.z.object({ "field": zod.z.string().optional(), "message": zod.z.string().optional() }).passthrough()).optional() }).passthrough();
64
+ schemaRegistry.register({ key: { operationId: "PaymentV2Controller_searchPayments_v2", kind: "response", status: 400 }, schema: PaymentV2Controller_searchPayments_v2_400 });
65
+ var PaymentV2Controller_searchPayments_v2_401 = zod.z.object({ "statusCode": zod.z.number().optional(), "message": zod.z.string().optional(), "error": zod.z.string().optional() }).passthrough();
66
+ schemaRegistry.register({ key: { operationId: "PaymentV2Controller_searchPayments_v2", kind: "response", status: 401 }, schema: PaymentV2Controller_searchPayments_v2_401 });
67
+ var PaymentV2Controller_searchPayments_v2_429 = ErrorEnvelopeSchema;
68
+ schemaRegistry.register({ key: { operationId: "PaymentV2Controller_searchPayments_v2", kind: "response", status: 429 }, schema: PaymentV2Controller_searchPayments_v2_429 });
69
+
70
+ // src/domains/payments/payments.schemas.ts
71
+ var OP_SEARCH_PAYMENTS = "PaymentV2Controller_searchPayments_v2";
72
+ var AddressSchema = zod.z.object({
73
+ street: zod.z.string().optional(),
74
+ city: zod.z.string().optional(),
75
+ state: zod.z.string().optional(),
76
+ postalCode: zod.z.string().optional(),
77
+ country: zod.z.string().optional()
78
+ }).passthrough();
79
+ var CustomerInfoSchema = zod.z.object({
80
+ firstName: zod.z.string().optional(),
81
+ lastName: zod.z.string().optional(),
82
+ email: zod.z.string().optional(),
83
+ address: AddressSchema.optional()
84
+ }).passthrough();
85
+ var FeeSchema = zod.z.object({
86
+ type: zod.z.enum(["gas", "platform", "crosschain", "crypto-to-fiat", "offramp", "protocol"]).optional(),
87
+ stage: zod.z.enum(["sending", "receiving", "proxying", "refunding"]).optional(),
88
+ provider: zod.z.string().optional(),
89
+ amount: zod.z.string().nullable().optional(),
90
+ amountInUSD: zod.z.string().nullable().optional(),
91
+ currency: zod.z.string().optional(),
92
+ receiverAddress: zod.z.string().optional(),
93
+ network: zod.z.string().optional(),
94
+ rateProvider: zod.z.string().optional()
95
+ }).passthrough();
96
+ var RequestInfoSchema = zod.z.object({
97
+ requestId: zod.z.string().optional(),
98
+ paymentReference: zod.z.string().optional(),
99
+ hasBeenPaid: zod.z.boolean().optional(),
100
+ customerInfo: CustomerInfoSchema.nullable().optional(),
101
+ reference: zod.z.string().nullable().optional()
102
+ }).passthrough();
103
+ var PaymentRecordSchema = zod.z.object({
104
+ id: zod.z.string(),
105
+ amount: zod.z.string(),
106
+ sourceNetwork: zod.z.string(),
107
+ destinationNetwork: zod.z.string(),
108
+ sourceTxHash: zod.z.string().nullable().optional(),
109
+ destinationTxHash: zod.z.string().nullable().optional(),
110
+ timestamp: zod.z.string(),
111
+ type: zod.z.enum(["direct", "conversion", "crosschain", "recurring"]),
112
+ conversionRateSource: zod.z.string().nullable().optional(),
113
+ conversionRateDestination: zod.z.string().nullable().optional(),
114
+ convertedAmountSource: zod.z.string().nullable().optional(),
115
+ convertedAmountDestination: zod.z.string().nullable().optional(),
116
+ currency: zod.z.string(),
117
+ paymentCurrency: zod.z.string(),
118
+ fees: zod.z.array(FeeSchema).nullable().optional(),
119
+ recurringPaymentId: zod.z.string().nullable().optional(),
120
+ rateProvider: zod.z.enum(["lifi", "chainlink", "coingecko", "unknown"]).nullable().optional(),
121
+ request: RequestInfoSchema.optional()
122
+ }).passthrough();
123
+ var PaginationSchema = zod.z.object({
124
+ total: zod.z.number(),
125
+ limit: zod.z.number(),
126
+ offset: zod.z.number(),
127
+ hasMore: zod.z.boolean()
128
+ }).passthrough();
129
+ var PaymentSearchResponseSchema = zod.z.object({
130
+ payments: zod.z.array(PaymentRecordSchema),
131
+ pagination: PaginationSchema
132
+ }).passthrough();
133
+ schemaRegistry.register({
134
+ key: { operationId: OP_SEARCH_PAYMENTS, kind: "response", status: 200 },
135
+ schema: PaymentSearchResponseSchema
136
+ });
137
+
138
+ // src/core/http/validation.config.ts
139
+ function normaliseBoolean(flag, fallback) {
140
+ return typeof flag === "boolean" ? flag : fallback;
141
+ }
142
+ function mergeRuntimeValidation(base, override) {
143
+ if (override === void 0) {
144
+ return base;
145
+ }
146
+ if (typeof override === "boolean") {
147
+ return {
148
+ requests: override,
149
+ responses: override,
150
+ errors: override
151
+ };
152
+ }
153
+ return {
154
+ requests: normaliseBoolean(override.requests, base.requests),
155
+ responses: normaliseBoolean(override.responses, base.responses),
156
+ errors: normaliseBoolean(override.errors, base.errors)
157
+ };
158
+ }
159
+
160
+ // src/validation/zod.helpers.ts
161
+ var ValidationError = class extends Error {
162
+ constructor(message, cause) {
163
+ super(message, { cause });
164
+ this.cause = cause;
165
+ this.name = "ClientValidationError";
166
+ }
167
+ };
168
+ function parseWithSchema(options) {
169
+ const { schema, value, description } = options;
170
+ const outcome = schema.safeParse(value);
171
+ if (outcome.success) {
172
+ return { success: true, data: outcome.data };
173
+ }
174
+ const error = new ValidationError(description ?? "Validation failed", outcome.error);
175
+ return { success: false, error };
176
+ }
177
+ function parseWithRegistry(options) {
178
+ const schema = schemaRegistry.get(options.key);
179
+ if (!schema) {
180
+ if (options.skipOnMissingSchema) {
181
+ return { success: true, data: options.value };
182
+ }
183
+ return { success: false, error: new ValidationError(`No schema registered for ${options.key.operationId}`) };
184
+ }
185
+ return parseWithSchema({ schema, value: options.value, description: options.description });
186
+ }
187
+
188
+ // src/core/http/operation.helper.ts
189
+ async function requestJson(http, params) {
190
+ const {
191
+ operationId,
192
+ method,
193
+ path,
194
+ query,
195
+ body,
196
+ schemaKey,
197
+ requestSchemaKey,
198
+ description,
199
+ querySerializer,
200
+ signal,
201
+ timeoutMs,
202
+ validation,
203
+ meta
204
+ } = params;
205
+ const runtimeValidation = mergeRuntimeValidation(http.getRuntimeValidationConfig(), validation);
206
+ let requestBody = body;
207
+ if (runtimeValidation.requests && requestSchemaKey && body !== void 0) {
208
+ const parsedRequest = parseWithRegistry({
209
+ key: requestSchemaKey,
210
+ value: body,
211
+ description: `${description ?? operationId} request`,
212
+ skipOnMissingSchema: true
213
+ });
214
+ if (!parsedRequest.success) {
215
+ throw parsedRequest.error;
216
+ }
217
+ requestBody = parsedRequest.data;
218
+ }
219
+ const metaValidation = validation ?? meta?.validation;
220
+ const requestMeta = {
221
+ ...meta ?? {},
222
+ operationId,
223
+ validation: metaValidation
224
+ };
225
+ const res = await http.request({
226
+ method,
227
+ path,
228
+ query,
229
+ body: requestBody,
230
+ querySerializer,
231
+ signal,
232
+ timeoutMs,
233
+ meta: requestMeta
234
+ });
235
+ if (!runtimeValidation.responses) {
236
+ return res.data;
237
+ }
238
+ const parsedResponse = parseWithRegistry({ key: schemaKey, value: res.data, description });
239
+ if (!parsedResponse.success) throw parsedResponse.error;
240
+ return parsedResponse.data;
241
+ }
242
+
243
+ // src/domains/requests/request.helpers.ts
244
+ function buildRequestQuery(input) {
245
+ if (!input) return void 0;
246
+ const entries = Object.entries(input).filter(([, value]) => value !== void 0);
247
+ if (entries.length === 0) return void 0;
248
+ return Object.fromEntries(entries);
249
+ }
250
+
251
+ // src/domains/payments/payments.facade.ts
252
+ function createPaymentsApi(http) {
253
+ return {
254
+ async search(query, options) {
255
+ const requestQuery = buildRequestQuery(query ? { ...query } : void 0);
256
+ return requestJson(http, {
257
+ operationId: OP_SEARCH_PAYMENTS,
258
+ method: "GET",
259
+ path: "/v2/payments",
260
+ query: requestQuery,
261
+ schemaKey: { operationId: OP_SEARCH_PAYMENTS, kind: "response", status: 200 },
262
+ description: "Search payments",
263
+ signal: options?.signal,
264
+ timeoutMs: options?.timeoutMs,
265
+ validation: options?.validation,
266
+ meta: options?.meta
267
+ });
268
+ }
269
+ };
270
+ }
271
+
272
+ exports.createPaymentsApi = createPaymentsApi;
273
+ //# sourceMappingURL=index.js.map
274
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/validation/schema.registry.ts","../../../../src/validation/generated/groups/v2/payments.schemas.generated.ts","../../../../src/domains/payments/payments.schemas.ts","../../../../src/core/http/validation.config.ts","../../../../src/validation/zod.helpers.ts","../../../../src/core/http/operation.helper.ts","../../../../src/domains/requests/request.helpers.ts","../../../../src/domains/payments/payments.facade.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["import type { ZodTypeAny } from \"zod\";\n\nexport type SchemaKind = \"request\" | \"response\" | \"webhook\";\n\nexport interface SchemaKey {\n operationId: string;\n kind: SchemaKind;\n variant?: string;\n status?: number;\n}\n\nexport interface SchemaEntry<TSchema extends ZodTypeAny = ZodTypeAny> {\n key: SchemaKey;\n schema: TSchema;\n}\n\nfunction serialiseKey(key: SchemaKey): string {\n const variant = key.variant ?? \"default\";\n const status = key.status?.toString() ?? \"any\";\n return `${key.operationId}|${key.kind}|${variant}|${status}`;\n}\n\n/**\n * Lightweight registry that associates OpenAPI operation IDs with validation schemas.\n * Generators can populate this map while domain modules retrieve the schemas at runtime.\n */\nexport class SchemaRegistry {\n private readonly store = new Map<string, SchemaEntry>();\n\n register(entry: SchemaEntry): void {\n const id = serialiseKey(entry.key);\n this.store.set(id, entry);\n }\n\n get(key: SchemaKey): ZodTypeAny | undefined {\n const id = serialiseKey(key);\n return this.store.get(id)?.schema;\n }\n\n /**\n * Removes every registered schema — primarily useful in tests.\n */\n clear(): void {\n this.store.clear();\n }\n}\n\nexport const schemaRegistry = new SchemaRegistry();\n","// Auto-generated by scripts/generate-zod.mjs. Do not edit.\nimport { z } from 'zod';\n\nimport { schemaRegistry } from '../../../schema.registry';\n\nconst ErrorDetailSchema = z\n .object({\n message: z.string(),\n code: z.string().optional(),\n field: z.string().optional(),\n source: z\n .object({\n pointer: z.string().optional(),\n parameter: z.string().optional(),\n })\n .passthrough()\n .optional(),\n meta: z.record(z.unknown()).optional(),\n })\n .passthrough();\n\nconst ErrorEnvelopeSchema = z\n .object({\n status: z.number().optional(),\n statusCode: z.number().optional(),\n code: z.string().optional(),\n error: z.string().optional(),\n message: z\n .union([\n z.string(),\n z.array(z.union([z.string(), ErrorDetailSchema])),\n ErrorDetailSchema,\n ])\n .optional(),\n detail: z.unknown().optional(),\n errors: z.array(ErrorDetailSchema).optional(),\n requestId: z.string().optional(),\n correlationId: z.string().optional(),\n retryAfter: z.union([z.number(), z.string()]).optional(),\n retryAfterMs: z.number().optional(),\n meta: z.record(z.unknown()).optional(),\n })\n .passthrough();\n\n// GET /v2/payments -> PaymentV2Controller_searchPayments_v2 (200)\nexport const PaymentV2Controller_searchPayments_v2_200 = z.object({ \"payments\": z.array(z.object({ \"id\": z.string(), \"amount\": z.string(), \"sourceNetwork\": z.string(), \"destinationNetwork\": z.string(), \"sourceTxHash\": (z.string().nullable()).optional(), \"destinationTxHash\": (z.string().nullable()).optional(), \"timestamp\": z.string(), \"type\": z.enum(['direct', 'conversion', 'crosschain', 'recurring']), \"conversionRateSource\": (z.string().nullable()).optional(), \"conversionRateDestination\": (z.string().nullable()).optional(), \"convertedAmountSource\": (z.string().nullable()).optional(), \"convertedAmountDestination\": (z.string().nullable()).optional(), \"currency\": z.string(), \"paymentCurrency\": z.string(), \"fees\": (z.array(z.object({ \"type\": (z.enum(['gas', 'platform', 'crosschain', 'crypto-to-fiat', 'offramp', 'protocol'])).optional(), \"stage\": (z.enum(['sending', 'receiving', 'proxying', 'refunding'])).optional(), \"provider\": (z.string()).optional(), \"amount\": (z.string().nullable()).optional(), \"amountInUSD\": (z.string().nullable()).optional(), \"currency\": (z.string()).optional(), \"receiverAddress\": (z.string()).optional(), \"network\": (z.string()).optional(), \"rateProvider\": (z.string()).optional() }).passthrough()).nullable()).optional(), \"recurringPaymentId\": (z.string().nullable()).optional(), \"rateProvider\": (z.enum(['lifi', 'chainlink', 'coingecko', 'unknown'])).optional(), \"request\": (z.object({ \"requestId\": (z.string()).optional(), \"paymentReference\": (z.string()).optional(), \"hasBeenPaid\": (z.boolean()).optional(), \"customerInfo\": (z.object({ \"firstName\": (z.string()).optional(), \"lastName\": (z.string()).optional(), \"email\": (z.string()).optional(), \"address\": (z.object({ \"street\": (z.string()).optional(), \"city\": (z.string()).optional(), \"state\": (z.string()).optional(), \"postalCode\": (z.string()).optional(), \"country\": (z.string()).optional() }).passthrough()).optional() }).passthrough().nullable()).optional(), \"reference\": (z.string().nullable()).optional() }).passthrough()).optional() }).passthrough()), \"pagination\": z.object({ \"total\": z.number(), \"limit\": z.number(), \"offset\": z.number(), \"hasMore\": z.boolean() }).passthrough() }).passthrough();\nschemaRegistry.register({ key: { operationId: 'PaymentV2Controller_searchPayments_v2', kind: 'response', status: 200 }, schema: PaymentV2Controller_searchPayments_v2_200 });\n\n// GET /v2/payments -> PaymentV2Controller_searchPayments_v2 (400)\nexport const PaymentV2Controller_searchPayments_v2_400 = z.object({ \"statusCode\": (z.number()).optional(), \"message\": (z.string()).optional(), \"errors\": (z.array(z.object({ \"field\": (z.string()).optional(), \"message\": (z.string()).optional() }).passthrough())).optional() }).passthrough();\nschemaRegistry.register({ key: { operationId: 'PaymentV2Controller_searchPayments_v2', kind: 'response', status: 400 }, schema: PaymentV2Controller_searchPayments_v2_400 });\n\n// GET /v2/payments -> PaymentV2Controller_searchPayments_v2 (401)\nexport const PaymentV2Controller_searchPayments_v2_401 = z.object({ \"statusCode\": (z.number()).optional(), \"message\": (z.string()).optional(), \"error\": (z.string()).optional() }).passthrough();\nschemaRegistry.register({ key: { operationId: 'PaymentV2Controller_searchPayments_v2', kind: 'response', status: 401 }, schema: PaymentV2Controller_searchPayments_v2_401 });\n\n// GET /v2/payments -> PaymentV2Controller_searchPayments_v2 (429)\nexport const PaymentV2Controller_searchPayments_v2_429 = ErrorEnvelopeSchema;\nschemaRegistry.register({ key: { operationId: 'PaymentV2Controller_searchPayments_v2', kind: 'response', status: 429 }, schema: PaymentV2Controller_searchPayments_v2_429 });\n","import { z } from \"zod\";\n\nimport \"../../validation/generated/groups/v2/payments.schemas.generated\";\nimport { schemaRegistry } from \"../../validation/schema.registry\";\n\nexport const OP_SEARCH_PAYMENTS = \"PaymentV2Controller_searchPayments_v2\";\n\nconst AddressSchema = z\n .object({\n street: z.string().optional(),\n city: z.string().optional(),\n state: z.string().optional(),\n postalCode: z.string().optional(),\n country: z.string().optional(),\n })\n .passthrough();\n\nexport const CustomerInfoSchema = z\n .object({\n firstName: z.string().optional(),\n lastName: z.string().optional(),\n email: z.string().optional(),\n address: AddressSchema.optional(),\n })\n .passthrough();\n\nexport const FeeSchema = z\n .object({\n type: z.enum([\"gas\", \"platform\", \"crosschain\", \"crypto-to-fiat\", \"offramp\", \"protocol\"]).optional(),\n stage: z.enum([\"sending\", \"receiving\", \"proxying\", \"refunding\"]).optional(),\n provider: z.string().optional(),\n amount: z.string().nullable().optional(),\n amountInUSD: z.string().nullable().optional(),\n currency: z.string().optional(),\n receiverAddress: z.string().optional(),\n network: z.string().optional(),\n rateProvider: z.string().optional(),\n })\n .passthrough();\n\nexport const RequestInfoSchema = z\n .object({\n requestId: z.string().optional(),\n paymentReference: z.string().optional(),\n hasBeenPaid: z.boolean().optional(),\n customerInfo: CustomerInfoSchema.nullable().optional(),\n reference: z.string().nullable().optional(),\n })\n .passthrough();\n\nexport const PaymentRecordSchema = z\n .object({\n id: z.string(),\n amount: z.string(),\n sourceNetwork: z.string(),\n destinationNetwork: z.string(),\n sourceTxHash: z.string().nullable().optional(),\n destinationTxHash: z.string().nullable().optional(),\n timestamp: z.string(),\n type: z.enum([\"direct\", \"conversion\", \"crosschain\", \"recurring\"]),\n conversionRateSource: z.string().nullable().optional(),\n conversionRateDestination: z.string().nullable().optional(),\n convertedAmountSource: z.string().nullable().optional(),\n convertedAmountDestination: z.string().nullable().optional(),\n currency: z.string(),\n paymentCurrency: z.string(),\n fees: z.array(FeeSchema).nullable().optional(),\n recurringPaymentId: z.string().nullable().optional(),\n rateProvider: z.enum([\"lifi\", \"chainlink\", \"coingecko\", \"unknown\"]).nullable().optional(),\n request: RequestInfoSchema.optional(),\n })\n .passthrough();\n\nexport const PaginationSchema = z\n .object({\n total: z.number(),\n limit: z.number(),\n offset: z.number(),\n hasMore: z.boolean(),\n })\n .passthrough();\n\nexport const PaymentSearchResponseSchema = z\n .object({\n payments: z.array(PaymentRecordSchema),\n pagination: PaginationSchema,\n })\n .passthrough();\n\nexport type PaymentRecord = z.infer<typeof PaymentRecordSchema>;\nexport type PaymentFee = z.infer<typeof FeeSchema>;\nexport type PaymentSearchResponse = z.infer<typeof PaymentSearchResponseSchema>;\nexport type PaymentSearchPagination = z.infer<typeof PaginationSchema>;\n\nschemaRegistry.register({\n key: { operationId: OP_SEARCH_PAYMENTS, kind: \"response\", status: 200 },\n schema: PaymentSearchResponseSchema,\n});\n","import type { RuntimeValidationConfig, RuntimeValidationOption } from \"./http.types\";\n\nconst DEFAULT_RUNTIME_VALIDATION: RuntimeValidationConfig = {\n requests: true,\n responses: true,\n errors: true,\n};\n\nfunction normaliseBoolean(flag: boolean | undefined, fallback: boolean): boolean {\n return typeof flag === \"boolean\" ? flag : fallback;\n}\n\nexport function normaliseRuntimeValidation(option?: RuntimeValidationOption): RuntimeValidationConfig {\n if (typeof option === \"boolean\") {\n return {\n requests: option,\n responses: option,\n errors: option,\n } satisfies RuntimeValidationConfig;\n }\n\n return {\n requests: normaliseBoolean(option?.requests, DEFAULT_RUNTIME_VALIDATION.requests),\n responses: normaliseBoolean(option?.responses, DEFAULT_RUNTIME_VALIDATION.responses),\n errors: normaliseBoolean(option?.errors, DEFAULT_RUNTIME_VALIDATION.errors),\n } satisfies RuntimeValidationConfig;\n}\n\nexport function mergeRuntimeValidation(base: RuntimeValidationConfig, override?: RuntimeValidationOption): RuntimeValidationConfig {\n if (override === undefined) {\n return base;\n }\n\n if (typeof override === \"boolean\") {\n return {\n requests: override,\n responses: override,\n errors: override,\n } satisfies RuntimeValidationConfig;\n }\n\n return {\n requests: normaliseBoolean(override.requests, base.requests),\n responses: normaliseBoolean(override.responses, base.responses),\n errors: normaliseBoolean(override.errors, base.errors),\n } satisfies RuntimeValidationConfig;\n}\n\nexport function cloneRuntimeValidation(config: RuntimeValidationConfig): RuntimeValidationConfig {\n return { ...config };\n}\n","import { type SafeParseReturnType, type ZodTypeAny } from \"zod\";\n\nimport type { SchemaKey } from \"./schema.registry\";\nimport { schemaRegistry } from \"./schema.registry\";\n\nexport type SchemaOutput<TSchema extends ZodTypeAny> = TSchema[\"_output\"];\n\nexport interface ParseWithSchemaOptions<TSchema extends ZodTypeAny> {\n schema: TSchema;\n value: unknown;\n description?: string;\n}\n\nexport interface ParseRegistryOptions {\n key: SchemaKey;\n value: unknown;\n description?: string;\n skipOnMissingSchema?: boolean;\n}\n\nexport interface ParseResult<T> {\n success: boolean;\n data?: T;\n error?: unknown;\n}\n\nexport class ValidationError extends Error {\n constructor(message: string, readonly cause?: unknown) {\n super(message, { cause });\n this.name = \"ClientValidationError\";\n }\n}\n\nexport function parseWithSchema<TSchema extends ZodTypeAny>(\n options: ParseWithSchemaOptions<TSchema>,\n): ParseResult<SchemaOutput<TSchema>> {\n const { schema, value, description } = options;\n const outcome: SafeParseReturnType<unknown, SchemaOutput<TSchema>> = schema.safeParse(value);\n if (outcome.success) {\n return { success: true, data: outcome.data };\n }\n\n const error = new ValidationError(description ?? \"Validation failed\", outcome.error);\n return { success: false, error };\n}\n\nexport function parseWithRegistry<TSchema extends ZodTypeAny>(options: ParseRegistryOptions): ParseResult<SchemaOutput<TSchema>> {\n const schema = schemaRegistry.get(options.key) as TSchema | undefined;\n if (!schema) {\n if (options.skipOnMissingSchema) {\n return { success: true, data: options.value as SchemaOutput<TSchema> };\n }\n return { success: false, error: new ValidationError(`No schema registered for ${options.key.operationId}`) };\n }\n\n return parseWithSchema({ schema, value: options.value, description: options.description });\n}\n","import type { HttpClient, HttpMethod, RequestOptions, RuntimeValidationOption } from \"./http.types\";\nimport { mergeRuntimeValidation } from \"./validation.config\";\nimport type { SchemaKey } from \"../../validation/schema.registry\";\nimport { parseWithRegistry } from \"../../validation/zod.helpers\";\n\ntype Query = NonNullable<RequestOptions[\"query\"]>;\n\nexport interface RequestJsonParams {\n operationId: string;\n method: HttpMethod;\n path: string;\n query?: Query;\n body?: unknown;\n schemaKey: SchemaKey;\n requestSchemaKey?: SchemaKey;\n description?: string;\n querySerializer?: RequestOptions[\"querySerializer\"];\n signal?: RequestOptions[\"signal\"];\n timeoutMs?: RequestOptions[\"timeoutMs\"];\n validation?: RuntimeValidationOption;\n meta?: RequestOptions[\"meta\"];\n}\n\nexport async function requestJson<T>(http: HttpClient, params: RequestJsonParams): Promise<T> {\n const {\n operationId,\n method,\n path,\n query,\n body,\n schemaKey,\n requestSchemaKey,\n description,\n querySerializer,\n signal,\n timeoutMs,\n validation,\n meta,\n } = params;\n\n const runtimeValidation = mergeRuntimeValidation(http.getRuntimeValidationConfig(), validation);\n\n let requestBody = body;\n if (runtimeValidation.requests && requestSchemaKey && body !== undefined) {\n const parsedRequest = parseWithRegistry({\n key: requestSchemaKey,\n value: body,\n description: `${description ?? operationId} request`,\n skipOnMissingSchema: true,\n });\n if (!parsedRequest.success) {\n throw parsedRequest.error;\n }\n requestBody = parsedRequest.data;\n }\n\n const metaValidation = validation ?? meta?.validation;\n const requestMeta: RequestOptions[\"meta\"] = {\n ...(meta ?? {}),\n operationId,\n validation: metaValidation,\n };\n\n const res = await http.request({\n method,\n path,\n query,\n body: requestBody,\n querySerializer,\n signal,\n timeoutMs,\n meta: requestMeta,\n });\n\n if (!runtimeValidation.responses) {\n return res.data as T;\n }\n\n const parsedResponse = parseWithRegistry({ key: schemaKey, value: res.data, description });\n if (!parsedResponse.success) throw parsedResponse.error;\n return parsedResponse.data as T;\n}\n\nexport interface RequestVoidParams {\n operationId: string;\n method: HttpMethod;\n path: string;\n query?: Query;\n body?: unknown;\n querySerializer?: RequestOptions[\"querySerializer\"];\n signal?: RequestOptions[\"signal\"];\n timeoutMs?: RequestOptions[\"timeoutMs\"];\n requestSchemaKey?: SchemaKey;\n validation?: RuntimeValidationOption;\n meta?: RequestOptions[\"meta\"];\n}\n\nexport async function requestVoid(http: HttpClient, params: RequestVoidParams): Promise<void> {\n const { operationId, method, path, query, body, querySerializer, signal, timeoutMs, requestSchemaKey, validation, meta } = params;\n\n const runtimeValidation = mergeRuntimeValidation(http.getRuntimeValidationConfig(), validation);\n\n let requestBody = body;\n if (runtimeValidation.requests && requestSchemaKey && body !== undefined) {\n const parsedRequest = parseWithRegistry({\n key: requestSchemaKey,\n value: body,\n description: `${operationId} request`,\n skipOnMissingSchema: true,\n });\n if (!parsedRequest.success) {\n throw parsedRequest.error;\n }\n requestBody = parsedRequest.data;\n }\n\n const metaValidation = validation ?? meta?.validation;\n const requestMeta: RequestOptions[\"meta\"] = {\n ...(meta ?? {}),\n operationId,\n validation: metaValidation,\n };\n\n await http.request({\n method,\n path,\n query,\n body: requestBody,\n querySerializer,\n signal,\n timeoutMs,\n meta: requestMeta,\n });\n}\n","import type { RequestOptions } from \"../../core/http/http.types\";\nimport type { operations } from \"../../generated/openapi-types\";\n\ntype QueryValue = string | number | boolean | (string | number | boolean)[];\n\n/**\n * Builds a query object while stripping out undefined entries so the HTTP helper\n * does not emit spurious `param=undefined` pairs.\n */\nexport function buildRequestQuery(input?: Record<string, unknown>): RequestOptions[\"query\"] | undefined {\n if (!input) return undefined;\n const entries = Object.entries(input).filter(([, value]) => value !== undefined);\n if (entries.length === 0) return undefined;\n return Object.fromEntries(entries) as Record<string, QueryValue | undefined>;\n}\n\ntype LegacyStatusApiResponse =\n operations[\"RequestControllerV1_getRequestStatus_v1\"][\"responses\"][200][\"content\"][\"application/json\"];\ntype StatusApiResponseV2 =\n operations[\"RequestControllerV2_getRequestStatus_v2\"][\"responses\"][200][\"content\"][\"application/json\"];\n\nexport interface RequestStatusAddress {\n street?: string;\n city?: string;\n state?: string;\n postalCode?: string;\n country?: string;\n}\n\nexport interface RequestStatusCustomerInfo {\n firstName?: string;\n lastName?: string;\n email?: string;\n address?: RequestStatusAddress;\n}\n\nexport type RequestStatusKind = \"paid\" | \"pending\" | \"cancelled\" | \"overdue\" | \"unknown\";\n\ninterface RequestStatusBase {\n paymentReference?: string;\n requestId?: string;\n isListening?: boolean;\n txHash: string | null;\n status?: string;\n recurrence?: Record<string, unknown>;\n originalRequestId?: string;\n originalRequestPaymentReference?: string;\n isRecurrenceStopped?: boolean;\n isCryptoToFiatAvailable?: boolean;\n payments?: Array<Record<string, unknown>>;\n customerInfo?: RequestStatusCustomerInfo | null;\n reference?: string | null;\n hasBeenPaid?: boolean;\n}\n\nexport type RequestStatusResult =\n | (RequestStatusBase & { kind: \"paid\"; hasBeenPaid: true })\n | (RequestStatusBase & { kind: \"pending\"; hasBeenPaid?: boolean })\n | (RequestStatusBase & { kind: \"cancelled\"; hasBeenPaid?: boolean })\n | (RequestStatusBase & { kind: \"overdue\"; hasBeenPaid?: boolean })\n | (RequestStatusBase & { kind: \"unknown\"; hasBeenPaid?: boolean });\n\nexport type LegacyRequestStatusResult = Extract<RequestStatusResult, { kind: \"paid\" | \"pending\" }>;\n\nconst STATUS_KIND_MAP: Record<string, RequestStatusKind> = {\n paid: \"paid\",\n completed: \"paid\",\n settled: \"paid\",\n pending: \"pending\",\n processing: \"pending\",\n open: \"pending\",\n awaitingpayment: \"pending\",\n awaiting_payment: \"pending\",\n cancelled: \"cancelled\",\n canceled: \"cancelled\",\n voided: \"cancelled\",\n overdue: \"overdue\",\n expired: \"overdue\",\n};\n\nfunction normalizeReference(value: string | null | undefined): string | null | undefined {\n if (value === undefined) return undefined;\n return value;\n}\n\nfunction normalizeCustomerInfo(value: RequestStatusCustomerInfo | null | undefined): RequestStatusCustomerInfo | null | undefined {\n if (value === undefined) return undefined;\n if (value === null) return null;\n return {\n firstName: value.firstName ?? undefined,\n lastName: value.lastName ?? undefined,\n email: value.email ?? undefined,\n address: value.address\n ? {\n street: value.address.street ?? undefined,\n city: value.address.city ?? undefined,\n state: value.address.state ?? undefined,\n postalCode: value.address.postalCode ?? undefined,\n country: value.address.country ?? undefined,\n }\n : undefined,\n };\n}\n\nfunction normalizePayments(payments: StatusApiResponseV2[\"payments\"]): Array<Record<string, unknown>> | undefined {\n if (!payments) return undefined;\n return payments.map((payment) => ({ ...payment })) as Array<Record<string, unknown>>;\n}\n\nfunction buildStatusBase(\n raw: LegacyStatusApiResponse | StatusApiResponseV2,\n overrides?: Partial<RequestStatusBase>,\n): RequestStatusBase {\n return {\n paymentReference: raw.paymentReference ?? undefined,\n requestId: raw.requestId ?? undefined,\n isListening: \"isListening\" in raw ? raw.isListening ?? undefined : undefined,\n txHash: raw.txHash ?? null,\n hasBeenPaid: raw.hasBeenPaid ?? false,\n status: \"status\" in raw ? (raw).status ?? undefined : undefined,\n recurrence:\n \"recurrence\" in raw ? ((raw).recurrence as Record<string, unknown> | undefined) : undefined,\n originalRequestId: \"originalRequestId\" in raw ? (raw).originalRequestId ?? undefined : undefined,\n originalRequestPaymentReference:\n \"originalRequestPaymentReference\" in raw\n ? (raw).originalRequestPaymentReference ?? undefined\n : undefined,\n isRecurrenceStopped:\n \"isRecurrenceStopped\" in raw ? (raw).isRecurrenceStopped ?? undefined : undefined,\n isCryptoToFiatAvailable:\n \"isCryptoToFiatAvailable\" in raw\n ? (raw).isCryptoToFiatAvailable ?? undefined\n : undefined,\n payments: \"payments\" in raw ? normalizePayments((raw).payments) : undefined,\n customerInfo:\n \"customerInfo\" in raw\n ? normalizeCustomerInfo(\n (raw).customerInfo as RequestStatusCustomerInfo | null | undefined,\n )\n : undefined,\n reference:\n \"reference\" in raw ? normalizeReference((raw).reference ?? null) : undefined,\n ...overrides,\n };\n}\n\nexport function normalizeLegacyStatusResponse(raw: LegacyStatusApiResponse): LegacyRequestStatusResult {\n if (raw.hasBeenPaid) {\n return {\n kind: \"paid\",\n ...buildStatusBase(raw, { hasBeenPaid: true }),\n hasBeenPaid: true,\n };\n }\n\n return {\n kind: \"pending\",\n ...buildStatusBase(raw, { hasBeenPaid: false }),\n hasBeenPaid: false,\n };\n}\n\nexport function normalizeRequestStatusResponse(raw: StatusApiResponseV2): RequestStatusResult {\n const statusKey = raw.status?.trim().toLowerCase();\n const mapped = statusKey ? STATUS_KIND_MAP[statusKey] : undefined;\n const kind: RequestStatusKind = raw.hasBeenPaid\n ? \"paid\"\n : mapped ?? (statusKey ? \"unknown\" : \"pending\");\n\n if (kind === \"paid\") {\n return {\n kind,\n ...buildStatusBase(raw, { hasBeenPaid: true }),\n hasBeenPaid: true,\n };\n }\n\n return {\n kind,\n ...buildStatusBase(raw, { hasBeenPaid: false }),\n hasBeenPaid: false,\n };\n}\n","import {\n OP_SEARCH_PAYMENTS,\n type PaymentSearchPagination,\n type PaymentSearchResponse,\n type PaymentRecord,\n} from \"./payments.schemas\";\nimport type { HttpClient, RequestOptions, RuntimeValidationOption } from \"../../core/http/http.types\";\nimport { requestJson } from \"../../core/http/operation.helper\";\nimport type { operations } from \"../../generated/openapi-types\";\nimport { buildRequestQuery } from \"../requests/request.helpers\";\n\nexport type PaymentSearchQuery = operations[typeof OP_SEARCH_PAYMENTS][\"parameters\"][\"query\"];\n\nexport interface PaymentSearchOptions {\n signal?: AbortSignal;\n timeoutMs?: number;\n validation?: RuntimeValidationOption;\n meta?: RequestOptions[\"meta\"];\n}\n\nexport type PaymentSearchResult = PaymentSearchResponse;\n\nexport interface PaymentsApi {\n search(query: PaymentSearchQuery, options?: PaymentSearchOptions): Promise<PaymentSearchResult>;\n}\n\nexport function createPaymentsApi(http: HttpClient): PaymentsApi {\n return {\n async search(query, options) {\n const requestQuery = buildRequestQuery(query ? { ...query } : undefined);\n return requestJson<PaymentSearchResponse>(http, {\n operationId: OP_SEARCH_PAYMENTS,\n method: \"GET\",\n path: \"/v2/payments\",\n query: requestQuery,\n schemaKey: { operationId: OP_SEARCH_PAYMENTS, kind: \"response\", status: 200 },\n description: \"Search payments\",\n signal: options?.signal,\n timeoutMs: options?.timeoutMs,\n validation: options?.validation,\n meta: options?.meta,\n });\n },\n };\n}\n\nexport type { PaymentRecord, PaymentSearchPagination };\n"]}
@@ -252,11 +252,13 @@ async function requestVoid(http, params) {
252
252
 
253
253
  // src/domains/requests/requests.facade.ts
254
254
  var OP_CREATE = "RequestControllerV2_createRequest_v2";
255
+ var OP_LIST = "RequestControllerV2_listRequests_v2";
255
256
  var OP_PAYMENT_ROUTES = "RequestControllerV2_getRequestPaymentRoutes_v2";
256
257
  var OP_PAYMENT_CALLDATA = "RequestControllerV2_getPaymentCalldata_v2";
257
258
  var OP_UPDATE = "RequestControllerV2_updateRequest_v2";
258
259
  var OP_SEND_PAYMENT_INTENT = "RequestControllerV2_sendPaymentIntent_v2";
259
260
  var OP_REQUEST_STATUS = "RequestControllerV2_getRequestStatus_v2";
261
+ var PATH_BASE = "/v2/request";
260
262
  var KIND_CALLDATA = "calldata";
261
263
  var KIND_PAYMENT_INTENT = "paymentIntent";
262
264
  function isPaymentIntentPayload(payload) {
@@ -267,11 +269,29 @@ function isCalldataPayload(payload) {
267
269
  }
268
270
  function createRequestsApi(http) {
269
271
  return {
272
+ async list(options) {
273
+ return requestJson(http, {
274
+ operationId: OP_LIST,
275
+ method: "GET",
276
+ path: PATH_BASE,
277
+ query: buildRequestQuery({
278
+ walletAddress: options.walletAddress,
279
+ limit: options.limit,
280
+ offset: options.offset
281
+ }),
282
+ schemaKey: { operationId: OP_LIST, kind: "response", status: 200 },
283
+ description: "List requests",
284
+ signal: options.signal,
285
+ timeoutMs: options.timeoutMs,
286
+ validation: options.validation,
287
+ meta: options.meta
288
+ });
289
+ },
270
290
  async create(body, options) {
271
291
  return requestJson(http, {
272
292
  operationId: OP_CREATE,
273
293
  method: "POST",
274
- path: "/v2/request",
294
+ path: PATH_BASE,
275
295
  body,
276
296
  requestSchemaKey: { operationId: OP_CREATE, kind: "request", variant: "application/json" },
277
297
  schemaKey: { operationId: OP_CREATE, kind: "response", status: 201 },
@@ -283,7 +303,7 @@ function createRequestsApi(http) {
283
303
  });
284
304
  },
285
305
  async getRequestStatus(requestId, options) {
286
- const path = `/v2/request/${encodeURIComponent(requestId)}`;
306
+ const path = `${PATH_BASE}/${encodeURIComponent(requestId)}`;
287
307
  const raw = await requestJson(http, {
288
308
  operationId: OP_REQUEST_STATUS,
289
309
  method: "GET",
@@ -298,7 +318,7 @@ function createRequestsApi(http) {
298
318
  return normalizeRequestStatusResponse(raw);
299
319
  },
300
320
  async getPaymentRoutes(requestId, options) {
301
- const path = `/v2/request/${encodeURIComponent(requestId)}/routes`;
321
+ const path = `${PATH_BASE}/${encodeURIComponent(requestId)}/routes`;
302
322
  return requestJson(http, {
303
323
  operationId: OP_PAYMENT_ROUTES,
304
324
  method: "GET",
@@ -318,7 +338,7 @@ function createRequestsApi(http) {
318
338
  });
319
339
  },
320
340
  async getPaymentCalldata(requestId, options) {
321
- const path = `/v2/request/${encodeURIComponent(requestId)}/pay`;
341
+ const path = `${PATH_BASE}/${encodeURIComponent(requestId)}/pay`;
322
342
  const queryInput = {
323
343
  wallet: options?.wallet,
324
344
  chain: options?.chain,
@@ -349,12 +369,14 @@ function createRequestsApi(http) {
349
369
  }
350
370
  throw new ValidationError("Unexpected payment calldata response", raw);
351
371
  },
352
- async update(requestId, options) {
353
- const path = `/v2/request/${encodeURIComponent(requestId)}`;
372
+ async update(requestId, body, options) {
373
+ const path = `${PATH_BASE}/${encodeURIComponent(requestId)}`;
354
374
  await requestVoid(http, {
355
375
  operationId: OP_UPDATE,
356
376
  method: "PATCH",
357
377
  path,
378
+ body,
379
+ requestSchemaKey: { operationId: OP_UPDATE, kind: "request", variant: "application/json" },
358
380
  signal: options?.signal,
359
381
  timeoutMs: options?.timeoutMs,
360
382
  validation: options?.validation,
@@ -362,7 +384,7 @@ function createRequestsApi(http) {
362
384
  });
363
385
  },
364
386
  async sendPaymentIntent(paymentIntentId, body, options) {
365
- const path = `/v2/request/payment-intents/${encodeURIComponent(paymentIntentId)}`;
387
+ const path = `${PATH_BASE}/payment-intents/${encodeURIComponent(paymentIntentId)}`;
366
388
  await requestVoid(http, {
367
389
  operationId: OP_SEND_PAYMENT_INTENT,
368
390
  method: "POST",
@@ -461,17 +483,23 @@ var RequestControllerV1_sendPaymentIntent_v1_404 = ErrorEnvelopeSchema;
461
483
  schemaRegistry.register({ key: { operationId: "RequestControllerV1_sendPaymentIntent_v1", kind: "response", status: 404 }, schema: RequestControllerV1_sendPaymentIntent_v1_404 });
462
484
  var RequestControllerV1_sendPaymentIntent_v1_429 = ErrorEnvelopeSchema;
463
485
  schemaRegistry.register({ key: { operationId: "RequestControllerV1_sendPaymentIntent_v1", kind: "response", status: 429 }, schema: RequestControllerV1_sendPaymentIntent_v1_429 });
486
+ var RequestControllerV2_listRequests_v2_200 = zod.z.object({ "requests": zod.z.array(zod.z.object({ "requestId": zod.z.string().optional(), "paymentReference": zod.z.string().optional(), "amount": zod.z.string().nullable().optional(), "invoiceCurrency": zod.z.string().optional(), "paymentCurrency": zod.z.string().optional(), "hasBeenPaid": zod.z.boolean().optional(), "status": zod.z.string().nullable().optional(), "reference": zod.z.string().nullable().optional(), "createdAt": zod.z.string().nullable().optional(), "txHash": zod.z.string().nullable().optional(), "payee": zod.z.string().nullable().optional(), "payer": zod.z.string().nullable().optional() }).passthrough()), "pagination": zod.z.object({ "total": zod.z.number().optional(), "limit": zod.z.number().optional(), "offset": zod.z.number().optional() }).passthrough() }).passthrough();
487
+ schemaRegistry.register({ key: { operationId: "RequestControllerV2_listRequests_v2", kind: "response", status: 200 }, schema: RequestControllerV2_listRequests_v2_200 });
488
+ var RequestControllerV2_listRequests_v2_400 = ErrorEnvelopeSchema;
489
+ schemaRegistry.register({ key: { operationId: "RequestControllerV2_listRequests_v2", kind: "response", status: 400 }, schema: RequestControllerV2_listRequests_v2_400 });
490
+ var RequestControllerV2_listRequests_v2_429 = ErrorEnvelopeSchema;
491
+ schemaRegistry.register({ key: { operationId: "RequestControllerV2_listRequests_v2", kind: "response", status: 429 }, schema: RequestControllerV2_listRequests_v2_429 });
464
492
  var RequestControllerV2_createRequest_v2_Request = zod.z.object({ "payer": zod.z.string().optional(), "payee": zod.z.string().optional(), "amount": zod.z.string(), "invoiceCurrency": zod.z.string(), "paymentCurrency": zod.z.string(), "recurrence": zod.z.object({ "startDate": zod.z.string(), "frequency": zod.z.enum(["DAILY", "WEEKLY", "MONTHLY", "YEARLY"]) }).passthrough().optional(), "isCryptoToFiatAvailable": zod.z.boolean().optional(), "customerInfo": zod.z.object({ "firstName": zod.z.string().optional(), "lastName": zod.z.string().optional(), "email": zod.z.string().optional(), "address": zod.z.object({ "street": zod.z.string().optional(), "city": zod.z.string().optional(), "state": zod.z.string().optional(), "postalCode": zod.z.string().optional(), "country": zod.z.string().optional() }).passthrough().optional() }).passthrough().optional(), "reference": zod.z.string().optional(), "originalRequestId": zod.z.string().optional(), "originalRequestPaymentReference": zod.z.string().optional() }).passthrough();
465
493
  schemaRegistry.register({ key: { operationId: "RequestControllerV2_createRequest_v2", kind: "request", variant: "application/json" }, schema: RequestControllerV2_createRequest_v2_Request });
466
494
  var RequestControllerV2_createRequest_v2_201 = zod.z.object({ "paymentReference": zod.z.string().optional(), "requestId": zod.z.string().optional() }).passthrough();
467
495
  schemaRegistry.register({ key: { operationId: "RequestControllerV2_createRequest_v2", kind: "response", status: 201 }, schema: RequestControllerV2_createRequest_v2_201 });
468
496
  var RequestControllerV2_createRequest_v2_400 = ErrorEnvelopeSchema;
469
497
  schemaRegistry.register({ key: { operationId: "RequestControllerV2_createRequest_v2", kind: "response", status: 400 }, schema: RequestControllerV2_createRequest_v2_400 });
470
- var RequestControllerV2_createRequest_v2_404 = ErrorEnvelopeSchema;
471
- schemaRegistry.register({ key: { operationId: "RequestControllerV2_createRequest_v2", kind: "response", status: 404 }, schema: RequestControllerV2_createRequest_v2_404 });
498
+ var RequestControllerV2_createRequest_v2_403 = ErrorEnvelopeSchema;
499
+ schemaRegistry.register({ key: { operationId: "RequestControllerV2_createRequest_v2", kind: "response", status: 403 }, schema: RequestControllerV2_createRequest_v2_403 });
472
500
  var RequestControllerV2_createRequest_v2_429 = ErrorEnvelopeSchema;
473
501
  schemaRegistry.register({ key: { operationId: "RequestControllerV2_createRequest_v2", kind: "response", status: 429 }, schema: RequestControllerV2_createRequest_v2_429 });
474
- var RequestControllerV2_getRequestStatus_v2_200 = zod.z.object({ "hasBeenPaid": zod.z.boolean().optional(), "paymentReference": zod.z.string().optional(), "requestId": zod.z.string().optional(), "isListening": zod.z.boolean().optional(), "txHash": zod.z.string().nullable().optional(), "recurrence": zod.z.object({}).passthrough().optional(), "originalRequestId": zod.z.string().optional(), "status": zod.z.string().optional(), "isCryptoToFiatAvailable": zod.z.boolean().optional(), "originalRequestPaymentReference": zod.z.string().optional(), "payments": zod.z.array(zod.z.object({}).passthrough()).optional(), "isRecurrenceStopped": zod.z.boolean().optional(), "customerInfo": zod.z.object({ "firstName": zod.z.string().optional(), "lastName": zod.z.string().optional(), "email": zod.z.string().optional(), "address": zod.z.object({ "street": zod.z.string().optional(), "city": zod.z.string().optional(), "state": zod.z.string().optional(), "postalCode": zod.z.string().optional(), "country": zod.z.string().optional() }).passthrough().optional() }).passthrough().nullable().optional(), "reference": zod.z.string().nullable().optional(), "amountInUsd": zod.z.string().nullable().optional(), "conversionRate": zod.z.string().nullable().optional(), "rateSource": zod.z.enum(["lifi", "chainlink", "coingecko", "unknown", "mixed"]).optional(), "conversionBreakdown": zod.z.object({ "paidAmount": zod.z.string().optional(), "paidAmountInUsd": zod.z.string().optional(), "remainingAmount": zod.z.string().optional(), "remainingAmountInUsd": zod.z.string().optional(), "currentMarketRate": zod.z.string().nullable().optional(), "currentMarketRateSource": zod.z.enum(["lifi", "chainlink", "coingecko", "unknown"]).optional(), "payments": zod.z.array(zod.z.object({ "amount": zod.z.string().optional(), "amountInUsd": zod.z.string().optional(), "conversionRate": zod.z.string().optional(), "rateSource": zod.z.enum(["lifi", "chainlink", "coingecko", "unknown"]).optional(), "timestamp": zod.z.string().optional() }).passthrough()).optional() }).passthrough().nullable().optional(), "fees": zod.z.array(zod.z.object({ "type": zod.z.enum(["gas", "platform", "crosschain", "crypto-to-fiat", "offramp", "protocol"]).optional(), "provider": zod.z.string().optional(), "amount": zod.z.string().nullable().optional(), "currency": zod.z.string().optional() }).passthrough()).nullable().optional() }).passthrough();
502
+ var RequestControllerV2_getRequestStatus_v2_200 = zod.z.object({ "hasBeenPaid": zod.z.boolean().optional(), "paymentReference": zod.z.string().optional(), "requestId": zod.z.string().optional(), "payee": zod.z.string().nullable().optional(), "isListening": zod.z.boolean().optional(), "txHash": zod.z.string().nullable().optional(), "recurrence": zod.z.object({}).passthrough().optional(), "originalRequestId": zod.z.string().optional(), "status": zod.z.string().optional(), "isCryptoToFiatAvailable": zod.z.boolean().optional(), "originalRequestPaymentReference": zod.z.string().optional(), "payments": zod.z.array(zod.z.object({}).passthrough()).optional(), "isRecurrenceStopped": zod.z.boolean().optional(), "customerInfo": zod.z.object({ "firstName": zod.z.string().optional(), "lastName": zod.z.string().optional(), "email": zod.z.string().optional(), "address": zod.z.object({ "street": zod.z.string().optional(), "city": zod.z.string().optional(), "state": zod.z.string().optional(), "postalCode": zod.z.string().optional(), "country": zod.z.string().optional() }).passthrough().optional() }).passthrough().nullable().optional(), "reference": zod.z.string().nullable().optional(), "amountInUsd": zod.z.string().nullable().optional(), "conversionRate": zod.z.string().nullable().optional(), "rateSource": zod.z.enum(["lifi", "chainlink", "coingecko", "unknown", "mixed"]).optional(), "conversionBreakdown": zod.z.object({ "paidAmount": zod.z.string().optional(), "paidAmountInUsd": zod.z.string().optional(), "remainingAmount": zod.z.string().optional(), "remainingAmountInUsd": zod.z.string().optional(), "currentMarketRate": zod.z.string().nullable().optional(), "currentMarketRateSource": zod.z.enum(["lifi", "chainlink", "coingecko", "unknown"]).optional(), "payments": zod.z.array(zod.z.object({ "amount": zod.z.string().optional(), "amountInUsd": zod.z.string().optional(), "conversionRate": zod.z.string().optional(), "rateSource": zod.z.enum(["lifi", "chainlink", "coingecko", "unknown"]).optional(), "timestamp": zod.z.string().optional() }).passthrough()).optional() }).passthrough().nullable().optional(), "fees": zod.z.array(zod.z.object({ "type": zod.z.enum(["gas", "platform", "crosschain", "crypto-to-fiat", "offramp", "protocol"]).optional(), "provider": zod.z.string().optional(), "amount": zod.z.string().nullable().optional(), "currency": zod.z.string().optional() }).passthrough()).nullable().optional() }).passthrough();
475
503
  schemaRegistry.register({ key: { operationId: "RequestControllerV2_getRequestStatus_v2", kind: "response", status: 200 }, schema: RequestControllerV2_getRequestStatus_v2_200 });
476
504
  var RequestControllerV2_getRequestStatus_v2_404 = ErrorEnvelopeSchema;
477
505
  schemaRegistry.register({ key: { operationId: "RequestControllerV2_getRequestStatus_v2", kind: "response", status: 404 }, schema: RequestControllerV2_getRequestStatus_v2_404 });