@kaleidorg/wallet-engine 1.0.0-beta.13 → 1.0.0-beta.14

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.
@@ -0,0 +1,129 @@
1
+ /**
2
+ * RgbLibWasmAdapter
3
+ * -----------------
4
+ * RGB-L1 (on-chain) backed by the BROWSER/WASM rgb-lib build
5
+ * (`@utexo/rgb-lib-wasm`) instead of the native addon used by
6
+ * `RgbLibWdkAdapter`. Same protocol surface (BTC on-chain + RGB assets on-chain,
7
+ * NO Lightning/channels/swaps), same `RgbCore` translation — only the backing
8
+ * differs, so the two cannot drift on asset/balance shape.
9
+ *
10
+ * Why a separate adapter: the native `@utexo/wdk-wallet-rgb` needs a filesystem
11
+ * `dataDir` + a Node/Bare runtime and cannot load in a browser / MV3 service
12
+ * worker. The wasm build is a wasm-bindgen `--target web` module that persists to
13
+ * IndexedDB and uses only fetch / crypto / WebAssembly — so it runs node-less in
14
+ * the extension (and on mobile). It is the path that makes self-custodial RGB-L1
15
+ * possible without an rgb-lightning-node.
16
+ *
17
+ * Runtime-agnostic: the host injects an ALREADY-wasm-initialized module via
18
+ * `registerWdkModule('@utexo/rgb-lib-wasm', () => initializedModule)`. The host
19
+ * owns where the 13 MB `_bg.wasm` comes from (`chrome.runtime.getURL(...)` in the
20
+ * extension; a bundled asset on mobile) and must have awaited the default
21
+ * `init(...)` export before injecting. This adapter never touches `fetch`/URLs.
22
+ *
23
+ * Discipline: no rgb-lib/wasm types cross the contract — the module + wallet are
24
+ * read as `any` and translated. Field names are read defensively and should be
25
+ * smoke-tested on-device (validated offline: keys, wallet, address, listAssets).
26
+ *
27
+ * WasmWallet API used (from @utexo/rgb-lib-wasm@1.0.0-beta.2):
28
+ * static create(walletDataJson) → WasmWallet (IndexedDB-restoring)
29
+ * goOnline(skipConsistencyCheck, indexerUrl) → online
30
+ * getAddress() · getBtcBalance() · getAssetBalance(id) · listAssets(schemas[])
31
+ * blindReceive(assetId|null, assignment, duration|null, transportEndpoints, minConf)
32
+ * sendBegin(online, recipientMap, donation, feeRate, minConf) · signPsbt(psbt)
33
+ * · sendEnd(online, signedPsbt, skipSync)
34
+ * sendBtcBegin/sendBtcEnd · createUtxosBegin/createUtxosEnd · refresh · sync
35
+ * listTransactions() · listTransfers(assetId?)
36
+ * Top-level: init() (panic/log hook) · restoreKeys(network, mnemonic) → keys.
37
+ */
38
+ import { IProtocolAdapter, BaseProtocolConfig } from '../IProtocolAdapter.js';
39
+ import { ProtocolType, Layer, UnifiedAsset, UnifiedTransaction, InvoiceRequest, Invoice, DecodedInvoice, PaymentRequest, PaymentResult, PaymentStatus, Address, ConnectionInfo, TransactionFilter, NodeInfo } from '../../types/base.js';
40
+ import { BaseWdkAdapter } from './BaseWdkAdapter.js';
41
+ export interface RgbLibWasmAdapterConfig extends BaseProtocolConfig {
42
+ protocol: 'RGB_L1';
43
+ /** BIP-39 mnemonic for this wallet. */
44
+ mnemonic: string;
45
+ /** RGB indexer (electrum/esplora) URL — required to go online. */
46
+ indexerUrl: string;
47
+ /**
48
+ * RGB proxy / transport endpoints used when generating blinded receive
49
+ * invoices. Optional; rgb-lib uses its defaults when omitted.
50
+ */
51
+ transportEndpoints?: string[];
52
+ /**
53
+ * Namespace key for this wallet's IndexedDB store (rgb-lib's `dataDir`). Lets
54
+ * multiple wallets/networks coexist; defaults to a network-scoped name.
55
+ */
56
+ dataDir?: string;
57
+ /** Max allocations per UTXO (rgb-lib tuning). Defaults to 5. */
58
+ maxAllocationsPerUtxo?: number;
59
+ }
60
+ export declare class RgbLibWasmAdapter extends BaseWdkAdapter implements IProtocolAdapter {
61
+ readonly protocolName: ProtocolType;
62
+ readonly capabilities: readonly import("../../index.js").ProtocolCapability[];
63
+ readonly supportedLayers: Layer[];
64
+ readonly version = "0.1.0-wasm";
65
+ /** The rgb-lib `online` handle returned by goOnline(); required by network ops. */
66
+ private online;
67
+ private transportEndpoints;
68
+ connect(config: BaseProtocolConfig): Promise<void>;
69
+ getConnectionInfo(): Promise<ConnectionInfo>;
70
+ getReceiveAddress(assetId?: string): Promise<Address>;
71
+ getBtcBalance(): Promise<{
72
+ confirmed: number;
73
+ unconfirmed: number;
74
+ total: number;
75
+ }>;
76
+ refreshBalances(): Promise<void>;
77
+ listAssets(): Promise<UnifiedAsset[]>;
78
+ getAssetBalance(assetId: string): Promise<UnifiedAsset['balance']>;
79
+ getAsset(assetId: string): Promise<UnifiedAsset>;
80
+ createInvoice(request: InvoiceRequest): Promise<Invoice>;
81
+ decodeInvoice(_invoice: string): Promise<DecodedInvoice>;
82
+ sendPayment(_request: PaymentRequest): Promise<PaymentResult>;
83
+ getPaymentStatus(_paymentHash: string): Promise<PaymentStatus>;
84
+ listTransactions(_filter?: TransactionFilter): Promise<UnifiedTransaction[]>;
85
+ getTransaction(txId: string): Promise<UnifiedTransaction>;
86
+ getNodeInfo(): Promise<NodeInfo>;
87
+ listChannels(): Promise<unknown[]>;
88
+ listPayments(): Promise<unknown>;
89
+ listTransfers(options?: {
90
+ asset_id?: string;
91
+ }): Promise<unknown>;
92
+ createRgbInvoice(params: {
93
+ assetId?: string;
94
+ amount?: number;
95
+ durationSeconds?: number;
96
+ minConfirmations?: number;
97
+ }): Promise<any>;
98
+ /** Generate a blinded receive invoice (RGB UTXO-based receive). */
99
+ private blindReceive;
100
+ signPsbt(psbtHex: string): Promise<{
101
+ psbt: string;
102
+ unchanged: boolean;
103
+ }>;
104
+ createRgbUtxos(params: {
105
+ num?: number;
106
+ size?: number;
107
+ feeRate?: number;
108
+ upTo?: boolean;
109
+ }): Promise<{
110
+ success: boolean;
111
+ }>;
112
+ sendAsset(params: {
113
+ token: string;
114
+ recipient: string;
115
+ amount: number;
116
+ feeRate?: number;
117
+ minConfirmations?: number;
118
+ donation?: boolean;
119
+ }): Promise<any>;
120
+ sendBtcOnchain(params: {
121
+ address: string;
122
+ amount: number;
123
+ feeRate?: number;
124
+ }): Promise<any>;
125
+ /** Encrypted wallet backup bytes (rgb-lib's own format). */
126
+ backup(password: string): Promise<Uint8Array>;
127
+ disconnect(): Promise<void>;
128
+ }
129
+ //# sourceMappingURL=RgbLibWasmAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RgbLibWasmAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/wdk/RgbLibWasmAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,308 @@
1
+ /**
2
+ * RgbLibWasmAdapter
3
+ * -----------------
4
+ * RGB-L1 (on-chain) backed by the BROWSER/WASM rgb-lib build
5
+ * (`@utexo/rgb-lib-wasm`) instead of the native addon used by
6
+ * `RgbLibWdkAdapter`. Same protocol surface (BTC on-chain + RGB assets on-chain,
7
+ * NO Lightning/channels/swaps), same `RgbCore` translation — only the backing
8
+ * differs, so the two cannot drift on asset/balance shape.
9
+ *
10
+ * Why a separate adapter: the native `@utexo/wdk-wallet-rgb` needs a filesystem
11
+ * `dataDir` + a Node/Bare runtime and cannot load in a browser / MV3 service
12
+ * worker. The wasm build is a wasm-bindgen `--target web` module that persists to
13
+ * IndexedDB and uses only fetch / crypto / WebAssembly — so it runs node-less in
14
+ * the extension (and on mobile). It is the path that makes self-custodial RGB-L1
15
+ * possible without an rgb-lightning-node.
16
+ *
17
+ * Runtime-agnostic: the host injects an ALREADY-wasm-initialized module via
18
+ * `registerWdkModule('@utexo/rgb-lib-wasm', () => initializedModule)`. The host
19
+ * owns where the 13 MB `_bg.wasm` comes from (`chrome.runtime.getURL(...)` in the
20
+ * extension; a bundled asset on mobile) and must have awaited the default
21
+ * `init(...)` export before injecting. This adapter never touches `fetch`/URLs.
22
+ *
23
+ * Discipline: no rgb-lib/wasm types cross the contract — the module + wallet are
24
+ * read as `any` and translated. Field names are read defensively and should be
25
+ * smoke-tested on-device (validated offline: keys, wallet, address, listAssets).
26
+ *
27
+ * WasmWallet API used (from @utexo/rgb-lib-wasm@1.0.0-beta.2):
28
+ * static create(walletDataJson) → WasmWallet (IndexedDB-restoring)
29
+ * goOnline(skipConsistencyCheck, indexerUrl) → online
30
+ * getAddress() · getBtcBalance() · getAssetBalance(id) · listAssets(schemas[])
31
+ * blindReceive(assetId|null, assignment, duration|null, transportEndpoints, minConf)
32
+ * sendBegin(online, recipientMap, donation, feeRate, minConf) · signPsbt(psbt)
33
+ * · sendEnd(online, signedPsbt, skipSync)
34
+ * sendBtcBegin/sendBtcEnd · createUtxosBegin/createUtxosEnd · refresh · sync
35
+ * listTransactions() · listTransfers(assetId?)
36
+ * Top-level: init() (panic/log hook) · restoreKeys(network, mnemonic) → keys.
37
+ */
38
+ import { ProtocolError, } from '../../types/base.js';
39
+ import { getCapabilities } from '../../capabilities/index.js';
40
+ import { PROTOCOL_OPERATIONS } from '../../capabilities/operations.js';
41
+ import { loadWdkModule } from './moduleLoader.js';
42
+ import { rgbBtcAsset, rgbNiaAsset, rgbAssetBalance, RGB_L1_PROFILE } from './RgbCore.js';
43
+ import { BaseWdkAdapter } from './BaseWdkAdapter.js';
44
+ /** Map the engine network string → rgb-lib's network enum casing. */
45
+ function toRgbNetwork(network) {
46
+ switch (network.toLowerCase()) {
47
+ case 'mainnet':
48
+ case 'bitcoin':
49
+ return 'Mainnet';
50
+ case 'testnet':
51
+ return 'Testnet';
52
+ case 'signet':
53
+ return 'Signet';
54
+ case 'regtest':
55
+ return 'Regtest';
56
+ default:
57
+ return 'Mainnet';
58
+ }
59
+ }
60
+ export class RgbLibWasmAdapter extends BaseWdkAdapter {
61
+ constructor() {
62
+ super(...arguments);
63
+ this.protocolName = 'RGB_L1';
64
+ this.capabilities = PROTOCOL_OPERATIONS.RGB_L1;
65
+ this.supportedLayers = getCapabilities('RGB_L1').layers;
66
+ this.version = '0.1.0-wasm';
67
+ /** The rgb-lib `online` handle returned by goOnline(); required by network ops. */
68
+ this.online = null;
69
+ this.transportEndpoints = [];
70
+ }
71
+ // --- Connection ---------------------------------------------------------
72
+ async connect(config) {
73
+ const cfg = config;
74
+ if (!cfg.mnemonic)
75
+ throw new ProtocolError('RgbLibWasmAdapter requires a mnemonic', 'RGB_L1', 'CONFIG');
76
+ if (!cfg.indexerUrl)
77
+ throw new ProtocolError('RgbLibWasmAdapter requires an indexerUrl', 'RGB_L1', 'CONFIG');
78
+ this.network = cfg.network ?? 'mainnet';
79
+ this.transportEndpoints = cfg.transportEndpoints ?? [];
80
+ const rgbNetwork = toRgbNetwork(this.network);
81
+ // The host injects an already-wasm-initialized module; the inline import is
82
+ // the Node/Vite fallback. `init()` is rgb-lib's panic/log hook (idempotent).
83
+ // @ts-ignore — declared as an optional dep; resolved at runtime.
84
+ const mod = await loadWdkModule('@utexo/rgb-lib-wasm', () => import('@utexo/rgb-lib-wasm'));
85
+ try {
86
+ mod.init?.();
87
+ }
88
+ catch {
89
+ /* already initialized */
90
+ }
91
+ const keys = mod.restoreKeys(rgbNetwork, cfg.mnemonic);
92
+ const walletData = {
93
+ dataDir: cfg.dataDir ?? `rgb-l1-${this.network}`,
94
+ bitcoinNetwork: rgbNetwork,
95
+ databaseType: 'Sqlite', // the enum value the wasm build accepts; IndexedDB is the actual backing
96
+ maxAllocationsPerUtxo: cfg.maxAllocationsPerUtxo ?? 5,
97
+ mnemonic: keys.mnemonic ?? cfg.mnemonic,
98
+ masterFingerprint: keys.masterFingerprint ?? keys.master_fingerprint,
99
+ accountXpubVanilla: keys.accountXpubVanilla ?? keys.account_xpub_vanilla,
100
+ accountXpubColored: keys.accountXpubColored ?? keys.account_xpub_colored,
101
+ vanillaKeychain: null,
102
+ supportedSchemas: ['Nia', 'Ifa'],
103
+ };
104
+ const WasmWallet = mod.WasmWallet;
105
+ this.account = WasmWallet.create
106
+ ? await WasmWallet.create(JSON.stringify(walletData))
107
+ : new WasmWallet(JSON.stringify(walletData));
108
+ this.online = await this.account.goOnline(false, cfg.indexerUrl);
109
+ this.connected = true;
110
+ }
111
+ async getConnectionInfo() {
112
+ this.assertConnected();
113
+ return { protocol: 'RGB_L1', connected: this.connected, network: this.network };
114
+ }
115
+ // --- Address / receive --------------------------------------------------
116
+ async getReceiveAddress(assetId) {
117
+ this.assertConnected();
118
+ if (assetId) {
119
+ const inv = await this.blindReceive(assetId);
120
+ return { address: inv?.invoice ?? inv?.recipient_id ?? '', format: 'RGB_INVOICE', asset: assetId };
121
+ }
122
+ const address = this.account.getAddress();
123
+ return { address, format: 'BTC_ADDRESS' };
124
+ }
125
+ // --- Balance ------------------------------------------------------------
126
+ async getBtcBalance() {
127
+ this.assertConnected();
128
+ const v = this.account.getBtcBalance() ?? {};
129
+ const vanilla = v.vanilla ?? v;
130
+ const settled = Number(vanilla.settled ?? 0);
131
+ const spendable = Number(vanilla.spendable ?? settled);
132
+ const future = Number(vanilla.future ?? spendable);
133
+ return { confirmed: settled, unconfirmed: Math.max(0, future - settled), total: spendable };
134
+ }
135
+ async refreshBalances() {
136
+ this.assertConnected();
137
+ try {
138
+ await this.account.refresh(this.online, null, [], false);
139
+ await this.account.sync(this.online);
140
+ }
141
+ catch {
142
+ /* best-effort */
143
+ }
144
+ }
145
+ async listAssets() {
146
+ this.assertConnected();
147
+ const { total } = await this.getBtcBalance();
148
+ const out = [rgbBtcAsset(total, RGB_L1_PROFILE)];
149
+ const res = this.account.listAssets([]);
150
+ const assets = Array.isArray(res) ? res : [...(res?.nia ?? []), ...(res?.ifa ?? [])];
151
+ for (const a of assets)
152
+ out.push(rgbNiaAsset(normalizeAsset(a), RGB_L1_PROFILE));
153
+ return out;
154
+ }
155
+ async getAssetBalance(assetId) {
156
+ this.assertConnected();
157
+ try {
158
+ const raw = this.account.getAssetBalance(assetId);
159
+ return rgbAssetBalance(raw);
160
+ }
161
+ catch {
162
+ const a = (await this.listAssets()).find((x) => x.id === assetId);
163
+ return a?.balance ?? rgbAssetBalance({});
164
+ }
165
+ }
166
+ async getAsset(assetId) {
167
+ const found = (await this.listAssets()).find((a) => a.id === assetId);
168
+ if (!found)
169
+ throw new ProtocolError(`Unknown asset ${assetId}`, 'RGB_L1', 'NO_ASSET');
170
+ return found;
171
+ }
172
+ // --- Invoices -----------------------------------------------------------
173
+ async createInvoice(request) {
174
+ this.assertConnected();
175
+ if (!request.asset || request.asset === 'BTC') {
176
+ throw new ProtocolError('RGB-L1 has no Lightning invoices; use getReceiveAddress for BTC', 'RGB_L1', 'NOT_SUPPORTED');
177
+ }
178
+ const inv = await this.blindReceive(request.asset, request.assetAmount, request.expirySeconds);
179
+ return {
180
+ invoice: inv?.invoice ?? '',
181
+ paymentHash: inv?.recipientId ?? inv?.recipient_id ?? '',
182
+ amount: request.assetAmount,
183
+ expiresAt: inv?.expirationTimestamp ? inv.expirationTimestamp * 1000 : Date.now() + (request.expirySeconds ?? 3600) * 1000,
184
+ description: request.description,
185
+ };
186
+ }
187
+ async decodeInvoice(_invoice) {
188
+ throw new ProtocolError('RGB-L1 adapter does not decode invoices', 'RGB_L1', 'NOT_SUPPORTED');
189
+ }
190
+ // --- Send (Lightning not supported) -------------------------------------
191
+ async sendPayment(_request) {
192
+ throw new ProtocolError('RGB-L1 has no Lightning send; use sendAsset or sendBtcOnchain', 'RGB_L1', 'NOT_SUPPORTED');
193
+ }
194
+ async getPaymentStatus(_paymentHash) {
195
+ throw new ProtocolError('RGB-L1 has no Lightning payment status', 'RGB_L1', 'NOT_SUPPORTED');
196
+ }
197
+ // --- Transactions -------------------------------------------------------
198
+ async listTransactions(_filter) {
199
+ this.assertConnected();
200
+ const raw = this.account.listTransactions();
201
+ const txs = Array.isArray(raw) ? raw : raw?.transactions ?? [];
202
+ return txs.map((t) => {
203
+ const received = Number(t.received ?? 0);
204
+ const sent = Number(t.sent ?? 0);
205
+ const confTime = t.confirmationTime ?? t.confirmation_time;
206
+ return {
207
+ id: t.txid ?? t.transactionId ?? t.transaction_id ?? '',
208
+ type: (received >= sent ? 'receive' : 'send'),
209
+ status: (confTime ? 'confirmed' : 'pending'),
210
+ timestamp: Number(confTime?.timestamp ?? 0) * 1000,
211
+ amount: Math.abs(received - sent) || received || sent,
212
+ amountDisplay: '',
213
+ asset: undefined,
214
+ protocolData: t,
215
+ };
216
+ });
217
+ }
218
+ async getTransaction(txId) {
219
+ const found = (await this.listTransactions()).find((t) => t.id === txId);
220
+ if (!found)
221
+ throw new ProtocolError(`Unknown tx ${txId}`, 'RGB_L1', 'NO_TX');
222
+ return found;
223
+ }
224
+ async getNodeInfo() {
225
+ return {};
226
+ }
227
+ async listChannels() {
228
+ return [];
229
+ }
230
+ async listPayments() {
231
+ return [];
232
+ }
233
+ async listTransfers(options) {
234
+ this.assertConnected();
235
+ return this.account.listTransfers(options?.asset_id ?? null);
236
+ }
237
+ // --- RGB-specific hooks (used by the RGB host surface) ------------------
238
+ async createRgbInvoice(params) {
239
+ this.assertConnected();
240
+ return this.blindReceive(params.assetId, params.amount, params.durationSeconds, params.minConfirmations);
241
+ }
242
+ /** Generate a blinded receive invoice (RGB UTXO-based receive). */
243
+ async blindReceive(assetId, amount, durationSeconds, minConfirmations = 1) {
244
+ const assignment = amount != null ? { Fungible: BigInt(amount) } : null;
245
+ return this.account.blindReceive(assetId ?? null, assignment, durationSeconds ?? null, this.transportEndpoints, minConfirmations);
246
+ }
247
+ async signPsbt(psbtHex) {
248
+ this.assertConnected();
249
+ const signed = this.account.signPsbt(psbtHex);
250
+ return { psbt: signed ?? psbtHex, unchanged: !signed || signed === psbtHex };
251
+ }
252
+ async createRgbUtxos(params) {
253
+ this.assertConnected();
254
+ const feeRate = BigInt(Math.round(params.feeRate ?? 1));
255
+ const unsigned = await this.account.createUtxosBegin(this.online, params.upTo ?? false, params.num ?? null, params.size ?? null, feeRate, false);
256
+ const signed = this.account.signPsbt(unsigned);
257
+ await this.account.createUtxosEnd(this.online, signed, false);
258
+ return { success: true };
259
+ }
260
+ async sendAsset(params) {
261
+ this.assertConnected();
262
+ // recipient map: { [assetId]: [{ recipientId, witnessData?, amount, transportEndpoints }] }
263
+ const recipientMap = {
264
+ [params.token]: [
265
+ {
266
+ recipientId: params.recipient,
267
+ amount: BigInt(params.amount),
268
+ transportEndpoints: this.transportEndpoints,
269
+ },
270
+ ],
271
+ };
272
+ const feeRate = BigInt(Math.round(params.feeRate ?? 1));
273
+ const unsigned = await this.account.sendBegin(this.online, recipientMap, params.donation ?? false, feeRate, params.minConfirmations ?? 1);
274
+ const signed = this.account.signPsbt(unsigned);
275
+ return this.account.sendEnd(this.online, signed, false);
276
+ }
277
+ async sendBtcOnchain(params) {
278
+ this.assertConnected();
279
+ const feeRate = BigInt(Math.round(params.feeRate ?? 1));
280
+ const unsigned = await this.account.sendBtcBegin(this.online, params.address, BigInt(params.amount), feeRate, false);
281
+ const signed = this.account.signPsbt(unsigned);
282
+ const txid = await this.account.sendBtcEnd(this.online, signed, false);
283
+ return { ok: true, txid };
284
+ }
285
+ /** Encrypted wallet backup bytes (rgb-lib's own format). */
286
+ async backup(password) {
287
+ this.assertConnected();
288
+ return this.account.backup(password);
289
+ }
290
+ async disconnect() {
291
+ this.online = null;
292
+ await super.disconnect();
293
+ }
294
+ }
295
+ /**
296
+ * Normalize an rgb-lib-wasm asset record into the shape `RgbCore.rgbNiaAsset`
297
+ * expects (it may use camelCase `assetId` or snake_case `asset_id`).
298
+ */
299
+ function normalizeAsset(a) {
300
+ return {
301
+ asset_id: a?.assetId ?? a?.asset_id ?? a?.id ?? '',
302
+ name: a?.name,
303
+ ticker: a?.ticker,
304
+ precision: a?.precision,
305
+ balance: a?.balance,
306
+ };
307
+ }
308
+ //# sourceMappingURL=RgbLibWasmAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RgbLibWasmAdapter.js","sourceRoot":"","sources":["../../../src/adapters/wdk/RgbLibWasmAdapter.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ export { SparkWdkAdapter, type SparkAdapterConfig } from './SparkWdkAdapter.js';
10
10
  export { LiquidWdkAdapter, type LiquidAdapterConfig, LIQUID_USDT_ASSET_ID } from './LiquidWdkAdapter.js';
