@totemsdk/core 1.2.5 → 1.2.7
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/dist/MiniNumber.js +19 -21
- package/dist/Streamable.js +31 -54
- package/dist/adapters/index.js +9 -18
- package/dist/adapters/types.js +11 -19
- package/dist/binio.js +7 -20
- package/dist/bip39.js +14 -24
- package/dist/canonical.d.ts +3 -0
- package/dist/canonical.js +22 -0
- package/dist/cjs/MiniNumber.d.ts +47 -0
- package/dist/cjs/MiniNumber.js +302 -0
- package/dist/cjs/Streamable.d.ts +268 -0
- package/dist/cjs/Streamable.js +439 -0
- package/dist/cjs/adapters/index.d.ts +190 -0
- package/dist/cjs/adapters/index.js +118 -0
- package/dist/cjs/adapters/types.d.ts +150 -0
- package/dist/cjs/adapters/types.js +81 -0
- package/dist/cjs/binio.d.ts +9 -0
- package/dist/cjs/binio.js +25 -0
- package/dist/cjs/bip39.d.ts +91 -0
- package/dist/cjs/bip39.js +434 -0
- package/dist/cjs/canonical.d.ts +3 -0
- package/dist/cjs/canonical.js +27 -0
- package/dist/cjs/derive.d.ts +2 -0
- package/dist/cjs/derive.js +13 -0
- package/dist/cjs/index.d.ts +49 -0
- package/dist/cjs/index.js +231 -0
- package/dist/cjs/javaStreamables.d.ts +254 -0
- package/dist/cjs/javaStreamables.js +391 -0
- package/dist/cjs/lease/LeaseMonitor.d.ts +44 -0
- package/dist/cjs/lease/LeaseMonitor.js +115 -0
- package/dist/cjs/lease/LeaseStore.d.ts +58 -0
- package/dist/cjs/lease/LeaseStore.js +151 -0
- package/dist/cjs/lease/WatermarkStore.d.ts +61 -0
- package/dist/cjs/lease/WatermarkStore.js +209 -0
- package/dist/cjs/lease/index.d.ts +14 -0
- package/dist/cjs/lease/index.js +22 -0
- package/dist/cjs/lease-client.d.ts +31 -0
- package/dist/cjs/lease-client.js +44 -0
- package/dist/cjs/legacy.d.ts +23 -0
- package/dist/cjs/legacy.js +163 -0
- package/dist/cjs/minima32.d.ts +18 -0
- package/dist/cjs/minima32.js +121 -0
- package/dist/cjs/minimaWireSerializer.d.ts +60 -0
- package/dist/cjs/minimaWireSerializer.js +77 -0
- package/dist/cjs/mmr.d.ts +157 -0
- package/dist/cjs/mmr.js +352 -0
- package/dist/cjs/mx.d.ts +1 -0
- package/dist/cjs/mx.js +10 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/params.d.ts +29 -0
- package/dist/cjs/params.js +20 -0
- package/dist/cjs/script.d.ts +7 -0
- package/dist/cjs/script.js +27 -0
- package/dist/cjs/scripts/contract-helpers.d.ts +252 -0
- package/dist/cjs/scripts/contract-helpers.js +407 -0
- package/dist/cjs/scripts/dapp-types.d.ts +119 -0
- package/dist/cjs/scripts/dapp-types.js +77 -0
- package/dist/cjs/scripts/index.d.ts +4 -0
- package/dist/cjs/scripts/index.js +38 -0
- package/dist/cjs/scripts/types.d.ts +81 -0
- package/dist/cjs/scripts/types.js +159 -0
- package/dist/cjs/scripts/witness-serializer.d.ts +29 -0
- package/dist/cjs/scripts/witness-serializer.js +306 -0
- package/dist/cjs/transaction.d.ts +106 -0
- package/dist/cjs/transaction.js +293 -0
- package/dist/cjs/treekey.d.ts +399 -0
- package/dist/cjs/treekey.js +827 -0
- package/dist/cjs/tx/TransactionLifecycle.d.ts +55 -0
- package/dist/cjs/tx/TransactionLifecycle.js +205 -0
- package/dist/cjs/tx/TransactionReceiptStore.d.ts +36 -0
- package/dist/cjs/tx/TransactionReceiptStore.js +93 -0
- package/dist/cjs/tx/TransactionService.d.ts +50 -0
- package/dist/cjs/tx/TransactionService.js +186 -0
- package/dist/cjs/tx/index.d.ts +13 -0
- package/dist/cjs/tx/index.js +20 -0
- package/dist/cjs/tx/types.d.ts +115 -0
- package/dist/cjs/tx/types.js +6 -0
- package/dist/cjs/util.d.ts +1 -0
- package/dist/cjs/util.js +5 -0
- package/dist/cjs/utils.d.ts +8 -0
- package/dist/cjs/utils.js +42 -0
- package/dist/cjs/verify.d.ts +18 -0
- package/dist/cjs/verify.js +174 -0
- package/dist/cjs/version.d.ts +12 -0
- package/dist/cjs/version.js +15 -0
- package/dist/cjs/wasm-sync.d.ts +71 -0
- package/dist/cjs/wasm-sync.js +97 -0
- package/dist/cjs/wots.d.ts +232 -0
- package/dist/cjs/wots.js +589 -0
- package/dist/derive.js +7 -11
- package/dist/index.d.ts +8 -2
- package/dist/index.js +50 -143
- package/dist/javaStreamables.js +34 -55
- package/dist/lease/LeaseMonitor.js +10 -10
- package/dist/lease/LeaseStore.js +8 -9
- package/dist/lease/WatermarkStore.js +8 -9
- package/dist/lease/index.js +4 -13
- package/dist/lease-client.js +3 -8
- package/dist/legacy.js +13 -140
- package/dist/minima32.js +13 -22
- package/dist/minimaWireSerializer.js +14 -20
- package/dist/mmr.js +27 -41
- package/dist/mx.js +1 -10
- package/dist/params.js +5 -9
- package/dist/script.js +7 -12
- package/dist/scripts/contract-helpers.js +25 -36
- package/dist/scripts/dapp-types.js +6 -11
- package/dist/scripts/index.js +4 -38
- package/dist/scripts/types.js +12 -26
- package/dist/scripts/witness-serializer.js +30 -48
- package/dist/transaction.js +46 -55
- package/dist/treekey.js +96 -89
- package/dist/tx/TransactionLifecycle.js +15 -11
- package/dist/tx/TransactionReceiptStore.js +9 -9
- package/dist/tx/TransactionService.js +14 -14
- package/dist/tx/index.js +3 -11
- package/dist/tx/types.js +1 -2
- package/dist/util.js +1 -5
- package/dist/utils.js +5 -12
- package/dist/verify.js +25 -36
- package/dist/version.js +2 -5
- package/dist/wasm-sync.d.ts +2 -2
- package/dist/wasm-sync.js +58 -61
- package/dist/wots.js +64 -94
- package/package.json +84 -45
- package/dist/wasm-bridge.d.ts +0 -54
- package/dist/wasm-bridge.js +0 -303
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @module @totemsdk/core
|
|
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.
|
|
8
|
+
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
21
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
22
|
+
};
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
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.hex = exports.F = 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.MiniNumber = exports.generateSeedPhrase = exports.convertWordListToSeed = exports.convertStringToSeed = exports.WORD_LIST = exports.addressToRoot = exports.scriptToAddress = exports.decodeMx = exports.encodeMx = exports.scriptFromWotsPk = void 0;
|
|
26
|
+
exports.MINIMA_CONSTANTS = exports.bytesToUtf8 = exports.utf8ToBytes = exports.hashCanonical = exports.canonicalJson = exports.toHex = exports.wotsSignLegacy = exports.baseWWithChecksum = exports.toWinternitzDigits = exports.prfChainSeed = exports.h = exports.assert32 = exports.u32be = exports.u16be = exports.fromHex = void 0;
|
|
27
|
+
exports.mxToHex = mxToHex;
|
|
28
|
+
// Version information for bundle duplication detection
|
|
29
|
+
__exportStar(require("./version.js"), exports);
|
|
30
|
+
// Platform-agnostic Adapters (SDK Upgrade)
|
|
31
|
+
__exportStar(require("./adapters/index.js"), exports);
|
|
32
|
+
// Lease Management (SDK Upgrade) - exclude conflicting WotsIndices
|
|
33
|
+
var index_js_1 = require("./lease/index.js");
|
|
34
|
+
Object.defineProperty(exports, "LeaseStore", { enumerable: true, get: function () { return index_js_1.LeaseStore; } });
|
|
35
|
+
Object.defineProperty(exports, "WatermarkStore", { enumerable: true, get: function () { return index_js_1.WatermarkStore; } });
|
|
36
|
+
Object.defineProperty(exports, "LeaseMonitor", { enumerable: true, get: function () { return index_js_1.LeaseMonitor; } });
|
|
37
|
+
Object.defineProperty(exports, "prepareLease", { enumerable: true, get: function () { return index_js_1.prepareLease; } });
|
|
38
|
+
Object.defineProperty(exports, "finalizeLease", { enumerable: true, get: function () { return index_js_1.finalizeLease; } });
|
|
39
|
+
Object.defineProperty(exports, "flatIndexFromLanes", { enumerable: true, get: function () { return index_js_1.flatIndexFromLanes; } });
|
|
40
|
+
// Transaction Management (SDK Upgrade) - exclude conflicting WotsIndices
|
|
41
|
+
var index_js_2 = require("./tx/index.js");
|
|
42
|
+
Object.defineProperty(exports, "TransactionService", { enumerable: true, get: function () { return index_js_2.TransactionService; } });
|
|
43
|
+
Object.defineProperty(exports, "TransactionLifecycle", { enumerable: true, get: function () { return index_js_2.TransactionLifecycle; } });
|
|
44
|
+
Object.defineProperty(exports, "TransactionLifecycleError", { enumerable: true, get: function () { return index_js_2.TransactionLifecycleError; } });
|
|
45
|
+
Object.defineProperty(exports, "WatermarkExhaustedError", { enumerable: true, get: function () { return index_js_2.WatermarkExhaustedError; } });
|
|
46
|
+
Object.defineProperty(exports, "TransactionReceiptStore", { enumerable: true, get: function () { return index_js_2.TransactionReceiptStore; } });
|
|
47
|
+
// ---------------------------------------------------------------------------
|
|
48
|
+
// Cryptographic primitives — backed by Rust/WASM (@totemsdk/core-wasm)
|
|
49
|
+
// ---------------------------------------------------------------------------
|
|
50
|
+
// Utilities
|
|
51
|
+
var wasm_sync_js_1 = require("./wasm-sync.js");
|
|
52
|
+
Object.defineProperty(exports, "bytesToHex", { enumerable: true, get: function () { return wasm_sync_js_1.bytesToHex; } });
|
|
53
|
+
Object.defineProperty(exports, "hexToBytes", { enumerable: true, get: function () { return wasm_sync_js_1.hexToBytes; } });
|
|
54
|
+
Object.defineProperty(exports, "concatBytes", { enumerable: true, get: function () { return wasm_sync_js_1.concatBytes; } });
|
|
55
|
+
const wasm_sync_js_2 = require("./wasm-sync.js");
|
|
56
|
+
// SHA3-256
|
|
57
|
+
var wasm_sync_js_3 = require("./wasm-sync.js");
|
|
58
|
+
Object.defineProperty(exports, "sha3_256", { enumerable: true, get: function () { return wasm_sync_js_3.sha3_256; } });
|
|
59
|
+
// WOTS Signatures
|
|
60
|
+
var wasm_sync_js_4 = require("./wasm-sync.js");
|
|
61
|
+
Object.defineProperty(exports, "expandPrivateKey", { enumerable: true, get: function () { return wasm_sync_js_4.expandPrivateKey; } });
|
|
62
|
+
Object.defineProperty(exports, "hashChain", { enumerable: true, get: function () { return wasm_sync_js_4.hashChain; } });
|
|
63
|
+
Object.defineProperty(exports, "derivePKdigest", { enumerable: true, get: function () { return wasm_sync_js_4.derivePKdigest; } });
|
|
64
|
+
Object.defineProperty(exports, "deriveFullPublicKey", { enumerable: true, get: function () { return wasm_sync_js_4.deriveFullPublicKey; } });
|
|
65
|
+
Object.defineProperty(exports, "wotsSign", { enumerable: true, get: function () { return wasm_sync_js_4.wotsSign; } });
|
|
66
|
+
Object.defineProperty(exports, "wotsVerify", { enumerable: true, get: function () { return wasm_sync_js_4.wotsVerify; } });
|
|
67
|
+
Object.defineProperty(exports, "wotsVerifyDigest", { enumerable: true, get: function () { return wasm_sync_js_4.wotsVerifyDigest; } });
|
|
68
|
+
Object.defineProperty(exports, "wotsPkFromSig", { enumerable: true, get: function () { return wasm_sync_js_4.wotsPkFromSig; } });
|
|
69
|
+
Object.defineProperty(exports, "wotsPublicKeyFromSeed", { enumerable: true, get: function () { return wasm_sync_js_4.wotsPublicKeyFromSeed; } });
|
|
70
|
+
Object.defineProperty(exports, "wotsKeypairFromSeed", { enumerable: true, get: function () { return wasm_sync_js_4.wotsKeypairFromSeed; } });
|
|
71
|
+
// WOTS Params (from params.ts — constants, no crypto)
|
|
72
|
+
__exportStar(require("./params.js"), exports);
|
|
73
|
+
// Java-Compatible Serialization
|
|
74
|
+
var wasm_sync_js_5 = require("./wasm-sync.js");
|
|
75
|
+
Object.defineProperty(exports, "deriveChainSeedJava", { enumerable: true, get: function () { return wasm_sync_js_5.deriveChainSeedJava; } });
|
|
76
|
+
Object.defineProperty(exports, "derivePerAddressSeed", { enumerable: true, get: function () { return wasm_sync_js_5.derivePerAddressSeed; } });
|
|
77
|
+
Object.defineProperty(exports, "deriveRootPrivSeed", { enumerable: true, get: function () { return wasm_sync_js_5.deriveRootPrivSeed; } });
|
|
78
|
+
Object.defineProperty(exports, "writeMiniNumber", { enumerable: true, get: function () { return wasm_sync_js_5.writeMiniNumber; } });
|
|
79
|
+
Object.defineProperty(exports, "writeMiniData", { enumerable: true, get: function () { return wasm_sync_js_5.writeMiniData; } });
|
|
80
|
+
Object.defineProperty(exports, "writeMiniString", { enumerable: true, get: function () { return wasm_sync_js_5.writeMiniString; } });
|
|
81
|
+
Object.defineProperty(exports, "precomputeTransactionCoinID", { enumerable: true, get: function () { return wasm_sync_js_5.precomputeTransactionCoinID; } });
|
|
82
|
+
// TreeKey/TreeKeyNode — WASM-backed
|
|
83
|
+
// createUnifiedChildTreeKey / createUnifiedRootTreeKey come from the TS
|
|
84
|
+
// implementation (returning a full TreeKey object with setUses/sign/getPublicKey)
|
|
85
|
+
// to match the object API that downstream consumers (server, root-identity)
|
|
86
|
+
// rely on. The WASM binding only returns the root public key bytes.
|
|
87
|
+
var treekey_js_1 = require("./treekey.js");
|
|
88
|
+
Object.defineProperty(exports, "createUnifiedChildTreeKey", { enumerable: true, get: function () { return treekey_js_1.createUnifiedChildTreeKey; } });
|
|
89
|
+
Object.defineProperty(exports, "createUnifiedRootTreeKey", { enumerable: true, get: function () { return treekey_js_1.createUnifiedRootTreeKey; } });
|
|
90
|
+
Object.defineProperty(exports, "deriveUnifiedAddressPublicKey", { enumerable: true, get: function () { return treekey_js_1.deriveUnifiedAddressPublicKey; } });
|
|
91
|
+
Object.defineProperty(exports, "verifyTreeSignature", { enumerable: true, get: function () { return treekey_js_1.verifyTreeSignature; } });
|
|
92
|
+
var wasm_sync_js_6 = require("./wasm-sync.js");
|
|
93
|
+
Object.defineProperty(exports, "mmrRootFromPublicKeys", { enumerable: true, get: function () { return wasm_sync_js_6.mmrRootFromPublicKeys; } });
|
|
94
|
+
Object.defineProperty(exports, "verifyMMRProof", { enumerable: true, get: function () { return wasm_sync_js_6.verifyMMRProof; } });
|
|
95
|
+
// BIP39 Seed Phrase Handling
|
|
96
|
+
// NOTE: the TS implementation (bip39.ts) uses the complete 2048-word BIP39
|
|
97
|
+
// word list and Minima-compatible uppercase canonicalization. The WASM
|
|
98
|
+
// binding (wasm-sync.ts) ships a corrupted/partial word list (missing
|
|
99
|
+
// "hungry", contains spurious words) and lowercases instead of uppercasing,
|
|
100
|
+
// so the public API routes through the TS implementation.
|
|
101
|
+
var bip39_js_1 = require("./bip39.js");
|
|
102
|
+
Object.defineProperty(exports, "phraseToSeed", { enumerable: true, get: function () { return bip39_js_1.phraseToSeed; } });
|
|
103
|
+
Object.defineProperty(exports, "generateWordList", { enumerable: true, get: function () { return bip39_js_1.generateWordList; } });
|
|
104
|
+
Object.defineProperty(exports, "validatePhrase", { enumerable: true, get: function () { return bip39_js_1.validatePhrase; } });
|
|
105
|
+
Object.defineProperty(exports, "cleanSeedPhrase", { enumerable: true, get: function () { return bip39_js_1.cleanSeedPhrase; } });
|
|
106
|
+
// Address Derivation
|
|
107
|
+
var wasm_sync_js_7 = require("./wasm-sync.js");
|
|
108
|
+
Object.defineProperty(exports, "makeMxAddress", { enumerable: true, get: function () { return wasm_sync_js_7.makeMxAddress; } });
|
|
109
|
+
Object.defineProperty(exports, "parseMxAddress", { enumerable: true, get: function () { return wasm_sync_js_7.parseMxAddress; } });
|
|
110
|
+
Object.defineProperty(exports, "wotsAddressFromKeypair", { enumerable: true, get: function () { return wasm_sync_js_7.wotsAddressFromKeypair; } });
|
|
111
|
+
// Transaction Serialization & Digest
|
|
112
|
+
var wasm_sync_js_8 = require("./wasm-sync.js");
|
|
113
|
+
Object.defineProperty(exports, "serializeTransaction", { enumerable: true, get: function () { return wasm_sync_js_8.serializeTransaction; } });
|
|
114
|
+
Object.defineProperty(exports, "computeTransactionDigest", { enumerable: true, get: function () { return wasm_sync_js_8.computeTransactionDigest; } });
|
|
115
|
+
// Verification
|
|
116
|
+
var wasm_sync_js_9 = require("./wasm-sync.js");
|
|
117
|
+
Object.defineProperty(exports, "timingSafeEqual", { enumerable: true, get: function () { return wasm_sync_js_9.timingSafeEqual; } });
|
|
118
|
+
Object.defineProperty(exports, "createChallenge", { enumerable: true, get: function () { return wasm_sync_js_9.createChallenge; } });
|
|
119
|
+
Object.defineProperty(exports, "validateChallenge", { enumerable: true, get: function () { return wasm_sync_js_9.validateChallenge; } });
|
|
120
|
+
// ---------------------------------------------------------------------------
|
|
121
|
+
// TypeScript-only modules (no crypto — keep as-is)
|
|
122
|
+
// ---------------------------------------------------------------------------
|
|
123
|
+
// Script helpers (for address derivation)
|
|
124
|
+
var script_js_1 = require("./script.js");
|
|
125
|
+
Object.defineProperty(exports, "scriptFromWotsPk", { enumerable: true, get: function () { return script_js_1.scriptFromWotsPk; } });
|
|
126
|
+
// Base32 Encoding (Minima-compatible) — re-export from WASM
|
|
127
|
+
var wasm_sync_js_10 = require("./wasm-sync.js");
|
|
128
|
+
Object.defineProperty(exports, "encodeMx", { enumerable: true, get: function () { return wasm_sync_js_10.makeMxAddress; } });
|
|
129
|
+
Object.defineProperty(exports, "decodeMx", { enumerable: true, get: function () { return wasm_sync_js_10.parseMxAddress; } });
|
|
130
|
+
/** Convert an Mx (radix-32) or hex Minima address to lowercase hex. */
|
|
131
|
+
function mxToHex(address) {
|
|
132
|
+
const upper = address.startsWith('0x') || address.startsWith('0X') ? address.slice(2) : address;
|
|
133
|
+
return upper.toUpperCase().startsWith('MX')
|
|
134
|
+
? (0, wasm_sync_js_2.bytesToHex)((0, wasm_sync_js_2.parseMxAddress)(address))
|
|
135
|
+
: upper.replace(/^0x/i, '');
|
|
136
|
+
}
|
|
137
|
+
// Merkle Mountain Range (original JS — types and helpers)
|
|
138
|
+
__exportStar(require("./mmr.js"), exports);
|
|
139
|
+
// Script Types, Witness Serializer, Contract Helpers
|
|
140
|
+
__exportStar(require("./scripts/index.js"), exports);
|
|
141
|
+
// Address Derivation (original)
|
|
142
|
+
var derive_js_1 = require("./derive.js");
|
|
143
|
+
Object.defineProperty(exports, "scriptToAddress", { enumerable: true, get: function () { return derive_js_1.scriptToAddress; } });
|
|
144
|
+
Object.defineProperty(exports, "addressToRoot", { enumerable: true, get: function () { return derive_js_1.addressToRoot; } });
|
|
145
|
+
// BIP39 — re-export word list and legacy helpers from JS
|
|
146
|
+
var bip39_js_2 = require("./bip39.js");
|
|
147
|
+
Object.defineProperty(exports, "WORD_LIST", { enumerable: true, get: function () { return bip39_js_2.WORD_LIST; } });
|
|
148
|
+
Object.defineProperty(exports, "convertStringToSeed", { enumerable: true, get: function () { return bip39_js_2.convertStringToSeed; } });
|
|
149
|
+
Object.defineProperty(exports, "convertWordListToSeed", { enumerable: true, get: function () { return bip39_js_2.convertWordListToSeed; } });
|
|
150
|
+
Object.defineProperty(exports, "generateSeedPhrase", { enumerable: true, get: function () { return bip39_js_2.generateSeedPhrase; } });
|
|
151
|
+
// MiniNumber class (matches Java MiniNumber/BigDecimal semantics)
|
|
152
|
+
var MiniNumber_js_1 = require("./MiniNumber.js");
|
|
153
|
+
Object.defineProperty(exports, "MiniNumber", { enumerable: true, get: function () { return MiniNumber_js_1.MiniNumber; } });
|
|
154
|
+
// Transaction types (from JS)
|
|
155
|
+
var transaction_js_1 = require("./transaction.js");
|
|
156
|
+
Object.defineProperty(exports, "parseDecimalToMiniNumber", { enumerable: true, get: function () { return transaction_js_1.parseDecimalToMiniNumber; } });
|
|
157
|
+
Object.defineProperty(exports, "serializeCoin", { enumerable: true, get: function () { return transaction_js_1.serializeCoin; } });
|
|
158
|
+
Object.defineProperty(exports, "createDefaultTransaction", { enumerable: true, get: function () { return transaction_js_1.createDefaultTransaction; } });
|
|
159
|
+
Object.defineProperty(exports, "buildMinimaCoin", { enumerable: true, get: function () { return transaction_js_1.buildMinimaCoin; } });
|
|
160
|
+
// High-level Verification API (convenience functions for integrators)
|
|
161
|
+
var verify_js_1 = require("./verify.js");
|
|
162
|
+
Object.defineProperty(exports, "verifySignature", { enumerable: true, get: function () { return verify_js_1.verifySignature; } });
|
|
163
|
+
Object.defineProperty(exports, "verifySignatureDetailed", { enumerable: true, get: function () { return verify_js_1.verifySignatureDetailed; } });
|
|
164
|
+
Object.defineProperty(exports, "verifyTreeSignatureDetailed", { enumerable: true, get: function () { return verify_js_1.verifyTreeSignatureDetailed; } });
|
|
165
|
+
Object.defineProperty(exports, "deriveAddressFromPublicKey", { enumerable: true, get: function () { return verify_js_1.deriveAddressFromPublicKey; } });
|
|
166
|
+
Object.defineProperty(exports, "normalizeHex", { enumerable: true, get: function () { return verify_js_1.normalizeHex; } });
|
|
167
|
+
// Streamable primitives (low-level serialization building blocks)
|
|
168
|
+
var Streamable_js_1 = require("./Streamable.js");
|
|
169
|
+
Object.defineProperty(exports, "writeMiniByte", { enumerable: true, get: function () { return Streamable_js_1.writeMiniByte; } });
|
|
170
|
+
Object.defineProperty(exports, "writeMMREntryNumber", { enumerable: true, get: function () { return Streamable_js_1.writeMMREntryNumber; } });
|
|
171
|
+
Object.defineProperty(exports, "concat", { enumerable: true, get: function () { return Streamable_js_1.concat; } });
|
|
172
|
+
Object.defineProperty(exports, "bigIntToByteArray", { enumerable: true, get: function () { return Streamable_js_1.bigIntToByteArray; } });
|
|
173
|
+
// Java-Compatible Serialization Helpers (non-crypto)
|
|
174
|
+
var javaStreamables_js_1 = require("./javaStreamables.js");
|
|
175
|
+
Object.defineProperty(exports, "serializeMiniNumber", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMiniNumber; } });
|
|
176
|
+
Object.defineProperty(exports, "serializeMiniData", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMiniData; } });
|
|
177
|
+
Object.defineProperty(exports, "hashAllObjects", { enumerable: true, get: function () { return javaStreamables_js_1.hashAllObjects; } });
|
|
178
|
+
Object.defineProperty(exports, "deriveChildTreeSeedJava", { enumerable: true, get: function () { return javaStreamables_js_1.deriveChildTreeSeedJava; } });
|
|
179
|
+
Object.defineProperty(exports, "hashObject", { enumerable: true, get: function () { return javaStreamables_js_1.hashObject; } });
|
|
180
|
+
Object.defineProperty(exports, "serializeMiniNumberZERO", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMiniNumberZERO; } });
|
|
181
|
+
Object.defineProperty(exports, "serializeMiniNumberONE", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMiniNumberONE; } });
|
|
182
|
+
Object.defineProperty(exports, "writeHashToStream", { enumerable: true, get: function () { return javaStreamables_js_1.writeHashToStream; } });
|
|
183
|
+
Object.defineProperty(exports, "javaHashAllObjects", { enumerable: true, get: function () { return javaStreamables_js_1.javaHashAllObjects; } });
|
|
184
|
+
Object.defineProperty(exports, "indexToMiniDataBytes", { enumerable: true, get: function () { return javaStreamables_js_1.indexToMiniDataBytes; } });
|
|
185
|
+
Object.defineProperty(exports, "deriveUnifiedChildSeed", { enumerable: true, get: function () { return javaStreamables_js_1.deriveUnifiedChildSeed; } });
|
|
186
|
+
Object.defineProperty(exports, "createMMREntryNumber", { enumerable: true, get: function () { return javaStreamables_js_1.createMMREntryNumber; } });
|
|
187
|
+
Object.defineProperty(exports, "serializeMMREntryNumber", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMMREntryNumber; } });
|
|
188
|
+
Object.defineProperty(exports, "serializeMMRData", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMMRData; } });
|
|
189
|
+
Object.defineProperty(exports, "serializeMMREntry", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMMREntry; } });
|
|
190
|
+
// TreeKey/TreeKeyNode — JS types and helpers
|
|
191
|
+
var treekey_js_2 = require("./treekey.js");
|
|
192
|
+
Object.defineProperty(exports, "TreeKey", { enumerable: true, get: function () { return treekey_js_2.TreeKey; } });
|
|
193
|
+
Object.defineProperty(exports, "TreeKeyNode", { enumerable: true, get: function () { return treekey_js_2.TreeKeyNode; } });
|
|
194
|
+
Object.defineProperty(exports, "serializeTreeSignature", { enumerable: true, get: function () { return treekey_js_2.serializeTreeSignature; } });
|
|
195
|
+
Object.defineProperty(exports, "deserializeTreeSignature", { enumerable: true, get: function () { return treekey_js_2.deserializeTreeSignature; } });
|
|
196
|
+
Object.defineProperty(exports, "getRootPublicKey", { enumerable: true, get: function () { return treekey_js_2.getRootPublicKey; } });
|
|
197
|
+
Object.defineProperty(exports, "DEFAULT_KEYS_PER_LEVEL", { enumerable: true, get: function () { return treekey_js_2.DEFAULT_KEYS_PER_LEVEL; } });
|
|
198
|
+
Object.defineProperty(exports, "DEFAULT_LEVELS", { enumerable: true, get: function () { return treekey_js_2.DEFAULT_LEVELS; } });
|
|
199
|
+
Object.defineProperty(exports, "createUnifiedChildTreeKeyAsync", { enumerable: true, get: function () { return treekey_js_2.createUnifiedChildTreeKeyAsync; } });
|
|
200
|
+
Object.defineProperty(exports, "createPerAddressTreeKey", { enumerable: true, get: function () { return treekey_js_2.createPerAddressTreeKey; } });
|
|
201
|
+
Object.defineProperty(exports, "createPerAddressTreeKeyAsync", { enumerable: true, get: function () { return treekey_js_2.createPerAddressTreeKeyAsync; } });
|
|
202
|
+
var wots_js_1 = require("./wots.js");
|
|
203
|
+
Object.defineProperty(exports, "F", { enumerable: true, get: function () { return wots_js_1.F; } });
|
|
204
|
+
Object.defineProperty(exports, "hex", { enumerable: true, get: function () { return wots_js_1.hex; } });
|
|
205
|
+
Object.defineProperty(exports, "fromHex", { enumerable: true, get: function () { return wots_js_1.fromHex; } });
|
|
206
|
+
Object.defineProperty(exports, "u16be", { enumerable: true, get: function () { return wots_js_1.u16be; } });
|
|
207
|
+
Object.defineProperty(exports, "u32be", { enumerable: true, get: function () { return wots_js_1.u32be; } });
|
|
208
|
+
Object.defineProperty(exports, "assert32", { enumerable: true, get: function () { return wots_js_1.assert32; } });
|
|
209
|
+
Object.defineProperty(exports, "h", { enumerable: true, get: function () { return wots_js_1.h; } });
|
|
210
|
+
Object.defineProperty(exports, "prfChainSeed", { enumerable: true, get: function () { return wots_js_1.prfChainSeed; } });
|
|
211
|
+
Object.defineProperty(exports, "toWinternitzDigits", { enumerable: true, get: function () { return wots_js_1.toWinternitzDigits; } });
|
|
212
|
+
Object.defineProperty(exports, "baseWWithChecksum", { enumerable: true, get: function () { return wots_js_1.baseWWithChecksum; } });
|
|
213
|
+
Object.defineProperty(exports, "wotsSignLegacy", { enumerable: true, get: function () { return wots_js_1.wotsSignLegacy; } });
|
|
214
|
+
// Canonical helpers (deterministic JSON + hashing)
|
|
215
|
+
var canonical_js_1 = require("./canonical.js");
|
|
216
|
+
Object.defineProperty(exports, "toHex", { enumerable: true, get: function () { return canonical_js_1.toHex; } });
|
|
217
|
+
Object.defineProperty(exports, "canonicalJson", { enumerable: true, get: function () { return canonical_js_1.canonicalJson; } });
|
|
218
|
+
Object.defineProperty(exports, "hashCanonical", { enumerable: true, get: function () { return canonical_js_1.hashCanonical; } });
|
|
219
|
+
// Byte/string utilities
|
|
220
|
+
var utils_js_1 = require("./utils.js");
|
|
221
|
+
Object.defineProperty(exports, "utf8ToBytes", { enumerable: true, get: function () { return utils_js_1.utf8ToBytes; } });
|
|
222
|
+
Object.defineProperty(exports, "bytesToUtf8", { enumerable: true, get: function () { return utils_js_1.bytesToUtf8; } });
|
|
223
|
+
// Constants
|
|
224
|
+
exports.MINIMA_CONSTANTS = {
|
|
225
|
+
WOTS_W: 8,
|
|
226
|
+
WOTS_N: 32,
|
|
227
|
+
MAX_SIGNATURES: 262144,
|
|
228
|
+
SIGNATURE_LEVELS: 3,
|
|
229
|
+
ADDRESS_PREFIX: 'Mx',
|
|
230
|
+
NETWORK_ID: 1
|
|
231
|
+
};
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Java-Compatible Serialization Helpers
|
|
3
|
+
*
|
|
4
|
+
* Matches Minima Java serialization exactly:
|
|
5
|
+
* - MiniNumber.java: writeDataStream / readDataStream
|
|
6
|
+
* - MiniData.java: writeDataStream / readDataStream
|
|
7
|
+
* - Crypto.java: hashAllObjects - serializes Streamables then SHA3-256
|
|
8
|
+
*
|
|
9
|
+
* These helpers are used for seed derivation to match TreeKeyNode.java:
|
|
10
|
+
* MiniData seed = Crypto.getInstance().hashAllObjects(new MiniNumber(i), zPrivateSeed);
|
|
11
|
+
*
|
|
12
|
+
* NOTE: This module provides number-based wrappers for backward compatibility.
|
|
13
|
+
* The canonical implementations are in Streamable.ts which uses bigint for precision.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Serialize a number in MiniNumber format (Java compatible)
|
|
17
|
+
*
|
|
18
|
+
* Thin wrapper over Streamable.writeMiniNumber that accepts number for backward compatibility.
|
|
19
|
+
*
|
|
20
|
+
* @param n - Non-negative integer to serialize
|
|
21
|
+
* @returns Serialized bytes matching Java MiniNumber format
|
|
22
|
+
*/
|
|
23
|
+
export declare function serializeMiniNumber(n: number): Uint8Array;
|
|
24
|
+
/**
|
|
25
|
+
* Serialize bytes in MiniData format (Java compatible)
|
|
26
|
+
*
|
|
27
|
+
* Re-export of Streamable.writeMiniData for backward compatibility.
|
|
28
|
+
*
|
|
29
|
+
* @param data - Bytes to serialize
|
|
30
|
+
* @returns Serialized bytes matching Java MiniData format
|
|
31
|
+
*/
|
|
32
|
+
export declare function serializeMiniData(data: Uint8Array): Uint8Array;
|
|
33
|
+
/**
|
|
34
|
+
* Hash multiple Streamable objects (Java compatible)
|
|
35
|
+
*
|
|
36
|
+
* From Crypto.java hashAllObjects:
|
|
37
|
+
* 1. Write each object to DataOutputStream
|
|
38
|
+
* 2. SHA3-256 hash the combined bytes
|
|
39
|
+
*
|
|
40
|
+
* This matches TreeKeyNode.java seed derivation:
|
|
41
|
+
* Crypto.getInstance().hashAllObjects(new MiniNumber(i), zPrivateSeed)
|
|
42
|
+
*
|
|
43
|
+
* @param items - Array of serialized objects (use serializeMiniNumber/serializeMiniData)
|
|
44
|
+
* @returns 32-byte SHA3-256 hash
|
|
45
|
+
*/
|
|
46
|
+
export declare function hashAllObjects(...items: Uint8Array[]): Uint8Array;
|
|
47
|
+
/**
|
|
48
|
+
* Derive per-chain seed matching Java TreeKeyNode.java exactly
|
|
49
|
+
*
|
|
50
|
+
* From TreeKeyNode.java constructor (line 43-44):
|
|
51
|
+
* MiniData seed = Crypto.getInstance().hashAllObjects(new MiniNumber(i), zPrivateSeed);
|
|
52
|
+
*
|
|
53
|
+
* @param privateSeed - 32-byte private seed
|
|
54
|
+
* @param index - Chain index (0-63)
|
|
55
|
+
* @returns 32-byte derived seed for this chain
|
|
56
|
+
*/
|
|
57
|
+
export declare function deriveChainSeedJava(privateSeed: Uint8Array, index: number): Uint8Array;
|
|
58
|
+
/**
|
|
59
|
+
* Derive child tree seed matching Java TreeKeyNode.java exactly
|
|
60
|
+
*
|
|
61
|
+
* From TreeKeyNode.java getChild (line 68):
|
|
62
|
+
* MiniData seed = Crypto.getInstance().hashAllObjects(new MiniNumber(zChild), mChildSeed);
|
|
63
|
+
*
|
|
64
|
+
* The child seed is derived from parent's private seed:
|
|
65
|
+
* mChildSeed = Crypto.getInstance().hashObject(zPrivateSeed); // line 30
|
|
66
|
+
*
|
|
67
|
+
* @param childSeed - 32-byte child seed (hash of parent's private seed)
|
|
68
|
+
* @param childIndex - Child index (0-63)
|
|
69
|
+
* @returns 32-byte derived seed for child tree
|
|
70
|
+
*/
|
|
71
|
+
export declare function deriveChildTreeSeedJava(childSeed: Uint8Array, childIndex: number): Uint8Array;
|
|
72
|
+
/**
|
|
73
|
+
* Hash a single object matching Java's Crypto.hashObject()
|
|
74
|
+
*
|
|
75
|
+
* From TreeKeyNode.java line 30:
|
|
76
|
+
* mChildSeed = Crypto.getInstance().hashObject(zPrivateSeed);
|
|
77
|
+
*
|
|
78
|
+
* This serializes the object as MiniData (length-prefixed) and hashes it.
|
|
79
|
+
*
|
|
80
|
+
* @param data - Raw bytes (will be serialized as MiniData)
|
|
81
|
+
* @returns 32-byte SHA3-256 hash
|
|
82
|
+
*/
|
|
83
|
+
export declare function hashObject(data: Uint8Array): Uint8Array;
|
|
84
|
+
/**
|
|
85
|
+
* Convert index to MiniData bytes matching Java's:
|
|
86
|
+
* new MiniData(new BigInteger(Integer.toString(index)))
|
|
87
|
+
*
|
|
88
|
+
* BigInteger uses minimum byte representation (no leading zeros).
|
|
89
|
+
* This is used for per-address key derivation in Wallet.java.
|
|
90
|
+
*
|
|
91
|
+
* @param index - Non-negative integer (0, 1, 2, ...)
|
|
92
|
+
* @returns Minimal byte representation of the index
|
|
93
|
+
*/
|
|
94
|
+
export declare function indexToMiniDataBytes(index: number): Uint8Array;
|
|
95
|
+
/**
|
|
96
|
+
* Derive per-address private seed matching Minima Wallet.java exactly
|
|
97
|
+
*
|
|
98
|
+
* From Wallet.java createNewKey() (lines 498-503):
|
|
99
|
+
* MiniData modifier = new MiniData(new BigInteger(Integer.toString(numkeys)));
|
|
100
|
+
* MiniData privseed = Crypto.getInstance().hashObjects(new MiniData(mBaseSeed.getSeed()), modifier);
|
|
101
|
+
*
|
|
102
|
+
* CRITICAL: This is DIFFERENT from deriveChainSeedJava!
|
|
103
|
+
* - deriveChainSeedJava: hashAllObjects(MiniNumber(index), MiniData(seed)) - index first as MiniNumber
|
|
104
|
+
* - This function: hashObjects(MiniData(baseSeed), MiniData(modifier)) - baseSeed first, both as MiniData
|
|
105
|
+
*
|
|
106
|
+
* @param baseSeed - 32-byte base wallet seed (from mnemonic)
|
|
107
|
+
* @param addressIndex - Address index (0, 1, 2, ... 63)
|
|
108
|
+
* @returns 32-byte private seed for this address's TreeKey
|
|
109
|
+
*/
|
|
110
|
+
export declare function derivePerAddressSeed(baseSeed: Uint8Array, addressIndex: number): Uint8Array;
|
|
111
|
+
/**
|
|
112
|
+
* Serialize MiniNumber.ZERO - cached for performance
|
|
113
|
+
* Returns: [0x00, 0x01, 0x00] = scale(0) + length(1) + value(0)
|
|
114
|
+
*/
|
|
115
|
+
export declare function serializeMiniNumberZERO(): Uint8Array;
|
|
116
|
+
/**
|
|
117
|
+
* Serialize MiniNumber.ONE
|
|
118
|
+
* Returns: [0x00, 0x01, 0x01] = scale(0) + length(1) + value(1)
|
|
119
|
+
*/
|
|
120
|
+
export declare function serializeMiniNumberONE(): Uint8Array;
|
|
121
|
+
/**
|
|
122
|
+
* Serialize hash in MiniData.writeHashToStream format (4-byte length prefix)
|
|
123
|
+
*
|
|
124
|
+
* Re-export of Streamable.writeHashToStream for backward compatibility.
|
|
125
|
+
*
|
|
126
|
+
* @param data - Hash bytes (max 64 bytes per MINIMA_MAX_HASH_LENGTH)
|
|
127
|
+
* @returns Serialized bytes with 4-byte length prefix
|
|
128
|
+
*/
|
|
129
|
+
export declare function writeHashToStream(data: Uint8Array): Uint8Array;
|
|
130
|
+
/**
|
|
131
|
+
* Java hashAllObjects for MMRData hashing
|
|
132
|
+
* Used for MMRData.CreateMMRDataLeafNode and CreateMMRDataParentNode
|
|
133
|
+
*
|
|
134
|
+
* From Crypto.java hashAllObjects:
|
|
135
|
+
* Serializes each Streamable object and hashes the concatenation.
|
|
136
|
+
*
|
|
137
|
+
* For MMRData, the serialization is:
|
|
138
|
+
* - MiniNumber: [scale][len][data] (see serializeMiniNumber)
|
|
139
|
+
* - MiniData: [4-byte len][data] for writeDataStream
|
|
140
|
+
* - Hash: [4-byte len][data] for writeHashToStream (same as MiniData)
|
|
141
|
+
*
|
|
142
|
+
* CRITICAL: Java writeHashToStream uses writeInt (4-byte prefix),
|
|
143
|
+
* identical to writeDataStream. See MiniData.java lines 282-289.
|
|
144
|
+
*
|
|
145
|
+
* @param items - Pre-serialized items to concatenate and hash
|
|
146
|
+
* @returns 32-byte SHA3-256 hash
|
|
147
|
+
*/
|
|
148
|
+
export declare function javaHashAllObjects(...items: Uint8Array[]): Uint8Array;
|
|
149
|
+
/**
|
|
150
|
+
* MMREntryNumber interface matching Minima's MMREntryNumber.java
|
|
151
|
+
* Represents a BigDecimal position in the MMR tree
|
|
152
|
+
*/
|
|
153
|
+
export interface MMREntryNumber {
|
|
154
|
+
scale: number;
|
|
155
|
+
unscaled: bigint;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Create MMREntryNumber from bigint (common case for integer positions)
|
|
159
|
+
*/
|
|
160
|
+
export declare function createMMREntryNumber(value: bigint): MMREntryNumber;
|
|
161
|
+
/**
|
|
162
|
+
* Serialize MMREntryNumber matching Java MMREntryNumber.writeDataStream()
|
|
163
|
+
*
|
|
164
|
+
* From MMREntryNumber.java:
|
|
165
|
+
* MiniNumber.WriteToStream(zOut, mNumber.scale());
|
|
166
|
+
* MiniData.WriteToStream(zOut, mNumber.unscaledValue().toByteArray());
|
|
167
|
+
*
|
|
168
|
+
* @param entry - MMREntryNumber to serialize
|
|
169
|
+
* @returns Serialized bytes: MiniNumber(scale) + MiniData(unscaled bytes)
|
|
170
|
+
*/
|
|
171
|
+
export declare function serializeMMREntryNumber(entry: MMREntryNumber): Uint8Array;
|
|
172
|
+
/**
|
|
173
|
+
* MMRData interface for serialization purposes
|
|
174
|
+
* Matches Minima's MMRData.java
|
|
175
|
+
*/
|
|
176
|
+
export interface MMRData {
|
|
177
|
+
data: Uint8Array;
|
|
178
|
+
value: bigint;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Serialize MMRData matching Java MMRData.writeDataStream()
|
|
182
|
+
*
|
|
183
|
+
* From MMRData.java:
|
|
184
|
+
* mData.writeHashToStream(zOut); // 4-byte length prefix + hash bytes
|
|
185
|
+
* mValue.writeDataStream(zOut); // MiniNumber format
|
|
186
|
+
*
|
|
187
|
+
* @param mmrData - MMRData to serialize
|
|
188
|
+
* @returns Serialized bytes: writeHashToStream(hash) + MiniNumber(value)
|
|
189
|
+
*/
|
|
190
|
+
export declare function serializeMMRData(mmrData: MMRData): Uint8Array;
|
|
191
|
+
/**
|
|
192
|
+
* MMREntry interface for serialization purposes
|
|
193
|
+
* Matches Minima's MMREntry.java
|
|
194
|
+
*/
|
|
195
|
+
export interface MMREntry {
|
|
196
|
+
row: number;
|
|
197
|
+
entryNumber: MMREntryNumber;
|
|
198
|
+
mmrData: MMRData;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Serialize MMREntry matching Java MMREntry.writeDataStream()
|
|
202
|
+
*
|
|
203
|
+
* From MMREntry.java:
|
|
204
|
+
* MiniNumber row = new MiniNumber(mRow);
|
|
205
|
+
* row.writeDataStream(zOut);
|
|
206
|
+
* mEntryNumber.writeDataStream(zOut);
|
|
207
|
+
* mMMRData.writeDataStream(zOut);
|
|
208
|
+
*
|
|
209
|
+
* @param entry - MMREntry to serialize
|
|
210
|
+
* @returns Serialized bytes: MiniNumber(row) + MMREntryNumber + MMRData
|
|
211
|
+
*/
|
|
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;
|
|
234
|
+
/**
|
|
235
|
+
* Precompute output coin IDs before computing the transaction digest.
|
|
236
|
+
*
|
|
237
|
+
* CRITICAL: Java's txnsign command calls TxPoWGenerator.precomputeTransactionCoinID(txn)
|
|
238
|
+
* BEFORE calculateTransactionID(). This means the transaction digest that gets signed
|
|
239
|
+
* includes the PRECOMPUTED output coin IDs, not the placeholder 0x00.
|
|
240
|
+
*
|
|
241
|
+
* Formula: outputCoinID = SHA3-256( writeMiniData(input[0].coinID) || writeMiniNumber(outputIndex) )
|
|
242
|
+
* This matches Java's Crypto.hashObjects(baseCoinID, new MiniNumber(outputNum))
|
|
243
|
+
*
|
|
244
|
+
* Without this, the wallet signs a different digest than what the node verifies against,
|
|
245
|
+
* causing allsignaturesvalid=false on every transaction.
|
|
246
|
+
*
|
|
247
|
+
* @param inputs - Transaction inputs array, each must have a coinId (Uint8Array)
|
|
248
|
+
* @param outputs - Transaction outputs array, each will have its coinId mutated in-place
|
|
249
|
+
*/
|
|
250
|
+
export declare function precomputeTransactionCoinID(inputs: {
|
|
251
|
+
coinId: Uint8Array;
|
|
252
|
+
}[], outputs: {
|
|
253
|
+
coinId: Uint8Array;
|
|
254
|
+
}[]): void;
|