@kaleidorg/wallet-protocols 1.0.0-beta.2
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/adapters/ArkadeAdapter.d.ts +48 -0
- package/dist/adapters/ArkadeAdapter.d.ts.map +1 -0
- package/dist/adapters/ArkadeAdapter.js +314 -0
- package/dist/adapters/ArkadeAdapter.js.map +1 -0
- package/dist/adapters/IProtocolAdapter.d.ts +71 -0
- package/dist/adapters/IProtocolAdapter.d.ts.map +1 -0
- package/dist/adapters/IProtocolAdapter.js +29 -0
- package/dist/adapters/IProtocolAdapter.js.map +1 -0
- package/dist/adapters/RgbAdapter.d.ts +70 -0
- package/dist/adapters/RgbAdapter.d.ts.map +1 -0
- package/dist/adapters/RgbAdapter.js +818 -0
- package/dist/adapters/RgbAdapter.js.map +1 -0
- package/dist/adapters/SparkAdapter.d.ts +47 -0
- package/dist/adapters/SparkAdapter.d.ts.map +1 -0
- package/dist/adapters/SparkAdapter.js +390 -0
- package/dist/adapters/SparkAdapter.js.map +1 -0
- package/dist/adapters/wdk/ArkadeWdkAdapter.d.ts +78 -0
- package/dist/adapters/wdk/ArkadeWdkAdapter.d.ts.map +1 -0
- package/dist/adapters/wdk/ArkadeWdkAdapter.js +226 -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 +272 -0
- package/dist/adapters/wdk/LiquidWdkAdapter.js.map +1 -0
- package/dist/adapters/wdk/RlnWdkAdapter.d.ts +85 -0
- package/dist/adapters/wdk/RlnWdkAdapter.d.ts.map +1 -0
- package/dist/adapters/wdk/RlnWdkAdapter.js +308 -0
- package/dist/adapters/wdk/RlnWdkAdapter.js.map +1 -0
- package/dist/adapters/wdk/SparkWdkAdapter.d.ts +79 -0
- package/dist/adapters/wdk/SparkWdkAdapter.d.ts.map +1 -0
- package/dist/adapters/wdk/SparkWdkAdapter.js +317 -0
- package/dist/adapters/wdk/SparkWdkAdapter.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/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 +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +43 -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 +57 -0
- package/dist/manager/ProtocolManager.d.ts.map +1 -0
- package/dist/manager/ProtocolManager.js +228 -0
- package/dist/manager/ProtocolManager.js.map +1 -0
- package/dist/ports/index.d.ts +29 -0
- package/dist/ports/index.d.ts.map +1 -0
- package/dist/ports/index.js +9 -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/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 +197 -0
- package/dist/types/base.d.ts.map +1 -0
- package/dist/types/base.js +27 -0
- package/dist/types/base.js.map +1 -0
- package/dist/types/cross-l2.d.ts +158 -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 +91 -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 +35 -0
|
@@ -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 '../adapters/wdk/LiquidWdkAdapter';
|
|
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,kCAAkC,CAAA;AAkBvE,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,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @kaleidorg/wallet-protocols
|
|
3
|
+
* Shared wallet protocol adapters for Spark, Arkade, RGB, and Flashnet.
|
|
4
|
+
*/
|
|
5
|
+
export * from './types/base';
|
|
6
|
+
export * from './types/cross-l2';
|
|
7
|
+
export type { SparkConfig, SparkTransfer, SparkLightningInvoice, SparkLightningSend, SparkNodeInfo } from './types/spark';
|
|
8
|
+
export type { ArkadeConfig, ArkadeVtxo, ArkadeBalance, ArkadeTransaction } from './types/arkade';
|
|
9
|
+
export type { RgbConfig, RgbAssetMetadata, RgbChannel, RgbInvoice, RgbTransfer, KaleidoswapQuote, RgbNodeInfo, TradingPair } from './types/rgb';
|
|
10
|
+
export * from './types/flashnet';
|
|
11
|
+
export { type IProtocolAdapter, type BaseProtocolConfig, type IProtocolAdapterFactory, ProtocolAdapterRegistry } from './adapters/IProtocolAdapter';
|
|
12
|
+
export { PROTOCOL_CAPABILITIES, getCapabilities, protocolsForLayer, type ProtocolCapabilities } from './capabilities';
|
|
13
|
+
export type { IStorageProvider, IRuntimeProvider, PlatformContext } from './ports';
|
|
14
|
+
export { SparkAdapter } from './adapters/SparkAdapter';
|
|
15
|
+
export { ArkadeAdapter } from './adapters/ArkadeAdapter';
|
|
16
|
+
export { RgbAdapter } from './adapters/RgbAdapter';
|
|
17
|
+
export { SparkWdkAdapter, type SparkAdapterConfig } from './adapters/wdk/SparkWdkAdapter';
|
|
18
|
+
export { LiquidWdkAdapter, type LiquidAdapterConfig, LIQUID_USDT_ASSET_ID } from './adapters/wdk/LiquidWdkAdapter';
|
|
19
|
+
export { RlnWdkAdapter, type RlnAdapterConfig } from './adapters/wdk/RlnWdkAdapter';
|
|
20
|
+
export { ArkadeWdkAdapter, type ArkadeAdapterConfig } from './adapters/wdk/ArkadeWdkAdapter';
|
|
21
|
+
export { createWdkRegistry, type WdkRegistryOptions } from './registry/createWdkRegistry';
|
|
22
|
+
export { registerWdkModule, hasWdkModule, type WdkModuleLoader } from './adapters/wdk/moduleLoader';
|
|
23
|
+
export { CrossProtocolRouter, type SendRoute, type SendResolution, type ReceiveRoute, } from './router';
|
|
24
|
+
export { classifyDestination, type ClassifiedDestination, type DestinationKind, } from './router/destination';
|
|
25
|
+
export { KaleidoswapSwap, type KaleidoswapSwapConfig, type SwapQuoteRequest, type SwapExecuteRequest, } from './swap/KaleidoswapSwap';
|
|
26
|
+
export { buildUnifiedReceiveURI, parseUnifiedReceiveURI, type UnifiedReceiveParams, } from './receive/unifiedReceive';
|
|
27
|
+
export { policyFor, liteBucketOf, aggregateForLite, LITE_USD, type DisclosureLevel, type DisclosurePolicy, type LiteBucket, type LiteBalances, } from './disclosure';
|
|
28
|
+
export { ProtocolManager, type ProtocolManagerConfig } from './manager/ProtocolManager';
|
|
29
|
+
export { sparkClientManager } from './lib/spark-client-manager';
|
|
30
|
+
export { arkadeClientManager, type ArkadePlatformProviders } from './lib/arkade-client-manager';
|
|
31
|
+
export { kaleidoClientManager, type KaleidoClientConfig } from './lib/kaleido-client-manager';
|
|
32
|
+
export { flashnetClientManager } from './lib/flashnet-client-manager';
|
|
33
|
+
export { networkTypeToProtocol, protocolToNetworkType } from './utils';
|
|
34
|
+
//# 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,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AAGnJ,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,iBAAiB,EAAE,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAGrH,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAGlF,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAGlD,OAAO,EAAE,eAAe,EAAE,KAAK,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACzF,OAAO,EAAE,gBAAgB,EAAE,KAAK,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AAClH,OAAO,EAAE,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AACnF,OAAO,EAAE,gBAAgB,EAAE,KAAK,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AAC5F,OAAO,EAAE,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAGzF,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAGnG,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,eAAe,EACf,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,wBAAwB,CAAA;AAG/B,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,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,mBAAmB,EAAE,KAAK,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AAC/F,OAAO,EAAE,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAC7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAGrE,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @kaleidorg/wallet-protocols
|
|
3
|
+
* Shared wallet protocol adapters for Spark, Arkade, RGB, and Flashnet.
|
|
4
|
+
*/
|
|
5
|
+
// Types
|
|
6
|
+
export * from './types/base';
|
|
7
|
+
export * from './types/cross-l2';
|
|
8
|
+
export * from './types/flashnet';
|
|
9
|
+
// Adapter interface
|
|
10
|
+
export { ProtocolAdapterRegistry } from './adapters/IProtocolAdapter';
|
|
11
|
+
// Capability manifest (differences-as-data backbone)
|
|
12
|
+
export { PROTOCOL_CAPABILITIES, getCapabilities, protocolsForLayer } from './capabilities';
|
|
13
|
+
// Adapters (native — being migrated to WDK)
|
|
14
|
+
export { SparkAdapter } from './adapters/SparkAdapter';
|
|
15
|
+
export { ArkadeAdapter } from './adapters/ArkadeAdapter';
|
|
16
|
+
export { RgbAdapter } from './adapters/RgbAdapter';
|
|
17
|
+
// Adapters (WDK-backed)
|
|
18
|
+
export { SparkWdkAdapter } from './adapters/wdk/SparkWdkAdapter';
|
|
19
|
+
export { LiquidWdkAdapter, LIQUID_USDT_ASSET_ID } from './adapters/wdk/LiquidWdkAdapter';
|
|
20
|
+
export { RlnWdkAdapter } from './adapters/wdk/RlnWdkAdapter';
|
|
21
|
+
export { ArkadeWdkAdapter } from './adapters/wdk/ArkadeWdkAdapter';
|
|
22
|
+
export { createWdkRegistry } from './registry/createWdkRegistry';
|
|
23
|
+
// WDK module loader (RN injects static require; other hosts use dynamic import)
|
|
24
|
+
export { registerWdkModule, hasWdkModule } from './adapters/wdk/moduleLoader';
|
|
25
|
+
// Cross-protocol router (chooses BETWEEN protocols)
|
|
26
|
+
export { CrossProtocolRouter, } from './router';
|
|
27
|
+
export { classifyDestination, } from './router/destination';
|
|
28
|
+
// Kaleidoswap RFQ swap wrapper
|
|
29
|
+
export { KaleidoswapSwap, } from './swap/KaleidoswapSwap';
|
|
30
|
+
// Unified receive QR (single BIP21 with embedded LN/Ark/Spark/Liquid/RGB)
|
|
31
|
+
export { buildUnifiedReceiveURI, parseUnifiedReceiveURI, } from './receive/unifiedReceive';
|
|
32
|
+
// Lite/Advanced disclosure model
|
|
33
|
+
export { policyFor, liteBucketOf, aggregateForLite, LITE_USD, } from './disclosure';
|
|
34
|
+
// Manager
|
|
35
|
+
export { ProtocolManager } from './manager/ProtocolManager';
|
|
36
|
+
// Client managers
|
|
37
|
+
export { sparkClientManager } from './lib/spark-client-manager';
|
|
38
|
+
export { arkadeClientManager } from './lib/arkade-client-manager';
|
|
39
|
+
export { kaleidoClientManager } from './lib/kaleido-client-manager';
|
|
40
|
+
export { flashnetClientManager } from './lib/flashnet-client-manager';
|
|
41
|
+
// Utilities
|
|
42
|
+
export { networkTypeToProtocol, protocolToNetworkType } from './utils';
|
|
43
|
+
//# 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,EAAgF,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AAEnJ,qDAAqD;AACrD,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,iBAAiB,EAA6B,MAAM,gBAAgB,CAAA;AAKrH,4CAA4C;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,wBAAwB;AACxB,OAAO,EAAE,eAAe,EAA2B,MAAM,gCAAgC,CAAA;AACzF,OAAO,EAAE,gBAAgB,EAA4B,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AAClH,OAAO,EAAE,aAAa,EAAyB,MAAM,8BAA8B,CAAA;AACnF,OAAO,EAAE,gBAAgB,EAA4B,MAAM,iCAAiC,CAAA;AAC5F,OAAO,EAAE,iBAAiB,EAA2B,MAAM,8BAA8B,CAAA;AAEzF,gFAAgF;AAChF,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAwB,MAAM,6BAA6B,CAAA;AAEnG,oDAAoD;AACpD,OAAO,EACL,mBAAmB,GAIpB,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,mBAAmB,GAGpB,MAAM,sBAAsB,CAAA;AAE7B,+BAA+B;AAC/B,OAAO,EACL,eAAe,GAIhB,MAAM,wBAAwB,CAAA;AAE/B,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,kBAAkB;AAClB,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,mBAAmB,EAAgC,MAAM,6BAA6B,CAAA;AAC/F,OAAO,EAAE,oBAAoB,EAA4B,MAAM,8BAA8B,CAAA;AAC7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAErE,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';
|
|
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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
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
|
+
const MULTIPLIER = { m: 1e-3, u: 1e-6, n: 1e-9, p: 1e-12 };
|
|
10
|
+
/** Parse a BOLT11 invoice's HRP for amount + network. Returns network 'unknown' if not BOLT11. */
|
|
11
|
+
export function decodeBolt11(invoice) {
|
|
12
|
+
const s = (invoice ?? '').trim().toLowerCase();
|
|
13
|
+
// HRP = ln <currency> [<amount><multiplier>] then the bech32 '1' separator.
|
|
14
|
+
// Requiring the trailing '1' makes the optional amount backtrack correctly, so the
|
|
15
|
+
// separator itself is never mistaken for an amount (e.g. amountless `lnbc1...`).
|
|
16
|
+
const m = s.match(/^ln(bcrt|tbs|bc|tb)(?:(\d+)([munp]?))?1/);
|
|
17
|
+
if (!m)
|
|
18
|
+
return { network: 'unknown' };
|
|
19
|
+
const network = m[1];
|
|
20
|
+
const digits = m[2];
|
|
21
|
+
const mult = m[3];
|
|
22
|
+
if (!digits)
|
|
23
|
+
return { network }; // amountless / open invoice
|
|
24
|
+
const base = Number(digits);
|
|
25
|
+
const btc = mult ? base * MULTIPLIER[mult] : base;
|
|
26
|
+
return { amountSat: Math.round(btc * 1e8), network };
|
|
27
|
+
}
|
|
28
|
+
export function isBolt11(s) {
|
|
29
|
+
return /^ln(bcrt|tbs|bc|tb)[0-9]/i.test((s ?? '').trim());
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=bolt11.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bolt11.js","sourceRoot":"","sources":["../../src/lib/bolt11.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,UAAU,GAA2B,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAA;AASlF,kGAAkG;AAClG,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAC9C,4EAA4E;IAC5E,mFAAmF;IACnF,iFAAiF;IACjF,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAA;IAC5D,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;IACrC,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACpB,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACnB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACjB,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,CAAA,CAAC,4BAA4B;IAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;IAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACjD,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,OAAO,EAAE,CAAA;AACtD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,CAAS;IAChC,OAAO,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;AAC3D,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flashnet Client Manager
|
|
3
|
+
* Manages the lifecycle of a FlashnetClient from @flashnet/sdk.
|
|
4
|
+
* Requires an initialized SparkWallet to function.
|
|
5
|
+
* Ported from rate-extension/src/lib/flashnet-client-manager.ts
|
|
6
|
+
*/
|
|
7
|
+
import { type FlashnetNetwork } from '../types/flashnet';
|
|
8
|
+
declare class FlashnetClientManager {
|
|
9
|
+
private client;
|
|
10
|
+
private initPromise;
|
|
11
|
+
private poolId;
|
|
12
|
+
private network;
|
|
13
|
+
/**
|
|
14
|
+
* Initialize with a SparkWallet instance.
|
|
15
|
+
* @param wallet - SparkWallet from @buildonspark/spark-sdk
|
|
16
|
+
* @param sparkNetwork - The Spark network ('mainnet' | 'regtest')
|
|
17
|
+
*/
|
|
18
|
+
initialize(wallet: any, sparkNetwork?: string): Promise<void>;
|
|
19
|
+
private doInitialize;
|
|
20
|
+
getClient(): any;
|
|
21
|
+
getPoolId(): string | null;
|
|
22
|
+
getNetwork(): FlashnetNetwork | null;
|
|
23
|
+
getUsdbTokenAddress(): string;
|
|
24
|
+
isInitialized(): boolean;
|
|
25
|
+
disconnect(): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
export declare const flashnetClientManager: FlashnetClientManager;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=flashnet-client-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flashnet-client-manager.d.ts","sourceRoot":"","sources":["../../src/lib/flashnet-client-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAA;AAkB1B,cAAM,qBAAqB;IACzB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,OAAO,CAA+B;IAE9C;;;;OAIG;IACH,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAQ/C,YAAY;IAuC1B,SAAS,IAAI,GAAG;IAOhB,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B,UAAU,IAAI,eAAe,GAAG,IAAI;IAIpC,mBAAmB,IAAI,MAAM;IAO7B,aAAa,IAAI,OAAO;IAIlB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAalC;AAED,eAAO,MAAM,qBAAqB,uBAA8B,CAAA"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flashnet Client Manager
|
|
3
|
+
* Manages the lifecycle of a FlashnetClient from @flashnet/sdk.
|
|
4
|
+
* Requires an initialized SparkWallet to function.
|
|
5
|
+
* Ported from rate-extension/src/lib/flashnet-client-manager.ts
|
|
6
|
+
*/
|
|
7
|
+
import { BTC_ASSET_PUBKEY, getFlashnetNetworkForSpark, getFlashnetUsdbTokenAddress, } from '../types/flashnet';
|
|
8
|
+
/**
|
|
9
|
+
* Normalize the SDK pools response to always return an array.
|
|
10
|
+
* The SDK may return `Pool[]` or `{ pools: Pool[] }`.
|
|
11
|
+
*/
|
|
12
|
+
function normalizePoolsResponse(response) {
|
|
13
|
+
if (Array.isArray(response))
|
|
14
|
+
return response;
|
|
15
|
+
if (response &&
|
|
16
|
+
typeof response === 'object' &&
|
|
17
|
+
Array.isArray(response.pools)) {
|
|
18
|
+
return response.pools;
|
|
19
|
+
}
|
|
20
|
+
return [];
|
|
21
|
+
}
|
|
22
|
+
class FlashnetClientManager {
|
|
23
|
+
constructor() {
|
|
24
|
+
this.client = null;
|
|
25
|
+
this.initPromise = null;
|
|
26
|
+
this.poolId = null;
|
|
27
|
+
this.network = null;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Initialize with a SparkWallet instance.
|
|
31
|
+
* @param wallet - SparkWallet from @buildonspark/spark-sdk
|
|
32
|
+
* @param sparkNetwork - The Spark network ('mainnet' | 'regtest')
|
|
33
|
+
*/
|
|
34
|
+
initialize(wallet, sparkNetwork) {
|
|
35
|
+
if (this.initPromise)
|
|
36
|
+
return this.initPromise;
|
|
37
|
+
this.initPromise = this.doInitialize(wallet, sparkNetwork).finally(() => {
|
|
38
|
+
this.initPromise = null;
|
|
39
|
+
});
|
|
40
|
+
return this.initPromise;
|
|
41
|
+
}
|
|
42
|
+
async doInitialize(wallet, sparkNetwork) {
|
|
43
|
+
if (this.client) {
|
|
44
|
+
await this.disconnect();
|
|
45
|
+
}
|
|
46
|
+
const network = getFlashnetNetworkForSpark(sparkNetwork);
|
|
47
|
+
if (!network) {
|
|
48
|
+
throw new Error('Flashnet is only available when Spark is on mainnet or regtest.');
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
const { FlashnetClient } = await import('@flashnet/sdk');
|
|
52
|
+
this.client = new FlashnetClient(wallet);
|
|
53
|
+
await this.client.initialize();
|
|
54
|
+
this.network = network;
|
|
55
|
+
// Auto-discover the largest BTC/USDB pool
|
|
56
|
+
try {
|
|
57
|
+
const poolsResponse = await this.client.listPools({
|
|
58
|
+
assetAAddress: BTC_ASSET_PUBKEY,
|
|
59
|
+
assetBAddress: getFlashnetUsdbTokenAddress(network),
|
|
60
|
+
sort: 'TVL_DESC',
|
|
61
|
+
});
|
|
62
|
+
const pools = normalizePoolsResponse(poolsResponse);
|
|
63
|
+
if (pools && pools.length > 0) {
|
|
64
|
+
this.poolId = pools[0].lpPublicKey;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
console.warn('[FlashnetClientManager] Pool discovery failed:', error);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
this.client = null;
|
|
73
|
+
this.poolId = null;
|
|
74
|
+
this.network = null;
|
|
75
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
76
|
+
throw new Error(`Failed to initialize FlashnetClient: ${message}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
getClient() {
|
|
80
|
+
if (!this.client) {
|
|
81
|
+
throw new Error('FlashnetClient not initialized. Call initialize() first.');
|
|
82
|
+
}
|
|
83
|
+
return this.client;
|
|
84
|
+
}
|
|
85
|
+
getPoolId() {
|
|
86
|
+
return this.poolId;
|
|
87
|
+
}
|
|
88
|
+
getNetwork() {
|
|
89
|
+
return this.network;
|
|
90
|
+
}
|
|
91
|
+
getUsdbTokenAddress() {
|
|
92
|
+
if (!this.network) {
|
|
93
|
+
throw new Error('Flashnet network unavailable. Initialize the client first.');
|
|
94
|
+
}
|
|
95
|
+
return getFlashnetUsdbTokenAddress(this.network);
|
|
96
|
+
}
|
|
97
|
+
isInitialized() {
|
|
98
|
+
return this.client !== null;
|
|
99
|
+
}
|
|
100
|
+
async disconnect() {
|
|
101
|
+
if (this.client) {
|
|
102
|
+
try {
|
|
103
|
+
await this.client.cleanup();
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
console.warn('[FlashnetClientManager] Disconnect error:', error);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
this.client = null;
|
|
110
|
+
this.poolId = null;
|
|
111
|
+
this.network = null;
|
|
112
|
+
this.initPromise = null;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
export const flashnetClientManager = new FlashnetClientManager();
|
|
116
|
+
//# sourceMappingURL=flashnet-client-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flashnet-client-manager.js","sourceRoot":"","sources":["../../src/lib/flashnet-client-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KaleidoClient Manager
|
|
3
|
+
* Singleton manager for KaleidoClient lifecycle.
|
|
4
|
+
* Ported from rate-extension/src/lib/kaleido-client-manager.ts
|
|
5
|
+
*/
|
|
6
|
+
import { KaleidoClient } from 'kaleido-sdk';
|
|
7
|
+
export interface KaleidoClientConfig {
|
|
8
|
+
baseUrl: string;
|
|
9
|
+
nodeUrl?: string;
|
|
10
|
+
apiKey?: string;
|
|
11
|
+
timeout?: number;
|
|
12
|
+
}
|
|
13
|
+
declare class KaleidoClientManager {
|
|
14
|
+
private client;
|
|
15
|
+
private config;
|
|
16
|
+
initialize(config: KaleidoClientConfig): void;
|
|
17
|
+
getClient(): KaleidoClient;
|
|
18
|
+
isInitialized(): boolean;
|
|
19
|
+
hasNode(): boolean;
|
|
20
|
+
getConfig(): KaleidoClientConfig | null;
|
|
21
|
+
reset(): void;
|
|
22
|
+
updateConfig(config: Partial<KaleidoClientConfig>): void;
|
|
23
|
+
}
|
|
24
|
+
export declare const kaleidoClientManager: KaleidoClientManager;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=kaleido-client-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kaleido-client-manager.d.ts","sourceRoot":"","sources":["../../src/lib/kaleido-client-manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE3C,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,cAAM,oBAAoB;IACxB,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,MAAM,CAAmC;IAEjD,UAAU,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAgB7C,SAAS,IAAI,aAAa;IAO1B,aAAa,IAAI,OAAO;IAIxB,OAAO,IAAI,OAAO;IAIlB,SAAS,IAAI,mBAAmB,GAAG,IAAI;IAIvC,KAAK,IAAI,IAAI;IAMb,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,IAAI;CAOzD;AAED,eAAO,MAAM,oBAAoB,sBAA6B,CAAA"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KaleidoClient Manager
|
|
3
|
+
* Singleton manager for KaleidoClient lifecycle.
|
|
4
|
+
* Ported from rate-extension/src/lib/kaleido-client-manager.ts
|
|
5
|
+
*/
|
|
6
|
+
import { KaleidoClient } from 'kaleido-sdk';
|
|
7
|
+
class KaleidoClientManager {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.client = null;
|
|
10
|
+
this.config = null;
|
|
11
|
+
}
|
|
12
|
+
initialize(config) {
|
|
13
|
+
this.config = config;
|
|
14
|
+
this.client = KaleidoClient.create({
|
|
15
|
+
baseUrl: config.baseUrl,
|
|
16
|
+
nodeUrl: config.nodeUrl,
|
|
17
|
+
apiKey: config.apiKey,
|
|
18
|
+
timeout: config.timeout,
|
|
19
|
+
});
|
|
20
|
+
console.log('[KaleidoClientManager] Initialized with config:', {
|
|
21
|
+
baseUrl: config.baseUrl,
|
|
22
|
+
hasNodeUrl: !!config.nodeUrl,
|
|
23
|
+
hasApiKey: !!config.apiKey,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
getClient() {
|
|
27
|
+
if (!this.client) {
|
|
28
|
+
throw new Error('KaleidoClient not initialized. Call initialize() first.');
|
|
29
|
+
}
|
|
30
|
+
return this.client;
|
|
31
|
+
}
|
|
32
|
+
isInitialized() {
|
|
33
|
+
return this.client !== null;
|
|
34
|
+
}
|
|
35
|
+
hasNode() {
|
|
36
|
+
return !!this.config?.nodeUrl;
|
|
37
|
+
}
|
|
38
|
+
getConfig() {
|
|
39
|
+
return this.config;
|
|
40
|
+
}
|
|
41
|
+
reset() {
|
|
42
|
+
this.client = null;
|
|
43
|
+
this.config = null;
|
|
44
|
+
console.log('[KaleidoClientManager] Reset complete');
|
|
45
|
+
}
|
|
46
|
+
updateConfig(config) {
|
|
47
|
+
if (!this.config) {
|
|
48
|
+
throw new Error('Cannot update config: client not initialized');
|
|
49
|
+
}
|
|
50
|
+
const newConfig = { ...this.config, ...config };
|
|
51
|
+
this.initialize(newConfig);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export const kaleidoClientManager = new KaleidoClientManager();
|
|
55
|
+
//# sourceMappingURL=kaleido-client-manager.js.map
|