@kaleidorg/wallet-engine 1.0.0-beta.31 → 1.0.0-beta.32

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 (45) hide show
  1. package/dist/adapters/ArkadeAdapter.d.ts +78 -15
  2. package/dist/adapters/ArkadeAdapter.d.ts.map +1 -1
  3. package/dist/adapters/ArkadeAdapter.js +652 -162
  4. package/dist/adapters/ArkadeAdapter.js.map +1 -1
  5. package/dist/adapters/native.d.ts +1 -0
  6. package/dist/adapters/native.d.ts.map +1 -1
  7. package/dist/adapters/native.js +1 -0
  8. package/dist/adapters/native.js.map +1 -1
  9. package/dist/index.d.ts +1 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +5 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/lib/arkade-client-manager.d.ts +64 -24
  14. package/dist/lib/arkade-client-manager.d.ts.map +1 -1
  15. package/dist/lib/arkade-client-manager.js +240 -65
  16. package/dist/lib/arkade-client-manager.js.map +1 -1
  17. package/dist/lib/arkade-converters.d.ts +39 -0
  18. package/dist/lib/arkade-converters.d.ts.map +1 -0
  19. package/dist/lib/arkade-converters.js +148 -0
  20. package/dist/lib/arkade-converters.js.map +1 -0
  21. package/dist/lib/arkade-helpers.d.ts +110 -0
  22. package/dist/lib/arkade-helpers.d.ts.map +1 -0
  23. package/dist/lib/arkade-helpers.js +227 -0
  24. package/dist/lib/arkade-helpers.js.map +1 -0
  25. package/dist/lib/arkade-swaps-client-manager.d.ts +55 -0
  26. package/dist/lib/arkade-swaps-client-manager.d.ts.map +1 -0
  27. package/dist/lib/arkade-swaps-client-manager.js +127 -0
  28. package/dist/lib/arkade-swaps-client-manager.js.map +1 -0
  29. package/dist/lib/arkade-vtxo-lifecycle.d.ts +116 -0
  30. package/dist/lib/arkade-vtxo-lifecycle.d.ts.map +1 -0
  31. package/dist/lib/arkade-vtxo-lifecycle.js +184 -0
  32. package/dist/lib/arkade-vtxo-lifecycle.js.map +1 -0
  33. package/dist/lib/ln-message-sign.d.ts +20 -0
  34. package/dist/lib/ln-message-sign.d.ts.map +1 -0
  35. package/dist/lib/ln-message-sign.js +90 -0
  36. package/dist/lib/ln-message-sign.js.map +1 -0
  37. package/dist/lib/log.d.ts +15 -0
  38. package/dist/lib/log.d.ts.map +1 -0
  39. package/dist/lib/log.js +16 -0
  40. package/dist/lib/log.js.map +1 -0
  41. package/dist/lib/zbase32.d.ts +3 -0
  42. package/dist/lib/zbase32.d.ts.map +1 -0
  43. package/dist/lib/zbase32.js +64 -0
  44. package/dist/lib/zbase32.js.map +1 -0
  45. package/package.json +8 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arkade-vtxo-lifecycle.d.ts","sourceRoot":"","sources":["../../src/lib/arkade-vtxo-lifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,184 @@
