@totemsdk/core 1.0.9 → 1.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +5 -5
  3. package/dist/Streamable.js +54 -31
  4. package/dist/adapters/index.js +18 -8
  5. package/dist/adapters/types.js +19 -8
  6. package/dist/binio.js +5 -1
  7. package/dist/bip39.js +24 -14
  8. package/dist/derive.js +11 -7
  9. package/dist/index.js +130 -22
  10. package/dist/javaStreamables.js +49 -30
  11. package/dist/lease/LeaseMonitor.js +7 -3
  12. package/dist/lease/LeaseStore.js +7 -3
  13. package/dist/lease/WatermarkStore.js +7 -3
  14. package/dist/lease/index.js +13 -4
  15. package/dist/lease-client.js +8 -3
  16. package/dist/minima32.js +22 -13
  17. package/dist/minimaWireSerializer.js +20 -14
  18. package/dist/mmr.js +35 -23
  19. package/dist/mx.js +10 -1
  20. package/dist/params.js +9 -5
  21. package/dist/script.js +12 -7
  22. package/dist/scripts/contract-helpers.js +37 -26
  23. package/dist/scripts/dapp-types.js +11 -6
  24. package/dist/scripts/index.js +38 -4
  25. package/dist/scripts/types.js +26 -12
  26. package/dist/scripts/witness-serializer.js +48 -30
  27. package/dist/transaction.js +55 -46
  28. package/dist/treekey.js +74 -58
  29. package/dist/tx/TransactionLifecycle.js +11 -5
  30. package/dist/tx/TransactionReceiptStore.js +7 -3
  31. package/dist/tx/TransactionService.js +14 -10
  32. package/dist/tx/index.js +11 -3
  33. package/dist/tx/types.js +2 -1
  34. package/dist/util.js +5 -1
  35. package/dist/utils.js +12 -5
  36. package/dist/verify.js +36 -25
  37. package/dist/version.js +5 -2
  38. package/dist/wots.d.ts +2 -2
  39. package/dist/wots.js +94 -64
  40. package/package.json +50 -6
  41. package/src/Streamable.d.ts +0 -268
  42. package/src/Streamable.js +0 -416
  43. package/src/Streamable.ts +0 -567
  44. package/src/__tests__/Streamable.parity.test.ts +0 -422
  45. package/src/__tests__/perAddressDerivation.parity.test.ts +0 -152
  46. package/src/__tests__/roottree-prepare.test.ts +0 -101
  47. package/src/__tests__/wots-parity.test.ts +0 -289
  48. package/src/adapters/index.d.ts +0 -190
  49. package/src/adapters/index.js +0 -117
  50. package/src/adapters/index.ts +0 -301
  51. package/src/adapters/types.ts +0 -235
  52. package/src/addr.oracle.test.ts +0 -25
  53. package/src/address.test.ts +0 -55
  54. package/src/binio.ts +0 -21
  55. package/src/bip39.d.ts +0 -91
  56. package/src/bip39.js +0 -427
  57. package/src/bip39.ts +0 -432
  58. package/src/derive.d.ts +0 -2
  59. package/src/derive.js +0 -13
  60. package/src/derive.ts +0 -11
  61. package/src/index.d.ts +0 -26
  62. package/src/index.js +0 -128
  63. package/src/index.test.ts +0 -5
  64. package/src/index.ts +0 -221
  65. package/src/javaStreamables.d.ts +0 -233
  66. package/src/javaStreamables.js +0 -332
  67. package/src/javaStreamables.ts +0 -403
  68. package/src/lease/LeaseMonitor.d.ts +0 -44
  69. package/src/lease/LeaseMonitor.js +0 -111
  70. package/src/lease/LeaseMonitor.ts +0 -157
  71. package/src/lease/LeaseStore.d.ts +0 -57
  72. package/src/lease/LeaseStore.js +0 -148
  73. package/src/lease/LeaseStore.ts +0 -203
  74. package/src/lease/WatermarkStore.d.ts +0 -61
  75. package/src/lease/WatermarkStore.js +0 -206
  76. package/src/lease/WatermarkStore.ts +0 -270
  77. package/src/lease/index.d.ts +0 -14
  78. package/src/lease/index.js +0 -22
  79. package/src/lease/index.ts +0 -41
  80. package/src/lease-client.d.ts +0 -31
  81. package/src/lease-client.js +0 -44
  82. package/src/lease-client.ts +0 -69
  83. package/src/minima32.d.ts +0 -10
  84. package/src/minima32.js +0 -113
  85. package/src/minima32.test.ts +0 -11
  86. package/src/minima32.ts +0 -127
  87. package/src/minimaWireSerializer.d.ts +0 -189
  88. package/src/minimaWireSerializer.js +0 -311
  89. package/src/minimaWireSerializer.test.ts +0 -466
  90. package/src/minimaWireSerializer.ts +0 -117
  91. package/src/mmr.d.ts +0 -157
  92. package/src/mmr.js +0 -340
  93. package/src/mmr.oracle.test.ts +0 -28
  94. package/src/mmr.ts +0 -429
  95. package/src/mx.test.ts +0 -25
  96. package/src/mx.ts +0 -1
  97. package/src/params.d.ts +0 -29
  98. package/src/params.d.ts.map +0 -1
  99. package/src/params.js +0 -20
  100. package/src/params.js.map +0 -1
  101. package/src/params.ts +0 -44
  102. package/src/script.d.ts +0 -7
  103. package/src/script.js +0 -27
  104. package/src/script.ts +0 -24
  105. package/src/scripts/contract-helpers.ts +0 -609
  106. package/src/scripts/dapp-types.ts +0 -240
  107. package/src/scripts/index.ts +0 -22
  108. package/src/scripts/types.d.ts +0 -81
  109. package/src/scripts/types.js +0 -145
  110. package/src/scripts/types.ts +0 -247
  111. package/src/scripts/witness-serializer.ts +0 -384
  112. package/src/transaction.ts +0 -430
  113. package/src/treekey.d.ts +0 -383
  114. package/src/treekey.js +0 -774
  115. package/src/treekey.parity.test.ts +0 -459
  116. package/src/treekey.ts +0 -975
  117. package/src/tx/TransactionLifecycle.d.ts +0 -55
  118. package/src/tx/TransactionLifecycle.js +0 -188
  119. package/src/tx/TransactionLifecycle.ts +0 -280
  120. package/src/tx/TransactionReceiptStore.d.ts +0 -36
  121. package/src/tx/TransactionReceiptStore.js +0 -89
  122. package/src/tx/TransactionReceiptStore.ts +0 -112
  123. package/src/tx/TransactionService.d.ts +0 -31
  124. package/src/tx/TransactionService.js +0 -140
  125. package/src/tx/TransactionService.ts +0 -252
  126. package/src/tx/index.d.ts +0 -13
  127. package/src/tx/index.js +0 -20
  128. package/src/tx/index.ts +0 -44
  129. package/src/tx/types.d.ts +0 -80
  130. package/src/tx/types.js +0 -6
  131. package/src/tx/types.ts +0 -130
  132. package/src/util.d.ts +0 -1
  133. package/src/util.js +0 -5
  134. package/src/util.ts +0 -1
  135. package/src/utils.d.ts +0 -8
  136. package/src/utils.js +0 -42
  137. package/src/utils.ts +0 -38
  138. package/src/verify.ts +0 -210
  139. package/src/version.ts +0 -13
  140. package/src/wots.d.ts +0 -224
  141. package/src/wots.d.ts.map +0 -1
  142. package/src/wots.js +0 -565
  143. package/src/wots.js.map +0 -1
  144. package/src/wots.ts +0 -651
  145. package/test-vectors.json +0 -45
