@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.
Files changed (125) hide show
  1. package/dist/adapters/ArkadeAdapter.d.ts +48 -0
  2. package/dist/adapters/ArkadeAdapter.d.ts.map +1 -0
  3. package/dist/adapters/ArkadeAdapter.js +314 -0
  4. package/dist/adapters/ArkadeAdapter.js.map +1 -0
  5. package/dist/adapters/IProtocolAdapter.d.ts +71 -0
  6. package/dist/adapters/IProtocolAdapter.d.ts.map +1 -0
  7. package/dist/adapters/IProtocolAdapter.js +29 -0
  8. package/dist/adapters/IProtocolAdapter.js.map +1 -0
  9. package/dist/adapters/RgbAdapter.d.ts +70 -0
  10. package/dist/adapters/RgbAdapter.d.ts.map +1 -0
  11. package/dist/adapters/RgbAdapter.js +818 -0
  12. package/dist/adapters/RgbAdapter.js.map +1 -0
  13. package/dist/adapters/SparkAdapter.d.ts +47 -0
  14. package/dist/adapters/SparkAdapter.d.ts.map +1 -0
  15. package/dist/adapters/SparkAdapter.js +390 -0
  16. package/dist/adapters/SparkAdapter.js.map +1 -0
  17. package/dist/adapters/wdk/ArkadeWdkAdapter.d.ts +78 -0
  18. package/dist/adapters/wdk/ArkadeWdkAdapter.d.ts.map +1 -0
  19. package/dist/adapters/wdk/ArkadeWdkAdapter.js +226 -0
  20. package/dist/adapters/wdk/ArkadeWdkAdapter.js.map +1 -0
  21. package/dist/adapters/wdk/LiquidWdkAdapter.d.ts +88 -0
  22. package/dist/adapters/wdk/LiquidWdkAdapter.d.ts.map +1 -0
  23. package/dist/adapters/wdk/LiquidWdkAdapter.js +272 -0
  24. package/dist/adapters/wdk/LiquidWdkAdapter.js.map +1 -0
  25. package/dist/adapters/wdk/RlnWdkAdapter.d.ts +85 -0
  26. package/dist/adapters/wdk/RlnWdkAdapter.d.ts.map +1 -0
  27. package/dist/adapters/wdk/RlnWdkAdapter.js +308 -0
  28. package/dist/adapters/wdk/RlnWdkAdapter.js.map +1 -0
  29. package/dist/adapters/wdk/SparkWdkAdapter.d.ts +79 -0
  30. package/dist/adapters/wdk/SparkWdkAdapter.d.ts.map +1 -0
  31. package/dist/adapters/wdk/SparkWdkAdapter.js +317 -0
  32. package/dist/adapters/wdk/SparkWdkAdapter.js.map +1 -0
  33. package/dist/adapters/wdk/moduleLoader.d.ts +22 -0
  34. package/dist/adapters/wdk/moduleLoader.d.ts.map +1 -0
  35. package/dist/adapters/wdk/moduleLoader.js +31 -0
  36. package/dist/adapters/wdk/moduleLoader.js.map +1 -0
  37. package/dist/capabilities/index.d.ts +46 -0
  38. package/dist/capabilities/index.d.ts.map +1 -0
  39. package/dist/capabilities/index.js +102 -0
  40. package/dist/capabilities/index.js.map +1 -0
  41. package/dist/disclosure/index.d.ts +51 -0
  42. package/dist/disclosure/index.d.ts.map +1 -0
  43. package/dist/disclosure/index.js +64 -0
  44. package/dist/disclosure/index.js.map +1 -0
  45. package/dist/index.d.ts +34 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +43 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/lib/arkade-client-manager.d.ts +47 -0
  50. package/dist/lib/arkade-client-manager.d.ts.map +1 -0
  51. package/dist/lib/arkade-client-manager.js +121 -0
  52. package/dist/lib/arkade-client-manager.js.map +1 -0
  53. package/dist/lib/bolt11.d.ts +18 -0
  54. package/dist/lib/bolt11.d.ts.map +1 -0
  55. package/dist/lib/bolt11.js +31 -0
  56. package/dist/lib/bolt11.js.map +1 -0
  57. package/dist/lib/flashnet-client-manager.d.ts +29 -0
  58. package/dist/lib/flashnet-client-manager.d.ts.map +1 -0
  59. package/dist/lib/flashnet-client-manager.js +116 -0
  60. package/dist/lib/flashnet-client-manager.js.map +1 -0
  61. package/dist/lib/kaleido-client-manager.d.ts +26 -0
  62. package/dist/lib/kaleido-client-manager.d.ts.map +1 -0
  63. package/dist/lib/kaleido-client-manager.js +55 -0
  64. package/dist/lib/kaleido-client-manager.js.map +1 -0
  65. package/dist/lib/spark-client-manager.d.ts +41 -0
  66. package/dist/lib/spark-client-manager.d.ts.map +1 -0
  67. package/dist/lib/spark-client-manager.js +101 -0
  68. package/dist/lib/spark-client-manager.js.map +1 -0
  69. package/dist/manager/ProtocolManager.d.ts +57 -0
  70. package/dist/manager/ProtocolManager.d.ts.map +1 -0
  71. package/dist/manager/ProtocolManager.js +228 -0
  72. package/dist/manager/ProtocolManager.js.map +1 -0
  73. package/dist/ports/index.d.ts +29 -0
  74. package/dist/ports/index.d.ts.map +1 -0
  75. package/dist/ports/index.js +9 -0
  76. package/dist/ports/index.js.map +1 -0
  77. package/dist/receive/unifiedReceive.d.ts +54 -0
  78. package/dist/receive/unifiedReceive.d.ts.map +1 -0
  79. package/dist/receive/unifiedReceive.js +102 -0
  80. package/dist/receive/unifiedReceive.js.map +1 -0
  81. package/dist/registry/createWdkRegistry.d.ts +20 -0
  82. package/dist/registry/createWdkRegistry.d.ts.map +1 -0
  83. package/dist/registry/createWdkRegistry.js +32 -0
  84. package/dist/registry/createWdkRegistry.js.map +1 -0
  85. package/dist/router/destination.d.ts +28 -0
  86. package/dist/router/destination.d.ts.map +1 -0
  87. package/dist/router/destination.js +72 -0
  88. package/dist/router/destination.js.map +1 -0
  89. package/dist/router/index.d.ts +55 -0
  90. package/dist/router/index.d.ts.map +1 -0
  91. package/dist/router/index.js +67 -0
  92. package/dist/router/index.js.map +1 -0
  93. package/dist/swap/KaleidoswapSwap.d.ts +44 -0
  94. package/dist/swap/KaleidoswapSwap.d.ts.map +1 -0
  95. package/dist/swap/KaleidoswapSwap.js +123 -0
  96. package/dist/swap/KaleidoswapSwap.js.map +1 -0
  97. package/dist/types/arkade.d.ts +40 -0
  98. package/dist/types/arkade.d.ts.map +1 -0
  99. package/dist/types/arkade.js +6 -0
  100. package/dist/types/arkade.js.map +1 -0
  101. package/dist/types/base.d.ts +197 -0
  102. package/dist/types/base.d.ts.map +1 -0
  103. package/dist/types/base.js +27 -0
  104. package/dist/types/base.js.map +1 -0
  105. package/dist/types/cross-l2.d.ts +158 -0
  106. package/dist/types/cross-l2.d.ts.map +1 -0
  107. package/dist/types/cross-l2.js +16 -0
  108. package/dist/types/cross-l2.js.map +1 -0
  109. package/dist/types/flashnet.d.ts +31 -0
  110. package/dist/types/flashnet.d.ts.map +1 -0
  111. package/dist/types/flashnet.js +23 -0
  112. package/dist/types/flashnet.js.map +1 -0
  113. package/dist/types/rgb.d.ts +91 -0
  114. package/dist/types/rgb.d.ts.map +1 -0
  115. package/dist/types/rgb.js +6 -0
  116. package/dist/types/rgb.js.map +1 -0
  117. package/dist/types/spark.d.ts +59 -0
  118. package/dist/types/spark.d.ts.map +1 -0
  119. package/dist/types/spark.js +6 -0
  120. package/dist/types/spark.js.map +1 -0
  121. package/dist/utils.d.ts +10 -0
  122. package/dist/utils.d.ts.map +1 -0
  123. package/dist/utils.js +23 -0
  124. package/dist/utils.js.map +1 -0
  125. package/package.json +35 -0