1
+ /**
2
+ * Arkade VTXO Lifecycle + Delegator management (platform-agnostic core).
3
+ *
4
+ * This module is deliberately free of any platform API (`chrome.*`, timers,
5
+ * notifications, storage). Consumers drive it:
6
+ * - The browser extension runs `runArkadeVtxoLifecycle()` from a
7
+ * `chrome.alarms` tick and maps the result to `chrome.notifications` +
8
+ * runtime broadcasts via the `callbacks`.
9
+ * - React Native schedules it however it prefers.
10
+ *
11
+ * It covers:
12
+ * - VTXO auto-renewal — renew VTXOs approaching expiry
13
+ * - Orphan VTXO recovery — surface recoverable (swept/expired) balance
14
+ * - Boarding UTXO expiry — surface expired boarding UTXOs
15
+ * - VTXO delegation — delegate spendable VTXOs when enabled
16
+ *
17
+ * @arkade-os/sdk is referenced by TYPE only (erased at compile time), so this
18
+ * module is safe to export from the engine's root barrel.
19
+ */
20
+ // ---------------------------------------------------------------------------
21
+ // Settings — normalized shape + sanitizers + defaults
22
+ // ---------------------------------------------------------------------------
23
+ /** Delegator service endpoints per network. */
24
+ export const ARKADE_DELEGATOR_URLS = {
25
+ signet: "https://delegator.mutinynet.arkade.sh",
26
+ mainnet: "https://delegate.arkade.money",
27
+ };
28
+ export const DEFAULT_DELEGATOR_URL = ARKADE_DELEGATOR_URLS.mainnet;
29
+ /** Seconds before batch expiry at which a VTXO becomes eligible for auto-renewal (3 days). */
30
+ export const DEFAULT_VTXO_THRESHOLD_SECONDS = 259200;
31
+ /**
32
+ * Coerce a raw delegator URL to a safe HTTPS URL, falling back to the
33
+ * network default when missing / non-HTTPS / unparseable.
34
+ */
35
+ export function sanitizeDelegatorUrl(rawUrl, network = "mainnet") {
36
+ const defaultUrl = ARKADE_DELEGATOR_URLS[network];
37
+ if (typeof rawUrl !== "string")
38
+ return defaultUrl;
39
+ const trimmed = rawUrl.trim();
40
+ if (trimmed.length === 0)
41
+ return defaultUrl;
42
+ try {
43
+ const url = new URL(trimmed);
44
+ if (url.protocol !== "https:")
45
+ return defaultUrl;
46
+ }
47
+ catch {
48
+ return defaultUrl;
49
+ }
50
+ return trimmed;
51
+ }
52
+ /** Coerce a raw delegation-enabled flag to a boolean (defaults to true when undefined). */
53
+ export function sanitizeDelegationEnabled(rawValue) {
54
+ if (rawValue === undefined)
55
+ return true;
56
+ if (typeof rawValue === "boolean")
57
+ return rawValue;
58
+ if (typeof rawValue === "number")
59
+ return rawValue !== 0 && !Number.isNaN(rawValue);
60
+ if (typeof rawValue === "string") {
61
+ const normalized = rawValue.trim().toLowerCase();
62
+ return normalized === "true" || normalized === "1" || normalized === "yes";
63
+ }
64
+ return false;
65
+ }
66
+ /** Coerce a raw threshold to a positive integer of seconds, defaulting to 3 days. */
67
+ export function sanitizeVtxoThresholdSeconds(rawValue) {
68
+ const parsed = typeof rawValue === "number" ? rawValue : typeof rawValue === "string" ? Number(rawValue) : NaN;
69
+ return Number.isFinite(parsed) && parsed > 0
70
+ ? Math.floor(parsed)
71
+ : DEFAULT_VTXO_THRESHOLD_SECONDS;
72
+ }
73
+ /**
74
+ * Sanitize a raw lifecycle-settings object into a clean `ArkadeLifecycleSettings`.
75
+ * Consumers read platform storage into a raw object and pass it here — storage
76
+ * key naming stays consumer-side; the normalized shape + validation lives here.
77
+ */
78
+ export function resolveArkadeLifecycleSettings(raw) {
79
+ const network = raw.network ?? "mainnet";
80
+ return {
81
+ delegatorUrl: sanitizeDelegatorUrl(raw.delegatorUrl, network),
82
+ delegationEnabled: sanitizeDelegationEnabled(raw.delegationEnabled),
83
+ vtxoThresholdSeconds: sanitizeVtxoThresholdSeconds(raw.vtxoThresholdSeconds),
84
+ };
85
+ }
86
+ /**
87
+ * Delegate all currently-spendable (settled/preconfirmed) VTXOs to the
88
+ * configured delegator. Returns `{ delegated: 0, failed: 0 }` when delegation
89
+ * is not configured or there is nothing to delegate.
90
+ */
91
+ export async function delegateSpendableVtxos(wallet) {
92
+ const delegatorManager = await wallet.getDelegatorManager();
93
+ if (!delegatorManager) {
94
+ return { delegated: 0, failed: 0 };
95
+ }
96
+ const vtxos = await wallet.getVtxos();
97
+ const spendable = vtxos.filter((v) => v.virtualStatus?.state === "settled" || v.virtualStatus?.state === "preconfirmed");
98
+ if (spendable.length === 0) {
99
+ return { delegated: 0, failed: 0 };
100
+ }
101
+ const ownAddress = await wallet.getAddress();
102
+ // ExtendedVirtualCoin carries all ContractVtxo fields at runtime; the SDK
103
+ // populates contractScript on delegation-eligible VTXOs.
104
+ const result = await delegatorManager.delegate(spendable, ownAddress);
105
+ return { delegated: result.delegated.length, failed: result.failed.length };
106
+ }
107
+ /**
108
+ * Resolve delegate info from the wallet's delegator manager. Returns
109
+ * `{ configured: false }` when delegation is not configured.
110
+ */
111
+ export async function getArkadeDelegateInfo(wallet) {
112
+ const delegatorManager = await wallet.getDelegatorManager();
113
+ if (!delegatorManager) {
114
+ return { configured: false };
115
+ }
116
+ const info = await delegatorManager.getDelegateInfo();
117
+ return { configured: true, ...info };
118
+ }
119
+ /**
120
+ * Run one pass of the VTXO lifecycle. Every stage is best-effort and isolated:
121
+ * a failure in one stage is recorded in `result.errors` (and reported via
122
+ * `callbacks.onError`) but never aborts the remaining stages.
123
+ */
124
+ export async function runArkadeVtxoLifecycle(args) {
125
+ const { vtxoManager, wallet, config, callbacks } = args;
126
+ const result = {
127
+ renewed: null,
128
+ recoverable: null,
129
+ expiredBoardingCount: 0,
130
+ delegated: null,
131
+ errors: [],
132
+ };
133
+ const record = (stage, error) => {
134
+ const msg = error instanceof Error ? error.message : String(error);
135
+ result.errors.push(`${stage}: ${msg}`);
136
+ callbacks?.onError?.(stage, error);
137
+ };
138
+ // 1. Auto-renewal — renew VTXOs approaching expiry.
139
+ try {
140
+ const expiringVtxos = await vtxoManager.getExpiringVtxos();
141
+ if (expiringVtxos.length > 0) {
142
+ const txid = await vtxoManager.renewVtxos((event) => {
143
+ callbacks?.onRenewalEvent?.(event.type);
144
+ });
145
+ result.renewed = { count: expiringVtxos.length, txid };
146
+ callbacks?.onVtxosRenewed?.({ count: expiringVtxos.length, txid });
147
+ }
148
+ }
149
+ catch (error) {
150
+ record("renew", error);
151
+ }
152
+ // 2. Orphan recovery — surface recoverable balance.
153
+ try {
154
+ const balance = await vtxoManager.getRecoverableBalance();
155
+ result.recoverable = {
156
+ recoverable: balance.recoverable,
157
+ subdust: balance.subdust,
158
+ includesSubdust: balance.includesSubdust,
159
+ vtxoCount: balance.vtxoCount,
160
+ };
161
+ }
162
+ catch (error) {
163
+ record("recoverable", error);
164
+ }
165
+ // 3. Boarding UTXO expiry — surface expired boarding UTXOs.
166
+ try {
167
+ const expired = await vtxoManager.getExpiredBoardingUtxos();
168
+ result.expiredBoardingCount = expired.length;
169
+ }
170
+ catch (error) {
171
+ record("boarding-expiry", error);
172
+ }
173
+ // 4. Delegation — delegate spendable VTXOs when enabled + configured.
174
+ if (config?.delegationEnabled && config?.delegatorUrl) {
175
+ try {
176
+ result.delegated = await delegateSpendableVtxos(wallet);
177
+ }
178
+ catch (error) {
179
+ record("delegate", error);
180
+ }
181
+ }
182
+ return result;
183
+ }
184
+ //# sourceMappingURL=arkade-vtxo-lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arkade-vtxo-lifecycle.js","sourceRoot":"","sources":["../../src/lib/arkade-vtxo-lifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Reject phishing-style messages that match the canonical LNURL-auth
3
+ * disclaimer. Signing one would expose the LNURL-auth identity.
4
+ */
5
+ export declare function assertSafeToSign(message: string): void;
6
+ /**
7
+ * Sign a message with the LND `signmessage` algorithm and return the
8
+ * zbase32-encoded recoverable signature.
9
+ */
10
+ export declare function signLnMessage(message: string, privateKey: Uint8Array): string;
11
+ /**
12
+ * Verify a zbase32-encoded LND signature against the supplied message.
13
+ * Returns the recovered compressed pubkey (hex) on success, or throws.
14
+ */
15
+ export declare function verifyLnMessage(message: string, zbase32Signature: string): string;
16
+ /**
17
+ * Verify a zbase32 signature is from a specific pubkey. Throws on mismatch.
18
+ */
19
+ export declare function verifyLnMessageFrom(message: string, zbase32Signature: string, expectedPubkeyHex: string): void;
20
+ //# sourceMappingURL=ln-message-sign.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ln-message-sign.d.ts","sourceRoot":"","sources":["../../src/lib/ln-message-sign.ts"],"names":[],"mappings":"AA8BA;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAItD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,CAmB7E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAkBjF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,EAAE,MAAM,GACxB,IAAI,CAKN"}
@@ -0,0 +1,90 @@
1
+ import { secp256k1 } from "@noble/curves/secp256k1.js";
2
+ import { sha256 } from "@noble/hashes/sha2.js";
3
+ import { bytesToHex } from "@noble/hashes/utils.js";
4
+ import { zbase32Encode, zbase32Decode } from "./zbase32.js";
5
+ // LND-style signMessage / verifyMessage.
6
+ //
7
+ // prefix = "Lightning Signed Message:"
8
+ // hash = sha256(sha256(prefix + message))
9
+ // sig = recoverable ECDSA over secp256k1, 65 bytes (recid+31 || r || s)
10
+ // text = zbase32(sig)
11
+ //
12
+ // This is the format Alby's LND/lndhub/LNbits connectors return and is
13
+ // what LNURL-auth-style verifyMessage callers expect. The non-recoverable
14
+ // hex/DER form some other wallets emit cannot be verified without knowing
15
+ // the signing pubkey out-of-band.
16
+ const LN_MSG_PREFIX = new TextEncoder().encode("Lightning Signed Message:");
17
+ const LNURL_AUTH_CANONICAL_PHRASE = "DO NOT EVER SIGN THIS TEXT WITH YOUR PRIVATE KEYS! IT IS ONLY USED FOR DERIVATION OF LNURL-AUTH HASHING-KEY, DISCLOSING ITS SIGNATURE WILL COMPROMISE YOUR LNURL-AUTH IDENTITY AND MAY LEAD TO LOSS OF FUNDS!";
18
+ function lnMessageHash(message) {
19
+ const msgBytes = new TextEncoder().encode(message);
20
+ const concat = new Uint8Array(LN_MSG_PREFIX.length + msgBytes.length);
21
+ concat.set(LN_MSG_PREFIX, 0);
22
+ concat.set(msgBytes, LN_MSG_PREFIX.length);
23
+ return sha256(sha256(concat));
24
+ }
25
+ /**
26
+ * Reject phishing-style messages that match the canonical LNURL-auth
27
+ * disclaimer. Signing one would expose the LNURL-auth identity.
28
+ */
29
+ export function assertSafeToSign(message) {
30
+ if (message.trim() === LNURL_AUTH_CANONICAL_PHRASE.trim()) {
31
+ throw new Error("Refusing to sign LNURL-auth canonical phrase");
32
+ }
33
+ }
34
+ /**
35
+ * Sign a message with the LND `signmessage` algorithm and return the
36
+ * zbase32-encoded recoverable signature.
37
+ */
38
+ export function signLnMessage(message, privateKey) {
39
+ assertSafeToSign(message);
40
+ const hash = lnMessageHash(message);
41
+ // `format: "recovered"` returns 65 bytes laid out as [recid, r(32), s(32)].
42
+ // `prehash: false` because we already hashed.
43
+ const recovered = secp256k1.sign(hash, privateKey, {
44
+ format: "recovered",
45
+ prehash: false,
46
+ lowS: true,
47
+ });
48
+ if (recovered.length !== 65) {
49
+ throw new Error("Unexpected recoverable signature length");
50
+ }
51
+ // LND wire format adds 31 to the recovery id to land in the printable byte
52
+ // range; downstream Bitcoin Core's signmessage uses 27 — we match LND.
53
+ const out = new Uint8Array(65);
54
+ out[0] = recovered[0] + 31;
55
+ out.set(recovered.subarray(1), 1);
56
+ return zbase32Encode(out);
57
+ }
58
+ /**
59
+ * Verify a zbase32-encoded LND signature against the supplied message.
60
+ * Returns the recovered compressed pubkey (hex) on success, or throws.
61
+ */
62
+ export function verifyLnMessage(message, zbase32Signature) {
63
+ const bytes = zbase32Decode(zbase32Signature, 65);
64
+ if (bytes.length !== 65) {
65
+ throw new Error("Invalid signature length");
66
+ }
67
+ const recovery = bytes[0] - 31;
68
+ if (recovery < 0 || recovery > 3) {
69
+ throw new Error("Invalid recovery id");
70
+ }
71
+ // Reassemble `recovered` shape expected by @noble: [recid, r, s].
72
+ const recoveredBytes = new Uint8Array(65);
73
+ recoveredBytes[0] = recovery;
74
+ recoveredBytes.set(bytes.subarray(1), 1);
75
+ const hash = lnMessageHash(message);
76
+ const pubkeyBytes = secp256k1.recoverPublicKey(recoveredBytes, hash, {
77
+ prehash: false,
78
+ });
79
+ return bytesToHex(pubkeyBytes);
80
+ }
81
+ /**
82
+ * Verify a zbase32 signature is from a specific pubkey. Throws on mismatch.
83
+ */
84
+ export function verifyLnMessageFrom(message, zbase32Signature, expectedPubkeyHex) {
85
+ const recovered = verifyLnMessage(message, zbase32Signature);
86
+ if (recovered.toLowerCase() !== expectedPubkeyHex.toLowerCase()) {
87
+ throw new Error("Signature does not match expected pubkey");
88
+ }
89
+ }
90
+ //# sourceMappingURL=ln-message-sign.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ln-message-sign.js","sourceRoot":"","sources":["../../src/lib/ln-message-sign.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Thin logger proxy over the platform `ports` seam.
3
+ *
4
+ * Ported Arkade modules use `log.info(...)` / `log.warn(...)` call sites. This
5
+ * proxy resolves the active platform logger lazily on each call so that a
6
+ * consumer's `setPlatform()` (extension / React Native) is honoured even when
7
+ * it runs after these modules are imported. Falls back to `consoleLogger`.
8
+ */
9
+ export declare const log: {
10
+ debug: (...args: unknown[]) => void;
11
+ info: (...args: unknown[]) => void;
12
+ warn: (...args: unknown[]) => void;
13
+ error: (...args: unknown[]) => void;
14
+ };
15
+ //# sourceMappingURL=log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/lib/log.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,eAAO,MAAM,GAAG;qBACG,OAAO,EAAE,KAAG,IAAI;oBACjB,OAAO,EAAE,KAAG,IAAI;oBAChB,OAAO,EAAE,KAAG,IAAI;qBACf,OAAO,EAAE,KAAG,IAAI;CAClC,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Thin logger proxy over the platform `ports` seam.
3
+ *
4
+ * Ported Arkade modules use `log.info(...)` / `log.warn(...)` call sites. This
5
+ * proxy resolves the active platform logger lazily on each call so that a
6
+ * consumer's `setPlatform()` (extension / React Native) is honoured even when
7
+ * it runs after these modules are imported. Falls back to `consoleLogger`.
8
+ */
9
+ import { getLogger } from "../ports/index.js";
10
+ export const log = {
11
+ debug: (...args) => getLogger().debug(...args),
12
+ info: (...args) => getLogger().info(...args),
13
+ warn: (...args) => getLogger().warn(...args),
14
+ error: (...args) => getLogger().error(...args),
15
+ };
16
+ //# sourceMappingURL=log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/lib/log.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,KAAK,EAAE,CAAC,GAAG,IAAe,EAAQ,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAC/D,IAAI,EAAE,CAAC,GAAG,IAAe,EAAQ,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7D,IAAI,EAAE,CAAC,GAAG,IAAe,EAAQ,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7D,KAAK,EAAE,CAAC,GAAG,IAAe,EAAQ,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;CAChE,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function zbase32Encode(data: Uint8Array): string;
2
+ export declare function zbase32Decode(text: string, byteLength?: number): Uint8Array;
3
+ //# sourceMappingURL=zbase32.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zbase32.d.ts","sourceRoot":"","sources":["../../src/lib/zbase32.ts"],"names":[],"mappings":"AAgBA,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAuBtD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU,CAsB3E"}
@@ -0,0 +1,64 @@
1
+ // zbase32 — Phil Zimmermann's human-friendly base32 alphabet, used by LND
2
+ // for `signmessage` / `verifymessage` outputs.
3
+ //
4
+ // alphabet = "ybndrfg8ejkmcpqxot1uwisza345h769"
5
+ //
6
+ // Encoding is the same shape as base32 (5 bits per char), but the alphabet
7
+ // is reordered so the resulting strings are easier to read and transcribe.
8
+ const ALPHABET = "ybndrfg8ejkmcpqxot1uwisza345h769";
9
+ const INDEX = (() => {
10
+ const m = new Map();
11
+ for (let i = 0; i < ALPHABET.length; i++)
12
+ m.set(ALPHABET[i], i);
13
+ return m;
14
+ })();
15
+ export function zbase32Encode(data) {
16
+ if (data.length === 0)
17
+ return "";
18
+ const bitCount = data.length * 8;
19
+ const charCount = Math.ceil(bitCount / 5);
20
+ let out = "";
21
+ let buffer = 0;
22
+ let bits = 0;
23
+ let consumed = 0;
24
+ for (let i = 0; i < data.length; i++) {
25
+ buffer = (buffer << 8) | data[i];
26
+ bits += 8;
27
+ while (bits >= 5 && consumed < charCount) {
28
+ bits -= 5;
29
+ const idx = (buffer >>> bits) & 0x1f;
30
+ out += ALPHABET[idx];
31
+ consumed++;
32
+ }
33
+ }
34
+ if (bits > 0 && consumed < charCount) {
35
+ const idx = (buffer << (5 - bits)) & 0x1f;
36
+ out += ALPHABET[idx];
37
+ }
38
+ return out;
39
+ }
40
+ export function zbase32Decode(text, byteLength) {
41
+ if (text.length === 0)
42
+ return new Uint8Array(0);
43
+ const expectedBytes = byteLength ?? Math.floor((text.length * 5) / 8);
44
+ const out = new Uint8Array(expectedBytes);
45
+ let buffer = 0;
46
+ let bits = 0;
47
+ let written = 0;
48
+ for (let i = 0; i < text.length; i++) {
49
+ const idx = INDEX.get(text[i]);
50
+ if (idx === undefined) {
51
+ throw new Error(`Invalid zbase32 character at position ${i}: ${text[i]}`);
52
+ }
53
+ buffer = (buffer << 5) | idx;
54
+ bits += 5;
55
+ if (bits >= 8) {
56
+ bits -= 8;
57
+ if (written < expectedBytes) {
58
+ out[written++] = (buffer >>> bits) & 0xff;
59
+ }
60
+ }
61
+ }
62
+ return out;
63
+ }
64
+ //# sourceMappingURL=zbase32.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zbase32.js","sourceRoot":"","sources":["../../src/lib/zbase32.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kaleidorg/wallet-engine",
3
- "version": "1.0.0-beta.31",
3
+ "version": "1.0.0-beta.32",
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",
@@ -40,6 +40,9 @@
40
40
  "dist"