11
11
  export { RlnWdkAdapter, type RlnAdapterConfig } from './RlnWdkAdapter.js';
12
12
  export { RgbLibWdkAdapter, type RgbLibAdapterConfig } from './RgbLibWdkAdapter.js';
13
+ export { RgbLibWasmAdapter, type RgbLibWasmAdapterConfig } from './RgbLibWasmAdapter.js';
13
14
  export { ArkadeWdkAdapter, type ArkadeAdapterConfig } from './ArkadeWdkAdapter.js';
14
15
  export { createWdkRegistry, type WdkRegistryOptions } from '../../registry/createWdkRegistry.js';
15
16
  export { registerWdkModule, hasWdkModule, type WdkModuleLoader } from './moduleLoader.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/wdk/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,eAAe,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,EAAE,gBAAgB,EAAE,KAAK,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACrG,OAAO,EAAE,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC/E,OAAO,EAAE,gBAAgB,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC/E,OAAO,EAAE,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AAC7F,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/wdk/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,eAAe,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,EAAE,gBAAgB,EAAE,KAAK,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACrG,OAAO,EAAE,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC/E,OAAO,EAAE,iBAAiB,EAAE,KAAK,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AACrF,OAAO,EAAE,gBAAgB,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC/E,OAAO,EAAE,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AAC7F,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAA"}
