@kaleidorg/wallet-engine 1.0.0-beta.4 → 1.0.0-beta.42
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 +29 -10
- package/dist/adapters/ArkadeAdapter.d.ts +78 -14
- package/dist/adapters/ArkadeAdapter.d.ts.map +1 -1
- package/dist/adapters/ArkadeAdapter.js +653 -161
- package/dist/adapters/ArkadeAdapter.js.map +1 -1
- package/dist/adapters/IProtocolAdapter.d.ts +195 -18
- package/dist/adapters/IProtocolAdapter.d.ts.map +1 -1
- package/dist/adapters/IProtocolAdapter.js +6 -2
- package/dist/adapters/IProtocolAdapter.js.map +1 -1
- package/dist/adapters/RgbAdapter.d.ts +70 -27
- package/dist/adapters/RgbAdapter.d.ts.map +1 -1
- package/dist/adapters/RgbAdapter.js +464 -370
- package/dist/adapters/RgbAdapter.js.map +1 -1
- package/dist/adapters/SparkAdapter.d.ts +93 -15
- package/dist/adapters/SparkAdapter.d.ts.map +1 -1
- package/dist/adapters/SparkAdapter.js +833 -168
- package/dist/adapters/SparkAdapter.js.map +1 -1
- package/dist/adapters/arkade.d.ts +15 -0
- package/dist/adapters/arkade.d.ts.map +1 -0
- package/dist/adapters/arkade.js +15 -0
- package/dist/adapters/arkade.js.map +1 -0
- package/dist/adapters/flashnet.d.ts +15 -0
- package/dist/adapters/flashnet.d.ts.map +1 -0
- package/dist/adapters/flashnet.js +17 -0
- package/dist/adapters/flashnet.js.map +1 -0
- package/dist/adapters/native.d.ts +17 -0
- package/dist/adapters/native.d.ts.map +1 -0
- package/dist/adapters/native.js +17 -0
- package/dist/adapters/native.js.map +1 -0
- package/dist/adapters/rgb.d.ts +11 -0
- package/dist/adapters/rgb.d.ts.map +1 -0
- package/dist/adapters/rgb.js +11 -0
- package/dist/adapters/rgb.js.map +1 -0
- package/dist/adapters/spark.d.ts +12 -0
- package/dist/adapters/spark.d.ts.map +1 -0
- package/dist/adapters/spark.js +14 -0
- package/dist/adapters/spark.js.map +1 -0
- package/dist/adapters/wdk/ArkadeWdkAdapter.d.ts +53 -19
- package/dist/adapters/wdk/ArkadeWdkAdapter.d.ts.map +1 -1
- package/dist/adapters/wdk/ArkadeWdkAdapter.js +366 -90
- package/dist/adapters/wdk/ArkadeWdkAdapter.js.map +1 -1
- package/dist/adapters/wdk/BaseWdkAdapter.d.ts +40 -0
- package/dist/adapters/wdk/BaseWdkAdapter.d.ts.map +1 -0
- package/dist/adapters/wdk/BaseWdkAdapter.js +71 -0
- package/dist/adapters/wdk/BaseWdkAdapter.js.map +1 -0
- package/dist/adapters/wdk/LiquidWdkAdapter.d.ts +6 -13
- package/dist/adapters/wdk/LiquidWdkAdapter.d.ts.map +1 -1
- package/dist/adapters/wdk/LiquidWdkAdapter.js +14 -32
- package/dist/adapters/wdk/LiquidWdkAdapter.js.map +1 -1
- package/dist/adapters/wdk/RgbCore.d.ts +64 -0
- package/dist/adapters/wdk/RgbCore.d.ts.map +1 -0
- package/dist/adapters/wdk/RgbCore.js +111 -0
- package/dist/adapters/wdk/RgbCore.js.map +1 -0
- package/dist/adapters/wdk/RgbLibWasmAdapter.d.ts +277 -0
- package/dist/adapters/wdk/RgbLibWasmAdapter.d.ts.map +1 -0
- package/dist/adapters/wdk/RgbLibWasmAdapter.js +731 -0
- package/dist/adapters/wdk/RgbLibWasmAdapter.js.map +1 -0
- package/dist/adapters/wdk/RgbLibWdkAdapter.d.ts +104 -0
- package/dist/adapters/wdk/RgbLibWdkAdapter.d.ts.map +1 -0
- package/dist/adapters/wdk/RgbLibWdkAdapter.js +249 -0
- package/dist/adapters/wdk/RgbLibWdkAdapter.js.map +1 -0
- package/dist/adapters/wdk/RlnWdkAdapter.d.ts +27 -14
- package/dist/adapters/wdk/RlnWdkAdapter.d.ts.map +1 -1
- package/dist/adapters/wdk/RlnWdkAdapter.js +124 -89
- package/dist/adapters/wdk/RlnWdkAdapter.js.map +1 -1
- package/dist/adapters/wdk/SparkWdkAdapter.d.ts +74 -41
- package/dist/adapters/wdk/SparkWdkAdapter.d.ts.map +1 -1
- package/dist/adapters/wdk/SparkWdkAdapter.js +706 -249
- package/dist/adapters/wdk/SparkWdkAdapter.js.map +1 -1
- package/dist/adapters/wdk/index.d.ts +17 -0
- package/dist/adapters/wdk/index.d.ts.map +1 -0
- package/dist/adapters/wdk/index.js +17 -0
- package/dist/adapters/wdk/index.js.map +1 -0
- package/dist/adapters/wdk/wasm-rgb.d.ts +15 -0
- package/dist/adapters/wdk/wasm-rgb.d.ts.map +1 -0
- package/dist/adapters/wdk/wasm-rgb.js +15 -0
- package/dist/adapters/wdk/wasm-rgb.js.map +1 -0
- package/dist/capabilities/index.d.ts +1 -1
- package/dist/capabilities/index.d.ts.map +1 -1
- package/dist/capabilities/index.js +17 -2
- package/dist/capabilities/index.js.map +1 -1
- package/dist/capabilities/operations.d.ts +22 -0
- package/dist/capabilities/operations.d.ts.map +1 -0
- package/dist/capabilities/operations.js +62 -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 +1 -1
- package/dist/disclosure/index.js +1 -1
- package/dist/disclosure/index.js.map +1 -1
- package/dist/format.d.ts +11 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +10 -0
- package/dist/format.js.map +1 -0
- package/dist/index.d.ts +21 -31
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -32
- package/dist/index.js.map +1 -1
- package/dist/lib/arkade-client-manager.d.ts +64 -24
- package/dist/lib/arkade-client-manager.d.ts.map +1 -1
- package/dist/lib/arkade-client-manager.js +240 -65
- package/dist/lib/arkade-client-manager.js.map +1 -1
- package/dist/lib/arkade-converters.d.ts +39 -0
- package/dist/lib/arkade-converters.d.ts.map +1 -0
- package/dist/lib/arkade-converters.js +148 -0
- package/dist/lib/arkade-converters.js.map +1 -0
- package/dist/lib/arkade-helpers.d.ts +110 -0
- package/dist/lib/arkade-helpers.d.ts.map +1 -0
- package/dist/lib/arkade-helpers.js +227 -0
- package/dist/lib/arkade-helpers.js.map +1 -0
- package/dist/lib/arkade-swaps-client-manager.d.ts +55 -0
- package/dist/lib/arkade-swaps-client-manager.d.ts.map +1 -0
- package/dist/lib/arkade-swaps-client-manager.js +127 -0
- package/dist/lib/arkade-swaps-client-manager.js.map +1 -0
- package/dist/lib/arkade-vtxo-lifecycle.d.ts +116 -0
- package/dist/lib/arkade-vtxo-lifecycle.d.ts.map +1 -0
- package/dist/lib/arkade-vtxo-lifecycle.js +184 -0
- package/dist/lib/arkade-vtxo-lifecycle.js.map +1 -0
- package/dist/lib/flashnet-client-manager.d.ts +26 -9
- package/dist/lib/flashnet-client-manager.d.ts.map +1 -1
- package/dist/lib/flashnet-client-manager.js +97 -13
- package/dist/lib/flashnet-client-manager.js.map +1 -1
- package/dist/lib/kaleido-client-manager.d.ts +38 -3
- package/dist/lib/kaleido-client-manager.d.ts.map +1 -1
- package/dist/lib/kaleido-client-manager.js +79 -10
- package/dist/lib/kaleido-client-manager.js.map +1 -1
- package/dist/lib/ln-message-sign.d.ts +20 -0
- package/dist/lib/ln-message-sign.d.ts.map +1 -0
- package/dist/lib/ln-message-sign.js +90 -0
- package/dist/lib/ln-message-sign.js.map +1 -0
- package/dist/lib/log.d.ts +15 -0
- package/dist/lib/log.d.ts.map +1 -0
- package/dist/lib/log.js +16 -0
- package/dist/lib/log.js.map +1 -0
- package/dist/lib/orchestra-client.d.ts +149 -0
- package/dist/lib/orchestra-client.d.ts.map +1 -0
- package/dist/lib/orchestra-client.js +178 -0
- package/dist/lib/orchestra-client.js.map +1 -0
- package/dist/lib/psbt-signer.d.ts +60 -0
- package/dist/lib/psbt-signer.d.ts.map +1 -0
- package/dist/lib/psbt-signer.js +161 -0
- package/dist/lib/psbt-signer.js.map +1 -0
- package/dist/lib/rgb-converters.d.ts +62 -0
- package/dist/lib/rgb-converters.d.ts.map +1 -0
- package/dist/lib/rgb-converters.js +179 -0
- package/dist/lib/rgb-converters.js.map +1 -0
- package/dist/lib/rgb-fee-policy.d.ts +41 -0
- package/dist/lib/rgb-fee-policy.d.ts.map +1 -0
- package/dist/lib/rgb-fee-policy.js +52 -0
- package/dist/lib/rgb-fee-policy.js.map +1 -0
- package/dist/lib/rgb-helpers.d.ts +54 -0
- package/dist/lib/rgb-helpers.d.ts.map +1 -0
- package/dist/lib/rgb-helpers.js +89 -0
- package/dist/lib/rgb-helpers.js.map +1 -0
- package/dist/lib/spark-activity.d.ts +5 -0
- package/dist/lib/spark-activity.d.ts.map +1 -0
- package/dist/lib/spark-activity.js +11 -0
- package/dist/lib/spark-activity.js.map +1 -0
- package/dist/lib/spark-balance-cache.d.ts +58 -0
- package/dist/lib/spark-balance-cache.d.ts.map +1 -0
- package/dist/lib/spark-balance-cache.js +86 -0
- package/dist/lib/spark-balance-cache.js.map +1 -0
- package/dist/lib/spark-client-manager.d.ts +64 -10
- package/dist/lib/spark-client-manager.d.ts.map +1 -1
- package/dist/lib/spark-client-manager.js +191 -35
- package/dist/lib/spark-client-manager.js.map +1 -1
- package/dist/lib/spark-converters.d.ts +64 -0
- package/dist/lib/spark-converters.d.ts.map +1 -0
- package/dist/lib/spark-converters.js +242 -0
- package/dist/lib/spark-converters.js.map +1 -0
- package/dist/lib/spark-helpers.d.ts +72 -0
- package/dist/lib/spark-helpers.d.ts.map +1 -0
- package/dist/lib/spark-helpers.js +151 -0
- package/dist/lib/spark-helpers.js.map +1 -0
- package/dist/lib/spark-sent-token-records.d.ts +43 -0
- package/dist/lib/spark-sent-token-records.d.ts.map +1 -0
- package/dist/lib/spark-sent-token-records.js +105 -0
- package/dist/lib/spark-sent-token-records.js.map +1 -0
- package/dist/lib/wallet-seed.d.ts +31 -0
- package/dist/lib/wallet-seed.d.ts.map +1 -0
- package/dist/lib/wallet-seed.js +58 -0
- package/dist/lib/wallet-seed.js.map +1 -0
- package/dist/lib/zbase32.d.ts +3 -0
- package/dist/lib/zbase32.d.ts.map +1 -0
- package/dist/lib/zbase32.js +64 -0
- package/dist/lib/zbase32.js.map +1 -0
- package/dist/manager/ProtocolManager.d.ts +54 -3
- package/dist/manager/ProtocolManager.d.ts.map +1 -1
- package/dist/manager/ProtocolManager.js +118 -41
- package/dist/manager/ProtocolManager.js.map +1 -1
- package/dist/ports/index.d.ts +20 -0
- package/dist/ports/index.d.ts.map +1 -1
- package/dist/ports/index.js +23 -1
- package/dist/ports/index.js.map +1 -1
- package/dist/receive/unifiedReceive.d.ts +12 -0
- package/dist/receive/unifiedReceive.d.ts.map +1 -1
- package/dist/receive/unifiedReceive.js +35 -4
- package/dist/receive/unifiedReceive.js.map +1 -1
- package/dist/registry/createWdkRegistry.d.ts +10 -2
- package/dist/registry/createWdkRegistry.d.ts.map +1 -1
- package/dist/registry/createWdkRegistry.js +14 -7
- package/dist/registry/createWdkRegistry.js.map +1 -1
- package/dist/router/destination.d.ts +2 -2
- package/dist/router/destination.d.ts.map +1 -1
- package/dist/router/destination.js +34 -11
- package/dist/router/destination.js.map +1 -1
- package/dist/router/index.d.ts +39 -3
- package/dist/router/index.d.ts.map +1 -1
- package/dist/router/index.js +113 -4
- package/dist/router/index.js.map +1 -1
- package/dist/router/preference.d.ts +53 -0
- package/dist/router/preference.d.ts.map +1 -0
- package/dist/router/preference.js +81 -0
- package/dist/router/preference.js.map +1 -0
- package/dist/swap/KaleidoswapSwap.d.ts +1 -1
- package/dist/swap/KaleidoswapSwap.d.ts.map +1 -1
- package/dist/swap/KaleidoswapSwap.js +37 -20
- package/dist/swap/KaleidoswapSwap.js.map +1 -1
- 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 +1 -1
- package/dist/types/base.d.ts +35 -25
- package/dist/types/base.d.ts.map +1 -1
- package/dist/types/base.js +28 -2
- package/dist/types/base.js.map +1 -1
- package/dist/types/cross-l2.d.ts +1 -1
- package/dist/types/flashnet.d.ts +20 -0
- package/dist/types/flashnet.d.ts.map +1 -1
- package/dist/types/flashnet.js +34 -6
- package/dist/types/flashnet.js.map +1 -1
- package/dist/types/rgb.d.ts +18 -4
- package/dist/types/rgb.d.ts.map +1 -1
- package/dist/types/spark.d.ts +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js +2 -2
- package/dist/utils.js.map +1 -1
- package/package.json +68 -14
|
@@ -7,67 +7,115 @@
|
|
|
7
7
|
* receive via Boltz reverse submarine swaps.
|
|
8
8
|
*
|
|
9
9
|
* Discipline: no WDK/@arkade-os types cross the contract — domain types only;
|
|
10
|
-
* module objects are read as `any`.
|
|
10
|
+
* module objects are read as `any`. The WDK **account** surface is the primary path;
|
|
11
|
+
* the underlying @arkade-os/sdk Wallet (`account._signingWallet`) is reached only for
|
|
12
|
+
* the VTXO-lifecycle ops the WDK surface does not expose (getVtxos, getBoardingUtxos,
|
|
13
|
+
* onboard, offboard, rich balance summary) — ported from the native ArkadeAdapter.
|
|
14
|
+
* `@arkade-os/sdk` is lazy-loaded in `connect()` so this sub-path stays SDK-free until used.
|
|
11
15
|
*
|
|
12
|
-
* Arkade WDK surface (from JSDoc
|
|
16
|
+
* Arkade WDK surface (from JSDoc, v0.1.4):
|
|
13
17
|
* read-only: getAddress(): string (Ark address, inherited), getBoardingAddress(): string,
|
|
14
18
|
* getBalance(): bigint, getTokenBalance(id): bigint, getTransactionHistory()
|
|
15
19
|
* account: sendTransaction({to,value}), transfer({token,recipient,amount}),
|
|
16
20
|
* createLightningInvoice(amountSats, description?): {invoice,paymentHash},
|
|
17
21
|
* waitForLightningPayment(invoice): {txid}, getLightningLimits/Fees,
|
|
18
|
-
* subscribeToIncomingFunds, sign, dispose
|
|
19
|
-
* NOTE: Lightning *send* (pay a BOLT11) is not exposed as a simple method in v0.1.3.
|
|
22
|
+
* arkadeSwaps (Boltz client, for Lightning send), subscribeToIncomingFunds, sign, dispose
|
|
20
23
|
*/
|
|
21
|
-
import { ProtocolError, } from '../../types/base';
|
|
22
|
-
import { getCapabilities } from '../../capabilities';
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
|
|
24
|
+
import { ProtocolError, } from '../../types/base.js';
|
|
25
|
+
import { getCapabilities } from '../../capabilities/index.js';
|
|
26
|
+
import { BaseWdkAdapter } from './BaseWdkAdapter.js';
|
|
27
|
+
import { PROTOCOL_OPERATIONS } from '../../capabilities/operations.js';
|
|
28
|
+
import { loadWdkModule } from './moduleLoader.js';
|
|
29
|
+
import { decodeBolt11, isBolt11 } from '../../lib/bolt11.js';
|
|
30
|
+
import { normalizeVtxos, sortVtxosByExpiry, toNumber } from '../../lib/arkade-helpers.js';
|
|
31
|
+
import { signLnMessage, verifyLnMessage } from '../../lib/ln-message-sign.js';
|
|
32
|
+
import { resolveWalletSeed } from '../../lib/wallet-seed.js';
|
|
33
|
+
const isBitcoinAddress = (value) => /^(bc1|tb1|bcrt1)/i.test(value.trim());
|
|
34
|
+
const isLightningInvoice = (value) => {
|
|
35
|
+
const body = value.trim().toLowerCase().replace(/^lightning:/, '');
|
|
36
|
+
return /^ln(bc|tb|bcrt|sb)/.test(body);
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Allowlist of Arkade account methods reachable via `executeProtocolOperation`.
|
|
40
|
+
* VTXO-lifecycle ops (onboard/offboard/getVtxos/getBoardingUtxos) are now typed
|
|
41
|
+
* adapter methods, so they are intentionally NOT here.
|
|
42
|
+
*/
|
|
43
|
+
const ARKADE_ALLOWED_OPS = new Set([
|
|
44
|
+
'waitForLightningPayment',
|
|
45
|
+
'getLightningLimits',
|
|
46
|
+
'getLightningFees',
|
|
47
|
+
'subscribeToIncomingFunds',
|
|
48
|
+
'getBoardingAddress',
|
|
49
|
+
'getTokenBalance',
|
|
50
|
+
'getTransactionHistory',
|
|
51
|
+
]);
|
|
52
|
+
export class ArkadeWdkAdapter extends BaseWdkAdapter {
|
|
26
53
|
constructor() {
|
|
54
|
+
super(...arguments);
|
|
27
55
|
this.protocolName = 'ARKADE';
|
|
56
|
+
this.capabilities = PROTOCOL_OPERATIONS.ARKADE;
|
|
28
57
|
this.supportedLayers = getCapabilities('ARKADE').layers;
|
|
29
|
-
|
|
30
|
-
this.
|
|
31
|
-
|
|
32
|
-
this.
|
|
33
|
-
|
|
58
|
+
/** BIP-39 mnemonic — retained for message signing (derives its own key). */
|
|
59
|
+
this.mnemonic = null;
|
|
60
|
+
/** Lazily-loaded `@arkade-os/sdk` (for Ramps onboard/offboard). Kept off the static import graph. */
|
|
61
|
+
this.arkSdk = null;
|
|
62
|
+
}
|
|
63
|
+
/** The underlying @arkade-os/sdk Wallet the WDK account wraps — for VTXO-lifecycle ops. */
|
|
64
|
+
get rawWallet() {
|
|
65
|
+
const w = this.account?._signingWallet ?? this.account?._wallet;
|
|
66
|
+
if (!w)
|
|
67
|
+
throw new ProtocolError('Arkade wallet unavailable', 'ARKADE', 'NOT_CONNECTED');
|
|
68
|
+
return w;
|
|
34
69
|
}
|
|
35
70
|
// --- Connection ---------------------------------------------------------
|
|
36
71
|
async connect(config) {
|
|
37
72
|
const cfg = config;
|
|
38
73
|
if (!cfg.mnemonic)
|
|
39
74
|
throw new ProtocolError('ArkadeWdkAdapter requires a mnemonic', 'ARKADE', 'CONFIG');
|
|
75
|
+
this.mnemonic = cfg.mnemonic;
|
|
40
76
|
this.network = cfg.network ?? 'mainnet';
|
|
77
|
+
// Accept either an explicit `arkadeConfig` passthrough OR the native adapter's
|
|
78
|
+
// flat fields (arkServerUrl/esploraUrl/swapProviderUrl) — so hosts can switch
|
|
79
|
+
// to this adapter without reshaping their connect config. The WDK manager
|
|
80
|
+
// spreads this straight into @arkade-os/sdk's Wallet.create.
|
|
81
|
+
const arkadeConfig = cfg.arkadeConfig ??
|
|
82
|
+
{
|
|
83
|
+
...(cfg.arkServerUrl ? { arkServerUrl: cfg.arkServerUrl } : {}),
|
|
84
|
+
...(cfg.esploraUrl ? { esploraUrl: cfg.esploraUrl } : {}),
|
|
85
|
+
...(cfg.swapProviderUrl ? { swapProviderUrl: cfg.swapProviderUrl } : {}),
|
|
86
|
+
};
|
|
41
87
|
// @ts-ignore — external module, resolved at runtime in the consuming app.
|
|
42
88
|
const mod = await loadWdkModule('@arkade-os/wdk', () => import('@arkade-os/wdk'));
|
|
43
89
|
const WalletManagerArkade = mod.default ?? mod.WalletManagerArkade ?? mod;
|
|
44
|
-
|
|
90
|
+
// Resolve to seed bytes so nsec/hex-rooted wallets bypass the WDK base's
|
|
91
|
+
// BIP-39 string validation (which throws "The seed phrase is invalid").
|
|
92
|
+
this.manager = new WalletManagerArkade(resolveWalletSeed(cfg.mnemonic), arkadeConfig);
|
|
45
93
|
this.account = await this.manager.getAccount(cfg.accountIndex ?? 0);
|
|
94
|
+
// Lazy-load the SDK for Ramps (onboard/offboard). Off the static import graph.
|
|
95
|
+
// @ts-ignore — resolved at runtime; a transitive dep of the WDK Arkade module.
|
|
96
|
+
this.arkSdk = await loadWdkModule('@arkade-os/sdk', () => import('@arkade-os/sdk'));
|
|
46
97
|
this.connected = true;
|
|
47
98
|
}
|
|
48
|
-
async disconnect() {
|
|
49
|
-
try {
|
|
50
|
-
this.account?.dispose?.();
|
|
51
|
-
await this.manager?.dispose?.();
|
|
52
|
-
}
|
|
53
|
-
finally {
|
|
54
|
-
this.account = null;
|
|
55
|
-
this.manager = null;
|
|
56
|
-
this.connected = false;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
isConnected() {
|
|
60
|
-
return this.connected;
|
|
61
|
-
}
|
|
62
99
|
async getConnectionInfo() {
|
|
63
|
-
|
|
100
|
+
this.assertConnected();
|
|
101
|
+
return {
|
|
102
|
+
protocol: 'ARKADE',
|
|
103
|
+
connected: this.connected,
|
|
104
|
+
network: this.network,
|
|
105
|
+
syncStatus: { synced: true, progress: 100 },
|
|
106
|
+
};
|
|
64
107
|
}
|
|
65
108
|
// --- Address / receive --------------------------------------------------
|
|
66
109
|
/** Default Ark address. For the on-chain boarding address use `getBoardingAddress`. */
|
|
67
|
-
async getReceiveAddress(
|
|
110
|
+
async getReceiveAddress(assetId) {
|
|
68
111
|
this.assertConnected();
|
|
112
|
+
// 'onchain'/'boarding' → on-chain boarding address for funding.
|
|
113
|
+
if (assetId === 'onchain' || assetId === 'boarding') {
|
|
114
|
+
const address = await this.account.getBoardingAddress();
|
|
115
|
+
return { address, format: 'BTC_ADDRESS', asset: 'BTC' };
|
|
116
|
+
}
|
|
69
117
|
const address = await this.account.getAddress();
|
|
70
|
-
return { address, format: 'ARKADE_ADDRESS' };
|
|
118
|
+
return { address, format: 'ARKADE_ADDRESS', asset: assetId && assetId !== 'BTC' ? assetId : 'BTC' };
|
|
71
119
|
}
|
|
72
120
|
/** On-chain BTC boarding address for funding the Arkade account. */
|
|
73
121
|
async getBoardingAddress() {
|
|
@@ -78,57 +126,124 @@ export class ArkadeWdkAdapter {
|
|
|
78
126
|
// --- Balance ------------------------------------------------------------
|
|
79
127
|
async getBtcBalance() {
|
|
80
128
|
this.assertConnected();
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
|
|
129
|
+
const b = await this.getWalletBalanceSummary();
|
|
130
|
+
// preconfirmed VTXOs are spendable, so `confirmed` = settled + preconfirmed.
|
|
131
|
+
const confirmed = b.available;
|
|
132
|
+
return { confirmed, unconfirmed: Math.max(b.total - confirmed, 0), total: b.total };
|
|
84
133
|
}
|
|
85
134
|
async refreshBalances() {
|
|
86
135
|
// Arkade syncs against the indexer on read; no explicit sync call.
|
|
87
136
|
}
|
|
88
137
|
async listAssets() {
|
|
89
138
|
this.assertConnected();
|
|
90
|
-
const
|
|
139
|
+
const b = await this.getWalletBalanceSummary();
|
|
91
140
|
const btc = {
|
|
92
141
|
id: 'BTC',
|
|
93
|
-
name: 'Bitcoin',
|
|
142
|
+
name: 'Bitcoin (Arkade)',
|
|
94
143
|
ticker: 'BTC',
|
|
95
144
|
precision: 8,
|
|
96
145
|
protocol: 'ARKADE',
|
|
97
146
|
layer: 'BTC_ARKADE',
|
|
98
|
-
balance: {
|
|
99
|
-
|
|
147
|
+
balance: {
|
|
148
|
+
total: b.total,
|
|
149
|
+
available: b.available,
|
|
150
|
+
pending: 0,
|
|
151
|
+
locked: 0,
|
|
152
|
+
totalDisplay: String(b.total),
|
|
153
|
+
availableDisplay: String(b.available),
|
|
154
|
+
},
|
|
155
|
+
capabilities: { canSend: true, canReceive: true, canSwap: false, supportsLightning: false, supportsOnchain: true },
|
|
156
|
+
metadata: { boarding: b.boardingTotal, settled: b.settled, preconfirmed: b.preconfirmed, recoverable: b.recoverable },
|
|
100
157
|
};
|
|
101
|
-
|
|
102
|
-
|
|
158
|
+
const out = [btc];
|
|
159
|
+
// Arkade tokens. The wallet's `getBalance()` includes `assets: { assetId, amount }[]`;
|
|
160
|
+
// resolve metadata via `assetManager.getAssetDetails(assetId).metadata`.
|
|
161
|
+
try {
|
|
162
|
+
const wallet = this.rawWallet;
|
|
163
|
+
const rawBalance = wallet?.getBalance ? await wallet.getBalance() : null;
|
|
164
|
+
const rawAssets = Array.isArray(rawBalance?.assets) ? rawBalance.assets : [];
|
|
165
|
+
for (const entry of rawAssets) {
|
|
166
|
+
const assetId = String(entry?.assetId ?? '');
|
|
167
|
+
const amount = Number(entry?.amount ?? 0);
|
|
168
|
+
if (!assetId || amount <= 0)
|
|
169
|
+
continue;
|
|
170
|
+
let meta = {};
|
|
171
|
+
try {
|
|
172
|
+
meta = (await wallet?.assetManager?.getAssetDetails?.(assetId))?.metadata ?? {};
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
/* metadata lookup is optional */
|
|
176
|
+
}
|
|
177
|
+
const decimals = Number(meta.decimals ?? 0) || 0;
|
|
178
|
+
const ticker = typeof meta.ticker === 'string' && meta.ticker.trim() ? meta.ticker : assetId.slice(0, 6);
|
|
179
|
+
const name = typeof meta.name === 'string' && meta.name.trim() ? meta.name : ticker;
|
|
180
|
+
out.push({
|
|
181
|
+
id: assetId,
|
|
182
|
+
name,
|
|
183
|
+
ticker,
|
|
184
|
+
precision: decimals,
|
|
185
|
+
protocol: 'ARKADE',
|
|
186
|
+
layer: 'ARKADE_ARKADE',
|
|
187
|
+
balance: { total: amount, available: amount, pending: 0, totalDisplay: String(amount), availableDisplay: String(amount) },
|
|
188
|
+
icon: typeof meta.icon === 'string' ? meta.icon : undefined,
|
|
189
|
+
capabilities: { canSend: true, canReceive: true, canSwap: false, supportsLightning: false, supportsOnchain: false },
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
/* token enumeration is best-effort — keep BTC even if unavailable */
|
|
195
|
+
}
|
|
196
|
+
return out;
|
|
103
197
|
}
|
|
104
198
|
async getAssetBalance(assetId) {
|
|
105
199
|
this.assertConnected();
|
|
200
|
+
if (assetId === 'BTC' || assetId.toLowerCase() === 'btc') {
|
|
201
|
+
const { balance } = await this.getAsset('BTC').then((a) => ({ balance: a.balance }));
|
|
202
|
+
return balance;
|
|
203
|
+
}
|
|
106
204
|
const bal = await this.account.getTokenBalance(assetId);
|
|
107
205
|
const n = Number(bal);
|
|
108
206
|
return { total: n, available: n, pending: 0, totalDisplay: String(n), availableDisplay: String(n) };
|
|
109
207
|
}
|
|
110
208
|
async getAsset(assetId) {
|
|
111
209
|
const assets = await this.listAssets();
|
|
112
|
-
const found = assets.find((a) => a.id === assetId);
|
|
210
|
+
const found = assets.find((a) => a.id === assetId || a.ticker === assetId);
|
|
113
211
|
if (!found)
|
|
114
212
|
throw new ProtocolError(`Unknown asset ${assetId}`, 'ARKADE', 'NO_ASSET');
|
|
115
213
|
return found;
|
|
116
214
|
}
|
|
117
215
|
// --- Invoices -----------------------------------------------------------
|
|
216
|
+
/** Arkade on-chain receive is an address, not a bolt11 invoice (mirrors the native adapter). */
|
|
118
217
|
async createInvoice(request) {
|
|
119
218
|
this.assertConnected();
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
219
|
+
const address = await this.account.getAddress();
|
|
220
|
+
return {
|
|
221
|
+
invoice: address,
|
|
222
|
+
paymentHash: '',
|
|
223
|
+
amount: request.amount,
|
|
224
|
+
expiresAt: Date.now() + (request.expirySeconds ?? 3600) * 1000,
|
|
225
|
+
description: request.description ?? 'Arkade receiving address',
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Boltz reverse-swap Lightning invoice that lands funds in this Arkade wallet as a
|
|
230
|
+
* VTXO. Requires amount > 0 (Boltz can't issue an amountless invoice). The embedded
|
|
231
|
+
* SwapManager claims the VHTLC automatically once the LN payment settles.
|
|
232
|
+
*/
|
|
233
|
+
async createArkadeLightningInvoice(request) {
|
|
234
|
+
this.assertConnected();
|
|
235
|
+
if (!request.amount || request.amount <= 0) {
|
|
236
|
+
throw new ProtocolError('Amount is required for Boltz Lightning invoices into Arkade', 'ARKADE', 'INVALID_AMOUNT');
|
|
130
237
|
}
|
|
131
|
-
|
|
238
|
+
// createLightningInvoice(amountSats, description?) — POSITIONAL args; via Boltz reverse swap.
|
|
239
|
+
const r = await this.account.createLightningInvoice(request.amount, request.description);
|
|
240
|
+
return {
|
|
241
|
+
invoice: r?.invoice ?? '',
|
|
242
|
+
paymentHash: r?.paymentHash ?? '',
|
|
243
|
+
amount: request.amount,
|
|
244
|
+
expiresAt: Date.now() + (request.expirySeconds ?? 3600) * 1000,
|
|
245
|
+
description: request.description ?? 'Boltz reverse swap into Arkade',
|
|
246
|
+
};
|
|
132
247
|
}
|
|
133
248
|
async decodeInvoice(invoice) {
|
|
134
249
|
const dest = invoice.trim();
|
|
@@ -142,30 +257,68 @@ export class ArkadeWdkAdapter {
|
|
|
142
257
|
async sendPayment(request) {
|
|
143
258
|
this.assertConnected();
|
|
144
259
|
const dest = request.invoice.trim();
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
260
|
+
// Lightning send via Boltz submarine swap (Arkade → Lightning), if the account exposes the swap client.
|
|
261
|
+
if (isLightningInvoice(dest)) {
|
|
262
|
+
const swaps = this.account?.arkadeSwaps;
|
|
263
|
+
if (!swaps?.sendLightningPayment) {
|
|
264
|
+
throw new ProtocolError('Arkade Lightning send not available in this module version', 'ARKADE', 'NOT_SUPPORTED');
|
|
265
|
+
}
|
|
266
|
+
const invoiceBody = dest.toLowerCase().startsWith('lightning:') ? dest.slice('lightning:'.length) : dest;
|
|
267
|
+
try {
|
|
268
|
+
const result = await swaps.sendLightningPayment({ invoice: invoiceBody });
|
|
269
|
+
return {
|
|
270
|
+
paymentHash: result?.preimage ?? result?.txid ?? '',
|
|
271
|
+
amount: Number(result?.amount ?? request.amount ?? 0),
|
|
272
|
+
fee: 0,
|
|
273
|
+
status: 'pending',
|
|
274
|
+
timestamp: Date.now(),
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
catch (error) {
|
|
278
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
279
|
+
if (/less than minimal/i.test(msg)) {
|
|
280
|
+
throw new ProtocolError("Arkade can't pay amountless Lightning invoices. Ask the recipient for an invoice with an amount.", 'ARKADE', 'INVALID_AMOUNT');
|
|
281
|
+
}
|
|
282
|
+
throw new ProtocolError(`Failed to send Lightning payment via Boltz: ${msg}`, 'ARKADE', 'SEND_PAYMENT_ERROR');
|
|
283
|
+
}
|
|
155
284
|
}
|
|
156
285
|
if (request.amount == null) {
|
|
157
286
|
throw new ProtocolError('Arkade send requires an explicit amount', 'ARKADE', 'NO_AMOUNT');
|
|
158
287
|
}
|
|
159
|
-
//
|
|
288
|
+
// Bitcoin destination → on-chain offboard. Route through sendBtcOnchain so the
|
|
289
|
+
// missing-tx-id guard and async `pending` status apply regardless of entry point.
|
|
290
|
+
if (isBitcoinAddress(dest)) {
|
|
291
|
+
return this.sendBtcOnchain({ address: dest, amount: request.amount });
|
|
292
|
+
}
|
|
293
|
+
// Off-chain Ark transfer to an Ark address (settles immediately, zero-conf UX).
|
|
160
294
|
const r = await this.account.sendTransaction({ to: dest, value: request.amount });
|
|
295
|
+
const hash = r?.hash ?? '';
|
|
161
296
|
return {
|
|
162
|
-
paymentHash:
|
|
297
|
+
paymentHash: hash,
|
|
298
|
+
txid: hash,
|
|
163
299
|
amount: request.amount,
|
|
164
300
|
fee: Number(r?.fee ?? 0),
|
|
165
301
|
status: 'confirmed',
|
|
166
302
|
timestamp: Date.now(),
|
|
167
303
|
};
|
|
168
304
|
}
|
|
305
|
+
/** Arkade BTC send/offboard. Bitcoin destinations settle on-chain asynchronously. */
|
|
306
|
+
async sendBtcOnchain(params) {
|
|
307
|
+
this.assertConnected();
|
|
308
|
+
const r = await this.account.sendTransaction({ to: params.address.trim(), value: params.amount });
|
|
309
|
+
const hash = r?.hash ?? '';
|
|
310
|
+
if (!hash) {
|
|
311
|
+
throw new ProtocolError('Arkade offboard did not return a transaction ID', 'ARKADE', 'SEND_ERROR');
|
|
312
|
+
}
|
|
313
|
+
return {
|
|
314
|
+
txid: hash,
|
|
315
|
+
paymentHash: hash,
|
|
316
|
+
amount: params.amount,
|
|
317
|
+
fee: Number(r?.fee ?? 0),
|
|
318
|
+
status: 'pending',
|
|
319
|
+
timestamp: Date.now(),
|
|
320
|
+
};
|
|
321
|
+
}
|
|
169
322
|
/** Arkade asset transfer (token). */
|
|
170
323
|
async sendAsset(params) {
|
|
171
324
|
this.assertConnected();
|
|
@@ -181,16 +334,27 @@ export class ArkadeWdkAdapter {
|
|
|
181
334
|
async listTransactions(_filter) {
|
|
182
335
|
this.assertConnected();
|
|
183
336
|
const history = await this.account.getTransactionHistory();
|
|
184
|
-
return (history ?? []).map((t) =>
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
337
|
+
return (history ?? []).map((t) => {
|
|
338
|
+
// @arkade-os/sdk ArkTransaction shape:
|
|
339
|
+
// { key:{ arkTxid, commitmentTxid, boardingTxid }, type:'SENT'|'RECEIVED',
|
|
340
|
+
// amount(sats, net), settled(boolean), createdAt(ms since epoch) }.
|
|
341
|
+
// The txid lives on `key` (unused fields are empty strings, so pick the first
|
|
342
|
+
// NON-EMPTY one — `??` would stop at `''`). Direction is the explicit `type`.
|
|
343
|
+
const key = t?.key ?? {};
|
|
344
|
+
const id = t?.txid || key.arkTxid || key.commitmentTxid || key.boardingTxid || '';
|
|
345
|
+
const isSend = String(t?.type ?? '').toUpperCase() === 'SENT';
|
|
346
|
+
const createdAt = Number(t?.createdAt ?? 0);
|
|
347
|
+
return {
|
|
348
|
+
id,
|
|
349
|
+
type: isSend ? 'send' : 'receive',
|
|
350
|
+
status: (t?.settled || (!isSend && !key.boardingTxid) ? 'confirmed' : 'pending'),
|
|
351
|
+
timestamp: Number.isFinite(createdAt) && createdAt > 0 ? createdAt : 0,
|
|
352
|
+
amount: Math.abs(Number(t?.amount ?? 0)),
|
|
353
|
+
amountDisplay: '',
|
|
354
|
+
asset: undefined,
|
|
355
|
+
protocolData: t,
|
|
356
|
+
};
|
|
357
|
+
});
|
|
194
358
|
}
|
|
195
359
|
async getTransaction(txId) {
|
|
196
360
|
const all = await this.listTransactions();
|
|
@@ -199,35 +363,147 @@ export class ArkadeWdkAdapter {
|
|
|
199
363
|
throw new ProtocolError(`Unknown tx ${txId}`, 'ARKADE', 'NO_TX');
|
|
200
364
|
return found;
|
|
201
365
|
}
|
|
366
|
+
// --- Node & balance -----------------------------------------------------
|
|
202
367
|
async getNodeInfo() {
|
|
203
|
-
|
|
368
|
+
this.assertConnected();
|
|
369
|
+
const b = await this.getWalletBalanceSummary();
|
|
370
|
+
const spendableSats = b.available;
|
|
371
|
+
return {
|
|
372
|
+
channelsBalanceMsat: spendableSats * 1000,
|
|
373
|
+
maxPayableMsat: spendableSats * 1000,
|
|
374
|
+
onchainBalanceMsat: b.boardingConfirmed * 1000,
|
|
375
|
+
pendingOnchainBalanceMsat: b.boardingUnconfirmed * 1000,
|
|
376
|
+
maxReceivableMsat: 0,
|
|
377
|
+
inboundLiquidityMsats: 0,
|
|
378
|
+
connectedPeers: [],
|
|
379
|
+
utxos: 0,
|
|
380
|
+
};
|
|
204
381
|
}
|
|
205
382
|
async listChannels() {
|
|
206
383
|
return []; // Arkade has no LN channels (LN via Boltz swaps)
|
|
207
384
|
}
|
|
208
385
|
async listPayments() {
|
|
209
|
-
|
|
386
|
+
const txs = await this.listTransactions();
|
|
387
|
+
return { payments: txs };
|
|
210
388
|
}
|
|
211
389
|
async listTransfers() {
|
|
212
|
-
return
|
|
390
|
+
return { transfers: [] };
|
|
213
391
|
}
|
|
214
|
-
|
|
215
|
-
|
|
392
|
+
// --- VTXO lifecycle -----------------------------------------------------
|
|
393
|
+
/** All VTXOs, sorted by batchExpiry ascending (expiry-first) so soon-to-expire coins surface first. */
|
|
394
|
+
async getVtxos() {
|
|
395
|
+
this.assertConnected();
|
|
396
|
+
const vtxos = await this.rawWallet.getVtxos();
|
|
397
|
+
return normalizeVtxos(sortVtxosByExpiry(vtxos)).map((vtxo) => ({
|
|
398
|
+
txid: vtxo.txid,
|
|
399
|
+
vout: vtxo.vout,
|
|
400
|
+
value: vtxo.value,
|
|
401
|
+
state: vtxo.state,
|
|
402
|
+
batchTxid: vtxo.batchTxid,
|
|
403
|
+
batchExpiry: vtxo.batchExpiry,
|
|
404
|
+
createdAt: vtxo.createdAt,
|
|
405
|
+
assets: vtxo.assets,
|
|
406
|
+
}));
|
|
216
407
|
}
|
|
217
|
-
|
|
218
|
-
async executeProtocolOperation(operation, params) {
|
|
408
|
+
async getBoardingUtxos() {
|
|
219
409
|
this.assertConnected();
|
|
220
|
-
const
|
|
221
|
-
|
|
222
|
-
|
|
410
|
+
const utxos = await this.rawWallet.getBoardingUtxos();
|
|
411
|
+
return (utxos ?? []).map((u) => ({
|
|
412
|
+
txid: u.txid,
|
|
413
|
+
vout: u.vout,
|
|
414
|
+
value: u.value,
|
|
415
|
+
confirmed: u.status?.confirmed ?? false,
|
|
416
|
+
}));
|
|
417
|
+
}
|
|
418
|
+
/** Onboard — settle confirmed boarding UTXOs into VTXOs via a Commitment Transaction. */
|
|
419
|
+
async onboard() {
|
|
420
|
+
this.assertConnected();
|
|
421
|
+
const wallet = this.rawWallet;
|
|
422
|
+
const info = await wallet.arkProvider.getInfo();
|
|
423
|
+
const commitmentTxid = await new this.arkSdk.Ramps(wallet).onboard(info.fees);
|
|
424
|
+
return { txid: commitmentTxid };
|
|
425
|
+
}
|
|
426
|
+
/** Offboard — collaborative exit: convert VTXOs back to an on-chain Bitcoin UTXO. */
|
|
427
|
+
async offboard(address, amount) {
|
|
428
|
+
this.assertConnected();
|
|
429
|
+
if (!address)
|
|
430
|
+
throw new ProtocolError('Destination address required for offboard', 'ARKADE', 'INVALID_ADDRESS');
|
|
431
|
+
if (amount !== undefined && (!Number.isInteger(amount) || amount <= 0)) {
|
|
432
|
+
throw new ProtocolError(`Invalid offboard amount: ${amount}`, 'ARKADE', 'INVALID_AMOUNT');
|
|
223
433
|
}
|
|
224
|
-
|
|
434
|
+
const wallet = this.rawWallet;
|
|
435
|
+
const info = await wallet.arkProvider.getInfo();
|
|
436
|
+
const exitTxid = await new this.arkSdk.Ramps(wallet).offboard(address, info.fees, amount !== undefined ? BigInt(amount) : undefined);
|
|
437
|
+
return { txid: exitTxid };
|
|
225
438
|
}
|
|
226
|
-
// ---
|
|
227
|
-
|
|
228
|
-
if (!this.
|
|
229
|
-
throw new ProtocolError('
|
|
439
|
+
// --- Message signing ----------------------------------------------------
|
|
440
|
+
async signMessage(message) {
|
|
441
|
+
if (!this.mnemonic)
|
|
442
|
+
throw new ProtocolError('Wallet mnemonic not available', 'ARKADE', 'NOT_CONNECTED');
|
|
443
|
+
const { mnemonicToSeedSync } = await import('@scure/bip39');
|
|
444
|
+
const { HDKey } = await import('@scure/bip32');
|
|
445
|
+
const seed = mnemonicToSeedSync(this.mnemonic);
|
|
446
|
+
const node = HDKey.fromMasterSeed(seed).derive("m/138'/1");
|
|
447
|
+
if (!node.privateKey) {
|
|
448
|
+
throw new ProtocolError('Failed to derive message-signing key', 'ARKADE', 'KEY_DERIVATION_ERROR');
|
|
230
449
|
}
|
|
450
|
+
return signLnMessage(message, node.privateKey);
|
|
451
|
+
}
|
|
452
|
+
async verifyMessage(message, signature) {
|
|
453
|
+
return verifyLnMessage(message, signature);
|
|
454
|
+
}
|
|
455
|
+
/** Escape hatch for Arkade-specific ops (waitForLightningPayment, getLightningLimits, …) — allowlisted. */
|
|
456
|
+
async executeProtocolOperation(operation, params) {
|
|
457
|
+
return this.runAllowlistedOp(ARKADE_ALLOWED_OPS, operation, params);
|
|
458
|
+
}
|
|
459
|
+
// --- Private helpers ----------------------------------------------------
|
|
460
|
+
/**
|
|
461
|
+
* Rich balance summary derived from VTXOs + boarding UTXOs (ported from the native
|
|
462
|
+
* adapter). The SDK's top-level `balance.total` omits the boarding portion, so we
|
|
463
|
+
* recompute it: available = settled + preconfirmed; total includes boarding + recoverable.
|
|
464
|
+
*/
|
|
465
|
+
async getWalletBalanceSummary() {
|
|
466
|
+
const wallet = this.rawWallet;
|
|
467
|
+
const balance = await wallet.getBalance();
|
|
468
|
+
const normalized = {
|
|
469
|
+
boardingConfirmed: toNumber(balance?.boarding?.confirmed),
|
|
470
|
+
boardingUnconfirmed: toNumber(balance?.boarding?.unconfirmed),
|
|
471
|
+
boardingTotal: toNumber(balance?.boarding?.total),
|
|
472
|
+
settled: toNumber(balance?.settled),
|
|
473
|
+
preconfirmed: toNumber(balance?.preconfirmed),
|
|
474
|
+
available: toNumber(balance?.available),
|
|
475
|
+
recoverable: toNumber(balance?.recoverable),
|
|
476
|
+
total: toNumber(balance?.total),
|
|
477
|
+
};
|
|
478
|
+
let normalizedVtxos = [];
|
|
479
|
+
try {
|
|
480
|
+
normalizedVtxos = normalizeVtxos(await wallet.getVtxos());
|
|
481
|
+
}
|
|
482
|
+
catch {
|
|
483
|
+
/* fall back to wallet.getBalance() */
|
|
484
|
+
}
|
|
485
|
+
if (normalizedVtxos.length === 0) {
|
|
486
|
+
const available = normalized.settled + normalized.preconfirmed;
|
|
487
|
+
return { ...normalized, available, total: normalized.boardingTotal + available + normalized.recoverable };
|
|
488
|
+
}
|
|
489
|
+
const vtxoSummary = normalizedVtxos.reduce((summary, vtxo) => {
|
|
490
|
+
if (vtxo.state === 'swept')
|
|
491
|
+
summary.recoverable += vtxo.value;
|
|
492
|
+
else if (vtxo.state === 'preconfirmed')
|
|
493
|
+
summary.preconfirmed += vtxo.value;
|
|
494
|
+
else
|
|
495
|
+
summary.settled += vtxo.value;
|
|
496
|
+
return summary;
|
|
497
|
+
}, { settled: 0, preconfirmed: 0, recoverable: 0 });
|
|
498
|
+
const available = vtxoSummary.settled + vtxoSummary.preconfirmed;
|
|
499
|
+
return {
|
|
500
|
+
...normalized,
|
|
501
|
+
settled: vtxoSummary.settled,
|
|
502
|
+
preconfirmed: vtxoSummary.preconfirmed,
|
|
503
|
+
available,
|
|
504
|
+
recoverable: vtxoSummary.recoverable,
|
|
505
|
+
total: normalized.boardingTotal + available + vtxoSummary.recoverable,
|
|
506
|
+
};
|
|
231
507
|
}
|
|
232
508
|
}
|
|
233
509
|
//# sourceMappingURL=ArkadeWdkAdapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkadeWdkAdapter.js","sourceRoot":"","sources":["../../../src/adapters/wdk/ArkadeWdkAdapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ArkadeWdkAdapter.js","sourceRoot":"","sources":["../../../src/adapters/wdk/ArkadeWdkAdapter.ts"],"names":[],"mappings":"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"}
|