@contextvm/sdk 0.4.12 → 0.4.14
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/esm/payments/client-payments.d.ts +15 -2
- package/dist/esm/payments/client-payments.d.ts.map +1 -1
- package/dist/esm/payments/client-payments.js +51 -12
- package/dist/esm/payments/client-payments.js.map +1 -1
- package/dist/esm/payments/constants.d.ts +7 -0
- package/dist/esm/payments/constants.d.ts.map +1 -1
- package/dist/esm/payments/constants.js +7 -0
- package/dist/esm/payments/constants.js.map +1 -1
- package/dist/esm/payments/server-payments.d.ts.map +1 -1
- package/dist/esm/payments/server-payments.js +28 -2
- package/dist/esm/payments/server-payments.js.map +1 -1
- package/dist/esm/payments/types.d.ts +33 -1
- package/dist/esm/payments/types.d.ts.map +1 -1
- package/dist/esm/payments/types.js +34 -0
- package/dist/esm/payments/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -7,16 +7,29 @@ export interface ClientPaymentsOptions {
|
|
|
7
7
|
*
|
|
8
8
|
* One heartbeat is also emitted immediately when `payment_required` is
|
|
9
9
|
* received so the MCP timeout is always reset as soon as the payment flow
|
|
10
|
-
* begins
|
|
11
|
-
* @default DEFAULT_SYNTHETIC_PROGRESS_INTERVAL_MS (
|
|
10
|
+
* begins.
|
|
11
|
+
* @default DEFAULT_SYNTHETIC_PROGRESS_INTERVAL_MS (30_000 ms)
|
|
12
12
|
*/
|
|
13
13
|
syntheticProgressIntervalMs?: number;
|
|
14
|
+
/**
|
|
15
|
+
* Duration in ms for synthetic progress when `payment_required` carries no `ttl`.
|
|
16
|
+
*
|
|
17
|
+
* Mirrors the server-side `paymentTtlMs` default so the client keeps the MCP
|
|
18
|
+
* request alive for at least as long as the server will wait.
|
|
19
|
+
* @default DEFAULT_PAYMENT_TTL_MS (300_000 ms)
|
|
20
|
+
*/
|
|
21
|
+
defaultPaymentTtlMs?: number;
|
|
14
22
|
}
|
|
15
23
|
/**
|
|
16
24
|
* Wraps a transport to automatically handle CEP-8 payment requests.
|
|
17
25
|
*
|
|
18
26
|
* When `transport` is a {@link NostrClientTransport}, PMI advertisement and
|
|
19
27
|
* synthetic progress injection are enabled automatically.
|
|
28
|
+
*
|
|
29
|
+
* Note: `payment_rejected` → JSON-RPC error synthesis requires a
|
|
30
|
+
* {@link NostrClientTransport} because correlation (requestEventId → MCP request id)
|
|
31
|
+
* depends on Nostr event tagging. On plain transports a rejected payment surfaces
|
|
32
|
+
* as an unhandled notification and the MCP request times out naturally.
|
|
20
33
|
*/
|
|
21
34
|
export declare function withClientPayments(transport: Transport, options: ClientPaymentsOptions): Transport;
|
|
22
35
|
//# sourceMappingURL=client-payments.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-payments.d.ts","sourceRoot":"","sources":["../../../src/payments/client-payments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAS/E,OAAO,
|
|
1
|
+
{"version":3,"file":"client-payments.d.ts","sourceRoot":"","sources":["../../../src/payments/client-payments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAS/E,OAAO,EACL,cAAc,EAGf,MAAM,YAAY,CAAC;AAOpB,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;IACpC;;;;;;;OAOG;IACH,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAkBD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,qBAAqB,GAC7B,SAAS,CA8VX"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isJSONRPCNotification, isJSONRPCResultResponse, isJSONRPCErrorResponse, } from '@modelcontextprotocol/sdk/types.js';
|
|
2
2
|
import { NostrClientTransport } from '../transport/nostr-client-transport.js';
|
|
3
3
|
import { createLogger } from '../core/utils/logger.js';
|
|
4
|
-
import { DEFAULT_SYNTHETIC_PROGRESS_INTERVAL_MS } from './constants.js';
|
|
4
|
+
import { DEFAULT_SYNTHETIC_PROGRESS_INTERVAL_MS, DEFAULT_PAYMENT_TTL_MS, } from './constants.js';
|
|
5
5
|
function isPaymentRequiredNotification(msg) {
|
|
6
6
|
return (isJSONRPCNotification(msg) &&
|
|
7
7
|
msg.method === 'notifications/payment_required');
|
|
@@ -11,11 +11,17 @@ function isPaymentRequiredNotification(msg) {
|
|
|
11
11
|
*
|
|
12
12
|
* When `transport` is a {@link NostrClientTransport}, PMI advertisement and
|
|
13
13
|
* synthetic progress injection are enabled automatically.
|
|
14
|
+
*
|
|
15
|
+
* Note: `payment_rejected` → JSON-RPC error synthesis requires a
|
|
16
|
+
* {@link NostrClientTransport} because correlation (requestEventId → MCP request id)
|
|
17
|
+
* depends on Nostr event tagging. On plain transports a rejected payment surfaces
|
|
18
|
+
* as an unhandled notification and the MCP request times out naturally.
|
|
14
19
|
*/
|
|
15
20
|
export function withClientPayments(transport, options) {
|
|
16
|
-
var _a;
|
|
21
|
+
var _a, _b;
|
|
17
22
|
const logger = createLogger('client-payments');
|
|
18
23
|
const syntheticProgressIntervalMs = (_a = options.syntheticProgressIntervalMs) !== null && _a !== void 0 ? _a : DEFAULT_SYNTHETIC_PROGRESS_INTERVAL_MS;
|
|
24
|
+
const defaultPaymentTtlMs = (_b = options.defaultPaymentTtlMs) !== null && _b !== void 0 ? _b : DEFAULT_PAYMENT_TTL_MS;
|
|
19
25
|
const syntheticProgress = new Map();
|
|
20
26
|
let syntheticProgressScheduler;
|
|
21
27
|
const maybeStopScheduler = () => {
|
|
@@ -74,6 +80,16 @@ export function withClientPayments(transport, options) {
|
|
|
74
80
|
});
|
|
75
81
|
}
|
|
76
82
|
const handlersByPmi = new Map(options.handlers.map((h) => [h.pmi, h]));
|
|
83
|
+
// Warn on duplicate PMI handlers — Map construction silently keeps only the last.
|
|
84
|
+
const seenHandlerPmis = new Set();
|
|
85
|
+
for (const h of options.handlers) {
|
|
86
|
+
if (seenHandlerPmis.has(h.pmi)) {
|
|
87
|
+
logger.warn('duplicate PMI handler registered, last one wins', {
|
|
88
|
+
pmi: h.pmi,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
seenHandlerPmis.add(h.pmi);
|
|
92
|
+
}
|
|
77
93
|
// Prevent double-paying if relays or servers deliver duplicate payment_required notifications.
|
|
78
94
|
const inFlightPayReqs = new Set();
|
|
79
95
|
let onmessage;
|
|
@@ -89,10 +105,12 @@ export function withClientPayments(transport, options) {
|
|
|
89
105
|
if (transport instanceof NostrClientTransport) {
|
|
90
106
|
const pending = transport.getPendingRequestForEventId(requestEventId);
|
|
91
107
|
const token = pending === null || pending === void 0 ? void 0 : pending.progressToken;
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
108
|
+
// Fall back to defaultPaymentTtlMs when the server omits ttl so the client
|
|
109
|
+
// keeps the MCP request alive for the same duration the server will wait.
|
|
110
|
+
const ttlSeconds = message.params.ttl !== undefined
|
|
111
|
+
? message.params.ttl
|
|
112
|
+
: defaultPaymentTtlMs / 1000;
|
|
113
|
+
if (token && Number.isFinite(ttlSeconds)) {
|
|
96
114
|
// Guard against nonsensical TTLs.
|
|
97
115
|
const ttlMs = Math.floor(ttlSeconds * 1000);
|
|
98
116
|
if (ttlMs > 0 && !syntheticProgress.has(token)) {
|
|
@@ -146,6 +164,8 @@ export function withClientPayments(transport, options) {
|
|
|
146
164
|
amount: message.params.amount,
|
|
147
165
|
pay_req: message.params.pay_req,
|
|
148
166
|
description: message.params.description,
|
|
167
|
+
ttl: message.params.ttl,
|
|
168
|
+
_meta: message.params._meta,
|
|
149
169
|
requestEventId,
|
|
150
170
|
};
|
|
151
171
|
logger.info('processing payment_required', {
|
|
@@ -234,13 +254,32 @@ export function withClientPayments(transport, options) {
|
|
|
234
254
|
const requestEventId = (_a = ctx.correlatedEventId) !== null && _a !== void 0 ? _a : 'unknown';
|
|
235
255
|
// Stop synthetic progress on terminal outcomes (context path).
|
|
236
256
|
if (isJSONRPCNotification(message)) {
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
257
|
+
const isAccepted = message.method === 'notifications/payment_accepted';
|
|
258
|
+
const isRejected = message.method === 'notifications/payment_rejected';
|
|
259
|
+
if (isAccepted || isRejected) {
|
|
260
|
+
const pending = transport instanceof NostrClientTransport
|
|
261
|
+
? transport.getPendingRequestForEventId(requestEventId)
|
|
241
262
|
: undefined;
|
|
242
|
-
if (progressToken) {
|
|
243
|
-
stopSyntheticProgress(progressToken);
|
|
263
|
+
if (pending === null || pending === void 0 ? void 0 : pending.progressToken) {
|
|
264
|
+
stopSyntheticProgress(pending.progressToken);
|
|
265
|
+
}
|
|
266
|
+
// On rejection, synthesize a JSON-RPC error response so the caller's
|
|
267
|
+
// pending promise is rejected immediately rather than timing out after 60 s.
|
|
268
|
+
// The server never calls forward() for a rejected payment, so no real
|
|
269
|
+
// response will arrive.
|
|
270
|
+
if (isRejected && (pending === null || pending === void 0 ? void 0 : pending.originalRequestId) != null) {
|
|
271
|
+
const rejMsg = (_b = message.params) === null || _b === void 0 ? void 0 : _b.message;
|
|
272
|
+
onmessage === null || onmessage === void 0 ? void 0 : onmessage({
|
|
273
|
+
jsonrpc: '2.0',
|
|
274
|
+
id: pending.originalRequestId,
|
|
275
|
+
error: {
|
|
276
|
+
code: -32000,
|
|
277
|
+
message: rejMsg
|
|
278
|
+
? `Payment rejected: ${rejMsg}`
|
|
279
|
+
: 'Payment rejected',
|
|
280
|
+
},
|
|
281
|
+
});
|
|
282
|
+
return;
|
|
244
283
|
}
|
|
245
284
|
}
|
|
246
285
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-payments.js","sourceRoot":"","sources":["../../../src/payments/client-payments.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,GAGvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"client-payments.js","sourceRoot":"","sources":["../../../src/payments/client-payments.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,4 +5,11 @@
|
|
|
5
5
|
* so a heartbeat can arrive before the first timeout would fire.
|
|
6
6
|
*/
|
|
7
7
|
export declare const DEFAULT_SYNTHETIC_PROGRESS_INTERVAL_MS = 30000;
|
|
8
|
+
/**
|
|
9
|
+
* Default payment TTL used for synthetic progress when `payment_required` carries no `ttl`.
|
|
10
|
+
*
|
|
11
|
+
* Mirrors the server-side `paymentTtlMs` default (5 minutes) so the client
|
|
12
|
+
* keeps the MCP request alive for at least as long as the server will wait.
|
|
13
|
+
*/
|
|
14
|
+
export declare const DEFAULT_PAYMENT_TTL_MS = 300000;
|
|
8
15
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/payments/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,sCAAsC,QAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/payments/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,sCAAsC,QAAS,CAAC;AAE7D;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,SAAU,CAAC"}
|
|
@@ -5,4 +5,11 @@
|
|
|
5
5
|
* so a heartbeat can arrive before the first timeout would fire.
|
|
6
6
|
*/
|
|
7
7
|
export const DEFAULT_SYNTHETIC_PROGRESS_INTERVAL_MS = 30000;
|
|
8
|
+
/**
|
|
9
|
+
* Default payment TTL used for synthetic progress when `payment_required` carries no `ttl`.
|
|
10
|
+
*
|
|
11
|
+
* Mirrors the server-side `paymentTtlMs` default (5 minutes) so the client
|
|
12
|
+
* keeps the MCP request alive for at least as long as the server will wait.
|
|
13
|
+
*/
|
|
14
|
+
export const DEFAULT_PAYMENT_TTL_MS = 300000;
|
|
8
15
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/payments/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,KAAM,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/payments/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,KAAM,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-payments.d.ts","sourceRoot":"","sources":["../../../src/payments/server-payments.ts"],"names":[],"mappings":"AACA,OAAO,EACL,4BAA4B,EAE5B,gBAAgB,EAGhB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"server-payments.d.ts","sourceRoot":"","sources":["../../../src/payments/server-payments.ts"],"names":[],"mappings":"AACA,OAAO,EACL,4BAA4B,EAE5B,gBAAgB,EAGhB,gBAAgB,EAIhB,cAAc,EACd,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AAMpB,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACxC,kBAAkB,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAEhD,6EAA6E;IAC7E,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AA6HD;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE;IACrD,MAAM,EAAE,4BAA4B,CAAC;IACrC,OAAO,EAAE,qBAAqB,CAAC;CAChC,GAAG,kBAAkB,CA6NrB"}
|
|
@@ -2,6 +2,7 @@ import { isJsonRpcRequest, } from './types.js';
|
|
|
2
2
|
import { LruCache } from '../core/utils/lru-cache.js';
|
|
3
3
|
import { withTimeout } from '../core/utils/utils.js';
|
|
4
4
|
import { createLogger } from '../core/utils/logger.js';
|
|
5
|
+
import { DEFAULT_PAYMENT_TTL_MS } from './constants.js';
|
|
5
6
|
function purgeExpiredPending(params) {
|
|
6
7
|
let checked = 0;
|
|
7
8
|
for (const [key, value] of params.pending.entries()) {
|
|
@@ -78,6 +79,9 @@ function createPaymentRejectedNotification(params) {
|
|
|
78
79
|
function isResolvePriceRejection(quote) {
|
|
79
80
|
return 'reject' in quote && quote.reject;
|
|
80
81
|
}
|
|
82
|
+
function isResolvePriceWaiver(quote) {
|
|
83
|
+
return 'waive' in quote && quote.waive;
|
|
84
|
+
}
|
|
81
85
|
/**
|
|
82
86
|
* Creates a server-side middleware that gates priced requests until payment is verified.
|
|
83
87
|
*/
|
|
@@ -86,7 +90,17 @@ export function createServerPaymentsMiddleware(params) {
|
|
|
86
90
|
const { sender, options } = params;
|
|
87
91
|
const logger = createLogger('server-payments');
|
|
88
92
|
const processorsByPmi = new Map(options.processors.map((p) => [p.pmi, p]));
|
|
89
|
-
|
|
93
|
+
// Warn on duplicate PMI processors — Map construction silently keeps only the last.
|
|
94
|
+
const seenProcessorPmis = new Set();
|
|
95
|
+
for (const p of options.processors) {
|
|
96
|
+
if (seenProcessorPmis.has(p.pmi)) {
|
|
97
|
+
logger.warn('duplicate PMI processor registered, last one wins', {
|
|
98
|
+
pmi: p.pmi,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
seenProcessorPmis.add(p.pmi);
|
|
102
|
+
}
|
|
103
|
+
const paymentTtlMs = (_a = options.paymentTtlMs) !== null && _a !== void 0 ? _a : DEFAULT_PAYMENT_TTL_MS;
|
|
90
104
|
const pending = new LruCache((_b = options.maxPendingPayments) !== null && _b !== void 0 ? _b : 1000);
|
|
91
105
|
return async (message, ctx, forward) => {
|
|
92
106
|
// Only gate requests. Never interfere with notifications.
|
|
@@ -156,6 +170,13 @@ export function createServerPaymentsMiddleware(params) {
|
|
|
156
170
|
});
|
|
157
171
|
await sender.sendNotification(ctx.clientPubkey, rejectedNotification, requestEventId);
|
|
158
172
|
}
|
|
173
|
+
else if (isResolvePriceWaiver(quote)) {
|
|
174
|
+
logger.debug('payment waived, forwarding priced request', {
|
|
175
|
+
requestEventId,
|
|
176
|
+
method: message.method,
|
|
177
|
+
});
|
|
178
|
+
await forward(message);
|
|
179
|
+
}
|
|
159
180
|
else {
|
|
160
181
|
const resolvedQuote = quote;
|
|
161
182
|
const paymentRequired = await processor.createPaymentRequired({
|
|
@@ -227,9 +248,14 @@ export function createServerPaymentsMiddleware(params) {
|
|
|
227
248
|
pending.set(requestEventId, state);
|
|
228
249
|
try {
|
|
229
250
|
await inFlight;
|
|
251
|
+
// On success, keep the entry in `pending` until TTL expiry.
|
|
252
|
+
// This guards against relay redelivery triggering a second charge.
|
|
253
|
+
// purgeExpiredPending handles eventual cleanup.
|
|
230
254
|
}
|
|
231
|
-
|
|
255
|
+
catch (err) {
|
|
256
|
+
// On failure, remove immediately so the client can retry.
|
|
232
257
|
pending.delete(requestEventId);
|
|
258
|
+
throw err;
|
|
233
259
|
}
|
|
234
260
|
};
|
|
235
261
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-payments.js","sourceRoot":"","sources":["../../../src/payments/server-payments.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"server-payments.js","sourceRoot":"","sources":["../../../src/payments/server-payments.ts"],"names":[],"mappings":"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"}
|
|
@@ -72,6 +72,10 @@ export interface PaymentHandlerRequest {
|
|
|
72
72
|
amount: number;
|
|
73
73
|
pay_req: string;
|
|
74
74
|
description?: string;
|
|
75
|
+
/** Time-to-live in seconds from the server's `payment_required` (CEP-8). */
|
|
76
|
+
ttl?: number;
|
|
77
|
+
/** Transparency metadata from the server's `payment_required._meta`. */
|
|
78
|
+
_meta?: Record<string, unknown>;
|
|
75
79
|
requestEventId: string;
|
|
76
80
|
}
|
|
77
81
|
/**
|
|
@@ -112,13 +116,41 @@ export type ResolvePriceRejection = {
|
|
|
112
116
|
/** Optional human-readable message explaining the rejection. */
|
|
113
117
|
message?: string;
|
|
114
118
|
};
|
|
119
|
+
export type ResolvePriceWaiver = {
|
|
120
|
+
/** Signal that payment is waived/covered and the request should proceed immediately. */
|
|
121
|
+
waive: true;
|
|
122
|
+
/** Optional transparency metadata (e.g., remaining balance) attached to `payment_accepted._meta` if emitted. */
|
|
123
|
+
meta?: Record<string, unknown>;
|
|
124
|
+
};
|
|
125
|
+
/**
|
|
126
|
+
* Helper factory for {@link ResolvePriceRejection}.
|
|
127
|
+
*
|
|
128
|
+
* Prefer this over writing the object literal directly — the discriminant
|
|
129
|
+
* `reject: true` is easy to mistype as `rejected: true`, and TypeScript's
|
|
130
|
+
* union excess-property checking will not catch the mistake at a return site.
|
|
131
|
+
*/
|
|
132
|
+
export declare function rejectPrice(message?: string): ResolvePriceRejection;
|
|
133
|
+
/**
|
|
134
|
+
* Helper factory for {@link ResolvePriceWaiver}.
|
|
135
|
+
*/
|
|
136
|
+
export declare function waivePrice(meta?: Record<string, unknown>): ResolvePriceWaiver;
|
|
137
|
+
/**
|
|
138
|
+
* Helper factory for {@link ResolvePriceQuote}.
|
|
139
|
+
*
|
|
140
|
+
* Provides a named constructor that pairs naturally with {@link rejectPrice}.
|
|
141
|
+
* Supports optional description and metadata overrides for full CEP-8 flexibility.
|
|
142
|
+
*/
|
|
143
|
+
export declare function quotePrice(amount: number, options?: {
|
|
144
|
+
description?: string;
|
|
145
|
+
meta?: Record<string, unknown>;
|
|
146
|
+
}): ResolvePriceQuote;
|
|
115
147
|
/**
|
|
116
148
|
* Result of resolvePrice callback.
|
|
117
149
|
*
|
|
118
150
|
* - Return a quote object to proceed with payment flow.
|
|
119
151
|
* - Return a rejection object to emit `payment_rejected` without asking for payment.
|
|
120
152
|
*/
|
|
121
|
-
export type ResolvePriceResult = ResolvePriceQuote | ResolvePriceRejection;
|
|
153
|
+
export type ResolvePriceResult = ResolvePriceQuote | ResolvePriceRejection | ResolvePriceWaiver;
|
|
122
154
|
/**
|
|
123
155
|
* Server-side callback for dynamic pricing.
|
|
124
156
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/payments/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/payments/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helper factory for {@link ResolvePriceRejection}.
|
|
3
|
+
*
|
|
4
|
+
* Prefer this over writing the object literal directly — the discriminant
|
|
5
|
+
* `reject: true` is easy to mistype as `rejected: true`, and TypeScript's
|
|
6
|
+
* union excess-property checking will not catch the mistake at a return site.
|
|
7
|
+
*/
|
|
8
|
+
export function rejectPrice(message) {
|
|
9
|
+
return { reject: true, message };
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Helper factory for {@link ResolvePriceWaiver}.
|
|
13
|
+
*/
|
|
14
|
+
export function waivePrice(meta) {
|
|
15
|
+
return {
|
|
16
|
+
waive: true,
|
|
17
|
+
...(meta !== undefined && { meta }),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Helper factory for {@link ResolvePriceQuote}.
|
|
22
|
+
*
|
|
23
|
+
* Provides a named constructor that pairs naturally with {@link rejectPrice}.
|
|
24
|
+
* Supports optional description and metadata overrides for full CEP-8 flexibility.
|
|
25
|
+
*/
|
|
26
|
+
export function quotePrice(amount, options) {
|
|
27
|
+
return {
|
|
28
|
+
amount,
|
|
29
|
+
...((options === null || options === void 0 ? void 0 : options.description) !== undefined && {
|
|
30
|
+
description: options.description,
|
|
31
|
+
}),
|
|
32
|
+
...((options === null || options === void 0 ? void 0 : options.meta) !== undefined && { meta: options.meta }),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
1
35
|
export function isJsonRpcRequest(message) {
|
|
2
36
|
return (message.method !== undefined &&
|
|
3
37
|
message.id !== undefined);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/payments/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/payments/types.ts"],"names":[],"mappings":"AAoJA;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC1C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAA8B;IACvD,OAAO;QACL,KAAK,EAAE,IAAI;QACX,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC;KACpC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CACxB,MAAc,EACd,OAAkE;IAElE,OAAO;QACL,MAAM;QACN,GAAG,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,MAAK,SAAS,IAAI;YACxC,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC;QACF,GAAG,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,MAAK,SAAS,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;KAC3D,CAAC;AACJ,CAAC;AAiFD,MAAM,UAAU,gBAAgB,CAC9B,OAAuB;IAEvB,OAAO,CACJ,OAA0B,CAAC,MAAM,KAAK,SAAS;QAC/C,OAA0B,CAAC,EAAE,KAAK,SAAS,CAC7C,CAAC;AACJ,CAAC"}
|