@@ -10,6 +10,7 @@ export { SparkWdkAdapter } from './SparkWdkAdapter.js';
10
10
  export { LiquidWdkAdapter, LIQUID_USDT_ASSET_ID } from './LiquidWdkAdapter.js';
11
11
  export { RlnWdkAdapter } from './RlnWdkAdapter.js';
12
12
  export { RgbLibWdkAdapter } from './RgbLibWdkAdapter.js';
13
+ export { RgbLibWasmAdapter } from './RgbLibWasmAdapter.js';
13
14
  export { ArkadeWdkAdapter } from './ArkadeWdkAdapter.js';
14
15
  export { createWdkRegistry } from '../../registry/createWdkRegistry.js';
15
16
  export { registerWdkModule, hasWdkModule } from './moduleLoader.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/wdk/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,eAAe,EAA2B,MAAM,mBAAmB,CAAA;AAC5E,OAAO,EAAE,gBAAgB,EAA4B,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACrG,OAAO,EAAE,aAAa,EAAyB,MAAM,iBAAiB,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAA4B,MAAM,oBAAoB,CAAA;AAC/E,OAAO,EAAE,gBAAgB,EAA4B,MAAM,oBAAoB,CAAA;AAC/E,OAAO,EAAE,iBAAiB,EAA2B,MAAM,kCAAkC,CAAA;AAC7F,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAwB,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/wdk/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,eAAe,EAA2B,MAAM,mBAAmB,CAAA;AAC5E,OAAO,EAAE,gBAAgB,EAA4B,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACrG,OAAO,EAAE,aAAa,EAAyB,MAAM,iBAAiB,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAA4B,MAAM,oBAAoB,CAAA;AAC/E,OAAO,EAAE,iBAAiB,EAAgC,MAAM,qBAAqB,CAAA;AACrF,OAAO,EAAE,gBAAgB,EAA4B,MAAM,oBAAoB,CAAA;AAC/E,OAAO,EAAE,iBAAiB,EAA2B,MAAM,kCAAkC,CAAA;AAC7F,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAwB,MAAM,gBAAgB,CAAA"}
