@obbyx/sdk 0.1.1 → 0.2.1

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.
@@ -5,8 +5,8 @@ import { BATCH_SCHEME, EXACT_SCHEME, batchExtraSchema, canonical, exactExtraSche
5
5
  import { bindingsEqual, sha256Hex } from './binding.js';
6
6
  import { PAYMENT_IDENTIFIER, decidePaymentId, paymentIdOf, paymentIdentifierDeclaration, } from './payment-identifier.js';
7
7
  import { bodyHashOf, newQuote, offerBinding, operationFingerprint, } from './quote.js';
8
+ import { allowOrigin, exposePaymentHeaders, preflightHandler, } from './cors.js';
8
9
  import { DEFAULT_MAX_TIMEOUT_SECONDS, DEFAULT_QUOTE_TTL_SECONDS, DEFAULT_SERVING_LEASE_SECONDS, } from './defaults.js';
9
- const EXPOSE = 'PAYMENT-REQUIRED, PAYMENT-RESPONSE';
10
10
  export class ObytePaywall {
11
11
  options;
12
12
  log;
@@ -24,34 +24,59 @@ export class ObytePaywall {
24
24
  this.log = moduleLogger(options.logger, 'sdk.paywall', { network: options.network });
25
25
  this.now = options.now ?? (() => Math.floor(Date.now() / 1000));
26
26
  }
27
+ /**
28
+ * Answers CORS preflight requests (`app.use(paywall.preflight())`); a no-op
29
+ * without the `cors` option. Preflights never require payment.
30
+ */
31
+ preflight() {
32
+ const cors = this.options.cors;
33
+ return cors === undefined ? (_req, _res, next) => next() : preflightHandler(cors);
34
+ }
27
35
  /** Wraps a handler so it only runs after a settled payment. */
28
36
  paid(route, handler) {
29
37
  const asset = route.price.asset ?? 'base';
30
38
  if (!isAssetId(asset))
31
39
  throw new Error(`Invalid asset ${asset}`);
32
- const amount = parseAmount(route.price.amount).toString();
40
+ const price = { asset, amount: parseAmount(route.price.amount).toString() };
33
41
  return (req, res, next) => {
34
42
  const requestId = String(req.get('x-request-id') ?? cryptoId());
35
- withLogContext({ requestId, network: this.options.network }, () => this.handle(req, res, route, { asset, amount }, handler).catch(next));
43
+ withLogContext({ requestId, network: this.options.network }, () => this.handle({ req, res, route, price, handler }).catch(next));
36
44
  };
37
45
  }
38
- async handle(req, res, route, price, handler) {
39
- res.setHeader('Access-Control-Expose-Headers', EXPOSE);
46
+ async handle(call) {
47
+ const { req, res } = call;
48
+ exposePaymentHeaders(res);
49
+ if (this.options.cors !== undefined)
50
+ allowOrigin(req, res, this.options.cors);
40
51
  res.setHeader('Cache-Control', 'private, no-store');
41
52
  const header = req.get('payment-signature');
42
53
  if (header === undefined)
43
- return this.paymentRequired(req, res, route, price);
54
+ return this.paymentRequired(call);
55
+ const parsed = this.parsePayment(call, header);
56
+ if (parsed.kind === 'bad_header') {
57
+ res.status(400).json({ error: 'invalid_payment_header' });
58
+ return;
59
+ }
60
+ if (parsed.kind === 'refused')
61
+ return this.paymentRequired(call, parsed.error);
62
+ const payment = parsed.payment;
63
+ await withLogContext({ binding: payment.binding, proofId: payment.proofId }, () => this.process(payment));
64
+ }
65
+ /**
66
+ * Decodes the payment and checks it against THIS offer: our scheme, network,
67
+ * price and payee, and a binding we issued for this very request.
68
+ */
69
+ parsePayment(call, header) {
44
70
  let payload;
45
71
  try {
46
72
  payload = decodePaymentSignatureHeader(header);
47
73
  }
48
74
  catch {
49
- res.status(400).json({ error: 'invalid_payment_header' });
50
- return;
75
+ return { kind: 'bad_header' };
51
76
  }
77
+ const { route, price } = call;
52
78
  const accepted = payload.accepted;
53
79
  const scheme = accepted?.scheme;
54
- const offered = this.schemesFor(route);
55
80
  const extra = scheme === EXACT_SCHEME
56
81
  ? exactExtraSchema.safeParse(accepted?.extra)
57
82
  : scheme === BATCH_SCHEME
@@ -60,132 +85,156 @@ export class ObytePaywall {
60
85
  const proofId = scheme === undefined ? undefined : proofIdOf(scheme, payload);
61
86
  if (payload.x402Version !== 2 ||
62
87
  scheme === undefined ||
63
- !offered.includes(scheme) ||
88
+ !this.schemesFor(route).includes(scheme) ||
64
89
  accepted?.network !== this.options.network ||
65
90
  accepted.asset !== price.asset ||
66
91
  accepted.amount !== price.amount ||
67
92
  accepted.payTo !== this.options.payTo ||
68
- extra === undefined ||
69
- !extra.success ||
93
+ extra?.success !== true ||
70
94
  proofId === undefined ||
71
95
  (scheme === BATCH_SCHEME &&
72
96
  extra.data.minTimeout !==
73
97
  this.options.batch?.minChannelTimeoutSeconds)) {
74
- return this.paymentRequired(req, res, route, price, 'invalid_payment_requirements');
98
+ return { kind: 'refused', error: 'invalid_payment_requirements' };
75
99
  }
76
- const facts = this.requestFacts(req, route);
100
+ const facts = this.requestFacts(call.req, route);
77
101
  const terms = this.terms(price);
78
- const expected = offerBinding(this.options, scheme, extra.data, facts, terms);
79
- if (!bindingsEqual(expected, extra.data.binding)) {
102
+ if (!bindingsEqual(offerBinding(this.options, scheme, extra.data, facts, terms), extra.data.binding)) {
80
103
  this.log.warn({ proofId }, 'payment is bound to another operation or a forged quote');
81
- return this.paymentRequired(req, res, route, price, 'invalid_binding');
104
+ return { kind: 'refused', error: 'invalid_binding' };
82
105
  }
83
- const binding = extra.data.binding;
84
- const key = networkKey(getNetwork(this.options.network), scheme === EXACT_SCHEME ? 'unit' : 'voucher', proofId);
85
- await withLogContext({ binding, proofId }, async () => {
86
- const store = this.options.store;
87
- const begun = store.begin(key, binding);
88
- const { created } = begun;
89
- let { record } = begun;
90
- // A proof left in `serving` by a crashed process is recovered after the lease.
91
- if (record.state === 'serving' &&
92
- store.reclaimStale(key, this.options.servingLeaseSeconds ?? DEFAULT_SERVING_LEASE_SECONDS)) {
93
- this.log.warn('recovered a payment stuck in serving (lease expired)');
94
- record = store.get(key) ?? record;
95
- }
96
- if (!bindingsEqual(record.binding, binding)) {
97
- res.setHeader('PAYMENT-RESPONSE', this.refusal('invalid_payment_reused'));
98
- res.status(402).json({ error: 'invalid_payment_reused' });
106
+ return {
107
+ kind: 'ok',
108
+ payment: {
109
+ ...call,
110
+ payload,
111
+ accepted,
112
+ proofId,
113
+ binding: extra.data.binding,
114
+ validUntil: extra.data.validUntil,
115
+ facts,
116
+ terms,
117
+ key: networkKey(getNetwork(this.options.network), scheme === EXACT_SCHEME ? 'unit' : 'voucher', proofId),
118
+ },
119
+ };
120
+ }
121
+ /** Registers the proof, then continues from its state: one payment, one operation. */
122
+ async process(payment) {
123
+ const { res, key, binding } = payment;
124
+ const store = this.options.store;
125
+ const begun = store.begin(key, binding);
126
+ const { created } = begun;
127
+ let { record } = begun;
128
+ // A proof left in `serving` by a crashed process is recovered after the lease.
129
+ if (record.state === 'serving' &&
130
+ store.reclaimStale(key, this.options.servingLeaseSeconds ?? DEFAULT_SERVING_LEASE_SECONDS)) {
131
+ this.log.warn('recovered a payment stuck in serving (lease expired)');
132
+ record = store.get(key) ?? record;
133
+ }
134
+ if (!bindingsEqual(record.binding, binding)) {
135
+ res.setHeader('PAYMENT-RESPONSE', this.refusal('invalid_payment_reused'));
136
+ res.status(402).json({ error: 'invalid_payment_reused' });
137
+ return;
138
+ }
139
+ if (this.paymentIdentifierAnswered(payment, created))
140
+ return;
141
+ if (created && payment.validUntil < this.now()) {
142
+ store.forget(key, 'settling');
143
+ return this.paymentRequired(payment, 'quote_expired');
144
+ }
145
+ switch (record.state) {
146
+ case 'served':
147
+ this.log.info('replaying stored response for a repeated operation');
148
+ return this.send(res, record.response, record.paymentResponse);
149
+ case 'serving':
150
+ if (record.paymentResponse !== null)
151
+ res.setHeader('PAYMENT-RESPONSE', record.paymentResponse);
152
+ res.status(409).json({ error: 'payment_in_progress' });
99
153
  return;
100
- }
101
- // x402 payment-identifier: one client id = one operation. Decided AFTER
102
- // the proof row exists, so a concurrent request always sees this proof
103
- // as in progress (never as "absent") and cannot take the id over.
104
- if (this.options.paymentIdentifier !== undefined) {
105
- const decision = decidePaymentId(store, {
106
- paymentId: paymentIdOf(payload),
107
- required: this.options.paymentIdentifier.required,
108
- scopeId: (id) => `${this.options.sellerId}:${id}`,
109
- fingerprint: operationFingerprint(facts, terms),
110
- proofKey: key,
111
- });
112
- if (decision.kind !== 'proceed' && created)
113
- store.forget(key, 'settling');
114
- if (decision.kind === 'reject') {
115
- res.status(decision.status).json({ error: decision.error });
116
- return;
117
- }
118
- if (decision.kind === 'replay') {
119
- const original = store.get(decision.proofKey);
120
- this.log.info('payment-identifier repeat: stored response, new payment NOT settled');
121
- return this.send(res, original?.response ?? null, original?.paymentResponse ?? null);
122
- }
123
- }
124
- if (created && extra.data.validUntil < this.now()) {
125
- store.forget(key, 'settling');
126
- return this.paymentRequired(req, res, route, price, 'quote_expired');
127
- }
128
- switch (record.state) {
129
- case 'served':
130
- this.log.info('replaying stored response for a repeated operation');
131
- return this.send(res, record.response, record.paymentResponse);
132
- case 'serving':
133
- if (record.paymentResponse !== null)
134
- res.setHeader('PAYMENT-RESPONSE', record.paymentResponse);
135
- res.status(409).json({ error: 'payment_in_progress' });
136
- return;
137
- case 'failed':
138
- res.status(402).json({ error: 'payment_failed' });
139
- return;
140
- case 'paid_not_served':
141
- return this.serve(req, res, key, record.paymentResponse, handler);
142
- case 'awaiting_settle':
143
- return this.settleServed(req, res, route, price, key, payload, accepted);
144
- case 'settling':
145
- break;
146
- }
147
- if (route.flow === 'authorization') {
148
- return this.authorize(req, res, route, price, key, payload, accepted, handler);
149
- }
150
- const settled = await this.settleWithWait(payload, accepted);
151
- const paymentResponse = encodePaymentResponseHeader(settled);
152
- if (settled.success) {
153
- this.log.info({ transaction: settled.transaction }, 'payment settled');
154
- if (store.markSettled(key, binding, paymentResponse) === 'served') {
155
- // A concurrent request with the same payment already served it.
156
- const served = store.get(key);
157
- return this.send(res, served?.response ?? null, served?.paymentResponse ?? null);
158
- }
159
- return this.serve(req, res, key, paymentResponse, handler);
160
- }
161
- if (settled.errorReason === 'settlement_pending') {
162
- this.log.info({ transaction: settled.transaction }, 'settlement pending; client should retry with the same payment');
163
- res.setHeader('PAYMENT-RESPONSE', paymentResponse);
164
- res.setHeader('Retry-After', '5');
165
- res.status(402).json({ error: 'settlement_pending', transaction: settled.transaction });
154
+ case 'failed':
155
+ res.status(402).json({ error: 'payment_failed' });
166
156
  return;
167
- }
168
- if (settled.transaction === '') {
169
- // Rejected before reaching the network: the proof was not consumed.
170
- // Only the request that created the row removes it: a concurrent
171
- // request with the same payment may be settling it right now.
172
- if (created)
173
- store.forget(key, 'settling');
174
- }
175
- else {
176
- store.transition(key, 'settling', 'failed', { paymentResponse });
177
- }
178
- this.log.warn({ reason: settled.errorReason }, 'payment failed');
179
- res.setHeader('PAYMENT-RESPONSE', paymentResponse);
180
- return this.paymentRequired(req, res, route, price, settled.errorReason ?? 'payment_failed');
157
+ case 'paid_not_served':
158
+ return this.serve(payment, record.paymentResponse);
159
+ case 'awaiting_settle':
160
+ return this.settleServed(payment);
161
+ case 'settling':
162
+ return payment.route.flow === 'authorization'
163
+ ? this.authorize(payment)
164
+ : this.settleUpfront(payment, created);
165
+ }
166
+ }
167
+ /**
168
+ * x402 payment-identifier: one client id = one operation. Decided AFTER the
169
+ * proof row exists, so a concurrent request always sees this proof as in
170
+ * progress (never as "absent") and cannot take the id over. True when the
171
+ * response was already sent (refused, or the stored response replayed).
172
+ */
173
+ paymentIdentifierAnswered(payment, created) {
174
+ const declared = this.options.paymentIdentifier;
175
+ if (declared === undefined)
176
+ return false;
177
+ const store = this.options.store;
178
+ const decision = decidePaymentId(store, {
179
+ paymentId: paymentIdOf(payment.payload),
180
+ required: declared.required,
181
+ scopeId: (id) => `${this.options.sellerId}:${id}`,
182
+ fingerprint: operationFingerprint(payment.facts, payment.terms),
183
+ proofKey: payment.key,
181
184
  });
185
+ if (decision.kind === 'proceed')
186
+ return false;
187
+ if (created)
188
+ store.forget(payment.key, 'settling');
189
+ if (decision.kind === 'reject') {
190
+ payment.res.status(decision.status).json({ error: decision.error });
191
+ return true;
192
+ }
193
+ const original = store.get(decision.proofKey);
194
+ this.log.info('payment-identifier repeat: stored response, new payment NOT settled');
195
+ this.send(payment.res, original?.response ?? null, original?.paymentResponse ?? null);
196
+ return true;
197
+ }
198
+ /** upfront flow: settle to finality, then run the handler once. */
199
+ async settleUpfront(payment, created) {
200
+ const { res, key } = payment;
201
+ const store = this.options.store;
202
+ const settled = await this.settleWithWait(payment.payload, payment.accepted);
203
+ const paymentResponse = encodePaymentResponseHeader(settled);
204
+ if (settled.success) {
205
+ this.log.info({ transaction: settled.transaction }, 'payment settled');
206
+ if (store.markSettled(key, payment.binding, paymentResponse) === 'served') {
207
+ // A concurrent request with the same payment already served it.
208
+ const served = store.get(key);
209
+ return this.send(res, served?.response ?? null, served?.paymentResponse ?? null);
210
+ }
211
+ return this.serve(payment, paymentResponse);
212
+ }
213
+ res.setHeader('PAYMENT-RESPONSE', paymentResponse);
214
+ if (settled.errorReason === 'settlement_pending') {
215
+ this.log.info({ transaction: settled.transaction }, 'settlement pending; client should retry with the same payment');
216
+ return this.answerPending(res, settled.transaction);
217
+ }
218
+ if (settled.transaction === '') {
219
+ // Rejected before reaching the network: the proof was not consumed.
220
+ // Only the request that created the row removes it: a concurrent
221
+ // request with the same payment may be settling it right now.
222
+ if (created)
223
+ store.forget(key, 'settling');
224
+ }
225
+ else {
226
+ store.transition(key, 'settling', 'failed', { paymentResponse });
227
+ }
228
+ this.log.warn({ reason: settled.errorReason }, 'payment failed');
229
+ return this.paymentRequired(payment, settled.errorReason ?? 'payment_failed');
182
230
  }
183
231
  /** authorization flow: verify → handler (response stored) → settle → send. */
184
- async authorize(req, res, route, price, key, payload, accepted, handler) {
232
+ async authorize(payment) {
233
+ const { res, key } = payment;
185
234
  const store = this.options.store;
186
235
  let verified;
187
236
  try {
188
- verified = await this.options.facilitator.verify(payload, accepted);
237
+ verified = await this.options.facilitator.verify(payment.payload, payment.accepted);
189
238
  }
190
239
  catch (err) {
191
240
  this.log.warn({ err }, 'facilitator unreachable during verify');
@@ -195,7 +244,7 @@ export class ObytePaywall {
195
244
  }
196
245
  if (!verified.isValid) {
197
246
  store.forget(key, 'settling');
198
- return this.paymentRequired(req, res, route, price, verified.invalidReason ?? 'invalid_payment');
247
+ return this.paymentRequired(payment, verified.invalidReason ?? 'invalid_payment');
199
248
  }
200
249
  if (!store.transition(key, 'settling', 'serving')) {
201
250
  res.status(409).json({ error: 'payment_in_progress' });
@@ -203,7 +252,7 @@ export class ObytePaywall {
203
252
  }
204
253
  let result;
205
254
  try {
206
- result = await handler(req);
255
+ result = await payment.handler(payment.req);
207
256
  }
208
257
  catch (err) {
209
258
  store.transition(key, 'serving', 'settling'); // nothing settled; the same payment may retry
@@ -212,11 +261,13 @@ export class ObytePaywall {
212
261
  return;
213
262
  }
214
263
  store.transition(key, 'serving', 'awaiting_settle', { response: toStored(result) });
215
- return this.settleServed(req, res, route, price, key, payload, accepted);
264
+ return this.settleServed(payment);
216
265
  }
217
- async settleServed(req, res, route, price, key, payload, accepted) {
266
+ /** authorization flow, after the handler: settle, then send the stored response. */
267
+ async settleServed(payment) {
268
+ const { res, key } = payment;
218
269
  const store = this.options.store;
219
- const settled = await this.settleWithWait(payload, accepted);
270
+ const settled = await this.settleWithWait(payment.payload, payment.accepted);
220
271
  const paymentResponse = encodePaymentResponseHeader(settled);
221
272
  if (settled.success) {
222
273
  store.transition(key, 'awaiting_settle', 'served', { paymentResponse });
@@ -226,15 +277,20 @@ export class ObytePaywall {
226
277
  }
227
278
  res.setHeader('PAYMENT-RESPONSE', paymentResponse);
228
279
  if (settled.errorReason === 'settlement_pending') {
229
- res.setHeader('Retry-After', '5');
230
- res.status(402).json({ error: 'settlement_pending', transaction: settled.transaction });
231
- return;
280
+ return this.answerPending(res, settled.transaction);
232
281
  }
233
282
  store.transition(key, 'awaiting_settle', 'failed', { paymentResponse });
234
283
  this.log.warn({ reason: settled.errorReason }, 'payment failed AFTER the handler ran (authorization flow); response withheld');
235
- return this.paymentRequired(req, res, route, price, settled.errorReason ?? 'payment_failed');
284
+ return this.paymentRequired(payment, settled.errorReason ?? 'payment_failed');
285
+ }
286
+ /** Not final yet: the client retries with the same payment. */
287
+ answerPending(res, transaction) {
288
+ res.setHeader('Retry-After', '5');
289
+ res.status(402).json({ error: 'settlement_pending', transaction });
236
290
  }
237
- async serve(req, res, key, paymentResponse, handler) {
291
+ /** Runs the handler once for a settled payment and stores its response. */
292
+ async serve(payment, paymentResponse) {
293
+ const { res, key } = payment;
238
294
  const store = this.options.store;
239
295
  if (!store.transition(key, 'paid_not_served', 'serving')) {
240
296
  res.status(409).json({ error: 'payment_in_progress' });
@@ -242,7 +298,7 @@ export class ObytePaywall {
242
298
  }
243
299
  let result;
244
300
  try {
245
- result = await handler(req);
301
+ result = await payment.handler(payment.req);
246
302
  }
247
303
  catch (err) {
248
304
  store.transition(key, 'serving', 'paid_not_served');
@@ -271,7 +327,7 @@ export class ObytePaywall {
271
327
  res.setHeader(name, value);
272
328
  res.status(response.status).end(Buffer.from(response.body));
273
329
  }
274
- paymentRequired(req, res, route, price, error) {
330
+ paymentRequired({ req, res, route, price }, error) {
275
331
  // A refused payment that was never settled: say so explicitly (success:
276
332
  // false, empty transaction) so the client knows it was NOT used and can
277
333
  // release its budget and its channel voucher. A settle failure already
@@ -1 +1 @@
1
- {"version":3,"file":"paywall.js","sourceRoot":"","sources":["../../src/seller/paywall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paywall.js","sourceRoot":"","sources":["../../src/seller/paywall.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,12 @@
1
1
  import type { AssetAmount, Network, PaymentRequirements, Price, SchemeNetworkServer, SchemePaymentRequiredContext, SchemeServerHooks } from '@x402/core/types';
2
2
  import { type Logger } from '@obbyx/obyte/logger';
3
+ import { BATCH_SCHEME, EXACT_SCHEME } from '@obbyx/x402-obyte';
3
4
  import type { ConsumedProofsStore } from './consumed-proofs.js';
4
5
  /**
5
- * Obyte `exact` for the OFFICIAL x402 resource server (`@x402/core/server`,
6
- * `@x402/express`, `@x402/hono`, …): a SchemeNetworkServer.
6
+ * Obyte schemes for the OFFICIAL x402 resource server (`@x402/core/server`,
7
+ * `@x402/express`, `@x402/hono`, …): SchemeNetworkServer implementations for
8
+ * `exact` ({@link ObyteExactServer}) and `batch-settlement`
9
+ * ({@link ObyteBatchServer}), sharing {@link ObyteSchemeServer}.
7
10
  *
8
11
  * - Binding (I1/I2): `enrichPaymentRequiredResponse` adds a per-request HMAC
9
12
  * binding + quote to every offer. On a paid request it recomputes the HMAC
@@ -17,7 +20,7 @@ import type { ConsumedProofsStore } from './consumed-proofs.js';
17
20
  * Unlike `@obbyx/sdk`'s ObytePaywall, a repeated request gets a 402 instead
18
21
  * of the stored response (the official middleware cannot replay responses).
19
22
  */
20
- export interface ObyteExactServerOptions {
23
+ export interface ObyteSchemeServerOptions {
21
24
  /** How long a request may hold a payment in `serving` before a retry takes over (default 300 s). */
22
25
  readonly servingLeaseSeconds?: number;
23
26
  readonly sellerId: string;
@@ -28,9 +31,34 @@ export interface ObyteExactServerOptions {
28
31
  readonly quoteTtlSeconds?: number;
29
32
  readonly now?: () => number;
30
33
  }
31
- export declare class ObyteExactServer implements SchemeNetworkServer {
34
+ /** @deprecated Use {@link ObyteSchemeServerOptions}. */
35
+ export type ObyteExactServerOptions = ObyteSchemeServerOptions;
36
+ /** Options of {@link ObyteBatchServer}. */
37
+ export interface ObyteBatchServerOptions extends ObyteSchemeServerOptions {
38
+ /** Minimum channel dispute window the seller accepts (seconds); must match the facilitator's. */
39
+ readonly minChannelTimeoutSeconds: number;
40
+ }
41
+ /** Per-scheme parts of an Obyte resource-server scheme. */
42
+ export interface ObyteSchemeSpec {
43
+ readonly scheme: typeof EXACT_SCHEME | typeof BATCH_SCHEME;
44
+ /** `extra` fields the scheme adds to every offer besides binding and quote. */
45
+ readonly staticExtra: Record<string, unknown>;
46
+ /** Parses the quote fields of the accepted offer. */
47
+ readonly acceptedExtra: (extra: unknown) => {
48
+ readonly binding: string;
49
+ readonly quoteId: string;
50
+ readonly validUntil: number;
51
+ };
52
+ /** Proof id and key kind of a payment payload (undefined when malformed). */
53
+ readonly proofOf: (payload: Record<string, unknown>) => {
54
+ kind: string;
55
+ id: string;
56
+ } | undefined;
57
+ }
58
+ export declare abstract class ObyteSchemeServer implements SchemeNetworkServer {
32
59
  private readonly options;
33
- readonly scheme = "exact";
60
+ private readonly spec;
61
+ readonly scheme: string;
34
62
  readonly defaultAssetTransferMethod = "default";
35
63
  readonly paymentFlows: {
36
64
  default: {
@@ -42,11 +70,11 @@ export declare class ObyteExactServer implements SchemeNetworkServer {
42
70
  readonly schemeHooks: SchemeServerHooks;
43
71
  private readonly log;
44
72
  private readonly now;
45
- constructor(options: ObyteExactServerOptions);
73
+ protected constructor(options: ObyteSchemeServerOptions, spec: ObyteSchemeSpec);
46
74
  /** `{asset, amount}` in atomic units, or "20000 bytes" / "0.00002 GBYTE". */
47
75
  parsePrice(price: Price, network: Network): Promise<AssetAmount>;
48
76
  getAssetDecimals(asset: string): number | undefined;
49
- /** Nothing to add from /supported for exact; the per-request fields come from the enrich hook. */
77
+ /** Nothing to add from /supported; the per-request fields come from the enrich hook. */
50
78
  enhancePaymentRequirements(requirements: PaymentRequirements): Promise<PaymentRequirements>;
51
79
  /** Adds (or, for a valid paid request, re-confirms) the per-request binding and quote. */
52
80
  enrichPaymentRequiredResponse: (ctx: SchemePaymentRequiredContext) => Promise<PaymentRequirements[]>;
@@ -54,6 +82,18 @@ export declare class ObyteExactServer implements SchemeNetworkServer {
54
82
  private bindingFor;
55
83
  /** Proof key of the payment in a hook context (undefined when malformed). */
56
84
  private keyOf;
57
- private key;
85
+ }
86
+ /** `exact`: the proof is the unit (key `<network>:unit:<hash>`, as ObytePaywall). */
87
+ export declare class ObyteExactServer extends ObyteSchemeServer {
88
+ constructor(options: ObyteSchemeServerOptions);
89
+ }
90
+ /**
91
+ * `batch-settlement` (AA payment channels): the proof is the voucher (key
92
+ * `<network>:voucher:<sha256 of the canonical signed package>`, as
93
+ * ObytePaywall). Offers carry the channel base AA and the minimum dispute
94
+ * window. Needs a facilitator with batch-settlement and the seller's watcher.
95
+ */
96
+ export declare class ObyteBatchServer extends ObyteSchemeServer {
97
+ constructor(options: ObyteBatchServerOptions);
58
98
  }
59
99
  //# sourceMappingURL=x402-server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"x402-server.d.ts","sourceRoot":"","sources":["../../src/seller/x402-server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,OAAO,EACP,mBAAmB,EACnB,KAAK,EACL,mBAAmB,EACnB,4BAA4B,EAC5B,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAS1B,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAEhE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAIhE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,uBAAuB;IACtC,oGAAoG;IACpG,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CAC7B;AAwBD,qBAAa,gBAAiB,YAAW,mBAAmB;IAW9C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAVpC,QAAQ,CAAC,MAAM,WAAgB;IAC/B,QAAQ,CAAC,0BAA0B,aAAa;IAChD,QAAQ,CAAC,YAAY;;;;;MAEnB;IACF,QAAQ,CAAC,kBAAkB,WAAwC;IACnE,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;IACxC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAEN,OAAO,EAAE,uBAAuB;IA4E7D,6EAA6E;IACvE,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IAmBtE,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAInD,kGAAkG;IAC5F,0BAA0B,CAC9B,YAAY,EAAE,mBAAmB,GAChC,OAAO,CAAC,mBAAmB,CAAC;IAI/B,0FAA0F;IAC1F,6BAA6B,GAC3B,KAAK,4BAA4B,KAChC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAmB/B;IAEF,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,UAAU;IAUlB,6EAA6E;IAC7E,OAAO,CAAC,KAAK;IAQb,OAAO,CAAC,GAAG;CAGZ"}
1
+ {"version":3,"file":"x402-server.d.ts","sourceRoot":"","sources":["../../src/seller/x402-server.ts"],"names":[],"mappings":"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"}