@t402/core 2.3.0 → 2.4.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.
- package/dist/cjs/client/index.d.ts +3 -2
- package/dist/cjs/client/index.js +70 -2
- package/dist/cjs/client/index.js.map +1 -1
- package/dist/cjs/facilitator/index.d.ts +2 -1
- package/dist/cjs/http/index.d.ts +13 -6
- package/dist/cjs/http/index.js +73 -3
- package/dist/cjs/http/index.js.map +1 -1
- package/dist/cjs/mechanisms-C7yK91d4.d.ts +1126 -0
- package/dist/cjs/server/index.d.ts +3 -2
- package/dist/cjs/server/index.js +67 -1
- package/dist/cjs/server/index.js.map +1 -1
- package/dist/cjs/{t402HTTPClient-GIweW6nh.d.ts → t402HTTPClient-DmkFydNG.d.ts} +1 -1
- package/dist/cjs/{t402HTTPResourceServer-CcpZF3af.d.ts → t402HTTPResourceServer-CybruqCk.d.ts} +1 -1
- package/dist/cjs/types/index.d.ts +2 -1
- package/dist/cjs/types/index.js +469 -2
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/types/v1/index.d.ts +2 -1
- package/dist/cjs/utils/index.d.ts +29 -2
- package/dist/cjs/utils/index.js +53 -0
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/esm/chunk-KPNYZYDS.mjs +100 -0
- package/dist/esm/chunk-KPNYZYDS.mjs.map +1 -0
- package/dist/esm/{chunk-3IUBYRYG.mjs → chunk-LJ4M5Z5U.mjs} +51 -1
- package/dist/esm/chunk-LJ4M5Z5U.mjs.map +1 -0
- package/dist/esm/{chunk-773TNE2Y.mjs → chunk-REMGOG6C.mjs} +16 -5
- package/dist/esm/{chunk-773TNE2Y.mjs.map → chunk-REMGOG6C.mjs.map} +1 -1
- package/dist/esm/client/index.d.mts +3 -2
- package/dist/esm/client/index.mjs +3 -2
- package/dist/esm/client/index.mjs.map +1 -1
- package/dist/esm/facilitator/index.d.mts +2 -1
- package/dist/esm/http/index.d.mts +13 -6
- package/dist/esm/http/index.mjs +3 -2
- package/dist/esm/mechanisms-C7yK91d4.d.mts +1126 -0
- package/dist/esm/server/index.d.mts +3 -2
- package/dist/esm/server/index.mjs +3 -2
- package/dist/esm/server/index.mjs.map +1 -1
- package/dist/esm/{t402HTTPClient-DbZqiMSO.d.mts → t402HTTPClient-Bgjn3TRU.d.mts} +1 -1
- package/dist/esm/{t402HTTPResourceServer-BbQ6HVBC.d.mts → t402HTTPResourceServer-DuZIzhRI.d.mts} +1 -1
- package/dist/esm/types/index.d.mts +2 -1
- package/dist/esm/types/index.mjs +304 -1
- package/dist/esm/types/index.mjs.map +1 -1
- package/dist/esm/types/v1/index.d.mts +2 -1
- package/dist/esm/utils/index.d.mts +29 -2
- package/dist/esm/utils/index.mjs +7 -1
- package/package.json +3 -3
- package/dist/cjs/mechanisms-B-vz5yOj.d.ts +0 -443
- package/dist/esm/chunk-3IUBYRYG.mjs.map +0 -1
- package/dist/esm/mechanisms-B-vz5yOj.d.mts +0 -443
package/dist/cjs/types/index.js
CHANGED
|
@@ -20,13 +20,186 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/types/index.ts
|
|
21
21
|
var types_exports = {};
|
|
22
22
|
__export(types_exports, {
|
|
23
|
+
A2A_EXTENSIONS_HEADER: () => A2A_EXTENSIONS_HEADER,
|
|
24
|
+
ERR_ALLOWANCE_INSUFFICIENT: () => ERR_ALLOWANCE_INSUFFICIENT,
|
|
25
|
+
ERR_BRIDGE_QUOTE_FAILED: () => ERR_BRIDGE_QUOTE_FAILED,
|
|
26
|
+
ERR_BRIDGE_TIMEOUT: () => ERR_BRIDGE_TIMEOUT,
|
|
27
|
+
ERR_BRIDGE_TRANSFER_FAILED: () => ERR_BRIDGE_TRANSFER_FAILED,
|
|
28
|
+
ERR_BRIDGE_UNAVAILABLE: () => ERR_BRIDGE_UNAVAILABLE,
|
|
29
|
+
ERR_CACHE_UNAVAILABLE: () => ERR_CACHE_UNAVAILABLE,
|
|
30
|
+
ERR_CHAIN_CONGESTED: () => ERR_CHAIN_CONGESTED,
|
|
31
|
+
ERR_CHAIN_UNAVAILABLE: () => ERR_CHAIN_UNAVAILABLE,
|
|
32
|
+
ERR_CONTRACT_ERROR: () => ERR_CONTRACT_ERROR,
|
|
33
|
+
ERR_DATABASE_UNAVAILABLE: () => ERR_DATABASE_UNAVAILABLE,
|
|
34
|
+
ERR_DUPLICATE_PAYMENT: () => ERR_DUPLICATE_PAYMENT,
|
|
35
|
+
ERR_EXPIRED_PAYMENT: () => ERR_EXPIRED_PAYMENT,
|
|
36
|
+
ERR_GAS_ESTIMATION_FAILED: () => ERR_GAS_ESTIMATION_FAILED,
|
|
37
|
+
ERR_IDEMPOTENCY_CONFLICT: () => ERR_IDEMPOTENCY_CONFLICT,
|
|
38
|
+
ERR_IDEMPOTENCY_UNAVAILABLE: () => ERR_IDEMPOTENCY_UNAVAILABLE,
|
|
39
|
+
ERR_INSUFFICIENT_AMOUNT: () => ERR_INSUFFICIENT_AMOUNT,
|
|
40
|
+
ERR_INSUFFICIENT_BALANCE: () => ERR_INSUFFICIENT_BALANCE,
|
|
41
|
+
ERR_INTENT_ALREADY_EXECUTED: () => ERR_INTENT_ALREADY_EXECUTED,
|
|
42
|
+
ERR_INTENT_CANCELLED: () => ERR_INTENT_CANCELLED,
|
|
43
|
+
ERR_INTENT_EXPIRED: () => ERR_INTENT_EXPIRED,
|
|
44
|
+
ERR_INTENT_INVALID_STATE: () => ERR_INTENT_INVALID_STATE,
|
|
45
|
+
ERR_INTENT_NOT_FOUND: () => ERR_INTENT_NOT_FOUND,
|
|
46
|
+
ERR_INTERNAL: () => ERR_INTERNAL,
|
|
47
|
+
ERR_INVALID_ADDRESS: () => ERR_INVALID_ADDRESS,
|
|
48
|
+
ERR_INVALID_AMOUNT: () => ERR_INVALID_AMOUNT,
|
|
49
|
+
ERR_INVALID_IDEMPOTENCY_KEY: () => ERR_INVALID_IDEMPOTENCY_KEY,
|
|
50
|
+
ERR_INVALID_NETWORK: () => ERR_INVALID_NETWORK,
|
|
51
|
+
ERR_INVALID_NONCE: () => ERR_INVALID_NONCE,
|
|
52
|
+
ERR_INVALID_PARAMETERS: () => ERR_INVALID_PARAMETERS,
|
|
53
|
+
ERR_INVALID_PAYLOAD: () => ERR_INVALID_PAYLOAD,
|
|
54
|
+
ERR_INVALID_REQUEST: () => ERR_INVALID_REQUEST,
|
|
55
|
+
ERR_INVALID_REQUIREMENTS: () => ERR_INVALID_REQUIREMENTS,
|
|
56
|
+
ERR_INVALID_SCHEME: () => ERR_INVALID_SCHEME,
|
|
57
|
+
ERR_INVALID_SIGNATURE: () => ERR_INVALID_SIGNATURE,
|
|
58
|
+
ERR_MISSING_PAYLOAD: () => ERR_MISSING_PAYLOAD,
|
|
59
|
+
ERR_MISSING_REQUIREMENTS: () => ERR_MISSING_REQUIREMENTS,
|
|
60
|
+
ERR_NONCE_CONFLICT: () => ERR_NONCE_CONFLICT,
|
|
61
|
+
ERR_NONCE_REPLAY: () => ERR_NONCE_REPLAY,
|
|
62
|
+
ERR_NOT_AUTHORIZED: () => ERR_NOT_AUTHORIZED,
|
|
63
|
+
ERR_NO_ROUTES_AVAILABLE: () => ERR_NO_ROUTES_AVAILABLE,
|
|
64
|
+
ERR_PAYMENT_MISMATCH: () => ERR_PAYMENT_MISMATCH,
|
|
65
|
+
ERR_PREVIOUS_REQUEST_FAILED: () => ERR_PREVIOUS_REQUEST_FAILED,
|
|
66
|
+
ERR_RATE_LIMITED: () => ERR_RATE_LIMITED,
|
|
67
|
+
ERR_REQUEST_IN_PROGRESS: () => ERR_REQUEST_IN_PROGRESS,
|
|
68
|
+
ERR_RESOURCE_ALREADY_EXISTS: () => ERR_RESOURCE_ALREADY_EXISTS,
|
|
69
|
+
ERR_RESOURCE_NOT_FOUND: () => ERR_RESOURCE_NOT_FOUND,
|
|
70
|
+
ERR_ROUTE_EXPIRED: () => ERR_ROUTE_EXPIRED,
|
|
71
|
+
ERR_ROUTE_NOT_SELECTED: () => ERR_ROUTE_NOT_SELECTED,
|
|
72
|
+
ERR_RPC_UNAVAILABLE: () => ERR_RPC_UNAVAILABLE,
|
|
73
|
+
ERR_SERVICE_UNAVAILABLE: () => ERR_SERVICE_UNAVAILABLE,
|
|
74
|
+
ERR_SETTLEMENT_FAILED: () => ERR_SETTLEMENT_FAILED,
|
|
75
|
+
ERR_SETTLEMENT_PENDING: () => ERR_SETTLEMENT_PENDING,
|
|
76
|
+
ERR_SETTLEMENT_TIMEOUT: () => ERR_SETTLEMENT_TIMEOUT,
|
|
77
|
+
ERR_SIGNATURE_EXPIRED: () => ERR_SIGNATURE_EXPIRED,
|
|
78
|
+
ERR_STREAM_ALREADY_CLOSED: () => ERR_STREAM_ALREADY_CLOSED,
|
|
79
|
+
ERR_STREAM_ALREADY_PAUSED: () => ERR_STREAM_ALREADY_PAUSED,
|
|
80
|
+
ERR_STREAM_AMOUNT_EXCEEDED: () => ERR_STREAM_AMOUNT_EXCEEDED,
|
|
81
|
+
ERR_STREAM_EXPIRED: () => ERR_STREAM_EXPIRED,
|
|
82
|
+
ERR_STREAM_INVALID_STATE: () => ERR_STREAM_INVALID_STATE,
|
|
83
|
+
ERR_STREAM_NOT_FOUND: () => ERR_STREAM_NOT_FOUND,
|
|
84
|
+
ERR_STREAM_NOT_PAUSED: () => ERR_STREAM_NOT_PAUSED,
|
|
85
|
+
ERR_STREAM_RATE_LIMITED: () => ERR_STREAM_RATE_LIMITED,
|
|
86
|
+
ERR_TRANSACTION_FAILED: () => ERR_TRANSACTION_FAILED,
|
|
87
|
+
ERR_TRANSACTION_REVERTED: () => ERR_TRANSACTION_REVERTED,
|
|
88
|
+
ERR_UNSUPPORTED_ROUTE: () => ERR_UNSUPPORTED_ROUTE,
|
|
89
|
+
ERR_VERIFICATION_FAILED: () => ERR_VERIFICATION_FAILED,
|
|
90
|
+
NetworkSchema: () => NetworkSchema,
|
|
91
|
+
PaymentPayloadSchema: () => PaymentPayloadSchema,
|
|
92
|
+
PaymentPayloadV1Schema: () => PaymentPayloadV1Schema,
|
|
93
|
+
PaymentRequiredSchema: () => PaymentRequiredSchema,
|
|
94
|
+
PaymentRequirementsSchema: () => PaymentRequirementsSchema,
|
|
95
|
+
PaymentRequirementsV1Schema: () => PaymentRequirementsV1Schema,
|
|
96
|
+
ResourceInfoSchema: () => ResourceInfoSchema,
|
|
97
|
+
SettleResponseSchema: () => SettleResponseSchema,
|
|
98
|
+
T402_A2A_EXTENSION_URI: () => T402_A2A_EXTENSION_URI,
|
|
23
99
|
UPTO_DEFAULTS: () => UPTO_DEFAULTS,
|
|
24
100
|
UPTO_SCHEME: () => UPTO_SCHEME,
|
|
101
|
+
VerifyResponseSchema: () => VerifyResponseSchema,
|
|
102
|
+
createPaymentCompletedMessage: () => createPaymentCompletedMessage,
|
|
103
|
+
createPaymentFailedMessage: () => createPaymentFailedMessage,
|
|
104
|
+
createPaymentRequiredMessage: () => createPaymentRequiredMessage,
|
|
105
|
+
createPaymentSubmissionMessage: () => createPaymentSubmissionMessage,
|
|
106
|
+
createT402Extension: () => createT402Extension,
|
|
107
|
+
getPaymentReceipts: () => getPaymentReceipts,
|
|
108
|
+
getPaymentRequired: () => getPaymentRequired,
|
|
109
|
+
httpStatusForCode: () => httpStatusForCode,
|
|
110
|
+
isBridgeError: () => isBridgeError,
|
|
111
|
+
isChainError: () => isChainError,
|
|
112
|
+
isClientError: () => isClientError,
|
|
113
|
+
isFacilitatorError: () => isFacilitatorError,
|
|
114
|
+
isPaymentCompleted: () => isPaymentCompleted,
|
|
115
|
+
isPaymentFailed: () => isPaymentFailed,
|
|
116
|
+
isPaymentRequired: () => isPaymentRequired,
|
|
117
|
+
isServerError: () => isServerError,
|
|
25
118
|
isUptoEvmPayload: () => isUptoEvmPayload,
|
|
26
|
-
isUptoPaymentRequirements: () => isUptoPaymentRequirements
|
|
119
|
+
isUptoPaymentRequirements: () => isUptoPaymentRequirements,
|
|
120
|
+
parsePaymentPayload: () => parsePaymentPayload,
|
|
121
|
+
parsePaymentRequired: () => parsePaymentRequired,
|
|
122
|
+
parsePaymentRequirements: () => parsePaymentRequirements,
|
|
123
|
+
safeParsePaymentPayload: () => safeParsePaymentPayload,
|
|
124
|
+
safeParsePaymentRequired: () => safeParsePaymentRequired,
|
|
125
|
+
safeParsePaymentRequirements: () => safeParsePaymentRequirements
|
|
27
126
|
});
|
|
28
127
|
module.exports = __toCommonJS(types_exports);
|
|
29
128
|
|
|
129
|
+
// src/types/a2a.ts
|
|
130
|
+
var T402_A2A_EXTENSION_URI = "https://github.com/google-a2a/a2a-t402/v0.1";
|
|
131
|
+
var A2A_EXTENSIONS_HEADER = "X-A2A-Extensions";
|
|
132
|
+
function isPaymentRequired(task) {
|
|
133
|
+
return task.status.state === "input-required" && task.status.message?.metadata?.["t402.payment.status"] === "payment-required";
|
|
134
|
+
}
|
|
135
|
+
function isPaymentCompleted(task) {
|
|
136
|
+
return task.status.state === "completed" && task.status.message?.metadata?.["t402.payment.status"] === "payment-completed";
|
|
137
|
+
}
|
|
138
|
+
function isPaymentFailed(task) {
|
|
139
|
+
return task.status.state === "failed" && task.status.message?.metadata?.["t402.payment.status"] === "payment-failed";
|
|
140
|
+
}
|
|
141
|
+
function getPaymentRequired(task) {
|
|
142
|
+
if (isPaymentRequired(task)) {
|
|
143
|
+
return task.status.message?.metadata?.["t402.payment.required"];
|
|
144
|
+
}
|
|
145
|
+
return void 0;
|
|
146
|
+
}
|
|
147
|
+
function getPaymentReceipts(task) {
|
|
148
|
+
return task.status.message?.metadata?.["t402.payment.receipts"];
|
|
149
|
+
}
|
|
150
|
+
function createPaymentRequiredMessage(paymentRequired, text = "Payment is required to complete this request.") {
|
|
151
|
+
return {
|
|
152
|
+
kind: "message",
|
|
153
|
+
role: "agent",
|
|
154
|
+
parts: [{ kind: "text", text }],
|
|
155
|
+
metadata: {
|
|
156
|
+
"t402.payment.status": "payment-required",
|
|
157
|
+
"t402.payment.required": paymentRequired
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
function createPaymentSubmissionMessage(paymentPayload, text = "Here is the payment authorization.") {
|
|
162
|
+
return {
|
|
163
|
+
kind: "message",
|
|
164
|
+
role: "user",
|
|
165
|
+
parts: [{ kind: "text", text }],
|
|
166
|
+
metadata: {
|
|
167
|
+
"t402.payment.status": "payment-submitted",
|
|
168
|
+
"t402.payment.payload": paymentPayload
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
function createPaymentCompletedMessage(receipts, text = "Payment successful.") {
|
|
173
|
+
return {
|
|
174
|
+
kind: "message",
|
|
175
|
+
role: "agent",
|
|
176
|
+
parts: [{ kind: "text", text }],
|
|
177
|
+
metadata: {
|
|
178
|
+
"t402.payment.status": "payment-completed",
|
|
179
|
+
"t402.payment.receipts": receipts
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
function createPaymentFailedMessage(receipts, errorCode, text = "Payment failed.") {
|
|
184
|
+
return {
|
|
185
|
+
kind: "message",
|
|
186
|
+
role: "agent",
|
|
187
|
+
parts: [{ kind: "text", text }],
|
|
188
|
+
metadata: {
|
|
189
|
+
"t402.payment.status": "payment-failed",
|
|
190
|
+
"t402.payment.error": errorCode,
|
|
191
|
+
"t402.payment.receipts": receipts
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
function createT402Extension(required = false) {
|
|
196
|
+
return {
|
|
197
|
+
uri: T402_A2A_EXTENSION_URI,
|
|
198
|
+
description: "Supports payments using the t402 protocol for on-chain settlement.",
|
|
199
|
+
required
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
|
|
30
203
|
// src/types/schemes/upto.ts
|
|
31
204
|
function isUptoPaymentRequirements(requirements) {
|
|
32
205
|
if (typeof requirements !== "object" || requirements === null) return false;
|
|
@@ -47,11 +220,305 @@ var UPTO_DEFAULTS = {
|
|
|
47
220
|
/** Supported billing units */
|
|
48
221
|
UNITS: ["token", "request", "second", "minute", "byte", "kb", "mb"]
|
|
49
222
|
};
|
|
223
|
+
|
|
224
|
+
// src/types/errors.ts
|
|
225
|
+
var ERR_INVALID_REQUEST = "T402-1001";
|
|
226
|
+
var ERR_MISSING_PAYLOAD = "T402-1002";
|
|
227
|
+
var ERR_MISSING_REQUIREMENTS = "T402-1003";
|
|
228
|
+
var ERR_INVALID_PAYLOAD = "T402-1004";
|
|
229
|
+
var ERR_INVALID_REQUIREMENTS = "T402-1005";
|
|
230
|
+
var ERR_INVALID_SIGNATURE = "T402-1006";
|
|
231
|
+
var ERR_INVALID_NETWORK = "T402-1007";
|
|
232
|
+
var ERR_INVALID_SCHEME = "T402-1008";
|
|
233
|
+
var ERR_INVALID_AMOUNT = "T402-1009";
|
|
234
|
+
var ERR_INVALID_ADDRESS = "T402-1010";
|
|
235
|
+
var ERR_EXPIRED_PAYMENT = "T402-1011";
|
|
236
|
+
var ERR_INVALID_NONCE = "T402-1012";
|
|
237
|
+
var ERR_INSUFFICIENT_AMOUNT = "T402-1013";
|
|
238
|
+
var ERR_INVALID_IDEMPOTENCY_KEY = "T402-1014";
|
|
239
|
+
var ERR_SIGNATURE_EXPIRED = "T402-1015";
|
|
240
|
+
var ERR_INTERNAL = "T402-2001";
|
|
241
|
+
var ERR_DATABASE_UNAVAILABLE = "T402-2002";
|
|
242
|
+
var ERR_CACHE_UNAVAILABLE = "T402-2003";
|
|
243
|
+
var ERR_RPC_UNAVAILABLE = "T402-2004";
|
|
244
|
+
var ERR_RATE_LIMITED = "T402-2005";
|
|
245
|
+
var ERR_SERVICE_UNAVAILABLE = "T402-2006";
|
|
246
|
+
var ERR_VERIFICATION_FAILED = "T402-3001";
|
|
247
|
+
var ERR_SETTLEMENT_FAILED = "T402-3002";
|
|
248
|
+
var ERR_INSUFFICIENT_BALANCE = "T402-3003";
|
|
249
|
+
var ERR_ALLOWANCE_INSUFFICIENT = "T402-3004";
|
|
250
|
+
var ERR_PAYMENT_MISMATCH = "T402-3005";
|
|
251
|
+
var ERR_DUPLICATE_PAYMENT = "T402-3006";
|
|
252
|
+
var ERR_SETTLEMENT_PENDING = "T402-3007";
|
|
253
|
+
var ERR_SETTLEMENT_TIMEOUT = "T402-3008";
|
|
254
|
+
var ERR_NONCE_REPLAY = "T402-3009";
|
|
255
|
+
var ERR_IDEMPOTENCY_CONFLICT = "T402-3010";
|
|
256
|
+
var ERR_IDEMPOTENCY_UNAVAILABLE = "T402-3011";
|
|
257
|
+
var ERR_PREVIOUS_REQUEST_FAILED = "T402-3012";
|
|
258
|
+
var ERR_REQUEST_IN_PROGRESS = "T402-3013";
|
|
259
|
+
var ERR_CHAIN_UNAVAILABLE = "T402-4001";
|
|
260
|
+
var ERR_TRANSACTION_FAILED = "T402-4002";
|
|
261
|
+
var ERR_TRANSACTION_REVERTED = "T402-4003";
|
|
262
|
+
var ERR_GAS_ESTIMATION_FAILED = "T402-4004";
|
|
263
|
+
var ERR_NONCE_CONFLICT = "T402-4005";
|
|
264
|
+
var ERR_CHAIN_CONGESTED = "T402-4006";
|
|
265
|
+
var ERR_CONTRACT_ERROR = "T402-4007";
|
|
266
|
+
var ERR_BRIDGE_UNAVAILABLE = "T402-5001";
|
|
267
|
+
var ERR_BRIDGE_QUOTE_FAILED = "T402-5002";
|
|
268
|
+
var ERR_BRIDGE_TRANSFER_FAILED = "T402-5003";
|
|
269
|
+
var ERR_BRIDGE_TIMEOUT = "T402-5004";
|
|
270
|
+
var ERR_UNSUPPORTED_ROUTE = "T402-5005";
|
|
271
|
+
var ERR_STREAM_NOT_FOUND = "T402-6001";
|
|
272
|
+
var ERR_STREAM_ALREADY_CLOSED = "T402-6002";
|
|
273
|
+
var ERR_STREAM_ALREADY_PAUSED = "T402-6003";
|
|
274
|
+
var ERR_STREAM_NOT_PAUSED = "T402-6004";
|
|
275
|
+
var ERR_STREAM_AMOUNT_EXCEEDED = "T402-6005";
|
|
276
|
+
var ERR_STREAM_EXPIRED = "T402-6006";
|
|
277
|
+
var ERR_STREAM_INVALID_STATE = "T402-6007";
|
|
278
|
+
var ERR_STREAM_RATE_LIMITED = "T402-6008";
|
|
279
|
+
var ERR_INTENT_NOT_FOUND = "T402-7001";
|
|
280
|
+
var ERR_INTENT_ALREADY_EXECUTED = "T402-7002";
|
|
281
|
+
var ERR_INTENT_CANCELLED = "T402-7003";
|
|
282
|
+
var ERR_INTENT_EXPIRED = "T402-7004";
|
|
283
|
+
var ERR_NO_ROUTES_AVAILABLE = "T402-7005";
|
|
284
|
+
var ERR_ROUTE_EXPIRED = "T402-7006";
|
|
285
|
+
var ERR_ROUTE_NOT_SELECTED = "T402-7007";
|
|
286
|
+
var ERR_INTENT_INVALID_STATE = "T402-7008";
|
|
287
|
+
var ERR_RESOURCE_NOT_FOUND = "T402-8001";
|
|
288
|
+
var ERR_RESOURCE_ALREADY_EXISTS = "T402-8002";
|
|
289
|
+
var ERR_INVALID_PARAMETERS = "T402-8003";
|
|
290
|
+
var ERR_NOT_AUTHORIZED = "T402-8004";
|
|
291
|
+
function httpStatusForCode(code) {
|
|
292
|
+
const category = code.charAt(5);
|
|
293
|
+
switch (category) {
|
|
294
|
+
case "1":
|
|
295
|
+
return 400;
|
|
296
|
+
case "2":
|
|
297
|
+
if (code === ERR_RATE_LIMITED) return 429;
|
|
298
|
+
return 500;
|
|
299
|
+
case "3":
|
|
300
|
+
if (code === ERR_VERIFICATION_FAILED || code === ERR_PAYMENT_MISMATCH) return 422;
|
|
301
|
+
return 500;
|
|
302
|
+
case "4":
|
|
303
|
+
return 502;
|
|
304
|
+
case "5":
|
|
305
|
+
return 502;
|
|
306
|
+
case "6":
|
|
307
|
+
if (code === ERR_STREAM_NOT_FOUND) return 404;
|
|
308
|
+
return 400;
|
|
309
|
+
case "7":
|
|
310
|
+
if (code === ERR_INTENT_NOT_FOUND) return 404;
|
|
311
|
+
return 400;
|
|
312
|
+
case "8":
|
|
313
|
+
if (code === ERR_RESOURCE_NOT_FOUND) return 404;
|
|
314
|
+
if (code === ERR_RESOURCE_ALREADY_EXISTS) return 409;
|
|
315
|
+
if (code === ERR_NOT_AUTHORIZED) return 403;
|
|
316
|
+
return 400;
|
|
317
|
+
default:
|
|
318
|
+
return 500;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
function isClientError(code) {
|
|
322
|
+
return code.charAt(5) === "1";
|
|
323
|
+
}
|
|
324
|
+
function isServerError(code) {
|
|
325
|
+
return code.charAt(5) === "2";
|
|
326
|
+
}
|
|
327
|
+
function isFacilitatorError(code) {
|
|
328
|
+
return code.charAt(5) === "3";
|
|
329
|
+
}
|
|
330
|
+
function isChainError(code) {
|
|
331
|
+
return code.charAt(5) === "4";
|
|
332
|
+
}
|
|
333
|
+
function isBridgeError(code) {
|
|
334
|
+
return code.charAt(5) === "5";
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
// src/types/schemas.ts
|
|
338
|
+
var import_zod = require("zod");
|
|
339
|
+
var NetworkSchema = import_zod.z.string().regex(/^[a-z0-9-]+:[a-zA-Z0-9-]+$/, {
|
|
340
|
+
message: "Network must be in CAIP-2 format (e.g., 'eip155:1', 'solana:mainnet')"
|
|
341
|
+
});
|
|
342
|
+
var ResourceInfoSchema = import_zod.z.object({
|
|
343
|
+
url: import_zod.z.string().url({ message: "Resource URL must be a valid URL" }),
|
|
344
|
+
description: import_zod.z.string().optional(),
|
|
345
|
+
mimeType: import_zod.z.string().optional()
|
|
346
|
+
});
|
|
347
|
+
var PaymentRequirementsSchema = import_zod.z.object({
|
|
348
|
+
scheme: import_zod.z.string().min(1, { message: "Scheme is required" }),
|
|
349
|
+
network: NetworkSchema,
|
|
350
|
+
asset: import_zod.z.string().min(1, { message: "Asset address is required" }),
|
|
351
|
+
amount: import_zod.z.string().regex(/^\d+$/, { message: "Amount must be a non-negative integer string" }),
|
|
352
|
+
payTo: import_zod.z.string().min(1, { message: "PayTo address is required" }),
|
|
353
|
+
maxTimeoutSeconds: import_zod.z.number().int().positive({ message: "maxTimeoutSeconds must be a positive integer" }),
|
|
354
|
+
extra: import_zod.z.record(import_zod.z.unknown())
|
|
355
|
+
});
|
|
356
|
+
var PaymentRequiredSchema = import_zod.z.object({
|
|
357
|
+
t402Version: import_zod.z.literal(2, {
|
|
358
|
+
errorMap: () => ({ message: "t402Version must be 2 for V2 protocol" })
|
|
359
|
+
}),
|
|
360
|
+
error: import_zod.z.string().optional(),
|
|
361
|
+
resource: ResourceInfoSchema,
|
|
362
|
+
accepts: import_zod.z.array(PaymentRequirementsSchema).min(1, { message: "At least one payment option is required" }),
|
|
363
|
+
extensions: import_zod.z.record(import_zod.z.unknown()).optional()
|
|
364
|
+
});
|
|
365
|
+
var PaymentPayloadSchema = import_zod.z.object({
|
|
366
|
+
t402Version: import_zod.z.literal(2, {
|
|
367
|
+
errorMap: () => ({ message: "t402Version must be 2 for V2 protocol" })
|
|
368
|
+
}),
|
|
369
|
+
resource: ResourceInfoSchema.optional(),
|
|
370
|
+
accepted: PaymentRequirementsSchema,
|
|
371
|
+
payload: import_zod.z.record(import_zod.z.unknown()),
|
|
372
|
+
extensions: import_zod.z.record(import_zod.z.unknown()).optional()
|
|
373
|
+
});
|
|
374
|
+
var VerifyResponseSchema = import_zod.z.object({
|
|
375
|
+
isValid: import_zod.z.boolean(),
|
|
376
|
+
invalidReason: import_zod.z.string().optional(),
|
|
377
|
+
payer: import_zod.z.string().optional()
|
|
378
|
+
});
|
|
379
|
+
var SettleResponseSchema = import_zod.z.object({
|
|
380
|
+
success: import_zod.z.boolean(),
|
|
381
|
+
transaction: import_zod.z.string(),
|
|
382
|
+
network: NetworkSchema,
|
|
383
|
+
errorReason: import_zod.z.string().optional(),
|
|
384
|
+
payer: import_zod.z.string().optional()
|
|
385
|
+
});
|
|
386
|
+
var PaymentRequirementsV1Schema = import_zod.z.object({
|
|
387
|
+
scheme: import_zod.z.string().min(1),
|
|
388
|
+
network: import_zod.z.string().min(1),
|
|
389
|
+
asset: import_zod.z.string().min(1),
|
|
390
|
+
amount: import_zod.z.string().regex(/^\d+$/),
|
|
391
|
+
payTo: import_zod.z.string().min(1),
|
|
392
|
+
maxTimeoutSeconds: import_zod.z.number().int().positive(),
|
|
393
|
+
extra: import_zod.z.record(import_zod.z.unknown()).optional()
|
|
394
|
+
});
|
|
395
|
+
var PaymentPayloadV1Schema = import_zod.z.object({
|
|
396
|
+
t402Version: import_zod.z.literal(1).optional(),
|
|
397
|
+
accepted: PaymentRequirementsV1Schema,
|
|
398
|
+
payload: import_zod.z.record(import_zod.z.unknown())
|
|
399
|
+
});
|
|
400
|
+
function parsePaymentPayload(data) {
|
|
401
|
+
return PaymentPayloadSchema.parse(data);
|
|
402
|
+
}
|
|
403
|
+
function parsePaymentRequired(data) {
|
|
404
|
+
return PaymentRequiredSchema.parse(data);
|
|
405
|
+
}
|
|
406
|
+
function parsePaymentRequirements(data) {
|
|
407
|
+
return PaymentRequirementsSchema.parse(data);
|
|
408
|
+
}
|
|
409
|
+
function safeParsePaymentPayload(data) {
|
|
410
|
+
return PaymentPayloadSchema.safeParse(data);
|
|
411
|
+
}
|
|
412
|
+
function safeParsePaymentRequired(data) {
|
|
413
|
+
return PaymentRequiredSchema.safeParse(data);
|
|
414
|
+
}
|
|
415
|
+
function safeParsePaymentRequirements(data) {
|
|
416
|
+
return PaymentRequirementsSchema.safeParse(data);
|
|
417
|
+
}
|
|
50
418
|
// Annotate the CommonJS export names for ESM import in node:
|
|
51
419
|
0 && (module.exports = {
|
|
420
|
+
A2A_EXTENSIONS_HEADER,
|
|
421
|
+
ERR_ALLOWANCE_INSUFFICIENT,
|
|
422
|
+
ERR_BRIDGE_QUOTE_FAILED,
|
|
423
|
+
ERR_BRIDGE_TIMEOUT,
|
|
424
|
+
ERR_BRIDGE_TRANSFER_FAILED,
|
|
425
|
+
ERR_BRIDGE_UNAVAILABLE,
|
|
426
|
+
ERR_CACHE_UNAVAILABLE,
|
|
427
|
+
ERR_CHAIN_CONGESTED,
|
|
428
|
+
ERR_CHAIN_UNAVAILABLE,
|
|
429
|
+
ERR_CONTRACT_ERROR,
|
|
430
|
+
ERR_DATABASE_UNAVAILABLE,
|
|
431
|
+
ERR_DUPLICATE_PAYMENT,
|
|
432
|
+
ERR_EXPIRED_PAYMENT,
|
|
433
|
+
ERR_GAS_ESTIMATION_FAILED,
|
|
434
|
+
ERR_IDEMPOTENCY_CONFLICT,
|
|
435
|
+
ERR_IDEMPOTENCY_UNAVAILABLE,
|
|
436
|
+
ERR_INSUFFICIENT_AMOUNT,
|
|
437
|
+
ERR_INSUFFICIENT_BALANCE,
|
|
438
|
+
ERR_INTENT_ALREADY_EXECUTED,
|
|
439
|
+
ERR_INTENT_CANCELLED,
|
|
440
|
+
ERR_INTENT_EXPIRED,
|
|
441
|
+
ERR_INTENT_INVALID_STATE,
|
|
442
|
+
ERR_INTENT_NOT_FOUND,
|
|
443
|
+
ERR_INTERNAL,
|
|
444
|
+
ERR_INVALID_ADDRESS,
|
|
445
|
+
ERR_INVALID_AMOUNT,
|
|
446
|
+
ERR_INVALID_IDEMPOTENCY_KEY,
|
|
447
|
+
ERR_INVALID_NETWORK,
|
|
448
|
+
ERR_INVALID_NONCE,
|
|
449
|
+
ERR_INVALID_PARAMETERS,
|
|
450
|
+
ERR_INVALID_PAYLOAD,
|
|
451
|
+
ERR_INVALID_REQUEST,
|
|
452
|
+
ERR_INVALID_REQUIREMENTS,
|
|
453
|
+
ERR_INVALID_SCHEME,
|
|
454
|
+
ERR_INVALID_SIGNATURE,
|
|
455
|
+
ERR_MISSING_PAYLOAD,
|
|
456
|
+
ERR_MISSING_REQUIREMENTS,
|
|
457
|
+
ERR_NONCE_CONFLICT,
|
|
458
|
+
ERR_NONCE_REPLAY,
|
|
459
|
+
ERR_NOT_AUTHORIZED,
|
|
460
|
+
ERR_NO_ROUTES_AVAILABLE,
|
|
461
|
+
ERR_PAYMENT_MISMATCH,
|
|
462
|
+
ERR_PREVIOUS_REQUEST_FAILED,
|
|
463
|
+
ERR_RATE_LIMITED,
|
|
464
|
+
ERR_REQUEST_IN_PROGRESS,
|
|
465
|
+
ERR_RESOURCE_ALREADY_EXISTS,
|
|
466
|
+
ERR_RESOURCE_NOT_FOUND,
|
|
467
|
+
ERR_ROUTE_EXPIRED,
|
|
468
|
+
ERR_ROUTE_NOT_SELECTED,
|
|
469
|
+
ERR_RPC_UNAVAILABLE,
|
|
470
|
+
ERR_SERVICE_UNAVAILABLE,
|
|
471
|
+
ERR_SETTLEMENT_FAILED,
|
|
472
|
+
ERR_SETTLEMENT_PENDING,
|
|
473
|
+
ERR_SETTLEMENT_TIMEOUT,
|
|
474
|
+
ERR_SIGNATURE_EXPIRED,
|
|
475
|
+
ERR_STREAM_ALREADY_CLOSED,
|
|
476
|
+
ERR_STREAM_ALREADY_PAUSED,
|
|
477
|
+
ERR_STREAM_AMOUNT_EXCEEDED,
|
|
478
|
+
ERR_STREAM_EXPIRED,
|
|
479
|
+
ERR_STREAM_INVALID_STATE,
|
|
480
|
+
ERR_STREAM_NOT_FOUND,
|
|
481
|
+
ERR_STREAM_NOT_PAUSED,
|
|
482
|
+
ERR_STREAM_RATE_LIMITED,
|
|
483
|
+
ERR_TRANSACTION_FAILED,
|
|
484
|
+
ERR_TRANSACTION_REVERTED,
|
|
485
|
+
ERR_UNSUPPORTED_ROUTE,
|
|
486
|
+
ERR_VERIFICATION_FAILED,
|
|
487
|
+
NetworkSchema,
|
|
488
|
+
PaymentPayloadSchema,
|
|
489
|
+
PaymentPayloadV1Schema,
|
|
490
|
+
PaymentRequiredSchema,
|
|
491
|
+
PaymentRequirementsSchema,
|
|
492
|
+
PaymentRequirementsV1Schema,
|
|
493
|
+
ResourceInfoSchema,
|
|
494
|
+
SettleResponseSchema,
|
|
495
|
+
T402_A2A_EXTENSION_URI,
|
|
52
496
|
UPTO_DEFAULTS,
|
|
53
497
|
UPTO_SCHEME,
|
|
498
|
+
VerifyResponseSchema,
|
|
499
|
+
createPaymentCompletedMessage,
|
|
500
|
+
createPaymentFailedMessage,
|
|
501
|
+
createPaymentRequiredMessage,
|
|
502
|
+
createPaymentSubmissionMessage,
|
|
503
|
+
createT402Extension,
|
|
504
|
+
getPaymentReceipts,
|
|
505
|
+
getPaymentRequired,
|
|
506
|
+
httpStatusForCode,
|
|
507
|
+
isBridgeError,
|
|
508
|
+
isChainError,
|
|
509
|
+
isClientError,
|
|
510
|
+
isFacilitatorError,
|
|
511
|
+
isPaymentCompleted,
|
|
512
|
+
isPaymentFailed,
|
|
513
|
+
isPaymentRequired,
|
|
514
|
+
isServerError,
|
|
54
515
|
isUptoEvmPayload,
|
|
55
|
-
isUptoPaymentRequirements
|
|
516
|
+
isUptoPaymentRequirements,
|
|
517
|
+
parsePaymentPayload,
|
|
518
|
+
parsePaymentRequired,
|
|
519
|
+
parsePaymentRequirements,
|
|
520
|
+
safeParsePaymentPayload,
|
|
521
|
+
safeParsePaymentRequired,
|
|
522
|
+
safeParsePaymentRequirements
|
|
56
523
|
});
|
|
57
524
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/types/index.ts","../../../src/types/schemes/upto.ts"],"sourcesContent":["export type {\n VerifyRequest,\n VerifyResponse,\n SettleRequest,\n SettleResponse,\n SupportedResponse,\n} from \"./facilitator\";\nexport type { PaymentRequirements, PaymentPayload, PaymentRequired } from \"./payments\";\nexport type {\n SchemeNetworkClient,\n SchemeNetworkFacilitator,\n SchemeNetworkServer,\n MoneyParser,\n} from \"./mechanisms\";\nexport type { PaymentRequirementsV1, PaymentRequiredV1, PaymentPayloadV1 } from \"./v1\";\nexport type { ResourceServerExtension } from \"./extensions\";\n\n// Scheme-specific types\nexport type {\n UptoPaymentRequirements,\n UptoExtra,\n UptoPayloadBase,\n UptoEvmPayload,\n UptoEvmPayloadCompact,\n UptoSettlement,\n UptoUsageDetails,\n UptoSettlementResponse,\n UptoValidationResult,\n UptoUnit,\n} from \"./schemes\";\nexport { isUptoPaymentRequirements, isUptoEvmPayload, UPTO_SCHEME, UPTO_DEFAULTS } from \"./schemes\";\n\nexport type Network = `${string}:${string}`;\n\nexport type Money = string | number;\nexport type AssetAmount = {\n asset: string;\n amount: string;\n extra?: Record<string, unknown>;\n};\nexport type Price = Money | AssetAmount;\n","/**\n * Up-To Scheme Types\n *\n * The `upto` scheme authorizes transfer of up to a maximum amount,\n * enabling usage-based billing where the final settlement amount\n * is determined by actual usage.\n *\n * @example\n * ```typescript\n * // Client authorizes up to $1.00\n * const requirements: UptoPaymentRequirements = {\n * scheme: 'upto',\n * network: 'eip155:8453',\n * maxAmount: '1000000', // $1.00 in USDC\n * minAmount: '10000', // $0.01 minimum\n * asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',\n * payTo: '0x...',\n * maxTimeoutSeconds: 300,\n * extra: {\n * unit: 'token',\n * unitPrice: '100',\n * },\n * };\n *\n * // Server settles for actual usage ($0.15)\n * const settlement: UptoSettlement = {\n * settleAmount: '150000',\n * usageDetails: {\n * tokensGenerated: 1500,\n * unitPrice: '100',\n * },\n * };\n * ```\n */\n\nimport type { Network, PaymentRequirements } from \"../\";\n\n/**\n * Extended payment requirements for the upto scheme.\n */\nexport interface UptoPaymentRequirements extends Omit<PaymentRequirements, \"scheme\" | \"amount\"> {\n /** Scheme identifier - always 'upto' */\n scheme: \"upto\";\n\n /** Network identifier (CAIP-2 format) */\n network: Network;\n\n /** Maximum amount the client authorizes (in smallest denomination) */\n maxAmount: string;\n\n /** Minimum settlement amount (prevents dust payments) */\n minAmount?: string;\n\n /** Asset contract address or identifier */\n asset: string;\n\n /** Recipient address */\n payTo: string;\n\n /** Maximum time in seconds before payment expires */\n maxTimeoutSeconds: number;\n\n /** Additional scheme-specific data */\n extra: UptoExtra;\n}\n\n/**\n * Extra fields specific to the upto scheme.\n */\nexport interface UptoExtra extends Record<string, unknown> {\n /** Billing unit (e.g., 'token', 'request', 'second', 'byte') */\n unit?: string;\n\n /** Price per unit in smallest denomination */\n unitPrice?: string;\n\n /** EIP-712 domain name (for EVM) */\n name?: string;\n\n /** EIP-712 domain version (for EVM) */\n version?: string;\n\n /** Router contract address (for EVM) */\n routerAddress?: string;\n}\n\n/**\n * Base payload structure for upto scheme.\n */\nexport interface UptoPayloadBase {\n /** Unique nonce to prevent replay attacks */\n nonce: string;\n}\n\n/**\n * EVM-specific upto payload using EIP-2612 Permit.\n */\nexport interface UptoEvmPayload extends UptoPayloadBase {\n /** EIP-2612 permit signature components */\n signature: {\n v: number;\n r: `0x${string}`;\n s: `0x${string}`;\n };\n\n /** Permit authorization parameters */\n authorization: {\n /** Token owner address */\n owner: `0x${string}`;\n\n /** Spender address (router contract) */\n spender: `0x${string}`;\n\n /** Maximum authorized value */\n value: string;\n\n /** Permit deadline (unix timestamp) */\n deadline: string;\n\n /** Permit nonce (from token contract) */\n nonce: number;\n };\n}\n\n/**\n * Alternative EVM payload with combined signature.\n */\nexport interface UptoEvmPayloadCompact extends UptoPayloadBase {\n /** Combined EIP-2612 permit signature */\n signature: `0x${string}`;\n\n /** Permit authorization parameters */\n authorization: {\n owner: `0x${string}`;\n spender: `0x${string}`;\n value: string;\n deadline: string;\n nonce: number;\n };\n}\n\n/**\n * Settlement request for upto scheme.\n */\nexport interface UptoSettlement {\n /** Actual amount to settle (must be <= maxAmount) */\n settleAmount: string;\n\n /** Optional usage details for auditing */\n usageDetails?: UptoUsageDetails;\n}\n\n/**\n * Usage details for settlement auditing.\n */\nexport interface UptoUsageDetails {\n /** Number of units consumed */\n unitsConsumed?: number;\n\n /** Price per unit used */\n unitPrice?: string;\n\n /** Type of unit */\n unitType?: string;\n\n /** Start timestamp of usage period */\n startTime?: number;\n\n /** End timestamp of usage period */\n endTime?: number;\n\n /** Additional metadata */\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Settlement response for upto scheme.\n */\nexport interface UptoSettlementResponse {\n /** Whether settlement was successful */\n success: boolean;\n\n /** Transaction hash (if on-chain) */\n transactionHash?: string;\n\n /** Actual amount settled */\n settledAmount: string;\n\n /** Maximum amount that was authorized */\n maxAmount: string;\n\n /** Block number (if on-chain) */\n blockNumber?: number;\n\n /** Gas used (if on-chain) */\n gasUsed?: string;\n\n /** Error message if failed */\n error?: string;\n}\n\n/**\n * Validation result for upto payment.\n */\nexport interface UptoValidationResult {\n /** Whether the payment is valid */\n isValid: boolean;\n\n /** Reason if invalid */\n invalidReason?: string;\n\n /** Validated maximum amount */\n validatedMaxAmount?: string;\n\n /** Payer address */\n payer?: string;\n\n /** Expiration timestamp */\n expiresAt?: number;\n}\n\n/**\n * Type guard for UptoPaymentRequirements.\n *\n * @param requirements - The value to check\n * @returns True if the value is UptoPaymentRequirements\n */\nexport function isUptoPaymentRequirements(\n requirements: unknown,\n): requirements is UptoPaymentRequirements {\n if (typeof requirements !== \"object\" || requirements === null) return false;\n const req = requirements as Record<string, unknown>;\n return req.scheme === \"upto\" && \"maxAmount\" in req;\n}\n\n/**\n * Type guard for UptoEvmPayload.\n *\n * @param payload - The value to check\n * @returns True if the value is UptoEvmPayload\n */\nexport function isUptoEvmPayload(payload: unknown): payload is UptoEvmPayload {\n if (typeof payload !== \"object\" || payload === null) return false;\n const p = payload as Record<string, unknown>;\n return (\n \"signature\" in p &&\n \"authorization\" in p &&\n typeof p.authorization === \"object\" &&\n p.authorization !== null &&\n \"owner\" in (p.authorization as Record<string, unknown>) &&\n \"spender\" in (p.authorization as Record<string, unknown>) &&\n \"value\" in (p.authorization as Record<string, unknown>) &&\n \"deadline\" in (p.authorization as Record<string, unknown>)\n );\n}\n\n/**\n * Constants for upto scheme.\n */\nexport const UPTO_SCHEME = \"upto\" as const;\n\nexport const UPTO_DEFAULTS = {\n /** Default minimum settlement amount (prevents dust) */\n MIN_AMOUNT: \"1000\",\n\n /** Default maximum timeout in seconds (5 minutes) */\n MAX_TIMEOUT_SECONDS: 300,\n\n /** Supported billing units */\n UNITS: [\"token\", \"request\", \"second\", \"minute\", \"byte\", \"kb\", \"mb\"] as const,\n} as const;\n\nexport type UptoUnit = (typeof UPTO_DEFAULTS.UNITS)[number];\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACmOO,SAAS,0BACd,cACyC;AACzC,MAAI,OAAO,iBAAiB,YAAY,iBAAiB,KAAM,QAAO;AACtE,QAAM,MAAM;AACZ,SAAO,IAAI,WAAW,UAAU,eAAe;AACjD;AAQO,SAAS,iBAAiB,SAA6C;AAC5E,MAAI,OAAO,YAAY,YAAY,YAAY,KAAM,QAAO;AAC5D,QAAM,IAAI;AACV,SACE,eAAe,KACf,mBAAmB,KACnB,OAAO,EAAE,kBAAkB,YAC3B,EAAE,kBAAkB,QACpB,WAAY,EAAE,iBACd,aAAc,EAAE,iBAChB,WAAY,EAAE,iBACd,cAAe,EAAE;AAErB;AAKO,IAAM,cAAc;AAEpB,IAAM,gBAAgB;AAAA;AAAA,EAE3B,YAAY;AAAA;AAAA,EAGZ,qBAAqB;AAAA;AAAA,EAGrB,OAAO,CAAC,SAAS,WAAW,UAAU,UAAU,QAAQ,MAAM,IAAI;AACpE;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/types/index.ts","../../../src/types/a2a.ts","../../../src/types/schemes/upto.ts","../../../src/types/errors.ts","../../../src/types/schemas.ts"],"sourcesContent":["export type {\n VerifyRequest,\n VerifyResponse,\n SettleRequest,\n SettleResponse,\n SupportedResponse,\n} from \"./facilitator\";\nexport type { PaymentRequirements, PaymentPayload, PaymentRequired } from \"./payments\";\nexport type {\n SchemeNetworkClient,\n SchemeNetworkFacilitator,\n SchemeNetworkServer,\n MoneyParser,\n} from \"./mechanisms\";\nexport type { PaymentRequirementsV1, PaymentRequiredV1, PaymentPayloadV1 } from \"./v1\";\nexport type { ResourceServerExtension } from \"./extensions\";\n\n// A2A Transport types\nexport type {\n A2APaymentStatus,\n A2ATaskState,\n A2ATextPart,\n A2AFilePart,\n A2ADataPart,\n A2AMessagePart,\n A2APaymentMetadata,\n A2AMessage,\n A2AArtifact,\n A2ATaskStatus,\n A2ATask,\n A2ARequest,\n A2AResponse,\n A2AError,\n A2AExtension,\n A2ACapabilities,\n A2AAgentCard,\n A2ASkill,\n} from \"./a2a\";\nexport {\n T402_A2A_EXTENSION_URI,\n A2A_EXTENSIONS_HEADER,\n isPaymentRequired,\n isPaymentCompleted,\n isPaymentFailed,\n getPaymentRequired,\n getPaymentReceipts,\n createPaymentRequiredMessage,\n createPaymentSubmissionMessage,\n createPaymentCompletedMessage,\n createPaymentFailedMessage,\n createT402Extension,\n} from \"./a2a\";\n\n// Scheme-specific types\nexport type {\n UptoPaymentRequirements,\n UptoExtra,\n UptoPayloadBase,\n UptoEvmPayload,\n UptoEvmPayloadCompact,\n UptoSettlement,\n UptoUsageDetails,\n UptoSettlementResponse,\n UptoValidationResult,\n UptoUnit,\n} from \"./schemes\";\nexport { isUptoPaymentRequirements, isUptoEvmPayload, UPTO_SCHEME, UPTO_DEFAULTS } from \"./schemes\";\n\n// Error codes\nexport type { ErrorCode, APIError } from \"./errors\";\nexport {\n ERR_INVALID_REQUEST, ERR_MISSING_PAYLOAD, ERR_MISSING_REQUIREMENTS,\n ERR_INVALID_PAYLOAD, ERR_INVALID_REQUIREMENTS, ERR_INVALID_SIGNATURE,\n ERR_INVALID_NETWORK, ERR_INVALID_SCHEME, ERR_INVALID_AMOUNT,\n ERR_INVALID_ADDRESS, ERR_EXPIRED_PAYMENT, ERR_INVALID_NONCE,\n ERR_INSUFFICIENT_AMOUNT, ERR_INVALID_IDEMPOTENCY_KEY, ERR_SIGNATURE_EXPIRED,\n ERR_INTERNAL, ERR_DATABASE_UNAVAILABLE, ERR_CACHE_UNAVAILABLE,\n ERR_RPC_UNAVAILABLE, ERR_RATE_LIMITED, ERR_SERVICE_UNAVAILABLE,\n ERR_VERIFICATION_FAILED, ERR_SETTLEMENT_FAILED, ERR_INSUFFICIENT_BALANCE,\n ERR_ALLOWANCE_INSUFFICIENT, ERR_PAYMENT_MISMATCH, ERR_DUPLICATE_PAYMENT,\n ERR_SETTLEMENT_PENDING, ERR_SETTLEMENT_TIMEOUT, ERR_NONCE_REPLAY,\n ERR_IDEMPOTENCY_CONFLICT, ERR_IDEMPOTENCY_UNAVAILABLE,\n ERR_PREVIOUS_REQUEST_FAILED, ERR_REQUEST_IN_PROGRESS,\n ERR_CHAIN_UNAVAILABLE, ERR_TRANSACTION_FAILED, ERR_TRANSACTION_REVERTED,\n ERR_GAS_ESTIMATION_FAILED, ERR_NONCE_CONFLICT, ERR_CHAIN_CONGESTED,\n ERR_CONTRACT_ERROR,\n ERR_BRIDGE_UNAVAILABLE, ERR_BRIDGE_QUOTE_FAILED, ERR_BRIDGE_TRANSFER_FAILED,\n ERR_BRIDGE_TIMEOUT, ERR_UNSUPPORTED_ROUTE,\n ERR_STREAM_NOT_FOUND, ERR_STREAM_ALREADY_CLOSED, ERR_STREAM_ALREADY_PAUSED,\n ERR_STREAM_NOT_PAUSED, ERR_STREAM_AMOUNT_EXCEEDED, ERR_STREAM_EXPIRED,\n ERR_STREAM_INVALID_STATE, ERR_STREAM_RATE_LIMITED,\n ERR_INTENT_NOT_FOUND, ERR_INTENT_ALREADY_EXECUTED, ERR_INTENT_CANCELLED,\n ERR_INTENT_EXPIRED, ERR_NO_ROUTES_AVAILABLE, ERR_ROUTE_EXPIRED,\n ERR_ROUTE_NOT_SELECTED, ERR_INTENT_INVALID_STATE,\n ERR_RESOURCE_NOT_FOUND, ERR_RESOURCE_ALREADY_EXISTS,\n ERR_INVALID_PARAMETERS, ERR_NOT_AUTHORIZED,\n httpStatusForCode, isClientError, isServerError, isFacilitatorError,\n isChainError, isBridgeError,\n} from \"./errors\";\n\nexport type Network = `${string}:${string}`;\n\nexport type Money = string | number;\nexport type AssetAmount = {\n asset: string;\n amount: string;\n extra?: Record<string, unknown>;\n};\nexport type Price = Money | AssetAmount;\n\n// Zod schemas for runtime validation\nexport {\n NetworkSchema,\n ResourceInfoSchema,\n PaymentRequirementsSchema,\n PaymentRequiredSchema,\n PaymentPayloadSchema,\n VerifyResponseSchema,\n SettleResponseSchema,\n PaymentRequirementsV1Schema,\n PaymentPayloadV1Schema,\n parsePaymentPayload,\n parsePaymentRequired,\n parsePaymentRequirements,\n safeParsePaymentPayload,\n safeParsePaymentRequired,\n safeParsePaymentRequirements,\n} from \"./schemas\";\nexport type {\n ValidatedPaymentPayload,\n ValidatedPaymentRequired,\n ValidatedPaymentRequirements,\n ValidatedVerifyResponse,\n ValidatedSettleResponse,\n} from \"./schemas\";\n","/**\n * A2A (Agent-to-Agent) Transport Types\n *\n * Implements t402 payment flows over the Agent-to-Agent protocol\n * using JSON-RPC messages and task-based state management.\n *\n * @see https://github.com/google-a2a/a2a-t402/v0.1\n */\n\nimport type { PaymentPayload, PaymentRequired } from \"./payments\";\nimport type { SettleResponse } from \"./facilitator\";\n\n// ============================================================================\n// A2A Payment Status\n// ============================================================================\n\n/**\n * Payment status values used in A2A metadata\n */\nexport type A2APaymentStatus =\n | \"payment-required\" // Payment requirements sent to client\n | \"payment-rejected\" // Client rejected payment requirements\n | \"payment-submitted\" // Payment payload received by server\n | \"payment-verified\" // Payment payload verified by server\n | \"payment-completed\" // Payment settled on-chain successfully\n | \"payment-failed\"; // Payment verification or settlement failed\n\n/**\n * A2A task states that correspond to payment states\n */\nexport type A2ATaskState =\n | \"submitted\"\n | \"working\"\n | \"input-required\"\n | \"completed\"\n | \"canceled\"\n | \"failed\"\n | \"unknown\";\n\n// ============================================================================\n// A2A Message Types\n// ============================================================================\n\n/**\n * A2A message part - text content\n */\nexport interface A2ATextPart {\n kind: \"text\";\n text: string;\n}\n\n/**\n * A2A message part - file content\n */\nexport interface A2AFilePart {\n kind: \"file\";\n file: {\n name?: string;\n mimeType?: string;\n bytes?: string; // base64 encoded\n uri?: string;\n };\n}\n\n/**\n * A2A message part - data content\n */\nexport interface A2ADataPart {\n kind: \"data\";\n data: Record<string, unknown>;\n}\n\nexport type A2AMessagePart = A2ATextPart | A2AFilePart | A2ADataPart;\n\n/**\n * A2A payment metadata fields\n */\nexport interface A2APaymentMetadata {\n /** Current payment status */\n \"t402.payment.status\"?: A2APaymentStatus;\n\n /** Payment requirements (when status is payment-required) */\n \"t402.payment.required\"?: PaymentRequired;\n\n /** Payment payload (when status is payment-submitted) */\n \"t402.payment.payload\"?: PaymentPayload;\n\n /** Settlement receipts (when status is payment-completed or payment-failed) */\n \"t402.payment.receipts\"?: SettleResponse[];\n\n /** Error code (when status is payment-failed) */\n \"t402.payment.error\"?: string;\n}\n\n/**\n * A2A message with payment metadata\n */\nexport interface A2AMessage {\n kind: \"message\";\n messageId?: string;\n role: \"user\" | \"agent\";\n parts: A2AMessagePart[];\n metadata?: A2APaymentMetadata & Record<string, unknown>;\n}\n\n// ============================================================================\n// A2A Task Types\n// ============================================================================\n\n/**\n * A2A artifact (output from completed task)\n */\nexport interface A2AArtifact {\n kind: string;\n name?: string;\n mimeType?: string;\n data?: string; // base64 encoded\n uri?: string;\n metadata?: Record<string, unknown>;\n}\n\n/**\n * A2A task status\n */\nexport interface A2ATaskStatus {\n state: A2ATaskState;\n message?: A2AMessage;\n timestamp?: string;\n}\n\n/**\n * A2A task\n */\nexport interface A2ATask {\n kind: \"task\";\n id: string;\n sessionId?: string;\n status: A2ATaskStatus;\n artifacts?: A2AArtifact[];\n history?: A2AMessage[];\n metadata?: Record<string, unknown>;\n}\n\n// ============================================================================\n// A2A JSON-RPC Types\n// ============================================================================\n\n/**\n * A2A JSON-RPC request\n */\nexport interface A2ARequest<T = unknown> {\n jsonrpc: \"2.0\";\n method: string;\n id: string | number;\n params?: T;\n}\n\n/**\n * A2A JSON-RPC response\n */\nexport interface A2AResponse<T = unknown> {\n jsonrpc: \"2.0\";\n id: string | number;\n result?: T;\n error?: A2AError;\n}\n\n/**\n * A2A JSON-RPC error\n */\nexport interface A2AError {\n code: number;\n message: string;\n data?: unknown;\n}\n\n// ============================================================================\n// A2A Extension Types\n// ============================================================================\n\n/**\n * A2A extension declaration\n */\nexport interface A2AExtension {\n uri: string;\n description?: string;\n required?: boolean;\n}\n\n/**\n * A2A agent capabilities\n */\nexport interface A2ACapabilities {\n streaming?: boolean;\n pushNotifications?: boolean;\n stateTransitionHistory?: boolean;\n extensions?: A2AExtension[];\n}\n\n/**\n * A2A agent card (service advertisement)\n */\nexport interface A2AAgentCard {\n name: string;\n description?: string;\n url: string;\n provider?: {\n organization?: string;\n url?: string;\n };\n version?: string;\n documentationUrl?: string;\n capabilities?: A2ACapabilities;\n authentication?: {\n schemes: string[];\n credentials?: string;\n };\n defaultInputModes?: string[];\n defaultOutputModes?: string[];\n skills?: A2ASkill[];\n}\n\n/**\n * A2A skill definition\n */\nexport interface A2ASkill {\n id: string;\n name: string;\n description?: string;\n tags?: string[];\n examples?: string[];\n inputModes?: string[];\n outputModes?: string[];\n}\n\n// ============================================================================\n// T402-A2A Constants\n// ============================================================================\n\n/**\n * T402 A2A extension URI\n */\nexport const T402_A2A_EXTENSION_URI = \"https://github.com/google-a2a/a2a-t402/v0.1\";\n\n/**\n * HTTP header for A2A extension activation\n */\nexport const A2A_EXTENSIONS_HEADER = \"X-A2A-Extensions\";\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n/**\n * Check if a task is in a payment-required state\n */\nexport function isPaymentRequired(task: A2ATask): boolean {\n return (\n task.status.state === \"input-required\" &&\n task.status.message?.metadata?.[\"t402.payment.status\"] === \"payment-required\"\n );\n}\n\n/**\n * Check if a task has completed payment\n */\nexport function isPaymentCompleted(task: A2ATask): boolean {\n return (\n task.status.state === \"completed\" &&\n task.status.message?.metadata?.[\"t402.payment.status\"] === \"payment-completed\"\n );\n}\n\n/**\n * Check if a task has failed payment\n */\nexport function isPaymentFailed(task: A2ATask): boolean {\n return (\n task.status.state === \"failed\" &&\n task.status.message?.metadata?.[\"t402.payment.status\"] === \"payment-failed\"\n );\n}\n\n/**\n * Extract payment requirements from a task\n */\nexport function getPaymentRequired(task: A2ATask): PaymentRequired | undefined {\n if (isPaymentRequired(task)) {\n return task.status.message?.metadata?.[\"t402.payment.required\"];\n }\n return undefined;\n}\n\n/**\n * Extract payment receipts from a task\n */\nexport function getPaymentReceipts(task: A2ATask): SettleResponse[] | undefined {\n return task.status.message?.metadata?.[\"t402.payment.receipts\"];\n}\n\n/**\n * Create a payment-required message\n */\nexport function createPaymentRequiredMessage(\n paymentRequired: PaymentRequired,\n text: string = \"Payment is required to complete this request.\",\n): A2AMessage {\n return {\n kind: \"message\",\n role: \"agent\",\n parts: [{ kind: \"text\", text }],\n metadata: {\n \"t402.payment.status\": \"payment-required\",\n \"t402.payment.required\": paymentRequired,\n },\n };\n}\n\n/**\n * Create a payment submission message\n */\nexport function createPaymentSubmissionMessage(\n paymentPayload: PaymentPayload,\n text: string = \"Here is the payment authorization.\",\n): A2AMessage {\n return {\n kind: \"message\",\n role: \"user\",\n parts: [{ kind: \"text\", text }],\n metadata: {\n \"t402.payment.status\": \"payment-submitted\",\n \"t402.payment.payload\": paymentPayload,\n },\n };\n}\n\n/**\n * Create a payment completed message\n */\nexport function createPaymentCompletedMessage(\n receipts: SettleResponse[],\n text: string = \"Payment successful.\",\n): A2AMessage {\n return {\n kind: \"message\",\n role: \"agent\",\n parts: [{ kind: \"text\", text }],\n metadata: {\n \"t402.payment.status\": \"payment-completed\",\n \"t402.payment.receipts\": receipts,\n },\n };\n}\n\n/**\n * Create a payment failed message\n */\nexport function createPaymentFailedMessage(\n receipts: SettleResponse[],\n errorCode: string,\n text: string = \"Payment failed.\",\n): A2AMessage {\n return {\n kind: \"message\",\n role: \"agent\",\n parts: [{ kind: \"text\", text }],\n metadata: {\n \"t402.payment.status\": \"payment-failed\",\n \"t402.payment.error\": errorCode,\n \"t402.payment.receipts\": receipts,\n },\n };\n}\n\n/**\n * Create a T402 extension declaration for agent cards\n */\nexport function createT402Extension(required: boolean = false): A2AExtension {\n return {\n uri: T402_A2A_EXTENSION_URI,\n description: \"Supports payments using the t402 protocol for on-chain settlement.\",\n required,\n };\n}\n","/**\n * Up-To Scheme Types\n *\n * The `upto` scheme authorizes transfer of up to a maximum amount,\n * enabling usage-based billing where the final settlement amount\n * is determined by actual usage.\n *\n * @example\n * ```typescript\n * // Client authorizes up to $1.00\n * const requirements: UptoPaymentRequirements = {\n * scheme: 'upto',\n * network: 'eip155:8453',\n * maxAmount: '1000000', // $1.00 in USDC\n * minAmount: '10000', // $0.01 minimum\n * asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',\n * payTo: '0x...',\n * maxTimeoutSeconds: 300,\n * extra: {\n * unit: 'token',\n * unitPrice: '100',\n * },\n * };\n *\n * // Server settles for actual usage ($0.15)\n * const settlement: UptoSettlement = {\n * settleAmount: '150000',\n * usageDetails: {\n * tokensGenerated: 1500,\n * unitPrice: '100',\n * },\n * };\n * ```\n */\n\nimport type { Network, PaymentRequirements } from \"../\";\n\n/**\n * Extended payment requirements for the upto scheme.\n */\nexport interface UptoPaymentRequirements extends Omit<PaymentRequirements, \"scheme\" | \"amount\"> {\n /** Scheme identifier - always 'upto' */\n scheme: \"upto\";\n\n /** Network identifier (CAIP-2 format) */\n network: Network;\n\n /** Maximum amount the client authorizes (in smallest denomination) */\n maxAmount: string;\n\n /** Minimum settlement amount (prevents dust payments) */\n minAmount?: string;\n\n /** Asset contract address or identifier */\n asset: string;\n\n /** Recipient address */\n payTo: string;\n\n /** Maximum time in seconds before payment expires */\n maxTimeoutSeconds: number;\n\n /** Additional scheme-specific data */\n extra: UptoExtra;\n}\n\n/**\n * Extra fields specific to the upto scheme.\n */\nexport interface UptoExtra extends Record<string, unknown> {\n /** Billing unit (e.g., 'token', 'request', 'second', 'byte') */\n unit?: string;\n\n /** Price per unit in smallest denomination */\n unitPrice?: string;\n\n /** EIP-712 domain name (for EVM) */\n name?: string;\n\n /** EIP-712 domain version (for EVM) */\n version?: string;\n\n /** Router contract address (for EVM) */\n routerAddress?: string;\n}\n\n/**\n * Base payload structure for upto scheme.\n */\nexport interface UptoPayloadBase {\n /** Unique nonce to prevent replay attacks */\n nonce: string;\n}\n\n/**\n * EVM-specific upto payload using EIP-2612 Permit.\n */\nexport interface UptoEvmPayload extends UptoPayloadBase {\n /** EIP-2612 permit signature components */\n signature: {\n v: number;\n r: `0x${string}`;\n s: `0x${string}`;\n };\n\n /** Permit authorization parameters */\n authorization: {\n /** Token owner address */\n owner: `0x${string}`;\n\n /** Spender address (router contract) */\n spender: `0x${string}`;\n\n /** Maximum authorized value */\n value: string;\n\n /** Permit deadline (unix timestamp) */\n deadline: string;\n\n /** Permit nonce (from token contract) */\n nonce: number;\n };\n}\n\n/**\n * Alternative EVM payload with combined signature.\n */\nexport interface UptoEvmPayloadCompact extends UptoPayloadBase {\n /** Combined EIP-2612 permit signature */\n signature: `0x${string}`;\n\n /** Permit authorization parameters */\n authorization: {\n owner: `0x${string}`;\n spender: `0x${string}`;\n value: string;\n deadline: string;\n nonce: number;\n };\n}\n\n/**\n * Settlement request for upto scheme.\n */\nexport interface UptoSettlement {\n /** Actual amount to settle (must be <= maxAmount) */\n settleAmount: string;\n\n /** Optional usage details for auditing */\n usageDetails?: UptoUsageDetails;\n}\n\n/**\n * Usage details for settlement auditing.\n */\nexport interface UptoUsageDetails {\n /** Number of units consumed */\n unitsConsumed?: number;\n\n /** Price per unit used */\n unitPrice?: string;\n\n /** Type of unit */\n unitType?: string;\n\n /** Start timestamp of usage period */\n startTime?: number;\n\n /** End timestamp of usage period */\n endTime?: number;\n\n /** Additional metadata */\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Settlement response for upto scheme.\n */\nexport interface UptoSettlementResponse {\n /** Whether settlement was successful */\n success: boolean;\n\n /** Transaction hash (if on-chain) */\n transactionHash?: string;\n\n /** Actual amount settled */\n settledAmount: string;\n\n /** Maximum amount that was authorized */\n maxAmount: string;\n\n /** Block number (if on-chain) */\n blockNumber?: number;\n\n /** Gas used (if on-chain) */\n gasUsed?: string;\n\n /** Error message if failed */\n error?: string;\n}\n\n/**\n * Validation result for upto payment.\n */\nexport interface UptoValidationResult {\n /** Whether the payment is valid */\n isValid: boolean;\n\n /** Reason if invalid */\n invalidReason?: string;\n\n /** Validated maximum amount */\n validatedMaxAmount?: string;\n\n /** Payer address */\n payer?: string;\n\n /** Expiration timestamp */\n expiresAt?: number;\n}\n\n/**\n * Type guard for UptoPaymentRequirements.\n *\n * @param requirements - The value to check\n * @returns True if the value is UptoPaymentRequirements\n */\nexport function isUptoPaymentRequirements(\n requirements: unknown,\n): requirements is UptoPaymentRequirements {\n if (typeof requirements !== \"object\" || requirements === null) return false;\n const req = requirements as Record<string, unknown>;\n return req.scheme === \"upto\" && \"maxAmount\" in req;\n}\n\n/**\n * Type guard for UptoEvmPayload.\n *\n * @param payload - The value to check\n * @returns True if the value is UptoEvmPayload\n */\nexport function isUptoEvmPayload(payload: unknown): payload is UptoEvmPayload {\n if (typeof payload !== \"object\" || payload === null) return false;\n const p = payload as Record<string, unknown>;\n return (\n \"signature\" in p &&\n \"authorization\" in p &&\n typeof p.authorization === \"object\" &&\n p.authorization !== null &&\n \"owner\" in (p.authorization as Record<string, unknown>) &&\n \"spender\" in (p.authorization as Record<string, unknown>) &&\n \"value\" in (p.authorization as Record<string, unknown>) &&\n \"deadline\" in (p.authorization as Record<string, unknown>)\n );\n}\n\n/**\n * Constants for upto scheme.\n */\nexport const UPTO_SCHEME = \"upto\" as const;\n\nexport const UPTO_DEFAULTS = {\n /** Default minimum settlement amount (prevents dust) */\n MIN_AMOUNT: \"1000\",\n\n /** Default maximum timeout in seconds (5 minutes) */\n MAX_TIMEOUT_SECONDS: 300,\n\n /** Supported billing units */\n UNITS: [\"token\", \"request\", \"second\", \"minute\", \"byte\", \"kb\", \"mb\"] as const,\n} as const;\n\nexport type UptoUnit = (typeof UPTO_DEFAULTS.UNITS)[number];\n","/**\n * Standardized T402 error codes returned by the facilitator API.\n * Error codes follow the format T402-XYYY where X is the category (1-8)\n * and YYY is the specific error within that category.\n */\n\n// Client Errors (T402-1xxx): Invalid input, malformed requests\nexport const ERR_INVALID_REQUEST = \"T402-1001\" as const;\nexport const ERR_MISSING_PAYLOAD = \"T402-1002\" as const;\nexport const ERR_MISSING_REQUIREMENTS = \"T402-1003\" as const;\nexport const ERR_INVALID_PAYLOAD = \"T402-1004\" as const;\nexport const ERR_INVALID_REQUIREMENTS = \"T402-1005\" as const;\nexport const ERR_INVALID_SIGNATURE = \"T402-1006\" as const;\nexport const ERR_INVALID_NETWORK = \"T402-1007\" as const;\nexport const ERR_INVALID_SCHEME = \"T402-1008\" as const;\nexport const ERR_INVALID_AMOUNT = \"T402-1009\" as const;\nexport const ERR_INVALID_ADDRESS = \"T402-1010\" as const;\nexport const ERR_EXPIRED_PAYMENT = \"T402-1011\" as const;\nexport const ERR_INVALID_NONCE = \"T402-1012\" as const;\nexport const ERR_INSUFFICIENT_AMOUNT = \"T402-1013\" as const;\nexport const ERR_INVALID_IDEMPOTENCY_KEY = \"T402-1014\" as const;\nexport const ERR_SIGNATURE_EXPIRED = \"T402-1015\" as const;\n\n// Server Errors (T402-2xxx): Internal failures, dependency issues\nexport const ERR_INTERNAL = \"T402-2001\" as const;\nexport const ERR_DATABASE_UNAVAILABLE = \"T402-2002\" as const;\nexport const ERR_CACHE_UNAVAILABLE = \"T402-2003\" as const;\nexport const ERR_RPC_UNAVAILABLE = \"T402-2004\" as const;\nexport const ERR_RATE_LIMITED = \"T402-2005\" as const;\nexport const ERR_SERVICE_UNAVAILABLE = \"T402-2006\" as const;\n\n// Facilitator Errors (T402-3xxx): Verification and settlement failures\nexport const ERR_VERIFICATION_FAILED = \"T402-3001\" as const;\nexport const ERR_SETTLEMENT_FAILED = \"T402-3002\" as const;\nexport const ERR_INSUFFICIENT_BALANCE = \"T402-3003\" as const;\nexport const ERR_ALLOWANCE_INSUFFICIENT = \"T402-3004\" as const;\nexport const ERR_PAYMENT_MISMATCH = \"T402-3005\" as const;\nexport const ERR_DUPLICATE_PAYMENT = \"T402-3006\" as const;\nexport const ERR_SETTLEMENT_PENDING = \"T402-3007\" as const;\nexport const ERR_SETTLEMENT_TIMEOUT = \"T402-3008\" as const;\nexport const ERR_NONCE_REPLAY = \"T402-3009\" as const;\nexport const ERR_IDEMPOTENCY_CONFLICT = \"T402-3010\" as const;\nexport const ERR_IDEMPOTENCY_UNAVAILABLE = \"T402-3011\" as const;\nexport const ERR_PREVIOUS_REQUEST_FAILED = \"T402-3012\" as const;\nexport const ERR_REQUEST_IN_PROGRESS = \"T402-3013\" as const;\n\n// Chain-Specific Errors (T402-4xxx): Network and transaction issues\nexport const ERR_CHAIN_UNAVAILABLE = \"T402-4001\" as const;\nexport const ERR_TRANSACTION_FAILED = \"T402-4002\" as const;\nexport const ERR_TRANSACTION_REVERTED = \"T402-4003\" as const;\nexport const ERR_GAS_ESTIMATION_FAILED = \"T402-4004\" as const;\nexport const ERR_NONCE_CONFLICT = \"T402-4005\" as const;\nexport const ERR_CHAIN_CONGESTED = \"T402-4006\" as const;\nexport const ERR_CONTRACT_ERROR = \"T402-4007\" as const;\n\n// Bridge Errors (T402-5xxx): Cross-chain operation failures\nexport const ERR_BRIDGE_UNAVAILABLE = \"T402-5001\" as const;\nexport const ERR_BRIDGE_QUOTE_FAILED = \"T402-5002\" as const;\nexport const ERR_BRIDGE_TRANSFER_FAILED = \"T402-5003\" as const;\nexport const ERR_BRIDGE_TIMEOUT = \"T402-5004\" as const;\nexport const ERR_UNSUPPORTED_ROUTE = \"T402-5005\" as const;\n\n// Streaming Errors (T402-6xxx): Payment stream issues\nexport const ERR_STREAM_NOT_FOUND = \"T402-6001\" as const;\nexport const ERR_STREAM_ALREADY_CLOSED = \"T402-6002\" as const;\nexport const ERR_STREAM_ALREADY_PAUSED = \"T402-6003\" as const;\nexport const ERR_STREAM_NOT_PAUSED = \"T402-6004\" as const;\nexport const ERR_STREAM_AMOUNT_EXCEEDED = \"T402-6005\" as const;\nexport const ERR_STREAM_EXPIRED = \"T402-6006\" as const;\nexport const ERR_STREAM_INVALID_STATE = \"T402-6007\" as const;\nexport const ERR_STREAM_RATE_LIMITED = \"T402-6008\" as const;\n\n// Intent Errors (T402-7xxx): Payment intent issues\nexport const ERR_INTENT_NOT_FOUND = \"T402-7001\" as const;\nexport const ERR_INTENT_ALREADY_EXECUTED = \"T402-7002\" as const;\nexport const ERR_INTENT_CANCELLED = \"T402-7003\" as const;\nexport const ERR_INTENT_EXPIRED = \"T402-7004\" as const;\nexport const ERR_NO_ROUTES_AVAILABLE = \"T402-7005\" as const;\nexport const ERR_ROUTE_EXPIRED = \"T402-7006\" as const;\nexport const ERR_ROUTE_NOT_SELECTED = \"T402-7007\" as const;\nexport const ERR_INTENT_INVALID_STATE = \"T402-7008\" as const;\n\n// Discovery Errors (T402-8xxx): Resource marketplace issues\nexport const ERR_RESOURCE_NOT_FOUND = \"T402-8001\" as const;\nexport const ERR_RESOURCE_ALREADY_EXISTS = \"T402-8002\" as const;\nexport const ERR_INVALID_PARAMETERS = \"T402-8003\" as const;\nexport const ERR_NOT_AUTHORIZED = \"T402-8004\" as const;\n\n/** Union type of all T402 error codes */\nexport type ErrorCode =\n | typeof ERR_INVALID_REQUEST | typeof ERR_MISSING_PAYLOAD | typeof ERR_MISSING_REQUIREMENTS\n | typeof ERR_INVALID_PAYLOAD | typeof ERR_INVALID_REQUIREMENTS | typeof ERR_INVALID_SIGNATURE\n | typeof ERR_INVALID_NETWORK | typeof ERR_INVALID_SCHEME | typeof ERR_INVALID_AMOUNT\n | typeof ERR_INVALID_ADDRESS | typeof ERR_EXPIRED_PAYMENT | typeof ERR_INVALID_NONCE\n | typeof ERR_INSUFFICIENT_AMOUNT | typeof ERR_INVALID_IDEMPOTENCY_KEY | typeof ERR_SIGNATURE_EXPIRED\n | typeof ERR_INTERNAL | typeof ERR_DATABASE_UNAVAILABLE | typeof ERR_CACHE_UNAVAILABLE\n | typeof ERR_RPC_UNAVAILABLE | typeof ERR_RATE_LIMITED | typeof ERR_SERVICE_UNAVAILABLE\n | typeof ERR_VERIFICATION_FAILED | typeof ERR_SETTLEMENT_FAILED | typeof ERR_INSUFFICIENT_BALANCE\n | typeof ERR_ALLOWANCE_INSUFFICIENT | typeof ERR_PAYMENT_MISMATCH | typeof ERR_DUPLICATE_PAYMENT\n | typeof ERR_SETTLEMENT_PENDING | typeof ERR_SETTLEMENT_TIMEOUT | typeof ERR_NONCE_REPLAY\n | typeof ERR_IDEMPOTENCY_CONFLICT | typeof ERR_IDEMPOTENCY_UNAVAILABLE\n | typeof ERR_PREVIOUS_REQUEST_FAILED | typeof ERR_REQUEST_IN_PROGRESS\n | typeof ERR_CHAIN_UNAVAILABLE | typeof ERR_TRANSACTION_FAILED | typeof ERR_TRANSACTION_REVERTED\n | typeof ERR_GAS_ESTIMATION_FAILED | typeof ERR_NONCE_CONFLICT | typeof ERR_CHAIN_CONGESTED\n | typeof ERR_CONTRACT_ERROR\n | typeof ERR_BRIDGE_UNAVAILABLE | typeof ERR_BRIDGE_QUOTE_FAILED | typeof ERR_BRIDGE_TRANSFER_FAILED\n | typeof ERR_BRIDGE_TIMEOUT | typeof ERR_UNSUPPORTED_ROUTE\n | typeof ERR_STREAM_NOT_FOUND | typeof ERR_STREAM_ALREADY_CLOSED | typeof ERR_STREAM_ALREADY_PAUSED\n | typeof ERR_STREAM_NOT_PAUSED | typeof ERR_STREAM_AMOUNT_EXCEEDED | typeof ERR_STREAM_EXPIRED\n | typeof ERR_STREAM_INVALID_STATE | typeof ERR_STREAM_RATE_LIMITED\n | typeof ERR_INTENT_NOT_FOUND | typeof ERR_INTENT_ALREADY_EXECUTED | typeof ERR_INTENT_CANCELLED\n | typeof ERR_INTENT_EXPIRED | typeof ERR_NO_ROUTES_AVAILABLE | typeof ERR_ROUTE_EXPIRED\n | typeof ERR_ROUTE_NOT_SELECTED | typeof ERR_INTENT_INVALID_STATE\n | typeof ERR_RESOURCE_NOT_FOUND | typeof ERR_RESOURCE_ALREADY_EXISTS\n | typeof ERR_INVALID_PARAMETERS | typeof ERR_NOT_AUTHORIZED;\n\n/** Structured error response from the facilitator API */\nexport interface APIError {\n code: ErrorCode;\n message: string;\n details?: string;\n retry?: boolean;\n}\n\n/** Returns the HTTP status code for a given error code */\nexport function httpStatusForCode(code: ErrorCode): number {\n const category = code.charAt(5);\n switch (category) {\n case \"1\":\n return 400;\n case \"2\":\n if (code === ERR_RATE_LIMITED) return 429;\n return 500;\n case \"3\":\n if (code === ERR_VERIFICATION_FAILED || code === ERR_PAYMENT_MISMATCH) return 422;\n return 500;\n case \"4\":\n return 502;\n case \"5\":\n return 502;\n case \"6\":\n if (code === ERR_STREAM_NOT_FOUND) return 404;\n return 400;\n case \"7\":\n if (code === ERR_INTENT_NOT_FOUND) return 404;\n return 400;\n case \"8\":\n if (code === ERR_RESOURCE_NOT_FOUND) return 404;\n if (code === ERR_RESOURCE_ALREADY_EXISTS) return 409;\n if (code === ERR_NOT_AUTHORIZED) return 403;\n return 400;\n default:\n return 500;\n }\n}\n\n/** Returns true if the error code is a client error (T402-1xxx) */\nexport function isClientError(code: ErrorCode): boolean {\n return code.charAt(5) === \"1\";\n}\n\n/** Returns true if the error code is a server error (T402-2xxx) */\nexport function isServerError(code: ErrorCode): boolean {\n return code.charAt(5) === \"2\";\n}\n\n/** Returns true if the error code is a facilitator error (T402-3xxx) */\nexport function isFacilitatorError(code: ErrorCode): boolean {\n return code.charAt(5) === \"3\";\n}\n\n/** Returns true if the error code is a chain error (T402-4xxx) */\nexport function isChainError(code: ErrorCode): boolean {\n return code.charAt(5) === \"4\";\n}\n\n/** Returns true if the error code is a bridge error (T402-5xxx) */\nexport function isBridgeError(code: ErrorCode): boolean {\n return code.charAt(5) === \"5\";\n}\n","import { z } from \"zod\";\n\n/**\n * Zod schemas for T402 protocol types.\n * Used for runtime validation of incoming data.\n */\n\n// Network format: \"namespace:reference\" (CAIP-2)\nexport const NetworkSchema = z.string().regex(/^[a-z0-9-]+:[a-zA-Z0-9-]+$/, {\n message: \"Network must be in CAIP-2 format (e.g., 'eip155:1', 'solana:mainnet')\",\n});\n\n// Resource info for V2 protocol\nexport const ResourceInfoSchema = z.object({\n url: z.string().url({ message: \"Resource URL must be a valid URL\" }),\n description: z.string().optional(),\n mimeType: z.string().optional(),\n});\n\n// Payment requirements (what the server needs)\nexport const PaymentRequirementsSchema = z.object({\n scheme: z.string().min(1, { message: \"Scheme is required\" }),\n network: NetworkSchema,\n asset: z.string().min(1, { message: \"Asset address is required\" }),\n amount: z.string().regex(/^\\d+$/, { message: \"Amount must be a non-negative integer string\" }),\n payTo: z.string().min(1, { message: \"PayTo address is required\" }),\n maxTimeoutSeconds: z\n .number()\n .int()\n .positive({ message: \"maxTimeoutSeconds must be a positive integer\" }),\n extra: z.record(z.unknown()),\n});\n\n// Payment required response (402 response)\nexport const PaymentRequiredSchema = z.object({\n t402Version: z.literal(2, {\n errorMap: () => ({ message: \"t402Version must be 2 for V2 protocol\" }),\n }),\n error: z.string().optional(),\n resource: ResourceInfoSchema,\n accepts: z\n .array(PaymentRequirementsSchema)\n .min(1, { message: \"At least one payment option is required\" }),\n extensions: z.record(z.unknown()).optional(),\n});\n\n// Payment payload (client's signed payment)\nexport const PaymentPayloadSchema = z.object({\n t402Version: z.literal(2, {\n errorMap: () => ({ message: \"t402Version must be 2 for V2 protocol\" }),\n }),\n resource: ResourceInfoSchema.optional(),\n accepted: PaymentRequirementsSchema,\n payload: z.record(z.unknown()),\n extensions: z.record(z.unknown()).optional(),\n});\n\n// Verify response from facilitator\nexport const VerifyResponseSchema = z.object({\n isValid: z.boolean(),\n invalidReason: z.string().optional(),\n payer: z.string().optional(),\n});\n\n// Settle response from facilitator\nexport const SettleResponseSchema = z.object({\n success: z.boolean(),\n transaction: z.string(),\n network: NetworkSchema,\n errorReason: z.string().optional(),\n payer: z.string().optional(),\n});\n\n// V1 schemas for backward compatibility\nexport const PaymentRequirementsV1Schema = z.object({\n scheme: z.string().min(1),\n network: z.string().min(1),\n asset: z.string().min(1),\n amount: z.string().regex(/^\\d+$/),\n payTo: z.string().min(1),\n maxTimeoutSeconds: z.number().int().positive(),\n extra: z.record(z.unknown()).optional(),\n});\n\nexport const PaymentPayloadV1Schema = z.object({\n t402Version: z.literal(1).optional(),\n accepted: PaymentRequirementsV1Schema,\n payload: z.record(z.unknown()),\n});\n\n// Type inference helpers\nexport type ValidatedPaymentPayload = z.infer<typeof PaymentPayloadSchema>;\nexport type ValidatedPaymentRequired = z.infer<typeof PaymentRequiredSchema>;\nexport type ValidatedPaymentRequirements = z.infer<typeof PaymentRequirementsSchema>;\nexport type ValidatedVerifyResponse = z.infer<typeof VerifyResponseSchema>;\nexport type ValidatedSettleResponse = z.infer<typeof SettleResponseSchema>;\n\n/**\n * Parse and validate a PaymentPayload.\n *\n * @param data - The data to parse\n * @returns The validated payment payload\n * @throws ZodError if validation fails\n */\nexport function parsePaymentPayload(data: unknown): ValidatedPaymentPayload {\n return PaymentPayloadSchema.parse(data);\n}\n\n/**\n * Parse and validate a PaymentRequired response.\n *\n * @param data - The data to parse\n * @returns The validated payment required response\n * @throws ZodError if validation fails\n */\nexport function parsePaymentRequired(data: unknown): ValidatedPaymentRequired {\n return PaymentRequiredSchema.parse(data);\n}\n\n/**\n * Parse and validate PaymentRequirements.\n *\n * @param data - The data to parse\n * @returns The validated payment requirements\n * @throws ZodError if validation fails\n */\nexport function parsePaymentRequirements(data: unknown): ValidatedPaymentRequirements {\n return PaymentRequirementsSchema.parse(data);\n}\n\n/**\n * Safely parse a PaymentPayload, returning a result object.\n *\n * @param data - The data to parse\n * @returns The safe parse result\n */\nexport function safeParsePaymentPayload(\n data: unknown,\n): z.SafeParseReturnType<unknown, ValidatedPaymentPayload> {\n return PaymentPayloadSchema.safeParse(data);\n}\n\n/**\n * Safely parse a PaymentRequired response, returning a result object.\n *\n * @param data - The data to parse\n * @returns The safe parse result\n */\nexport function safeParsePaymentRequired(\n data: unknown,\n): z.SafeParseReturnType<unknown, ValidatedPaymentRequired> {\n return PaymentRequiredSchema.safeParse(data);\n}\n\n/**\n * Safely parse PaymentRequirements, returning a result object.\n *\n * @param data - The data to parse\n * @returns The safe parse result\n */\nexport function safeParsePaymentRequirements(\n data: unknown,\n): z.SafeParseReturnType<unknown, ValidatedPaymentRequirements> {\n return PaymentRequirementsSchema.safeParse(data);\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export { k as PaymentPayloadV1, j as PaymentRequiredV1, i as PaymentRequirementsV1, m as SettleRequestV1, n as SettleResponseV1, o as SupportedResponseV1, l as VerifyRequestV1 } from '../../mechanisms-
|
|
1
|
+
export { k as PaymentPayloadV1, j as PaymentRequiredV1, i as PaymentRequirementsV1, m as SettleRequestV1, n as SettleResponseV1, o as SupportedResponseV1, l as VerifyRequestV1 } from '../../mechanisms-C7yK91d4.js';
|
|
2
|
+
import 'zod';
|
|
@@ -1,5 +1,32 @@
|
|
|
1
|
-
import { N as Network } from '../mechanisms-
|
|
1
|
+
import { N as Network } from '../mechanisms-C7yK91d4.js';
|
|
2
|
+
import 'zod';
|
|
2
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Generate a cryptographically secure random integer in range [0, max)
|
|
6
|
+
*
|
|
7
|
+
* Uses rejection sampling to ensure uniform distribution.
|
|
8
|
+
*
|
|
9
|
+
* @param max - Exclusive upper bound (must be > 0 and <= 2^32)
|
|
10
|
+
* @returns Random integer in [0, max)
|
|
11
|
+
* @throws Error if max is invalid or crypto unavailable
|
|
12
|
+
*/
|
|
13
|
+
declare function cryptoRandomInt(max: number): number;
|
|
14
|
+
/**
|
|
15
|
+
* Generate a cryptographically secure random BigInt
|
|
16
|
+
*
|
|
17
|
+
* @param bits - Number of bits (default 64, max 256)
|
|
18
|
+
* @returns Random BigInt with specified number of bits
|
|
19
|
+
* @throws Error if bits is invalid or crypto unavailable
|
|
20
|
+
*/
|
|
21
|
+
declare function cryptoRandomBigInt(bits?: number): bigint;
|
|
22
|
+
/**
|
|
23
|
+
* Generate a cryptographically secure random hex string
|
|
24
|
+
*
|
|
25
|
+
* @param bytes - Number of random bytes (default 16)
|
|
26
|
+
* @returns Hex-encoded random string
|
|
27
|
+
* @throws Error if bytes is invalid or crypto unavailable
|
|
28
|
+
*/
|
|
29
|
+
declare function cryptoRandomHex(bytes?: number): string;
|
|
3
30
|
/**
|
|
4
31
|
* Scheme data structure for facilitator storage
|
|
5
32
|
*/
|
|
@@ -45,4 +72,4 @@ declare function safeBase64Decode(data: string): string;
|
|
|
45
72
|
*/
|
|
46
73
|
declare function deepEqual(obj1: unknown, obj2: unknown): boolean;
|
|
47
74
|
|
|
48
|
-
export { Base64EncodedRegex, type SchemeData, deepEqual, findByNetworkAndScheme, findFacilitatorBySchemeAndNetwork, findSchemesByNetwork, safeBase64Decode, safeBase64Encode };
|
|
75
|
+
export { Base64EncodedRegex, type SchemeData, cryptoRandomBigInt, cryptoRandomHex, cryptoRandomInt, deepEqual, findByNetworkAndScheme, findFacilitatorBySchemeAndNetwork, findSchemesByNetwork, safeBase64Decode, safeBase64Encode };
|