@toon-protocol/rig 4.7.0 → 5.0.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/README.md +30 -22
- package/dist/{chunk-J6Y3U645.js → chunk-2TG4YHEC.js} +59 -41
- package/dist/chunk-2TG4YHEC.js.map +1 -0
- package/dist/{chunk-3IVO2MSZ.js → chunk-4WVH2ITA.js} +3 -3
- package/dist/{chunk-U5A7MHBP.js → chunk-7VIVQHRG.js} +1 -1
- package/dist/chunk-7VIVQHRG.js.map +1 -0
- package/dist/{chunk-XQ2AWNHQ.js → chunk-CHVOXCDV.js} +0 -0
- package/dist/{chunk-XCLUB2CY.js → chunk-LMZSAFAB.js} +44 -15
- package/dist/chunk-LMZSAFAB.js.map +1 -0
- package/dist/{chunk-S3KKQ4IC.js → chunk-QKL53YZS.js} +2 -2
- package/dist/{chunk-UE5TAFEU.js → chunk-ZQGXFFBP.js} +4 -4
- package/dist/chunk-ZQGXFFBP.js.map +1 -0
- package/dist/{ci-serve-T33FCQVT.js → ci-serve-BU7NDT7O.js} +7 -7
- package/dist/cli/rig.js +6 -6
- package/dist/index.js +3 -3
- package/dist/standalone/index.d.ts +109 -74
- package/dist/standalone/index.js +13 -3
- package/dist/{standalone-mode-FY3XVQQK.js → standalone-mode-AT4S5EZG.js} +135 -49
- package/dist/standalone-mode-AT4S5EZG.js.map +1 -0
- package/package.json +2 -2
- package/dist/chunk-J6Y3U645.js.map +0 -1
- package/dist/chunk-U5A7MHBP.js.map +0 -1
- package/dist/chunk-UE5TAFEU.js.map +0 -1
- package/dist/chunk-XCLUB2CY.js.map +0 -1
- package/dist/standalone-mode-FY3XVQQK.js.map +0 -1
- /package/dist/{chunk-3IVO2MSZ.js.map → chunk-4WVH2ITA.js.map} +0 -0
- /package/dist/{chunk-XQ2AWNHQ.js.map → chunk-CHVOXCDV.js.map} +0 -0
- /package/dist/{chunk-S3KKQ4IC.js.map → chunk-QKL53YZS.js.map} +0 -0
- /package/dist/{ci-serve-T33FCQVT.js.map → ci-serve-BU7NDT7O.js.map} +0 -0
|
@@ -2,13 +2,14 @@ import { P as Publisher, F as FeeRates, G as GitObjectUpload, U as UploadReceipt
|
|
|
2
2
|
import '@toon-protocol/core/nip34';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* The paid write path on `@toon-protocol/client`
|
|
5
|
+
* The paid write path on `@toon-protocol/client` 4.x: a {@link Publisher}
|
|
6
6
|
* that pays a TOON connector per request.
|
|
7
7
|
*
|
|
8
8
|
* Everything a paid command needs comes from one connector URL: the client
|
|
9
|
-
* reads the node's own `GET /ilp` (addresses, prices, settlement
|
|
10
|
-
* sealing key
|
|
11
|
-
* pays each request with a signed
|
|
9
|
+
* reads the node's own `GET /ilp` (addresses, prices, x402 batch-settlement
|
|
10
|
+
* terms, sealing key: connector ADR 0050), opens or resumes an x402 channel,
|
|
11
|
+
* and pays each request with a signed voucher for the running total
|
|
12
|
+
* (connector ADR 0075). There is no relay to discover peers
|
|
12
13
|
* on (kind:10032 was removed by ADR 0046) and no topology to negotiate: a
|
|
13
14
|
* destination is a route the node prices, and `send()` pays what the route
|
|
14
15
|
* costs — including the per-kibibyte part of an ADR 0065 schedule, which the
|
|
@@ -65,7 +66,7 @@ interface RouteTerms {
|
|
|
65
66
|
price: bigint;
|
|
66
67
|
pricePerKib?: bigint;
|
|
67
68
|
}
|
|
68
|
-
/** The slice of `ToonClient` (
|
|
69
|
+
/** The slice of `ToonClient` (4.x) this publisher needs. */
|
|
69
70
|
interface PaidClientLike {
|
|
70
71
|
send(destination: string, request: PaidRequest, options?: PaidSendOptions): Promise<PaidSendResult>;
|
|
71
72
|
/** The node's terms for a destination, or `null` when it prices no such route. */
|
|
@@ -127,7 +128,7 @@ declare class ConnectorPublisher implements Publisher {
|
|
|
127
128
|
getFeeRates(): Promise<FeeRates>;
|
|
128
129
|
private readFeeRates;
|
|
129
130
|
private sign;
|
|
130
|
-
/** One paid kind:5094 write; returns the tx id and what the
|
|
131
|
+
/** One paid kind:5094 write; returns the tx id and what the voucher spent. */
|
|
131
132
|
private storeWrite;
|
|
132
133
|
uploadGitObject(upload: GitObjectUpload): Promise<UploadReceipt>;
|
|
133
134
|
uploadBlob(upload: BlobUpload): Promise<UploadReceipt>;
|
|
@@ -148,7 +149,7 @@ declare class ConnectorPublisher implements Publisher {
|
|
|
148
149
|
/**
|
|
149
150
|
* The Nostr signing key rig derives from a BIP-39 phrase.
|
|
150
151
|
*
|
|
151
|
-
* `@toon-protocol/client` 2.x is a pure payer and carries no Nostr identity
|
|
152
|
+
* `@toon-protocol/client` 2.x and later is a pure payer and carries no Nostr identity
|
|
152
153
|
* (its own words), so the derivation that lived in the 0.x client moves here,
|
|
153
154
|
* unchanged: `m/44'/1237'/0'/0/<accountIndex>`. Unchanged matters — this is
|
|
154
155
|
* the key every existing rig repo is owned by (`toon.owner`, the kind:30617
|
|
@@ -176,40 +177,45 @@ declare function deriveNostrKeyFromMnemonic(mnemonic: string, accountIndex?: num
|
|
|
176
177
|
/**
|
|
177
178
|
* Peer→channel map for the STANDALONE embedded publisher (#262).
|
|
178
179
|
*
|
|
179
|
-
* Why this exists:
|
|
180
|
-
*
|
|
181
|
-
*
|
|
182
|
-
*
|
|
183
|
-
*
|
|
184
|
-
*
|
|
185
|
-
*
|
|
186
|
-
*
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
*
|
|
180
|
+
* Why this exists: rig used to open (and fund) a FRESH on-chain channel per
|
|
181
|
+
* invocation, because the client of the day kept the peer→channelId mapping
|
|
182
|
+
* only in memory (the #260 fresh-outsider e2e stranded five deposits across
|
|
183
|
+
* five commands). Since client 4.x the client persists its own channel config
|
|
184
|
+
* beside the watermark (`JsonFileChannelStore`: `channels-x402.json` plus its
|
|
185
|
+
* `.peers.json` sibling) and resumes from it by itself. This map remains the
|
|
186
|
+
* record `rig channel list/close/settle`, `rig balance` and `rig ci serve`
|
|
187
|
+
* read: WHICH channel the identity holds with each peer, keyed by
|
|
188
|
+
* `identity pubkey | ILP anchor (peer/apex destination) | chain | tokenNetwork`.
|
|
189
|
+
*
|
|
190
|
+
* VOUCHERS (client 4.x, connector ADR 0075): every paid packet carries an x402
|
|
191
|
+
* `batch-settlement` voucher naming the running total. There is no nonce; the
|
|
192
|
+
* watermark is the cumulative amount alone. The toon-channel claims client
|
|
193
|
+
* 3.x signed are refused by a current connector, so a 3.x rig's files
|
|
194
|
+
* (`rig-channels.json`, `channels.json`) are never read by this module and
|
|
195
|
+
* never written: they are only named, so their deposits can still be taken
|
|
196
|
+
* back with the rig that opened them ({@link legacyChannelFiles}).
|
|
190
197
|
*
|
|
191
198
|
* It is the standalone twin of the daemon's
|
|
192
199
|
* `packages/client-mcp/src/daemon/apex-channel-store.ts` — same record shape
|
|
193
|
-
* (channelId + the chain context
|
|
194
|
-
*
|
|
195
|
-
*
|
|
200
|
+
* (channelId + the chain context), extended with the identity pubkey (rig
|
|
201
|
+
* identities come from an env/`.env` precedence chain, so one state dir can
|
|
202
|
+
* serve several identities) and the tokenNetwork.
|
|
196
203
|
* `@toon-protocol/rig` must not import `@toon-protocol/client-mcp` (that
|
|
197
204
|
* package depends on this one — circular), hence the twin; keep the
|
|
198
205
|
* semantics in sync.
|
|
199
206
|
*
|
|
200
207
|
* CONCURRENCY: writes happen only from paid commands, which already hold the
|
|
201
208
|
* per-identity advisory lockfile (./nonce-guard.ts `NonceLock`) for their
|
|
202
|
-
* whole lifetime
|
|
209
|
+
* whole lifetime: the same guard that serializes the voucher watermark also
|
|
203
210
|
* serializes this file for one identity. `rig channel list` reads only.
|
|
204
211
|
*
|
|
205
212
|
* COUNTERPARTY: the key names a ROUTE, not a node — an ILP name can change
|
|
206
213
|
* hands (the devnet apex `g.toon` was retired and another node took over
|
|
207
214
|
* `g.toon.relay`). A record therefore also carries the counterparty
|
|
208
|
-
* settlement address it was opened against (`context.recipient`), which
|
|
209
|
-
* re-checked against the destination's announced address
|
|
210
|
-
*
|
|
211
|
-
*
|
|
212
|
-
* connector with no record of that channel refuses (`F01`).
|
|
215
|
+
* settlement address it was opened against (`context.recipient`), which can be
|
|
216
|
+
* re-checked against the destination's announced address ({@link
|
|
217
|
+
* counterpartyMatch}); a rotated counterparty {@link ChannelMapStore.supersede}s
|
|
218
|
+
* the record rather than paying a connector with no record of that channel.
|
|
213
219
|
*
|
|
214
220
|
* CORRUPTION: an unreadable/invalid map file is a hard
|
|
215
221
|
* {@link ChannelMapCorruptError} — surfaced BEFORE any on-chain open — never
|
|
@@ -220,22 +226,46 @@ declare function deriveNostrKeyFromMnemonic(mnemonic: string, accountIndex?: num
|
|
|
220
226
|
* `rig channel list` command reads it without the optional
|
|
221
227
|
* `@toon-protocol/client` peer dependency installed.
|
|
222
228
|
*/
|
|
223
|
-
/** Map filename under the shared client state dir. */
|
|
224
|
-
declare const RIG_CHANNEL_MAP_FILENAME = "rig-channels.json";
|
|
229
|
+
/** Map filename under the shared client state dir (x402 voucher channels). */
|
|
230
|
+
declare const RIG_CHANNEL_MAP_FILENAME = "rig-channels-x402.json";
|
|
231
|
+
/**
|
|
232
|
+
* The client's x402 channel store under the shared client state dir: the
|
|
233
|
+
* voucher watermark, with every channel's config in the `.peers.json` sibling.
|
|
234
|
+
* A new name for client 4.x so a 3.x store is never read as one.
|
|
235
|
+
*/
|
|
236
|
+
declare const CHANNEL_STORE_FILENAME = "channels-x402.json";
|
|
237
|
+
/** What a client 3.x rig kept its toon-channel map in. Never read or written. */
|
|
238
|
+
declare const LEGACY_RIG_CHANNEL_MAP_FILENAME = "rig-channels.json";
|
|
239
|
+
/** What a client 3.x rig kept its toon-channel watermark in. Never read or written. */
|
|
240
|
+
declare const LEGACY_CHANNEL_STORE_FILENAME = "channels.json";
|
|
225
241
|
/**
|
|
226
242
|
* Resolve the two channel-state files under `TOON_CLIENT_HOME` (default
|
|
227
|
-
* `~/.toon-client`): the rig peer→channel map, and the client's
|
|
228
|
-
*
|
|
229
|
-
* `<dir>/channels.json
|
|
230
|
-
* the embedded ToonClient).
|
|
243
|
+
* `~/.toon-client`): the rig peer→channel map, and the client's x402 voucher
|
|
244
|
+
* store (`config.json`'s `channelStorePath`, default
|
|
245
|
+
* `<dir>/channels-x402.json`: the same resolution `cli/standalone-mode.ts`
|
|
246
|
+
* feeds the embedded ToonClient).
|
|
231
247
|
*/
|
|
232
248
|
declare function resolveChannelPaths(env: NodeJS.ProcessEnv): {
|
|
233
249
|
mapPath: string;
|
|
234
250
|
watermarkPath: string;
|
|
235
251
|
};
|
|
236
252
|
/**
|
|
237
|
-
*
|
|
238
|
-
*
|
|
253
|
+
* The client 3.x channel files present in a state dir: a toon-channel map and
|
|
254
|
+
* watermark a current connector no longer honours. Named so a caller can say
|
|
255
|
+
* they were skipped; the deposits they record are left for the 3.x rig that
|
|
256
|
+
* opened them (`npm i -g @toon-protocol/rig@4.7.0`, then `rig channel close`).
|
|
257
|
+
*/
|
|
258
|
+
declare function legacyChannelFiles(dir: string): string[];
|
|
259
|
+
/**
|
|
260
|
+
* Does `path` hold a client 3.x toon-channel store? Its watermark entries
|
|
261
|
+
* carry a nonce that moved (a 4.x entry keeps `nonce: 0` for the file's
|
|
262
|
+
* sake), and its `.peers.json` bindings carry no `batchSettlement` config.
|
|
263
|
+
* An unreadable file answers false: the client reports it on its own read.
|
|
264
|
+
*/
|
|
265
|
+
declare function isToonChannelStore(path: string): boolean;
|
|
266
|
+
/**
|
|
267
|
+
* A channel's chain context (same shape the daemon's apex-channel-store
|
|
268
|
+
* persists, and the client's own binding carries).
|
|
239
269
|
*/
|
|
240
270
|
interface PersistedChannelContext {
|
|
241
271
|
chainType: string;
|
|
@@ -249,17 +279,17 @@ interface PersistedChannelContext {
|
|
|
249
279
|
interface ChannelMapRecord {
|
|
250
280
|
/** On-chain payment channel id. */
|
|
251
281
|
channelId: string;
|
|
252
|
-
/**
|
|
282
|
+
/** The node's sealing key id (`GET /ilp` `edgeIdentity.keyId`), else its URL. */
|
|
253
283
|
peerId: string;
|
|
254
284
|
/** Hex Nostr pubkey of the identity that opened the channel. */
|
|
255
285
|
identity: string;
|
|
256
286
|
/** ILP anchor destination the channel was opened against (peer/apex). */
|
|
257
287
|
destination: string;
|
|
258
|
-
/**
|
|
288
|
+
/** The x402 network the channel lives on, e.g. `eip155:8453`, `solana:5eykt…`. */
|
|
259
289
|
chain: string;
|
|
260
|
-
/**
|
|
290
|
+
/** The batch-settlement contract (EVM) or program (Solana) holding it. */
|
|
261
291
|
tokenNetwork: string;
|
|
262
|
-
/**
|
|
292
|
+
/** Chain context: chain type, token, counterparty. */
|
|
263
293
|
context: PersistedChannelContext;
|
|
264
294
|
/** On-chain deposit total (base units, string), when known. */
|
|
265
295
|
depositTotal?: string;
|
|
@@ -284,15 +314,16 @@ interface ChannelMapKey {
|
|
|
284
314
|
tokenNetwork: string;
|
|
285
315
|
}
|
|
286
316
|
/**
|
|
287
|
-
* One entry of the client's
|
|
317
|
+
* One entry of the client's voucher watermark store (`channels-x402.json`):
|
|
288
318
|
* format DUPLICATED from `@toon-protocol/client`'s `JsonFileChannelStore`
|
|
289
319
|
* (`packages/client/src/channel/ChannelStore.ts`); keep in sync.
|
|
290
320
|
*/
|
|
291
321
|
interface WatermarkEntry {
|
|
292
|
-
|
|
293
|
-
|
|
322
|
+
/** Always 0 for an x402 channel: vouchers carry no nonce. Kept for the file's shape. */
|
|
323
|
+
nonce?: number;
|
|
324
|
+
/** Cumulative amount signed so far, base units (string-encoded bigint). */
|
|
294
325
|
cumulativeAmount: string;
|
|
295
|
-
/**
|
|
326
|
+
/** Exit timers, string-encoded unix SECONDS. */
|
|
296
327
|
closedAt?: string;
|
|
297
328
|
settleableAt?: string;
|
|
298
329
|
settledAt?: string;
|
|
@@ -336,11 +367,11 @@ declare function recordKey(record: ChannelMapRecord): ChannelMapKey;
|
|
|
336
367
|
interface ChannelMapStoreOptions {
|
|
337
368
|
/** The rig peer→channel map file (`rig-channels.json`). */
|
|
338
369
|
mapPath: string;
|
|
339
|
-
/** The client's
|
|
370
|
+
/** The client's voucher watermark store (`channels-x402.json`). */
|
|
340
371
|
watermarkPath: string;
|
|
341
372
|
}
|
|
342
373
|
/**
|
|
343
|
-
* File-backed peer→channel map + read/seed access to the client's
|
|
374
|
+
* File-backed peer→channel map + read/seed access to the client's voucher
|
|
344
375
|
* watermark store. Synchronous I/O (matches the client's `ChannelStore`
|
|
345
376
|
* surface); see the module doc for the locking and corruption contracts.
|
|
346
377
|
*/
|
|
@@ -359,9 +390,9 @@ declare class ChannelMapStore {
|
|
|
359
390
|
listFor(identity: string, destination: string): ChannelMapRecord[];
|
|
360
391
|
/**
|
|
361
392
|
* Record a (freshly opened) channel. Overwrites any previous record under
|
|
362
|
-
* the same (identity, destination, chain, tokenNetwork) key
|
|
363
|
-
*
|
|
364
|
-
* watermark store.
|
|
393
|
+
* the same (identity, destination, chain, tokenNetwork) key; a caller that
|
|
394
|
+
* replaces a channel still holding a deposit {@link supersede}s the old
|
|
395
|
+
* record first. Its watermark stays in the watermark store.
|
|
365
396
|
*/
|
|
366
397
|
record(record: Omit<ChannelMapRecord, 'openedAt' | 'lastUsedAt'> & Partial<Pick<ChannelMapRecord, 'openedAt' | 'lastUsedAt'>>): void;
|
|
367
398
|
/**
|
|
@@ -387,13 +418,13 @@ declare class ChannelMapStore {
|
|
|
387
418
|
*/
|
|
388
419
|
supersede(record: ChannelMapRecord): void;
|
|
389
420
|
/**
|
|
390
|
-
* Read one channel's
|
|
391
|
-
*
|
|
421
|
+
* Read one channel's watermark entry from the client's voucher store
|
|
422
|
+
* (undefined when the file or entry is missing).
|
|
392
423
|
* @throws {ChannelMapCorruptError} when the watermark file is unreadable.
|
|
393
424
|
*/
|
|
394
425
|
readWatermark(channelId: string): WatermarkEntry | undefined;
|
|
395
426
|
/**
|
|
396
|
-
* Seed a fresh channel's watermark entry (
|
|
427
|
+
* Seed a fresh channel's watermark entry (cumulative 0) so a
|
|
397
428
|
* later resume can tell "never claimed against" apart from "watermark
|
|
398
429
|
* lost". Never overwrites an existing entry.
|
|
399
430
|
*/
|
|
@@ -403,8 +434,8 @@ declare class ChannelMapStore {
|
|
|
403
434
|
private readWatermarkFile;
|
|
404
435
|
}
|
|
405
436
|
/**
|
|
406
|
-
* Where a channel sits in the
|
|
407
|
-
* mirrors `
|
|
437
|
+
* Where a channel sits in the exit journey, from its watermark timers:
|
|
438
|
+
* mirrors what the client's `channel.channels()` reports. A missing entry reads as
|
|
408
439
|
* `open` (recorded channels are seeded at open time; a lost watermark file
|
|
409
440
|
* surfaces separately as unknown claim state).
|
|
410
441
|
*/
|
|
@@ -460,26 +491,26 @@ interface WalletChainBalanceInfo {
|
|
|
460
491
|
/** Receipt of an explicit `rig channel open` (fresh open OR resume). */
|
|
461
492
|
interface ChannelOpenOutcome {
|
|
462
493
|
channelId: string;
|
|
463
|
-
/** True when the recorded channel was resumed (no
|
|
494
|
+
/** True when the recorded channel was resumed (no open). */
|
|
464
495
|
resumed: boolean;
|
|
465
496
|
/** ILP anchor destination the channel is keyed by in the map. */
|
|
466
497
|
destination: string;
|
|
467
|
-
/**
|
|
498
|
+
/** The x402 network the channel lives on (e.g. `eip155:8453`). */
|
|
468
499
|
chain?: string;
|
|
469
|
-
/**
|
|
500
|
+
/** The node's sealing key id, when it publishes one. */
|
|
470
501
|
peerId?: string;
|
|
471
502
|
/** On-chain deposit total (base units), when known. */
|
|
472
503
|
depositTotal?: string;
|
|
473
|
-
/** Extra collateral added by `--deposit` (base units), when any. */
|
|
504
|
+
/** Extra collateral added by `--deposit` (base units, Base only), when any. */
|
|
474
505
|
depositAdded?: string;
|
|
475
506
|
/** Tx hash of the `--deposit` top-up, when any. */
|
|
476
507
|
depositTxHash?: string;
|
|
477
508
|
}
|
|
478
|
-
/** Receipt of a channel close (start of the
|
|
509
|
+
/** Receipt of a channel close (start of the exit window). */
|
|
479
510
|
interface ChannelCloseOutcome {
|
|
480
511
|
channelId: string;
|
|
481
512
|
txHash?: string;
|
|
482
|
-
/** Unix SECONDS (string-encoded bigint) the close
|
|
513
|
+
/** Unix SECONDS (string-encoded bigint) the close was started. */
|
|
483
514
|
closedAt: string;
|
|
484
515
|
/** Unix SECONDS (string-encoded bigint) settle becomes possible. */
|
|
485
516
|
settleableAt: string;
|
|
@@ -496,17 +527,20 @@ interface ChannelSettleOutcome {
|
|
|
496
527
|
*/
|
|
497
528
|
interface StandaloneMoneyOps {
|
|
498
529
|
/**
|
|
499
|
-
* Explicitly open (or resume) the
|
|
500
|
-
* channel
|
|
501
|
-
*
|
|
502
|
-
*
|
|
530
|
+
* Explicitly open (or resume) the x402 channel with the context's node:
|
|
531
|
+
* the channel lazy paid writes draw on, so the result lands in the #262
|
|
532
|
+
* peer→channel map. `deposit` adds that much extra collateral (base units)
|
|
533
|
+
* after the open/resume; only a Base channel can be topped up.
|
|
503
534
|
*/
|
|
504
535
|
openChannel(opts?: {
|
|
505
536
|
deposit?: bigint;
|
|
506
537
|
}): Promise<ChannelOpenOutcome>;
|
|
507
|
-
/**
|
|
538
|
+
/**
|
|
539
|
+
* Close a recorded channel: starts its exit window. The client leaves
|
|
540
|
+
* every channel still open with the node in the same call.
|
|
541
|
+
*/
|
|
508
542
|
closeChannel(record: ChannelMapRecord): Promise<ChannelCloseOutcome>;
|
|
509
|
-
/** Settle a closed channel after its
|
|
543
|
+
/** Settle a closed channel after its exit window: releases funds. */
|
|
510
544
|
settleChannel(record: ChannelMapRecord): Promise<ChannelSettleOutcome>;
|
|
511
545
|
/**
|
|
512
546
|
* The full multi-chain wallet view (#299) for the identity's configured
|
|
@@ -520,14 +554,15 @@ interface StandaloneMoneyOps {
|
|
|
520
554
|
/**
|
|
521
555
|
* Nonce-ownership guard for the STANDALONE embedded Publisher (#228).
|
|
522
556
|
*
|
|
523
|
-
* Why this exists:
|
|
524
|
-
*
|
|
525
|
-
*
|
|
526
|
-
*
|
|
527
|
-
*
|
|
528
|
-
*
|
|
529
|
-
*
|
|
530
|
-
* hazard documented in
|
|
557
|
+
* Why this exists: every x402 voucher names the channel's CUMULATIVE total
|
|
558
|
+
* (client 4.x, connector ADR 0075; the nonce of the 3.x toon-channel claims
|
|
559
|
+
* is gone), and the connector accepts one only if it exceeds the last by at
|
|
560
|
+
* least the charge. Two writers signing vouchers on the same channel from
|
|
561
|
+
* separate processes (a running `toon-clientd` daemon plus a standalone
|
|
562
|
+
* embedded client, or two standalone processes) each keep their own running
|
|
563
|
+
* total, so their vouchers race: the connector refuses the one that does not
|
|
564
|
+
* advance, and a re-signed total can double-charge (the hazard documented in
|
|
565
|
+
* packages/rig-web/tests/e2e/seed/lib/publish.ts).
|
|
531
566
|
*
|
|
532
567
|
* Two independent defenses, both keyed by the Nostr pubkey (one identity =
|
|
533
568
|
* one channel set):
|
|
@@ -628,4 +663,4 @@ declare class NonceLock {
|
|
|
628
663
|
release(): void;
|
|
629
664
|
}
|
|
630
665
|
|
|
631
|
-
export { type AcquireLockOptions, type ChannelCloseOutcome, ChannelMapCorruptError, type ChannelMapKey, type ChannelMapRecord, ChannelMapStore, type ChannelMapStoreOptions, type ChannelOpenOutcome, type ChannelSettleOutcome, type CheckDaemonOptions, ConnectorPublishError, ConnectorPublisher, type ConnectorPublisherOptions, DEFAULT_DAEMON_PORT, DaemonIdentityConflictError, MAX_ACCOUNT_INDEX, NonceLock, type NostrKey, type PaidClientLike, type PaidFulfilled, type PaidLeg, type PaidRefused, type PaidRequest, type PaidSendOptions, type PaidSendResult, type PersistedChannelContext, RIG_CHANNEL_MAP_FILENAME, type RouteTerms, StandaloneLockError, type StandaloneMoneyOps, type WalletChainBalanceInfo, type WalletTokenAmountInfo, type WatermarkEntry, channelStatus, checkDaemonIdentity, counterpartyMatch, defaultDaemonPort, defaultLockDir, deriveNostrKeyFromMnemonic, extractArweaveTxId, nostrDerivationPath, recordKey, resolveChannelPaths, sameSettlementAddress };
|
|
666
|
+
export { type AcquireLockOptions, CHANNEL_STORE_FILENAME, type ChannelCloseOutcome, ChannelMapCorruptError, type ChannelMapKey, type ChannelMapRecord, ChannelMapStore, type ChannelMapStoreOptions, type ChannelOpenOutcome, type ChannelSettleOutcome, type CheckDaemonOptions, ConnectorPublishError, ConnectorPublisher, type ConnectorPublisherOptions, DEFAULT_DAEMON_PORT, DaemonIdentityConflictError, LEGACY_CHANNEL_STORE_FILENAME, LEGACY_RIG_CHANNEL_MAP_FILENAME, MAX_ACCOUNT_INDEX, NonceLock, type NostrKey, type PaidClientLike, type PaidFulfilled, type PaidLeg, type PaidRefused, type PaidRequest, type PaidSendOptions, type PaidSendResult, type PersistedChannelContext, RIG_CHANNEL_MAP_FILENAME, type RouteTerms, StandaloneLockError, type StandaloneMoneyOps, type WalletChainBalanceInfo, type WalletTokenAmountInfo, type WatermarkEntry, channelStatus, checkDaemonIdentity, counterpartyMatch, defaultDaemonPort, defaultLockDir, deriveNostrKeyFromMnemonic, extractArweaveTxId, isToonChannelStore, legacyChannelFiles, nostrDerivationPath, recordKey, resolveChannelPaths, sameSettlementAddress };
|
package/dist/standalone/index.js
CHANGED
|
@@ -2,17 +2,22 @@ import {
|
|
|
2
2
|
ConnectorPublishError,
|
|
3
3
|
ConnectorPublisher,
|
|
4
4
|
extractArweaveTxId
|
|
5
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-ZQGXFFBP.js";
|
|
6
6
|
import {
|
|
7
|
+
CHANNEL_STORE_FILENAME,
|
|
7
8
|
ChannelMapCorruptError,
|
|
8
9
|
ChannelMapStore,
|
|
10
|
+
LEGACY_CHANNEL_STORE_FILENAME,
|
|
11
|
+
LEGACY_RIG_CHANNEL_MAP_FILENAME,
|
|
9
12
|
RIG_CHANNEL_MAP_FILENAME,
|
|
10
13
|
channelStatus,
|
|
11
14
|
counterpartyMatch,
|
|
15
|
+
isToonChannelStore,
|
|
16
|
+
legacyChannelFiles,
|
|
12
17
|
recordKey,
|
|
13
18
|
resolveChannelPaths,
|
|
14
19
|
sameSettlementAddress
|
|
15
|
-
} from "../chunk-
|
|
20
|
+
} from "../chunk-LMZSAFAB.js";
|
|
16
21
|
import {
|
|
17
22
|
DEFAULT_DAEMON_PORT,
|
|
18
23
|
DaemonIdentityConflictError,
|
|
@@ -24,14 +29,17 @@ import {
|
|
|
24
29
|
defaultLockDir,
|
|
25
30
|
deriveNostrKeyFromMnemonic,
|
|
26
31
|
nostrDerivationPath
|
|
27
|
-
} from "../chunk-
|
|
32
|
+
} from "../chunk-7VIVQHRG.js";
|
|
28
33
|
export {
|
|
34
|
+
CHANNEL_STORE_FILENAME,
|
|
29
35
|
ChannelMapCorruptError,
|
|
30
36
|
ChannelMapStore,
|
|
31
37
|
ConnectorPublishError,
|
|
32
38
|
ConnectorPublisher,
|
|
33
39
|
DEFAULT_DAEMON_PORT,
|
|
34
40
|
DaemonIdentityConflictError,
|
|
41
|
+
LEGACY_CHANNEL_STORE_FILENAME,
|
|
42
|
+
LEGACY_RIG_CHANNEL_MAP_FILENAME,
|
|
35
43
|
MAX_ACCOUNT_INDEX,
|
|
36
44
|
NonceLock,
|
|
37
45
|
RIG_CHANNEL_MAP_FILENAME,
|
|
@@ -43,6 +51,8 @@ export {
|
|
|
43
51
|
defaultLockDir,
|
|
44
52
|
deriveNostrKeyFromMnemonic,
|
|
45
53
|
extractArweaveTxId,
|
|
54
|
+
isToonChannelStore,
|
|
55
|
+
legacyChannelFiles,
|
|
46
56
|
nostrDerivationPath,
|
|
47
57
|
recordKey,
|
|
48
58
|
resolveChannelPaths,
|