@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.
- package/LICENSE +21 -0
- package/README.md +5 -5
- package/dist/Streamable.js +54 -31
- package/dist/adapters/index.js +18 -8
- package/dist/adapters/types.js +19 -8
- package/dist/binio.js +5 -1
- package/dist/bip39.js +24 -14
- package/dist/derive.js +11 -7
- package/dist/index.js +130 -22
- package/dist/javaStreamables.js +49 -30
- package/dist/lease/LeaseMonitor.js +7 -3
- package/dist/lease/LeaseStore.js +7 -3
- package/dist/lease/WatermarkStore.js +7 -3
- package/dist/lease/index.js +13 -4
- package/dist/lease-client.js +8 -3
- package/dist/minima32.js +22 -13
- package/dist/minimaWireSerializer.js +20 -14
- package/dist/mmr.js +35 -23
- package/dist/mx.js +10 -1
- package/dist/params.js +9 -5
- package/dist/script.js +12 -7
- package/dist/scripts/contract-helpers.js +37 -26
- package/dist/scripts/dapp-types.js +11 -6
- package/dist/scripts/index.js +38 -4
- package/dist/scripts/types.js +26 -12
- package/dist/scripts/witness-serializer.js +48 -30
- package/dist/transaction.js +55 -46
- package/dist/treekey.js +74 -58
- package/dist/tx/TransactionLifecycle.js +11 -5
- package/dist/tx/TransactionReceiptStore.js +7 -3
- package/dist/tx/TransactionService.js +14 -10
- package/dist/tx/index.js +11 -3
- package/dist/tx/types.js +2 -1
- package/dist/util.js +5 -1
- package/dist/utils.js +12 -5
- package/dist/verify.js +36 -25
- package/dist/version.js +5 -2
- package/dist/wots.js +94 -64
- package/package.json +35 -6
- package/src/Streamable.d.ts +0 -265
- package/src/Streamable.js +0 -431
- package/src/Streamable.ts +0 -567
- package/src/__tests__/Streamable.parity.test.ts +0 -422
- package/src/__tests__/perAddressDerivation.parity.test.ts +0 -152
- package/src/__tests__/roottree-prepare.test.ts +0 -101
- package/src/__tests__/wots-parity.test.ts +0 -289
- package/src/adapters/index.d.ts +0 -190
- package/src/adapters/index.js +0 -117
- package/src/adapters/index.ts +0 -301
- package/src/adapters/types.ts +0 -235
- package/src/addr.oracle.test.ts +0 -25
- package/src/address.test.ts +0 -55
- package/src/binio.ts +0 -21
- package/src/bip39.d.ts +0 -91
- package/src/bip39.js +0 -427
- package/src/bip39.ts +0 -432
- package/src/derive.d.ts +0 -2
- package/src/derive.js +0 -13
- package/src/derive.ts +0 -11
- package/src/index.d.ts +0 -26
- package/src/index.js +0 -128
- package/src/index.test.ts +0 -5
- package/src/index.ts +0 -221
- package/src/javaStreamables.d.ts +0 -233
- package/src/javaStreamables.js +0 -328
- package/src/javaStreamables.ts +0 -403
- package/src/lease/LeaseMonitor.d.ts +0 -44
- package/src/lease/LeaseMonitor.js +0 -111
- package/src/lease/LeaseMonitor.ts +0 -157
- package/src/lease/LeaseStore.d.ts +0 -57
- package/src/lease/LeaseStore.js +0 -148
- package/src/lease/LeaseStore.ts +0 -203
- package/src/lease/WatermarkStore.d.ts +0 -61
- package/src/lease/WatermarkStore.js +0 -206
- package/src/lease/WatermarkStore.ts +0 -270
- package/src/lease/index.d.ts +0 -14
- package/src/lease/index.js +0 -22
- package/src/lease/index.ts +0 -41
- package/src/lease-client.d.ts +0 -31
- package/src/lease-client.js +0 -44
- package/src/lease-client.ts +0 -69
- package/src/minima32.d.ts +0 -10
- package/src/minima32.js +0 -113
- package/src/minima32.test.ts +0 -11
- package/src/minima32.ts +0 -127
- package/src/minimaWireSerializer.d.ts +0 -189
- package/src/minimaWireSerializer.js +0 -311
- package/src/minimaWireSerializer.test.ts +0 -466
- package/src/minimaWireSerializer.ts +0 -117
- package/src/mmr.d.ts +0 -159
- package/src/mmr.js +0 -352
- package/src/mmr.oracle.test.ts +0 -28
- package/src/mmr.ts +0 -429
- package/src/mx.test.ts +0 -25
- package/src/mx.ts +0 -1
- package/src/params.d.ts +0 -29
- package/src/params.d.ts.map +0 -1
- package/src/params.js +0 -20
- package/src/params.js.map +0 -1
- package/src/params.ts +0 -44
- package/src/script.d.ts +0 -7
- package/src/script.js +0 -27
- package/src/script.ts +0 -24
- package/src/scripts/contract-helpers.ts +0 -609
- package/src/scripts/dapp-types.ts +0 -240
- package/src/scripts/index.ts +0 -22
- package/src/scripts/types.ts +0 -247
- package/src/scripts/witness-serializer.ts +0 -384
- package/src/transaction.ts +0 -430
- package/src/treekey.d.ts +0 -383
- package/src/treekey.js +0 -774
- package/src/treekey.parity.test.ts +0 -459
- package/src/treekey.ts +0 -975
- package/src/tx/TransactionLifecycle.d.ts +0 -55
- package/src/tx/TransactionLifecycle.js +0 -188
- package/src/tx/TransactionLifecycle.ts +0 -280
- package/src/tx/TransactionReceiptStore.d.ts +0 -36
- package/src/tx/TransactionReceiptStore.js +0 -89
- package/src/tx/TransactionReceiptStore.ts +0 -112
- package/src/tx/TransactionService.d.ts +0 -31
- package/src/tx/TransactionService.js +0 -140
- package/src/tx/TransactionService.ts +0 -252
- package/src/tx/index.d.ts +0 -13
- package/src/tx/index.js +0 -20
- package/src/tx/index.ts +0 -44
- package/src/tx/types.d.ts +0 -80
- package/src/tx/types.js +0 -6
- package/src/tx/types.ts +0 -130
- package/src/util.d.ts +0 -1
- package/src/util.js +0 -5
- package/src/util.ts +0 -1
- package/src/utils.d.ts +0 -8
- package/src/utils.js +0 -42
- package/src/utils.ts +0 -38
- package/src/verify.ts +0 -210
- package/src/version.ts +0 -13
- package/src/wots.d.ts +0 -224
- package/src/wots.d.ts.map +0 -1
- package/src/wots.js +0 -565
- package/src/wots.js.map +0 -1
- package/src/wots.ts +0 -651
- package/test-vectors.json +0 -45
package/dist/index.js
CHANGED
|
@@ -1,49 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* @module @totemsdk/core
|
|
3
4
|
* Core cryptographic primitives, adapters, and utilities for Minima blockchain
|
|
4
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.serializeTreeSignature = exports.verifyTreeSignature = exports.TreeKeyNode = exports.TreeKey = exports.precomputeTransactionCoinID = exports.serializeMMREntry = exports.serializeMMRData = exports.serializeMMREntryNumber = exports.createMMREntryNumber = exports.derivePerAddressSeed = exports.indexToMiniDataBytes = exports.javaHashAllObjects = exports.writeHashToStream = exports.serializeMiniNumberONE = exports.serializeMiniNumberZERO = exports.hashObject = exports.deriveChildTreeSeedJava = exports.deriveChainSeedJava = exports.hashAllObjects = exports.serializeMiniData = exports.serializeMiniNumber = exports.wotsPublicKeyFromSeed = exports.wotsVerifyDigest = exports.wotsVerify = exports.wotsPkFromSig = exports.wotsSignLegacy = exports.wotsSign = exports.wotsKeypairFromSeed = exports.derivePKdigest = exports.baseWWithChecksum = exports.toWinternitzDigits = exports.prfChainSeed = exports.h = exports.assert32 = exports.u32be = exports.u16be = exports.fromHex = exports.hex = exports.F = exports.TransactionReceiptStore = exports.WatermarkExhaustedError = exports.TransactionLifecycleError = exports.TransactionLifecycle = exports.TransactionService = exports.flatIndexFromLanes = exports.finalizeLease = exports.prepareLease = exports.LeaseMonitor = exports.WatermarkStore = exports.LeaseStore = void 0;
|
|
22
|
+
exports.writeMiniString = exports.bigIntToByteArray = exports.bytesToHex = exports.hexToBytes = exports.concat = exports.writeMMREntryNumber = exports.writeMiniByte = exports.writeMiniData = exports.writeMiniNumber = exports.MINIMA_CONSTANTS = exports.validateChallenge = exports.createChallenge = exports.normalizeHex = exports.deriveAddressFromPublicKey = exports.verifyTreeSignatureDetailed = exports.verifySignatureDetailed = exports.verifySignature = exports.buildMinimaCoin = exports.createDefaultTransaction = exports.precomputeTransactionCoinIDTx = exports.computeTransactionDigest = exports.serializeTransaction = exports.serializeCoin = exports.parseDecimalToMiniNumber = exports.generateSeedPhrase = exports.generateWordList = exports.phraseToSeed = exports.convertWordListToSeed = exports.convertStringToSeed = exports.validatePhrase = exports.cleanSeedPhrase = exports.WORD_LIST = exports.addressToRoot = exports.scriptToAddress = exports.wotsAddressFromKeypair = exports.scriptFromWotsPk = exports.getPerAddressPublicKey = exports.deriveAddressPublicKey = exports.createPerAddressTreeKeyAsync = exports.createPerAddressTreeKey = exports.DEFAULT_LEVELS = exports.DEFAULT_KEYS_PER_LEVEL = exports.getRootPublicKey = exports.deserializeTreeSignature = void 0;
|
|
5
23
|
// Version information for bundle duplication detection
|
|
6
|
-
|
|
24
|
+
__exportStar(require("./version.js"), exports);
|
|
7
25
|
// Platform-agnostic Adapters (SDK Upgrade)
|
|
8
|
-
|
|
26
|
+
__exportStar(require("./adapters/index.js"), exports);
|
|
9
27
|
// Lease Management (SDK Upgrade) - exclude conflicting WotsIndices
|
|
10
|
-
|
|
28
|
+
var index_js_1 = require("./lease/index.js");
|
|
29
|
+
Object.defineProperty(exports, "LeaseStore", { enumerable: true, get: function () { return index_js_1.LeaseStore; } });
|
|
30
|
+
Object.defineProperty(exports, "WatermarkStore", { enumerable: true, get: function () { return index_js_1.WatermarkStore; } });
|
|
31
|
+
Object.defineProperty(exports, "LeaseMonitor", { enumerable: true, get: function () { return index_js_1.LeaseMonitor; } });
|
|
32
|
+
Object.defineProperty(exports, "prepareLease", { enumerable: true, get: function () { return index_js_1.prepareLease; } });
|
|
33
|
+
Object.defineProperty(exports, "finalizeLease", { enumerable: true, get: function () { return index_js_1.finalizeLease; } });
|
|
34
|
+
Object.defineProperty(exports, "flatIndexFromLanes", { enumerable: true, get: function () { return index_js_1.flatIndexFromLanes; } });
|
|
11
35
|
// Transaction Management (SDK Upgrade) - exclude conflicting WotsIndices
|
|
12
|
-
|
|
36
|
+
var index_js_2 = require("./tx/index.js");
|
|
37
|
+
Object.defineProperty(exports, "TransactionService", { enumerable: true, get: function () { return index_js_2.TransactionService; } });
|
|
38
|
+
Object.defineProperty(exports, "TransactionLifecycle", { enumerable: true, get: function () { return index_js_2.TransactionLifecycle; } });
|
|
39
|
+
Object.defineProperty(exports, "TransactionLifecycleError", { enumerable: true, get: function () { return index_js_2.TransactionLifecycleError; } });
|
|
40
|
+
Object.defineProperty(exports, "WatermarkExhaustedError", { enumerable: true, get: function () { return index_js_2.WatermarkExhaustedError; } });
|
|
41
|
+
Object.defineProperty(exports, "TransactionReceiptStore", { enumerable: true, get: function () { return index_js_2.TransactionReceiptStore; } });
|
|
13
42
|
// Utilities first (canonical concatBytes source)
|
|
14
|
-
|
|
43
|
+
__exportStar(require("./utils.js"), exports);
|
|
15
44
|
// WOTS Signatures - wots.concatBytes is intentionally shadowed by utils.concatBytes above
|
|
16
|
-
|
|
45
|
+
var wots_js_1 = require("./wots.js");
|
|
46
|
+
Object.defineProperty(exports, "F", { enumerable: true, get: function () { return wots_js_1.F; } });
|
|
47
|
+
Object.defineProperty(exports, "hex", { enumerable: true, get: function () { return wots_js_1.hex; } });
|
|
48
|
+
Object.defineProperty(exports, "fromHex", { enumerable: true, get: function () { return wots_js_1.fromHex; } });
|
|
49
|
+
Object.defineProperty(exports, "u16be", { enumerable: true, get: function () { return wots_js_1.u16be; } });
|
|
50
|
+
Object.defineProperty(exports, "u32be", { enumerable: true, get: function () { return wots_js_1.u32be; } });
|
|
51
|
+
Object.defineProperty(exports, "assert32", { enumerable: true, get: function () { return wots_js_1.assert32; } });
|
|
52
|
+
Object.defineProperty(exports, "h", { enumerable: true, get: function () { return wots_js_1.h; } });
|
|
53
|
+
Object.defineProperty(exports, "prfChainSeed", { enumerable: true, get: function () { return wots_js_1.prfChainSeed; } });
|
|
54
|
+
Object.defineProperty(exports, "toWinternitzDigits", { enumerable: true, get: function () { return wots_js_1.toWinternitzDigits; } });
|
|
55
|
+
Object.defineProperty(exports, "baseWWithChecksum", { enumerable: true, get: function () { return wots_js_1.baseWWithChecksum; } });
|
|
56
|
+
Object.defineProperty(exports, "derivePKdigest", { enumerable: true, get: function () { return wots_js_1.derivePKdigest; } });
|
|
57
|
+
Object.defineProperty(exports, "wotsKeypairFromSeed", { enumerable: true, get: function () { return wots_js_1.wotsKeypairFromSeed; } });
|
|
58
|
+
Object.defineProperty(exports, "wotsSign", { enumerable: true, get: function () { return wots_js_1.wotsSign; } });
|
|
59
|
+
Object.defineProperty(exports, "wotsSignLegacy", { enumerable: true, get: function () { return wots_js_1.wotsSignLegacy; } });
|
|
60
|
+
Object.defineProperty(exports, "wotsPkFromSig", { enumerable: true, get: function () { return wots_js_1.wotsPkFromSig; } });
|
|
61
|
+
Object.defineProperty(exports, "wotsVerify", { enumerable: true, get: function () { return wots_js_1.wotsVerify; } });
|
|
62
|
+
Object.defineProperty(exports, "wotsVerifyDigest", { enumerable: true, get: function () { return wots_js_1.wotsVerifyDigest; } });
|
|
63
|
+
Object.defineProperty(exports, "wotsPublicKeyFromSeed", { enumerable: true, get: function () { return wots_js_1.wotsPublicKeyFromSeed; } });
|
|
17
64
|
// WOTS Params (from params.ts, imported by wots.ts)
|
|
18
|
-
|
|
65
|
+
__exportStar(require("./params.js"), exports);
|
|
19
66
|
// Java-Compatible Serialization Helpers (for Minima-compatible seed derivation)
|
|
20
|
-
|
|
67
|
+
var javaStreamables_js_1 = require("./javaStreamables.js");
|
|
68
|
+
Object.defineProperty(exports, "serializeMiniNumber", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMiniNumber; } });
|
|
69
|
+
Object.defineProperty(exports, "serializeMiniData", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMiniData; } });
|
|
70
|
+
Object.defineProperty(exports, "hashAllObjects", { enumerable: true, get: function () { return javaStreamables_js_1.hashAllObjects; } });
|
|
71
|
+
Object.defineProperty(exports, "deriveChainSeedJava", { enumerable: true, get: function () { return javaStreamables_js_1.deriveChainSeedJava; } });
|
|
72
|
+
Object.defineProperty(exports, "deriveChildTreeSeedJava", { enumerable: true, get: function () { return javaStreamables_js_1.deriveChildTreeSeedJava; } });
|
|
73
|
+
Object.defineProperty(exports, "hashObject", { enumerable: true, get: function () { return javaStreamables_js_1.hashObject; } });
|
|
74
|
+
Object.defineProperty(exports, "serializeMiniNumberZERO", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMiniNumberZERO; } });
|
|
75
|
+
Object.defineProperty(exports, "serializeMiniNumberONE", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMiniNumberONE; } });
|
|
76
|
+
Object.defineProperty(exports, "writeHashToStream", { enumerable: true, get: function () { return javaStreamables_js_1.writeHashToStream; } });
|
|
77
|
+
Object.defineProperty(exports, "javaHashAllObjects", { enumerable: true, get: function () { return javaStreamables_js_1.javaHashAllObjects; } });
|
|
21
78
|
// Per-address key derivation (Minima Wallet.java compatible) - 2026-02
|
|
22
|
-
indexToMiniDataBytes,
|
|
79
|
+
Object.defineProperty(exports, "indexToMiniDataBytes", { enumerable: true, get: function () { return javaStreamables_js_1.indexToMiniDataBytes; } });
|
|
80
|
+
Object.defineProperty(exports, "derivePerAddressSeed", { enumerable: true, get: function () { return javaStreamables_js_1.derivePerAddressSeed; } });
|
|
23
81
|
// MMREntryNumber and MMREntry serialization (2026-01-18)
|
|
24
|
-
|
|
82
|
+
Object.defineProperty(exports, "createMMREntryNumber", { enumerable: true, get: function () { return javaStreamables_js_1.createMMREntryNumber; } });
|
|
83
|
+
Object.defineProperty(exports, "serializeMMREntryNumber", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMMREntryNumber; } });
|
|
84
|
+
Object.defineProperty(exports, "serializeMMRData", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMMRData; } });
|
|
85
|
+
Object.defineProperty(exports, "serializeMMREntry", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMMREntry; } });
|
|
86
|
+
Object.defineProperty(exports, "precomputeTransactionCoinID", { enumerable: true, get: function () { return javaStreamables_js_1.precomputeTransactionCoinID; } });
|
|
25
87
|
// TreeKey/TreeKeyNode - Hierarchical WOTS key tree matching Minima's TreeKey.java
|
|
26
|
-
|
|
88
|
+
var treekey_js_1 = require("./treekey.js");
|
|
89
|
+
Object.defineProperty(exports, "TreeKey", { enumerable: true, get: function () { return treekey_js_1.TreeKey; } });
|
|
90
|
+
Object.defineProperty(exports, "TreeKeyNode", { enumerable: true, get: function () { return treekey_js_1.TreeKeyNode; } });
|
|
91
|
+
Object.defineProperty(exports, "verifyTreeSignature", { enumerable: true, get: function () { return treekey_js_1.verifyTreeSignature; } });
|
|
92
|
+
Object.defineProperty(exports, "serializeTreeSignature", { enumerable: true, get: function () { return treekey_js_1.serializeTreeSignature; } });
|
|
93
|
+
Object.defineProperty(exports, "deserializeTreeSignature", { enumerable: true, get: function () { return treekey_js_1.deserializeTreeSignature; } });
|
|
94
|
+
Object.defineProperty(exports, "getRootPublicKey", { enumerable: true, get: function () { return treekey_js_1.getRootPublicKey; } });
|
|
95
|
+
Object.defineProperty(exports, "DEFAULT_KEYS_PER_LEVEL", { enumerable: true, get: function () { return treekey_js_1.DEFAULT_KEYS_PER_LEVEL; } });
|
|
96
|
+
Object.defineProperty(exports, "DEFAULT_LEVELS", { enumerable: true, get: function () { return treekey_js_1.DEFAULT_LEVELS; } });
|
|
27
97
|
// Per-address TreeKey helpers (Minima Wallet.java compatible) - 2026-02
|
|
28
|
-
|
|
98
|
+
Object.defineProperty(exports, "createPerAddressTreeKey", { enumerable: true, get: function () { return treekey_js_1.createPerAddressTreeKey; } });
|
|
99
|
+
Object.defineProperty(exports, "createPerAddressTreeKeyAsync", { enumerable: true, get: function () { return treekey_js_1.createPerAddressTreeKeyAsync; } });
|
|
100
|
+
Object.defineProperty(exports, "deriveAddressPublicKey", { enumerable: true, get: function () { return treekey_js_1.deriveAddressPublicKey; } });
|
|
101
|
+
Object.defineProperty(exports, "getPerAddressPublicKey", { enumerable: true, get: function () { return treekey_js_1.getPerAddressPublicKey; } });
|
|
29
102
|
// Script helpers (for address derivation)
|
|
30
|
-
|
|
103
|
+
var script_js_1 = require("./script.js");
|
|
104
|
+
Object.defineProperty(exports, "scriptFromWotsPk", { enumerable: true, get: function () { return script_js_1.scriptFromWotsPk; } });
|
|
105
|
+
Object.defineProperty(exports, "wotsAddressFromKeypair", { enumerable: true, get: function () { return script_js_1.wotsAddressFromKeypair; } });
|
|
31
106
|
// Base32 Encoding (Minima-compatible)
|
|
32
|
-
|
|
107
|
+
__exportStar(require("./minima32.js"), exports);
|
|
33
108
|
// Merkle Mountain Range (original)
|
|
34
|
-
|
|
109
|
+
__exportStar(require("./mmr.js"), exports);
|
|
35
110
|
// Script Types, Witness Serializer, Contract Helpers
|
|
36
|
-
|
|
111
|
+
__exportStar(require("./scripts/index.js"), exports);
|
|
37
112
|
// Address Derivation (original)
|
|
38
|
-
|
|
113
|
+
var derive_js_1 = require("./derive.js");
|
|
114
|
+
Object.defineProperty(exports, "scriptToAddress", { enumerable: true, get: function () { return derive_js_1.scriptToAddress; } });
|
|
115
|
+
Object.defineProperty(exports, "addressToRoot", { enumerable: true, get: function () { return derive_js_1.addressToRoot; } });
|
|
39
116
|
// BIP39 Seed Phrase Handling (Minima-compatible, NOT standard BIP39)
|
|
40
|
-
|
|
117
|
+
var bip39_js_1 = require("./bip39.js");
|
|
118
|
+
Object.defineProperty(exports, "WORD_LIST", { enumerable: true, get: function () { return bip39_js_1.WORD_LIST; } });
|
|
119
|
+
Object.defineProperty(exports, "cleanSeedPhrase", { enumerable: true, get: function () { return bip39_js_1.cleanSeedPhrase; } });
|
|
120
|
+
Object.defineProperty(exports, "validatePhrase", { enumerable: true, get: function () { return bip39_js_1.validatePhrase; } });
|
|
121
|
+
Object.defineProperty(exports, "convertStringToSeed", { enumerable: true, get: function () { return bip39_js_1.convertStringToSeed; } });
|
|
122
|
+
Object.defineProperty(exports, "convertWordListToSeed", { enumerable: true, get: function () { return bip39_js_1.convertWordListToSeed; } });
|
|
123
|
+
Object.defineProperty(exports, "phraseToSeed", { enumerable: true, get: function () { return bip39_js_1.phraseToSeed; } });
|
|
124
|
+
Object.defineProperty(exports, "generateWordList", { enumerable: true, get: function () { return bip39_js_1.generateWordList; } });
|
|
125
|
+
Object.defineProperty(exports, "generateSeedPhrase", { enumerable: true, get: function () { return bip39_js_1.generateSeedPhrase; } });
|
|
41
126
|
// Transaction Serialization & Digest (Java-compatible, extension parity)
|
|
42
|
-
|
|
127
|
+
var transaction_js_1 = require("./transaction.js");
|
|
128
|
+
Object.defineProperty(exports, "parseDecimalToMiniNumber", { enumerable: true, get: function () { return transaction_js_1.parseDecimalToMiniNumber; } });
|
|
129
|
+
Object.defineProperty(exports, "serializeCoin", { enumerable: true, get: function () { return transaction_js_1.serializeCoin; } });
|
|
130
|
+
Object.defineProperty(exports, "serializeTransaction", { enumerable: true, get: function () { return transaction_js_1.serializeTransaction; } });
|
|
131
|
+
Object.defineProperty(exports, "computeTransactionDigest", { enumerable: true, get: function () { return transaction_js_1.computeTransactionDigest; } });
|
|
132
|
+
Object.defineProperty(exports, "precomputeTransactionCoinIDTx", { enumerable: true, get: function () { return transaction_js_1.precomputeTransactionCoinID; } });
|
|
133
|
+
Object.defineProperty(exports, "createDefaultTransaction", { enumerable: true, get: function () { return transaction_js_1.createDefaultTransaction; } });
|
|
134
|
+
Object.defineProperty(exports, "buildMinimaCoin", { enumerable: true, get: function () { return transaction_js_1.buildMinimaCoin; } });
|
|
43
135
|
// High-level Verification API (convenience functions for integrators)
|
|
44
|
-
|
|
136
|
+
var verify_js_1 = require("./verify.js");
|
|
137
|
+
Object.defineProperty(exports, "verifySignature", { enumerable: true, get: function () { return verify_js_1.verifySignature; } });
|
|
138
|
+
Object.defineProperty(exports, "verifySignatureDetailed", { enumerable: true, get: function () { return verify_js_1.verifySignatureDetailed; } });
|
|
139
|
+
Object.defineProperty(exports, "verifyTreeSignatureDetailed", { enumerable: true, get: function () { return verify_js_1.verifyTreeSignatureDetailed; } });
|
|
140
|
+
Object.defineProperty(exports, "deriveAddressFromPublicKey", { enumerable: true, get: function () { return verify_js_1.deriveAddressFromPublicKey; } });
|
|
141
|
+
Object.defineProperty(exports, "normalizeHex", { enumerable: true, get: function () { return verify_js_1.normalizeHex; } });
|
|
142
|
+
Object.defineProperty(exports, "createChallenge", { enumerable: true, get: function () { return verify_js_1.createChallenge; } });
|
|
143
|
+
Object.defineProperty(exports, "validateChallenge", { enumerable: true, get: function () { return verify_js_1.validateChallenge; } });
|
|
45
144
|
// Constants
|
|
46
|
-
|
|
145
|
+
exports.MINIMA_CONSTANTS = {
|
|
47
146
|
WOTS_W: 8,
|
|
48
147
|
WOTS_N: 32,
|
|
49
148
|
MAX_SIGNATURES: 262144,
|
|
@@ -52,4 +151,13 @@ export const MINIMA_CONSTANTS = {
|
|
|
52
151
|
NETWORK_ID: 1
|
|
53
152
|
};
|
|
54
153
|
// Streamable primitives (low-level serialization building blocks)
|
|
55
|
-
|
|
154
|
+
var Streamable_js_1 = require("./Streamable.js");
|
|
155
|
+
Object.defineProperty(exports, "writeMiniNumber", { enumerable: true, get: function () { return Streamable_js_1.writeMiniNumber; } });
|
|
156
|
+
Object.defineProperty(exports, "writeMiniData", { enumerable: true, get: function () { return Streamable_js_1.writeMiniData; } });
|
|
157
|
+
Object.defineProperty(exports, "writeMiniByte", { enumerable: true, get: function () { return Streamable_js_1.writeMiniByte; } });
|
|
158
|
+
Object.defineProperty(exports, "writeMMREntryNumber", { enumerable: true, get: function () { return Streamable_js_1.writeMMREntryNumber; } });
|
|
159
|
+
Object.defineProperty(exports, "concat", { enumerable: true, get: function () { return Streamable_js_1.concat; } });
|
|
160
|
+
Object.defineProperty(exports, "hexToBytes", { enumerable: true, get: function () { return Streamable_js_1.hexToBytes; } });
|
|
161
|
+
Object.defineProperty(exports, "bytesToHex", { enumerable: true, get: function () { return Streamable_js_1.bytesToHex; } });
|
|
162
|
+
Object.defineProperty(exports, "bigIntToByteArray", { enumerable: true, get: function () { return Streamable_js_1.bigIntToByteArray; } });
|
|
163
|
+
Object.defineProperty(exports, "writeMiniString", { enumerable: true, get: function () { return Streamable_js_1.writeMiniString; } });
|
package/dist/javaStreamables.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Java-Compatible Serialization Helpers
|
|
3
4
|
*
|
|
@@ -12,8 +13,26 @@
|
|
|
12
13
|
* NOTE: This module provides number-based wrappers for backward compatibility.
|
|
13
14
|
* The canonical implementations are in Streamable.ts which uses bigint for precision.
|
|
14
15
|
*/
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.serializeMiniNumber = serializeMiniNumber;
|
|
18
|
+
exports.serializeMiniData = serializeMiniData;
|
|
19
|
+
exports.hashAllObjects = hashAllObjects;
|
|
20
|
+
exports.deriveChainSeedJava = deriveChainSeedJava;
|
|
21
|
+
exports.deriveChildTreeSeedJava = deriveChildTreeSeedJava;
|
|
22
|
+
exports.hashObject = hashObject;
|
|
23
|
+
exports.indexToMiniDataBytes = indexToMiniDataBytes;
|
|
24
|
+
exports.derivePerAddressSeed = derivePerAddressSeed;
|
|
25
|
+
exports.serializeMiniNumberZERO = serializeMiniNumberZERO;
|
|
26
|
+
exports.serializeMiniNumberONE = serializeMiniNumberONE;
|
|
27
|
+
exports.writeHashToStream = writeHashToStream;
|
|
28
|
+
exports.javaHashAllObjects = javaHashAllObjects;
|
|
29
|
+
exports.createMMREntryNumber = createMMREntryNumber;
|
|
30
|
+
exports.serializeMMREntryNumber = serializeMMREntryNumber;
|
|
31
|
+
exports.serializeMMRData = serializeMMRData;
|
|
32
|
+
exports.serializeMMREntry = serializeMMREntry;
|
|
33
|
+
exports.precomputeTransactionCoinID = precomputeTransactionCoinID;
|
|
34
|
+
const sha3_js_1 = require("@noble/hashes/sha3.js");
|
|
35
|
+
const Streamable_js_1 = require("./Streamable.js");
|
|
17
36
|
/**
|
|
18
37
|
* Serialize a number in MiniNumber format (Java compatible)
|
|
19
38
|
*
|
|
@@ -22,10 +41,10 @@ import { writeMiniNumber as streamableWriteMiniNumber, writeMiniData as streamab
|
|
|
22
41
|
* @param n - Non-negative integer to serialize
|
|
23
42
|
* @returns Serialized bytes matching Java MiniNumber format
|
|
24
43
|
*/
|
|
25
|
-
|
|
44
|
+
function serializeMiniNumber(n) {
|
|
26
45
|
if (n < 0)
|
|
27
46
|
throw new Error('MiniNumber must be non-negative');
|
|
28
|
-
return
|
|
47
|
+
return (0, Streamable_js_1.writeMiniNumber)(BigInt(n));
|
|
29
48
|
}
|
|
30
49
|
/**
|
|
31
50
|
* Serialize bytes in MiniData format (Java compatible)
|
|
@@ -35,8 +54,8 @@ export function serializeMiniNumber(n) {
|
|
|
35
54
|
* @param data - Bytes to serialize
|
|
36
55
|
* @returns Serialized bytes matching Java MiniData format
|
|
37
56
|
*/
|
|
38
|
-
|
|
39
|
-
return
|
|
57
|
+
function serializeMiniData(data) {
|
|
58
|
+
return (0, Streamable_js_1.writeMiniData)(data);
|
|
40
59
|
}
|
|
41
60
|
/**
|
|
42
61
|
* Hash multiple Streamable objects (Java compatible)
|
|
@@ -51,7 +70,7 @@ export function serializeMiniData(data) {
|
|
|
51
70
|
* @param items - Array of serialized objects (use serializeMiniNumber/serializeMiniData)
|
|
52
71
|
* @returns 32-byte SHA3-256 hash
|
|
53
72
|
*/
|
|
54
|
-
|
|
73
|
+
function hashAllObjects(...items) {
|
|
55
74
|
// Concatenate all serialized items
|
|
56
75
|
const totalLength = items.reduce((sum, item) => sum + item.length, 0);
|
|
57
76
|
const combined = new Uint8Array(totalLength);
|
|
@@ -61,7 +80,7 @@ export function hashAllObjects(...items) {
|
|
|
61
80
|
offset += item.length;
|
|
62
81
|
}
|
|
63
82
|
// SHA3-256 hash
|
|
64
|
-
return sha3_256(combined);
|
|
83
|
+
return (0, sha3_js_1.sha3_256)(combined);
|
|
65
84
|
}
|
|
66
85
|
/**
|
|
67
86
|
* Derive per-chain seed matching Java TreeKeyNode.java exactly
|
|
@@ -73,7 +92,7 @@ export function hashAllObjects(...items) {
|
|
|
73
92
|
* @param index - Chain index (0-63)
|
|
74
93
|
* @returns 32-byte derived seed for this chain
|
|
75
94
|
*/
|
|
76
|
-
|
|
95
|
+
function deriveChainSeedJava(privateSeed, index) {
|
|
77
96
|
const indexSerialized = serializeMiniNumber(index);
|
|
78
97
|
const seedSerialized = serializeMiniData(privateSeed);
|
|
79
98
|
return hashAllObjects(indexSerialized, seedSerialized);
|
|
@@ -91,7 +110,7 @@ export function deriveChainSeedJava(privateSeed, index) {
|
|
|
91
110
|
* @param childIndex - Child index (0-63)
|
|
92
111
|
* @returns 32-byte derived seed for child tree
|
|
93
112
|
*/
|
|
94
|
-
|
|
113
|
+
function deriveChildTreeSeedJava(childSeed, childIndex) {
|
|
95
114
|
const indexSerialized = serializeMiniNumber(childIndex);
|
|
96
115
|
const seedSerialized = serializeMiniData(childSeed);
|
|
97
116
|
return hashAllObjects(indexSerialized, seedSerialized);
|
|
@@ -107,9 +126,9 @@ export function deriveChildTreeSeedJava(childSeed, childIndex) {
|
|
|
107
126
|
* @param data - Raw bytes (will be serialized as MiniData)
|
|
108
127
|
* @returns 32-byte SHA3-256 hash
|
|
109
128
|
*/
|
|
110
|
-
|
|
129
|
+
function hashObject(data) {
|
|
111
130
|
const serialized = serializeMiniData(data);
|
|
112
|
-
return sha3_256(serialized);
|
|
131
|
+
return (0, sha3_js_1.sha3_256)(serialized);
|
|
113
132
|
}
|
|
114
133
|
/**
|
|
115
134
|
* Convert index to MiniData bytes matching Java's:
|
|
@@ -121,7 +140,7 @@ export function hashObject(data) {
|
|
|
121
140
|
* @param index - Non-negative integer (0, 1, 2, ...)
|
|
122
141
|
* @returns Minimal byte representation of the index
|
|
123
142
|
*/
|
|
124
|
-
|
|
143
|
+
function indexToMiniDataBytes(index) {
|
|
125
144
|
if (index === 0) {
|
|
126
145
|
return new Uint8Array([0x00]);
|
|
127
146
|
}
|
|
@@ -149,7 +168,7 @@ export function indexToMiniDataBytes(index) {
|
|
|
149
168
|
* @param addressIndex - Address index (0, 1, 2, ... 63)
|
|
150
169
|
* @returns 32-byte private seed for this address's TreeKey
|
|
151
170
|
*/
|
|
152
|
-
|
|
171
|
+
function derivePerAddressSeed(baseSeed, addressIndex) {
|
|
153
172
|
// Step 1: Create modifier bytes from BigInteger representation of index
|
|
154
173
|
const modifierBytes = indexToMiniDataBytes(addressIndex);
|
|
155
174
|
// Step 2: Serialize both as MiniData (4-byte length prefix each)
|
|
@@ -159,7 +178,7 @@ export function derivePerAddressSeed(baseSeed, addressIndex) {
|
|
|
159
178
|
const combined = new Uint8Array(baseSeedSerialized.length + modifierSerialized.length);
|
|
160
179
|
combined.set(baseSeedSerialized, 0);
|
|
161
180
|
combined.set(modifierSerialized, baseSeedSerialized.length);
|
|
162
|
-
const result = sha3_256(combined);
|
|
181
|
+
const result = (0, sha3_js_1.sha3_256)(combined);
|
|
163
182
|
// DIAGNOSTIC: Log first 8 bytes to detect bundle duplication or implementation differences
|
|
164
183
|
// Enable via: globalThis.TOTEM_SEED_DEBUG = true
|
|
165
184
|
if (typeof console !== 'undefined' && globalThis.TOTEM_SEED_DEBUG) {
|
|
@@ -172,14 +191,14 @@ export function derivePerAddressSeed(baseSeed, addressIndex) {
|
|
|
172
191
|
* Serialize MiniNumber.ZERO - cached for performance
|
|
173
192
|
* Returns: [0x00, 0x01, 0x00] = scale(0) + length(1) + value(0)
|
|
174
193
|
*/
|
|
175
|
-
|
|
194
|
+
function serializeMiniNumberZERO() {
|
|
176
195
|
return new Uint8Array([0x00, 0x01, 0x00]);
|
|
177
196
|
}
|
|
178
197
|
/**
|
|
179
198
|
* Serialize MiniNumber.ONE
|
|
180
199
|
* Returns: [0x00, 0x01, 0x01] = scale(0) + length(1) + value(1)
|
|
181
200
|
*/
|
|
182
|
-
|
|
201
|
+
function serializeMiniNumberONE() {
|
|
183
202
|
return new Uint8Array([0x00, 0x01, 0x01]);
|
|
184
203
|
}
|
|
185
204
|
/**
|
|
@@ -190,8 +209,8 @@ export function serializeMiniNumberONE() {
|
|
|
190
209
|
* @param data - Hash bytes (max 64 bytes per MINIMA_MAX_HASH_LENGTH)
|
|
191
210
|
* @returns Serialized bytes with 4-byte length prefix
|
|
192
211
|
*/
|
|
193
|
-
|
|
194
|
-
return
|
|
212
|
+
function writeHashToStream(data) {
|
|
213
|
+
return (0, Streamable_js_1.writeHashToStream)(data);
|
|
195
214
|
}
|
|
196
215
|
/**
|
|
197
216
|
* Java hashAllObjects for MMRData hashing
|
|
@@ -211,7 +230,7 @@ export function writeHashToStream(data) {
|
|
|
211
230
|
* @param items - Pre-serialized items to concatenate and hash
|
|
212
231
|
* @returns 32-byte SHA3-256 hash
|
|
213
232
|
*/
|
|
214
|
-
|
|
233
|
+
function javaHashAllObjects(...items) {
|
|
215
234
|
const totalLength = items.reduce((sum, item) => sum + item.length, 0);
|
|
216
235
|
const combined = new Uint8Array(totalLength);
|
|
217
236
|
let offset = 0;
|
|
@@ -219,12 +238,12 @@ export function javaHashAllObjects(...items) {
|
|
|
219
238
|
combined.set(item, offset);
|
|
220
239
|
offset += item.length;
|
|
221
240
|
}
|
|
222
|
-
return sha3_256(combined);
|
|
241
|
+
return (0, sha3_js_1.sha3_256)(combined);
|
|
223
242
|
}
|
|
224
243
|
/**
|
|
225
244
|
* Create MMREntryNumber from bigint (common case for integer positions)
|
|
226
245
|
*/
|
|
227
|
-
|
|
246
|
+
function createMMREntryNumber(value) {
|
|
228
247
|
return { scale: 0, unscaled: value };
|
|
229
248
|
}
|
|
230
249
|
/**
|
|
@@ -237,7 +256,7 @@ export function createMMREntryNumber(value) {
|
|
|
237
256
|
* @param entry - MMREntryNumber to serialize
|
|
238
257
|
* @returns Serialized bytes: MiniNumber(scale) + MiniData(unscaled bytes)
|
|
239
258
|
*/
|
|
240
|
-
|
|
259
|
+
function serializeMMREntryNumber(entry) {
|
|
241
260
|
const scaleSerialized = serializeMiniNumber(entry.scale);
|
|
242
261
|
const unscaledBytes = bigintToSignedBytes(entry.unscaled);
|
|
243
262
|
const unscaledSerialized = serializeMiniData(unscaledBytes);
|
|
@@ -251,7 +270,7 @@ export function serializeMMREntryNumber(entry) {
|
|
|
251
270
|
* Uses the canonical implementation from Streamable.ts
|
|
252
271
|
*/
|
|
253
272
|
function bigintToSignedBytes(n) {
|
|
254
|
-
return bigIntToByteArray(n);
|
|
273
|
+
return (0, Streamable_js_1.bigIntToByteArray)(n);
|
|
255
274
|
}
|
|
256
275
|
/**
|
|
257
276
|
* Serialize MMRData matching Java MMRData.writeDataStream()
|
|
@@ -263,7 +282,7 @@ function bigintToSignedBytes(n) {
|
|
|
263
282
|
* @param mmrData - MMRData to serialize
|
|
264
283
|
* @returns Serialized bytes: writeHashToStream(hash) + MiniNumber(value)
|
|
265
284
|
*/
|
|
266
|
-
|
|
285
|
+
function serializeMMRData(mmrData) {
|
|
267
286
|
const hashSerialized = writeHashToStream(mmrData.data);
|
|
268
287
|
const valueSerialized = serializeMiniNumber(Number(mmrData.value));
|
|
269
288
|
const result = new Uint8Array(hashSerialized.length + valueSerialized.length);
|
|
@@ -283,7 +302,7 @@ export function serializeMMRData(mmrData) {
|
|
|
283
302
|
* @param entry - MMREntry to serialize
|
|
284
303
|
* @returns Serialized bytes: MiniNumber(row) + MMREntryNumber + MMRData
|
|
285
304
|
*/
|
|
286
|
-
|
|
305
|
+
function serializeMMREntry(entry) {
|
|
287
306
|
const rowSerialized = serializeMiniNumber(entry.row);
|
|
288
307
|
const entryNumberSerialized = serializeMMREntryNumber(entry.entryNumber);
|
|
289
308
|
const mmrDataSerialized = serializeMMRData(entry.mmrData);
|
|
@@ -313,7 +332,7 @@ export function serializeMMREntry(entry) {
|
|
|
313
332
|
* @param inputs - Transaction inputs array, each must have a coinId (Uint8Array)
|
|
314
333
|
* @param outputs - Transaction outputs array, each will have its coinId mutated in-place
|
|
315
334
|
*/
|
|
316
|
-
|
|
335
|
+
function precomputeTransactionCoinID(inputs, outputs) {
|
|
317
336
|
if (inputs.length === 0)
|
|
318
337
|
return;
|
|
319
338
|
const baseCoinId = inputs[0].coinId;
|
|
@@ -322,11 +341,11 @@ export function precomputeTransactionCoinID(inputs, outputs) {
|
|
|
322
341
|
`(placeholder?). Real coinId from CoinProof required for signing.`);
|
|
323
342
|
}
|
|
324
343
|
for (let i = 0; i < outputs.length; i++) {
|
|
325
|
-
const baseCoinIdStream =
|
|
326
|
-
const outputIndexStream =
|
|
344
|
+
const baseCoinIdStream = (0, Streamable_js_1.writeMiniData)(baseCoinId);
|
|
345
|
+
const outputIndexStream = (0, Streamable_js_1.writeMiniNumber)(BigInt(i));
|
|
327
346
|
const combined = new Uint8Array(baseCoinIdStream.length + outputIndexStream.length);
|
|
328
347
|
combined.set(baseCoinIdStream, 0);
|
|
329
348
|
combined.set(outputIndexStream, baseCoinIdStream.length);
|
|
330
|
-
outputs[i].coinId = sha3_256(combined);
|
|
349
|
+
outputs[i].coinId = (0, sha3_js_1.sha3_256)(combined);
|
|
331
350
|
}
|
|
332
351
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* @module LeaseMonitor
|
|
3
4
|
* Monitors lease expiry and triggers renewal/cleanup actions
|
|
@@ -7,15 +8,17 @@
|
|
|
7
8
|
* - Event-based notifications for expiring leases
|
|
8
9
|
* - Adaptive monitoring interval based on shortest TTL
|
|
9
10
|
*/
|
|
10
|
-
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.LeaseMonitor = void 0;
|
|
13
|
+
const index_js_1 = require("../adapters/index.js");
|
|
11
14
|
const DEFAULT_CONFIG = {
|
|
12
15
|
defaultIntervalMs: 5000,
|
|
13
16
|
expiryThresholdMs: 5000,
|
|
14
17
|
minIntervalMs: 1000,
|
|
15
18
|
maxIntervalMs: 30000,
|
|
16
19
|
};
|
|
17
|
-
|
|
18
|
-
constructor(leaseStore, timer = new DefaultTimerAdapter(), logger = new NoopLogger(), config = {}) {
|
|
20
|
+
class LeaseMonitor {
|
|
21
|
+
constructor(leaseStore, timer = new index_js_1.DefaultTimerAdapter(), logger = new index_js_1.NoopLogger(), config = {}) {
|
|
19
22
|
this.timerHandle = null;
|
|
20
23
|
this.isRunning = false;
|
|
21
24
|
this.expiryCallbacks = new Set();
|
|
@@ -105,3 +108,4 @@ export class LeaseMonitor {
|
|
|
105
108
|
});
|
|
106
109
|
}
|
|
107
110
|
}
|
|
111
|
+
exports.LeaseMonitor = LeaseMonitor;
|
package/dist/lease/LeaseStore.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* @module LeaseStore
|
|
3
4
|
* WOTS lease lifecycle management with platform-agnostic storage
|
|
@@ -9,10 +10,12 @@
|
|
|
9
10
|
* - Mutators update memory cache AND persist to storage
|
|
10
11
|
* - Caller MUST call initialize() before using sync getters
|
|
11
12
|
*/
|
|
12
|
-
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.LeaseStore = void 0;
|
|
15
|
+
const index_js_1 = require("../adapters/index.js");
|
|
13
16
|
const DEFAULT_STORAGE_KEY = 'totem_wots_leases';
|
|
14
|
-
|
|
15
|
-
constructor(storage, logger = new NoopLogger(), config = {}) {
|
|
17
|
+
class LeaseStore {
|
|
18
|
+
constructor(storage, logger = new index_js_1.NoopLogger(), config = {}) {
|
|
16
19
|
this.leases = new Map();
|
|
17
20
|
this._initialized = false;
|
|
18
21
|
this.storage = storage;
|
|
@@ -142,3 +145,4 @@ export class LeaseStore {
|
|
|
142
145
|
return (indices.addressIndex * 64 * 64) + (indices.l1 * 64) + indices.l2;
|
|
143
146
|
}
|
|
144
147
|
}
|
|
148
|
+
exports.LeaseStore = LeaseStore;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* @module WatermarkStore
|
|
3
4
|
* WOTS index tracking with server synchronization
|
|
@@ -9,12 +10,14 @@
|
|
|
9
10
|
* - Mutators update memory cache AND persist to storage
|
|
10
11
|
* - Caller MUST call initialize() before using sync getters
|
|
11
12
|
*/
|
|
12
|
-
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.WatermarkStore = void 0;
|
|
15
|
+
const index_js_1 = require("../adapters/index.js");
|
|
13
16
|
const DEFAULT_STORAGE_KEY = 'totem_wots_watermark';
|
|
14
17
|
const MAX_INDEX_PER_LEVEL = 64;
|
|
15
18
|
const TOTAL_INDICES = 64 * 64 * 64;
|
|
16
|
-
|
|
17
|
-
constructor(storage, logger = new NoopLogger(), config = {}) {
|
|
19
|
+
class WatermarkStore {
|
|
20
|
+
constructor(storage, logger = new index_js_1.NoopLogger(), config = {}) {
|
|
18
21
|
this.state = null;
|
|
19
22
|
this._initialized = false;
|
|
20
23
|
this.storage = storage;
|
|
@@ -200,3 +203,4 @@ export class WatermarkStore {
|
|
|
200
203
|
return (addressIndex * MAX_INDEX_PER_LEVEL * MAX_INDEX_PER_LEVEL) + (l1 * MAX_INDEX_PER_LEVEL) + l2;
|
|
201
204
|
}
|
|
202
205
|
}
|
|
206
|
+
exports.WatermarkStore = WatermarkStore;
|
package/dist/lease/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* @module @totemsdk/core/lease
|
|
3
4
|
* WOTS lease lifecycle management
|
|
@@ -7,7 +8,15 @@
|
|
|
7
8
|
* - WatermarkStore: WOTS index tracking with server sync
|
|
8
9
|
* - LeaseMonitor: Expiry monitoring and renewal
|
|
9
10
|
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.flatIndexFromLanes = exports.finalizeLease = exports.prepareLease = exports.LeaseMonitor = exports.WatermarkStore = exports.LeaseStore = void 0;
|
|
13
|
+
var LeaseStore_js_1 = require("./LeaseStore.js");
|
|
14
|
+
Object.defineProperty(exports, "LeaseStore", { enumerable: true, get: function () { return LeaseStore_js_1.LeaseStore; } });
|
|
15
|
+
var WatermarkStore_js_1 = require("./WatermarkStore.js");
|
|
16
|
+
Object.defineProperty(exports, "WatermarkStore", { enumerable: true, get: function () { return WatermarkStore_js_1.WatermarkStore; } });
|
|
17
|
+
var LeaseMonitor_js_1 = require("./LeaseMonitor.js");
|
|
18
|
+
Object.defineProperty(exports, "LeaseMonitor", { enumerable: true, get: function () { return LeaseMonitor_js_1.LeaseMonitor; } });
|
|
19
|
+
var lease_client_js_1 = require("../lease-client.js");
|
|
20
|
+
Object.defineProperty(exports, "prepareLease", { enumerable: true, get: function () { return lease_client_js_1.prepareLease; } });
|
|
21
|
+
Object.defineProperty(exports, "finalizeLease", { enumerable: true, get: function () { return lease_client_js_1.finalizeLease; } });
|
|
22
|
+
Object.defineProperty(exports, "flatIndexFromLanes", { enumerable: true, get: function () { return lease_client_js_1.flatIndexFromLanes; } });
|
package/dist/lease-client.js
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.prepareLease = prepareLease;
|
|
4
|
+
exports.finalizeLease = finalizeLease;
|
|
5
|
+
exports.flatIndexFromLanes = flatIndexFromLanes;
|
|
6
|
+
async function prepareLease(apiUrl, apiKey, args) {
|
|
2
7
|
const res = await fetch(`${apiUrl}/v1/wots-hardened/prepare`, {
|
|
3
8
|
method: 'POST',
|
|
4
9
|
headers: { 'content-type': 'application/json', 'x-api-key': apiKey },
|
|
@@ -22,7 +27,7 @@ export async function prepareLease(apiUrl, apiKey, args) {
|
|
|
22
27
|
digestTx: raw.digestTx ?? null
|
|
23
28
|
};
|
|
24
29
|
}
|
|
25
|
-
|
|
30
|
+
async function finalizeLease(apiUrl, apiKey, leaseToken, signedHex) {
|
|
26
31
|
const res = await fetch(`${apiUrl}/v1/wots-hardened/finalize`, {
|
|
27
32
|
method: 'POST',
|
|
28
33
|
headers: { 'content-type': 'application/json', 'x-api-key': apiKey },
|
|
@@ -32,7 +37,7 @@ export async function finalizeLease(apiUrl, apiKey, leaseToken, signedHex) {
|
|
|
32
37
|
return { status: res.status, body: text };
|
|
33
38
|
}
|
|
34
39
|
/** lane tuple -> flat WOTS index (64^3 space) */
|
|
35
|
-
|
|
40
|
+
function flatIndexFromLanes(addressIndex, l1, l2) {
|
|
36
41
|
if (addressIndex | l1 | l2 & ~63)
|
|
37
42
|
throw new Error('lane out of range');
|
|
38
43
|
return (addressIndex * 64 * 64) + (l1 * 64) + l2;
|