@@ -0,0 +1,226 @@
1
+ /**
2
+ * ArkadeWdkAdapter
3
+ * ----------------
4
+ * Wraps the Arkade WDK module (@arkade-os/wdk, over @arkade-os/sdk + boltz-swap)
5
+ * onto the stable `IProtocolAdapter` contract. Arkade is a VTXO-based Bitcoin L2:
6
+ * off-chain Ark transfers, an on-chain "boarding" address for funding, and Lightning
7
+ * receive via Boltz reverse submarine swaps.
8
+ *
9
+ * Discipline: no WDK/@arkade-os types cross the contract — domain types only;
10
+ * module objects are read as `any`.
11
+ *
12
+ * Arkade WDK surface (from JSDoc in the cloned source, v0.1.3):
13
+ * read-only: getAddress(): string (Ark address, inherited), getBoardingAddress(): string,
14
+ * getBalance(): bigint, getTokenBalance(id): bigint, getTransactionHistory()
15
+ * account: sendTransaction({to,value}), transfer({token,recipient,amount}),
16
+ * createLightningInvoice(amountSats, description?): {invoice,paymentHash},
17
+ * 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.
20
+ */
21
+ import { ProtocolError, } from '../../types/base';
22
+ import { getCapabilities } from '../../capabilities';
23
+ import { loadWdkModule } from './moduleLoader';
24
+ import { decodeBolt11, isBolt11 } from '../../lib/bolt11';
25
+ export class ArkadeWdkAdapter {
26
+ constructor() {
27
+ this.protocolName = 'ARKADE';
28
+ this.supportedLayers = getCapabilities('ARKADE').layers;
29
+ this.version = '0.1.0-wdk';
30
+ this.manager = null;
31
+ this.account = null;
32
+ this.connected = false;
33
+ this.network = 'mainnet';
34
+ }
35
+ // --- Connection ---------------------------------------------------------
36
+ async connect(config) {
37
+ const cfg = config;
38
+ if (!cfg.mnemonic)
39
+ throw new ProtocolError('ArkadeWdkAdapter requires a mnemonic', 'ARKADE', 'CONFIG');
40
+ this.network = cfg.network ?? 'mainnet';
41
+ // @ts-ignore — external module, resolved at runtime in the consuming app.
42
+ const mod = await loadWdkModule('@arkade-os/wdk', () => import('@arkade-os/wdk'));
43
+ const WalletManagerArkade = mod.default ?? mod.WalletManagerArkade ?? mod;
44
+ this.manager = new WalletManagerArkade(cfg.mnemonic, cfg.arkadeConfig ?? {});
45
+ this.account = await this.manager.getAccount(cfg.accountIndex ?? 0);
46
+ this.connected = true;
47
+ }
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
+ async getConnectionInfo() {
63
+ return { protocol: 'ARKADE', connected: this.connected, network: this.network };
64
+ }
65
+ // --- Address / receive --------------------------------------------------
66
+ /** Default Ark address. For the on-chain boarding address use `getBoardingAddress`. */
67
+ async getReceiveAddress(_assetId) {
68
+ this.assertConnected();
69
+ const address = await this.account.getAddress();
70
+ return { address, format: 'ARKADE_ADDRESS' };
71
+ }
72
+ /** On-chain BTC boarding address for funding the Arkade account. */
73
+ async getBoardingAddress() {
74
+ this.assertConnected();
75
+ const address = await this.account.getBoardingAddress();
76
+ return { address, format: 'BTC_ADDRESS' };
77
+ }
78
+ // --- Balance ------------------------------------------------------------
79
+ async getBtcBalance() {
80
+ this.assertConnected();
81
+ const bal = await this.account.getBalance();
82
+ const total = Number(bal);
83
+ return { confirmed: total, unconfirmed: 0, total };
84
+ }
85
+ async refreshBalances() {
86
+ // Arkade syncs against the indexer on read; no explicit sync call.
87
+ }
88
+ async listAssets() {
89
+ this.assertConnected();
90
+ const { total } = await this.getBtcBalance();
91
+ const btc = {
92
+ id: 'BTC',
93
+ name: 'Bitcoin',
94
+ ticker: 'BTC',
95
+ precision: 8,
96
+ protocol: 'ARKADE',
97
+ layer: 'BTC_ARKADE',
98
+ balance: { total, available: total, pending: 0, totalDisplay: String(total), availableDisplay: String(total) },
99
+ capabilities: { canSend: true, canReceive: true, canSwap: false, supportsLightning: true, supportsOnchain: true },
100
+ };
101
+ // Arkade exposes getTokenBalance(id) but no token enumeration → BTC only here.
102
+ return [btc];
103
+ }
104
+ async getAssetBalance(assetId) {
105
+ this.assertConnected();
106
+ const bal = await this.account.getTokenBalance(assetId);
107
+ const n = Number(bal);
108
+ return { total: n, available: n, pending: 0, totalDisplay: String(n), availableDisplay: String(n) };
109
+ }
110
+ async getAsset(assetId) {
111
+ const assets = await this.listAssets();
112
+ const found = assets.find((a) => a.id === assetId);
113
+ if (!found)
114
+ throw new ProtocolError(`Unknown asset ${assetId}`, 'ARKADE', 'NO_ASSET');
115
+ return found;
116
+ }
117
+ // --- Invoices -----------------------------------------------------------
118
+ async createInvoice(request) {
119
+ this.assertConnected();
120
+ if (request.layer === 'BTC_LN' || request.amount != null) {
121
+ // createLightningInvoice(amountSats, description?) — POSITIONAL args; via Boltz reverse swap.
122
+ const r = await this.account.createLightningInvoice(request.amount ?? 0, request.description);
123
+ return {
124
+ invoice: r?.invoice ?? '',
125
+ paymentHash: r?.paymentHash ?? '',
126
+ amount: request.amount,
127
+ expiresAt: Date.now() + (request.expirySeconds ?? 3600) * 1000,
128
+ description: request.description,
129
+ };
130
+ }
131
+ throw new ProtocolError('Arkade on-chain receive uses getReceiveAddress/getBoardingAddress', 'ARKADE', 'NOT_SUPPORTED');
132
+ }
133
+ async decodeInvoice(invoice) {
134
+ const dest = invoice.trim();
135
+ if (isBolt11(dest)) {
136
+ const { amountSat } = decodeBolt11(dest);
137
+ return { paymentHash: '', amount: amountSat, expiresAt: 0, destination: dest };
138
+ }
139
+ return { paymentHash: '', expiresAt: 0, destination: dest };
140
+ }
141
+ // --- Send ---------------------------------------------------------------
142
+ async sendPayment(request) {
143
+ this.assertConnected();
144
+ const dest = request.invoice.trim();
145
+ if (/^ln(bc|tb|bcrt)/i.test(dest)) {
146
+ // Lightning send via Boltz submarine swap is not exposed as a simple method in v0.1.3.
147
+ throw new ProtocolError('Arkade Lightning send not available in this module version', 'ARKADE', 'NOT_SUPPORTED');
148
+ }
149
+ if (request.amount == null) {
150
+ throw new ProtocolError('Arkade send requires an explicit amount', 'ARKADE', 'NO_AMOUNT');
151
+ }
152
+ // Off-chain Ark transfer to an Ark address.
153
+ const r = await this.account.sendTransaction({ to: dest, value: request.amount });
154
+ return {
155
+ paymentHash: r?.hash ?? '',
156
+ amount: request.amount,
157
+ fee: Number(r?.fee ?? 0),
158
+ status: 'confirmed',
159
+ timestamp: Date.now(),
160
+ };
161
+ }
162
+ /** Arkade asset transfer (token). */
163
+ async sendAsset(params) {
164
+ this.assertConnected();
165
+ return this.account.transfer({ token: params.token, recipient: params.recipient, amount: params.amount });
166
+ }
167
+ async getPaymentStatus(paymentHash) {
168
+ this.assertConnected();
169
+ const r = await this.account.getTransactionReceipt?.(paymentHash).catch(() => null);
170
+ const status = (r?.confirmedAt || r?.settled ? 'confirmed' : 'pending');
171
+ return { paymentHash, status };
172
+ }
173
+ // --- Transactions -------------------------------------------------------
174
+ async listTransactions(_filter) {
175
+ this.assertConnected();
176
+ const history = await this.account.getTransactionHistory();
177
+ return (history ?? []).map((t) => ({
178
+ id: t.txid ?? t.key?.boardingTxid ?? t.key?.roundTxid ?? '',
179
+ type: (Number(t.amount ?? 0) < 0 ? 'send' : 'receive'),
180
+ status: (t.confirmedAt ? 'confirmed' : 'pending'),
181
+ timestamp: Number(t.createdAt ?? t.confirmedAt ?? 0) * 1000,
182
+ amount: Math.abs(Number(t.amount ?? 0)),
183
+ amountDisplay: '',
184
+ asset: undefined,
185
+ protocolData: t,
186
+ }));
187
+ }
188
+ async getTransaction(txId) {
189
+ const all = await this.listTransactions();
190
+ const found = all.find((t) => t.id === txId);
191
+ if (!found)
192
+ throw new ProtocolError(`Unknown tx ${txId}`, 'ARKADE', 'NO_TX');
193
+ return found;
194
+ }
195
+ async getNodeInfo() {
196
+ return { protocol: 'ARKADE', network: this.network };
197
+ }
198
+ async listChannels() {
199
+ return []; // Arkade has no LN channels (LN via Boltz swaps)
200
+ }
201
+ async listPayments() {
202
+ return this.listTransactions();
203
+ }
204
+ async listTransfers() {
205
+ return this.account.getTransactionHistory();
206
+ }
207
+ supportsSwaps() {
208
+ return getCapabilities('ARKADE').supportsSwaps;
209
+ }
210
+ /** Escape hatch for Arkade-specific ops (waitForLightningPayment, getLightningLimits, …). */
211
+ async executeProtocolOperation(operation, params) {
212
+ this.assertConnected();
213
+ const fn = this.account[operation];
214
+ if (typeof fn !== 'function') {
215
+ throw new ProtocolError(`Unknown Arkade operation '${operation}'`, 'ARKADE', 'NO_OP');
216
+ }
217
+ return fn.call(this.account, params);
218
+ }
219
+ // --- helpers ------------------------------------------------------------
220
+ assertConnected() {
221
+ if (!this.connected || !this.account) {
222
+ throw new ProtocolError('ArkadeWdkAdapter not connected', 'ARKADE', 'NOT_CONNECTED');
223
+ }
224
+ }
225
+ }
226
+ //# sourceMappingURL=ArkadeWdkAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArkadeWdkAdapter.js","sourceRoot":"","sources":["../../../src/adapters/wdk/ArkadeWdkAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * LiquidWdkAdapter
3
+ * ----------------
4
+ * Wraps the WDK Liquid module (@kaleidorg/wdk-wallet-liquid, over lwk / Liquid Wallet
5
+ * Kit) onto the stable `IProtocolAdapter` contract. This is the "USD" path: USDt on
6
+ * Liquid is the lite-mode "USD" asset.
7
+ *
8
+ * Liquid is on-chain only — no Lightning, no invoices. Receive = an address.
9
+ * Unlike Spark, the module exposes `listAssets()` + `getTokenBalance()`, so asset
10
+ * enumeration (incl. USDt) works natively with no upstream gap.
11
+ *
12
+ * Discipline: no WDK/lwk types cross the contract — everything returned is a domain
13
+ * type from ../types/base; WDK objects are held as `any`.
14
+ *
15
+ * WDK Liquid surface (from types/index.d.ts):
16
+ * manager: getAccount, getAccountByPath, getFeeRates({normal,fast}: bigint), dispose
17
+ * account: getAddress(): string, getBalance(): bigint, getTokenBalance(id): bigint,
18
+ * transfer({recipient,amount,feeRate?}), sendAsset({assetId,recipient,amount,feeRate?}),
19
+ * listAssets(): {asset_id,balance}[], listUnspents, listTransactions,
20
+ * getNetworkInfo(): {network,policy_asset,address,tip_height}, sign, dispose
21
+ */
22
+ import { IProtocolAdapter, BaseProtocolConfig } from '../IProtocolAdapter';
23
+ import { ProtocolType, Layer, UnifiedAsset, UnifiedTransaction, InvoiceRequest, Invoice, DecodedInvoice, PaymentRequest, PaymentResult, PaymentStatus, Address, ConnectionInfo, TransactionFilter } from '../../types/base';
24
+ /** Well-known Liquid mainnet Tether USD (USDt) asset id — the lite-mode "USD". */
25
+ export declare const LIQUID_USDT_ASSET_ID = "ce091c998b83c78bb71a632313ba3760f1763d9cfcffae02258ffa9865a37bd2";
26
+ export interface LiquidAdapterConfig extends BaseProtocolConfig {
27
+ protocol: 'LIQUID';
28
+ /** BIP-39 mnemonic for this wallet. */
29
+ mnemonic: string;
30
+ /** BIP-44 account index (default 0). */
31
+ accountIndex?: number;
32
+ /** Optional Esplora base URL override. */
33
+ esploraUrl?: string;
34
+ }
35
+ export declare class LiquidWdkAdapter implements IProtocolAdapter {
36
+ readonly protocolName: ProtocolType;
37
+ readonly supportedLayers: Layer[];
38
+ readonly version = "0.1.0-wdk";
39
+ private manager;
40
+ private account;
41
+ private connected;
42
+ private network;
43
+ private policyAsset;
44
+ connect(config: BaseProtocolConfig): Promise<void>;
45
+ disconnect(): Promise<void>;
46
+ isConnected(): boolean;
47
+ getConnectionInfo(): Promise<ConnectionInfo>;
48
+ getReceiveAddress(assetId?: string): Promise<Address>;
49
+ getBtcBalance(): Promise<{
50
+ confirmed: number;
51
+ unconfirmed: number;
52
+ total: number;
53
+ }>;
54
+ refreshBalances(): Promise<void>;
55
+ listAssets(): Promise<UnifiedAsset[]>;
56
+ getAssetBalance(assetId: string): Promise<UnifiedAsset['balance']>;
57
+ getAsset(assetId: string): Promise<UnifiedAsset>;
58
+ /** L-BTC send. `invoice` carries the recipient Liquid address for on-chain protocols. */
59
+ sendPayment(request: PaymentRequest): Promise<PaymentResult>;
60
+ /** Liquid asset send (e.g. USDt). */
61
+ sendAsset(params: {
62
+ assetId: string;
63
+ address: string;
64
+ amount: number;
65
+ feeRate?: number;
66
+ }): Promise<any>;
67
+ /** L-BTC on-chain send (alias of sendPayment's transfer). */
68
+ sendBtcOnchain(params: {
69
+ address: string;
70
+ amount: number;
71
+ feeRate?: number;
72
+ }): Promise<any>;
73
+ listTransactions(_filter?: TransactionFilter): Promise<UnifiedTransaction[]>;
74
+ getTransaction(txId: string): Promise<UnifiedTransaction>;
75
+ getPaymentStatus(paymentHash: string): Promise<PaymentStatus>;
76
+ getNodeInfo(): Promise<any>;
77
+ getBtcBalanceConfirmed(): Promise<number>;
78
+ createInvoice(_request: InvoiceRequest): Promise<Invoice>;
79
+ decodeInvoice(_invoice: string): Promise<DecodedInvoice>;
80
+ listChannels(): Promise<any[]>;
81
+ listPayments(): Promise<any>;
82
+ listTransfers(): Promise<any>;
83
+ supportsSwaps(): boolean;
84
+ private getPolicyAsset;
85
+ private toUnifiedAsset;
86
+ private assertConnected;
87
+ }
88
+ //# sourceMappingURL=LiquidWdkAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiquidWdkAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/wdk/LiquidWdkAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,272 @@
1
+ /**
2
+ * LiquidWdkAdapter
3
+ * ----------------
4
+ * Wraps the WDK Liquid module (@kaleidorg/wdk-wallet-liquid, over lwk / Liquid Wallet
5
+ * Kit) onto the stable `IProtocolAdapter` contract. This is the "USD" path: USDt on
6
+ * Liquid is the lite-mode "USD" asset.
7
+ *
8
+ * Liquid is on-chain only — no Lightning, no invoices. Receive = an address.
9
+ * Unlike Spark, the module exposes `listAssets()` + `getTokenBalance()`, so asset
10
+ * enumeration (incl. USDt) works natively with no upstream gap.
11
+ *
12
+ * Discipline: no WDK/lwk types cross the contract — everything returned is a domain
13
+ * type from ../types/base; WDK objects are held as `any`.
14
+ *
15
+ * WDK Liquid surface (from types/index.d.ts):
16
+ * manager: getAccount, getAccountByPath, getFeeRates({normal,fast}: bigint), dispose
17
+ * account: getAddress(): string, getBalance(): bigint, getTokenBalance(id): bigint,
18
+ * transfer({recipient,amount,feeRate?}), sendAsset({assetId,recipient,amount,feeRate?}),
19
+ * listAssets(): {asset_id,balance}[], listUnspents, listTransactions,
20
+ * getNetworkInfo(): {network,policy_asset,address,tip_height}, sign, dispose
21
+ */
22
+ import { ProtocolError, } from '../../types/base';
23
+ import { getCapabilities } from '../../capabilities';
24
+ import { loadWdkModule } from './moduleLoader';
25
+ /** Well-known Liquid mainnet Tether USD (USDt) asset id — the lite-mode "USD". */
26
+ export const LIQUID_USDT_ASSET_ID = 'ce091c998b83c78bb71a632313ba3760f1763d9cfcffae02258ffa9865a37bd2';
27
+ const LIQUID_NETWORK_MAP = {
28
+ mainnet: 'mainnet',
29
+ testnet: 'testnet',
30
+ regtest: 'regtest',
31
+ signet: 'testnet', // Liquid has no signet
32
+ };
33
+ /** Known asset metadata for nicer display; unknown assets fall back to their id. */
34
+ const KNOWN_ASSETS = {
35
+ [LIQUID_USDT_ASSET_ID]: { ticker: 'USDt', name: 'Tether USD', precision: 8 },
36
+ };
37
+ export class LiquidWdkAdapter {
38
+ constructor() {
39
+ this.protocolName = 'LIQUID';
40
+ this.supportedLayers = getCapabilities('LIQUID').layers;
41
+ this.version = '0.1.0-wdk';
42
+ this.manager = null;
43
+ this.account = null;
44
+ this.connected = false;
45
+ this.network = 'mainnet';
46
+ this.policyAsset = null;
47
+ }
48
+ // --- Connection ---------------------------------------------------------
49
+ async connect(config) {
50
+ const cfg = config;
51
+ if (!cfg.mnemonic) {
52
+ throw new ProtocolError('LiquidWdkAdapter requires a mnemonic', 'LIQUID', 'CONFIG');
53
+ }
54
+ this.network = cfg.network ?? 'mainnet';
55
+ // @ts-ignore — declared as a workspace/optional dep; resolved at runtime.
56
+ const mod = await loadWdkModule('@kaleidorg/wdk-wallet-liquid', () => import('@kaleidorg/wdk-wallet-liquid'));
57
+ const LiquidWalletManager = mod.default ?? mod;
58
+ this.manager = new LiquidWalletManager(cfg.mnemonic, {
59
+ network: LIQUID_NETWORK_MAP[this.network] ?? 'mainnet',
60
+ esploraUrl: cfg.esploraUrl,
61
+ });
62
+ this.account = await this.manager.getAccount(cfg.accountIndex ?? 0);
63
+ this.connected = true;
64
+ }
65
+ async disconnect() {
66
+ try {
67
+ this.account?.dispose?.();
68
+ this.manager?.dispose?.();
69
+ }
70
+ finally {
71
+ this.account = null;
72
+ this.manager = null;
73
+ this.connected = false;
74
+ this.policyAsset = null;
75
+ }
76
+ }
77
+ isConnected() {
78
+ return this.connected;
79
+ }
80
+ async getConnectionInfo() {
81
+ this.assertConnected();
82
+ const info = await this.account.getNetworkInfo();
83
+ return {
84
+ protocol: 'LIQUID',
85
+ connected: this.connected,
86
+ network: info?.network ?? this.network,
87
+ blockHeight: info?.tip_height ?? undefined,
88
+ };
89
+ }
90
+ // --- Address / receive --------------------------------------------------
91
+ async getReceiveAddress(assetId) {
92
+ this.assertConnected();
93
+ const address = await this.account.getAddress();
94
+ return { address, format: 'LIQUID_ADDRESS', asset: assetId };
95
+ }
96
+ // --- Balance ------------------------------------------------------------
97
+ async getBtcBalance() {
98
+ this.assertConnected();
99
+ const bal = await this.account.getBalance(); // L-BTC sats
100
+ const total = Number(bal);
101
+ return { confirmed: total, unconfirmed: 0, total };
102
+ }
103
+ async refreshBalances() {
104
+ // lwk syncs against Esplora on read; no explicit sync call.
105
+ }
106
+ async listAssets() {
107
+ this.assertConnected();
108
+ const policy = await this.getPolicyAsset();
109
+ const out = [];
110
+ // L-BTC (policy asset)
111
+ const { total } = await this.getBtcBalance();
112
+ out.push(this.toUnifiedAsset(policy, BigInt(total), {
113
+ ticker: 'L-BTC',
114
+ name: 'Liquid Bitcoin',
115
+ precision: 8,
116
+ layer: 'BTC_LIQUID',
117
+ }));
118
+ // Other Liquid assets (USDt, etc.)
119
+ const assets = await this.account.listAssets();
120
+ for (const a of assets) {
121
+ if (a.asset_id === policy)
122
+ continue; // already added as L-BTC
123
+ const meta = KNOWN_ASSETS[a.asset_id];
124
+ out.push(this.toUnifiedAsset(a.asset_id, BigInt(a.balance), {
125
+ ticker: meta?.ticker ?? a.asset_id.slice(0, 6),
126
+ name: meta?.name ?? 'Liquid asset',
127
+ precision: meta?.precision ?? 8,
128
+ layer: 'LIQUID_ASSET',
129
+ }));
130
+ }
131
+ return out;
132
+ }
133
+ async getAssetBalance(assetId) {
134
+ this.assertConnected();
135
+ const bal = await this.account.getTokenBalance(assetId);
136
+ const n = Number(bal);
137
+ return { total: n, available: n, pending: 0, totalDisplay: String(n), availableDisplay: String(n) };
138
+ }
139
+ async getAsset(assetId) {
140
+ const assets = await this.listAssets();
141
+ const found = assets.find((a) => a.id === assetId);
142
+ if (!found)
143
+ throw new ProtocolError(`Unknown asset ${assetId}`, 'LIQUID', 'NO_ASSET');
144
+ return found;
145
+ }
146
+ // --- Send ---------------------------------------------------------------
147
+ /** L-BTC send. `invoice` carries the recipient Liquid address for on-chain protocols. */
148
+ async sendPayment(request) {
149
+ this.assertConnected();
150
+ if (request.amount == null) {
151
+ throw new ProtocolError('Liquid send requires an explicit amount', 'LIQUID', 'NO_AMOUNT');
152
+ }
153
+ const r = await this.account.transfer({ recipient: request.invoice.trim(), amount: request.amount });
154
+ return {
155
+ paymentHash: r?.hash ?? '',
156
+ amount: request.amount,
157
+ fee: Number(r?.fee ?? 0),
158
+ status: 'pending', // on-chain — confirms later
159
+ timestamp: Date.now(),
160
+ };
161
+ }
162
+ /** Liquid asset send (e.g. USDt). */
163
+ async sendAsset(params) {
164
+ this.assertConnected();
165
+ const r = await this.account.sendAsset({
166
+ assetId: params.assetId,
167
+ recipient: params.address,
168
+ amount: params.amount,
169
+ feeRate: params.feeRate,
170
+ });
171
+ return { paymentHash: r?.hash ?? '', fee: Number(r?.fee ?? 0), amount: params.amount, status: 'pending' };
172
+ }
173
+ /** L-BTC on-chain send (alias of sendPayment's transfer). */
174
+ async sendBtcOnchain(params) {
175
+ this.assertConnected();
176
+ const r = await this.account.transfer({ recipient: params.address, amount: params.amount, feeRate: params.feeRate });
177
+ return { txid: r?.hash ?? '', fee: Number(r?.fee ?? 0) };
178
+ }
179
+ // --- Transactions -------------------------------------------------------
180
+ async listTransactions(_filter) {
181
+ this.assertConnected();
182
+ const txs = await this.account.listTransactions();
183
+ return txs.map((t) => ({
184
+ id: t.txid,
185
+ type: t.type === 'outgoing' ? 'send' : 'receive',
186
+ status: (t.height != null ? 'confirmed' : 'pending'),
187
+ timestamp: (t.timestamp ?? 0) * 1000,
188
+ amount: 0, // lwk tx summary carries no net value here; enrich in Phase 3 from unspents/deltas
189
+ amountDisplay: '',
190
+ fee: Number(t.fee ?? 0),
191
+ asset: undefined, // TODO(Phase 3): resolve per-tx asset
192
+ protocolData: { height: t.height },
193
+ }));
194
+ }
195
+ async getTransaction(txId) {
196
+ const all = await this.listTransactions();
197
+ const found = all.find((t) => t.id === txId);
198
+ if (!found)
199
+ throw new ProtocolError(`Unknown tx ${txId}`, 'LIQUID', 'NO_TX');
200
+ return found;
201
+ }
202
+ async getPaymentStatus(paymentHash) {
203
+ const all = await this.listTransactions();
204
+ const found = all.find((t) => t.id === paymentHash);
205
+ return {
206
+ paymentHash,
207
+ status: (found?.status ?? 'pending'),
208
+ timestamp: found?.timestamp,
209
+ };
210
+ }
211
+ // --- Node info ----------------------------------------------------------
212
+ async getNodeInfo() {
213
+ this.assertConnected();
214
+ return this.account.getNetworkInfo();
215
+ }
216
+ async getBtcBalanceConfirmed() {
217
+ return (await this.getBtcBalance()).total;
218
+ }
219
+ // --- Not applicable to Liquid (on-chain only, no LN/invoices) -----------
220
+ async createInvoice(_request) {
221
+ throw new ProtocolError('Liquid has no invoices — use getReceiveAddress', 'LIQUID', 'NOT_SUPPORTED');
222
+ }
223
+ async decodeInvoice(_invoice) {
224
+ throw new ProtocolError('Liquid has no invoices', 'LIQUID', 'NOT_SUPPORTED');
225
+ }
226
+ async listChannels() {
227
+ return []; // no Lightning
228
+ }
229
+ async listPayments() {
230
+ return this.listTransactions();
231
+ }
232
+ async listTransfers() {
233
+ return this.account.listTransactions();
234
+ }
235
+ supportsSwaps() {
236
+ return getCapabilities('LIQUID').supportsSwaps;
237
+ }
238
+ // --- helpers ------------------------------------------------------------
239
+ async getPolicyAsset() {
240
+ if (this.policyAsset)
241
+ return this.policyAsset;
242
+ const info = await this.account.getNetworkInfo();
243
+ const policy = info?.policy_asset ?? '';
244
+ this.policyAsset = policy;
245
+ return policy;
246
+ }
247
+ toUnifiedAsset(id, balance, meta) {
248
+ const n = Number(balance);
249
+ return {
250
+ id,
251
+ name: meta.name,
252
+ ticker: meta.ticker,
253
+ precision: meta.precision,
254
+ protocol: 'LIQUID',
255
+ layer: meta.layer,
256
+ balance: { total: n, available: n, pending: 0, totalDisplay: String(n), availableDisplay: String(n) },
257
+ capabilities: {
258
+ canSend: true,
259
+ canReceive: true,
260
+ canSwap: false,
261
+ supportsLightning: false,
262
+ supportsOnchain: true,
263
+ },
264
+ };
265
+ }
266
+ assertConnected() {
267
+ if (!this.connected || !this.account) {
268
+ throw new ProtocolError('LiquidWdkAdapter not connected', 'LIQUID', 'NOT_CONNECTED');
269
+ }
270
+ }
271
+ }
272
+ //# sourceMappingURL=LiquidWdkAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiquidWdkAdapter.js","sourceRoot":"","sources":["../../../src/adapters/wdk/LiquidWdkAdapter.ts"],"names":[],"mappings":"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"}