@econ-v1/ports 7.6.171 → 7.6.173
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/gift-wallet.d.ts +87 -0
- package/dist/gift-wallet.d.ts.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/gift-wallet.js +68 -0
- package/src/index.js +7 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* For compositions with no authenticated home-node client (tests, headless kernels): there is
|
|
3
|
+
* never a gift, which is the safe direction — onboarding then runs exactly the flow it ran
|
|
4
|
+
* before the gift step existed.
|
|
5
|
+
* @returns {GiftWalletPort}
|
|
6
|
+
*/
|
|
7
|
+
export function createNullGiftWallet(): GiftWalletPort;
|
|
8
|
+
/**
|
|
9
|
+
* The three rows the gift step shows, in order: the LSP holds the wallet for this node
|
|
10
|
+
* (`reserved`), the node downloads and imports it (`moving`), the imported wallet waits for a
|
|
11
|
+
* usable channel (`spendable`).
|
|
12
|
+
*/
|
|
13
|
+
export type GiftWalletStep = "reserved" | "moving" | "spendable";
|
|
14
|
+
/**
|
|
15
|
+
* Why there is no gift. The first four are the node's own words (`wallet.gift.*`).
|
|
16
|
+
* `unavailable` is never sent by a node: it is what this side reports when the call failed,
|
|
17
|
+
* timed out or answered a shape it does not understand.
|
|
18
|
+
*/
|
|
19
|
+
export type GiftWalletNoneReason = "not_configured" | "unreachable" | "none" | "already_claimed" | "unavailable";
|
|
20
|
+
/**
|
|
21
|
+
* `wallet.gift.check` — "is a gift wallet available for this node?".
|
|
22
|
+
*/
|
|
23
|
+
export type GiftWalletCheckOutcome = {
|
|
24
|
+
readonly status: "available";
|
|
25
|
+
readonly amountSats: number;
|
|
26
|
+
readonly giftId: string;
|
|
27
|
+
} | {
|
|
28
|
+
readonly status: "installed";
|
|
29
|
+
readonly amountSats: number;
|
|
30
|
+
readonly walletId: string;
|
|
31
|
+
readonly spendable: boolean;
|
|
32
|
+
} | {
|
|
33
|
+
readonly status: "none";
|
|
34
|
+
readonly reason: GiftWalletNoneReason;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* `wallet.gift.redeem` — runs the whole transfer on the node; safe to call again, it resumes.
|
|
38
|
+
* `ready` = imported and a channel is usable. `installed` = imported, not usable yet.
|
|
39
|
+
* `errorCode` is a machine code for the details disclosure, never a sentence for a person.
|
|
40
|
+
*/
|
|
41
|
+
export type GiftWalletRedeemOutcome = {
|
|
42
|
+
readonly status: "ready";
|
|
43
|
+
readonly amountSats: number;
|
|
44
|
+
readonly walletId: string;
|
|
45
|
+
} | {
|
|
46
|
+
readonly status: "installed";
|
|
47
|
+
readonly amountSats: number;
|
|
48
|
+
readonly walletId: string;
|
|
49
|
+
} | {
|
|
50
|
+
readonly status: "failed";
|
|
51
|
+
readonly amountSats?: number;
|
|
52
|
+
readonly step?: "reserved" | "moving";
|
|
53
|
+
readonly errorCode: string;
|
|
54
|
+
} | {
|
|
55
|
+
readonly status: "none";
|
|
56
|
+
readonly reason: GiftWalletNoneReason;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* `wallet.gift.status` — cheap, from the node's persisted state, callable while a redeem is in
|
|
60
|
+
* flight. `unavailable` (never sent by a node) means the read itself did not answer, which is
|
|
61
|
+
* a different fact from the node's own `none`.
|
|
62
|
+
*/
|
|
63
|
+
export type GiftWalletStatusOutcome = {
|
|
64
|
+
readonly status: "none" | "available" | "redeeming" | "installed" | "ready" | "failed";
|
|
65
|
+
readonly step?: GiftWalletStep;
|
|
66
|
+
readonly amountSats?: number;
|
|
67
|
+
readonly walletId?: string;
|
|
68
|
+
readonly giftId?: string;
|
|
69
|
+
readonly errorCode?: string;
|
|
70
|
+
} | {
|
|
71
|
+
readonly status: "unavailable";
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* The gift wallet a new node may receive at the end of onboarding.
|
|
75
|
+
*
|
|
76
|
+
* A centralized LSP node can hold a pre-made wallet for a freshly claimed node. The node's
|
|
77
|
+
* wallet app owns the whole transfer (`wallet.gift.check / redeem / status`); this port is how
|
|
78
|
+
* the onboarding flow asks for it. Every member resolves — a failed call, a timeout or an
|
|
79
|
+
* unexpected answer is an outcome (`none` / `failed` / `unavailable`), never a rejection, so a
|
|
80
|
+
* gift can never be the reason onboarding does not finish.
|
|
81
|
+
*/
|
|
82
|
+
export type GiftWalletPort = {
|
|
83
|
+
check: () => Promise<GiftWalletCheckOutcome>;
|
|
84
|
+
redeem: () => Promise<GiftWalletRedeemOutcome>;
|
|
85
|
+
status: () => Promise<GiftWalletStatusOutcome>;
|
|
86
|
+
};
|
|
87
|
+
//# sourceMappingURL=gift-wallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gift-wallet.d.ts","sourceRoot":"","sources":["../src/gift-wallet.js"],"names":[],"mappings":"AACA;;;;;GAKG;AACH,wCAFa,cAAc,CAQ1B;;;;;;6BAKY,UAAU,GAAG,QAAQ,GAAG,WAAW;;;;;;mCAMnC,gBAAgB,GAAG,aAAa,GAAG,MAAM,GAAG,iBAAiB,GAAG,aAAa;;;;qCAI3E;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC9F;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GACrH;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAA;CAAE;;;;;;sCAM1D;IAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC5F;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACxF;IAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC9H;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAA;CAAE;;;;;;sCAM1D;IACd,QAAc,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC7F,QAAc,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC;IACrC,QAAc,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IACnC,QAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IACjC,QAAc,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAc,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,GACC;IAAE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;CAAE;;;;;;;;;;;WAW3B,MAAM,OAAO,CAAC,sBAAsB,CAAC;YACrC,MAAM,OAAO,CAAC,uBAAuB,CAAC;YACtC,MAAM,OAAO,CAAC,uBAAuB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { CONVERSATION_MESSAGE_STATES } from "./repositories/conversation-repository.js";
|
|
2
|
+
export { createNullGiftWallet } from "./gift-wallet.js";
|
|
2
3
|
export { createNullInstallEnvironment } from "./install-environment.js";
|
|
3
4
|
export { createNullLcdTreeSource } from "./lcd-tree-source.js";
|
|
4
5
|
export { createNullOnboardingPresence } from "./onboarding-presence.js";
|
|
@@ -212,6 +213,12 @@ export type CertificateTrustPlatform = import("./network/certificate-trust.js").
|
|
|
212
213
|
export type CertificateTrustProbePort = import("./network/certificate-trust.js").CertificateTrustProbePort;
|
|
213
214
|
export type CertificateTrustProbeResult = import("./network/certificate-trust.js").CertificateTrustProbeResult;
|
|
214
215
|
export type PlatformTrustPort = import("./network/certificate-trust.js").PlatformTrustPort;
|
|
216
|
+
export type GiftWalletCheckOutcome = import("./gift-wallet.js").GiftWalletCheckOutcome;
|
|
217
|
+
export type GiftWalletNoneReason = import("./gift-wallet.js").GiftWalletNoneReason;
|
|
218
|
+
export type GiftWalletPort = import("./gift-wallet.js").GiftWalletPort;
|
|
219
|
+
export type GiftWalletRedeemOutcome = import("./gift-wallet.js").GiftWalletRedeemOutcome;
|
|
220
|
+
export type GiftWalletStatusOutcome = import("./gift-wallet.js").GiftWalletStatusOutcome;
|
|
221
|
+
export type GiftWalletStep = import("./gift-wallet.js").GiftWalletStep;
|
|
215
222
|
export type OnboardingAccessCodeStore = import("./onboarding-access-code.js").OnboardingAccessCodeStore;
|
|
216
223
|
export type OnboardingCheckpointStoragePort = import("./onboarding-checkpoint.js").OnboardingCheckpointStoragePort;
|
|
217
224
|
export type OnboardingPresencePhase = import("./onboarding-presence.js").OnboardingPresencePhase;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
/**
|
|
3
|
+
* For compositions with no authenticated home-node client (tests, headless kernels): there is
|
|
4
|
+
* never a gift, which is the safe direction — onboarding then runs exactly the flow it ran
|
|
5
|
+
* before the gift step existed.
|
|
6
|
+
* @returns {GiftWalletPort}
|
|
7
|
+
*/
|
|
8
|
+
export function createNullGiftWallet() {
|
|
9
|
+
return {
|
|
10
|
+
check: async () => ({ reason: "unavailable", status: "none" }),
|
|
11
|
+
redeem: async () => ({ reason: "unavailable", status: "none" }),
|
|
12
|
+
status: async () => ({ status: "unavailable" }),
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* The three rows the gift step shows, in order: the LSP holds the wallet for this node
|
|
17
|
+
* (`reserved`), the node downloads and imports it (`moving`), the imported wallet waits for a
|
|
18
|
+
* usable channel (`spendable`).
|
|
19
|
+
* @typedef {"reserved" | "moving" | "spendable"} GiftWalletStep
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Why there is no gift. The first four are the node's own words (`wallet.gift.*`).
|
|
23
|
+
* `unavailable` is never sent by a node: it is what this side reports when the call failed,
|
|
24
|
+
* timed out or answered a shape it does not understand.
|
|
25
|
+
* @typedef {"not_configured" | "unreachable" | "none" | "already_claimed" | "unavailable"} GiftWalletNoneReason
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
28
|
+
* `wallet.gift.check` — "is a gift wallet available for this node?".
|
|
29
|
+
* @typedef {| { readonly status: "available"; readonly amountSats: number; readonly giftId: string }
|
|
30
|
+
* | { readonly status: "installed"; readonly amountSats: number; readonly walletId: string; readonly spendable: boolean }
|
|
31
|
+
* | { readonly status: "none"; readonly reason: GiftWalletNoneReason }} GiftWalletCheckOutcome
|
|
32
|
+
*/
|
|
33
|
+
/**
|
|
34
|
+
* `wallet.gift.redeem` — runs the whole transfer on the node; safe to call again, it resumes.
|
|
35
|
+
* `ready` = imported and a channel is usable. `installed` = imported, not usable yet.
|
|
36
|
+
* `errorCode` is a machine code for the details disclosure, never a sentence for a person.
|
|
37
|
+
* @typedef {| { readonly status: "ready"; readonly amountSats: number; readonly walletId: string }
|
|
38
|
+
* | { readonly status: "installed"; readonly amountSats: number; readonly walletId: string }
|
|
39
|
+
* | { readonly status: "failed"; readonly amountSats?: number; readonly step?: "reserved" | "moving"; readonly errorCode: string }
|
|
40
|
+
* | { readonly status: "none"; readonly reason: GiftWalletNoneReason }} GiftWalletRedeemOutcome
|
|
41
|
+
*/
|
|
42
|
+
/**
|
|
43
|
+
* `wallet.gift.status` — cheap, from the node's persisted state, callable while a redeem is in
|
|
44
|
+
* flight. `unavailable` (never sent by a node) means the read itself did not answer, which is
|
|
45
|
+
* a different fact from the node's own `none`.
|
|
46
|
+
* @typedef {| {
|
|
47
|
+
* readonly status: "none" | "available" | "redeeming" | "installed" | "ready" | "failed";
|
|
48
|
+
* readonly step?: GiftWalletStep;
|
|
49
|
+
* readonly amountSats?: number;
|
|
50
|
+
* readonly walletId?: string;
|
|
51
|
+
* readonly giftId?: string;
|
|
52
|
+
* readonly errorCode?: string;
|
|
53
|
+
* }
|
|
54
|
+
* | { readonly status: "unavailable" }} GiftWalletStatusOutcome
|
|
55
|
+
*/
|
|
56
|
+
/**
|
|
57
|
+
* The gift wallet a new node may receive at the end of onboarding.
|
|
58
|
+
*
|
|
59
|
+
* A centralized LSP node can hold a pre-made wallet for a freshly claimed node. The node's
|
|
60
|
+
* wallet app owns the whole transfer (`wallet.gift.check / redeem / status`); this port is how
|
|
61
|
+
* the onboarding flow asks for it. Every member resolves — a failed call, a timeout or an
|
|
62
|
+
* unexpected answer is an outcome (`none` / `failed` / `unavailable`), never a rejection, so a
|
|
63
|
+
* gift can never be the reason onboarding does not finish.
|
|
64
|
+
* @typedef {object} GiftWalletPort
|
|
65
|
+
* @property {() => Promise<GiftWalletCheckOutcome>} check
|
|
66
|
+
* @property {() => Promise<GiftWalletRedeemOutcome>} redeem
|
|
67
|
+
* @property {() => Promise<GiftWalletStatusOutcome>} status
|
|
68
|
+
*/
|
package/src/index.js
CHANGED
|
@@ -205,6 +205,12 @@ export { StorageOperationError } from "./storage.js";
|
|
|
205
205
|
/** @typedef {import("./network/certificate-trust.js").CertificateTrustProbePort} CertificateTrustProbePort */
|
|
206
206
|
/** @typedef {import("./network/certificate-trust.js").CertificateTrustProbeResult} CertificateTrustProbeResult */
|
|
207
207
|
/** @typedef {import("./network/certificate-trust.js").PlatformTrustPort} PlatformTrustPort */
|
|
208
|
+
/** @typedef {import("./gift-wallet.js").GiftWalletCheckOutcome} GiftWalletCheckOutcome */
|
|
209
|
+
/** @typedef {import("./gift-wallet.js").GiftWalletNoneReason} GiftWalletNoneReason */
|
|
210
|
+
/** @typedef {import("./gift-wallet.js").GiftWalletPort} GiftWalletPort */
|
|
211
|
+
/** @typedef {import("./gift-wallet.js").GiftWalletRedeemOutcome} GiftWalletRedeemOutcome */
|
|
212
|
+
/** @typedef {import("./gift-wallet.js").GiftWalletStatusOutcome} GiftWalletStatusOutcome */
|
|
213
|
+
/** @typedef {import("./gift-wallet.js").GiftWalletStep} GiftWalletStep */
|
|
208
214
|
/** @typedef {import("./onboarding-access-code.js").OnboardingAccessCodeStore} OnboardingAccessCodeStore */
|
|
209
215
|
/** @typedef {import("./onboarding-checkpoint.js").OnboardingCheckpointStoragePort} OnboardingCheckpointStoragePort */
|
|
210
216
|
/** @typedef {import("./onboarding-presence.js").OnboardingPresencePhase} OnboardingPresencePhase */
|
|
@@ -270,6 +276,7 @@ export { StorageOperationError } from "./storage.js";
|
|
|
270
276
|
/** @typedef {import("./stage-performance.js").StageResourceSample} StageResourceSample */
|
|
271
277
|
|
|
272
278
|
export { CONVERSATION_MESSAGE_STATES } from "./repositories/conversation-repository.js";
|
|
279
|
+
export { createNullGiftWallet } from "./gift-wallet.js";
|
|
273
280
|
export { createNullInstallEnvironment } from "./install-environment.js";
|
|
274
281
|
export { createNullLcdTreeSource } from "./lcd-tree-source.js";
|
|
275
282
|
export { createNullOnboardingPresence } from "./onboarding-presence.js";
|