@totemsdk/core 1.0.8 → 1.0.10

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 (142) 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.js +94 -64
  39. package/package.json +35 -6
  40. package/src/Streamable.d.ts +0 -265
  41. package/src/Streamable.js +0 -431
  42. package/src/Streamable.ts +0 -567
  43. package/src/__tests__/Streamable.parity.test.ts +0 -422
  44. package/src/__tests__/perAddressDerivation.parity.test.ts +0 -152
  45. package/src/__tests__/roottree-prepare.test.ts +0 -101
  46. package/src/__tests__/wots-parity.test.ts +0 -289
  47. package/src/adapters/index.d.ts +0 -190
  48. package/src/adapters/index.js +0 -117
  49. package/src/adapters/index.ts +0 -301
  50. package/src/adapters/types.ts +0 -235
  51. package/src/addr.oracle.test.ts +0 -25
  52. package/src/address.test.ts +0 -55
  53. package/src/binio.ts +0 -21
  54. package/src/bip39.d.ts +0 -91
  55. package/src/bip39.js +0 -427
  56. package/src/bip39.ts +0 -432
  57. package/src/derive.d.ts +0 -2
  58. package/src/derive.js +0 -13
  59. package/src/derive.ts +0 -11
  60. package/src/index.d.ts +0 -26
  61. package/src/index.js +0 -128
  62. package/src/index.test.ts +0 -5
  63. package/src/index.ts +0 -221
  64. package/src/javaStreamables.d.ts +0 -233
  65. package/src/javaStreamables.js +0 -328
  66. package/src/javaStreamables.ts +0 -403
  67. package/src/lease/LeaseMonitor.d.ts +0 -44
  68. package/src/lease/LeaseMonitor.js +0 -111
  69. package/src/lease/LeaseMonitor.ts +0 -157
  70. package/src/lease/LeaseStore.d.ts +0 -57
  71. package/src/lease/LeaseStore.js +0 -148
  72. package/src/lease/LeaseStore.ts +0 -203
  73. package/src/lease/WatermarkStore.d.ts +0 -61
  74. package/src/lease/WatermarkStore.js +0 -206
  75. package/src/lease/WatermarkStore.ts +0 -270
  76. package/src/lease/index.d.ts +0 -14
  77. package/src/lease/index.js +0 -22
  78. package/src/lease/index.ts +0 -41
  79. package/src/lease-client.d.ts +0 -31
  80. package/src/lease-client.js +0 -44
  81. package/src/lease-client.ts +0 -69
  82. package/src/minima32.d.ts +0 -10
  83. package/src/minima32.js +0 -113
  84. package/src/minima32.test.ts +0 -11
  85. package/src/minima32.ts +0 -127
  86. package/src/minimaWireSerializer.d.ts +0 -189
  87. package/src/minimaWireSerializer.js +0 -311
  88. package/src/minimaWireSerializer.test.ts +0 -466
  89. package/src/minimaWireSerializer.ts +0 -117
  90. package/src/mmr.d.ts +0 -159
  91. package/src/mmr.js +0 -352
  92. package/src/mmr.oracle.test.ts +0 -28
  93. package/src/mmr.ts +0 -429
  94. package/src/mx.test.ts +0 -25
  95. package/src/mx.ts +0 -1
  96. package/src/params.d.ts +0 -29
  97. package/src/params.d.ts.map +0 -1
  98. package/src/params.js +0 -20
  99. package/src/params.js.map +0 -1
  100. package/src/params.ts +0 -44
  101. package/src/script.d.ts +0 -7
  102. package/src/script.js +0 -27
  103. package/src/script.ts +0 -24
  104. package/src/scripts/contract-helpers.ts +0 -609
  105. package/src/scripts/dapp-types.ts +0 -240
  106. package/src/scripts/index.ts +0 -22
  107. package/src/scripts/types.ts +0 -247
  108. package/src/scripts/witness-serializer.ts +0 -384
  109. package/src/transaction.ts +0 -430
  110. package/src/treekey.d.ts +0 -383
  111. package/src/treekey.js +0 -774
  112. package/src/treekey.parity.test.ts +0 -459
  113. package/src/treekey.ts +0 -975
  114. package/src/tx/TransactionLifecycle.d.ts +0 -55
  115. package/src/tx/TransactionLifecycle.js +0 -188
  116. package/src/tx/TransactionLifecycle.ts +0 -280
  117. package/src/tx/TransactionReceiptStore.d.ts +0 -36
  118. package/src/tx/TransactionReceiptStore.js +0 -89
  119. package/src/tx/TransactionReceiptStore.ts +0 -112
  120. package/src/tx/TransactionService.d.ts +0 -31
  121. package/src/tx/TransactionService.js +0 -140
  122. package/src/tx/TransactionService.ts +0 -252
  123. package/src/tx/index.d.ts +0 -13
  124. package/src/tx/index.js +0 -20
  125. package/src/tx/index.ts +0 -44
  126. package/src/tx/types.d.ts +0 -80
  127. package/src/tx/types.js +0 -6
  128. package/src/tx/types.ts +0 -130
  129. package/src/util.d.ts +0 -1
  130. package/src/util.js +0 -5
  131. package/src/util.ts +0 -1
  132. package/src/utils.d.ts +0 -8
  133. package/src/utils.js +0 -42
  134. package/src/utils.ts +0 -38
  135. package/src/verify.ts +0 -210
  136. package/src/version.ts +0 -13
  137. package/src/wots.d.ts +0 -224
  138. package/src/wots.d.ts.map +0 -1
  139. package/src/wots.js +0 -565
  140. package/src/wots.js.map +0 -1
  141. package/src/wots.ts +0 -651
  142. package/test-vectors.json +0 -45