41
41
  ],
42
42
  "dependencies": {
43
+ "@noble/curves": "^2.0.1",
44
+ "@noble/hashes": "^2.2.0",
45
+ "@scure/base": "^2.2.0",
43
46
  "@scure/bip32": "^1.5.0",
44
47
  "@scure/bip39": "^1.4.0"
45
48
  },
@@ -52,7 +55,8 @@
52
55
  }
53
56
  },
54
57
  "optionalDependencies": {
55
- "@arkade-os/sdk": "^0.4.14",
58
+ "@arkade-os/sdk": "^0.4.19",
59
+ "@arkade-os/boltz-swap": "^0.3.22",
56
60
  "@buildonspark/spark-sdk": "^0.7.10",
57
61
  "@flashnet/sdk": "^0.5.7",
58
62
  "@kaleidorg/wdk-protocol-swap-kaleidoswap": "^1.0.0-beta.2",
@@ -61,7 +65,8 @@
61
65
  "@tetherto/wdk-wallet-spark": "^1.0.0-beta.17"
62
66
  },
63
67
  "devDependencies": {
64
- "@arkade-os/sdk": "^0.4.14",
68
+ "@arkade-os/sdk": "^0.4.19",
69
+ "@arkade-os/boltz-swap": "^0.3.22",
65
70
  "@buildonspark/spark-sdk": "^0.7.10",
66
71
  "@flashnet/sdk": "^0.5.7",
67
72
  "kaleido-sdk": "^0.1.6",