@kaleidorg/wallet-engine 1.0.0-beta.12
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/LICENSE +21 -0
- package/README.md +247 -0
- package/dist/adapters/ArkadeAdapter.d.ts +49 -0
- package/dist/adapters/ArkadeAdapter.d.ts.map +1 -0
- package/dist/adapters/ArkadeAdapter.js +316 -0
- package/dist/adapters/ArkadeAdapter.js.map +1 -0
- package/dist/adapters/IProtocolAdapter.d.ts +217 -0
- package/dist/adapters/IProtocolAdapter.d.ts.map +1 -0
- package/dist/adapters/IProtocolAdapter.js +33 -0
- package/dist/adapters/IProtocolAdapter.js.map +1 -0
- package/dist/adapters/RgbAdapter.d.ts +71 -0
- package/dist/adapters/RgbAdapter.d.ts.map +1 -0
- package/dist/adapters/RgbAdapter.js +820 -0
- package/dist/adapters/RgbAdapter.js.map +1 -0
- package/dist/adapters/SparkAdapter.d.ts +48 -0
- package/dist/adapters/SparkAdapter.d.ts.map +1 -0
- package/dist/adapters/SparkAdapter.js +395 -0
- package/dist/adapters/SparkAdapter.js.map +1 -0
- package/dist/adapters/native.d.ts +16 -0
- package/dist/adapters/native.d.ts.map +1 -0
- package/dist/adapters/native.js +16 -0
- package/dist/adapters/native.js.map +1 -0
- package/dist/adapters/wdk/ArkadeWdkAdapter.d.ts +85 -0
- package/dist/adapters/wdk/ArkadeWdkAdapter.d.ts.map +1 -0
- package/dist/adapters/wdk/ArkadeWdkAdapter.js +313 -0
- package/dist/adapters/wdk/ArkadeWdkAdapter.js.map +1 -0
- package/dist/adapters/wdk/LiquidWdkAdapter.d.ts +88 -0
- package/dist/adapters/wdk/LiquidWdkAdapter.d.ts.map +1 -0
- package/dist/adapters/wdk/LiquidWdkAdapter.js +276 -0
- package/dist/adapters/wdk/LiquidWdkAdapter.js.map +1 -0
- package/dist/adapters/wdk/RlnWdkAdapter.d.ts +86 -0
- package/dist/adapters/wdk/RlnWdkAdapter.d.ts.map +1 -0
- package/dist/adapters/wdk/RlnWdkAdapter.js +310 -0
- package/dist/adapters/wdk/RlnWdkAdapter.js.map +1 -0
- package/dist/adapters/wdk/SparkWdkAdapter.d.ts +81 -0
- package/dist/adapters/wdk/SparkWdkAdapter.d.ts.map +1 -0
- package/dist/adapters/wdk/SparkWdkAdapter.js +417 -0
- package/dist/adapters/wdk/SparkWdkAdapter.js.map +1 -0
- package/dist/adapters/wdk/index.d.ts +15 -0
- package/dist/adapters/wdk/index.d.ts.map +1 -0
- package/dist/adapters/wdk/index.js +15 -0
- package/dist/adapters/wdk/index.js.map +1 -0
- package/dist/adapters/wdk/moduleLoader.d.ts +22 -0
- package/dist/adapters/wdk/moduleLoader.d.ts.map +1 -0
- package/dist/adapters/wdk/moduleLoader.js +31 -0
- package/dist/adapters/wdk/moduleLoader.js.map +1 -0
- package/dist/capabilities/index.d.ts +46 -0
- package/dist/capabilities/index.d.ts.map +1 -0
- package/dist/capabilities/index.js +102 -0
- package/dist/capabilities/index.js.map +1 -0
- package/dist/capabilities/operations.d.ts +22 -0
- package/dist/capabilities/operations.d.ts.map +1 -0
- package/dist/capabilities/operations.js +55 -0
- package/dist/capabilities/operations.js.map +1 -0
- package/dist/constants.d.ts +8 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +8 -0
- package/dist/constants.js.map +1 -0
- package/dist/disclosure/index.d.ts +51 -0
- package/dist/disclosure/index.d.ts.map +1 -0
- package/dist/disclosure/index.js +64 -0
- package/dist/disclosure/index.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/arkade-client-manager.d.ts +47 -0
- package/dist/lib/arkade-client-manager.d.ts.map +1 -0
- package/dist/lib/arkade-client-manager.js +121 -0
- package/dist/lib/arkade-client-manager.js.map +1 -0
- package/dist/lib/bolt11.d.ts +18 -0
- package/dist/lib/bolt11.d.ts.map +1 -0
- package/dist/lib/bolt11.js +31 -0
- package/dist/lib/bolt11.js.map +1 -0
- package/dist/lib/flashnet-client-manager.d.ts +29 -0
- package/dist/lib/flashnet-client-manager.d.ts.map +1 -0
- package/dist/lib/flashnet-client-manager.js +116 -0
- package/dist/lib/flashnet-client-manager.js.map +1 -0
- package/dist/lib/kaleido-client-manager.d.ts +26 -0
- package/dist/lib/kaleido-client-manager.d.ts.map +1 -0
- package/dist/lib/kaleido-client-manager.js +55 -0
- package/dist/lib/kaleido-client-manager.js.map +1 -0
- package/dist/lib/spark-client-manager.d.ts +41 -0
- package/dist/lib/spark-client-manager.d.ts.map +1 -0
- package/dist/lib/spark-client-manager.js +101 -0
- package/dist/lib/spark-client-manager.js.map +1 -0
- package/dist/manager/ProtocolManager.d.ts +108 -0
- package/dist/manager/ProtocolManager.d.ts.map +1 -0
- package/dist/manager/ProtocolManager.js +305 -0
- package/dist/manager/ProtocolManager.js.map +1 -0
- package/dist/ports/index.d.ts +49 -0
- package/dist/ports/index.d.ts.map +1 -0
- package/dist/ports/index.js +31 -0
- package/dist/ports/index.js.map +1 -0
- package/dist/receive/unifiedReceive.d.ts +54 -0
- package/dist/receive/unifiedReceive.d.ts.map +1 -0
- package/dist/receive/unifiedReceive.js +102 -0
- package/dist/receive/unifiedReceive.js.map +1 -0
- package/dist/registry/createWdkRegistry.d.ts +20 -0
- package/dist/registry/createWdkRegistry.d.ts.map +1 -0
- package/dist/registry/createWdkRegistry.js +32 -0
- package/dist/registry/createWdkRegistry.js.map +1 -0
- package/dist/router/destination.d.ts +28 -0
- package/dist/router/destination.d.ts.map +1 -0
- package/dist/router/destination.js +72 -0
- package/dist/router/destination.js.map +1 -0
- package/dist/router/index.d.ts +55 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +67 -0
- package/dist/router/index.js.map +1 -0
- package/dist/swap/KaleidoswapSwap.d.ts +44 -0
- package/dist/swap/KaleidoswapSwap.d.ts.map +1 -0
- package/dist/swap/KaleidoswapSwap.js +123 -0
- package/dist/swap/KaleidoswapSwap.js.map +1 -0
- package/dist/swap/index.d.ts +8 -0
- package/dist/swap/index.d.ts.map +1 -0
- package/dist/swap/index.js +8 -0
- package/dist/swap/index.js.map +1 -0
- package/dist/types/arkade.d.ts +40 -0
- package/dist/types/arkade.d.ts.map +1 -0
- package/dist/types/arkade.js +6 -0
- package/dist/types/arkade.js.map +1 -0
- package/dist/types/base.d.ts +228 -0
- package/dist/types/base.d.ts.map +1 -0
- package/dist/types/base.js +53 -0
- package/dist/types/base.js.map +1 -0
- package/dist/types/cross-l2.d.ts +108 -0
- package/dist/types/cross-l2.d.ts.map +1 -0
- package/dist/types/cross-l2.js +16 -0
- package/dist/types/cross-l2.js.map +1 -0
- package/dist/types/flashnet.d.ts +31 -0
- package/dist/types/flashnet.d.ts.map +1 -0
- package/dist/types/flashnet.js +23 -0
- package/dist/types/flashnet.js.map +1 -0
- package/dist/types/rgb.d.ts +105 -0
- package/dist/types/rgb.d.ts.map +1 -0
- package/dist/types/rgb.js +6 -0
- package/dist/types/rgb.js.map +1 -0
- package/dist/types/spark.d.ts +59 -0
- package/dist/types/spark.d.ts.map +1 -0
- package/dist/types/spark.js +6 -0
- package/dist/types/spark.js.map +1 -0
- package/dist/utils.d.ts +10 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +23 -0
- package/dist/utils.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Protocol Capability Manifest
|
|
3
|
+
* ----------------------------
|
|
4
|
+
* The backbone of the plugin architecture: protocol *differences* are expressed
|
|
5
|
+
* here as DATA, never as new methods on `IProtocolAdapter`. The cross-protocol
|
|
6
|
+
* router and the lite/advanced UI read this manifest to decide behaviour, so
|
|
7
|
+
* adding or changing one protocol never edits another protocol's code.
|
|
8
|
+
*
|
|
9
|
+
* Rule: when you're tempted to add a method to the contract for a single
|
|
10
|
+
* protocol, add a capability flag here instead.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Single source of truth for what each protocol can do.
|
|
14
|
+
* Keyed by ProtocolType. 'BTC' is the abstract on-chain-only base.
|
|
15
|
+
*/
|
|
16
|
+
export const PROTOCOL_CAPABILITIES = {
|
|
17
|
+
BTC: {
|
|
18
|
+
protocol: 'BTC',
|
|
19
|
+
layers: ['BTC_L1'],
|
|
20
|
+
supportsOnchain: true,
|
|
21
|
+
supportsLightning: false,
|
|
22
|
+
supportsAssets: false,
|
|
23
|
+
supportsSwaps: false,
|
|
24
|
+
zeroFee: false,
|
|
25
|
+
staticReceiveAddress: false,
|
|
26
|
+
boarding: false,
|
|
27
|
+
invoiceExpiry: false,
|
|
28
|
+
needsChannelLiquidity: false,
|
|
29
|
+
wdkModule: null,
|
|
30
|
+
maturity: 'stable',
|
|
31
|
+
},
|
|
32
|
+
SPARK: {
|
|
33
|
+
protocol: 'SPARK',
|
|
34
|
+
layers: ['BTC_SPARK', 'SPARK_SPARK', 'BTC_LN'],
|
|
35
|
+
supportsOnchain: true, // via static/single-use deposit addresses
|
|
36
|
+
supportsLightning: true,
|
|
37
|
+
supportsAssets: true, // Spark tokens
|
|
38
|
+
supportsSwaps: false, // swaps handled by the cross-protocol router / Flashnet
|
|
39
|
+
zeroFee: true,
|
|
40
|
+
staticReceiveAddress: true,
|
|
41
|
+
boarding: false,
|
|
42
|
+
invoiceExpiry: true,
|
|
43
|
+
needsChannelLiquidity: false, // Spark has no LN channels to manage
|
|
44
|
+
wdkModule: '@tetherto/wdk-wallet-spark',
|
|
45
|
+
maturity: 'beta',
|
|
46
|
+
},
|
|
47
|
+
ARKADE: {
|
|
48
|
+
protocol: 'ARKADE',
|
|
49
|
+
layers: ['BTC_ARKADE', 'ARKADE_ARKADE', 'BTC_LN'],
|
|
50
|
+
supportsOnchain: true, // boarding
|
|
51
|
+
supportsLightning: true, // via boltz-swap
|
|
52
|
+
supportsAssets: true,
|
|
53
|
+
supportsSwaps: false,
|
|
54
|
+
zeroFee: false,
|
|
55
|
+
staticReceiveAddress: true,
|
|
56
|
+
boarding: true,
|
|
57
|
+
invoiceExpiry: true,
|
|
58
|
+
needsChannelLiquidity: false,
|
|
59
|
+
wdkModule: '@arkade-os/wdk',
|
|
60
|
+
maturity: 'beta',
|
|
61
|
+
},
|
|
62
|
+
RGB: {
|
|
63
|
+
protocol: 'RGB',
|
|
64
|
+
layers: ['BTC_L1', 'BTC_LN', 'RGB_L1', 'RGB_LN'],
|
|
65
|
+
supportsOnchain: true,
|
|
66
|
+
supportsLightning: true,
|
|
67
|
+
supportsAssets: true, // RGB assets (USDT, XAUT)
|
|
68
|
+
supportsSwaps: true, // RGB-LN atomic swaps via the maker
|
|
69
|
+
zeroFee: false,
|
|
70
|
+
staticReceiveAddress: false,
|
|
71
|
+
boarding: false,
|
|
72
|
+
invoiceExpiry: true,
|
|
73
|
+
needsChannelLiquidity: true, // RGB-LN needs channels / LSPS1
|
|
74
|
+
wdkModule: '@kaleidorg/wdk-wallet-rln',
|
|
75
|
+
maturity: 'beta',
|
|
76
|
+
},
|
|
77
|
+
LIQUID: {
|
|
78
|
+
protocol: 'LIQUID',
|
|
79
|
+
layers: ['BTC_LIQUID', 'LIQUID_ASSET'],
|
|
80
|
+
supportsOnchain: true, // Liquid is its own L1
|
|
81
|
+
supportsLightning: false, // (Boltz could add this later → flag, not new method)
|
|
82
|
+
supportsAssets: true, // USDt on Liquid = lite-mode "USD"
|
|
83
|
+
supportsSwaps: false,
|
|
84
|
+
zeroFee: false,
|
|
85
|
+
staticReceiveAddress: false,
|
|
86
|
+
boarding: false,
|
|
87
|
+
invoiceExpiry: false,
|
|
88
|
+
needsChannelLiquidity: false,
|
|
89
|
+
wdkModule: '@kaleidorg/wdk-wallet-liquid',
|
|
90
|
+
maturity: 'beta',
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
export function getCapabilities(protocol) {
|
|
94
|
+
return PROTOCOL_CAPABILITIES[protocol];
|
|
95
|
+
}
|
|
96
|
+
/** Protocols that can settle a given layer — used by the cross-protocol router. */
|
|
97
|
+
export function protocolsForLayer(layer) {
|
|
98
|
+
return Object.values(PROTOCOL_CAPABILITIES)
|
|
99
|
+
.filter((c) => c.layers.includes(layer))
|
|
100
|
+
.map((c) => c.protocol);
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/capabilities/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Operation-level capability manifest.
|
|
3
|
+
* --------------------------------------
|
|
4
|
+
* Distinct from the differences-as-data `PROTOCOL_CAPABILITIES` record in
|
|
5
|
+
* `./index.ts` (which the router and lite/advanced UI read). This manifest is
|
|
6
|
+
* the list of concrete *operations* each protocol natively supports, exposed on
|
|
7
|
+
* every adapter via `IProtocolAdapter.capabilities` so the UI can gate actions
|
|
8
|
+
* before an adapter connects — without per-call-site network checks.
|
|
9
|
+
*
|
|
10
|
+
* Naming: `ProtocolCapability` / `PROTOCOL_OPERATIONS` here vs
|
|
11
|
+
* `ProtocolCapabilities` / `PROTOCOL_CAPABILITIES` in `./index.ts`. The two are
|
|
12
|
+
* deliberately different shapes; see the wallet-engine integration spec (A5).
|
|
13
|
+
*
|
|
14
|
+
* Provider-routed features (swaps) live outside this manifest — a swap venue
|
|
15
|
+
* may run over multiple protocols without each adapter implementing it.
|
|
16
|
+
*/
|
|
17
|
+
import type { ProtocolType } from '../types/base.js';
|
|
18
|
+
export type ProtocolCapability = 'onchain-send' | 'onchain-receive' | 'lightning-send' | 'lightning-receive' | 'asset-send' | 'asset-receive' | 'rgb-invoice' | 'spark-transfer' | 'arkade-onboard' | 'arkade-offboard';
|
|
19
|
+
export declare const PROTOCOL_OPERATIONS: Record<ProtocolType, readonly ProtocolCapability[]>;
|
|
20
|
+
export declare function getProtocolOperations(protocol: ProtocolType): readonly ProtocolCapability[];
|
|
21
|
+
export declare function protocolSupportsOperation(protocol: ProtocolType, capability: ProtocolCapability): boolean;
|
|
22
|
+
//# sourceMappingURL=operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/capabilities/operations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEjD,MAAM,MAAM,kBAAkB,GAC1B,cAAc,GACd,iBAAiB,GACjB,gBAAgB,GAChB,mBAAmB,GACnB,YAAY,GACZ,eAAe,GACf,aAAa,GACb,gBAAgB,GAChB,gBAAgB,GAChB,iBAAiB,CAAA;AAErB,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,YAAY,EAAE,SAAS,kBAAkB,EAAE,CA+BnF,CAAA;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,kBAAkB,EAAE,CAE3F;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,kBAAkB,GAC7B,OAAO,CAET"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Operation-level capability manifest.
|
|
3
|
+
* --------------------------------------
|
|
4
|
+
* Distinct from the differences-as-data `PROTOCOL_CAPABILITIES` record in
|
|
5
|
+
* `./index.ts` (which the router and lite/advanced UI read). This manifest is
|
|
6
|
+
* the list of concrete *operations* each protocol natively supports, exposed on
|
|
7
|
+
* every adapter via `IProtocolAdapter.capabilities` so the UI can gate actions
|
|
8
|
+
* before an adapter connects — without per-call-site network checks.
|
|
9
|
+
*
|
|
10
|
+
* Naming: `ProtocolCapability` / `PROTOCOL_OPERATIONS` here vs
|
|
11
|
+
* `ProtocolCapabilities` / `PROTOCOL_CAPABILITIES` in `./index.ts`. The two are
|
|
12
|
+
* deliberately different shapes; see the wallet-engine integration spec (A5).
|
|
13
|
+
*
|
|
14
|
+
* Provider-routed features (swaps) live outside this manifest — a swap venue
|
|
15
|
+
* may run over multiple protocols without each adapter implementing it.
|
|
16
|
+
*/
|
|
17
|
+
export const PROTOCOL_OPERATIONS = {
|
|
18
|
+
RGB: [
|
|
19
|
+
'onchain-send',
|
|
20
|
+
'onchain-receive',
|
|
21
|
+
'lightning-send',
|
|
22
|
+
'lightning-receive',
|
|
23
|
+
'asset-send',
|
|
24
|
+
'asset-receive',
|
|
25
|
+
'rgb-invoice',
|
|
26
|
+
],
|
|
27
|
+
SPARK: [
|
|
28
|
+
'onchain-send',
|
|
29
|
+
'onchain-receive',
|
|
30
|
+
'lightning-send',
|
|
31
|
+
'lightning-receive',
|
|
32
|
+
'asset-send',
|
|
33
|
+
'asset-receive',
|
|
34
|
+
'spark-transfer',
|
|
35
|
+
],
|
|
36
|
+
ARKADE: [
|
|
37
|
+
'onchain-send',
|
|
38
|
+
'onchain-receive',
|
|
39
|
+
'lightning-send',
|
|
40
|
+
'lightning-receive',
|
|
41
|
+
'asset-send',
|
|
42
|
+
'asset-receive',
|
|
43
|
+
'arkade-onboard',
|
|
44
|
+
'arkade-offboard',
|
|
45
|
+
],
|
|
46
|
+
LIQUID: ['onchain-send', 'onchain-receive', 'asset-send', 'asset-receive'],
|
|
47
|
+
BTC: ['onchain-send', 'onchain-receive'],
|
|
48
|
+
};
|
|
49
|
+
export function getProtocolOperations(protocol) {
|
|
50
|
+
return PROTOCOL_OPERATIONS[protocol] ?? [];
|
|
51
|
+
}
|
|
52
|
+
export function protocolSupportsOperation(protocol, capability) {
|
|
53
|
+
return getProtocolOperations(protocol).includes(capability);
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/capabilities/operations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAgBH,MAAM,CAAC,MAAM,mBAAmB,GAAwD;IACtF,GAAG,EAAE;QACH,cAAc;QACd,iBAAiB;QACjB,gBAAgB;QAChB,mBAAmB;QACnB,YAAY;QACZ,eAAe;QACf,aAAa;KACd;IACD,KAAK,EAAE;QACL,cAAc;QACd,iBAAiB;QACjB,gBAAgB;QAChB,mBAAmB;QACnB,YAAY;QACZ,eAAe;QACf,gBAAgB;KACjB;IACD,MAAM,EAAE;QACN,cAAc;QACd,iBAAiB;QACjB,gBAAgB;QAChB,mBAAmB;QACnB,YAAY;QACZ,eAAe;QACf,gBAAgB;QAChB,iBAAiB;KAClB;IACD,MAAM,EAAE,CAAC,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,CAAC;IAC1E,GAAG,EAAE,CAAC,cAAc,EAAE,iBAAiB,CAAC;CACzC,CAAA;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAsB;IAC1D,OAAO,mBAAmB,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;AAC5C,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,QAAsB,EACtB,UAA8B;IAE9B,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;AAC7D,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Neutral, dependency-free constants shared across core (router, disclosure)
|
|
3
|
+
* and adapters. Kept here so core modules never import from an adapter module
|
|
4
|
+
* (which would pull adapter/SDK weight into the adapter-free main barrel).
|
|
5
|
+
*/
|
|
6
|
+
/** Well-known Liquid mainnet Tether USD (USDt) asset id — the lite-mode "USD". */
|
|
7
|
+
export declare const LIQUID_USDT_ASSET_ID = "ce091c998b83c78bb71a632313ba3760f1763d9cfcffae02258ffa9865a37bd2";
|
|
8
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,kFAAkF;AAClF,eAAO,MAAM,oBAAoB,qEACmC,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Neutral, dependency-free constants shared across core (router, disclosure)
|
|
3
|
+
* and adapters. Kept here so core modules never import from an adapter module
|
|
4
|
+
* (which would pull adapter/SDK weight into the adapter-free main barrel).
|
|
5
|
+
*/
|
|
6
|
+
/** Well-known Liquid mainnet Tether USD (USDt) asset id — the lite-mode "USD". */
|
|
7
|
+
export const LIQUID_USDT_ASSET_ID = 'ce091c998b83c78bb71a632313ba3760f1763d9cfcffae02258ffa9865a37bd2';
|
|
8
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,kFAAkF;AAClF,MAAM,CAAC,MAAM,oBAAoB,GAC/B,kEAAkE,CAAA"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Disclosure Level (Lite / Advanced)
|
|
3
|
+
* ----------------------------------
|
|
4
|
+
* Lite and Advanced are NOT a code fork — they are one setting that controls how
|
|
5
|
+
* much the UI reveals and how much the auto-router decides vs. the user. The engine
|
|
6
|
+
* is identical underneath. This module is the single source of truth for what each
|
|
7
|
+
* level exposes, so neither the apps nor the adapters branch on "mode" ad-hoc.
|
|
8
|
+
*
|
|
9
|
+
* Default is chosen at wallet creation but is REVERSIBLE in settings.
|
|
10
|
+
*/
|
|
11
|
+
import { ProtocolType, UnifiedAsset } from '../types/base.js';
|
|
12
|
+
export type DisclosureLevel = 'lite' | 'advanced';
|
|
13
|
+
export interface DisclosurePolicy {
|
|
14
|
+
level: DisclosureLevel;
|
|
15
|
+
/** Show the network/layer behind balances and the network selector. */
|
|
16
|
+
showNetworks: boolean;
|
|
17
|
+
/** Let the user pick the send route (vs. auto-router picks `.best`). */
|
|
18
|
+
showRouteSelector: boolean;
|
|
19
|
+
/** Expose Lightning channel / LSPS1 management. */
|
|
20
|
+
showChannelManagement: boolean;
|
|
21
|
+
/** Expose experimental/advanced features (raw UTXOs, node config, etc.). */
|
|
22
|
+
showExperimental: boolean;
|
|
23
|
+
/** Show raw protocol/asset ids vs. friendly tickers only. */
|
|
24
|
+
showRawIds: boolean;
|
|
25
|
+
}
|
|
26
|
+
export declare function policyFor(level: DisclosureLevel): DisclosurePolicy;
|
|
27
|
+
/**
|
|
28
|
+
* Lite-mode "USD" = USDt on Liquid (locked product decision).
|
|
29
|
+
* Used to relabel/aggregate the user-facing "USD" balance.
|
|
30
|
+
*/
|
|
31
|
+
export declare const LITE_USD: {
|
|
32
|
+
readonly protocol: ProtocolType;
|
|
33
|
+
readonly assetId: "ce091c998b83c78bb71a632313ba3760f1763d9cfcffae02258ffa9865a37bd2";
|
|
34
|
+
readonly displayTicker: "USD";
|
|
35
|
+
};
|
|
36
|
+
/** Buckets a unified asset into the three lite-mode user-facing buckets. */
|
|
37
|
+
export type LiteBucket = 'BTC' | 'USD' | 'OTHER';
|
|
38
|
+
export declare function liteBucketOf(asset: UnifiedAsset): LiteBucket;
|
|
39
|
+
/**
|
|
40
|
+
* Aggregate per-protocol assets into the lite-mode view: a single BTC number,
|
|
41
|
+
* a single USD number, and any other assets — hiding which network each lives on.
|
|
42
|
+
* NOTE: callers should surface spendability constraints just-in-time (a unified BTC
|
|
43
|
+
* total can hide that a given route needs a swap); this only aggregates display balances.
|
|
44
|
+
*/
|
|
45
|
+
export interface LiteBalances {
|
|
46
|
+
btc: number;
|
|
47
|
+
usd: number;
|
|
48
|
+
other: UnifiedAsset[];
|
|
49
|
+
}
|
|
50
|
+
export declare function aggregateForLite(assets: UnifiedAsset[]): LiteBalances;
|
|
51
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/disclosure/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAG1D,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,UAAU,CAAA;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,eAAe,CAAA;IACtB,uEAAuE;IACvE,YAAY,EAAE,OAAO,CAAA;IACrB,wEAAwE;IACxE,iBAAiB,EAAE,OAAO,CAAA;IAC1B,mDAAmD;IACnD,qBAAqB,EAAE,OAAO,CAAA;IAC9B,4EAA4E;IAC5E,gBAAgB,EAAE,OAAO,CAAA;IACzB,6DAA6D;IAC7D,UAAU,EAAE,OAAO,CAAA;CACpB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,eAAe,GAAG,gBAAgB,CAmBlE;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ;uBACG,YAAY;;;CAG1B,CAAA;AAEV,4EAA4E;AAC5E,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,CAAA;AAEhD,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,UAAU,CAK5D;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,YAAY,EAAE,CAAA;CACtB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,CAWrE"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Disclosure Level (Lite / Advanced)
|
|
3
|
+
* ----------------------------------
|
|
4
|
+
* Lite and Advanced are NOT a code fork — they are one setting that controls how
|
|
5
|
+
* much the UI reveals and how much the auto-router decides vs. the user. The engine
|
|
6
|
+
* is identical underneath. This module is the single source of truth for what each
|
|
7
|
+
* level exposes, so neither the apps nor the adapters branch on "mode" ad-hoc.
|
|
8
|
+
*
|
|
9
|
+
* Default is chosen at wallet creation but is REVERSIBLE in settings.
|
|
10
|
+
*/
|
|
11
|
+
import { LIQUID_USDT_ASSET_ID } from '../constants.js';
|
|
12
|
+
export function policyFor(level) {
|
|
13
|
+
if (level === 'advanced') {
|
|
14
|
+
return {
|
|
15
|
+
level,
|
|
16
|
+
showNetworks: true,
|
|
17
|
+
showRouteSelector: true,
|
|
18
|
+
showChannelManagement: true,
|
|
19
|
+
showExperimental: true,
|
|
20
|
+
showRawIds: true,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
level: 'lite',
|
|
25
|
+
showNetworks: false,
|
|
26
|
+
showRouteSelector: false,
|
|
27
|
+
showChannelManagement: false,
|
|
28
|
+
showExperimental: false,
|
|
29
|
+
showRawIds: false,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Lite-mode "USD" = USDt on Liquid (locked product decision).
|
|
34
|
+
* Used to relabel/aggregate the user-facing "USD" balance.
|
|
35
|
+
*/
|
|
36
|
+
export const LITE_USD = {
|
|
37
|
+
protocol: 'LIQUID',
|
|
38
|
+
assetId: LIQUID_USDT_ASSET_ID,
|
|
39
|
+
displayTicker: 'USD',
|
|
40
|
+
};
|
|
41
|
+
export function liteBucketOf(asset) {
|
|
42
|
+
// All BTC representations (on-chain, LN, Spark, Arkade, L-BTC) collapse to one "BTC".
|
|
43
|
+
if (asset.ticker === 'BTC' || asset.ticker === 'L-BTC' || asset.id === 'BTC')
|
|
44
|
+
return 'BTC';
|
|
45
|
+
if (asset.id === LITE_USD.assetId || asset.ticker === 'USDt' || asset.ticker === 'USD')
|
|
46
|
+
return 'USD';
|
|
47
|
+
return 'OTHER';
|
|
48
|
+
}
|
|
49
|
+
export function aggregateForLite(assets) {
|
|
50
|
+
let btc = 0;
|
|
51
|
+
let usd = 0;
|
|
52
|
+
const other = [];
|
|
53
|
+
for (const a of assets) {
|
|
54
|
+
const bucket = liteBucketOf(a);
|
|
55
|
+
if (bucket === 'BTC')
|
|
56
|
+
btc += a.balance.total;
|
|
57
|
+
else if (bucket === 'USD')
|
|
58
|
+
usd += a.balance.total;
|
|
59
|
+
else
|
|
60
|
+
other.push(a);
|
|
61
|
+
}
|
|
62
|
+
return { btc, usd, other };
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/disclosure/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAkBnD,MAAM,UAAU,SAAS,CAAC,KAAsB;IAC9C,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;QACzB,OAAO;YACL,KAAK;YACL,YAAY,EAAE,IAAI;YAClB,iBAAiB,EAAE,IAAI;YACvB,qBAAqB,EAAE,IAAI;YAC3B,gBAAgB,EAAE,IAAI;YACtB,UAAU,EAAE,IAAI;SACjB,CAAA;IACH,CAAC;IACD,OAAO;QACL,KAAK,EAAE,MAAM;QACb,YAAY,EAAE,KAAK;QACnB,iBAAiB,EAAE,KAAK;QACxB,qBAAqB,EAAE,KAAK;QAC5B,gBAAgB,EAAE,KAAK;QACvB,UAAU,EAAE,KAAK;KAClB,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,QAAQ,EAAE,QAAwB;IAClC,OAAO,EAAE,oBAAoB;IAC7B,aAAa,EAAE,KAAK;CACZ,CAAA;AAKV,MAAM,UAAU,YAAY,CAAC,KAAmB;IAC9C,sFAAsF;IACtF,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,IAAI,KAAK,CAAC,EAAE,KAAK,KAAK;QAAE,OAAO,KAAK,CAAA;IAC1F,IAAI,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK;QAAE,OAAO,KAAK,CAAA;IACpG,OAAO,OAAO,CAAA;AAChB,CAAC;AAcD,MAAM,UAAU,gBAAgB,CAAC,MAAsB;IACrD,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,MAAM,KAAK,GAAmB,EAAE,CAAA;IAChC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;QAC9B,IAAI,MAAM,KAAK,KAAK;YAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAA;aACvC,IAAI,MAAM,KAAK,KAAK;YAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAA;;YAC5C,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACpB,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAA;AAC5B,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @kaleidorg/wallet-engine
|
|
3
|
+
* Shared wallet protocol adapters for Spark, Arkade, RGB, and Flashnet.
|
|
4
|
+
*/
|
|
5
|
+
export * from './types/base.js';
|
|
6
|
+
export * from './types/cross-l2.js';
|
|
7
|
+
export type { SparkConfig, SparkTransfer, SparkLightningInvoice, SparkLightningSend, SparkNodeInfo } from './types/spark.js';
|
|
8
|
+
export type { ArkadeConfig, ArkadeVtxo, ArkadeBalance, ArkadeTransaction } from './types/arkade.js';
|
|
9
|
+
export type { RgbConfig, RgbAssetMetadata, RgbChannel, RgbInvoice, RgbTransfer, KaleidoswapQuote, RgbNodeInfo, TradingPair } from './types/rgb.js';
|
|
10
|
+
export * from './types/flashnet.js';
|
|
11
|
+
export { type IProtocolAdapter, type BaseProtocolConfig, type ProtocolConfig, type IProtocolAdapterFactory, ProtocolAdapterRegistry } from './adapters/IProtocolAdapter.js';
|
|
12
|
+
export { PROTOCOL_CAPABILITIES, getCapabilities, protocolsForLayer, type ProtocolCapabilities } from './capabilities/index.js';
|
|
13
|
+
export { PROTOCOL_OPERATIONS, getProtocolOperations, protocolSupportsOperation, type ProtocolCapability } from './capabilities/operations.js';
|
|
14
|
+
export type { IStorageProvider, IRuntimeProvider, PlatformContext } from './ports/index.js';
|
|
15
|
+
export { LIQUID_USDT_ASSET_ID } from './constants.js';
|
|
16
|
+
export { CrossProtocolRouter, type SendRoute, type SendResolution, type ReceiveRoute, } from './router/index.js';
|
|
17
|
+
export { classifyDestination, type ClassifiedDestination, type DestinationKind, } from './router/destination.js';
|
|
18
|
+
export { buildUnifiedReceiveURI, parseUnifiedReceiveURI, type UnifiedReceiveParams, } from './receive/unifiedReceive.js';
|
|
19
|
+
export { policyFor, liteBucketOf, aggregateForLite, LITE_USD, type DisclosureLevel, type DisclosurePolicy, type LiteBucket, type LiteBalances, } from './disclosure/index.js';
|
|
20
|
+
export { ProtocolManager, type ProtocolManagerConfig } from './manager/ProtocolManager.js';
|
|
21
|
+
export { networkTypeToProtocol, protocolToNetworkType } from './utils.js';
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACzH,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAChG,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC/I,cAAc,kBAAkB,CAAA;AAGhC,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,KAAK,cAAc,EAAE,KAAK,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AAGxK,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,iBAAiB,EAAE,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAGrH,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAG1I,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAGlF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAUlD,OAAO,EACL,mBAAmB,EACnB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,mBAAmB,EACnB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,GACrB,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,KAAK,oBAAoB,GAC1B,MAAM,0BAA0B,CAAA;AAGjC,OAAO,EACL,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,YAAY,GAClB,MAAM,cAAc,CAAA;AAGrB,OAAO,EAAE,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAGvF,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @kaleidorg/wallet-engine
|
|
3
|
+
* Shared wallet protocol adapters for Spark, Arkade, RGB, and Flashnet.
|
|
4
|
+
*/
|
|
5
|
+
// Types
|
|
6
|
+
export * from './types/base.js';
|
|
7
|
+
export * from './types/cross-l2.js';
|
|
8
|
+
export * from './types/flashnet.js';
|
|
9
|
+
// Adapter interface
|
|
10
|
+
export { ProtocolAdapterRegistry } from './adapters/IProtocolAdapter.js';
|
|
11
|
+
// Capability manifest (differences-as-data backbone)
|
|
12
|
+
export { PROTOCOL_CAPABILITIES, getCapabilities, protocolsForLayer } from './capabilities/index.js';
|
|
13
|
+
// Operation-level capability manifest (per-adapter `capabilities` field)
|
|
14
|
+
export { PROTOCOL_OPERATIONS, getProtocolOperations, protocolSupportsOperation } from './capabilities/operations.js';
|
|
15
|
+
// Shared constants
|
|
16
|
+
export { LIQUID_USDT_ASSET_ID } from './constants.js';
|
|
17
|
+
// NOTE: adapters are deliberately NOT exported from this barrel — they pull
|
|
18
|
+
// heavy SDKs / WDK weight an extension host does not want. Import them from the
|
|
19
|
+
// opt-in sub-paths instead:
|
|
20
|
+
// @kaleidorg/wallet-engine/adapters/native (SDK-backed + client managers)
|
|
21
|
+
// @kaleidorg/wallet-engine/adapters/wdk (WDK-backed + createWdkRegistry)
|
|
22
|
+
// @kaleidorg/wallet-engine/swap (Kaleidoswap RFQ wrapper)
|
|
23
|
+
// Cross-protocol router (chooses BETWEEN protocols)
|
|
24
|
+
export { CrossProtocolRouter, } from './router/index.js';
|
|
25
|
+
export { classifyDestination, } from './router/destination.js';
|
|
26
|
+
// Unified receive QR (single BIP21 with embedded LN/Ark/Spark/Liquid/RGB)
|
|
27
|
+
export { buildUnifiedReceiveURI, parseUnifiedReceiveURI, } from './receive/unifiedReceive.js';
|
|
28
|
+
// Lite/Advanced disclosure model
|
|
29
|
+
export { policyFor, liteBucketOf, aggregateForLite, LITE_USD, } from './disclosure/index.js';
|
|
30
|
+
// Manager
|
|
31
|
+
export { ProtocolManager } from './manager/ProtocolManager.js';
|
|
32
|
+
// Utilities
|
|
33
|
+
export { networkTypeToProtocol, protocolToNetworkType } from './utils.js';
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,QAAQ;AACR,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAIhC,cAAc,kBAAkB,CAAA;AAEhC,oBAAoB;AACpB,OAAO,EAAqG,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AAExK,qDAAqD;AACrD,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,iBAAiB,EAA6B,MAAM,gBAAgB,CAAA;AAErH,yEAAyE;AACzE,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,yBAAyB,EAA2B,MAAM,2BAA2B,CAAA;AAK1I,mBAAmB;AACnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAElD,4EAA4E;AAC5E,gFAAgF;AAChF,4BAA4B;AAC5B,6EAA6E;AAC7E,+EAA+E;AAC/E,wEAAwE;AAExE,oDAAoD;AACpD,OAAO,EACL,mBAAmB,GAIpB,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,mBAAmB,GAGpB,MAAM,sBAAsB,CAAA;AAE7B,0EAA0E;AAC1E,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GAEvB,MAAM,0BAA0B,CAAA;AAEjC,iCAAiC;AACjC,OAAO,EACL,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,QAAQ,GAKT,MAAM,cAAc,CAAA;AAErB,UAAU;AACV,OAAO,EAAE,eAAe,EAA8B,MAAM,2BAA2B,CAAA;AAEvF,YAAY;AACZ,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Arkade Client Manager
|
|
3
|
+
* Manages the lifecycle of an Arkade wallet (@arkade-os/sdk).
|
|
4
|
+
* Platform-agnostic: storage/providers are injected by consumers.
|
|
5
|
+
* BIP86 key derivation via @scure/bip39 + @scure/bip32.
|
|
6
|
+
*/
|
|
7
|
+
import type { ArkadeConfig } from '../types/arkade.js';
|
|
8
|
+
type ArkadeWallet = any;
|
|
9
|
+
/**
|
|
10
|
+
* Platform-specific providers injected by consumers.
|
|
11
|
+
*/
|
|
12
|
+
export interface ArkadePlatformProviders {
|
|
13
|
+
createArkProvider?: () => any;
|
|
14
|
+
createIndexerProvider?: () => any;
|
|
15
|
+
createWalletRepository?: () => any;
|
|
16
|
+
createContractRepository?: () => any;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* SDK factory injected by consumers.
|
|
20
|
+
* Consumers must call `setArkadeSdkFactory()` before `initialize()`.
|
|
21
|
+
*/
|
|
22
|
+
export interface ArkadeSdkFactory {
|
|
23
|
+
createWallet: (config: any) => Promise<any>;
|
|
24
|
+
createIdentity: (privateKeyHex: string) => any;
|
|
25
|
+
}
|
|
26
|
+
declare class ArkadeClientManager {
|
|
27
|
+
private wallet;
|
|
28
|
+
private config;
|
|
29
|
+
private _initPromise;
|
|
30
|
+
private platformProviders;
|
|
31
|
+
private sdkFactory;
|
|
32
|
+
setPlatformProviders(providers: ArkadePlatformProviders): void;
|
|
33
|
+
/**
|
|
34
|
+
* Set the SDK factory before calling initialize().
|
|
35
|
+
* This avoids dynamic import() which breaks in some bundlers.
|
|
36
|
+
*/
|
|
37
|
+
setSdkFactory(factory: ArkadeSdkFactory): void;
|
|
38
|
+
initialize(config: ArkadeConfig): Promise<void>;
|
|
39
|
+
private _doInitialize;
|
|
40
|
+
disconnect(): Promise<void>;
|
|
41
|
+
isInitialized(): boolean;
|
|
42
|
+
getWallet(): ArkadeWallet;
|
|
43
|
+
getConfig(): ArkadeConfig | null;
|
|
44
|
+
}
|
|
45
|
+
export declare const arkadeClientManager: ArkadeClientManager;
|
|
46
|
+
export {};
|
|
47
|
+
//# sourceMappingURL=arkade-client-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arkade-client-manager.d.ts","sourceRoot":"","sources":["../../src/lib/arkade-client-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAInD,KAAK,YAAY,GAAG,GAAG,CAAA;AAEvB;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,iBAAiB,CAAC,EAAE,MAAM,GAAG,CAAA;IAC7B,qBAAqB,CAAC,EAAE,MAAM,GAAG,CAAA;IACjC,sBAAsB,CAAC,EAAE,MAAM,GAAG,CAAA;IAClC,wBAAwB,CAAC,EAAE,MAAM,GAAG,CAAA;CACrC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IAC3C,cAAc,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,GAAG,CAAA;CAC/C;AAgBD,cAAM,mBAAmB;IACvB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,iBAAiB,CAA8B;IACvD,OAAO,CAAC,UAAU,CAAgC;IAElD,oBAAoB,CAAC,SAAS,EAAE,uBAAuB,GAAG,IAAI;IAI9D;;;OAGG;IACH,aAAa,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAI9C,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;YASjC,aAAa;IAkErB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC,aAAa,IAAI,OAAO;IAIxB,SAAS,IAAI,YAAY;IAOzB,SAAS,IAAI,YAAY,GAAG,IAAI;CAGjC;AAED,eAAO,MAAM,mBAAmB,qBAA4B,CAAA"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Arkade Client Manager
|
|
3
|
+
* Manages the lifecycle of an Arkade wallet (@arkade-os/sdk).
|
|
4
|
+
* Platform-agnostic: storage/providers are injected by consumers.
|
|
5
|
+
* BIP86 key derivation via @scure/bip39 + @scure/bip32.
|
|
6
|
+
*/
|
|
7
|
+
import { mnemonicToSeedSync } from '@scure/bip39';
|
|
8
|
+
import { HDKey } from '@scure/bip32';
|
|
9
|
+
function derivePrivateKeyFromMnemonic(mnemonic, isMainnet) {
|
|
10
|
+
const seed = mnemonicToSeedSync(mnemonic);
|
|
11
|
+
const root = HDKey.fromMasterSeed(seed);
|
|
12
|
+
const coinType = isMainnet ? 0 : 1;
|
|
13
|
+
const child = root.derive(`m/86'/${coinType}'/0'/0/0`);
|
|
14
|
+
if (!child.privateKey) {
|
|
15
|
+
throw new Error('Failed to derive private key from mnemonic');
|
|
16
|
+
}
|
|
17
|
+
return Array.from(child.privateKey).map(b => b.toString(16).padStart(2, '0')).join('');
|
|
18
|
+
}
|
|
19
|
+
class ArkadeClientManager {
|
|
20
|
+
constructor() {
|
|
21
|
+
this.wallet = null;
|
|
22
|
+
this.config = null;
|
|
23
|
+
this._initPromise = null;
|
|
24
|
+
this.platformProviders = {};
|
|
25
|
+
this.sdkFactory = null;
|
|
26
|
+
}
|
|
27
|
+
setPlatformProviders(providers) {
|
|
28
|
+
this.platformProviders = providers;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Set the SDK factory before calling initialize().
|
|
32
|
+
* This avoids dynamic import() which breaks in some bundlers.
|
|
33
|
+
*/
|
|
34
|
+
setSdkFactory(factory) {
|
|
35
|
+
this.sdkFactory = factory;
|
|
36
|
+
}
|
|
37
|
+
initialize(config) {
|
|
38
|
+
if (this._initPromise)
|
|
39
|
+
return this._initPromise;
|
|
40
|
+
this._initPromise = this._doInitialize(config).finally(() => {
|
|
41
|
+
this._initPromise = null;
|
|
42
|
+
});
|
|
43
|
+
return this._initPromise;
|
|
44
|
+
}
|
|
45
|
+
async _doInitialize(config) {
|
|
46
|
+
if (this.wallet) {
|
|
47
|
+
console.warn('[ArkadeClientManager] Wallet already initialized, re-initializing...');
|
|
48
|
+
await this.disconnect();
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
const isMainnet = config.network === 'mainnet';
|
|
52
|
+
const privateKeyHex = derivePrivateKeyFromMnemonic(config.mnemonic, isMainnet);
|
|
53
|
+
const arkServerUrl = config.arkServerUrl;
|
|
54
|
+
const walletConfig = {
|
|
55
|
+
arkServerUrl,
|
|
56
|
+
};
|
|
57
|
+
// Only pass esploraUrl if explicitly configured (SDK defaults to mempool.space)
|
|
58
|
+
if (config.esploraUrl) {
|
|
59
|
+
walletConfig.esploraUrl = config.esploraUrl;
|
|
60
|
+
}
|
|
61
|
+
// Storage repositories (IndexedDB for extension, AsyncStorage for RN)
|
|
62
|
+
const storage = {};
|
|
63
|
+
if (this.platformProviders.createWalletRepository) {
|
|
64
|
+
storage.walletRepository = this.platformProviders.createWalletRepository();
|
|
65
|
+
}
|
|
66
|
+
if (this.platformProviders.createContractRepository) {
|
|
67
|
+
storage.contractRepository = this.platformProviders.createContractRepository();
|
|
68
|
+
}
|
|
69
|
+
if (Object.keys(storage).length > 0) {
|
|
70
|
+
walletConfig.storage = storage;
|
|
71
|
+
}
|
|
72
|
+
// Settlement config (VTXO lifecycle)
|
|
73
|
+
walletConfig.settlementConfig = {
|
|
74
|
+
vtxoThreshold: config.vtxoThresholdSeconds ?? 259200, // 3 days default
|
|
75
|
+
boardingUtxoSweep: true,
|
|
76
|
+
pollIntervalMs: 60000,
|
|
77
|
+
};
|
|
78
|
+
// Platform-specific providers
|
|
79
|
+
if (this.platformProviders.createArkProvider) {
|
|
80
|
+
walletConfig.arkProvider = this.platformProviders.createArkProvider();
|
|
81
|
+
}
|
|
82
|
+
if (this.platformProviders.createIndexerProvider) {
|
|
83
|
+
walletConfig.indexerProvider = this.platformProviders.createIndexerProvider();
|
|
84
|
+
}
|
|
85
|
+
if (this.sdkFactory) {
|
|
86
|
+
walletConfig.identity = this.sdkFactory.createIdentity(privateKeyHex);
|
|
87
|
+
this.wallet = await this.sdkFactory.createWallet(walletConfig);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
const { Wallet, SingleKey } = await import('@arkade-os/sdk');
|
|
91
|
+
walletConfig.identity = SingleKey.fromHex(privateKeyHex);
|
|
92
|
+
this.wallet = await Wallet.create(walletConfig);
|
|
93
|
+
}
|
|
94
|
+
this.config = config;
|
|
95
|
+
console.log('[ArkadeClientManager] Arkade wallet initialized, network:', config.network || 'signet');
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
this.wallet = null;
|
|
99
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
100
|
+
throw new Error(`Failed to initialize Arkade wallet: ${msg}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
async disconnect() {
|
|
104
|
+
this.wallet = null;
|
|
105
|
+
this.config = null;
|
|
106
|
+
}
|
|
107
|
+
isInitialized() {
|
|
108
|
+
return this.wallet !== null;
|
|
109
|
+
}
|
|
110
|
+
getWallet() {
|
|
111
|
+
if (!this.wallet) {
|
|
112
|
+
throw new Error('[ArkadeClientManager] Wallet not initialized');
|
|
113
|
+
}
|
|
114
|
+
return this.wallet;
|
|
115
|
+
}
|
|
116
|
+
getConfig() {
|
|
117
|
+
return this.config;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
export const arkadeClientManager = new ArkadeClientManager();
|
|
121
|
+
//# sourceMappingURL=arkade-client-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arkade-client-manager.js","sourceRoot":"","sources":["../../src/lib/arkade-client-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal, dependency-free BOLT11 helper.
|
|
3
|
+
* ---------------------------------------
|
|
4
|
+
* Extracts the amount + network from a Lightning invoice's human-readable prefix
|
|
5
|
+
* (HRP) without a full bech32 decode. Enough for adapters that only need to show
|
|
6
|
+
* "how much" before paying (Spark, Arkade), and to avoid pulling a decoder dep.
|
|
7
|
+
* Full field decode (payment_hash, description) is left to node-side decoders (RLN).
|
|
8
|
+
*/
|
|
9
|
+
export interface Bolt11Summary {
|
|
10
|
+
/** Amount in satoshis, if the invoice encodes one (open invoices omit it). */
|
|
11
|
+
amountSat?: number;
|
|
12
|
+
/** Network token from the HRP: bc | tb | tbs | bcrt. */
|
|
13
|
+
network: string;
|
|
14
|
+
}
|
|
15
|
+
/** Parse a BOLT11 invoice's HRP for amount + network. Returns network 'unknown' if not BOLT11. */
|
|
16
|
+
export declare function decodeBolt11(invoice: string): Bolt11Summary;
|
|
17
|
+
export declare function isBolt11(s: string): boolean;
|
|
18
|
+
//# sourceMappingURL=bolt11.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bolt11.d.ts","sourceRoot":"","sources":["../../src/lib/bolt11.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,WAAW,aAAa;IAC5B,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,kGAAkG;AAClG,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAc3D;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAE3C"}
|