package/src/index.js DELETED
@@ -1,128 +0,0 @@
1
- "use strict";
2
- /**
3
- * @module @totemsdk/core
4
- * Core cryptographic primitives, adapters, and utilities for Minima blockchain
5
- */
6
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
- if (k2 === undefined) k2 = k;
8
- var desc = Object.getOwnPropertyDescriptor(m, k);
9
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
- desc = { enumerable: true, get: function() { return m[k]; } };
11
- }
12
- Object.defineProperty(o, k2, desc);
13
- }) : (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- o[k2] = m[k];
16
- }));
17
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
19
- };
20
- Object.defineProperty(exports, "__esModule", { value: true });
21
- exports.getRootPublicKey = exports.deserializeTreeSignature = exports.serializeTreeSignature = exports.verifyTreeSignature = exports.TreeKeyNode = exports.TreeKey = 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.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.MINIMA_CONSTANTS = 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 = void 0;
23
- // Platform-agnostic Adapters (SDK Upgrade)
24
- __exportStar(require("./adapters"), exports);
25
- // Lease Management (SDK Upgrade) - exclude conflicting WotsIndices
26
- var lease_1 = require("./lease");
27
- Object.defineProperty(exports, "LeaseStore", { enumerable: true, get: function () { return lease_1.LeaseStore; } });
28
- Object.defineProperty(exports, "WatermarkStore", { enumerable: true, get: function () { return lease_1.WatermarkStore; } });
29
- Object.defineProperty(exports, "LeaseMonitor", { enumerable: true, get: function () { return lease_1.LeaseMonitor; } });
30
- Object.defineProperty(exports, "prepareLease", { enumerable: true, get: function () { return lease_1.prepareLease; } });
31
- Object.defineProperty(exports, "finalizeLease", { enumerable: true, get: function () { return lease_1.finalizeLease; } });
32
- Object.defineProperty(exports, "flatIndexFromLanes", { enumerable: true, get: function () { return lease_1.flatIndexFromLanes; } });
33
- // Transaction Management (SDK Upgrade) - exclude conflicting WotsIndices
34
- var tx_1 = require("./tx");
35
- Object.defineProperty(exports, "TransactionService", { enumerable: true, get: function () { return tx_1.TransactionService; } });
36
- Object.defineProperty(exports, "TransactionLifecycle", { enumerable: true, get: function () { return tx_1.TransactionLifecycle; } });
37
- Object.defineProperty(exports, "TransactionLifecycleError", { enumerable: true, get: function () { return tx_1.TransactionLifecycleError; } });
38
- Object.defineProperty(exports, "WatermarkExhaustedError", { enumerable: true, get: function () { return tx_1.WatermarkExhaustedError; } });
39
- Object.defineProperty(exports, "TransactionReceiptStore", { enumerable: true, get: function () { return tx_1.TransactionReceiptStore; } });
40
- // Utilities first (canonical concatBytes source)
41
- __exportStar(require("./utils"), exports);
42
- // WOTS Signatures - wots.concatBytes is intentionally shadowed by utils.concatBytes above
43
- var wots_1 = require("./wots");
44
- Object.defineProperty(exports, "F", { enumerable: true, get: function () { return wots_1.F; } });
45
- Object.defineProperty(exports, "hex", { enumerable: true, get: function () { return wots_1.hex; } });
46
- Object.defineProperty(exports, "fromHex", { enumerable: true, get: function () { return wots_1.fromHex; } });
47
- Object.defineProperty(exports, "u16be", { enumerable: true, get: function () { return wots_1.u16be; } });
48
- Object.defineProperty(exports, "u32be", { enumerable: true, get: function () { return wots_1.u32be; } });
49
- Object.defineProperty(exports, "assert32", { enumerable: true, get: function () { return wots_1.assert32; } });
50
- Object.defineProperty(exports, "h", { enumerable: true, get: function () { return wots_1.h; } });
51
- Object.defineProperty(exports, "prfChainSeed", { enumerable: true, get: function () { return wots_1.prfChainSeed; } });
52
- Object.defineProperty(exports, "toWinternitzDigits", { enumerable: true, get: function () { return wots_1.toWinternitzDigits; } });
53
- Object.defineProperty(exports, "baseWWithChecksum", { enumerable: true, get: function () { return wots_1.baseWWithChecksum; } });
54
- Object.defineProperty(exports, "derivePKdigest", { enumerable: true, get: function () { return wots_1.derivePKdigest; } });
55
- Object.defineProperty(exports, "wotsKeypairFromSeed", { enumerable: true, get: function () { return wots_1.wotsKeypairFromSeed; } });
56
- Object.defineProperty(exports, "wotsSign", { enumerable: true, get: function () { return wots_1.wotsSign; } });
57
- Object.defineProperty(exports, "wotsSignLegacy", { enumerable: true, get: function () { return wots_1.wotsSignLegacy; } });
58
- Object.defineProperty(exports, "wotsPkFromSig", { enumerable: true, get: function () { return wots_1.wotsPkFromSig; } });
59
- Object.defineProperty(exports, "wotsVerify", { enumerable: true, get: function () { return wots_1.wotsVerify; } });
60
- Object.defineProperty(exports, "wotsPublicKeyFromSeed", { enumerable: true, get: function () { return wots_1.wotsPublicKeyFromSeed; } });
61
- // WOTS Params (from params.ts, imported by wots.ts)
62
- __exportStar(require("./params"), exports);
63
- // Java-Compatible Serialization Helpers (for Minima-compatible seed derivation)
64
- var javaStreamables_1 = require("./javaStreamables");
65
- Object.defineProperty(exports, "serializeMiniNumber", { enumerable: true, get: function () { return javaStreamables_1.serializeMiniNumber; } });
66
- Object.defineProperty(exports, "serializeMiniData", { enumerable: true, get: function () { return javaStreamables_1.serializeMiniData; } });
67
- Object.defineProperty(exports, "hashAllObjects", { enumerable: true, get: function () { return javaStreamables_1.hashAllObjects; } });
68
- Object.defineProperty(exports, "deriveChainSeedJava", { enumerable: true, get: function () { return javaStreamables_1.deriveChainSeedJava; } });
69
- Object.defineProperty(exports, "deriveChildTreeSeedJava", { enumerable: true, get: function () { return javaStreamables_1.deriveChildTreeSeedJava; } });
70
- Object.defineProperty(exports, "hashObject", { enumerable: true, get: function () { return javaStreamables_1.hashObject; } });
71
- Object.defineProperty(exports, "serializeMiniNumberZERO", { enumerable: true, get: function () { return javaStreamables_1.serializeMiniNumberZERO; } });
72
- Object.defineProperty(exports, "serializeMiniNumberONE", { enumerable: true, get: function () { return javaStreamables_1.serializeMiniNumberONE; } });
73
- Object.defineProperty(exports, "writeHashToStream", { enumerable: true, get: function () { return javaStreamables_1.writeHashToStream; } });
74
- Object.defineProperty(exports, "javaHashAllObjects", { enumerable: true, get: function () { return javaStreamables_1.javaHashAllObjects; } });
75
- // Per-address key derivation (Minima Wallet.java compatible) - 2026-02
76
- Object.defineProperty(exports, "indexToMiniDataBytes", { enumerable: true, get: function () { return javaStreamables_1.indexToMiniDataBytes; } });
77
- Object.defineProperty(exports, "derivePerAddressSeed", { enumerable: true, get: function () { return javaStreamables_1.derivePerAddressSeed; } });
78
- // MMREntryNumber and MMREntry serialization (2026-01-18)
79
- Object.defineProperty(exports, "createMMREntryNumber", { enumerable: true, get: function () { return javaStreamables_1.createMMREntryNumber; } });
80
- Object.defineProperty(exports, "serializeMMREntryNumber", { enumerable: true, get: function () { return javaStreamables_1.serializeMMREntryNumber; } });
81
- Object.defineProperty(exports, "serializeMMRData", { enumerable: true, get: function () { return javaStreamables_1.serializeMMRData; } });
82
- Object.defineProperty(exports, "serializeMMREntry", { enumerable: true, get: function () { return javaStreamables_1.serializeMMREntry; } });
83
- // TreeKey/TreeKeyNode - Hierarchical WOTS key tree matching Minima's TreeKey.java
84
- var treekey_1 = require("./treekey");
85
- Object.defineProperty(exports, "TreeKey", { enumerable: true, get: function () { return treekey_1.TreeKey; } });
86
- Object.defineProperty(exports, "TreeKeyNode", { enumerable: true, get: function () { return treekey_1.TreeKeyNode; } });
87
- Object.defineProperty(exports, "verifyTreeSignature", { enumerable: true, get: function () { return treekey_1.verifyTreeSignature; } });
88
- Object.defineProperty(exports, "serializeTreeSignature", { enumerable: true, get: function () { return treekey_1.serializeTreeSignature; } });
89
- Object.defineProperty(exports, "deserializeTreeSignature", { enumerable: true, get: function () { return treekey_1.deserializeTreeSignature; } });
90
- Object.defineProperty(exports, "getRootPublicKey", { enumerable: true, get: function () { return treekey_1.getRootPublicKey; } });
91
- Object.defineProperty(exports, "DEFAULT_KEYS_PER_LEVEL", { enumerable: true, get: function () { return treekey_1.DEFAULT_KEYS_PER_LEVEL; } });
92
- Object.defineProperty(exports, "DEFAULT_LEVELS", { enumerable: true, get: function () { return treekey_1.DEFAULT_LEVELS; } });
93
- // Per-address TreeKey helpers (Minima Wallet.java compatible) - 2026-02
94
- Object.defineProperty(exports, "createPerAddressTreeKey", { enumerable: true, get: function () { return treekey_1.createPerAddressTreeKey; } });
95
- Object.defineProperty(exports, "createPerAddressTreeKeyAsync", { enumerable: true, get: function () { return treekey_1.createPerAddressTreeKeyAsync; } });
96
- Object.defineProperty(exports, "deriveAddressPublicKey", { enumerable: true, get: function () { return treekey_1.deriveAddressPublicKey; } });
97
- Object.defineProperty(exports, "getPerAddressPublicKey", { enumerable: true, get: function () { return treekey_1.getPerAddressPublicKey; } });
98
- // Script helpers (for address derivation)
99
- var script_1 = require("./script");
100
- Object.defineProperty(exports, "scriptFromWotsPk", { enumerable: true, get: function () { return script_1.scriptFromWotsPk; } });
101
- Object.defineProperty(exports, "wotsAddressFromKeypair", { enumerable: true, get: function () { return script_1.wotsAddressFromKeypair; } });
102
- // Base32 Encoding (Minima-compatible)
103
- __exportStar(require("./minima32"), exports);
104
- // Merkle Mountain Range (original)
105
- __exportStar(require("./mmr"), exports);
106
- // Address Derivation (original)
107
- var derive_1 = require("./derive");
108
- Object.defineProperty(exports, "scriptToAddress", { enumerable: true, get: function () { return derive_1.scriptToAddress; } });
109
- Object.defineProperty(exports, "addressToRoot", { enumerable: true, get: function () { return derive_1.addressToRoot; } });
110
- // BIP39 Seed Phrase Handling (Minima-compatible, NOT standard BIP39)
111
- var bip39_1 = require("./bip39");
112
- Object.defineProperty(exports, "WORD_LIST", { enumerable: true, get: function () { return bip39_1.WORD_LIST; } });
113
- Object.defineProperty(exports, "cleanSeedPhrase", { enumerable: true, get: function () { return bip39_1.cleanSeedPhrase; } });
114
- Object.defineProperty(exports, "validatePhrase", { enumerable: true, get: function () { return bip39_1.validatePhrase; } });
115
- Object.defineProperty(exports, "convertStringToSeed", { enumerable: true, get: function () { return bip39_1.convertStringToSeed; } });
116
- Object.defineProperty(exports, "convertWordListToSeed", { enumerable: true, get: function () { return bip39_1.convertWordListToSeed; } });
117
- Object.defineProperty(exports, "phraseToSeed", { enumerable: true, get: function () { return bip39_1.phraseToSeed; } });
118
- Object.defineProperty(exports, "generateWordList", { enumerable: true, get: function () { return bip39_1.generateWordList; } });
119
- Object.defineProperty(exports, "generateSeedPhrase", { enumerable: true, get: function () { return bip39_1.generateSeedPhrase; } });
120
- // Constants
121
- exports.MINIMA_CONSTANTS = {
122
- WOTS_W: 8,
123
- WOTS_N: 32,
124
- MAX_SIGNATURES: 262144,
125
- SIGNATURE_LEVELS: 3,
126
- ADDRESS_PREFIX: 'Mx',
127
- NETWORK_ID: 1
128
- };
package/src/index.test.ts DELETED
@@ -1,5 +0,0 @@
1
- import { describe, test } from "vitest";
2
-
3
- describe("base32", () => {
4
- test.todo("goldens once Minima BaseConverter is ported");
5
- });
package/src/index.ts DELETED
@@ -1,221 +0,0 @@
1
- /**
2
- * @module @totemsdk/core
3
- * Core cryptographic primitives, adapters, and utilities for Minima blockchain
4
- */
5
-
6
- // Version information for bundle duplication detection
7
- export * from './version.js';
8
-
9
- // Platform-agnostic Adapters (SDK Upgrade)
10
- export * from './adapters/index.js';
11
-
12
- // Lease Management (SDK Upgrade) - exclude conflicting WotsIndices
13
- export {
14
- LeaseStore,
15
- WatermarkStore,
16
- LeaseMonitor,
17
- prepareLease,
18
- finalizeLease,
19
- flatIndexFromLanes,
20
- type StoredLease,
21
- type LeaseStatus,
22
- type LeaseStoreConfig,
23
- type LeaseWotsIndices,
24
- type WatermarkState,
25
- type SyncResult,
26
- type WatermarkStoreConfig,
27
- type LeaseExpiryEvent,
28
- type LeaseExpiryCallback,
29
- type LeaseMonitorConfig,
30
- type PrepareArgs,
31
- type PrepareResp,
32
- } from './lease/index.js';
33
-
34
- // Transaction Management (SDK Upgrade) - exclude conflicting WotsIndices
35
- export {
36
- TransactionService,
37
- TransactionLifecycle,
38
- TransactionLifecycleError,
39
- WatermarkExhaustedError,
40
- TransactionReceiptStore,
41
- type TransactionServiceConfig,
42
- type WotsSigningDependencies,
43
- type TransactionLifecycleConfig,
44
- type WatermarkSyncFunction,
45
- type PrepareResult,
46
- type TransactionReceiptStoreConfig,
47
- type PrepareRequest,
48
- type PrepareResponse,
49
- type SignRequest,
50
- type SignResult,
51
- type HierarchicalWitnessBundle,
52
- type WitnessBundle,
53
- type FinalizeRequest,
54
- type FinalizeResponse,
55
- type TransactionMetadata,
56
- type TransactionReceipt,
57
- type TransactionError,
58
- } from './tx/index.js';
59
-
60
- // Canonical WotsIndices type (use from tx/types)
61
- export type { WotsIndices } from './tx/index.js';
62
-
63
- // Utilities first (canonical concatBytes source)
64
- export * from './utils.js';
65
-
66
- // WOTS Signatures - wots.concatBytes is intentionally shadowed by utils.concatBytes above
67
- export {
68
- F,
69
- hex,
70
- fromHex,
71
- u16be,
72
- u32be,
73
- assert32,
74
- h,
75
- prfChainSeed,
76
- toWinternitzDigits,
77
- baseWWithChecksum,
78
- derivePKdigest,
79
- wotsKeypairFromSeed,
80
- wotsSign,
81
- wotsSignLegacy,
82
- wotsPkFromSig,
83
- wotsVerify,
84
- wotsVerifyDigest,
85
- wotsPublicKeyFromSeed,
86
- type WotsKeypair,
87
- type WotsSignature,
88
- } from './wots.js';
89
-
90
- // WOTS Params (from params.ts, imported by wots.ts)
91
- export * from './params.js';
92
-
93
- // Java-Compatible Serialization Helpers (for Minima-compatible seed derivation)
94
- export {
95
- serializeMiniNumber,
96
- serializeMiniData,
97
- hashAllObjects,
98
- deriveChainSeedJava,
99
- deriveChildTreeSeedJava,
100
- hashObject,
101
- serializeMiniNumberZERO,
102
- serializeMiniNumberONE,
103
- writeHashToStream,
104
- javaHashAllObjects,
105
- // Per-address key derivation (Minima Wallet.java compatible) - 2026-02
106
- indexToMiniDataBytes,
107
- derivePerAddressSeed,
108
- // MMREntryNumber and MMREntry serialization (2026-01-18)
109
- createMMREntryNumber,
110
- serializeMMREntryNumber,
111
- serializeMMRData,
112
- serializeMMREntry,
113
- precomputeTransactionCoinID,
114
- type MMREntryNumber as JavaMMREntryNumber,
115
- type MMRData as JavaMMRData,
116
- type MMREntry as JavaMMREntry,
117
- } from './javaStreamables.js';
118
-
119
- // TreeKey/TreeKeyNode - Hierarchical WOTS key tree matching Minima's TreeKey.java
120
- export {
121
- TreeKey,
122
- type KeyGenProgress,
123
- type ProgressCallback,
124
- TreeKeyNode,
125
- verifyTreeSignature,
126
- serializeTreeSignature,
127
- deserializeTreeSignature,
128
- getRootPublicKey,
129
- DEFAULT_KEYS_PER_LEVEL,
130
- DEFAULT_LEVELS,
131
- type SignatureProof,
132
- type TreeSignature,
133
- // Per-address TreeKey helpers (Minima Wallet.java compatible) - 2026-02
134
- createPerAddressTreeKey,
135
- createPerAddressTreeKeyAsync,
136
- deriveAddressPublicKey,
137
- getPerAddressPublicKey,
138
- } from './treekey.js';
139
-
140
- // Script helpers (for address derivation)
141
- export { scriptFromWotsPk, wotsAddressFromKeypair } from './script.js';
142
-
143
- // Base32 Encoding (Minima-compatible)
144
- export * from './minima32.js';
145
-
146
- // Merkle Mountain Range (original)
147
- export * from './mmr.js';
148
-
149
- // Script Types, Witness Serializer, Contract Helpers
150
- export * from './scripts/index.js';
151
-
152
- // Address Derivation (original)
153
- export { scriptToAddress, addressToRoot } from './derive.js';
154
-
155
- // BIP39 Seed Phrase Handling (Minima-compatible, NOT standard BIP39)
156
- export {
157
- WORD_LIST,
158
- cleanSeedPhrase,
159
- validatePhrase,
160
- convertStringToSeed,
161
- convertWordListToSeed,
162
- phraseToSeed,
163
- generateWordList,
164
- generateSeedPhrase,
165
- } from './bip39.js';
166
-
167
- // Transaction Serialization & Digest (Java-compatible, extension parity)
168
- export {
169
- type MinimaTransaction,
170
- type MinimaCoin,
171
- type ParsedMiniNumber,
172
- type MinimaToken,
173
- type StateVariable,
174
- type RawStateVariable,
175
- type CoinProofData,
176
- type SpendableCoinInput,
177
- type TransactionBuildResult,
178
- parseDecimalToMiniNumber,
179
- serializeCoin,
180
- serializeTransaction,
181
- computeTransactionDigest,
182
- precomputeTransactionCoinID as precomputeTransactionCoinIDTx,
183
- createDefaultTransaction,
184
- buildMinimaCoin,
185
- } from './transaction.js';
186
-
187
- // High-level Verification API (convenience functions for integrators)
188
- export {
189
- verifySignature,
190
- verifySignatureDetailed,
191
- verifyTreeSignatureDetailed,
192
- deriveAddressFromPublicKey,
193
- normalizeHex,
194
- createChallenge,
195
- validateChallenge,
196
- type VerificationResult,
197
- } from './verify.js';
198
-
199
- // Constants
200
- export const MINIMA_CONSTANTS = {
201
- WOTS_W: 8,
202
- WOTS_N: 32,
203
- MAX_SIGNATURES: 262144,
204
- SIGNATURE_LEVELS: 3,
205
- ADDRESS_PREFIX: 'Mx',
206
- NETWORK_ID: 1
207
- } as const;
208
-
209
- // Streamable primitives (low-level serialization building blocks)
210
- export {
211
- writeMiniNumber,
212
- writeMiniData,
213
- writeMiniByte,
214
- writeMMREntryNumber,
215
- concat,
216
- hexToBytes,
217
- bytesToHex,
218
- bigIntToByteArray,
219
- writeMiniString,
220
- type Bytes,
221
- } from './Streamable.js';
@@ -1,233 +0,0 @@
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
- * Precompute output coin IDs before computing the transaction digest.
215
- *
216
- * CRITICAL: Java's txnsign command calls TxPoWGenerator.precomputeTransactionCoinID(txn)
217
- * BEFORE calculateTransactionID(). This means the transaction digest that gets signed
218
- * includes the PRECOMPUTED output coin IDs, not the placeholder 0x00.
219
- *
220
- * Formula: outputCoinID = SHA3-256( writeMiniData(input[0].coinID) || writeMiniNumber(outputIndex) )
221
- * This matches Java's Crypto.hashObjects(baseCoinID, new MiniNumber(outputNum))
222
- *
223
- * Without this, the wallet signs a different digest than what the node verifies against,
224
- * causing allsignaturesvalid=false on every transaction.
225
- *
226
- * @param inputs - Transaction inputs array, each must have a coinId (Uint8Array)
227
- * @param outputs - Transaction outputs array, each will have its coinId mutated in-place
228
- */
229
- export declare function precomputeTransactionCoinID(inputs: {
230
- coinId: Uint8Array;
231
- }[], outputs: {
232
- coinId: Uint8Array;
233
- }[]): void;