package/package.json CHANGED
@@ -1,41 +1,50 @@
1
1
  {
2
2
  "name": "@totemsdk/core",
3
- "version": "1.0.8",
3
+ "version": "1.0.10",
4
4
  "description": "Core cryptographic primitives for Totem SDK",
5
- "type": "module",
6
5
  "main": "dist/index.js",
7
6
  "types": "dist/index.d.ts",
8
7
  "exports": {
9
8
  ".": {
10
9
  "types": "./dist/index.d.ts",
10
+ "require": "./dist/index.js",
11
11
  "import": "./dist/index.js"
12
12
  },
13
13
  "./adapters": {
14
14
  "types": "./dist/adapters/index.d.ts",
15
+ "require": "./dist/adapters/index.js",
15
16
  "import": "./dist/adapters/index.js"
16
17
  },
17
18
  "./adapters/types": {
18
19
  "types": "./dist/adapters/types.d.ts",
20
+ "require": "./dist/adapters/types.js",
19
21
  "import": "./dist/adapters/types.js"
20
22
  },
21
23
  "./lease": {
22
24
  "types": "./dist/lease/index.d.ts",
25
+ "require": "./dist/lease/index.js",
23
26
  "import": "./dist/lease/index.js"
24
27
  },
25
28
  "./tx": {
26
29
  "types": "./dist/tx/index.d.ts",
30
+ "require": "./dist/tx/index.js",
27
31
  "import": "./dist/tx/index.js"
28
32
  },
33
+ "./scripts": {
34
+ "types": "./dist/scripts/index.d.ts",
35
+ "require": "./dist/scripts/index.js",
36
+ "import": "./dist/scripts/index.js"
37
+ },
29
38
  "./test-vectors.json": "./test-vectors.json"
30
39
  },
31
40
  "files": [
32
41
  "dist",
33
- "src",
34
- "test-vectors.json"
42
+ "README.md",
43
+ "LICENSE"
35
44
  ],
36
45
  "dependencies": {},
37
46
  "peerDependencies": {
38
- "@noble/hashes": ">=1.3.0"
47
+ "@noble/hashes": "^2.0.0"
39
48
  },
40
49
  "peerDependenciesMeta": {
41
50
  "@noble/hashes": {
@@ -46,7 +55,7 @@
46
55
  "node": ">=16.0.0"
47
56
  },
48
57
  "devDependencies": {
49
- "@noble/hashes": "^1.3.0",
58
+ "@noble/hashes": "^2.2.0",
50
59
  "@types/jest": "^29.0.0",
51
60
  "@types/node": "^20.0.0",
52
61
  "jest": "^29.0.0",
@@ -57,6 +66,26 @@
57
66
  "access": "public"
58
67
  },
59
68
  "license": "MIT",
69
+ "author": "Totem SDK",
70
+ "homepage": "https://totemsdk.com",
71
+ "bugs": {
72
+ "url": "https://github.com/MrGheek/axia-totem/issues"
73
+ },
74
+ "repository": {
75
+ "type": "git",
76
+ "url": "git+https://github.com/MrGheek/axia-totem.git",
77
+ "directory": "packages/totem-sdk/packages/core"
78
+ },
79
+ "keywords": [
80
+ "totem",
81
+ "totemsdk",
82
+ "minima",
83
+ "blockchain",
84
+ "quantum-resistant",
85
+ "wots",
86
+ "kissvm",
87
+ "utxo"
88
+ ],
60
89
  "scripts": {
61
90
  "build": "tsc",
62
91
  "clean": "rm -rf dist",
@@ -1,265 +0,0 @@
1
- /**
2
- * Streamable.ts - Canonical Java-Compatible Serialization Primitives
3
- *
4
- * This module provides byte-exact serialization functions matching
5
- * Minima's Java Streamable interface and its implementations.
6
- *
7
- * JAVA REFERENCE CLASSES:
8
- * - MiniData.writeDataStream(): 4-byte int length + raw bytes
9
- * - MiniNumber.writeDataStream(): 1-byte scale + 1-byte len + BigInteger bytes
10
- * - MiniString.writeDataStream(): delegates to MiniData(UTF-8 bytes)
11
- * - MiniByte.writeDataStream(): single byte
12
- * - Crypto.writeHashToStream(): 4-byte int length + hash bytes
13
- * - MMREntryNumber.writeDataStream(): 1-byte len + BigInteger bytes
14
- *
15
- * CRITICAL NOTES:
16
- * - MiniNumber uses 1-byte length, NOT 4-byte like MiniData
17
- * - BigInteger.toByteArray() uses two's complement (leading 0 if high bit set)
18
- * - Zero encodes as length=1, value=0x00
19
- *
20
- * Created: 2026-01-20
21
- * Purpose: Single source of truth for all Minima type serialization
22
- */
23
- export type Bytes = Uint8Array;
24
- export declare function hexToBytes(hex: string): Uint8Array;
25
- export declare function bytesToHex(bytes: Uint8Array): string;
26
- export declare function concat(...arrays: Uint8Array[]): Uint8Array;
27
- /**
28
- * Encode a MiniByte per Java MiniByte.writeDataStream()
29
- *
30
- * Format: single byte (0-255)
31
- */
32
- export declare function writeMiniByte(value: number | boolean): Uint8Array;
33
- /**
34
- * Encode a MiniData per Java MiniData.writeDataStream()
35
- *
36
- * Format: 4-byte big-endian int length + raw bytes
37
- */
38
- export declare function writeMiniData(data: Uint8Array): Uint8Array;
39
- /**
40
- * Encode a MiniString per Java MiniString.writeDataStream()
41
- *
42
- * Format: MiniData encoding of UTF-8 bytes
43
- * = 4-byte int length + UTF-8 bytes
44
- */
45
- export declare function writeMiniString(str: string): Uint8Array;
46
- /**
47
- * Convert a BigInt to Java BigInteger.toByteArray() format.
48
- *
49
- * Java BigInteger uses two's complement:
50
- * - Zero → [0x00]
51
- * - Positive with high bit set → leading 0x00 byte
52
- *
53
- * @param value - The BigInt value (must be non-negative)
54
- * @returns Uint8Array in two's complement format
55
- */
56
- export declare function bigIntToByteArray(value: bigint): Uint8Array;
57
- /**
58
- * Encode a MiniNumber per Java MiniNumber.writeDataStream()
59
- *
60
- * Format:
61
- * 1 byte: scale (number of decimal places, signed)
62
- * 1 byte: length of unscaled BigInteger data
63
- * N bytes: unscaled BigInteger in two's complement
64
- *
65
- * CRITICAL: Uses 1-byte length, NOT 4-byte like MiniData!
66
- *
67
- * @param value - The unscaled BigInt value
68
- * @param scale - The scale (decimal places), default 0
69
- */
70
- export declare function writeMiniNumber(value: bigint, scale?: number): Uint8Array;
71
- /**
72
- * Encode a hash per Java Crypto.writeHashToStream()
73
- *
74
- * Format: 4-byte big-endian int length + hash bytes
75
- * (Same as MiniData)
76
- */
77
- export declare function writeHashToStream(hash: Uint8Array): Uint8Array;
78
- /**
79
- * Encode an MMREntryNumber per Java MMREntryNumber.writeDataStream()
80
- *
81
- * Java source (MMREntryNumber.java):
82
- * MiniNumber.WriteToStream(zOut, mNumber.scale()); // scale as MiniNumber
83
- * MiniData.WriteToStream(zOut, mNumber.unscaledValue().toByteArray()); // unscaled as MiniData
84
- *
85
- * Format:
86
- * - MiniNumber for scale (always 0 for integer values)
87
- * - MiniData for unscaled BigInteger value
88
- *
89
- * For integer MMREntryNumber (scale=0), this encodes as:
90
- * [00 01 00] - MiniNumber: scale=0, len=1, data=0x00
91
- * [00 00 00 LL ...] - MiniData: 4-byte len + BigInteger bytes
92
- */
93
- export declare function writeMMREntryNumber(value: bigint, scale?: number): Uint8Array;
94
- /**
95
- * StateVariable type constants from Java StateVariable.java
96
- */
97
- export declare const STATETYPE_HEX = 1;
98
- export declare const STATETYPE_NUMBER = 2;
99
- export declare const STATETYPE_STRING = 4;
100
- export declare const STATETYPE_BOOL = 8;
101
- /**
102
- * High-level StateVariable value type
103
- */
104
- export interface StateVariableValue {
105
- port: number;
106
- value: string | bigint | boolean | Uint8Array;
107
- type: 'bool' | 'number' | 'hex' | 'string';
108
- }
109
- /**
110
- * Normalize hex/address string to 0x format.
111
- * Handles both Mx (Minima Base32) and 0x formats.
112
- * Matches Java's StateVariable constructor behavior.
113
- *
114
- * Note: For Mx conversion, caller should use mxToHex from minima-base32
115
- * This function handles 0x prefix normalization only.
116
- */
117
- export declare function normalizeHexString(value: string): string;
118
- /**
119
- * Serialize a StateVariable per Java StateVariable.writeDataStream()
120
- *
121
- * Format:
122
- * 1. port (MiniByte - 1 byte, 0-255)
123
- * 2. type (MiniByte - 1 byte: HEX=1, NUMBER=2, STRING=4, BOOL=8)
124
- * 3. data (format depends on type):
125
- * - BOOL: MiniByte (1 byte: 0 or 1)
126
- * - HEX: MiniData (4-byte length + hex bytes)
127
- * - NUMBER: MiniNumber (1-byte scale + 1-byte len + data)
128
- * - STRING: MiniString (4-byte length + UTF-8 with brackets)
129
- *
130
- * @param sv - StateVariable with high-level value
131
- * @param mxToHex - Optional function to convert Mx addresses to 0x hex
132
- */
133
- export declare function writeStateVariable(sv: StateVariableValue, mxToHex?: (addr: string) => string): Uint8Array;
134
- /**
135
- * MMRData interface matching Java MMRData structure
136
- */
137
- export interface MMRData {
138
- data: Uint8Array;
139
- value: bigint;
140
- }
141
- /**
142
- * Write MMRData per Java MMRData.writeDataStream()
143
- *
144
- * Java source (MMRData.java):
145
- * mData.writeHashToStream(zOut); // 4-byte len + hash
146
- * mValue.writeDataStream(zOut); // MiniNumber
147
- */
148
- export declare function writeMMRData(mmrData: MMRData): Uint8Array;
149
- /**
150
- * MMRProofChunk interface matching Java MMRProofChunk structure
151
- */
152
- export interface MMRProofChunk {
153
- isLeft: boolean;
154
- mmrData: MMRData;
155
- }
156
- /**
157
- * Write MMRProofChunk per Java MMRProofChunk.writeDataStream()
158
- *
159
- * Java source (MMRProof.java inner class):
160
- * mLeft.writeDataStream(zOut); // MiniByte (1 byte)
161
- * mMMRData.writeDataStream(zOut); // MMRData
162
- */
163
- export declare function writeMMRProofChunk(chunk: MMRProofChunk): Uint8Array;
164
- /**
165
- * MMRProof interface matching Java MMRProof structure
166
- */
167
- export interface MMRProof {
168
- blockTime: bigint;
169
- chunks: MMRProofChunk[];
170
- }
171
- /**
172
- * Write MMRProof per Java MMRProof.writeDataStream()
173
- *
174
- * Java source (MMRProof.java):
175
- * mBlockTime.writeDataStream(zOut); // MiniNumber
176
- * MiniNumber.WriteToStream(zOut, len); // Array length as MiniNumber
177
- * for each chunk: chunk.writeDataStream(zOut);
178
- */
179
- export declare function writeMMRProof(proof: MMRProof): Uint8Array;
180
- /**
181
- * SignatureProof interface matching Java SignatureProof structure
182
- *
183
- * CRITICAL FIX (January 2026): Java's Winternitz.getPublicKey() returns a 32-byte DIGEST!
184
- * BouncyCastle's WinternitzOTSignature.getPublicKey() hashes the full 1088-byte key
185
- * and returns SHA3-256(full_key) = 32 bytes. The MMR tree and SignatureProof use this digest.
186
- */
187
- export interface SignatureProof {
188
- leafPubkey: Uint8Array;
189
- signature: Uint8Array;
190
- mmrProof: MMRProof;
191
- }
192
- /**
193
- * Write SignatureProof per Java SignatureProof.writeDataStream()
194
- *
195
- * Java source (SignatureProof.java):
196
- * mPublicKey.writeDataStream(zOut); // MiniData
197
- * mSignature.writeDataStream(zOut); // MiniData
198
- * mProof.writeDataStream(zOut); // MMRProof
199
- */
200
- export declare function writeSignatureProof(sigProof: SignatureProof): Uint8Array;
201
- /**
202
- * Signature interface matching Java Signature structure
203
- * A Signature contains an array of SignatureProofs (for hierarchical signing)
204
- */
205
- export interface Signature {
206
- proofs: SignatureProof[];
207
- }
208
- /**
209
- * Write Signature per Java Signature.writeDataStream()
210
- *
211
- * Java source (Signature.java):
212
- * MiniNumber.WriteToStream(zOut, mSignatures.size());
213
- * for each sig: sig.writeDataStream(zOut);
214
- */
215
- export declare function writeSignature(sig: Signature): Uint8Array;
216
- /**
217
- * CoinProof interface (simplified - coin proofs in witness)
218
- * Full implementation would include coin data + MMR proof
219
- */
220
- export interface CoinProof {
221
- data: Uint8Array;
222
- }
223
- /**
224
- * ScriptProof interface (simplified - script proofs in witness)
225
- */
226
- export interface ScriptProof {
227
- data: Uint8Array;
228
- }
229
- /**
230
- * Witness interface matching Java Witness structure
231
- * Used for full transaction witness serialization
232
- */
233
- export interface Witness {
234
- signatures: Signature[];
235
- coinProofs: CoinProof[];
236
- scriptProofs: ScriptProof[];
237
- }
238
- /**
239
- * Write Witness per Java Witness.writeDataStream()
240
- *
241
- * Java source (Witness.java):
242
- * MiniNumber.WriteToStream(zOut, mSignatureProofs.size());
243
- * for each sp: sp.writeDataStream(zOut);
244
- * MiniNumber.WriteToStream(zOut, mCoinProofs.size());
245
- * for each cp: cp.writeDataStream(zOut);
246
- * MiniNumber.WriteToStream(zOut, mScriptProofs.size());
247
- * for each sp: sp.writeDataStream(zOut);
248
- */
249
- export declare function writeWitness(witness: Witness): Uint8Array;
250
- /**
251
- * HierarchicalWitnessBundle - Simplified witness for WOTS hierarchical signing
252
- * This is the format used by Totem for transaction signing
253
- */
254
- export interface HierarchicalWitnessBundle {
255
- signatures: Signature[];
256
- }
257
- /**
258
- * Write a simplified hierarchical witness (signatures only)
259
- * Used for WOTS transaction signing flow
260
- */
261
- export declare function writeHierarchicalWitness(bundle: HierarchicalWitnessBundle): Uint8Array;
262
- /**
263
- * Write hierarchical witness and return as hex string
264
- */
265
- export declare function writeHierarchicalWitnessToHex(bundle: HierarchicalWitnessBundle): string;