@@ -15,6 +15,14 @@ import { ProtocolType } from '../types/base.js';
15
15
  export interface WdkRegistryOptions {
16
16
  /** Which protocols to register (default: all four). */
17
17
  enabled?: ProtocolType[];
18
+ /**
19
+ * Which RGB_L1 backing to register when `RGB_L1` is enabled:
20
+ * - `'native'` (default): `RgbLibWdkAdapter` (native rgb-lib + filesystem
21
+ * dataDir; Node/RN/desktop only).
22
+ * - `'wasm'`: `RgbLibWasmAdapter` (browser/WASM rgb-lib + IndexedDB; runs
23
+ * node-less in an MV3 service worker).
24
+ */
25
+ rgbL1Backing?: 'native' | 'wasm';
18
26
  }
19
27
  export declare function createWdkRegistry(opts?: WdkRegistryOptions): ProtocolAdapterRegistry;
20
28
  //# sourceMappingURL=createWdkRegistry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createWdkRegistry.d.ts","sourceRoot":"","sources":["../../src/registry/createWdkRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAMtE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,OAAO,CAAC,EAAE,YAAY,EAAE,CAAA;CACzB;AAMD,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,kBAAuB,GAAG,uBAAuB,CASxF"}
1
+ {"version":3,"file":"createWdkRegistry.d.ts","sourceRoot":"","sources":["../../src/registry/createWdkRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAOtE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,OAAO,CAAC,EAAE,YAAY,EAAE,CAAA;IACxB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;CACjC;AAMD,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,kBAAuB,GAAG,uBAAuB,CAWxF"}
@@ -15,9 +15,10 @@ import { SparkWdkAdapter } from '../adapters/wdk/SparkWdkAdapter.js';
15
15
  import { LiquidWdkAdapter } from '../adapters/wdk/LiquidWdkAdapter.js';
16
16
  import { RlnWdkAdapter } from '../adapters/wdk/RlnWdkAdapter.js';
17
17
  import { RgbLibWdkAdapter } from '../adapters/wdk/RgbLibWdkAdapter.js';
18
+ import { RgbLibWasmAdapter } from '../adapters/wdk/RgbLibWasmAdapter.js';
18
19
  import { ArkadeWdkAdapter } from '../adapters/wdk/ArkadeWdkAdapter.js';
19
- // RGB_L1 is opt-in (not in the default set): it needs a local rgb-lib data dir
20
- // and is an alternative to the node-backed RGB path, not an addition to it.
20
+ // RGB_L1 is opt-in (not in the default set): it's an alternative to the
21
+ // node-backed RGB path, not an addition to it, and the backing is host-specific.
21
22
  const ALL = ['SPARK', 'LIQUID', 'RGB_LN', 'ARKADE'];
22
23
  export function createWdkRegistry(opts = {}) {
23
24
  const enabled = opts.enabled ?? ALL;
@@ -28,8 +29,9 @@ export function createWdkRegistry(opts = {}) {
28
29
  registry.register(new LiquidWdkAdapter());
29
30
  if (enabled.includes('RGB_LN'))
30
31
  registry.register(new RlnWdkAdapter());
31
- if (enabled.includes('RGB_L1'))
32
- registry.register(new RgbLibWdkAdapter());
32
+ if (enabled.includes('RGB_L1')) {
33
+ registry.register(opts.rgbL1Backing === 'wasm' ? new RgbLibWasmAdapter() : new RgbLibWdkAdapter());
34
+ }
33
35
  if (enabled.includes('ARKADE'))
34
36
  registry.register(new ArkadeWdkAdapter());
35
37
  return registry;
@@ -1 +1 @@
1
- {"version":3,"file":"createWdkRegistry.js","sourceRoot":"","sources":["../../src/registry/createWdkRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAQnE,+EAA+E;AAC/E,4EAA4E;AAC5E,MAAM,GAAG,GAAmB,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;AAEnE,MAAM,UAAU,iBAAiB,CAAC,OAA2B,EAAE;IAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,GAAG,CAAA;IACnC,MAAM,QAAQ,GAAG,IAAI,uBAAuB,EAAE,CAAA;IAC9C,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,eAAe,EAAE,CAAC,CAAA;IACvE,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAA;IACzE,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAA;IACtE,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAA;IACzE,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAA;IACzE,OAAO,QAAQ,CAAA;AACjB,CAAC"}
1
+ {"version":3,"file":"createWdkRegistry.js","sourceRoot":"","sources":["../../src/registry/createWdkRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAgBnE,wEAAwE;AACxE,iFAAiF;AACjF,MAAM,GAAG,GAAmB,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;AAEnE,MAAM,UAAU,iBAAiB,CAAC,OAA2B,EAAE;IAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,GAAG,CAAA;IACnC,MAAM,QAAQ,GAAG,IAAI,uBAAuB,EAAE,CAAA;IAC9C,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,eAAe,EAAE,CAAC,CAAA;IACvE,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAA;IACzE,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAA;IACtE,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAA;IACpG,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAA;IACzE,OAAO,QAAQ,CAAA;AACjB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kaleidorg/wallet-engine",
3
- "version": "1.0.0-beta.13",
3
+ "version": "1.0.0-beta.14",
4
4
  "description": "WDK-based multi-protocol wallet engine (Spark, RGB/RLN, Liquid, Arkade): IProtocolAdapter contract + WDK adapters, cross-protocol router, BIP321 unified receive, and lite/advanced disclosure.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",