@totemsdk/core 1.0.11 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -81,10 +81,24 @@ const { valid, error } = validateChallenge(challenge, {
81
81
  });
82
82
  ```
83
83
 
84
+ ## Upstream Java source
85
+
86
+ This package is a TypeScript port of core Minima Java cryptographic and data structures. Canonical upstream references:
87
+
88
+ - [`objects/keys/Winternitz.java`](https://github.com/spartacusrex-minima/minima-core/blob/main/src/org/minima/objects/keys/Winternitz.java) — WOTS signing/verification
89
+ - [`objects/keys/TreeKey.java`](https://github.com/spartacusrex-minima/minima-core/blob/main/src/org/minima/objects/keys/TreeKey.java) — hierarchical signing tree
90
+ - [`objects/keys/TreeKeyNode.java`](https://github.com/spartacusrex-minima/minima-core/blob/main/src/org/minima/objects/keys/TreeKeyNode.java) — tree node internals
91
+ - [`database/wallet/Wallet.java`](https://github.com/spartacusrex-minima/minima-core/blob/main/src/org/minima/database/wallet/Wallet.java) — key derivation (`modifier = BigInteger(numkeys)` → SHA3 → TreeKey)
92
+ - [`utils/Streamable.java`](https://github.com/spartacusrex-minima/minima-core/blob/main/src/org/minima/utils/Streamable.java) — byte-exact serialization interface
93
+ - [`objects/Coin.java`](https://github.com/spartacusrex-minima/minima-core/blob/main/src/org/minima/objects/Coin.java) — UTXO structure
94
+ - [`objects/Transaction.java`](https://github.com/spartacusrex-minima/minima-core/blob/main/src/org/minima/objects/Transaction.java) — transaction structure
95
+ - [`objects/Token.java`](https://github.com/spartacusrex-minima/minima-core/blob/main/src/org/minima/objects/Token.java) — token metadata
96
+ - [`objects/mmr/MMR.java`](https://github.com/spartacusrex-minima/minima-core/blob/main/src/org/minima/objects/mmr/MMR.java) — Merkle Mountain Range
97
+ - [`objects/mmr/MMRProof.java`](https://github.com/spartacusrex-minima/minima-core/blob/main/src/org/minima/objects/mmr/MMRProof.java) — MMR proof structure
98
+
84
99
  ## See also
85
100
 
86
101
  - [`@totemsdk/connect`](https://www.npmjs.com/package/@totemsdk/connect) — dApp gateway built on top of core
87
- - [`@totemsdk/node`](https://www.npmjs.com/package/@totemsdk/node) — core wired for Node.js server-side use
88
102
  - [`@totemsdk/wots-lease`](https://www.npmjs.com/package/@totemsdk/wots-lease) — cloud-coordinated WOTS key safety
89
103
  - [`@totemsdk/tx-builder`](https://www.npmjs.com/package/@totemsdk/tx-builder) — full transaction construction
90
104
  - [`@totemsdk/root-identity`](https://www.npmjs.com/package/@totemsdk/root-identity) — multi-address identity from one seed
package/dist/index.d.ts CHANGED
@@ -1,25 +1,37 @@
1
1
  /**
2
2
  * @module @totemsdk/core
3
- * Core cryptographic primitives, adapters, and utilities for Minima blockchain
3
+ * Core cryptographic primitives, adapters, and utilities for Minima blockchain.
4
+ *
5
+ * Cryptographic primitives are backed by Rust/WASM (@totemsdk/core-wasm).
6
+ * Legacy JS implementations are available at @totemsdk/core/legacy.
4
7
  */
5
8
  export * from './version.js';
6
9
  export * from './adapters/index.js';
7
10
  export { LeaseStore, WatermarkStore, LeaseMonitor, prepareLease, finalizeLease, flatIndexFromLanes, type StoredLease, type LeaseStatus, type LeaseStoreConfig, type LeaseWotsIndices, type WatermarkState, type SyncResult, type WatermarkStoreConfig, type LeaseExpiryEvent, type LeaseExpiryCallback, type LeaseMonitorConfig, type PrepareArgs, type PrepareResp, } from './lease/index.js';
8
11
  export { TransactionService, TransactionLifecycle, TransactionLifecycleError, WatermarkExhaustedError, TransactionReceiptStore, type TransactionServiceConfig, type WotsSigningDependencies, type TransactionLifecycleConfig, type WatermarkSyncFunction, type PrepareResult, type TransactionReceiptStoreConfig, type PrepareRequest, type PrepareResponse, type SignRequest, type SignResult, type HierarchicalWitnessBundle, type WitnessBundle, type FinalizeRequest, type FinalizeResponse, type TransactionMetadata, type TransactionReceipt, type TransactionError, } from './tx/index.js';
9
12
  export type { WotsIndices } from './tx/index.js';
10
- export * from './utils.js';
11
- export { F, hex, fromHex, u16be, u32be, assert32, h, prfChainSeed, toWinternitzDigits, baseWWithChecksum, derivePKdigest, wotsKeypairFromSeed, wotsSign, wotsSignLegacy, wotsPkFromSig, wotsVerify, wotsVerifyDigest, wotsPublicKeyFromSeed, type WotsKeypair, type WotsSignature, } from './wots.js';
13
+ export { bytesToHex, hexToBytes, concatBytes } from './wasm-sync.js';
14
+ export { sha3_256 } from './wasm-sync.js';
15
+ export { expandPrivateKey, hashChain, derivePKdigest, deriveFullPublicKey, wotsSign, wotsVerify, wotsVerifyDigest, wotsPkFromSig, wotsPublicKeyFromSeed, wotsKeypairFromSeed, } from './wasm-sync.js';
12
16
  export * from './params.js';
13
- export { serializeMiniNumber, serializeMiniData, hashAllObjects, deriveChainSeedJava, deriveChildTreeSeedJava, hashObject, serializeMiniNumberZERO, serializeMiniNumberONE, writeHashToStream, javaHashAllObjects, indexToMiniDataBytes, derivePerAddressSeed, createMMREntryNumber, serializeMMREntryNumber, serializeMMRData, serializeMMREntry, precomputeTransactionCoinID, type MMREntryNumber as JavaMMREntryNumber, type MMRData as JavaMMRData, type MMREntry as JavaMMREntry, } from './javaStreamables.js';
14
- export { TreeKey, type KeyGenProgress, type ProgressCallback, TreeKeyNode, verifyTreeSignature, serializeTreeSignature, deserializeTreeSignature, getRootPublicKey, DEFAULT_KEYS_PER_LEVEL, DEFAULT_LEVELS, type SignatureProof, type TreeSignature, createPerAddressTreeKey, createPerAddressTreeKeyAsync, deriveAddressPublicKey, getPerAddressPublicKey, } from './treekey.js';
15
- export { scriptFromWotsPk, wotsAddressFromKeypair } from './script.js';
16
- export * from './minima32.js';
17
+ export { deriveChainSeedJava, derivePerAddressSeed, deriveRootPrivSeed, writeMiniNumber, writeMiniData, writeMiniString, precomputeTransactionCoinID, } from './wasm-sync.js';
18
+ export { createUnifiedChildTreeKey, createUnifiedRootTreeKey, deriveUnifiedAddressPublicKey, verifyTreeSignature, mmrRootFromPublicKeys, verifyMMRProof, } from './wasm-sync.js';
19
+ export { phraseToSeed, generateWordList, validatePhrase, cleanSeedPhrase, } from './wasm-sync.js';
20
+ export { makeMxAddress, parseMxAddress, wotsAddressFromKeypair, } from './wasm-sync.js';
21
+ export { serializeTransaction, computeTransactionDigest, } from './wasm-sync.js';
22
+ export { timingSafeEqual, createChallenge, validateChallenge, } from './wasm-sync.js';
23
+ export { scriptFromWotsPk } from './script.js';
24
+ export { makeMxAddress as encodeMx, parseMxAddress as decodeMx } from './wasm-sync.js';
17
25
  export * from './mmr.js';
18
26
  export * from './scripts/index.js';
19
27
  export { scriptToAddress, addressToRoot } from './derive.js';
20
- export { WORD_LIST, cleanSeedPhrase, validatePhrase, convertStringToSeed, convertWordListToSeed, phraseToSeed, generateWordList, generateSeedPhrase, } from './bip39.js';
21
- export { type MinimaTransaction, type MinimaCoin, type ParsedMiniNumber, type MinimaToken, type StateVariable, type RawStateVariable, type CoinProofData, type SpendableCoinInput, type TransactionBuildResult, parseDecimalToMiniNumber, serializeCoin, serializeTransaction, computeTransactionDigest, precomputeTransactionCoinID as precomputeTransactionCoinIDTx, createDefaultTransaction, buildMinimaCoin, } from './transaction.js';
22
- export { verifySignature, verifySignatureDetailed, verifyTreeSignatureDetailed, deriveAddressFromPublicKey, normalizeHex, createChallenge, validateChallenge, type VerificationResult, } from './verify.js';
28
+ export { WORD_LIST, convertStringToSeed, convertWordListToSeed, generateSeedPhrase, } from './bip39.js';
29
+ export { type MinimaTransaction, type MinimaCoin, type ParsedMiniNumber, type MinimaToken, type StateVariable, type RawStateVariable, type CoinProofData, type SpendableCoinInput, type TransactionBuildResult, parseDecimalToMiniNumber, serializeCoin, createDefaultTransaction, buildMinimaCoin, } from './transaction.js';
30
+ export { verifySignature, verifySignatureDetailed, verifyTreeSignatureDetailed, deriveAddressFromPublicKey, normalizeHex, type VerificationResult, } from './verify.js';
31
+ export { writeMiniByte, writeMMREntryNumber, concat, bigIntToByteArray, type Bytes, } from './Streamable.js';
32
+ export { serializeMiniNumber, serializeMiniData, hashAllObjects, deriveChildTreeSeedJava, hashObject, serializeMiniNumberZERO, serializeMiniNumberONE, writeHashToStream, javaHashAllObjects, indexToMiniDataBytes, deriveUnifiedChildSeed, createMMREntryNumber, serializeMMREntryNumber, serializeMMRData, serializeMMREntry, type MMREntryNumber as JavaMMREntryNumber, type MMRData as JavaMMRData, type MMREntry as JavaMMREntry, } from './javaStreamables.js';
33
+ export { TreeKey, TreeKeyNode, serializeTreeSignature, deserializeTreeSignature, getRootPublicKey, DEFAULT_KEYS_PER_LEVEL, DEFAULT_LEVELS, createUnifiedChildTreeKeyAsync, createPerAddressTreeKey, createPerAddressTreeKeyAsync, type KeyGenProgress, type ProgressCallback, type SignatureProof, type TreeSignature, } from './treekey.js';
34
+ export type { WotsKeypair, WotsSignature } from './wots.js';
23
35
  export declare const MINIMA_CONSTANTS: {
24
36
  readonly WOTS_W: 8;
25
37
  readonly WOTS_N: 32;
@@ -28,4 +40,3 @@ export declare const MINIMA_CONSTANTS: {
28
40
  readonly ADDRESS_PREFIX: "Mx";
29
41
  readonly NETWORK_ID: 1;
30
42
  };
31
- export { writeMiniNumber, writeMiniData, writeMiniByte, writeMMREntryNumber, concat, hexToBytes, bytesToHex, bigIntToByteArray, writeMiniString, type Bytes, } from './Streamable.js';
package/dist/index.js CHANGED
@@ -1,7 +1,10 @@
1
1
  "use strict";
2
2
  /**
3
3
  * @module @totemsdk/core
4
- * Core cryptographic primitives, adapters, and utilities for Minima blockchain
4
+ * Core cryptographic primitives, adapters, and utilities for Minima blockchain.
5
+ *
6
+ * Cryptographic primitives are backed by Rust/WASM (@totemsdk/core-wasm).
7
+ * Legacy JS implementations are available at @totemsdk/core/legacy.
5
8
  */
6
9
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
10
  if (k2 === undefined) k2 = k;
@@ -18,8 +21,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
21
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
19
22
  };
20
23
  Object.defineProperty(exports, "__esModule", { value: true });
21
- exports.serializeTreeSignature = exports.verifyTreeSignature = exports.TreeKeyNode = exports.TreeKey = exports.precomputeTransactionCoinID = exports.serializeMMREntry = exports.serializeMMRData = exports.serializeMMREntryNumber = exports.createMMREntryNumber = exports.derivePerAddressSeed = exports.indexToMiniDataBytes = exports.javaHashAllObjects = exports.writeHashToStream = exports.serializeMiniNumberONE = exports.serializeMiniNumberZERO = exports.hashObject = exports.deriveChildTreeSeedJava = exports.deriveChainSeedJava = exports.hashAllObjects = exports.serializeMiniData = exports.serializeMiniNumber = exports.wotsPublicKeyFromSeed = exports.wotsVerifyDigest = exports.wotsVerify = exports.wotsPkFromSig = exports.wotsSignLegacy = exports.wotsSign = exports.wotsKeypairFromSeed = exports.derivePKdigest = exports.baseWWithChecksum = exports.toWinternitzDigits = exports.prfChainSeed = exports.h = exports.assert32 = exports.u32be = exports.u16be = exports.fromHex = exports.hex = exports.F = exports.TransactionReceiptStore = exports.WatermarkExhaustedError = exports.TransactionLifecycleError = exports.TransactionLifecycle = exports.TransactionService = exports.flatIndexFromLanes = exports.finalizeLease = exports.prepareLease = exports.LeaseMonitor = exports.WatermarkStore = exports.LeaseStore = void 0;
22
- exports.writeMiniString = exports.bigIntToByteArray = exports.bytesToHex = exports.hexToBytes = exports.concat = exports.writeMMREntryNumber = exports.writeMiniByte = exports.writeMiniData = exports.writeMiniNumber = exports.MINIMA_CONSTANTS = exports.validateChallenge = exports.createChallenge = exports.normalizeHex = exports.deriveAddressFromPublicKey = exports.verifyTreeSignatureDetailed = exports.verifySignatureDetailed = exports.verifySignature = exports.buildMinimaCoin = exports.createDefaultTransaction = exports.precomputeTransactionCoinIDTx = exports.computeTransactionDigest = exports.serializeTransaction = exports.serializeCoin = exports.parseDecimalToMiniNumber = exports.generateSeedPhrase = exports.generateWordList = exports.phraseToSeed = exports.convertWordListToSeed = exports.convertStringToSeed = exports.validatePhrase = exports.cleanSeedPhrase = exports.WORD_LIST = exports.addressToRoot = exports.scriptToAddress = exports.wotsAddressFromKeypair = exports.scriptFromWotsPk = exports.getPerAddressPublicKey = exports.deriveAddressPublicKey = exports.createPerAddressTreeKeyAsync = exports.createPerAddressTreeKey = exports.DEFAULT_LEVELS = exports.DEFAULT_KEYS_PER_LEVEL = exports.getRootPublicKey = exports.deserializeTreeSignature = void 0;
24
+ exports.validateChallenge = exports.createChallenge = exports.timingSafeEqual = exports.computeTransactionDigest = exports.serializeTransaction = exports.wotsAddressFromKeypair = exports.parseMxAddress = exports.makeMxAddress = exports.cleanSeedPhrase = exports.validatePhrase = exports.generateWordList = exports.phraseToSeed = exports.verifyMMRProof = exports.mmrRootFromPublicKeys = exports.verifyTreeSignature = exports.deriveUnifiedAddressPublicKey = exports.createUnifiedRootTreeKey = exports.createUnifiedChildTreeKey = exports.precomputeTransactionCoinID = exports.writeMiniString = exports.writeMiniData = exports.writeMiniNumber = exports.deriveRootPrivSeed = exports.derivePerAddressSeed = exports.deriveChainSeedJava = exports.wotsKeypairFromSeed = exports.wotsPublicKeyFromSeed = exports.wotsPkFromSig = exports.wotsVerifyDigest = exports.wotsVerify = exports.wotsSign = exports.deriveFullPublicKey = exports.derivePKdigest = exports.hashChain = exports.expandPrivateKey = exports.sha3_256 = exports.concatBytes = exports.hexToBytes = exports.bytesToHex = exports.TransactionReceiptStore = exports.WatermarkExhaustedError = exports.TransactionLifecycleError = exports.TransactionLifecycle = exports.TransactionService = exports.flatIndexFromLanes = exports.finalizeLease = exports.prepareLease = exports.LeaseMonitor = exports.WatermarkStore = exports.LeaseStore = void 0;
25
+ exports.MINIMA_CONSTANTS = exports.createPerAddressTreeKeyAsync = exports.createPerAddressTreeKey = exports.createUnifiedChildTreeKeyAsync = exports.DEFAULT_LEVELS = exports.DEFAULT_KEYS_PER_LEVEL = exports.getRootPublicKey = exports.deserializeTreeSignature = exports.serializeTreeSignature = exports.TreeKeyNode = exports.TreeKey = exports.serializeMMREntry = exports.serializeMMRData = exports.serializeMMREntryNumber = exports.createMMREntryNumber = exports.deriveUnifiedChildSeed = exports.indexToMiniDataBytes = exports.javaHashAllObjects = exports.writeHashToStream = exports.serializeMiniNumberONE = exports.serializeMiniNumberZERO = exports.hashObject = exports.deriveChildTreeSeedJava = exports.hashAllObjects = exports.serializeMiniData = exports.serializeMiniNumber = exports.bigIntToByteArray = exports.concat = exports.writeMMREntryNumber = exports.writeMiniByte = exports.normalizeHex = exports.deriveAddressFromPublicKey = exports.verifyTreeSignatureDetailed = exports.verifySignatureDetailed = exports.verifySignature = exports.buildMinimaCoin = exports.createDefaultTransaction = exports.serializeCoin = exports.parseDecimalToMiniNumber = exports.generateSeedPhrase = exports.convertWordListToSeed = exports.convertStringToSeed = exports.WORD_LIST = exports.addressToRoot = exports.scriptToAddress = exports.decodeMx = exports.encodeMx = exports.scriptFromWotsPk = void 0;
23
26
  // Version information for bundle duplication detection
24
27
  __exportStar(require("./version.js"), exports);
25
28
  // Platform-agnostic Adapters (SDK Upgrade)
@@ -39,73 +42,79 @@ Object.defineProperty(exports, "TransactionLifecycle", { enumerable: true, get:
39
42
  Object.defineProperty(exports, "TransactionLifecycleError", { enumerable: true, get: function () { return index_js_2.TransactionLifecycleError; } });
40
43
  Object.defineProperty(exports, "WatermarkExhaustedError", { enumerable: true, get: function () { return index_js_2.WatermarkExhaustedError; } });
41
44
  Object.defineProperty(exports, "TransactionReceiptStore", { enumerable: true, get: function () { return index_js_2.TransactionReceiptStore; } });
42
- // Utilities first (canonical concatBytes source)
43
- __exportStar(require("./utils.js"), exports);
44
- // WOTS Signatures - wots.concatBytes is intentionally shadowed by utils.concatBytes above
45
- var wots_js_1 = require("./wots.js");
46
- Object.defineProperty(exports, "F", { enumerable: true, get: function () { return wots_js_1.F; } });
47
- Object.defineProperty(exports, "hex", { enumerable: true, get: function () { return wots_js_1.hex; } });
48
- Object.defineProperty(exports, "fromHex", { enumerable: true, get: function () { return wots_js_1.fromHex; } });
49
- Object.defineProperty(exports, "u16be", { enumerable: true, get: function () { return wots_js_1.u16be; } });
50
- Object.defineProperty(exports, "u32be", { enumerable: true, get: function () { return wots_js_1.u32be; } });
51
- Object.defineProperty(exports, "assert32", { enumerable: true, get: function () { return wots_js_1.assert32; } });
52
- Object.defineProperty(exports, "h", { enumerable: true, get: function () { return wots_js_1.h; } });
53
- Object.defineProperty(exports, "prfChainSeed", { enumerable: true, get: function () { return wots_js_1.prfChainSeed; } });
54
- Object.defineProperty(exports, "toWinternitzDigits", { enumerable: true, get: function () { return wots_js_1.toWinternitzDigits; } });
55
- Object.defineProperty(exports, "baseWWithChecksum", { enumerable: true, get: function () { return wots_js_1.baseWWithChecksum; } });
56
- Object.defineProperty(exports, "derivePKdigest", { enumerable: true, get: function () { return wots_js_1.derivePKdigest; } });
57
- Object.defineProperty(exports, "wotsKeypairFromSeed", { enumerable: true, get: function () { return wots_js_1.wotsKeypairFromSeed; } });
58
- Object.defineProperty(exports, "wotsSign", { enumerable: true, get: function () { return wots_js_1.wotsSign; } });
59
- Object.defineProperty(exports, "wotsSignLegacy", { enumerable: true, get: function () { return wots_js_1.wotsSignLegacy; } });
60
- Object.defineProperty(exports, "wotsPkFromSig", { enumerable: true, get: function () { return wots_js_1.wotsPkFromSig; } });
61
- Object.defineProperty(exports, "wotsVerify", { enumerable: true, get: function () { return wots_js_1.wotsVerify; } });
62
- Object.defineProperty(exports, "wotsVerifyDigest", { enumerable: true, get: function () { return wots_js_1.wotsVerifyDigest; } });
63
- Object.defineProperty(exports, "wotsPublicKeyFromSeed", { enumerable: true, get: function () { return wots_js_1.wotsPublicKeyFromSeed; } });
64
- // WOTS Params (from params.ts, imported by wots.ts)
45
+ // ---------------------------------------------------------------------------
46
+ // Cryptographic primitives — backed by Rust/WASM (@totemsdk/core-wasm)
47
+ // ---------------------------------------------------------------------------
48
+ // Utilities
49
+ var wasm_sync_js_1 = require("./wasm-sync.js");
50
+ Object.defineProperty(exports, "bytesToHex", { enumerable: true, get: function () { return wasm_sync_js_1.bytesToHex; } });
51
+ Object.defineProperty(exports, "hexToBytes", { enumerable: true, get: function () { return wasm_sync_js_1.hexToBytes; } });
52
+ Object.defineProperty(exports, "concatBytes", { enumerable: true, get: function () { return wasm_sync_js_1.concatBytes; } });
53
+ // SHA3-256
54
+ var wasm_sync_js_2 = require("./wasm-sync.js");
55
+ Object.defineProperty(exports, "sha3_256", { enumerable: true, get: function () { return wasm_sync_js_2.sha3_256; } });
56
+ // WOTS Signatures
57
+ var wasm_sync_js_3 = require("./wasm-sync.js");
58
+ Object.defineProperty(exports, "expandPrivateKey", { enumerable: true, get: function () { return wasm_sync_js_3.expandPrivateKey; } });
59
+ Object.defineProperty(exports, "hashChain", { enumerable: true, get: function () { return wasm_sync_js_3.hashChain; } });
60
+ Object.defineProperty(exports, "derivePKdigest", { enumerable: true, get: function () { return wasm_sync_js_3.derivePKdigest; } });
61
+ Object.defineProperty(exports, "deriveFullPublicKey", { enumerable: true, get: function () { return wasm_sync_js_3.deriveFullPublicKey; } });
62
+ Object.defineProperty(exports, "wotsSign", { enumerable: true, get: function () { return wasm_sync_js_3.wotsSign; } });
63
+ Object.defineProperty(exports, "wotsVerify", { enumerable: true, get: function () { return wasm_sync_js_3.wotsVerify; } });
64
+ Object.defineProperty(exports, "wotsVerifyDigest", { enumerable: true, get: function () { return wasm_sync_js_3.wotsVerifyDigest; } });
65
+ Object.defineProperty(exports, "wotsPkFromSig", { enumerable: true, get: function () { return wasm_sync_js_3.wotsPkFromSig; } });
66
+ Object.defineProperty(exports, "wotsPublicKeyFromSeed", { enumerable: true, get: function () { return wasm_sync_js_3.wotsPublicKeyFromSeed; } });
67
+ Object.defineProperty(exports, "wotsKeypairFromSeed", { enumerable: true, get: function () { return wasm_sync_js_3.wotsKeypairFromSeed; } });
68
+ // WOTS Params (from params.ts — constants, no crypto)
65
69
  __exportStar(require("./params.js"), exports);
66
- // Java-Compatible Serialization Helpers (for Minima-compatible seed derivation)
67
- var javaStreamables_js_1 = require("./javaStreamables.js");
68
- Object.defineProperty(exports, "serializeMiniNumber", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMiniNumber; } });
69
- Object.defineProperty(exports, "serializeMiniData", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMiniData; } });
70
- Object.defineProperty(exports, "hashAllObjects", { enumerable: true, get: function () { return javaStreamables_js_1.hashAllObjects; } });
71
- Object.defineProperty(exports, "deriveChainSeedJava", { enumerable: true, get: function () { return javaStreamables_js_1.deriveChainSeedJava; } });
72
- Object.defineProperty(exports, "deriveChildTreeSeedJava", { enumerable: true, get: function () { return javaStreamables_js_1.deriveChildTreeSeedJava; } });
73
- Object.defineProperty(exports, "hashObject", { enumerable: true, get: function () { return javaStreamables_js_1.hashObject; } });
74
- Object.defineProperty(exports, "serializeMiniNumberZERO", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMiniNumberZERO; } });
75
- Object.defineProperty(exports, "serializeMiniNumberONE", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMiniNumberONE; } });
76
- Object.defineProperty(exports, "writeHashToStream", { enumerable: true, get: function () { return javaStreamables_js_1.writeHashToStream; } });
77
- Object.defineProperty(exports, "javaHashAllObjects", { enumerable: true, get: function () { return javaStreamables_js_1.javaHashAllObjects; } });
78
- // Per-address key derivation (Minima Wallet.java compatible) - 2026-02
79
- Object.defineProperty(exports, "indexToMiniDataBytes", { enumerable: true, get: function () { return javaStreamables_js_1.indexToMiniDataBytes; } });
80
- Object.defineProperty(exports, "derivePerAddressSeed", { enumerable: true, get: function () { return javaStreamables_js_1.derivePerAddressSeed; } });
81
- // MMREntryNumber and MMREntry serialization (2026-01-18)
82
- Object.defineProperty(exports, "createMMREntryNumber", { enumerable: true, get: function () { return javaStreamables_js_1.createMMREntryNumber; } });
83
- Object.defineProperty(exports, "serializeMMREntryNumber", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMMREntryNumber; } });
84
- Object.defineProperty(exports, "serializeMMRData", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMMRData; } });
85
- Object.defineProperty(exports, "serializeMMREntry", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMMREntry; } });
86
- Object.defineProperty(exports, "precomputeTransactionCoinID", { enumerable: true, get: function () { return javaStreamables_js_1.precomputeTransactionCoinID; } });
87
- // TreeKey/TreeKeyNode - Hierarchical WOTS key tree matching Minima's TreeKey.java
88
- var treekey_js_1 = require("./treekey.js");
89
- Object.defineProperty(exports, "TreeKey", { enumerable: true, get: function () { return treekey_js_1.TreeKey; } });
90
- Object.defineProperty(exports, "TreeKeyNode", { enumerable: true, get: function () { return treekey_js_1.TreeKeyNode; } });
91
- Object.defineProperty(exports, "verifyTreeSignature", { enumerable: true, get: function () { return treekey_js_1.verifyTreeSignature; } });
92
- Object.defineProperty(exports, "serializeTreeSignature", { enumerable: true, get: function () { return treekey_js_1.serializeTreeSignature; } });
93
- Object.defineProperty(exports, "deserializeTreeSignature", { enumerable: true, get: function () { return treekey_js_1.deserializeTreeSignature; } });
94
- Object.defineProperty(exports, "getRootPublicKey", { enumerable: true, get: function () { return treekey_js_1.getRootPublicKey; } });
95
- Object.defineProperty(exports, "DEFAULT_KEYS_PER_LEVEL", { enumerable: true, get: function () { return treekey_js_1.DEFAULT_KEYS_PER_LEVEL; } });
96
- Object.defineProperty(exports, "DEFAULT_LEVELS", { enumerable: true, get: function () { return treekey_js_1.DEFAULT_LEVELS; } });
97
- // Per-address TreeKey helpers (Minima Wallet.java compatible) - 2026-02
98
- Object.defineProperty(exports, "createPerAddressTreeKey", { enumerable: true, get: function () { return treekey_js_1.createPerAddressTreeKey; } });
99
- Object.defineProperty(exports, "createPerAddressTreeKeyAsync", { enumerable: true, get: function () { return treekey_js_1.createPerAddressTreeKeyAsync; } });
100
- Object.defineProperty(exports, "deriveAddressPublicKey", { enumerable: true, get: function () { return treekey_js_1.deriveAddressPublicKey; } });
101
- Object.defineProperty(exports, "getPerAddressPublicKey", { enumerable: true, get: function () { return treekey_js_1.getPerAddressPublicKey; } });
70
+ // Java-Compatible Serialization
71
+ var wasm_sync_js_4 = require("./wasm-sync.js");
72
+ Object.defineProperty(exports, "deriveChainSeedJava", { enumerable: true, get: function () { return wasm_sync_js_4.deriveChainSeedJava; } });
73
+ Object.defineProperty(exports, "derivePerAddressSeed", { enumerable: true, get: function () { return wasm_sync_js_4.derivePerAddressSeed; } });
74
+ Object.defineProperty(exports, "deriveRootPrivSeed", { enumerable: true, get: function () { return wasm_sync_js_4.deriveRootPrivSeed; } });
75
+ Object.defineProperty(exports, "writeMiniNumber", { enumerable: true, get: function () { return wasm_sync_js_4.writeMiniNumber; } });
76
+ Object.defineProperty(exports, "writeMiniData", { enumerable: true, get: function () { return wasm_sync_js_4.writeMiniData; } });
77
+ Object.defineProperty(exports, "writeMiniString", { enumerable: true, get: function () { return wasm_sync_js_4.writeMiniString; } });
78
+ Object.defineProperty(exports, "precomputeTransactionCoinID", { enumerable: true, get: function () { return wasm_sync_js_4.precomputeTransactionCoinID; } });
79
+ // TreeKey/TreeKeyNode WASM-backed
80
+ var wasm_sync_js_5 = require("./wasm-sync.js");
81
+ Object.defineProperty(exports, "createUnifiedChildTreeKey", { enumerable: true, get: function () { return wasm_sync_js_5.createUnifiedChildTreeKey; } });
82
+ Object.defineProperty(exports, "createUnifiedRootTreeKey", { enumerable: true, get: function () { return wasm_sync_js_5.createUnifiedRootTreeKey; } });
83
+ Object.defineProperty(exports, "deriveUnifiedAddressPublicKey", { enumerable: true, get: function () { return wasm_sync_js_5.deriveUnifiedAddressPublicKey; } });
84
+ Object.defineProperty(exports, "verifyTreeSignature", { enumerable: true, get: function () { return wasm_sync_js_5.verifyTreeSignature; } });
85
+ Object.defineProperty(exports, "mmrRootFromPublicKeys", { enumerable: true, get: function () { return wasm_sync_js_5.mmrRootFromPublicKeys; } });
86
+ Object.defineProperty(exports, "verifyMMRProof", { enumerable: true, get: function () { return wasm_sync_js_5.verifyMMRProof; } });
87
+ // BIP39 Seed Phrase Handling
88
+ var wasm_sync_js_6 = require("./wasm-sync.js");
89
+ Object.defineProperty(exports, "phraseToSeed", { enumerable: true, get: function () { return wasm_sync_js_6.phraseToSeed; } });
90
+ Object.defineProperty(exports, "generateWordList", { enumerable: true, get: function () { return wasm_sync_js_6.generateWordList; } });
91
+ Object.defineProperty(exports, "validatePhrase", { enumerable: true, get: function () { return wasm_sync_js_6.validatePhrase; } });
92
+ Object.defineProperty(exports, "cleanSeedPhrase", { enumerable: true, get: function () { return wasm_sync_js_6.cleanSeedPhrase; } });
93
+ // Address Derivation
94
+ var wasm_sync_js_7 = require("./wasm-sync.js");
95
+ Object.defineProperty(exports, "makeMxAddress", { enumerable: true, get: function () { return wasm_sync_js_7.makeMxAddress; } });
96
+ Object.defineProperty(exports, "parseMxAddress", { enumerable: true, get: function () { return wasm_sync_js_7.parseMxAddress; } });
97
+ Object.defineProperty(exports, "wotsAddressFromKeypair", { enumerable: true, get: function () { return wasm_sync_js_7.wotsAddressFromKeypair; } });
98
+ // Transaction Serialization & Digest
99
+ var wasm_sync_js_8 = require("./wasm-sync.js");
100
+ Object.defineProperty(exports, "serializeTransaction", { enumerable: true, get: function () { return wasm_sync_js_8.serializeTransaction; } });
101
+ Object.defineProperty(exports, "computeTransactionDigest", { enumerable: true, get: function () { return wasm_sync_js_8.computeTransactionDigest; } });
102
+ // Verification
103
+ var wasm_sync_js_9 = require("./wasm-sync.js");
104
+ Object.defineProperty(exports, "timingSafeEqual", { enumerable: true, get: function () { return wasm_sync_js_9.timingSafeEqual; } });
105
+ Object.defineProperty(exports, "createChallenge", { enumerable: true, get: function () { return wasm_sync_js_9.createChallenge; } });
106
+ Object.defineProperty(exports, "validateChallenge", { enumerable: true, get: function () { return wasm_sync_js_9.validateChallenge; } });
107
+ // ---------------------------------------------------------------------------
108
+ // TypeScript-only modules (no crypto — keep as-is)
109
+ // ---------------------------------------------------------------------------
102
110
  // Script helpers (for address derivation)
103
111
  var script_js_1 = require("./script.js");
104
112
  Object.defineProperty(exports, "scriptFromWotsPk", { enumerable: true, get: function () { return script_js_1.scriptFromWotsPk; } });
105
- Object.defineProperty(exports, "wotsAddressFromKeypair", { enumerable: true, get: function () { return script_js_1.wotsAddressFromKeypair; } });
106
- // Base32 Encoding (Minima-compatible)
107
- __exportStar(require("./minima32.js"), exports);
108
- // Merkle Mountain Range (original)
113
+ // Base32 Encoding (Minima-compatible) re-export from WASM
114
+ var wasm_sync_js_10 = require("./wasm-sync.js");
115
+ Object.defineProperty(exports, "encodeMx", { enumerable: true, get: function () { return wasm_sync_js_10.makeMxAddress; } });
116
+ Object.defineProperty(exports, "decodeMx", { enumerable: true, get: function () { return wasm_sync_js_10.parseMxAddress; } });
117
+ // Merkle Mountain Range (original JS — types and helpers)
109
118
  __exportStar(require("./mmr.js"), exports);
110
119
  // Script Types, Witness Serializer, Contract Helpers
111
120
  __exportStar(require("./scripts/index.js"), exports);
@@ -113,23 +122,16 @@ __exportStar(require("./scripts/index.js"), exports);
113
122
  var derive_js_1 = require("./derive.js");
114
123
  Object.defineProperty(exports, "scriptToAddress", { enumerable: true, get: function () { return derive_js_1.scriptToAddress; } });
115
124
  Object.defineProperty(exports, "addressToRoot", { enumerable: true, get: function () { return derive_js_1.addressToRoot; } });
116
- // BIP39 Seed Phrase Handling (Minima-compatible, NOT standard BIP39)
125
+ // BIP39 re-export word list and legacy helpers from JS
117
126
  var bip39_js_1 = require("./bip39.js");
118
127
  Object.defineProperty(exports, "WORD_LIST", { enumerable: true, get: function () { return bip39_js_1.WORD_LIST; } });
119
- Object.defineProperty(exports, "cleanSeedPhrase", { enumerable: true, get: function () { return bip39_js_1.cleanSeedPhrase; } });
120
- Object.defineProperty(exports, "validatePhrase", { enumerable: true, get: function () { return bip39_js_1.validatePhrase; } });
121
128
  Object.defineProperty(exports, "convertStringToSeed", { enumerable: true, get: function () { return bip39_js_1.convertStringToSeed; } });
122
129
  Object.defineProperty(exports, "convertWordListToSeed", { enumerable: true, get: function () { return bip39_js_1.convertWordListToSeed; } });
123
- Object.defineProperty(exports, "phraseToSeed", { enumerable: true, get: function () { return bip39_js_1.phraseToSeed; } });
124
- Object.defineProperty(exports, "generateWordList", { enumerable: true, get: function () { return bip39_js_1.generateWordList; } });
125
130
  Object.defineProperty(exports, "generateSeedPhrase", { enumerable: true, get: function () { return bip39_js_1.generateSeedPhrase; } });
126
- // Transaction Serialization & Digest (Java-compatible, extension parity)
131
+ // Transaction types (from JS)
127
132
  var transaction_js_1 = require("./transaction.js");
128
133
  Object.defineProperty(exports, "parseDecimalToMiniNumber", { enumerable: true, get: function () { return transaction_js_1.parseDecimalToMiniNumber; } });
129
134
  Object.defineProperty(exports, "serializeCoin", { enumerable: true, get: function () { return transaction_js_1.serializeCoin; } });
130
- Object.defineProperty(exports, "serializeTransaction", { enumerable: true, get: function () { return transaction_js_1.serializeTransaction; } });
131
- Object.defineProperty(exports, "computeTransactionDigest", { enumerable: true, get: function () { return transaction_js_1.computeTransactionDigest; } });
132
- Object.defineProperty(exports, "precomputeTransactionCoinIDTx", { enumerable: true, get: function () { return transaction_js_1.precomputeTransactionCoinID; } });
133
135
  Object.defineProperty(exports, "createDefaultTransaction", { enumerable: true, get: function () { return transaction_js_1.createDefaultTransaction; } });
134
136
  Object.defineProperty(exports, "buildMinimaCoin", { enumerable: true, get: function () { return transaction_js_1.buildMinimaCoin; } });
135
137
  // High-level Verification API (convenience functions for integrators)
@@ -139,8 +141,41 @@ Object.defineProperty(exports, "verifySignatureDetailed", { enumerable: true, ge
139
141
  Object.defineProperty(exports, "verifyTreeSignatureDetailed", { enumerable: true, get: function () { return verify_js_1.verifyTreeSignatureDetailed; } });
140
142
  Object.defineProperty(exports, "deriveAddressFromPublicKey", { enumerable: true, get: function () { return verify_js_1.deriveAddressFromPublicKey; } });
141
143
  Object.defineProperty(exports, "normalizeHex", { enumerable: true, get: function () { return verify_js_1.normalizeHex; } });
142
- Object.defineProperty(exports, "createChallenge", { enumerable: true, get: function () { return verify_js_1.createChallenge; } });
143
- Object.defineProperty(exports, "validateChallenge", { enumerable: true, get: function () { return verify_js_1.validateChallenge; } });
144
+ // Streamable primitives (low-level serialization building blocks)
145
+ var Streamable_js_1 = require("./Streamable.js");
146
+ Object.defineProperty(exports, "writeMiniByte", { enumerable: true, get: function () { return Streamable_js_1.writeMiniByte; } });
147
+ Object.defineProperty(exports, "writeMMREntryNumber", { enumerable: true, get: function () { return Streamable_js_1.writeMMREntryNumber; } });
148
+ Object.defineProperty(exports, "concat", { enumerable: true, get: function () { return Streamable_js_1.concat; } });
149
+ Object.defineProperty(exports, "bigIntToByteArray", { enumerable: true, get: function () { return Streamable_js_1.bigIntToByteArray; } });
150
+ // Java-Compatible Serialization Helpers (non-crypto)
151
+ var javaStreamables_js_1 = require("./javaStreamables.js");
152
+ Object.defineProperty(exports, "serializeMiniNumber", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMiniNumber; } });
153
+ Object.defineProperty(exports, "serializeMiniData", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMiniData; } });
154
+ Object.defineProperty(exports, "hashAllObjects", { enumerable: true, get: function () { return javaStreamables_js_1.hashAllObjects; } });
155
+ Object.defineProperty(exports, "deriveChildTreeSeedJava", { enumerable: true, get: function () { return javaStreamables_js_1.deriveChildTreeSeedJava; } });
156
+ Object.defineProperty(exports, "hashObject", { enumerable: true, get: function () { return javaStreamables_js_1.hashObject; } });
157
+ Object.defineProperty(exports, "serializeMiniNumberZERO", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMiniNumberZERO; } });
158
+ Object.defineProperty(exports, "serializeMiniNumberONE", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMiniNumberONE; } });
159
+ Object.defineProperty(exports, "writeHashToStream", { enumerable: true, get: function () { return javaStreamables_js_1.writeHashToStream; } });
160
+ Object.defineProperty(exports, "javaHashAllObjects", { enumerable: true, get: function () { return javaStreamables_js_1.javaHashAllObjects; } });
161
+ Object.defineProperty(exports, "indexToMiniDataBytes", { enumerable: true, get: function () { return javaStreamables_js_1.indexToMiniDataBytes; } });
162
+ Object.defineProperty(exports, "deriveUnifiedChildSeed", { enumerable: true, get: function () { return javaStreamables_js_1.deriveUnifiedChildSeed; } });
163
+ Object.defineProperty(exports, "createMMREntryNumber", { enumerable: true, get: function () { return javaStreamables_js_1.createMMREntryNumber; } });
164
+ Object.defineProperty(exports, "serializeMMREntryNumber", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMMREntryNumber; } });
165
+ Object.defineProperty(exports, "serializeMMRData", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMMRData; } });
166
+ Object.defineProperty(exports, "serializeMMREntry", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMMREntry; } });
167
+ // TreeKey/TreeKeyNode — JS types and helpers
168
+ var treekey_js_1 = require("./treekey.js");
169
+ Object.defineProperty(exports, "TreeKey", { enumerable: true, get: function () { return treekey_js_1.TreeKey; } });
170
+ Object.defineProperty(exports, "TreeKeyNode", { enumerable: true, get: function () { return treekey_js_1.TreeKeyNode; } });
171
+ Object.defineProperty(exports, "serializeTreeSignature", { enumerable: true, get: function () { return treekey_js_1.serializeTreeSignature; } });
172
+ Object.defineProperty(exports, "deserializeTreeSignature", { enumerable: true, get: function () { return treekey_js_1.deserializeTreeSignature; } });
173
+ Object.defineProperty(exports, "getRootPublicKey", { enumerable: true, get: function () { return treekey_js_1.getRootPublicKey; } });
174
+ Object.defineProperty(exports, "DEFAULT_KEYS_PER_LEVEL", { enumerable: true, get: function () { return treekey_js_1.DEFAULT_KEYS_PER_LEVEL; } });
175
+ Object.defineProperty(exports, "DEFAULT_LEVELS", { enumerable: true, get: function () { return treekey_js_1.DEFAULT_LEVELS; } });
176
+ Object.defineProperty(exports, "createUnifiedChildTreeKeyAsync", { enumerable: true, get: function () { return treekey_js_1.createUnifiedChildTreeKeyAsync; } });
177
+ Object.defineProperty(exports, "createPerAddressTreeKey", { enumerable: true, get: function () { return treekey_js_1.createPerAddressTreeKey; } });
178
+ Object.defineProperty(exports, "createPerAddressTreeKeyAsync", { enumerable: true, get: function () { return treekey_js_1.createPerAddressTreeKeyAsync; } });
144
179
  // Constants
145
180
  exports.MINIMA_CONSTANTS = {
146
181
  WOTS_W: 8,
@@ -150,14 +185,3 @@ exports.MINIMA_CONSTANTS = {
150
185
  ADDRESS_PREFIX: 'Mx',
151
186
  NETWORK_ID: 1
152
187
  };
153
- // Streamable primitives (low-level serialization building blocks)
154
- var Streamable_js_1 = require("./Streamable.js");
155
- Object.defineProperty(exports, "writeMiniNumber", { enumerable: true, get: function () { return Streamable_js_1.writeMiniNumber; } });
156
- Object.defineProperty(exports, "writeMiniData", { enumerable: true, get: function () { return Streamable_js_1.writeMiniData; } });
157
- Object.defineProperty(exports, "writeMiniByte", { enumerable: true, get: function () { return Streamable_js_1.writeMiniByte; } });
158
- Object.defineProperty(exports, "writeMMREntryNumber", { enumerable: true, get: function () { return Streamable_js_1.writeMMREntryNumber; } });
159
- Object.defineProperty(exports, "concat", { enumerable: true, get: function () { return Streamable_js_1.concat; } });
160
- Object.defineProperty(exports, "hexToBytes", { enumerable: true, get: function () { return Streamable_js_1.hexToBytes; } });
161
- Object.defineProperty(exports, "bytesToHex", { enumerable: true, get: function () { return Streamable_js_1.bytesToHex; } });
162
- Object.defineProperty(exports, "bigIntToByteArray", { enumerable: true, get: function () { return Streamable_js_1.bigIntToByteArray; } });
163
- Object.defineProperty(exports, "writeMiniString", { enumerable: true, get: function () { return Streamable_js_1.writeMiniString; } });
@@ -210,6 +210,27 @@ export interface MMREntry {
210
210
  * @returns Serialized bytes: MiniNumber(row) + MMREntryNumber + MMRData
211
211
  */
212
212
  export declare function serializeMMREntry(entry: MMREntry): Uint8Array;
213
+ /**
214
+ * Derive the unified root private seed from a base wallet seed.
215
+ *
216
+ * Architecture:
217
+ * root_priv_seed = SHA3-256( serializeMiniData(baseSeed) ‖ serializeMiniData("ROOT_IDENTITY" bytes) )
218
+ *
219
+ * @param baseSeed - 32-byte wallet base seed (from mnemonic)
220
+ * @returns 32-byte root private seed
221
+ */
222
+ export declare function deriveRootPrivSeed(baseSeed: Uint8Array): Uint8Array;
223
+ /**
224
+ * Derive a unified child seed for the address at `index`.
225
+ *
226
+ * Architecture:
227
+ * child_seed_i = SHA3-256( serializeMiniData(root_priv_seed) ‖ serializeMiniData(indexBytes(i)) )
228
+ *
229
+ * @param baseSeed - 32-byte wallet base seed (from mnemonic)
230
+ * @param index - Address index (0-63)
231
+ * @returns 32-byte child seed for the TreeKey at this address
232
+ */
233
+ export declare function deriveUnifiedChildSeed(baseSeed: Uint8Array, index: number): Uint8Array;
213
234
  /**
214
235
  * Precompute output coin IDs before computing the transaction digest.
215
236
  *
@@ -30,6 +30,8 @@ exports.createMMREntryNumber = createMMREntryNumber;
30
30
  exports.serializeMMREntryNumber = serializeMMREntryNumber;
31
31
  exports.serializeMMRData = serializeMMRData;
32
32
  exports.serializeMMREntry = serializeMMREntry;
33
+ exports.deriveRootPrivSeed = deriveRootPrivSeed;
34
+ exports.deriveUnifiedChildSeed = deriveUnifiedChildSeed;
33
35
  exports.precomputeTransactionCoinID = precomputeTransactionCoinID;
34
36
  const sha3_js_1 = require("@noble/hashes/sha3.js");
35
37
  const Streamable_js_1 = require("./Streamable.js");
@@ -316,6 +318,44 @@ function serializeMMREntry(entry) {
316
318
  result.set(mmrDataSerialized, offset);
317
319
  return result;
318
320
  }
321
+ /**
322
+ * Derive the unified root private seed from a base wallet seed.
323
+ *
324
+ * Architecture:
325
+ * root_priv_seed = SHA3-256( serializeMiniData(baseSeed) ‖ serializeMiniData("ROOT_IDENTITY" bytes) )
326
+ *
327
+ * @param baseSeed - 32-byte wallet base seed (from mnemonic)
328
+ * @returns 32-byte root private seed
329
+ */
330
+ function deriveRootPrivSeed(baseSeed) {
331
+ const baseSeedSerialized = serializeMiniData(baseSeed);
332
+ const rootIdentityBytes = new TextEncoder().encode('ROOT_IDENTITY');
333
+ const rootIdentitySerialized = serializeMiniData(rootIdentityBytes);
334
+ const combined = new Uint8Array(baseSeedSerialized.length + rootIdentitySerialized.length);
335
+ combined.set(baseSeedSerialized, 0);
336
+ combined.set(rootIdentitySerialized, baseSeedSerialized.length);
337
+ return (0, sha3_js_1.sha3_256)(combined);
338
+ }
339
+ /**
340
+ * Derive a unified child seed for the address at `index`.
341
+ *
342
+ * Architecture:
343
+ * child_seed_i = SHA3-256( serializeMiniData(root_priv_seed) ‖ serializeMiniData(indexBytes(i)) )
344
+ *
345
+ * @param baseSeed - 32-byte wallet base seed (from mnemonic)
346
+ * @param index - Address index (0-63)
347
+ * @returns 32-byte child seed for the TreeKey at this address
348
+ */
349
+ function deriveUnifiedChildSeed(baseSeed, index) {
350
+ const rootPrivSeed = deriveRootPrivSeed(baseSeed);
351
+ const modifierBytes = indexToMiniDataBytes(index);
352
+ const rootSeedSerialized = serializeMiniData(rootPrivSeed);
353
+ const modifierSerialized = serializeMiniData(modifierBytes);
354
+ const combined = new Uint8Array(rootSeedSerialized.length + modifierSerialized.length);
355
+ combined.set(rootSeedSerialized, 0);
356
+ combined.set(modifierSerialized, rootSeedSerialized.length);
357
+ return (0, sha3_js_1.sha3_256)(combined);
358
+ }
319
359
  /**
320
360
  * Precompute output coin IDs before computing the transaction digest.
321
361
  *
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Legacy JS implementations — backward compatibility.
3
+ *
4
+ * These are the original TypeScript implementations preserved for
5
+ * environments where WASM is not available. The main entry point
6
+ * (`@totemsdk/core`) now delegates to WASM by default.
7
+ *
8
+ * Import legacy implementations directly:
9
+ * import { wotsSign } from '@totemsdk/core/legacy';
10
+ */
11
+ export { F, hex, fromHex, u16be, u32be, assert32, h, prfChainSeed, toWinternitzDigits, baseWWithChecksum, derivePKdigest as legacyDerivePKdigest, wotsKeypairFromSeed as legacyWotsKeypairFromSeed, wotsSign as legacyWotsSign, wotsSignLegacy, wotsPkFromSig as legacyWotsPkFromSig, wotsVerify as legacyWotsVerify, wotsVerifyDigest as legacyWotsVerifyDigest, wotsPublicKeyFromSeed as legacyWotsPublicKeyFromSeed, type WotsKeypair, type WotsSignature, } from './wots.js';
12
+ export { TreeKey, TreeKeyNode, verifyTreeSignature as legacyVerifyTreeSignature, serializeTreeSignature, deserializeTreeSignature, getRootPublicKey, DEFAULT_KEYS_PER_LEVEL, DEFAULT_LEVELS, createUnifiedChildTreeKey as legacyCreateUnifiedChildTreeKey, createUnifiedChildTreeKeyAsync, createUnifiedRootTreeKey as legacyCreateUnifiedRootTreeKey, deriveUnifiedAddressPublicKey as legacyDeriveUnifiedAddressPublicKey, createPerAddressTreeKey, createPerAddressTreeKeyAsync, type KeyGenProgress, type ProgressCallback, type SignatureProof, type TreeSignature, } from './treekey.js';
13
+ export { MMRTree, mmrLeafExact, mmrRootFromSingleLeaf, createMMRDataLeafNode, createMMRDataParentNode, calculateProofRoot, verifyMMRProof as legacyVerifyMMRProof, parseMMRProofFromHex, deserializeMMRProof, serializeMMRProof, serializeRealMMRProof, type MMRData, type MMREntry, type MMRProof, type MMRProofChunk, type Bytes, } from './mmr.js';
14
+ export { WORD_LIST, cleanSeedPhrase as legacyCleanSeedPhrase, validatePhrase as legacyValidatePhrase, convertStringToSeed, convertWordListToSeed, phraseToSeed as legacyPhraseToSeed, generateWordList as legacyGenerateWordList, generateSeedPhrase, } from './bip39.js';
15
+ export { type MinimaTransaction, type MinimaCoin, type ParsedMiniNumber, type MinimaToken, type StateVariable, type RawStateVariable, type CoinProofData, type SpendableCoinInput, type TransactionBuildResult, parseDecimalToMiniNumber, serializeCoin, serializeTransaction as legacySerializeTransaction, computeTransactionDigest as legacyComputeTransactionDigest, precomputeTransactionCoinID as legacyPrecomputeTransactionCoinID, createDefaultTransaction, buildMinimaCoin, } from './transaction.js';
16
+ export { scriptToAddress, addressToRoot } from './derive.js';
17
+ export { scriptFromWotsPk, wotsAddressFromKeypair as legacyWotsAddressFromKeypair } from './script.js';
18
+ export { encodeMxRadix32Frame, decodeMxRadix32Frame, makeMxAddress as legacyMakeMxAddress, parseMxAddress as legacyParseMxAddress, hexToMx, mxToHex, encodeMx, decodeMx, makeMinimaAddress, convertMinimaAddress, } from './minima32.js';
19
+ export { writeMiniNumber as legacyWriteMiniNumber, writeMiniData as legacyWriteMiniData, writeMiniByte, writeMMREntryNumber, concat, hexToBytes as legacyHexToBytes, bytesToHex as legacyBytesToHex, bigIntToByteArray, writeMiniString as legacyWriteMiniString, writeHashToStream, } from './Streamable.js';
20
+ export { serializeMiniNumber, serializeMiniData, hashAllObjects, deriveChainSeedJava as legacyDeriveChainSeedJava, deriveChildTreeSeedJava, hashObject, serializeMiniNumberZERO, serializeMiniNumberONE, javaHashAllObjects, indexToMiniDataBytes, derivePerAddressSeed as legacyDerivePerAddressSeed, deriveRootPrivSeed as legacyDeriveRootPrivSeed, deriveUnifiedChildSeed, createMMREntryNumber, serializeMMREntryNumber, serializeMMRData, serializeMMREntry, precomputeTransactionCoinID as legacyPrecomputeTransactionCoinIDTx, type MMREntryNumber as JavaMMREntryNumber, type MMRData as JavaMMRData, type MMREntry as JavaMMREntry, } from './javaStreamables.js';
21
+ export { concatBytes as legacyConcatBytes } from './utils.js';
22
+ export * from './params.js';
23
+ export { verifySignature, verifySignatureDetailed, verifyTreeSignatureDetailed, deriveAddressFromPublicKey, normalizeHex, createChallenge as legacyCreateChallenge, validateChallenge as legacyValidateChallenge, type VerificationResult, } from './verify.js';