@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,85 @@
1
+ /**
2
+ * RlnWdkAdapter
3
+ * -------------
4
+ * Wraps the WDK RGB-Lightning module (@kaleidorg/wdk-wallet-rln, over kaleido-sdk)
5
+ * onto the stable `IProtocolAdapter` contract. This is the RGB path: BTC on-chain,
6
+ * BTC Lightning, RGB assets (USDT/XAUT) on-chain and over Lightning, plus channels
7
+ * and atomic swaps.
8
+ *
9
+ * The RLN account talks to a remote RGB-Lightning node over HTTP (nodeUrl).
10
+ *
11
+ * Discipline: no WDK/kaleido-sdk types cross the contract — domain types only;
12
+ * node responses are read as `any` and translated.
13
+ *
14
+ * WDK RLN surface (from types/index.d.ts): getAddress, getBalance, getBtcBalance,
15
+ * sendBtc, listAssets({nia,uda,cfa}), getAssetBalance, sendRgb, createLNInvoice,
16
+ * createRgbInvoice, sendPayment, getInvoiceStatus, decodeLNInvoice/decodeRgbInvoice,
17
+ * listChannels/openChannel/closeChannel, listPeers/connectPeer, atomicTaker/listSwaps.
18
+ */
19
+ import { IProtocolAdapter, BaseProtocolConfig } from '../IProtocolAdapter';
20
+ import { ProtocolType, Layer, UnifiedAsset, UnifiedTransaction, InvoiceRequest, Invoice, DecodedInvoice, PaymentRequest, PaymentResult, PaymentStatus, Address, ConnectionInfo, TransactionFilter } from '../../types/base';
21
+ export interface RlnAdapterConfig extends BaseProtocolConfig {
22
+ protocol: 'RGB';
23
+ /** BIP-39 mnemonic for this wallet. */
24
+ mnemonic: string;
25
+ /** Base URL of the RLN HTTP API (e.g. http://localhost:3001). */
26
+ nodeUrl: string;
27
+ /** BIP-44 account index (default 0). */
28
+ accountIndex?: number;
29
+ }
30
+ export declare class RlnWdkAdapter implements IProtocolAdapter {
31
+ readonly protocolName: ProtocolType;
32
+ readonly supportedLayers: Layer[];
33
+ readonly version = "0.1.0-wdk";
34
+ private manager;
35
+ private account;
36
+ private connected;
37
+ private network;
38
+ connect(config: BaseProtocolConfig): Promise<void>;
39
+ disconnect(): Promise<void>;
40
+ isConnected(): boolean;
41
+ getConnectionInfo(): Promise<ConnectionInfo>;
42
+ getReceiveAddress(assetId?: string): Promise<Address>;
43
+ getBtcBalance(): Promise<{
44
+ confirmed: number;
45
+ unconfirmed: number;
46
+ total: number;
47
+ }>;
48
+ refreshBalances(): Promise<void>;
49
+ listAssets(): Promise<UnifiedAsset[]>;
50
+ getAssetBalance(assetId: string): Promise<UnifiedAsset['balance']>;
51
+ getAsset(assetId: string): Promise<UnifiedAsset>;
52
+ createInvoice(request: InvoiceRequest): Promise<Invoice>;
53
+ decodeInvoice(invoice: string): Promise<DecodedInvoice>;
54
+ sendPayment(request: PaymentRequest): Promise<PaymentResult>;
55
+ getPaymentStatus(paymentHash: string): Promise<PaymentStatus>;
56
+ listTransactions(_filter?: TransactionFilter): Promise<UnifiedTransaction[]>;
57
+ getTransaction(txId: string): Promise<UnifiedTransaction>;
58
+ getNodeInfo(): Promise<any>;
59
+ listChannels(): Promise<any[]>;
60
+ listPayments(): Promise<any>;
61
+ listTransfers(options?: {
62
+ asset_id?: string;
63
+ }): Promise<any>;
64
+ createRgbInvoice(params: any): Promise<any>;
65
+ decodeRgbInvoice(params: any): Promise<any>;
66
+ getInvoiceStatus(params: {
67
+ invoice: string;
68
+ }): Promise<any>;
69
+ sendAsset(params: {
70
+ recipientMap: Record<string, any[]>;
71
+ feeRate?: number;
72
+ donation?: boolean;
73
+ minConfirmations?: number;
74
+ }): Promise<any>;
75
+ sendBtcOnchain(params: {
76
+ address: string;
77
+ amount: number;
78
+ feeRate?: number;
79
+ }): Promise<any>;
80
+ supportsSwaps(): boolean;
81
+ /** Generic escape hatch for RLN-specific ops not on the core contract. */
82
+ executeProtocolOperation(operation: string, params: any): Promise<any>;
83
+ private assertConnected;
84
+ }
85
+ //# sourceMappingURL=RlnWdkAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RlnWdkAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/wdk/RlnWdkAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,308 @@
1
+ /**
2
+ * RlnWdkAdapter
3
+ * -------------
4
+ * Wraps the WDK RGB-Lightning module (@kaleidorg/wdk-wallet-rln, over kaleido-sdk)
5
+ * onto the stable `IProtocolAdapter` contract. This is the RGB path: BTC on-chain,
6
+ * BTC Lightning, RGB assets (USDT/XAUT) on-chain and over Lightning, plus channels
7
+ * and atomic swaps.
8
+ *
9
+ * The RLN account talks to a remote RGB-Lightning node over HTTP (nodeUrl).
10
+ *
11
+ * Discipline: no WDK/kaleido-sdk types cross the contract — domain types only;
12
+ * node responses are read as `any` and translated.
13
+ *
14
+ * WDK RLN surface (from types/index.d.ts): getAddress, getBalance, getBtcBalance,
15
+ * sendBtc, listAssets({nia,uda,cfa}), getAssetBalance, sendRgb, createLNInvoice,
16
+ * createRgbInvoice, sendPayment, getInvoiceStatus, decodeLNInvoice/decodeRgbInvoice,
17
+ * listChannels/openChannel/closeChannel, listPeers/connectPeer, atomicTaker/listSwaps.
18
+ */
19
+ import { ProtocolError, } from '../../types/base';
20
+ import { getCapabilities } from '../../capabilities';
21
+ import { loadWdkModule } from './moduleLoader';
22
+ /** Map RLN node status strings → domain TransactionStatus. */
23
+ function mapStatus(s) {
24
+ const v = (s ?? '').toLowerCase();
25
+ if (v.includes('succeed') || v.includes('settled') || v === 'paid')
26
+ return 'confirmed';
27
+ if (v.includes('fail'))
28
+ return 'failed';
29
+ return 'pending';
30
+ }
31
+ export class RlnWdkAdapter {
32
+ constructor() {
33
+ this.protocolName = 'RGB';
34
+ this.supportedLayers = getCapabilities('RGB').layers;
35
+ this.version = '0.1.0-wdk';
36
+ this.manager = null;
37
+ this.account = null;
38
+ this.connected = false;
39
+ this.network = 'mainnet';
40
+ }
41
+ // --- Connection ---------------------------------------------------------
42
+ async connect(config) {
43
+ const cfg = config;
44
+ if (!cfg.mnemonic)
45
+ throw new ProtocolError('RlnWdkAdapter requires a mnemonic', 'RGB', 'CONFIG');
46
+ if (!cfg.nodeUrl)
47
+ throw new ProtocolError('RlnWdkAdapter requires a nodeUrl', 'RGB', 'CONFIG');
48
+ this.network = cfg.network ?? 'mainnet';
49
+ // @ts-ignore — declared as a workspace/optional dep; resolved at runtime.
50
+ const mod = await loadWdkModule('@kaleidorg/wdk-wallet-rln', () => import('@kaleidorg/wdk-wallet-rln'));
51
+ const RlnWalletManager = mod.default ?? mod;
52
+ this.manager = new RlnWalletManager(cfg.mnemonic, { nodeUrl: cfg.nodeUrl });
53
+ this.account = await this.manager.getAccount(cfg.accountIndex ?? 0);
54
+ this.connected = true;
55
+ }
56
+ async disconnect() {
57
+ try {
58
+ this.account?.dispose?.();
59
+ this.manager?.dispose?.();
60
+ }
61
+ finally {
62
+ this.account = null;
63
+ this.manager = null;
64
+ this.connected = false;
65
+ }
66
+ }
67
+ isConnected() {
68
+ return this.connected;
69
+ }
70
+ async getConnectionInfo() {
71
+ this.assertConnected();
72
+ const info = await this.account.getNodeInfo();
73
+ return {
74
+ protocol: 'RGB',
75
+ connected: this.connected,
76
+ nodeId: info?.pubkey,
77
+ network: this.network,
78
+ };
79
+ }
80
+ // --- Address / receive --------------------------------------------------
81
+ async getReceiveAddress(assetId) {
82
+ this.assertConnected();
83
+ if (assetId) {
84
+ // RGB receive = an RGB invoice bound to the asset.
85
+ const inv = await this.account.createRgbInvoice({ assetId });
86
+ return { address: inv?.invoice ?? '', format: 'RGB_INVOICE', asset: assetId };
87
+ }
88
+ const address = await this.account.getAddress();
89
+ return { address, format: 'BTC_ADDRESS' };
90
+ }
91
+ // --- Balance ------------------------------------------------------------
92
+ async getBtcBalance() {
93
+ this.assertConnected();
94
+ const b = await this.account.getBtcBalance();
95
+ const v = b?.vanilla ?? {};
96
+ const settled = Number(v.settled ?? 0);
97
+ const spendable = Number(v.spendable ?? settled);
98
+ return { confirmed: settled, unconfirmed: Math.max(0, Number(v.future ?? spendable) - settled), total: spendable };
99
+ }
100
+ async refreshBalances() {
101
+ this.assertConnected();
102
+ await this.account.refreshTransfers?.({ skipSync: false }).catch(() => { });
103
+ }
104
+ async listAssets() {
105
+ this.assertConnected();
106
+ const out = [];
107
+ // BTC
108
+ const { total } = await this.getBtcBalance();
109
+ out.push({
110
+ id: 'BTC',
111
+ name: 'Bitcoin',
112
+ ticker: 'BTC',
113
+ precision: 8,
114
+ protocol: 'RGB',
115
+ layer: 'BTC_L1',
116
+ balance: { total, available: total, pending: 0, totalDisplay: String(total), availableDisplay: String(total) },
117
+ capabilities: { canSend: true, canReceive: true, canSwap: true, supportsLightning: true, supportsOnchain: true },
118
+ });
119
+ // RGB assets (NIA — fungible: USDT/XAUT)
120
+ const res = await this.account.listAssets(['Nia']);
121
+ const nia = res?.nia ?? [];
122
+ for (const a of nia) {
123
+ const bal = a?.balance ?? {};
124
+ const total = Number(bal.spendable ?? bal.settled ?? 0);
125
+ out.push({
126
+ id: a.asset_id,
127
+ name: a.name ?? a.ticker ?? a.asset_id,
128
+ ticker: a.ticker ?? a.asset_id?.slice(0, 6),
129
+ precision: Number(a.precision ?? 0),
130
+ protocol: 'RGB',
131
+ layer: 'RGB_LN',
132
+ balance: { total, available: total, pending: 0, totalDisplay: String(total), availableDisplay: String(total) },
133
+ capabilities: { canSend: true, canReceive: true, canSwap: true, supportsLightning: true, supportsOnchain: true },
134
+ });
135
+ }
136
+ return out;
137
+ }
138
+ async getAssetBalance(assetId) {
139
+ this.assertConnected();
140
+ const b = await this.account.getAssetBalance(assetId);
141
+ const total = Number(b?.spendable ?? b?.settled ?? 0);
142
+ return { total, available: total, pending: Number(b?.future ?? 0), totalDisplay: String(total), availableDisplay: String(total) };
143
+ }
144
+ async getAsset(assetId) {
145
+ const assets = await this.listAssets();
146
+ const found = assets.find((a) => a.id === assetId);
147
+ if (!found)
148
+ throw new ProtocolError(`Unknown asset ${assetId}`, 'RGB', 'NO_ASSET');
149
+ return found;
150
+ }
151
+ // --- Invoices -----------------------------------------------------------
152
+ async createInvoice(request) {
153
+ this.assertConnected();
154
+ // RGB asset invoice (on-chain or LN) when an asset is specified.
155
+ if (request.asset && request.asset !== 'BTC') {
156
+ const inv = await this.account.createRgbInvoice({
157
+ assetId: request.asset,
158
+ amount: request.assetAmount,
159
+ durationSeconds: request.expirySeconds,
160
+ });
161
+ return {
162
+ invoice: inv?.invoice ?? '',
163
+ paymentHash: inv?.recipient_id ?? '',
164
+ amount: request.assetAmount,
165
+ expiresAt: inv?.expiration_timestamp ? inv.expiration_timestamp * 1000 : Date.now() + (request.expirySeconds ?? 3600) * 1000,
166
+ description: request.description,
167
+ };
168
+ }
169
+ // BTC Lightning invoice.
170
+ const inv = await this.account.createLNInvoice({
171
+ amtMsat: request.amount != null ? request.amount * 1000 : undefined,
172
+ description: request.description,
173
+ expirySec: request.expirySeconds,
174
+ });
175
+ return {
176
+ invoice: inv?.invoice ?? '',
177
+ paymentHash: inv?.payment_hash ?? '',
178
+ amount: request.amount,
179
+ expiresAt: Date.now() + (request.expirySeconds ?? 3600) * 1000,
180
+ description: request.description,
181
+ };
182
+ }
183
+ async decodeInvoice(invoice) {
184
+ this.assertConnected();
185
+ const isBolt11 = /^ln(bc|tb|bcrt)/i.test(invoice.trim());
186
+ const d = isBolt11
187
+ ? await this.account.decodeLNInvoice(invoice)
188
+ : await this.account.decodeRgbInvoice(invoice);
189
+ return {
190
+ paymentHash: d?.payment_hash ?? d?.recipient_id ?? '',
191
+ amount: d?.amount_msat != null ? Math.floor(d.amount_msat / 1000) : d?.amount,
192
+ amountMsat: d?.amount_msat,
193
+ description: d?.description,
194
+ expiresAt: d?.expiry_sec ? Date.now() + d.expiry_sec * 1000 : (d?.expiration_timestamp ?? 0) * 1000,
195
+ destination: d?.payee_pubkey ?? d?.recipient_id ?? '',
196
+ asset_id: d?.asset_id,
197
+ asset_amount: d?.asset_amount,
198
+ };
199
+ }
200
+ // --- Send ---------------------------------------------------------------
201
+ async sendPayment(request) {
202
+ this.assertConnected();
203
+ // Pays a BOLT11 or RGB-LN invoice through the node.
204
+ const r = await this.account.sendPayment({ invoice: request.invoice.trim() });
205
+ return {
206
+ paymentHash: r?.payment_hash ?? '',
207
+ preimage: r?.payment_secret,
208
+ amount: Number(request.amount ?? 0),
209
+ fee: 0,
210
+ status: mapStatus(r?.status),
211
+ timestamp: Date.now(),
212
+ };
213
+ }
214
+ async getPaymentStatus(paymentHash) {
215
+ this.assertConnected();
216
+ const s = await this.account.getInvoiceStatus({ paymentHash });
217
+ return { paymentHash, status: mapStatus(s?.status), error: s?.error };
218
+ }
219
+ // --- Transactions / payments -------------------------------------------
220
+ async listTransactions(_filter) {
221
+ this.assertConnected();
222
+ const r = await this.account.listTransactions();
223
+ const txs = r?.transactions ?? [];
224
+ return txs.map((t) => ({
225
+ id: t.txid ?? t.transaction_id ?? '',
226
+ type: (t.transaction_type === 'User' || t.amount < 0 ? 'send' : 'receive'),
227
+ status: (t.confirmation_time ? 'confirmed' : 'pending'),
228
+ timestamp: (t.confirmation_time?.timestamp ?? 0) * 1000,
229
+ amount: Number(t.received ?? t.sent ?? 0),
230
+ amountDisplay: '',
231
+ asset: undefined,
232
+ protocolData: t,
233
+ }));
234
+ }
235
+ async getTransaction(txId) {
236
+ const all = await this.listTransactions();
237
+ const found = all.find((t) => t.id === txId);
238
+ if (!found)
239
+ throw new ProtocolError(`Unknown tx ${txId}`, 'RGB', 'NO_TX');
240
+ return found;
241
+ }
242
+ async getNodeInfo() {
243
+ this.assertConnected();
244
+ return this.account.getNodeInfo();
245
+ }
246
+ async listChannels() {
247
+ this.assertConnected();
248
+ const r = await this.account.listChannels();
249
+ return r?.channels ?? [];
250
+ }
251
+ async listPayments() {
252
+ this.assertConnected();
253
+ return this.account.listPayments();
254
+ }
255
+ async listTransfers(options) {
256
+ this.assertConnected();
257
+ if (!options?.asset_id)
258
+ return { transfers: [] };
259
+ return this.account.listTransfers(options.asset_id);
260
+ }
261
+ // --- Optional protocol-specific hooks -----------------------------------
262
+ async createRgbInvoice(params) {
263
+ this.assertConnected();
264
+ return this.account.createRgbInvoice(params);
265
+ }
266
+ async decodeRgbInvoice(params) {
267
+ this.assertConnected();
268
+ return this.account.decodeRgbInvoice(params?.invoice ?? params);
269
+ }
270
+ async getInvoiceStatus(params) {
271
+ this.assertConnected();
272
+ // Best-effort: decode to a payment hash, then query status.
273
+ const d = await this.account.decodeLNInvoice(params.invoice).catch(() => null);
274
+ const paymentHash = d?.payment_hash;
275
+ if (!paymentHash)
276
+ return { status: 'unknown' };
277
+ return this.account.getInvoiceStatus({ paymentHash });
278
+ }
279
+ async sendAsset(params) {
280
+ this.assertConnected();
281
+ return this.account.sendRgb(params);
282
+ }
283
+ async sendBtcOnchain(params) {
284
+ this.assertConnected();
285
+ await this.account.sendBtc(params);
286
+ return { ok: true };
287
+ }
288
+ // --- Swaps --------------------------------------------------------------
289
+ supportsSwaps() {
290
+ return getCapabilities('RGB').supportsSwaps;
291
+ }
292
+ /** Generic escape hatch for RLN-specific ops not on the core contract. */
293
+ async executeProtocolOperation(operation, params) {
294
+ this.assertConnected();
295
+ const fn = this.account[operation];
296
+ if (typeof fn !== 'function') {
297
+ throw new ProtocolError(`Unknown RLN operation '${operation}'`, 'RGB', 'NO_OP');
298
+ }
299
+ return fn.call(this.account, params);
300
+ }
301
+ // --- helpers ------------------------------------------------------------
302
+ assertConnected() {
303
+ if (!this.connected || !this.account) {
304
+ throw new ProtocolError('RlnWdkAdapter not connected', 'RGB', 'NOT_CONNECTED');
305
+ }
306
+ }
307
+ }
308
+ //# sourceMappingURL=RlnWdkAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RlnWdkAdapter.js","sourceRoot":"","sources":["../../../src/adapters/wdk/RlnWdkAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * SparkWdkAdapter
3
+ * ---------------
4
+ * Thin adapter mapping the WDK Spark module (@tetherto/wdk-wallet-spark) onto the
5
+ * stable `IProtocolAdapter` contract. This is the reference implementation of the
6
+ * "wrap a WDK module behind the contract" pattern (see docs/WDK_INTEGRATION_PLAN.md).
7
+ *
8
+ * Discipline rules enforced here:
9
+ * - NO WDK/SDK types cross the contract boundary — everything returned is a domain
10
+ * type from ../types/base. The WDK objects are held as `any` internally.
11
+ * - Protocol quirks (zero-fee, static address) live in the capability manifest,
12
+ * not in this interface.
13
+ *
14
+ * WDK Spark account surface (captured via Spike A, 2026-06-03):
15
+ * manager: getAccount, getAccountByPath, getFeeRates
16
+ * account: getAddress, getBalance, sendTransaction, transfer,
17
+ * getStaticDepositAddress, getSingleUseDepositAddress, quoteWithdraw,
18
+ * withdraw, createLightningInvoice, payLightningInvoice,
19
+ * createSparkSatsInvoice, createSparkTokensInvoice, paySparkInvoice,
20
+ * syncWalletBalance, dispose, cleanupConnections
21
+ *
22
+ * Status: skeleton — core receive/balance/invoice/send wired to the real WDK calls;
23
+ * remaining contract methods stubbed with explicit ProtocolError until Phase 2.
24
+ */
25
+ import { IProtocolAdapter, BaseProtocolConfig } from '../IProtocolAdapter';
26
+ import { ProtocolType, Layer, UnifiedAsset, UnifiedTransaction, InvoiceRequest, Invoice, DecodedInvoice, PaymentRequest, PaymentResult, PaymentStatus, Address, ConnectionInfo, TransactionFilter } from '../../types/base';
27
+ export interface SparkAdapterConfig extends BaseProtocolConfig {
28
+ protocol: 'SPARK';
29
+ /** BIP-39 mnemonic for this wallet. */
30
+ mnemonic: string;
31
+ /** BIP-44 account index (default 0). */
32
+ accountIndex?: number;
33
+ }
34
+ export declare class SparkWdkAdapter implements IProtocolAdapter {
35
+ readonly protocolName: ProtocolType;
36
+ readonly supportedLayers: Layer[];
37
+ readonly version = "0.1.0-wdk";
38
+ private manager;
39
+ private account;
40
+ private connected;
41
+ private network;
42
+ connect(config: BaseProtocolConfig): Promise<void>;
43
+ disconnect(): Promise<void>;
44
+ isConnected(): boolean;
45
+ getConnectionInfo(): Promise<ConnectionInfo>;
46
+ getReceiveAddress(): Promise<Address>;
47
+ getBtcBalance(): Promise<{
48
+ confirmed: number;
49
+ unconfirmed: number;
50
+ total: number;
51
+ }>;
52
+ refreshBalances(): Promise<void>;
53
+ listAssets(): Promise<UnifiedAsset[]>;
54
+ getAssetBalance(assetId: string): Promise<UnifiedAsset['balance']>;
55
+ getAsset(assetId: string): Promise<UnifiedAsset>;
56
+ createInvoice(request: InvoiceRequest): Promise<Invoice>;
57
+ sendPayment(request: PaymentRequest): Promise<PaymentResult>;
58
+ /** Conservative default LN fee cap: 0.5% of amount, min 5 sats. */
59
+ private defaultMaxFeeSats;
60
+ decodeInvoice(invoice: string): Promise<DecodedInvoice>;
61
+ getPaymentStatus(paymentHash: string): Promise<PaymentStatus>;
62
+ listTransactions(filter?: TransactionFilter): Promise<UnifiedTransaction[]>;
63
+ getTransaction(txId: string): Promise<UnifiedTransaction>;
64
+ getNodeInfo(): Promise<any>;
65
+ listChannels(): Promise<any[]>;
66
+ /**
67
+ * Escape hatch: the underlying spark-sdk SparkWallet, for integrations that need the
68
+ * raw client (e.g. the flashnet Spark-DEX, which piggybacks on a SparkWallet). Returns
69
+ * the same instance this adapter uses (no duplicate wallet). Null if not connected.
70
+ */
71
+ getUnderlyingSparkWallet(): any;
72
+ listPayments(): Promise<any>;
73
+ listTransfers(): Promise<any>;
74
+ supportsSwaps(): boolean;
75
+ /** Map a spark-sdk Transfer (proto) → domain UnifiedTransaction (fields read defensively). */
76
+ private toUnifiedTx;
77
+ private assertConnected;
78
+ }
79
+ //# sourceMappingURL=SparkWdkAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SparkWdkAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/wdk/SparkWdkAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC1E,OAAO,EACL,YAAY,EACZ,KAAK,EACL,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,OAAO,EACP,cAAc,EACd,cAAc,EACd,aAAa,EACb,aAAa,EACb,OAAO,EACP,cAAc,EACd,iBAAiB,EAGlB,MAAM,kBAAkB,CAAA;AAazB,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,QAAQ,EAAE,OAAO,CAAA;IACjB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAA;IAChB,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAYD,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAU;IAC7C,QAAQ,CAAC,eAAe,EAAE,KAAK,EAAE,CAAkC;IACnE,QAAQ,CAAC,OAAO,eAAc;IAE9B,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,OAAO,CAAY;IAGrB,OAAO,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBlD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAWjC,WAAW,IAAI,OAAO;IAIhB,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC;IAK5C,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAOrC,aAAa,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAQnF,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAKhC,UAAU,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IA6BrC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAOlE,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAQhD,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAyCxD,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IA8ClE,mEAAmE;IACnE,OAAO,CAAC,iBAAiB;IAMnB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAUvD,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAM7D,gBAAgB,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAM3E,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAOzD,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC;IAG3B,YAAY,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAIpC;;;;OAIG;IACH,wBAAwB,IAAI,GAAG;IAGzB,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC;IAK5B,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC;IAInC,aAAa,IAAI,OAAO;IAIxB,8FAA8F;IAC9F,OAAO,CAAC,WAAW;IAyBnB,OAAO,CAAC,eAAe;CAKxB"}