@dvmkit/sdk 0.17.0 → 0.18.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/{chunk-C5XNZLZ7.js → chunk-AYEBQDAZ.js} +1 -1
- package/dist/{chunk-B5MPLDRC.js → chunk-B6T3FEVX.js} +1 -1
- package/dist/{chunk-EIDRCGTY.js → chunk-IKMRT7O5.js} +40 -13
- package/dist/{chunk-ORBWKYDE.js → chunk-JQ2Z3MIC.js} +1 -1
- package/dist/{chunk-5CCQEAQV.js → chunk-MXESSBXF.js} +47 -0
- package/dist/{chunk-4QYADZFN.js → chunk-QNAYENWA.js} +71 -24
- package/dist/{content-retention-B_hOQS36.d.ts → content-retention-Cxn-umvR.d.ts} +1 -1
- package/dist/{credit-ledger-5HMJ6VUX.js → credit-ledger-SBLDJCLE.js} +2 -2
- package/dist/{credit-menu-D-h0zJCZ.d.ts → credit-menu-CYjp3FA3.d.ts} +14 -4
- package/dist/{fx-CpqQaIfg.d.ts → fx-D2w3wCvY.d.ts} +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.js +4 -2
- package/dist/internal/caller.d.ts +12 -8
- package/dist/internal/caller.js +1 -1
- package/dist/internal/server.d.ts +7 -7
- package/dist/internal/server.js +6 -6
- package/dist/{job-store-CgXT79tS.d.ts → job-store-Ci2ihiVr.d.ts} +1 -1
- package/dist/{lightning-backend-B1hRUIOb.d.ts → lightning-backend-DMBY7PaJ.d.ts} +1 -1
- package/dist/{memory-credit-ledger-ME6FH462.js → memory-credit-ledger-DMIGIH2H.js} +3 -3
- package/dist/server/index.d.ts +10 -10
- package/dist/server/index.js +8 -8
- package/dist/{step-cache-Bezn-_ZL.d.ts → step-cache-B_18RAPb.d.ts} +42 -1
- package/dist/{tempo-session-store-EWBE5HJM.js → tempo-session-store-N3TFZ26X.js} +2 -2
- package/dist/testing/index.d.ts +3 -3
- package/dist/{usd-CJwU3-A4.d.ts → usd-ROzdYbbm.d.ts} +1 -1
- package/package.json +1 -1
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
// src/lib/pg-retry.ts
|
|
6
6
|
import { AsyncLocalStorage } from "async_hooks";
|
|
7
7
|
var postgresRecovery = new AsyncLocalStorage();
|
|
8
|
+
var queryingPool = new AsyncLocalStorage();
|
|
8
9
|
function withPostgresRecoveryContext(context, operation) {
|
|
9
10
|
return postgresRecovery.run(context, operation);
|
|
10
11
|
}
|
|
@@ -46,18 +47,39 @@ function applyRetryToPool(pool, label = "pg-pool") {
|
|
|
46
47
|
});
|
|
47
48
|
const p = pool;
|
|
48
49
|
const origQuery = p.query.bind(pool);
|
|
49
|
-
p.query = (...args) => withTransportRecovery(
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
50
|
+
p.query = (...args) => withTransportRecovery(
|
|
51
|
+
pool,
|
|
52
|
+
label,
|
|
53
|
+
"pool.query",
|
|
54
|
+
() => queryingPool.run(pool, () => origQuery(...args))
|
|
55
|
+
);
|
|
56
|
+
const origConnect = pool.connect.bind(pool);
|
|
57
|
+
pool.connect = ((callback) => {
|
|
58
|
+
if (queryingPool.getStore() === pool) {
|
|
59
|
+
return queryingPool.exit(() => callback ? origConnect(callback) : origConnect());
|
|
60
|
+
}
|
|
61
|
+
const pending = withTransportRecovery(pool, label, "pool.connect", async () => {
|
|
62
|
+
const client = await origConnect();
|
|
63
|
+
guardCheckedOutClient(client, label);
|
|
64
|
+
const remainingMs = (postgresRecovery.getStore()?.deadlineMs ?? Infinity) - Date.now();
|
|
65
|
+
const probe = {
|
|
66
|
+
text: "SELECT 1",
|
|
67
|
+
query_timeout: Math.max(1, Math.min(connectionTimeoutMs(pool), remainingMs))
|
|
68
|
+
};
|
|
69
|
+
try {
|
|
70
|
+
await client.query(probe);
|
|
71
|
+
return client;
|
|
72
|
+
} catch (error) {
|
|
73
|
+
client.release(asError(error));
|
|
74
|
+
throw error;
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
if (!callback) return pending;
|
|
78
|
+
void pending.then(
|
|
79
|
+
(client) => callback(void 0, client, client.release),
|
|
80
|
+
(error) => callback(asError(error), void 0, () => void 0)
|
|
57
81
|
);
|
|
58
|
-
|
|
59
|
-
return client;
|
|
60
|
-
};
|
|
82
|
+
});
|
|
61
83
|
}
|
|
62
84
|
function withPostgresTransactionRecovery(pool, label, operation, callback) {
|
|
63
85
|
return withTransportRecovery(pool, label, operation, async () => {
|
|
@@ -79,8 +101,9 @@ function withPostgresTransactionRecovery(pool, label, operation, callback) {
|
|
|
79
101
|
}
|
|
80
102
|
async function withTransportRecovery(pool, label, operation, callback) {
|
|
81
103
|
const context = postgresRecovery.getStore();
|
|
82
|
-
const maxAttempts = context?.drainPool ? hostPoolSize(pool) + 1
|
|
104
|
+
const maxAttempts = context?.drainPool === false ? 2 : hostPoolSize(pool) + 1;
|
|
83
105
|
const startedAt = Date.now();
|
|
106
|
+
const deadlineMs = context?.deadlineMs ?? startedAt + connectionTimeoutMs(pool);
|
|
84
107
|
let firstError;
|
|
85
108
|
for (let attempt = 1; ; attempt += 1) {
|
|
86
109
|
try {
|
|
@@ -101,7 +124,7 @@ async function withTransportRecovery(pool, label, operation, callback) {
|
|
|
101
124
|
if (!isTransportError(error)) throw error;
|
|
102
125
|
firstError ??= asError(error);
|
|
103
126
|
const elapsedMs = Date.now() - startedAt;
|
|
104
|
-
if (attempt >= maxAttempts ||
|
|
127
|
+
if (attempt >= maxAttempts || Date.now() >= deadlineMs) {
|
|
105
128
|
logTransportRecovery({
|
|
106
129
|
context,
|
|
107
130
|
label,
|
|
@@ -116,6 +139,10 @@ async function withTransportRecovery(pool, label, operation, callback) {
|
|
|
116
139
|
}
|
|
117
140
|
}
|
|
118
141
|
}
|
|
142
|
+
function connectionTimeoutMs(pool) {
|
|
143
|
+
const configured = pool.options.connectionTimeoutMillis;
|
|
144
|
+
return typeof configured === "number" && Number.isFinite(configured) && configured > 0 ? configured : 1e4;
|
|
145
|
+
}
|
|
119
146
|
function hostPoolSize(pool) {
|
|
120
147
|
const configured = pool.options.max;
|
|
121
148
|
return typeof configured === "number" && Number.isSafeInteger(configured) && configured > 0 ? configured : 10;
|
|
@@ -314,7 +314,54 @@ function createDefaultReplayStore() {
|
|
|
314
314
|
}
|
|
315
315
|
var SATURATION_WARN_INTERVAL_SECONDS = 60;
|
|
316
316
|
|
|
317
|
+
// src/sdk/cashu-locktime.ts
|
|
318
|
+
var CASHU_MIN_LOCKTIME_SECONDS = 604800;
|
|
319
|
+
var CASHU_LOCKTIME_RESUME_MARGIN_SECONDS = 86400;
|
|
320
|
+
var CASHU_LOCKTIME_FLOOR_MINIMUM_SECONDS = 3600;
|
|
321
|
+
var CASHU_SIGNED_LOCKTIME_FLOOR_MINIMUM_SECONDS = CASHU_LOCKTIME_RESUME_MARGIN_SECONDS + CASHU_LOCKTIME_FLOOR_MINIMUM_SECONDS;
|
|
322
|
+
var DEFAULT_CASHU_LOCK_WINDOW_SECONDS = CASHU_MIN_LOCKTIME_SECONDS - CASHU_LOCKTIME_RESUME_MARGIN_SECONDS;
|
|
323
|
+
function signedCashuLockWindowSeconds(cashu) {
|
|
324
|
+
return (cashu?.minLocktimeSeconds ?? CASHU_MIN_LOCKTIME_SECONDS) - CASHU_LOCKTIME_RESUME_MARGIN_SECONDS;
|
|
325
|
+
}
|
|
326
|
+
function unsignedCashuLockWindowSeconds(cashu) {
|
|
327
|
+
return cashu?.unsignedMinLocktimeSeconds ?? DEFAULT_CASHU_LOCK_WINDOW_SECONDS;
|
|
328
|
+
}
|
|
329
|
+
function shortestCashuLockWindowSeconds(cashu, servesUnsigned) {
|
|
330
|
+
const signed = signedCashuLockWindowSeconds(cashu);
|
|
331
|
+
return servesUnsigned ? Math.min(signed, unsignedCashuLockWindowSeconds(cashu)) : signed;
|
|
332
|
+
}
|
|
333
|
+
function resolveCashuConfig(cashu) {
|
|
334
|
+
if (cashu === void 0) return void 0;
|
|
335
|
+
if (typeof cashu !== "object" || cashu === null || Array.isArray(cashu)) {
|
|
336
|
+
throw new Error(`configureDVM: cashu must be an object of refund-locktime floors; received ${JSON.stringify(cashu)}`);
|
|
337
|
+
}
|
|
338
|
+
const minLocktimeSeconds = validFloor(cashu.minLocktimeSeconds, "minLocktimeSeconds", CASHU_SIGNED_LOCKTIME_FLOOR_MINIMUM_SECONDS) ?? CASHU_MIN_LOCKTIME_SECONDS;
|
|
339
|
+
const unsignedMinLocktimeSeconds = validFloor(cashu.unsignedMinLocktimeSeconds, "unsignedMinLocktimeSeconds", CASHU_LOCKTIME_FLOOR_MINIMUM_SECONDS) ?? minLocktimeSeconds - CASHU_LOCKTIME_RESUME_MARGIN_SECONDS;
|
|
340
|
+
const signedWindow = minLocktimeSeconds - CASHU_LOCKTIME_RESUME_MARGIN_SECONDS;
|
|
341
|
+
if (unsignedMinLocktimeSeconds > signedWindow) {
|
|
342
|
+
throw new Error(
|
|
343
|
+
`configureDVM: cashu.unsignedMinLocktimeSeconds (${unsignedMinLocktimeSeconds}) must not exceed cashu.minLocktimeSeconds less 86400 (${signedWindow}); a payer without a signature can take the signed floor instead by sending X-Cashu-Request-Id`
|
|
344
|
+
);
|
|
345
|
+
}
|
|
346
|
+
return { minLocktimeSeconds, unsignedMinLocktimeSeconds };
|
|
347
|
+
}
|
|
348
|
+
function validFloor(value, field, minimum) {
|
|
349
|
+
if (value === void 0) return void 0;
|
|
350
|
+
if (typeof value !== "number" || !Number.isSafeInteger(value) || value < minimum) {
|
|
351
|
+
throw new Error(
|
|
352
|
+
`configureDVM: cashu.${field} must be a whole number of seconds, at least ${minimum}; received ${JSON.stringify(value)}`
|
|
353
|
+
);
|
|
354
|
+
}
|
|
355
|
+
return value;
|
|
356
|
+
}
|
|
357
|
+
|
|
317
358
|
export {
|
|
359
|
+
CASHU_MIN_LOCKTIME_SECONDS,
|
|
360
|
+
DEFAULT_CASHU_LOCK_WINDOW_SECONDS,
|
|
361
|
+
signedCashuLockWindowSeconds,
|
|
362
|
+
unsignedCashuLockWindowSeconds,
|
|
363
|
+
shortestCashuLockWindowSeconds,
|
|
364
|
+
resolveCashuConfig,
|
|
318
365
|
humanizeZodError,
|
|
319
366
|
humanizeZodIssues,
|
|
320
367
|
zodIssuesOf,
|
|
@@ -17,18 +17,23 @@ import {
|
|
|
17
17
|
} from "./chunk-3KRFFLAT.js";
|
|
18
18
|
import {
|
|
19
19
|
MemoryCreditLedger
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-AYEBQDAZ.js";
|
|
21
21
|
import {
|
|
22
22
|
PostgresJobStore
|
|
23
23
|
} from "./chunk-A6EY4K46.js";
|
|
24
24
|
import {
|
|
25
|
+
CASHU_MIN_LOCKTIME_SECONDS,
|
|
26
|
+
DEFAULT_CASHU_LOCK_WINDOW_SECONDS,
|
|
25
27
|
SIGNED_ENVELOPE_FIELDS,
|
|
26
28
|
SignedRequestError,
|
|
27
29
|
humanizeZodError,
|
|
28
30
|
humanizeZodIssues,
|
|
31
|
+
shortestCashuLockWindowSeconds,
|
|
32
|
+
signedCashuLockWindowSeconds,
|
|
29
33
|
signedRequestInput,
|
|
34
|
+
unsignedCashuLockWindowSeconds,
|
|
30
35
|
zodIssuesOf
|
|
31
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-MXESSBXF.js";
|
|
32
37
|
import {
|
|
33
38
|
MemoryJobStore,
|
|
34
39
|
UNCAPPABLE_ASK_TOTAL,
|
|
@@ -138,7 +143,7 @@ import {
|
|
|
138
143
|
isNonChannelBitcoinRail,
|
|
139
144
|
netOwedSats,
|
|
140
145
|
x402SettlementPending
|
|
141
|
-
} from "./chunk-
|
|
146
|
+
} from "./chunk-B6T3FEVX.js";
|
|
142
147
|
import {
|
|
143
148
|
parseStoreValue
|
|
144
149
|
} from "./chunk-YG7G4DPZ.js";
|
|
@@ -156,7 +161,7 @@ import {
|
|
|
156
161
|
} from "./chunk-5UC7TOQC.js";
|
|
157
162
|
import {
|
|
158
163
|
withPostgresRecoveryContext
|
|
159
|
-
} from "./chunk-
|
|
164
|
+
} from "./chunk-IKMRT7O5.js";
|
|
160
165
|
import {
|
|
161
166
|
DvmError,
|
|
162
167
|
x402NetworkByCaip2
|
|
@@ -1174,6 +1179,9 @@ function pinAskFiat(args) {
|
|
|
1174
1179
|
return { currency: args.currency, amountMicro: Math.max(1, rounded) };
|
|
1175
1180
|
}
|
|
1176
1181
|
function fundedMicroFor(priceFiat, paidMsats, requiredMsats) {
|
|
1182
|
+
if (!Number.isFinite(requiredMsats) || requiredMsats <= 0) {
|
|
1183
|
+
throw new Error(`fundedMicroFor needs a positive reference price in msats (got ${requiredMsats})`);
|
|
1184
|
+
}
|
|
1177
1185
|
if (paidMsats === requiredMsats) return priceFiat.amountMicro;
|
|
1178
1186
|
return Math.round(priceFiat.amountMicro * paidMsats / requiredMsats);
|
|
1179
1187
|
}
|
|
@@ -3440,11 +3448,9 @@ function valueCashuFunding(wallet, proofs) {
|
|
|
3440
3448
|
netMsats: netSats.multiplyBy(1e3).toNumber()
|
|
3441
3449
|
};
|
|
3442
3450
|
}
|
|
3443
|
-
var CASHU_MIN_LOCKTIME_SECONDS = 604800;
|
|
3444
|
-
var CASHU_LOCKTIME_RESUME_MARGIN_SECONDS = 86400;
|
|
3445
3451
|
var P2PK_TAG_KEYS = /* @__PURE__ */ new Set(["locktime", "refund", "pubkeys", "n_sigs", "sigflag", "n_sigs_refund"]);
|
|
3446
3452
|
var SINGLE_VALUE_TAG_KEYS = /* @__PURE__ */ new Set(["locktime", "n_sigs", "sigflag", "n_sigs_refund"]);
|
|
3447
|
-
function assessCashuLock(secret, lockPubkeys, nowSec) {
|
|
3453
|
+
function assessCashuLock(secret, lockPubkeys, nowSec, floorSec = nowSec + DEFAULT_CASHU_LOCK_WINDOW_SECONDS) {
|
|
3448
3454
|
try {
|
|
3449
3455
|
parseP2PKSecret(secret);
|
|
3450
3456
|
if (getSecretKind(secret) !== "P2PK") throw new Error("not P2PK");
|
|
@@ -3515,10 +3521,9 @@ function assessCashuLock(secret, lockPubkeys, nowSec) {
|
|
|
3515
3521
|
if (locktimeValue !== void 0) {
|
|
3516
3522
|
const locktime = /^(0|[1-9][0-9]*)$/.test(locktimeValue) ? Number(locktimeValue) : NaN;
|
|
3517
3523
|
if (!Number.isSafeInteger(locktime)) return notExclusive(`Proof's locktime ${locktimeValue} is not a unix-seconds integer.`);
|
|
3518
|
-
|
|
3519
|
-
if (locktime < floor) {
|
|
3524
|
+
if (locktime < floorSec) {
|
|
3520
3525
|
return notExclusive(
|
|
3521
|
-
`Proof locktime ${locktime} is earlier than the accepted floor ${
|
|
3526
|
+
`Proof locktime ${locktime} is earlier than the accepted floor ${floorSec} (unix seconds).`,
|
|
3522
3527
|
true
|
|
3523
3528
|
);
|
|
3524
3529
|
}
|
|
@@ -3589,11 +3594,12 @@ async function acceptAccumulatorPayment(opts) {
|
|
|
3589
3594
|
requestId
|
|
3590
3595
|
};
|
|
3591
3596
|
const nowSec = Math.floor(Date.now() / 1e3);
|
|
3597
|
+
const floorSec = nowSec + opts.lockWindowSeconds;
|
|
3592
3598
|
const tExpireMsByIndex = [];
|
|
3593
3599
|
const matchedLockPubkeyByIndex = [];
|
|
3594
3600
|
let belowFloorMessage;
|
|
3595
3601
|
for (const p of proofs) {
|
|
3596
|
-
const lock = assessCashuLock(p.secret, accepted, nowSec);
|
|
3602
|
+
const lock = assessCashuLock(p.secret, accepted, nowSec, floorSec);
|
|
3597
3603
|
if (lock.kind === "rejected") {
|
|
3598
3604
|
if (!lock.locktimeBelowFloor) return { kind: "rejected", code: lock.code, message: lock.message };
|
|
3599
3605
|
belowFloorMessage ??= lock.message;
|
|
@@ -3954,7 +3960,12 @@ async function verifyUpfrontPaymentInScope(opts) {
|
|
|
3954
3960
|
};
|
|
3955
3961
|
}
|
|
3956
3962
|
if (cashuAccumulatorReady(opts)) {
|
|
3957
|
-
return verifyAccumulatorReceipt(
|
|
3963
|
+
return verifyAccumulatorReceipt(
|
|
3964
|
+
{ ...opts, cashuLockWindowSeconds: lockWindowOrDefault(opts.cashuLockWindowSeconds) },
|
|
3965
|
+
mints,
|
|
3966
|
+
requiredMsats,
|
|
3967
|
+
ledgerCtx
|
|
3968
|
+
);
|
|
3958
3969
|
}
|
|
3959
3970
|
return {
|
|
3960
3971
|
paidMsats: 0,
|
|
@@ -4712,6 +4723,8 @@ async function verifyTempoSessionManagementCredential(args) {
|
|
|
4712
4723
|
}
|
|
4713
4724
|
};
|
|
4714
4725
|
}
|
|
4726
|
+
var LOCK_SHAPE_HINT = "Lock a fresh token with data set to cashu.lock_pubkeys[0] from /v1/info as a 33-byte compressed hex key. Use only the locktime, refund, pubkeys, n_sigs, sigflag and n_sigs_refund tags, each once and with a value: pubkeys may list only other cashu.lock_pubkeys entries, n_sigs must be 1, sigflag SIG_INPUTS, refund keys compressed and distinct, n_sigs_refund at most the number of refund keys";
|
|
4727
|
+
var UNSIGNED_LOCK_REFUSAL_HINT = `${LOCK_SHAPE_HINT}, and any locktime at least cashu.unsigned_min_locktime seconds in the future.`;
|
|
4715
4728
|
var PAYMENT_ERROR_COPY = {
|
|
4716
4729
|
payment_invalid: {
|
|
4717
4730
|
display: "The payment couldn't be verified, so the request wasn't accepted. Nothing was charged.",
|
|
@@ -4975,7 +4988,7 @@ var PAYMENT_ERROR_COPY = {
|
|
|
4975
4988
|
},
|
|
4976
4989
|
lock_not_exclusive: {
|
|
4977
4990
|
display: "The payment token's lock would let a key other than this service's spend it, so it wasn't accepted. Nothing was charged.",
|
|
4978
|
-
hint:
|
|
4991
|
+
hint: `${LOCK_SHAPE_HINT}, and any locktime at least cashu.min_locktime minus 24 hours in the future.`,
|
|
4979
4992
|
retryable: false
|
|
4980
4993
|
},
|
|
4981
4994
|
proof_not_unspent: {
|
|
@@ -5107,7 +5120,8 @@ async function verifyIncomingPaymentInScope(body, opts, snapshot) {
|
|
|
5107
5120
|
dvmId: opts.dvmId,
|
|
5108
5121
|
lockPubkeys: opts.lockPubkeys,
|
|
5109
5122
|
requestId,
|
|
5110
|
-
mintHealthTracker: opts.mintHealthTracker
|
|
5123
|
+
mintHealthTracker: opts.mintHealthTracker,
|
|
5124
|
+
cashuLockWindowSeconds: lockWindowOrDefault(opts.cashuLockWindowSeconds)
|
|
5111
5125
|
},
|
|
5112
5126
|
mints,
|
|
5113
5127
|
snapshot.pendingPaymentMsats,
|
|
@@ -5585,7 +5599,8 @@ async function processIncomingPaymentInScope(job, body, opts) {
|
|
|
5585
5599
|
dvmId: opts.dvmId,
|
|
5586
5600
|
lockPubkeys: opts.lockPubkeys,
|
|
5587
5601
|
requestId,
|
|
5588
|
-
mintHealthTracker: opts.mintHealthTracker
|
|
5602
|
+
mintHealthTracker: opts.mintHealthTracker,
|
|
5603
|
+
cashuLockWindowSeconds: lockWindowOrDefault(opts.cashuLockWindowSeconds)
|
|
5589
5604
|
},
|
|
5590
5605
|
mints,
|
|
5591
5606
|
job.pendingPaymentMsats
|
|
@@ -5741,6 +5756,9 @@ function creditPendingPayment(job) {
|
|
|
5741
5756
|
job.pendingPaymentMsats = void 0;
|
|
5742
5757
|
}
|
|
5743
5758
|
}
|
|
5759
|
+
function lockWindowOrDefault(seconds) {
|
|
5760
|
+
return seconds ?? DEFAULT_CASHU_LOCK_WINDOW_SECONDS;
|
|
5761
|
+
}
|
|
5744
5762
|
function cashuAccumulatorReady(opts) {
|
|
5745
5763
|
return opts.cashuMode === "p2pk-accumulator" && Boolean(opts.accumulatorDb || opts.disposableCashu) && Boolean(opts.dvmId) && (opts.lockPubkeys?.length ?? 0) > 0;
|
|
5746
5764
|
}
|
|
@@ -5801,11 +5819,12 @@ async function verifyAccumulatorReceipt(opts, mints, requiredMsats, ledgerCtx) {
|
|
|
5801
5819
|
let credited;
|
|
5802
5820
|
const headerless = !opts.requestId && opts.nut24 !== void 0;
|
|
5803
5821
|
const previousRequired = headerless ? opts.nut24?.previousRequiredMsats : void 0;
|
|
5804
|
-
const
|
|
5805
|
-
const
|
|
5806
|
-
|
|
5807
|
-
|
|
5808
|
-
|
|
5822
|
+
const heldAt = (paidMsats) => requiredMsats !== void 0 && paidMsats < requiredMsats && previousRequired !== void 0 && paidMsats >= previousRequired ? previousRequired : void 0;
|
|
5823
|
+
const requiredFor = (paidMsats) => heldAt(paidMsats) ?? requiredMsats;
|
|
5824
|
+
const held = (ctx, paidMsats) => {
|
|
5825
|
+
const previous = heldAt(paidMsats);
|
|
5826
|
+
return previous === void 0 ? ctx : { ...ctx, requiredMsats: previous };
|
|
5827
|
+
};
|
|
5809
5828
|
const signedFund = ledgerCtx?.creditEnvelope?.fund;
|
|
5810
5829
|
const beforeCommit = ledgerCtx && signedFund ? (accepted) => {
|
|
5811
5830
|
const expected = fundedMicroFor(
|
|
@@ -5852,6 +5871,7 @@ async function verifyAccumulatorReceipt(opts, mints, requiredMsats, ledgerCtx) {
|
|
|
5852
5871
|
} : void 0,
|
|
5853
5872
|
dvmId,
|
|
5854
5873
|
lockPubkeys,
|
|
5874
|
+
lockWindowSeconds: opts.cashuLockWindowSeconds,
|
|
5855
5875
|
beforeCommit,
|
|
5856
5876
|
withCommitTx
|
|
5857
5877
|
});
|
|
@@ -5880,6 +5900,7 @@ async function verifyAccumulatorReceipt(opts, mints, requiredMsats, ledgerCtx) {
|
|
|
5880
5900
|
...headerless && result.code === "replay_rejected" && {
|
|
5881
5901
|
hint: "These proofs already paid for an earlier request. Resend them with that request's exact body to fetch its job; a new request needs new proofs."
|
|
5882
5902
|
},
|
|
5903
|
+
...result.code === "lock_not_exclusive" && opts.cashuLockRefusalHint !== void 0 && { hint: opts.cashuLockRefusalHint },
|
|
5883
5904
|
extra: { mints }
|
|
5884
5905
|
}),
|
|
5885
5906
|
status,
|
|
@@ -13548,6 +13569,9 @@ async function getKeysetFinalExpiry(mintUrl, keysetId) {
|
|
|
13548
13569
|
// src/sdk/server/wallet-accumulator-monitor.ts
|
|
13549
13570
|
var DEFAULT_TICK_INTERVAL_MS = 3e4;
|
|
13550
13571
|
var EXPIRING_SOON_THRESHOLD_MS = 36 * 60 * 60 * 1e3;
|
|
13572
|
+
function expiringSoonThresholdMs(shortestLockWindowSeconds) {
|
|
13573
|
+
return Math.min(EXPIRING_SOON_THRESHOLD_MS, Math.max(0, shortestLockWindowSeconds) * 500);
|
|
13574
|
+
}
|
|
13551
13575
|
function startAccumulatorMonitor(opts) {
|
|
13552
13576
|
const tickMs = opts.tickIntervalMs ?? DEFAULT_TICK_INTERVAL_MS;
|
|
13553
13577
|
const now = opts.now ?? (() => Date.now());
|
|
@@ -13563,7 +13587,8 @@ function startAccumulatorMonitor(opts) {
|
|
|
13563
13587
|
...opts,
|
|
13564
13588
|
now,
|
|
13565
13589
|
lockKey,
|
|
13566
|
-
graceSeconds: opts.lockPubkeyGraceSeconds ?? DEFAULT_LOCK_PUBKEY_GRACE_SECONDS
|
|
13590
|
+
graceSeconds: opts.lockPubkeyGraceSeconds ?? DEFAULT_LOCK_PUBKEY_GRACE_SECONDS,
|
|
13591
|
+
expiringSoonThresholdMs: opts.expiringSoonThresholdMs ?? EXPIRING_SOON_THRESHOLD_MS
|
|
13567
13592
|
});
|
|
13568
13593
|
} catch (_err) {
|
|
13569
13594
|
diagnosticConsole.error(
|
|
@@ -13651,7 +13676,7 @@ async function emitExpiryEvents(opts, db, activeState) {
|
|
|
13651
13676
|
const delta = batch.oldestTExpire - now;
|
|
13652
13677
|
if (delta < 0) {
|
|
13653
13678
|
emitExpired(opts.dvmId, batch, -delta);
|
|
13654
|
-
} else if (delta <
|
|
13679
|
+
} else if (delta < opts.expiringSoonThresholdMs) {
|
|
13655
13680
|
emitExpiringSoon(opts.dvmId, batch, delta);
|
|
13656
13681
|
}
|
|
13657
13682
|
}
|
|
@@ -13864,9 +13889,14 @@ var JobManager = class {
|
|
|
13864
13889
|
}
|
|
13865
13890
|
if (opts.cashuMode === "p2pk-accumulator" && opts.db && opts.dvmId) {
|
|
13866
13891
|
try {
|
|
13892
|
+
const shortestWindow = shortestCashuLockWindowSeconds(
|
|
13893
|
+
descriptor.cashu,
|
|
13894
|
+
!descriptor.auth || descriptor.auth.allowUnsignedPaid === true
|
|
13895
|
+
);
|
|
13867
13896
|
this.accumulatorMonitor = startAccumulatorMonitor({
|
|
13868
13897
|
pool: opts.db,
|
|
13869
|
-
dvmId: opts.dvmId
|
|
13898
|
+
dvmId: opts.dvmId,
|
|
13899
|
+
expiringSoonThresholdMs: expiringSoonThresholdMs(shortestWindow)
|
|
13870
13900
|
});
|
|
13871
13901
|
} catch (_err) {
|
|
13872
13902
|
diagnosticConsole.error(
|
|
@@ -15672,6 +15702,7 @@ var JobManager = class {
|
|
|
15672
15702
|
disposableCashu: this.opts.disposableCashu,
|
|
15673
15703
|
dvmId: this.opts.dvmId,
|
|
15674
15704
|
lockPubkeys: extra?.lockPubkeys,
|
|
15705
|
+
cashuLockWindowSeconds: signedCashuLockWindowSeconds(this.descriptor.cashu),
|
|
15675
15706
|
mintHealthTracker: extra?.mintHealthTracker,
|
|
15676
15707
|
fxFetcher: this.opts.fxFetcher,
|
|
15677
15708
|
// the ledger leg — a mid-job payment is a top-up that funds
|
|
@@ -22512,6 +22543,7 @@ var DVMServer = class {
|
|
|
22512
22543
|
disposableCashu: this.opts.disposableCashu,
|
|
22513
22544
|
dvmId: this.opts.dvmId,
|
|
22514
22545
|
lockPubkeys,
|
|
22546
|
+
cashuLockWindowSeconds: signedCashuLockWindowSeconds(this.descriptor.cashu),
|
|
22515
22547
|
requestId: c.req.header("X-Cashu-Request-Id"),
|
|
22516
22548
|
mintHealthTracker: this.mintHealthTracker,
|
|
22517
22549
|
fxFetcher: this.fxFetcher,
|
|
@@ -22759,7 +22791,10 @@ var DVMServer = class {
|
|
|
22759
22791
|
mints,
|
|
22760
22792
|
lock_pubkeys: activePubkeySet(active),
|
|
22761
22793
|
lock_pubkey_grace_seconds: this.graceSeconds(),
|
|
22762
|
-
min_locktime: CASHU_MIN_LOCKTIME_SECONDS,
|
|
22794
|
+
min_locktime: this.descriptor.cashu?.minLocktimeSeconds ?? CASHU_MIN_LOCKTIME_SECONDS,
|
|
22795
|
+
...this.unsignedFloorAdvertised() && {
|
|
22796
|
+
unsigned_min_locktime: unsignedCashuLockWindowSeconds(this.descriptor.cashu)
|
|
22797
|
+
},
|
|
22763
22798
|
canonical_id: this.opts.canonicalDvmId ?? this.opts.dvmId ?? null
|
|
22764
22799
|
};
|
|
22765
22800
|
}
|
|
@@ -23117,6 +23152,14 @@ var DVMServer = class {
|
|
|
23117
23152
|
402
|
|
23118
23153
|
);
|
|
23119
23154
|
}
|
|
23155
|
+
/**
|
|
23156
|
+
* Whether `/v1/info` names the unsigned refund-locktime floor. Only a DVM
|
|
23157
|
+
* that configures its floors and serves unsigned paid calls does, so a DVM
|
|
23158
|
+
* on the defaults advertises exactly what it did before the option existed.
|
|
23159
|
+
*/
|
|
23160
|
+
unsignedFloorAdvertised() {
|
|
23161
|
+
return this.descriptor.cashu !== void 0 && (!this.descriptor.auth || this.descriptor.auth.allowUnsignedPaid === true);
|
|
23162
|
+
}
|
|
23120
23163
|
/** Whether this DVM takes Cashu, the only rail an unsigned payer may use. */
|
|
23121
23164
|
unsignedCashuOffered() {
|
|
23122
23165
|
return (this.opts.mints?.length ?? 0) > 0 && this.resolvePaymentMethods().includes("cashu");
|
|
@@ -23558,6 +23601,10 @@ var DVMServer = class {
|
|
|
23558
23601
|
mints: this.advertisedMints(),
|
|
23559
23602
|
previousRequiredMsats: this.previousPriceMsats(cap, dynamicUpfront, pricedAt)
|
|
23560
23603
|
};
|
|
23604
|
+
if (!railOpts.requestId) {
|
|
23605
|
+
railOpts.cashuLockWindowSeconds = unsignedCashuLockWindowSeconds(this.descriptor.cashu);
|
|
23606
|
+
if (this.unsignedFloorAdvertised()) railOpts.cashuLockRefusalHint = UNSIGNED_LOCK_REFUSAL_HINT;
|
|
23607
|
+
}
|
|
23561
23608
|
}
|
|
23562
23609
|
hostingPaymentMayHaveLanded = Boolean(
|
|
23563
23610
|
creditEnvelope || railOpts.cashuToken || railOpts.x402Payment || railOpts.mppCredential
|
|
@@ -10,11 +10,11 @@ import {
|
|
|
10
10
|
isDrainMethod,
|
|
11
11
|
isFundingRail,
|
|
12
12
|
x402SettlementPending
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-B6T3FEVX.js";
|
|
14
14
|
import "./chunk-YG7G4DPZ.js";
|
|
15
15
|
import "./chunk-COYKJRMM.js";
|
|
16
16
|
import "./chunk-5UC7TOQC.js";
|
|
17
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-IKMRT7O5.js";
|
|
18
18
|
import "./chunk-BPYMEMQX.js";
|
|
19
19
|
import "./chunk-H3GGFEE5.js";
|
|
20
20
|
import "./chunk-ALTE7I6C.js";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { f as LockPubkey, e as CheckMintHealthOptions, b as LightningBackend, A as AttestationPayload } from './lightning-backend-
|
|
2
|
-
import {
|
|
1
|
+
import { f as LockPubkey, e as CheckMintHealthOptions, b as LightningBackend, A as AttestationPayload } from './lightning-backend-DMBY7PaJ.js';
|
|
2
|
+
import { cr as HostingCleanupFence, dc as HostedIntent, an as FundingMethod, q as PaymentMethod, bX as CreditLedgerLike, a9 as Message, V as UpfrontPayment, a3 as FundingReceipt, bZ as CreditSnapshot, a4 as JobReceipt, S as SDKJobContext, aB as StepCache, x as ResponseContent, P as PaymentContent, a5 as MessageType, bs as X402Receipt, aK as X402Config, br as X402ExactVersionSupport, dd as X402SettlementIntent, af as PaymentRequirementsV2, de as HostedFundingReservation, bT as CreditLedgerQuerier, df as X402SettlementCursor, c1 as X402SettlementStatus, dg as X402SettlementWriteOff, bY as X402RefundSettlementGate, dh as X402FacilitatorAuth, di as X402BatchSettlementConfig, cO as PostgresX402ChannelStorage, dj as X402PayoutObserver, bV as HostedSettlementReportObligations, bv as CreditDepositPayload, bA as MppxServer, ai as CashuMode, dk as CreditDepositEnqueue, dl as X402SettlementReconciliationReason, au as PaymentRequirements, c5 as FundingRecord, a7 as MppxCredential, c0 as DrawResult, cB as CreditLedgerError, ab as ReceiptCredit, ak as DrainReceiptEvent, ac as DrainReceipt, a2 as DrawFundingReceipt, K as KVStore, E as SignedRequestAudience, dm as CreditDrawReleaseEnqueue, cM as JobCostReportPayload, cN as JobTerminalReportPayload, cQ as RevenueSkippedNoRailPayload, Z as ZodLike, a as DVMDescriptor, c7 as CreditInvoiceRecord, c8 as InvoiceSettlement, cv as ClientCompatibilityGate, ct as ClientCompatibility, bE as PostgresTempoSessionStore, bD as PayoutReporter, w as ResolvedCreditConfig, i as CreditView } from './step-cache-B_18RAPb.js';
|
|
3
3
|
import { ProofLike, SerializedDLEQ, Proof } from '@cashu/cashu-ts';
|
|
4
4
|
import { Hono, Context } from 'hono';
|
|
5
5
|
import { Pool } from 'pg';
|
|
6
|
-
import { d as FxSourceFailure, b as FxRateSnapshot, F as FxFetcher } from './fx-
|
|
6
|
+
import { d as FxSourceFailure, b as FxRateSnapshot, F as FxFetcher } from './fx-D2w3wCvY.js';
|
|
7
7
|
import { Store, Challenge } from 'mppx';
|
|
8
|
-
import { T as TopUpCapUnenforcedReason, A as AppendOutgoingOptions, J as JobRecord, b as JobStore } from './job-store-
|
|
8
|
+
import { T as TopUpCapUnenforcedReason, A as AppendOutgoingOptions, J as JobRecord, b as JobStore } from './job-store-Ci2ihiVr.js';
|
|
9
9
|
import { SettleResponse, SupportedResponse } from '@x402/core/types';
|
|
10
10
|
import { Channel, AutoSettlementConfig } from '@x402/evm/batch-settlement/server';
|
|
11
11
|
import { FacilitatorClient } from '@x402/core/server';
|
|
@@ -1966,6 +1966,14 @@ interface UpfrontPaymentOpts {
|
|
|
1966
1966
|
lockPubkeys?: LockPubkey[];
|
|
1967
1967
|
/** UUIDv4 from `X-Cashu-Request-Id` header. */
|
|
1968
1968
|
requestId?: string;
|
|
1969
|
+
/**
|
|
1970
|
+
* Enforced refund-locktime window; see
|
|
1971
|
+
* {@link AccumulatorReceiveOpts.lockWindowSeconds}. The SDK host always
|
|
1972
|
+
* sets it; a direct caller that omits it gets the default window.
|
|
1973
|
+
*/
|
|
1974
|
+
cashuLockWindowSeconds?: number;
|
|
1975
|
+
/** Replaces the `lock_not_exclusive` hint when the floor that applied is not the signed one. */
|
|
1976
|
+
cashuLockRefusalHint?: string;
|
|
1969
1977
|
/**
|
|
1970
1978
|
* Per-call Cashu the NUT-24 way, for a `POST /v1/job` the payer could pay
|
|
1971
1979
|
* without signing. The unpaid 402 then carries the `X-Cashu` payment request
|
|
@@ -2335,6 +2343,8 @@ interface IncomingPaymentOpts {
|
|
|
2335
2343
|
dvmId?: string;
|
|
2336
2344
|
/** Active NUT-11 P2PK lock pubkeys (current + retired-in-grace). */
|
|
2337
2345
|
lockPubkeys?: LockPubkey[];
|
|
2346
|
+
/** Enforced refund-locktime window. Mirrors {@link UpfrontPaymentOpts.cashuLockWindowSeconds}. */
|
|
2347
|
+
cashuLockWindowSeconds?: number;
|
|
2338
2348
|
/** Runtime mint-health tracker. */
|
|
2339
2349
|
mintHealthTracker?: MintHealthTracker;
|
|
2340
2350
|
/**
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { C as Currency, Z as ZodLike, D as DVMConfig, a as DVMDescriptor } from './step-cache-
|
|
2
|
-
export { A as ApprovalContent, b as ArtifactContent, c as CancelContent, d as CanonicalEnvelope, e as CapabilityRate, f as
|
|
3
|
-
export { C as CreateFxFetcherOpts, D as DEFAULT_FX_CURRENCIES, a as DEFAULT_FX_RATE_SOURCE, F as FxFetcher, b as FxRateSnapshot, c as FxRateUnavailableError, d as FxSourceFailure, e as FxSourceFailureCategory, P as PlatformFxSource, f as createFxFetcher, g as fxRateFor, r as resolveFxSourceFromEnv } from './fx-
|
|
4
|
-
export { I as InvalidFxRateError, f as fiatToSatsCeil, a as formatFiat, b as formatUsd, r as roundUsd, s as satsToFiat } from './usd-
|
|
5
|
-
export { J as JobRecord, a as JobStatus, b as JobStore } from './job-store-
|
|
1
|
+
import { C as Currency, Z as ZodLike, D as DVMConfig, a as DVMDescriptor } from './step-cache-B_18RAPb.js';
|
|
2
|
+
export { A as ApprovalContent, b as ArtifactContent, c as CancelContent, d as CanonicalEnvelope, e as CapabilityRate, f as CashuConfig, g as CreateSignedRequestVerifierOpts, h as CreditConfig, i as CreditView, j as DEFAULT_CREDIT_MAX, k as DEFAULT_CREDIT_MIN, l as DEFAULT_CREDIT_TTL_SECONDS, m as DEFAULT_JOB_RETENTION_DAYS, n as DVMRouteContext, I as IncomingMessage, o as InputType, p as InvalidCurrencyError, J as JobCost, K as KVStore, L as Logger, P as PaymentContent, q as PaymentMethod, r as PriceValue, s as ProgressContent, t as PromptOpts, Q as QuoteConfig, u as QuoteContext, v as QuoteResult, R as ResolvedCashuConfig, w as ResolvedCreditConfig, x as ResponseContent, S as SDKJobContext, y as SDKPaymentRequestOpts, z as SIGNED_REQUEST_AUTH_ID, B as SIGNED_REQUEST_STATEMENT_VERSION, E as SignedRequestAudience, F as SignedRequestDomain, G as SignedRequestError, H as SignedRequestFailure, M as SignedRequestReplayStore, N as SignedRequestSignOpts, O as SignedRequestStatementHeader, T as SignedRequestVerifier, U as UnsupportedCurrencyError, V as UpfrontPayment, W as createSignedRequestVerifier, X as isZodSchema, Y as signedRequestStatementHeader, _ as validateCurrency } from './step-cache-B_18RAPb.js';
|
|
3
|
+
export { C as CreateFxFetcherOpts, D as DEFAULT_FX_CURRENCIES, a as DEFAULT_FX_RATE_SOURCE, F as FxFetcher, b as FxRateSnapshot, c as FxRateUnavailableError, d as FxSourceFailure, e as FxSourceFailureCategory, P as PlatformFxSource, f as createFxFetcher, g as fxRateFor, r as resolveFxSourceFromEnv } from './fx-D2w3wCvY.js';
|
|
4
|
+
export { I as InvalidFxRateError, f as fiatToSatsCeil, a as formatFiat, b as formatUsd, r as roundUsd, s as satsToFiat } from './usd-ROzdYbbm.js';
|
|
5
|
+
export { J as JobRecord, a as JobStatus, b as JobStore } from './job-store-Ci2ihiVr.js';
|
|
6
6
|
export { P as PinnedFetch, S as SSRFError, a as SSRFGuardOpts, b as SSRFReason, c as SSRFResolver, d as assertSafeUrl, e as createPinnedFetch } from './ssrf-dMooihtY.js';
|
|
7
7
|
export { z } from 'zod';
|
|
8
8
|
import 'hono';
|
package/dist/index.js
CHANGED
|
@@ -9,8 +9,9 @@ import {
|
|
|
9
9
|
} from "./chunk-A262WVYX.js";
|
|
10
10
|
import {
|
|
11
11
|
SignedRequestError,
|
|
12
|
-
createSignedRequestVerifier
|
|
13
|
-
|
|
12
|
+
createSignedRequestVerifier,
|
|
13
|
+
resolveCashuConfig
|
|
14
|
+
} from "./chunk-MXESSBXF.js";
|
|
14
15
|
import {
|
|
15
16
|
DEFAULT_CREDIT_MAX,
|
|
16
17
|
DEFAULT_CREDIT_MIN,
|
|
@@ -69,6 +70,7 @@ function configureDVM(config) {
|
|
|
69
70
|
x402: config.x402,
|
|
70
71
|
mpp: config.mpp,
|
|
71
72
|
credit: resolveCreditConfig(config.credit),
|
|
73
|
+
cashu: resolveCashuConfig(config.cashu),
|
|
72
74
|
auth: config.auth
|
|
73
75
|
};
|
|
74
76
|
CONFIGURED_DVM_DESCRIPTORS.add(descriptor);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
3
|
-
import { L as LightningTransactionListOptions, a as LightningTransactionSnapshot, b as LightningBackend, c as LightningPayment, d as LightningWalletInfo, C as CreatedInvoice, I as InvoiceStatus } from '../lightning-backend-
|
|
4
|
-
export { A as AttestationPayload, B as BuilderIdentityKeypair, e as CheckMintHealthOptions, f as LockPubkey, M as MintAmountBounds, g as MintHealthCheckResult, h as amountBoundsVerdict, i as assertNutSupport, j as buildAttestation, k as canSwap, l as checkMintHealth, m as generateIdentity, n as hashCapabilities, o as loadIdentitySecret, p as meltAmountBounds, s as signAttestation, t as toLockPubkey, v as verifyAttestation, w as writeIdentity } from '../lightning-backend-
|
|
1
|
+
import { $ as JsonValue, F as SignedRequestDomain, O as SignedRequestStatementHeader, a0 as X402_BATCH_SETTLEMENT_SCHEME, a1 as X402_EXACT_SCHEME, a2 as DrawFundingReceipt, a3 as FundingReceipt, a4 as JobReceipt$1, V as UpfrontPayment, a5 as MessageType, a6 as X402Version, a7 as MppxCredential, E as SignedRequestAudience, a8 as PaymentRequired, a9 as Message, aa as MppxChallenge, ab as ReceiptCredit, ac as DrainReceipt, C as Currency, ad as X402Wallet, ae as PaymentRequirementsV1, af as PaymentRequirementsV2, L as Logger$1, K as KVStore } from '../step-cache-B_18RAPb.js';
|
|
2
|
+
export { ag as BuildPaymentRequirementsOpts, ah as CapabilityDescriptor, ai as CashuMode, aj as CompleteContent, ak as DrainReceiptEvent, al as ExactEvmPayload, am as ExactEvmPayloadAuthorization, an as FundingMethod, ao as MessageFrom, ap as PaymentPayload, aq as PaymentPayloadV1, ar as PaymentPayloadV2, as as PaymentRequestContent, at as PaymentRequiredV2, au as PaymentRequirements, av as PromptContent, aw as RAIL_REFUNDABLE, ax as ReceiptOutcome, ay as ReceiptPayment, az as ResourceInfo, aA as SettleResponse, aB as StepCache, aC as StepRecord, aD as TextContent, aE as UnsignedDrainReceipt, aF as UnsignedDrawFundingReceipt, aG as UnsignedFundingReceipt, aH as UnsignedJobReceipt, aI as VerifyResponse, aJ as WorkingContent, aK as X402Config, aL as X402ResponseBody, aM as X402SelfRelayRpcFailureReason, aN as X402_DEFAULT_NETWORK, aO as X402_V1_VERSION, aP as X402_VERSION, aQ as buildPaymentRequiredV2, aR as buildPaymentRequirements, aS as caip2ToX402Network, aT as canonicalRequestPath, aU as canonicaliseForSigning, aV as canonicalize, aW as chainIdFromCaip2, aX as computeResultHash, aY as decodePayment, aZ as decodePaymentRequiredHeader, a_ as encodePayment, a$ as encodePaymentRequiredHeader, b0 as encodeSettleResponseHeader, b1 as exactEvmAuthorization, b2 as isArtifactMessage, b3 as isCancelMessage, b4 as isCompleteMessage, b5 as isDrainReceipt, b6 as isDrawFundingReceipt, b7 as isFundingReceipt, b8 as isPaymentRequestMessage, b9 as isPromptMessage, ba as isSignedJobReceipt, bb as isTextMessage, bc as isWorkingMessage, bd as paymentRequiredV2FromV1, be as signDrainReceipt, bf as signDrawFundingReceipt, bg as signFundingReceipt, bh as signReceipt, bi as usdcContractByCaip2, bj as usdcContractFor, bk as usdcDomainNameFor, bl as usdcDomainVersionFor, bm as verifyDrainReceipt, bn as verifyDrawFundingReceipt, bo as verifyFundingReceipt, bp as verifyReceipt, bq as x402NetworkToCaip2 } from '../step-cache-B_18RAPb.js';
|
|
3
|
+
import { L as LightningTransactionListOptions, a as LightningTransactionSnapshot, b as LightningBackend, c as LightningPayment, d as LightningWalletInfo, C as CreatedInvoice, I as InvoiceStatus } from '../lightning-backend-DMBY7PaJ.js';
|
|
4
|
+
export { A as AttestationPayload, B as BuilderIdentityKeypair, e as CheckMintHealthOptions, f as LockPubkey, M as MintAmountBounds, g as MintHealthCheckResult, h as amountBoundsVerdict, i as assertNutSupport, j as buildAttestation, k as canSwap, l as checkMintHealth, m as generateIdentity, n as hashCapabilities, o as loadIdentitySecret, p as meltAmountBounds, s as signAttestation, t as toLockPubkey, v as verifyAttestation, w as writeIdentity } from '../lightning-backend-DMBY7PaJ.js';
|
|
5
5
|
import { ProofLike, MeltQuoteBolt11Response, Proof, Wallet, MintQuoteBolt11Response, MintPreview, CounterSource, CounterRange, SerializedDLEQ, OutputData, OutputDataLike } from '@cashu/cashu-ts';
|
|
6
6
|
export { g as getWallet } from '../wallet-Dwjs5n_M.js';
|
|
7
7
|
import { SimplePool } from 'nostr-tools/pool';
|
|
@@ -9,8 +9,8 @@ import { Session } from 'mppx/tempo';
|
|
|
9
9
|
import { Pool } from 'pg';
|
|
10
10
|
import { PaymentRequired as PaymentRequired$1 } from '@x402/core/types';
|
|
11
11
|
import { ClientChannelStorage, BatchSettlementClientContext, BatchSettlementEvmScheme } from '@x402/evm/batch-settlement/client';
|
|
12
|
-
export { h as FX_CACHE_TTL_MS, i as FX_RETRY_COUNT, w as warmFxSnapshot } from '../fx-
|
|
13
|
-
export { c as InvalidUsdPriceError, p as parseUsdPrice } from '../usd-
|
|
12
|
+
export { h as FX_CACHE_TTL_MS, i as FX_RETRY_COUNT, w as warmFxSnapshot } from '../fx-D2w3wCvY.js';
|
|
13
|
+
export { c as InvalidUsdPriceError, p as parseUsdPrice } from '../usd-ROzdYbbm.js';
|
|
14
14
|
import 'hono';
|
|
15
15
|
import 'mppx';
|
|
16
16
|
import '@x402/core/server';
|
|
@@ -1635,6 +1635,8 @@ interface V1InfoResponse {
|
|
|
1635
1635
|
lock_pubkeys: string[];
|
|
1636
1636
|
lock_pubkey_grace_seconds: number;
|
|
1637
1637
|
min_locktime: number;
|
|
1638
|
+
/** Refund-locktime floor, in seconds, for an unsigned paid call; present only when the DVM configures one. */
|
|
1639
|
+
unsigned_min_locktime?: number;
|
|
1638
1640
|
canonical_id: string | null;
|
|
1639
1641
|
};
|
|
1640
1642
|
}
|
|
@@ -1718,6 +1720,7 @@ interface ProviderInfo {
|
|
|
1718
1720
|
mints: string[];
|
|
1719
1721
|
lock_pubkeys: string[];
|
|
1720
1722
|
min_locktime: number;
|
|
1723
|
+
unsigned_min_locktime?: number;
|
|
1721
1724
|
canonical_id: string | null;
|
|
1722
1725
|
};
|
|
1723
1726
|
/** Git SHA the deployed image was built from. `"unknown"` when baked-in SHA is absent. */
|
|
@@ -3950,8 +3953,9 @@ declare function withinAdvertisedTolerance(advertisedMicro: bigint, localMicro:
|
|
|
3950
3953
|
declare function withInitRetry(fn: () => Promise<void>, label: string, delays?: number[]): Promise<void>;
|
|
3951
3954
|
/** Patches pool.query and pool.connect in-place to retry transport errors.
|
|
3952
3955
|
* Idempotent — safe to call multiple times on the same pool instance.
|
|
3953
|
-
*
|
|
3954
|
-
*
|
|
3956
|
+
* Recovery may replace every socket in the configured pool. The connection
|
|
3957
|
+
* timeout bounds how long ordinary work starts retries; a request context can
|
|
3958
|
+
* supply its own deadline.
|
|
3955
3959
|
* Registers pool.on("error") to prevent idle-client eviction errors from crashing the process,
|
|
3956
3960
|
* and attaches an 'error' guard to every checked-out client for the same reason (see
|
|
3957
3961
|
* {@link guardCheckedOutClient}). */
|
package/dist/internal/caller.js
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import { FacilitatorConfig } from '@x402/core/server';
|
|
2
|
-
import {
|
|
3
|
-
export {
|
|
2
|
+
import { ap as PaymentPayload, ae as PaymentRequirementsV1, af as PaymentRequirementsV2, aK as X402Config, aA as SettleResponse, aI as VerifyResponse, br as X402ExactVersionSupport, bs as X402Receipt, bt as TransactionalPayoutHook, bu as CashuMeltCompleted } from '../step-cache-B_18RAPb.js';
|
|
3
|
+
export { bv as CreditDepositPayload, bw as CreditDrainPayload, bx as FundingLot, by as LotDebit, bz as LotDepletion, bA as MppxServer, bB as NON_CHANNEL_BITCOIN_RAILS, bC as NonChannelBitcoinRail, bD as PayoutReporter, bE as PostgresTempoSessionStore, bF as RevenueReporter, bG as SIGNED_ENVELOPE_FIELDS, bH as SIGNED_ENVELOPE_TYPES, bI as X402TrackedChannel, bJ as _testing, bK as createDefaultReplayStore, bL as depleteLots, bM as fifoOrder, bN as inKindDrawMsats, bO as isInKindDepletion, bP as isNonChannelBitcoinRail, bQ as lotOwedSats, bR as netOwedSats, bS as wrapMppx } from '../step-cache-B_18RAPb.js';
|
|
4
4
|
import { Hono } from 'hono';
|
|
5
5
|
import { Env, BlankSchema } from 'hono/types';
|
|
6
6
|
import { Pool } from 'pg';
|
|
7
7
|
export { Pool } from 'pg';
|
|
8
8
|
import { g as getWallet } from '../wallet-Dwjs5n_M.js';
|
|
9
|
-
import { C as ConsumedCredentialStore, L as LockPubkeyStateLoader } from '../credit-menu-
|
|
10
|
-
export { A as AccumulatorPool, a as AppEnv, b as CreditFundingReport, D as DEFAULT_LOCK_PUBKEY_GRACE_SECONDS, F as FiatDenomination, c as FiatDenominationFailure, d as FundOnlyRequest, I as IncomingPaymentOpts, J as JobCancelledError, e as LockPubkeyPool, f as LockPubkeyState, M as MintHealthTracker, P as PAYMENT_PROOF_KEYS, g as PaymentErrorCode, h as PaymentErrorDetail, i as PaymentInfo, j as PostgresTempoChargeStore, R as ReporterBannerOpts, k as ResolvedFx, l as RevenueBootCheckOpts, S as SDKServerOpts, m as ServerJob, n as ShortPayForfeit, T as TempoChannelReport, o as TempoObserverHealth, p as TempoSessionChannelMismatchError, U as UpfrontPaymentOpts, V as VerifiedIncomingPayment, q as VerifyIncomingSnapshot, X as X402BatchChannelObservation, r as X402FacilitatorHealth, s as X402SettlementEvidenceOutcome, t as X402SettlementRepair, u as X402SettlementRepairRefusal, v as X402SettlementRepaired, w as X402WedgedSettlement, x as X402WedgedSettlementPage, y as X402_BATCH_SETTLEMENT_MAINNET_NETWORK, z as abortJob, B as activePubkeySet, E as applyPaymentInfoToJob, G as assertRevenueReporterReady, H as buildPaymentErrorResponse, K as clearAccumulatorForDvm, N as createDVMServer, O as creditDepositPayload, Q as derivedFundCreditId, W as devModeSkipsPaymentVerification, Y as fromJobRecord, Z as fundedMicroFor, _ as hasPaymentProof, $ as hashLockKey, a0 as implicitCreditId, a1 as initLockPubkeyTable, a2 as initWalletAccumulatorTable, a3 as insertAccumulatorRows, a4 as isDerivedCreditId, a5 as isTerminal, a6 as isYieldMessage, a7 as issueUpfrontChallenges, a8 as loadLockPubkeyState, a9 as msatsToFiatMicro, aa as paymentErrorBody, ab as pinAskFiat, ac as priceFiatMicro, ad as processIncomingPayment, ae as providerMessage, af as pruneRetired, ag as repairX402ExactSettlementEffect, ah as resolveFxSnapshot, ai as resolvePriceFiat, aj as revenueReporterBannerState, ak as rotateLockPubkey, al as seedLockPubkeyState, am as toCreditTerms, an as toJobRecord, ao as unknownRouteNotFound, ap as verifyIncomingPayment, aq as verifyTempoSessionManagementCredential, ar as verifyUpfrontPayment, as as x402RequiredUsdcMicro, at as x402SettledShare } from '../credit-menu-
|
|
11
|
-
export { O as OutgoingMessage, S as StaleJobReapable, i as isStaleJobReapable } from '../job-store-
|
|
9
|
+
import { C as ConsumedCredentialStore, L as LockPubkeyStateLoader } from '../credit-menu-CYjp3FA3.js';
|
|
10
|
+
export { A as AccumulatorPool, a as AppEnv, b as CreditFundingReport, D as DEFAULT_LOCK_PUBKEY_GRACE_SECONDS, F as FiatDenomination, c as FiatDenominationFailure, d as FundOnlyRequest, I as IncomingPaymentOpts, J as JobCancelledError, e as LockPubkeyPool, f as LockPubkeyState, M as MintHealthTracker, P as PAYMENT_PROOF_KEYS, g as PaymentErrorCode, h as PaymentErrorDetail, i as PaymentInfo, j as PostgresTempoChargeStore, R as ReporterBannerOpts, k as ResolvedFx, l as RevenueBootCheckOpts, S as SDKServerOpts, m as ServerJob, n as ShortPayForfeit, T as TempoChannelReport, o as TempoObserverHealth, p as TempoSessionChannelMismatchError, U as UpfrontPaymentOpts, V as VerifiedIncomingPayment, q as VerifyIncomingSnapshot, X as X402BatchChannelObservation, r as X402FacilitatorHealth, s as X402SettlementEvidenceOutcome, t as X402SettlementRepair, u as X402SettlementRepairRefusal, v as X402SettlementRepaired, w as X402WedgedSettlement, x as X402WedgedSettlementPage, y as X402_BATCH_SETTLEMENT_MAINNET_NETWORK, z as abortJob, B as activePubkeySet, E as applyPaymentInfoToJob, G as assertRevenueReporterReady, H as buildPaymentErrorResponse, K as clearAccumulatorForDvm, N as createDVMServer, O as creditDepositPayload, Q as derivedFundCreditId, W as devModeSkipsPaymentVerification, Y as fromJobRecord, Z as fundedMicroFor, _ as hasPaymentProof, $ as hashLockKey, a0 as implicitCreditId, a1 as initLockPubkeyTable, a2 as initWalletAccumulatorTable, a3 as insertAccumulatorRows, a4 as isDerivedCreditId, a5 as isTerminal, a6 as isYieldMessage, a7 as issueUpfrontChallenges, a8 as loadLockPubkeyState, a9 as msatsToFiatMicro, aa as paymentErrorBody, ab as pinAskFiat, ac as priceFiatMicro, ad as processIncomingPayment, ae as providerMessage, af as pruneRetired, ag as repairX402ExactSettlementEffect, ah as resolveFxSnapshot, ai as resolvePriceFiat, aj as revenueReporterBannerState, ak as rotateLockPubkey, al as seedLockPubkeyState, am as toCreditTerms, an as toJobRecord, ao as unknownRouteNotFound, ap as verifyIncomingPayment, aq as verifyTempoSessionManagementCredential, ar as verifyUpfrontPayment, as as x402RequiredUsdcMicro, at as x402SettledShare } from '../credit-menu-CYjp3FA3.js';
|
|
11
|
+
export { O as OutgoingMessage, S as StaleJobReapable, i as isStaleJobReapable } from '../job-store-Ci2ihiVr.js';
|
|
12
12
|
import { z } from 'zod';
|
|
13
|
-
export { f as LockPubkeyStoreLockPubkey, t as lockPubkeyStoreToLockPubkey } from '../lightning-backend-
|
|
13
|
+
export { f as LockPubkeyStoreLockPubkey, t as lockPubkeyStoreToLockPubkey } from '../lightning-backend-DMBY7PaJ.js';
|
|
14
14
|
import 'mppx';
|
|
15
15
|
import '@x402/evm/batch-settlement/server';
|
|
16
16
|
import '@x402/core/types';
|
|
17
17
|
import 'viem';
|
|
18
18
|
import '@cashu/cashu-ts';
|
|
19
|
-
import '../fx-
|
|
19
|
+
import '../fx-D2w3wCvY.js';
|
|
20
20
|
|
|
21
21
|
declare function verifyWithFacilitator(payload: PaymentPayload, requirements: PaymentRequirementsV1 | PaymentRequirementsV2, config?: Pick<X402Config, "facilitator" | "facilitatorAuth">, createAuthHeaders?: FacilitatorConfig["createAuthHeaders"] | undefined): Promise<VerifyResponse>;
|
|
22
22
|
declare function settleWithFacilitator(payload: PaymentPayload, requirements: PaymentRequirementsV1 | PaymentRequirementsV2, config?: Pick<X402Config, "facilitator" | "facilitatorAuth">, createAuthHeaders?: FacilitatorConfig["createAuthHeaders"] | undefined): Promise<SettleResponse>;
|
package/dist/internal/server.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
PostgresTempoSessionStore
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-JQ2Z3MIC.js";
|
|
4
4
|
import {
|
|
5
5
|
verifyX402Payment
|
|
6
6
|
} from "../chunk-VKFR5PCW.js";
|
|
@@ -61,7 +61,7 @@ import {
|
|
|
61
61
|
verifyUpfrontPayment,
|
|
62
62
|
x402RequiredUsdcMicro,
|
|
63
63
|
x402SettledShare
|
|
64
|
-
} from "../chunk-
|
|
64
|
+
} from "../chunk-QNAYENWA.js";
|
|
65
65
|
import "../chunk-XRLKGCAW.js";
|
|
66
66
|
import {
|
|
67
67
|
PayoutReporter
|
|
@@ -70,14 +70,14 @@ import {
|
|
|
70
70
|
settleWithFacilitator,
|
|
71
71
|
verifyWithFacilitator
|
|
72
72
|
} from "../chunk-3KRFFLAT.js";
|
|
73
|
-
import "../chunk-
|
|
73
|
+
import "../chunk-AYEBQDAZ.js";
|
|
74
74
|
import "../chunk-A6EY4K46.js";
|
|
75
75
|
import {
|
|
76
76
|
SIGNED_ENVELOPE_FIELDS,
|
|
77
77
|
SIGNED_ENVELOPE_TYPES,
|
|
78
78
|
createDefaultReplayStore,
|
|
79
79
|
humanizeZodError
|
|
80
|
-
} from "../chunk-
|
|
80
|
+
} from "../chunk-MXESSBXF.js";
|
|
81
81
|
import {
|
|
82
82
|
createInstrumentedFetch,
|
|
83
83
|
isStaleJobReapable
|
|
@@ -110,11 +110,11 @@ import {
|
|
|
110
110
|
isNonChannelBitcoinRail,
|
|
111
111
|
lotOwedSats,
|
|
112
112
|
netOwedSats
|
|
113
|
-
} from "../chunk-
|
|
113
|
+
} from "../chunk-B6T3FEVX.js";
|
|
114
114
|
import "../chunk-YG7G4DPZ.js";
|
|
115
115
|
import "../chunk-COYKJRMM.js";
|
|
116
116
|
import "../chunk-5UC7TOQC.js";
|
|
117
|
-
import "../chunk-
|
|
117
|
+
import "../chunk-IKMRT7O5.js";
|
|
118
118
|
import "../chunk-BPYMEMQX.js";
|
|
119
119
|
import "../chunk-H3GGFEE5.js";
|
|
120
120
|
import {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a9 as Message, V as UpfrontPayment, an as FundingMethod, a3 as FundingReceipt, bZ as CreditSnapshot, a4 as JobReceipt, aC as StepRecord, a5 as MessageType } from './step-cache-B_18RAPb.js';
|
|
2
2
|
import { ProofLike } from '@cashu/cashu-ts';
|
|
3
3
|
|
|
4
4
|
type JobStatus = "processing" | "completed" | "failed" | "awaiting-input" | "cancelled" | "working";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
MemoryCreditLedger
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-AYEBQDAZ.js";
|
|
4
|
+
import "./chunk-B6T3FEVX.js";
|
|
5
5
|
import "./chunk-YG7G4DPZ.js";
|
|
6
6
|
import "./chunk-COYKJRMM.js";
|
|
7
7
|
import "./chunk-5UC7TOQC.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-IKMRT7O5.js";
|
|
9
9
|
import "./chunk-BPYMEMQX.js";
|
|
10
10
|
import "./chunk-H3GGFEE5.js";
|
|
11
11
|
import "./chunk-ALTE7I6C.js";
|
package/dist/server/index.d.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
1
|
+
import { ai as CashuMode, bT as CreditLedgerQuerier, bU as CreditDrainEnqueue, bV as HostedSettlementReportObligations, w as ResolvedCreditConfig, bW as DVMAuthScheme, F as SignedRequestDomain, bX as CreditLedgerLike, bY as X402RefundSettlementGate, bZ as CreditSnapshot, b_ as CreditDrawRefundArgs, b$ as CreditDrawRefundResult, c0 as DrawResult, c1 as X402SettlementStatus, c2 as X402UnresolvedRefund, c3 as GrownDrawResult, c4 as DrawResolution, c5 as FundingRecord, c6 as CreditFundingEvidence, c7 as CreditInvoiceRecord, c8 as InvoiceSettlement, c9 as BlockedInvoiceCursor, ca as InvoiceReconciliation, cb as InvoiceWriteOff, cc as DrawRecord, cd as StalePendingDrawCursor, ce as TempoCreditLossEvidence, cf as TempoCreditLoss, cg as X402CreditLossEvidence, ch as X402CreditLoss, ci as DrainMethod, cj as DrainRequestResult, ck as BitcoinDepositLiability, bx as FundingLot, cl as CreditDrainRecord, cm as ChannelDrainCursor, cn as DrainWriteOff, co as DrainTransitionResult, cp as DrainReleaseResult, cq as DrainFulfilment, cr as HostingCleanupFence, aC as StepRecord, a4 as JobReceipt, a9 as Message, K as KVStore, M as SignedRequestReplayStore, Z as ZodLike, a as DVMDescriptor } from '../step-cache-B_18RAPb.js';
|
|
2
|
+
export { cs as CLIENT_COMPATIBILITY_HEADERS, d as CanonicalEnvelope, ct as ClientCompatibility, cu as ClientCompatibilityEnv, cv as ClientCompatibilityGate, cw as ClientCompatibilityRequirement, cx as ClientSemVer, g as CreateSignedRequestVerifierOpts, cy as CreditFundingBasis, cz as CreditInvoiceStatus, cA as CreditLedger, cB as CreditLedgerError, cC as CreditLedgerErrorCode, cD as CreditLedgerErrorDetails, cE as CreditLedgerPool, cF as CreditStatus, cG as DRAIN_DELIVERY_RESERVE_SATS, cH as DVM_PROTOCOL_VERSION, cI as DrainConflictReason, cJ as DrawRailValue, cK as DrawStatus, cL as HostedTempoCloseReportWriteOff, cM as JobCostReportPayload, cN as JobTerminalReportPayload, cO as PostgresX402ChannelStorage, cP as ReplayStoreBackend, cQ as RevenueSkippedNoRailPayload, cR as RevenueSkippedNoRailReason, z as SIGNED_REQUEST_AUTH_ID, B as SIGNED_REQUEST_STATEMENT_VERSION, cS as Secp256k1AuthOpts, E as SignedRequestAudience, G as SignedRequestError, H as SignedRequestFailure, N as SignedRequestSignOpts, O as SignedRequestStatementHeader, T as SignedRequestVerifier, cT as TempoDrainDecision, cU as TempoDrainDecisionArgs, cV as TempoDrainDecisionResult, cW as TempoDrainHoldReason, V as UpfrontPayment, cX as X402ChannelStorageOpts, cY as X402RelayLockHolder, cZ as X402RelaySubmissionLock, c_ as X402RelaySubmissionLockError, c$ as allocateDrawValue, d0 as clientCompatibilityAttributes, d1 as clientCompatibilityMiddleware, d2 as clientUpgradeRequired, W as createSignedRequestVerifier, d3 as parseClientCapabilities, d4 as parseClientCompatibility, d5 as parseDvmClient, d6 as parseProtocolVersion, d7 as requireClientCompatibility, d8 as retryHostedTempoCloseReport, d9 as secp256k1Auth, da as signedRequestInput, Y as signedRequestStatementHeader, db as writeOffHostedTempoCloseReport } from '../step-cache-B_18RAPb.js';
|
|
3
3
|
import { Pool } from 'pg';
|
|
4
|
-
import { au as CreditMenu, a as AppEnv, U as UpfrontPaymentOpts, i as PaymentInfo, av as ReceiptIssuer, aw as LightningReceive, ax as TempoSettlementReadiness, ay as DVMHostOpts, az as DVMServeResult, L as LockPubkeyStateLoader, C as ConsumedCredentialStore } from '../credit-menu-
|
|
5
|
-
export { aA as BuildCreditMenuArgs, aB as BuilderIdentity, aC as CREDIT_ENVELOPE_KEYS, aD as CreateX402BatchSettlementServerOpts, aE as CreditEnvelope, aF as CreditEnvelopeError, aG as CreditFundCommitment, aH as CreditTerms, aI as DEFAULT_INVOICE_TTL_SECONDS, aJ as DVMHost, aK as HostingClosureCommand, aL as HostingClosureEvidence, aM as HostingControlCommand, aN as HostingControlConfig, aO as HostingControlStatus, aP as JobManager, aQ as JobManagerOpts, aR as LightningReceiveConfig, aS as MIN_INVOICE_TTL_SECONDS, aT as MemoryConsumedCredentialStore, aU as MemoryConsumedCredentialStoreOpts, aV as MemoryProcessedPaymentStore, aW as MemoryX402ExactSettlementStore, aX as MountOpts, aY as OwnerDisplay, aZ as PaidJobCompletion, a_ as PaymentMode, a$ as PlatformReporterOpts, b0 as PostgresProcessedPaymentStore, b1 as PostgresX402ExactSettlementStore, b2 as PriceFiat, b3 as ProcessedPaymentQuerier, b4 as ProcessedPaymentRail, b5 as ProcessedPaymentRecord, b6 as ProcessedPaymentReplayError, b7 as ProcessedPaymentStore, b8 as X402BatchAcceptance, b9 as X402BatchFunding, ba as X402BatchRefusal, bb as X402BatchSettlementServer, bc as X402ExactAcceptance, bd as X402ExactIntentConflictError, be as X402ExactSettlementAttempt, bf as X402ExactSettlementChainEvidence, bg as X402ExactSettlementEffect, bh as X402ExactSettlementEvidenceMissingError, bi as X402ExactSettlementEvidenceReader, bj as X402ExactSettlementIntent, bk as X402ExactSettlementNotReadyError, bl as X402ExactSettlementServer, bm as X402ExactSettlementServerOpts, bn as X402ExactSettlementStatus, bo as X402ExactSettlementStore, bp as X402SettlementChainEvidence, bq as X402SettlementEvidenceReader, br as X402SettlementSubmissionError, bs as X402_BATCH_AUTO_SETTLEMENT, bt as X402_BATCH_MIN_WITHDRAW_DELAY_SECONDS, bu as X402_BATCH_SETTLEMENT_NETWORK, bv as attachCreditMenu, bw as buildCreditMenu, bx as createDVMHost, by as createX402BatchSettlementServer, bz as creditEnvelopeIgnoreFields, bA as drawSettlementRef, bB as extractCreditEnvelope, bC as fundingCommitment, bD as selectPrimaryCredit, bE as signHostingClosure, bF as signHostingControl, bG as stripCreditEnvelope, bH as toCreditView } from '../credit-menu-
|
|
4
|
+
import { au as CreditMenu, a as AppEnv, U as UpfrontPaymentOpts, i as PaymentInfo, av as ReceiptIssuer, aw as LightningReceive, ax as TempoSettlementReadiness, ay as DVMHostOpts, az as DVMServeResult, L as LockPubkeyStateLoader, C as ConsumedCredentialStore } from '../credit-menu-CYjp3FA3.js';
|
|
5
|
+
export { aA as BuildCreditMenuArgs, aB as BuilderIdentity, aC as CREDIT_ENVELOPE_KEYS, aD as CreateX402BatchSettlementServerOpts, aE as CreditEnvelope, aF as CreditEnvelopeError, aG as CreditFundCommitment, aH as CreditTerms, aI as DEFAULT_INVOICE_TTL_SECONDS, aJ as DVMHost, aK as HostingClosureCommand, aL as HostingClosureEvidence, aM as HostingControlCommand, aN as HostingControlConfig, aO as HostingControlStatus, aP as JobManager, aQ as JobManagerOpts, aR as LightningReceiveConfig, aS as MIN_INVOICE_TTL_SECONDS, aT as MemoryConsumedCredentialStore, aU as MemoryConsumedCredentialStoreOpts, aV as MemoryProcessedPaymentStore, aW as MemoryX402ExactSettlementStore, aX as MountOpts, aY as OwnerDisplay, aZ as PaidJobCompletion, a_ as PaymentMode, a$ as PlatformReporterOpts, b0 as PostgresProcessedPaymentStore, b1 as PostgresX402ExactSettlementStore, b2 as PriceFiat, b3 as ProcessedPaymentQuerier, b4 as ProcessedPaymentRail, b5 as ProcessedPaymentRecord, b6 as ProcessedPaymentReplayError, b7 as ProcessedPaymentStore, b8 as X402BatchAcceptance, b9 as X402BatchFunding, ba as X402BatchRefusal, bb as X402BatchSettlementServer, bc as X402ExactAcceptance, bd as X402ExactIntentConflictError, be as X402ExactSettlementAttempt, bf as X402ExactSettlementChainEvidence, bg as X402ExactSettlementEffect, bh as X402ExactSettlementEvidenceMissingError, bi as X402ExactSettlementEvidenceReader, bj as X402ExactSettlementIntent, bk as X402ExactSettlementNotReadyError, bl as X402ExactSettlementServer, bm as X402ExactSettlementServerOpts, bn as X402ExactSettlementStatus, bo as X402ExactSettlementStore, bp as X402SettlementChainEvidence, bq as X402SettlementEvidenceReader, br as X402SettlementSubmissionError, bs as X402_BATCH_AUTO_SETTLEMENT, bt as X402_BATCH_MIN_WITHDRAW_DELAY_SECONDS, bu as X402_BATCH_SETTLEMENT_NETWORK, bv as attachCreditMenu, bw as buildCreditMenu, bx as createDVMHost, by as createX402BatchSettlementServer, bz as creditEnvelopeIgnoreFields, bA as drawSettlementRef, bB as extractCreditEnvelope, bC as fundingCommitment, bD as selectPrimaryCredit, bE as signHostingClosure, bF as signHostingControl, bG as stripCreditEnvelope, bH as toCreditView } from '../credit-menu-CYjp3FA3.js';
|
|
6
6
|
import { Context, Hono } from 'hono';
|
|
7
7
|
import { z } from 'zod';
|
|
8
|
-
import { F as FxFetcher } from '../fx-
|
|
9
|
-
import { c as StreamableJobStore, R as ReceiptIssuingStore, J as JobRecord, d as RequestIdClaim, e as RequestIdClaimResult, f as JobRetentionCursor, O as OutgoingMessage, A as AppendOutgoingOptions, P as PaymentCreditDelta, V as VerifyAndCreditResult, g as JobCounters, b as JobStore } from '../job-store-
|
|
10
|
-
export { a as JobStatus, h as isStreamableJobStore } from '../job-store-
|
|
11
|
-
import { C as ContentHoldHistory, a as ContentHoldMutation } from '../content-retention-
|
|
12
|
-
export { b as ContentHold, c as ContentHoldError, d as ContentHoldEvent, e as ContentHoldStore, f as ContentHoldsResponse, J as JobContentMetadata, g as baselineContentExpiry, h as contentMetadata, i as isContentHoldStore } from '../content-retention-
|
|
8
|
+
import { F as FxFetcher } from '../fx-D2w3wCvY.js';
|
|
9
|
+
import { c as StreamableJobStore, R as ReceiptIssuingStore, J as JobRecord, d as RequestIdClaim, e as RequestIdClaimResult, f as JobRetentionCursor, O as OutgoingMessage, A as AppendOutgoingOptions, P as PaymentCreditDelta, V as VerifyAndCreditResult, g as JobCounters, b as JobStore } from '../job-store-Ci2ihiVr.js';
|
|
10
|
+
export { a as JobStatus, h as isStreamableJobStore } from '../job-store-Ci2ihiVr.js';
|
|
11
|
+
import { C as ContentHoldHistory, a as ContentHoldMutation } from '../content-retention-Cxn-umvR.js';
|
|
12
|
+
export { b as ContentHold, c as ContentHoldError, d as ContentHoldEvent, e as ContentHoldStore, f as ContentHoldsResponse, J as JobContentMetadata, g as baselineContentExpiry, h as contentMetadata, i as isContentHoldStore } from '../content-retention-Cxn-umvR.js';
|
|
13
13
|
export { P as PinnedFetch, S as SSRFError, a as SSRFGuardOpts, b as SSRFReason, c as SSRFResolver, d as assertSafeUrl, e as createPinnedFetch } from '../ssrf-dMooihtY.js';
|
|
14
14
|
import { Env, BlankSchema } from 'hono/types';
|
|
15
15
|
import 'mppx';
|
|
@@ -17,7 +17,7 @@ import '@x402/core/server';
|
|
|
17
17
|
import '@x402/evm/batch-settlement/server';
|
|
18
18
|
import '@x402/core/types';
|
|
19
19
|
import 'viem';
|
|
20
|
-
import '../lightning-backend-
|
|
20
|
+
import '../lightning-backend-DMBY7PaJ.js';
|
|
21
21
|
import '@cashu/cashu-ts';
|
|
22
22
|
|
|
23
23
|
/** Default lifetime of a per-call implicit credit: 90 days before the ledger refuses new draws. */
|
package/dist/server/index.js
CHANGED
|
@@ -82,7 +82,7 @@ import {
|
|
|
82
82
|
toCreditView,
|
|
83
83
|
unknownRouteNotFound,
|
|
84
84
|
writeOffHostedTempoCloseReport
|
|
85
|
-
} from "../chunk-
|
|
85
|
+
} from "../chunk-QNAYENWA.js";
|
|
86
86
|
import {
|
|
87
87
|
MemoryProcessedPaymentStore,
|
|
88
88
|
PostgresProcessedPaymentStore,
|
|
@@ -92,7 +92,7 @@ import "../chunk-KRX7VNBG.js";
|
|
|
92
92
|
import "../chunk-3KRFFLAT.js";
|
|
93
93
|
import {
|
|
94
94
|
MemoryCreditLedger
|
|
95
|
-
} from "../chunk-
|
|
95
|
+
} from "../chunk-AYEBQDAZ.js";
|
|
96
96
|
import {
|
|
97
97
|
PostgresJobStore
|
|
98
98
|
} from "../chunk-A6EY4K46.js";
|
|
@@ -101,7 +101,7 @@ import {
|
|
|
101
101
|
createDefaultReplayStore,
|
|
102
102
|
createSignedRequestVerifier,
|
|
103
103
|
signedRequestInput
|
|
104
|
-
} from "../chunk-
|
|
104
|
+
} from "../chunk-MXESSBXF.js";
|
|
105
105
|
import {
|
|
106
106
|
isStreamableJobStore
|
|
107
107
|
} from "../chunk-Y6JJDOGO.js";
|
|
@@ -139,7 +139,7 @@ import {
|
|
|
139
139
|
PostgresX402ChannelStorage,
|
|
140
140
|
X402RelaySubmissionLockError,
|
|
141
141
|
allocateDrawValue
|
|
142
|
-
} from "../chunk-
|
|
142
|
+
} from "../chunk-B6T3FEVX.js";
|
|
143
143
|
import "../chunk-YG7G4DPZ.js";
|
|
144
144
|
import {
|
|
145
145
|
SDK_INIT_ADVISORY_LOCK,
|
|
@@ -148,7 +148,7 @@ import {
|
|
|
148
148
|
import "../chunk-5UC7TOQC.js";
|
|
149
149
|
import {
|
|
150
150
|
applyRetryToPool
|
|
151
|
-
} from "../chunk-
|
|
151
|
+
} from "../chunk-IKMRT7O5.js";
|
|
152
152
|
import {
|
|
153
153
|
assertSupportedX402Network
|
|
154
154
|
} from "../chunk-BPYMEMQX.js";
|
|
@@ -1310,7 +1310,7 @@ ${config.facilitatorAuth?.keyId ?? ""}`;
|
|
|
1310
1310
|
{ createPublicClient, createWalletClient, erc20Abi, http },
|
|
1311
1311
|
{ tempo: tempoMainnet, tempoModerato }
|
|
1312
1312
|
] = await Promise.all([
|
|
1313
|
-
import("../tempo-session-store-
|
|
1313
|
+
import("../tempo-session-store-N3TFZ26X.js"),
|
|
1314
1314
|
import("viem/accounts"),
|
|
1315
1315
|
import("viem"),
|
|
1316
1316
|
import("viem/chains")
|
|
@@ -1507,7 +1507,7 @@ ${config.facilitatorAuth?.keyId ?? ""}`;
|
|
|
1507
1507
|
sharedPgConsumedStore = consumedStore;
|
|
1508
1508
|
}
|
|
1509
1509
|
if (pgPool) {
|
|
1510
|
-
const { CreditLedger: CreditLedger2 } = await import("../credit-ledger-
|
|
1510
|
+
const { CreditLedger: CreditLedger2 } = await import("../credit-ledger-SBLDJCLE.js");
|
|
1511
1511
|
const pgLedger = new CreditLedger2(pgPool, tempoSessionStore);
|
|
1512
1512
|
pendingInits.push(pgLedger.init());
|
|
1513
1513
|
creditLedger = pgLedger;
|
|
@@ -1516,7 +1516,7 @@ ${config.facilitatorAuth?.keyId ?? ""}`;
|
|
|
1516
1516
|
pendingInits.push(pgProcessed.init());
|
|
1517
1517
|
processedPayments = pgProcessed;
|
|
1518
1518
|
} else {
|
|
1519
|
-
const { MemoryCreditLedger: MemoryCreditLedger2 } = await import("../memory-credit-ledger-
|
|
1519
|
+
const { MemoryCreditLedger: MemoryCreditLedger2 } = await import("../memory-credit-ledger-DMIGIH2H.js");
|
|
1520
1520
|
creditLedger = disposableCashu?.ledger ?? new MemoryCreditLedger2();
|
|
1521
1521
|
const { MemoryProcessedPaymentStore: MemoryProcessedPaymentStore2 } = await import("../processed-payment-store-GKMAWOM3.js");
|
|
1522
1522
|
processedPayments = new MemoryProcessedPaymentStore2();
|
|
@@ -6002,6 +6002,43 @@ interface ResolvedCreditConfig {
|
|
|
6002
6002
|
/** Whether Tempo `charge` and x402 `exact` may fund prepaid credit. */
|
|
6003
6003
|
allowOneShotStablecoin: boolean;
|
|
6004
6004
|
}
|
|
6005
|
+
/**
|
|
6006
|
+
* Refund-locktime floors for Cashu payments. A payer may lock proofs with a
|
|
6007
|
+
* NUT-11 `locktime`; the DVM refuses one that passes before the proofs can be
|
|
6008
|
+
* melted. Shortening a floor below its default is safe only when the builder
|
|
6009
|
+
* melts more often than the floor: once a proof's locktime passes, an
|
|
6010
|
+
* unmelted proof can be spent by the payer's refund key or, when the proof
|
|
6011
|
+
* names no refund key, by anyone holding it.
|
|
6012
|
+
*/
|
|
6013
|
+
interface CashuConfig {
|
|
6014
|
+
/**
|
|
6015
|
+
* Shortest refund `locktime`, in seconds from now, a signed caller must
|
|
6016
|
+
* use. Advertised as `cashu.min_locktime` on `/v1/info`; the DVM enforces it
|
|
6017
|
+
* less 24 hours so a caller resuming an unacknowledged payment still
|
|
6018
|
+
* clears it. Default 604800 (7 days). A whole number of at least 90000
|
|
6019
|
+
* (25 hours), so the enforced floor is always at least an hour away.
|
|
6020
|
+
*/
|
|
6021
|
+
minLocktimeSeconds?: number;
|
|
6022
|
+
/**
|
|
6023
|
+
* Shortest refund `locktime`, in seconds from receipt, for an unsigned
|
|
6024
|
+
* `POST /v1/job` payment sent without `X-Cashu-Request-Id` (a NUT-24
|
|
6025
|
+
* wallet) to a DVM without auth or one built with
|
|
6026
|
+
* `secp256k1Auth({ allowUnsignedPaid: true })`. Such a wallet cannot be
|
|
6027
|
+
* told this floor and locks to its own default, so it is enforced exactly,
|
|
6028
|
+
* with no resume margin, and advertised as `cashu.unsigned_min_locktime`.
|
|
6029
|
+
* A payment carrying `X-Cashu-Request-Id` takes the signed floor. Default
|
|
6030
|
+
* `minLocktimeSeconds` less 24 hours (518400 when that is unset). A whole
|
|
6031
|
+
* number of at least 3600, and no more than `minLocktimeSeconds` less 24
|
|
6032
|
+
* hours: an unsigned payer can send `X-Cashu-Request-Id` to take the signed
|
|
6033
|
+
* floor instead, so a longer unsigned floor would protect nothing.
|
|
6034
|
+
*/
|
|
6035
|
+
unsignedMinLocktimeSeconds?: number;
|
|
6036
|
+
}
|
|
6037
|
+
/** A {@link CashuConfig} with both floors filled from their defaults. */
|
|
6038
|
+
interface ResolvedCashuConfig {
|
|
6039
|
+
minLocktimeSeconds: number;
|
|
6040
|
+
unsignedMinLocktimeSeconds: number;
|
|
6041
|
+
}
|
|
6005
6042
|
/** Platform default for {@link CreditConfig.min} — a dust floor below which rail fees dominate. */
|
|
6006
6043
|
declare const DEFAULT_CREDIT_MIN: PriceValue;
|
|
6007
6044
|
/**
|
|
@@ -6241,6 +6278,8 @@ interface DVMConfig<State = Record<string, unknown>, InputSchema extends ZodLike
|
|
|
6241
6278
|
* omitting it leaves callers on per-call payment. See {@link CreditConfig}.
|
|
6242
6279
|
*/
|
|
6243
6280
|
credit?: CreditConfig;
|
|
6281
|
+
/** Cashu refund-locktime floors. See {@link CashuConfig}. */
|
|
6282
|
+
cashu?: CashuConfig;
|
|
6244
6283
|
/**
|
|
6245
6284
|
* Register DVM-scoped non-protocol routes on the descriptor's Hono sub-app
|
|
6246
6285
|
* Invoked once per `host.mount(dvm)` against the sub-app that
|
|
@@ -6330,6 +6369,8 @@ interface DVMDescriptor<State = Record<string, unknown>, InputSchema extends Zod
|
|
|
6330
6369
|
* `credit` block — the presence check IS the opt-in gate.
|
|
6331
6370
|
*/
|
|
6332
6371
|
readonly credit?: ResolvedCreditConfig;
|
|
6372
|
+
/** Cashu refund-locktime floors, present iff `configureDVM` was given a `cashu` block. */
|
|
6373
|
+
readonly cashu?: ResolvedCashuConfig;
|
|
6333
6374
|
/**
|
|
6334
6375
|
* Descriptor-level auth scheme. Set when `configureDVM` was
|
|
6335
6376
|
* called with `auth: secp256k1Auth(...)` — the SDK fires this on
|
|
@@ -6362,4 +6403,4 @@ declare class StepCache {
|
|
|
6362
6403
|
static deserialize(records: StepRecord[]): StepCache;
|
|
6363
6404
|
}
|
|
6364
6405
|
|
|
6365
|
-
export {
|
|
6406
|
+
export { type JsonValue as $, type ApprovalContent as A, SIGNED_REQUEST_STATEMENT_VERSION as B, type Currency as C, type DVMConfig as D, type SignedRequestAudience as E, type SignedRequestDomain as F, SignedRequestError as G, type SignedRequestFailure as H, type IncomingMessage as I, type JobCost as J, type KVStore as K, type Logger as L, type SignedRequestReplayStore as M, type SignedRequestSignOpts as N, type SignedRequestStatementHeader as O, type PaymentContent as P, type QuoteConfig as Q, type ResolvedCashuConfig as R, type SDKJobContext as S, type SignedRequestVerifier as T, UnsupportedCurrencyError as U, type UpfrontPayment as V, createSignedRequestVerifier as W, isZodSchema as X, signedRequestStatementHeader as Y, type ZodLike as Z, validateCurrency as _, type DVMDescriptor as a, encodePaymentRequiredHeader as a$, X402_BATCH_SETTLEMENT_SCHEME as a0, X402_EXACT_SCHEME as a1, type DrawFundingReceipt as a2, type FundingReceipt as a3, type JobReceipt as a4, type MessageType as a5, type X402Version as a6, type MppxCredential as a7, type PaymentRequired as a8, type Message as a9, type SettleResponse as aA, StepCache as aB, type StepRecord as aC, type TextContent as aD, type UnsignedDrainReceipt as aE, type UnsignedDrawFundingReceipt as aF, type UnsignedFundingReceipt as aG, type UnsignedJobReceipt as aH, type VerifyResponse as aI, type WorkingContent as aJ, type X402Config$1 as aK, type X402ResponseBody as aL, type X402SelfRelayRpcFailureReason as aM, X402_DEFAULT_NETWORK as aN, X402_V1_VERSION as aO, X402_VERSION as aP, buildPaymentRequiredV2 as aQ, buildPaymentRequirements as aR, caip2ToX402Network as aS, canonicalRequestPath as aT, canonicaliseForSigning as aU, canonicalize as aV, chainIdFromCaip2 as aW, computeResultHash as aX, decodePayment as aY, decodePaymentRequiredHeader as aZ, encodePayment as a_, type MppxChallenge as aa, type ReceiptCredit as ab, type DrainReceipt as ac, type X402Wallet as ad, type PaymentRequirementsV1 as ae, type PaymentRequirementsV2 as af, type BuildPaymentRequirementsOpts as ag, type CapabilityDescriptor as ah, type CashuMode as ai, type CompleteContent as aj, type DrainReceiptEvent as ak, type ExactEvmPayload as al, type ExactEvmPayloadAuthorization as am, type FundingMethod as an, type MessageFrom as ao, type PaymentPayload as ap, type PaymentPayloadV1 as aq, type PaymentPayloadV2 as ar, type PaymentRequestContent as as, type PaymentRequiredV2 as at, type PaymentRequirements as au, type PromptContent as av, RAIL_REFUNDABLE as aw, type ReceiptOutcome as ax, type ReceiptPayment as ay, type ResourceInfo as az, type ArtifactContent as b, type CreditDrawRefundResult as b$, encodeSettleResponseHeader as b0, exactEvmAuthorization as b1, isArtifactMessage as b2, isCancelMessage as b3, isCompleteMessage as b4, isDrainReceipt as b5, isDrawFundingReceipt as b6, isFundingReceipt as b7, isPaymentRequestMessage as b8, isPromptMessage as b9, type MppxServer as bA, NON_CHANNEL_BITCOIN_RAILS as bB, type NonChannelBitcoinRail as bC, PayoutReporter as bD, PostgresTempoSessionStore as bE, RevenueReporter as bF, SIGNED_ENVELOPE_FIELDS as bG, SIGNED_ENVELOPE_TYPES as bH, type X402TrackedChannel as bI, _testing as bJ, createDefaultReplayStore as bK, depleteLots as bL, fifoOrder as bM, inKindDrawMsats as bN, isInKindDepletion as bO, isNonChannelBitcoinRail as bP, lotOwedSats as bQ, netOwedSats as bR, wrapMppx as bS, type CreditLedgerQuerier as bT, type CreditDrainEnqueue as bU, HostedSettlementReportObligations as bV, type DVMAuthScheme as bW, type CreditLedgerLike as bX, type X402RefundSettlementGate as bY, type CreditSnapshot as bZ, type CreditDrawRefundArgs as b_, isSignedJobReceipt as ba, isTextMessage as bb, isWorkingMessage as bc, paymentRequiredV2FromV1 as bd, signDrainReceipt as be, signDrawFundingReceipt as bf, signFundingReceipt as bg, signReceipt as bh, usdcContractByCaip2 as bi, usdcContractFor as bj, usdcDomainNameFor as bk, usdcDomainVersionFor as bl, verifyDrainReceipt as bm, verifyDrawFundingReceipt as bn, verifyFundingReceipt as bo, verifyReceipt as bp, x402NetworkToCaip2 as bq, type X402ExactVersionSupport as br, type X402Receipt as bs, type TransactionalPayoutHook as bt, type CashuMeltCompleted as bu, type CreditDepositPayload as bv, type CreditDrainPayload as bw, type FundingLot as bx, type LotDebit as by, type LotDepletion as bz, type CancelContent as c, allocateDrawValue as c$, type DrawResult as c0, type X402SettlementStatus as c1, type X402UnresolvedRefund as c2, type GrownDrawResult as c3, type DrawResolution as c4, type FundingRecord as c5, type CreditFundingEvidence as c6, type CreditInvoiceRecord as c7, type InvoiceSettlement as c8, type BlockedInvoiceCursor as c9, CreditLedger as cA, CreditLedgerError as cB, type CreditLedgerErrorCode as cC, type CreditLedgerErrorDetails as cD, type CreditLedgerPool as cE, type CreditStatus as cF, DRAIN_DELIVERY_RESERVE_SATS as cG, DVM_PROTOCOL_VERSION as cH, type DrainConflictReason as cI, type DrawRailValue as cJ, type DrawStatus as cK, type HostedTempoCloseReportWriteOff as cL, type JobCostReportPayload as cM, type JobTerminalReportPayload as cN, PostgresX402ChannelStorage as cO, type ReplayStoreBackend as cP, type RevenueSkippedNoRailPayload as cQ, type RevenueSkippedNoRailReason as cR, type Secp256k1AuthOpts as cS, type TempoDrainDecision as cT, type TempoDrainDecisionArgs as cU, type TempoDrainDecisionResult as cV, type TempoDrainHoldReason as cW, type X402ChannelStorageOpts as cX, type X402RelayLockHolder as cY, type X402RelaySubmissionLock as cZ, X402RelaySubmissionLockError as c_, type InvoiceReconciliation as ca, type InvoiceWriteOff as cb, type DrawRecord as cc, type StalePendingDrawCursor as cd, type TempoCreditLossEvidence as ce, type TempoCreditLoss as cf, type X402CreditLossEvidence as cg, type X402CreditLoss as ch, type DrainMethod as ci, type DrainRequestResult as cj, type BitcoinDepositLiability as ck, type CreditDrainRecord as cl, type ChannelDrainCursor as cm, type DrainWriteOff as cn, type DrainTransitionResult as co, type DrainReleaseResult as cp, type DrainFulfilment as cq, HostingCleanupFence as cr, CLIENT_COMPATIBILITY_HEADERS as cs, type ClientCompatibility as ct, type ClientCompatibilityEnv as cu, type ClientCompatibilityGate as cv, type ClientCompatibilityRequirement as cw, type ClientSemVer as cx, type CreditFundingBasis as cy, type CreditInvoiceStatus as cz, type CanonicalEnvelope as d, clientCompatibilityAttributes as d0, clientCompatibilityMiddleware as d1, clientUpgradeRequired as d2, parseClientCapabilities as d3, parseClientCompatibility as d4, parseDvmClient as d5, parseProtocolVersion as d6, requireClientCompatibility as d7, retryHostedTempoCloseReport as d8, secp256k1Auth as d9, signedRequestInput as da, writeOffHostedTempoCloseReport as db, type HostedIntent as dc, type X402SettlementIntent as dd, type HostedFundingReservation as de, type X402SettlementCursor as df, type X402SettlementWriteOff as dg, type X402FacilitatorAuth as dh, type X402BatchSettlementConfig as di, type X402PayoutObserver as dj, type CreditDepositEnqueue as dk, type X402SettlementReconciliationReason as dl, type CreditDrawReleaseEnqueue as dm, type CapabilityRate as e, type CashuConfig as f, type CreateSignedRequestVerifierOpts as g, type CreditConfig as h, type CreditView as i, DEFAULT_CREDIT_MAX as j, DEFAULT_CREDIT_MIN as k, DEFAULT_CREDIT_TTL_SECONDS as l, DEFAULT_JOB_RETENTION_DAYS as m, type DVMRouteContext as n, type InputType as o, InvalidCurrencyError as p, type PaymentMethod as q, type PriceValue as r, type ProgressContent as s, type PromptOpts as t, type QuoteContext as u, type QuoteResult as v, type ResolvedCreditConfig as w, type ResponseContent as x, type SDKPaymentRequestOpts as y, SIGNED_REQUEST_AUTH_ID as z };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
PostgresTempoSessionStore,
|
|
3
3
|
assertMonotonicTransition
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-JQ2Z3MIC.js";
|
|
5
5
|
import "./chunk-YG7G4DPZ.js";
|
|
6
6
|
import "./chunk-COYKJRMM.js";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-IKMRT7O5.js";
|
|
8
8
|
import "./chunk-ALTE7I6C.js";
|
|
9
9
|
export {
|
|
10
10
|
PostgresTempoSessionStore,
|
package/dist/testing/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { C as ContentHoldHistory, a as ContentHoldMutation } from '../content-retention-
|
|
2
|
-
import {
|
|
3
|
-
import { c as StreamableJobStore, R as ReceiptIssuingStore, J as JobRecord, d as RequestIdClaim, e as RequestIdClaimResult, f as JobRetentionCursor, O as OutgoingMessage, A as AppendOutgoingOptions, P as PaymentCreditDelta, V as VerifyAndCreditResult, g as JobCounters } from '../job-store-
|
|
1
|
+
import { C as ContentHoldHistory, a as ContentHoldMutation } from '../content-retention-Cxn-umvR.js';
|
|
2
|
+
import { a4 as JobReceipt, a9 as Message, a5 as MessageType, K as KVStore, L as Logger, x as ResponseContent, P as PaymentContent, S as SDKJobContext } from '../step-cache-B_18RAPb.js';
|
|
3
|
+
import { c as StreamableJobStore, R as ReceiptIssuingStore, J as JobRecord, d as RequestIdClaim, e as RequestIdClaimResult, f as JobRetentionCursor, O as OutgoingMessage, A as AppendOutgoingOptions, P as PaymentCreditDelta, V as VerifyAndCreditResult, g as JobCounters } from '../job-store-Ci2ihiVr.js';
|
|
4
4
|
import 'hono';
|
|
5
5
|
import 'mppx';
|
|
6
6
|
import '@x402/core/server';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dvmkit/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.0",
|
|
4
4
|
"description": "SDK for building Digital Vending Machines: pay-per-use HTTPS services AI agents can find, pay, and call with no account or API key",
|
|
5
5
|
"author": "DVM Technologies Ltd",
|
|
6
6
|
"keywords": [
|