solvoid 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/dist/client.d.ts +73 -0
  2. package/dist/client.d.ts.map +1 -0
  3. package/dist/client.js +281 -0
  4. package/dist/client.js.map +1 -0
  5. package/dist/crypto/poseidon.d.ts +124 -0
  6. package/dist/crypto/poseidon.d.ts.map +1 -0
  7. package/dist/crypto/poseidon.js +293 -0
  8. package/dist/crypto/poseidon.js.map +1 -0
  9. package/dist/events/bus.d.ts +44 -0
  10. package/dist/events/bus.d.ts.map +1 -0
  11. package/dist/events/bus.js +83 -0
  12. package/dist/events/bus.js.map +1 -0
  13. package/dist/{sdk/index.d.ts → index.d.ts} +2 -3
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/{sdk/index.js → index.js} +21 -11
  16. package/dist/index.js.map +1 -0
  17. package/dist/integrity.d.ts +371 -0
  18. package/dist/integrity.d.ts.map +1 -0
  19. package/dist/integrity.js +260 -0
  20. package/dist/integrity.js.map +1 -0
  21. package/dist/network/shadow-rpc.d.ts +36 -0
  22. package/dist/network/shadow-rpc.d.ts.map +1 -0
  23. package/dist/network/shadow-rpc.js +163 -0
  24. package/dist/network/shadow-rpc.js.map +1 -0
  25. package/dist/{sdk/passport → passport}/manager.d.ts +9 -18
  26. package/dist/passport/manager.d.ts.map +1 -0
  27. package/dist/passport/manager.js +148 -0
  28. package/dist/passport/manager.js.map +1 -0
  29. package/dist/pipeline.d.ts +25 -0
  30. package/dist/pipeline.d.ts.map +1 -0
  31. package/dist/pipeline.js +127 -0
  32. package/dist/pipeline.js.map +1 -0
  33. package/dist/privacy/relayer.d.ts.map +1 -0
  34. package/dist/privacy/relayer.js.map +1 -0
  35. package/dist/privacy/shield.d.ts +27 -0
  36. package/dist/privacy/shield.d.ts.map +1 -0
  37. package/dist/privacy/shield.js +289 -0
  38. package/dist/privacy/shield.js.map +1 -0
  39. package/dist/{sdk/privacy-engine.d.ts → privacy-engine.d.ts} +2 -1
  40. package/dist/privacy-engine.d.ts.map +1 -0
  41. package/dist/{sdk/privacy-engine.js → privacy-engine.js} +24 -15
  42. package/dist/privacy-engine.js.map +1 -0
  43. package/dist/registry/idl-fetcher.d.ts +10 -0
  44. package/dist/registry/idl-fetcher.d.ts.map +1 -0
  45. package/dist/{sdk/registry → registry}/idl-fetcher.js +19 -16
  46. package/dist/registry/idl-fetcher.js.map +1 -0
  47. package/dist/registry/programs.d.ts.map +1 -0
  48. package/dist/registry/programs.js.map +1 -0
  49. package/dist/rescue/analyzer.d.ts +20 -0
  50. package/dist/rescue/analyzer.d.ts.map +1 -0
  51. package/dist/rescue/analyzer.js +137 -0
  52. package/dist/rescue/analyzer.js.map +1 -0
  53. package/dist/rescue/builder.d.ts +23 -0
  54. package/dist/rescue/builder.d.ts.map +1 -0
  55. package/dist/rescue/builder.js +164 -0
  56. package/dist/rescue/builder.js.map +1 -0
  57. package/dist/security/key-rotation.d.ts +153 -0
  58. package/dist/security/key-rotation.d.ts.map +1 -0
  59. package/dist/security/key-rotation.js +354 -0
  60. package/dist/security/key-rotation.js.map +1 -0
  61. package/dist/{sdk/semantics → semantics}/analyzer.d.ts.map +1 -1
  62. package/dist/{sdk/semantics → semantics}/analyzer.js.map +1 -1
  63. package/dist/semantics/decoder.d.ts.map +1 -0
  64. package/dist/semantics/decoder.js.map +1 -0
  65. package/dist/{sdk/semantics → semantics}/graph.d.ts.map +1 -1
  66. package/dist/{sdk/semantics → semantics}/graph.js.map +1 -1
  67. package/dist/semantics/idl-registry.d.ts +8 -0
  68. package/dist/semantics/idl-registry.d.ts.map +1 -0
  69. package/dist/{sdk/semantics → semantics}/idl-registry.js +23 -7
  70. package/dist/semantics/idl-registry.js.map +1 -0
  71. package/dist/semantics/types.d.ts +10 -0
  72. package/dist/semantics/types.d.ts.map +1 -0
  73. package/dist/{sdk → semantics}/types.js.map +1 -1
  74. package/dist/types.d.ts +23 -0
  75. package/dist/types.d.ts.map +1 -0
  76. package/dist/types.js.map +1 -0
  77. package/dist/utils/address.d.ts +10 -0
  78. package/dist/utils/address.d.ts.map +1 -0
  79. package/dist/utils/address.js +45 -0
  80. package/dist/utils/address.js.map +1 -0
  81. package/dist/utils/config.d.ts.map +1 -0
  82. package/dist/utils/config.js.map +1 -0
  83. package/dist/utils/logger.d.ts.map +1 -0
  84. package/dist/utils/logger.js.map +1 -0
  85. package/package.json +38 -76
  86. package/LICENSE +0 -21
  87. package/README.md +0 -123
  88. package/SECURITY.md +0 -174
  89. package/bin/solvoid-scan +0 -2
  90. package/dist/cli/privacy-scan.d.ts +0 -11
  91. package/dist/cli/privacy-scan.d.ts.map +0 -1
  92. package/dist/cli/privacy-scan.js +0 -112
  93. package/dist/cli/privacy-scan.js.map +0 -1
  94. package/dist/cli/solvoid-scan.d.ts +0 -13
  95. package/dist/cli/solvoid-scan.d.ts.map +0 -1
  96. package/dist/cli/solvoid-scan.js +0 -174
  97. package/dist/cli/solvoid-scan.js.map +0 -1
  98. package/dist/cli/test-forensics.d.ts +0 -2
  99. package/dist/cli/test-forensics.d.ts.map +0 -1
  100. package/dist/cli/test-forensics.js +0 -90
  101. package/dist/cli/test-forensics.js.map +0 -1
  102. package/dist/cli/test-scenarios.d.ts +0 -2
  103. package/dist/cli/test-scenarios.d.ts.map +0 -1
  104. package/dist/cli/test-scenarios.js +0 -96
  105. package/dist/cli/test-scenarios.js.map +0 -1
  106. package/dist/examples/enterprise-demo.js +0 -65
  107. package/dist/sdk/client.d.ts +0 -77
  108. package/dist/sdk/client.d.ts.map +0 -1
  109. package/dist/sdk/client.js +0 -180
  110. package/dist/sdk/client.js.map +0 -1
  111. package/dist/sdk/compliance/identity.d.ts +0 -34
  112. package/dist/sdk/compliance/identity.d.ts.map +0 -1
  113. package/dist/sdk/compliance/identity.js +0 -55
  114. package/dist/sdk/compliance/identity.js.map +0 -1
  115. package/dist/sdk/compliance/threat-model.d.ts +0 -14
  116. package/dist/sdk/compliance/threat-model.d.ts.map +0 -1
  117. package/dist/sdk/compliance/threat-model.js +0 -101
  118. package/dist/sdk/compliance/threat-model.js.map +0 -1
  119. package/dist/sdk/forensics/mev.js +0 -50
  120. package/dist/sdk/forensics/order-flow.d.ts +0 -20
  121. package/dist/sdk/forensics/order-flow.d.ts.map +0 -1
  122. package/dist/sdk/forensics/order-flow.js +0 -104
  123. package/dist/sdk/forensics/order-flow.js.map +0 -1
  124. package/dist/sdk/forensics/simulation.d.ts +0 -14
  125. package/dist/sdk/forensics/simulation.d.ts.map +0 -1
  126. package/dist/sdk/forensics/simulation.js +0 -45
  127. package/dist/sdk/forensics/simulation.js.map +0 -1
  128. package/dist/sdk/index.d.ts.map +0 -1
  129. package/dist/sdk/index.js.map +0 -1
  130. package/dist/sdk/network/shadow-rpc.d.ts +0 -18
  131. package/dist/sdk/network/shadow-rpc.d.ts.map +0 -1
  132. package/dist/sdk/network/shadow-rpc.js +0 -32
  133. package/dist/sdk/network/shadow-rpc.js.map +0 -1
  134. package/dist/sdk/obfuscator.d.ts +0 -36
  135. package/dist/sdk/obfuscator.d.ts.map +0 -1
  136. package/dist/sdk/obfuscator.js +0 -77
  137. package/dist/sdk/obfuscator.js.map +0 -1
  138. package/dist/sdk/passport/manager.d.ts.map +0 -1
  139. package/dist/sdk/passport/manager.js +0 -107
  140. package/dist/sdk/passport/manager.js.map +0 -1
  141. package/dist/sdk/pipeline.d.ts +0 -34
  142. package/dist/sdk/pipeline.d.ts.map +0 -1
  143. package/dist/sdk/pipeline.js +0 -81
  144. package/dist/sdk/pipeline.js.map +0 -1
  145. package/dist/sdk/privacy/confidential-transfer.d.ts +0 -81
  146. package/dist/sdk/privacy/confidential-transfer.d.ts.map +0 -1
  147. package/dist/sdk/privacy/confidential-transfer.js +0 -158
  148. package/dist/sdk/privacy/confidential-transfer.js.map +0 -1
  149. package/dist/sdk/privacy/history.d.ts +0 -11
  150. package/dist/sdk/privacy/history.d.ts.map +0 -1
  151. package/dist/sdk/privacy/history.js +0 -110
  152. package/dist/sdk/privacy/history.js.map +0 -1
  153. package/dist/sdk/privacy/light-protocol.d.ts +0 -42
  154. package/dist/sdk/privacy/light-protocol.d.ts.map +0 -1
  155. package/dist/sdk/privacy/light-protocol.js +0 -83
  156. package/dist/sdk/privacy/light-protocol.js.map +0 -1
  157. package/dist/sdk/privacy/relayer.d.ts.map +0 -1
  158. package/dist/sdk/privacy/relayer.js.map +0 -1
  159. package/dist/sdk/privacy/safe-obfuscator.d.ts +0 -38
  160. package/dist/sdk/privacy/safe-obfuscator.d.ts.map +0 -1
  161. package/dist/sdk/privacy/safe-obfuscator.js +0 -101
  162. package/dist/sdk/privacy/safe-obfuscator.js.map +0 -1
  163. package/dist/sdk/privacy/shield.d.ts +0 -34
  164. package/dist/sdk/privacy/shield.d.ts.map +0 -1
  165. package/dist/sdk/privacy/shield.js +0 -174
  166. package/dist/sdk/privacy/shield.js.map +0 -1
  167. package/dist/sdk/privacy/zk.js +0 -43
  168. package/dist/sdk/privacy-engine.d.ts.map +0 -1
  169. package/dist/sdk/privacy-engine.js.map +0 -1
  170. package/dist/sdk/registry/idl-fetcher.d.ts +0 -17
  171. package/dist/sdk/registry/idl-fetcher.d.ts.map +0 -1
  172. package/dist/sdk/registry/idl-fetcher.js.map +0 -1
  173. package/dist/sdk/registry/programs.d.ts.map +0 -1
  174. package/dist/sdk/registry/programs.js.map +0 -1
  175. package/dist/sdk/rescue/analyzer.d.ts +0 -22
  176. package/dist/sdk/rescue/analyzer.d.ts.map +0 -1
  177. package/dist/sdk/rescue/analyzer.js +0 -46
  178. package/dist/sdk/rescue/analyzer.js.map +0 -1
  179. package/dist/sdk/rescue/builder.d.ts +0 -16
  180. package/dist/sdk/rescue/builder.d.ts.map +0 -1
  181. package/dist/sdk/rescue/builder.js +0 -33
  182. package/dist/sdk/rescue/builder.js.map +0 -1
  183. package/dist/sdk/semantics/decoder.d.ts.map +0 -1
  184. package/dist/sdk/semantics/decoder.js.map +0 -1
  185. package/dist/sdk/semantics/idl-registry.d.ts +0 -7
  186. package/dist/sdk/semantics/idl-registry.d.ts.map +0 -1
  187. package/dist/sdk/semantics/idl-registry.js.map +0 -1
  188. package/dist/sdk/semantics/types.d.ts +0 -44
  189. package/dist/sdk/semantics/types.d.ts.map +0 -1
  190. package/dist/sdk/semantics/types.js.map +0 -1
  191. package/dist/sdk/simulator.d.ts +0 -15
  192. package/dist/sdk/simulator.d.ts.map +0 -1
  193. package/dist/sdk/simulator.js +0 -133
  194. package/dist/sdk/simulator.js.map +0 -1
  195. package/dist/sdk/types.d.ts +0 -53
  196. package/dist/sdk/types.d.ts.map +0 -1
  197. package/dist/sdk/utils/config.d.ts.map +0 -1
  198. package/dist/sdk/utils/config.js.map +0 -1
  199. package/dist/sdk/utils/logger.d.ts.map +0 -1
  200. package/dist/sdk/utils/logger.js.map +0 -1
  201. package/dist/tests/unit/idl-registry.test.d.ts +0 -2
  202. package/dist/tests/unit/idl-registry.test.d.ts.map +0 -1
  203. package/dist/tests/unit/idl-registry.test.js +0 -35
  204. package/dist/tests/unit/idl-registry.test.js.map +0 -1
  205. package/dist/tools/exploit_demonstration.js +0 -99
  206. package/dist/tools/gen-tx.js +0 -29
  207. package/dist/tools/get-recent-tx.js +0 -18
  208. /package/dist/{sdk/privacy → privacy}/relayer.d.ts +0 -0
  209. /package/dist/{sdk/privacy → privacy}/relayer.js +0 -0
  210. /package/dist/{sdk/registry → registry}/programs.d.ts +0 -0
  211. /package/dist/{sdk/registry → registry}/programs.js +0 -0
  212. /package/dist/{sdk/semantics → semantics}/analyzer.d.ts +0 -0
  213. /package/dist/{sdk/semantics → semantics}/analyzer.js +0 -0
  214. /package/dist/{sdk/semantics → semantics}/decoder.d.ts +0 -0
  215. /package/dist/{sdk/semantics → semantics}/decoder.js +0 -0
  216. /package/dist/{sdk/semantics → semantics}/graph.d.ts +0 -0
  217. /package/dist/{sdk/semantics → semantics}/graph.js +0 -0
  218. /package/dist/{sdk/semantics → semantics}/types.js +0 -0
  219. /package/dist/{sdk/types.js → types.js} +0 -0
  220. /package/dist/{sdk/utils → utils}/config.d.ts +0 -0
  221. /package/dist/{sdk/utils → utils}/config.js +0 -0
  222. /package/dist/{sdk/utils → utils}/logger.d.ts +0 -0
  223. /package/dist/{sdk/utils → utils}/logger.js +0 -0
@@ -0,0 +1,293 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.PoseidonUtils = exports.SecureSalts = exports.PoseidonHasher = void 0;
37
+ const circomlibjs_1 = require("circomlibjs");
38
+ const buffer_1 = require("buffer");
39
+ /**
40
+ * Poseidon hash wrapper with type safety and BN254 compatibility
41
+ * Matches Rust implementation parameters for cryptographic consistency
42
+ */
43
+ class PoseidonHasher {
44
+ /**
45
+ * Initialize Poseidon with BN254 field parameters
46
+ * Width: 3 (2 inputs + 1 output for binary Merkle tree)
47
+ * Security: 128-bit (standard for zk-SNARK applications)
48
+ */
49
+ static async initialize() {
50
+ if (this.initialized)
51
+ return;
52
+ try {
53
+ // Build Poseidon instance with parameters matching Rust implementation
54
+ this.poseidon = await (0, circomlibjs_1.buildPoseidon)();
55
+ // Configure for BN254 field with width=3 (2 inputs + 1 output)
56
+ // This matches the Rust Poseidon<Bn254, 3> setup
57
+ await this.poseidon.ready();
58
+ this.initialized = true;
59
+ }
60
+ catch (error) {
61
+ throw new Error(`Failed to initialize Poseidon: ${error}`);
62
+ }
63
+ }
64
+ /**
65
+ * Ensure Poseidon is initialized before use
66
+ */
67
+ static async ensureInitialized() {
68
+ if (!this.initialized) {
69
+ await this.initialize();
70
+ }
71
+ }
72
+ /**
73
+ * Convert Buffer to BigInt for Poseidon input
74
+ * FIXED: Handles little-endian conversion consistently with Rust ark-ff
75
+ */
76
+ static bufferToBigInt(buffer) {
77
+ // Reverse buffer for little-endian conversion
78
+ const leBuffer = buffer_1.Buffer.from(buffer).reverse();
79
+ return BigInt('0x' + leBuffer.toString('hex'));
80
+ }
81
+ /**
82
+ * Convert BigInt output to Buffer (32 bytes, little-endian)
83
+ * FIXED: Ensures compatibility with Rust field element format (little-endian)
84
+ */
85
+ static bigIntToBuffer(value) {
86
+ // Convert to hex string and pad to 64 characters (32 bytes)
87
+ const hex = value.toString(16).padStart(64, '0');
88
+ // Convert hex to Buffer and reverse for little-endian
89
+ const buffer = buffer_1.Buffer.from(hex, 'hex').reverse();
90
+ // Ensure exactly 32 bytes
91
+ if (buffer.length !== 32) {
92
+ throw new Error(`Poseidon output must be 32 bytes, got ${buffer.length}`);
93
+ }
94
+ return buffer;
95
+ }
96
+ /**
97
+ * Hash with salt for commitment derivation
98
+ * Matches Rust: hash_commitment_with_salt
99
+ */
100
+ static async hashWithSalt(left, right, saltValue) {
101
+ await this.ensureInitialized();
102
+ if (left.length !== 32 || right.length !== 32 || saltValue.length !== 32) {
103
+ throw new Error('All inputs must be exactly 32 bytes');
104
+ }
105
+ const l = this.bufferToBigInt(left);
106
+ const r = this.bufferToBigInt(right);
107
+ const s = this.bufferToBigInt(saltValue);
108
+ // Matches Rust: sponge.absorb(&l); sponge.absorb(&r); sponge.absorb(&s);
109
+ const resultBigInt = this.poseidon([l, r, s]);
110
+ return this.bigIntToBuffer(resultBigInt);
111
+ }
112
+ /**
113
+ * Hash two 32-byte inputs using Poseidon(2)
114
+ * MATCHES MerkleTreeChecker circuit: Poseidon(2)
115
+ */
116
+ static async hashTwoInputs(left, right) {
117
+ await this.ensureInitialized();
118
+ if (left.length !== 32 || right.length !== 32) {
119
+ throw new Error('All inputs must be exactly 32 bytes');
120
+ }
121
+ const l = this.bufferToBigInt(left);
122
+ const r = this.bufferToBigInt(right);
123
+ // Strict Poseidon(2) for Merkle Tree consistency
124
+ const resultBigInt = this.poseidon([l, r]);
125
+ return this.bigIntToBuffer(resultBigInt);
126
+ }
127
+ /**
128
+ * Hash single input with zero for nullifier hash
129
+ * MATCHES circuit: Poseidon(nullifier, 1)
130
+ */
131
+ static async hashWithZero(input) {
132
+ await this.ensureInitialized();
133
+ const n = this.bufferToBigInt(input);
134
+ const resultBigInt = this.poseidon([n, BigInt(1)]);
135
+ return this.bigIntToBuffer(resultBigInt);
136
+ }
137
+ /**
138
+ * Compute commitment from secret, nullifier, and amount
139
+ * FIXED: Includes amount to prevent value inflation
140
+ * Matches circuit: Poseidon(secret, nullifier, amount)
141
+ */
142
+ static async computeCommitment(secret, nullifier, amount) {
143
+ await this.ensureInitialized();
144
+ const s = this.bufferToBigInt(secret);
145
+ const n = this.bufferToBigInt(nullifier);
146
+ const a = amount;
147
+ const resultBigInt = this.poseidon([s, n, a]);
148
+ return this.bigIntToBuffer(resultBigInt);
149
+ }
150
+ /**
151
+ * Compute nullifier hash from nullifier
152
+ * FIXED: Uses constant domain salt matching the circuit
153
+ * Matches circuit: Poseidon(nullifier, 1)
154
+ */
155
+ static async computeNullifierHash(nullifier) {
156
+ await this.ensureInitialized();
157
+ const n = this.bufferToBigInt(nullifier);
158
+ const salt = BigInt(1);
159
+ const resultBigInt = this.poseidon([n, salt]);
160
+ return this.bigIntToBuffer(resultBigInt);
161
+ }
162
+ /**
163
+ * Compute Merkle root from leaf and proof path
164
+ * @param leaf - 32-byte leaf value
165
+ * @param proof - Array of 32-byte proof elements
166
+ * @param indices - Array of indices (0 for left, 1 for right)
167
+ * @returns 32-byte Merkle root
168
+ */
169
+ static async computeMerkleRoot(leaf, proof, indices) {
170
+ if (proof.length !== indices.length) {
171
+ throw new Error('Proof and indices arrays must have same length');
172
+ }
173
+ let current = leaf;
174
+ for (let i = 0; i < proof.length; i++) {
175
+ const sibling = proof[i];
176
+ const index = indices[i];
177
+ if (index === 0) {
178
+ // Current is left sibling
179
+ current = await this.hashTwoInputs(current, sibling);
180
+ }
181
+ else {
182
+ // Current is right sibling
183
+ current = await this.hashTwoInputs(sibling, current);
184
+ }
185
+ }
186
+ return current;
187
+ }
188
+ /**
189
+ * Verify hash output is within BN254 field constraints
190
+ * Ensures compatibility with zk-SNARK circuit requirements
191
+ */
192
+ static verifyFieldCompatibility(hash) {
193
+ if (hash.length !== 32)
194
+ return false;
195
+ try {
196
+ // Convert to BigInt and check it's within BN254 field
197
+ const value = this.bufferToBigInt(hash);
198
+ // BN254 prime field modulus (p)
199
+ const BN254_PRIME = BigInt('21888242871839275222246405745257275088548364400416034343698204186575808495617');
200
+ return value < BN254_PRIME;
201
+ }
202
+ catch {
203
+ return false;
204
+ }
205
+ }
206
+ /**
207
+ * Get Poseidon instance for advanced usage
208
+ * @returns The underlying circomlibjs Poseidon instance
209
+ */
210
+ static async getPoseidonInstance() {
211
+ await this.ensureInitialized();
212
+ return this.poseidon;
213
+ }
214
+ /**
215
+ * Reset the Poseidon instance (useful for testing)
216
+ */
217
+ static reset() {
218
+ this.poseidon = null;
219
+ this.initialized = false;
220
+ }
221
+ }
222
+ exports.PoseidonHasher = PoseidonHasher;
223
+ PoseidonHasher.poseidon = null;
224
+ PoseidonHasher.initialized = false;
225
+ /**
226
+ * FIXED: Secure salt generation for cryptographic domain separation
227
+ * Matches Rust implementation in poseidon.rs
228
+ */
229
+ class SecureSalts {
230
+ static generateSecureSalts(transactionContext) {
231
+ const commitmentSalt = crypto.createHash('sha256')
232
+ .update(transactionContext)
233
+ .update(buffer_1.Buffer.from("commitment_domain"))
234
+ .digest();
235
+ const nullifierSalt = crypto.createHash('sha256')
236
+ .update(transactionContext)
237
+ .update(buffer_1.Buffer.from("nullifier_domain"))
238
+ .digest();
239
+ const pathSalt = crypto.createHash('sha256')
240
+ .update(transactionContext)
241
+ .update(buffer_1.Buffer.from("path_domain"))
242
+ .digest();
243
+ return {
244
+ commitmentSalt,
245
+ nullifierSalt,
246
+ pathSalt
247
+ };
248
+ }
249
+ static fromTransactionComponents(root, nullifier, recipient, amount) {
250
+ const amountBuf = buffer_1.Buffer.alloc(8);
251
+ amountBuf.writeBigUInt64LE(amount);
252
+ const context = buffer_1.Buffer.concat([root, nullifier, recipient, amountBuf]);
253
+ return this.generateSecureSalts(context);
254
+ }
255
+ }
256
+ exports.SecureSalts = SecureSalts;
257
+ /**
258
+ * Utility functions for working with Poseidon hashes
259
+ */
260
+ class PoseidonUtils {
261
+ /**
262
+ * Convert hex string to Buffer (32 bytes)
263
+ */
264
+ static hexToBuffer(hex) {
265
+ if (!/^[0-9a-fA-F]{64}$/.test(hex)) {
266
+ throw new Error('Hex must be exactly 64 characters (32 bytes)');
267
+ }
268
+ return buffer_1.Buffer.from(hex, 'hex');
269
+ }
270
+ /**
271
+ * Convert Buffer to hex string
272
+ */
273
+ static bufferToHex(buffer) {
274
+ return buffer.toString('hex');
275
+ }
276
+ /**
277
+ * Validate Buffer is 32 bytes
278
+ */
279
+ static validate32Bytes(buffer) {
280
+ if (buffer.length !== 32) {
281
+ throw new Error(`Buffer must be exactly 32 bytes, got ${buffer.length}`);
282
+ }
283
+ }
284
+ /**
285
+ * Create zero Buffer (32 bytes of zeros)
286
+ */
287
+ static zeroBuffer() {
288
+ return buffer_1.Buffer.alloc(32, 0);
289
+ }
290
+ }
291
+ exports.PoseidonUtils = PoseidonUtils;
292
+ const crypto = __importStar(require("crypto"));
293
+ //# sourceMappingURL=poseidon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poseidon.js","sourceRoot":"","sources":["../../crypto/poseidon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * SolVoid Event Bus
3
+ * Central event system for real-time forensic telemetry across the SDK.
4
+ */
5
+ type EventType = 'SCAN_START' | 'SCAN_COMPLETE' | 'LEAK_DETECTED' | 'TRANSACTION_PARSED' | 'PROOF_GENERATED' | 'RELAY_BROADCAST' | 'COMMITMENT_CREATED' | 'WITHDRAWAL_COMPLETE' | 'ERROR' | 'INFO' | 'WARNING';
6
+ export interface ForensicEvent {
7
+ type: EventType;
8
+ timestamp: Date;
9
+ message: string;
10
+ data?: Record<string, unknown>;
11
+ hex?: string;
12
+ }
13
+ type EventCallback = (event: ForensicEvent) => void;
14
+ declare class EventBusClass {
15
+ private listeners;
16
+ private globalListeners;
17
+ /**
18
+ * Subscribe to a specific event type
19
+ */
20
+ on(type: EventType, callback: EventCallback): () => void;
21
+ /**
22
+ * Subscribe to ALL events (for terminal/logging)
23
+ */
24
+ onAll(callback: EventCallback): () => void;
25
+ /**
26
+ * Emit an event to all subscribers
27
+ */
28
+ emit(type: EventType, message: string, data?: Record<string, unknown>, hex?: string): void;
29
+ /**
30
+ * Helper methods for common event types
31
+ */
32
+ info(message: string, data?: Record<string, unknown>): void;
33
+ warn(message: string, data?: Record<string, unknown>): void;
34
+ error(message: string, data?: Record<string, unknown>): void;
35
+ scanStart(address: string): void;
36
+ scanComplete(address: string, leakCount: number, score: number): void;
37
+ leakDetected(type: string, severity: string, description: string, txSignature?: string): void;
38
+ transactionParsed(signature: string, programId: string): void;
39
+ proofGenerated(proofType: string): void;
40
+ relayBroadcast(nodeCount: number, txid: string): void;
41
+ }
42
+ export declare const EventBus: EventBusClass;
43
+ export {};
44
+ //# sourceMappingURL=bus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bus.d.ts","sourceRoot":"","sources":["../../events/bus.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,KAAK,SAAS,GACR,YAAY,GACZ,eAAe,GACf,eAAe,GACf,oBAAoB,GACpB,iBAAiB,GACjB,iBAAiB,GACjB,oBAAoB,GACpB,qBAAqB,GACrB,OAAO,GACP,MAAM,GACN,SAAS,CAAC;AAEhB,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,aAAa,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;AAEpD,cAAM,aAAa;IACf,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,eAAe,CAAiC;IAExD;;OAEG;IACH,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,IAAI;IAWxD;;OAEG;IACH,KAAK,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,IAAI;IAO1C;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAgB1F;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIpD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIpD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIrD,SAAS,CAAC,OAAO,EAAE,MAAM;IAIzB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAI9D,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IAItF,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAItD,cAAc,CAAC,SAAS,EAAE,MAAM;IAIhC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAGjD;AAGD,eAAO,MAAM,QAAQ,eAAsB,CAAC"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ /**
3
+ * SolVoid Event Bus
4
+ * Central event system for real-time forensic telemetry across the SDK.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.EventBus = void 0;
8
+ class EventBusClass {
9
+ constructor() {
10
+ this.listeners = new Map();
11
+ this.globalListeners = new Set();
12
+ }
13
+ /**
14
+ * Subscribe to a specific event type
15
+ */
16
+ on(type, callback) {
17
+ if (!this.listeners.has(type)) {
18
+ this.listeners.set(type, new Set());
19
+ }
20
+ this.listeners.get(type).add(callback);
21
+ return () => {
22
+ this.listeners.get(type)?.delete(callback);
23
+ };
24
+ }
25
+ /**
26
+ * Subscribe to ALL events (for terminal/logging)
27
+ */
28
+ onAll(callback) {
29
+ this.globalListeners.add(callback);
30
+ return () => {
31
+ this.globalListeners.delete(callback);
32
+ };
33
+ }
34
+ /**
35
+ * Emit an event to all subscribers
36
+ */
37
+ emit(type, message, data, hex) {
38
+ const event = {
39
+ type,
40
+ timestamp: new Date(),
41
+ message,
42
+ data,
43
+ hex
44
+ };
45
+ // Notify type-specific listeners
46
+ this.listeners.get(type)?.forEach(cb => cb(event));
47
+ // Notify global listeners
48
+ this.globalListeners.forEach(cb => cb(event));
49
+ }
50
+ /**
51
+ * Helper methods for common event types
52
+ */
53
+ info(message, data) {
54
+ this.emit('INFO', message, data);
55
+ }
56
+ warn(message, data) {
57
+ this.emit('WARNING', message, data);
58
+ }
59
+ error(message, data) {
60
+ this.emit('ERROR', message, data);
61
+ }
62
+ scanStart(address) {
63
+ this.emit('SCAN_START', `Initiating forensic scan for ${address.slice(0, 8)}...`, { address });
64
+ }
65
+ scanComplete(address, leakCount, score) {
66
+ this.emit('SCAN_COMPLETE', `Scan complete. ${leakCount} leaks detected. Privacy score: ${score}`, { address, leakCount, score });
67
+ }
68
+ leakDetected(type, severity, description, txSignature) {
69
+ this.emit('LEAK_DETECTED', `${severity} ${type} leak: ${description}`, { type, severity }, txSignature);
70
+ }
71
+ transactionParsed(signature, programId) {
72
+ this.emit('TRANSACTION_PARSED', `Parsed transaction from ${programId.slice(0, 8)}...`, { signature, programId }, signature);
73
+ }
74
+ proofGenerated(proofType) {
75
+ this.emit('PROOF_GENERATED', `ZK-${proofType} proof generated successfully`, { proofType });
76
+ }
77
+ relayBroadcast(nodeCount, txid) {
78
+ this.emit('RELAY_BROADCAST', `Transaction broadcast via ${nodeCount} shadow nodes`, { nodeCount, txid }, txid);
79
+ }
80
+ }
81
+ // Singleton export
82
+ exports.EventBus = new EventBusClass();
83
+ //# sourceMappingURL=bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bus.js","sourceRoot":"","sources":["../../events/bus.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,9 @@
1
1
  export * from './types';
2
+ export { DataOrigin, DataTrust, Unit, RelayRequestSchema, RelayResponseSchema, OnionLayerSchema, enforce, DataMetadata, RelayResponse, RelayRequest, OnionLayer } from './integrity';
2
3
  export { PrivacyEngine } from './privacy-engine';
3
4
  export { PrivacyPipeline } from './pipeline';
4
5
  export { PrivacyShield } from './privacy/shield';
5
- export { PrivacyRelayer } from './privacy/relayer';
6
6
  export { SolVoidClient, SolVoidConfig } from './client';
7
- export { OnChainIdlFetcher } from './registry/idl-fetcher';
8
7
  export { KNOWN_PROGRAMS, identifyProgram, isSwapProgram } from './registry/programs';
9
- export { ConfigLoader, EnvConfig } from './utils/config';
8
+ export { EventBus, ForensicEvent } from './events/bus';
10
9
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AAGxB,OAAO,EACL,UAAU,EACV,SAAS,EACT,IAAI,EACJ,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,OAAO,EACP,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,UAAU,EACX,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGxD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGrF,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -14,30 +14,40 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.ConfigLoader = exports.isSwapProgram = exports.identifyProgram = exports.KNOWN_PROGRAMS = exports.OnChainIdlFetcher = exports.SolVoidClient = exports.PrivacyRelayer = exports.PrivacyShield = exports.PrivacyPipeline = exports.PrivacyEngine = void 0;
17
+ exports.EventBus = exports.isSwapProgram = exports.identifyProgram = exports.KNOWN_PROGRAMS = exports.SolVoidClient = exports.PrivacyShield = exports.PrivacyPipeline = exports.PrivacyEngine = exports.enforce = exports.OnionLayerSchema = exports.RelayResponseSchema = exports.RelayRequestSchema = exports.Unit = exports.DataTrust = exports.DataOrigin = void 0;
18
18
  // Export all public types
19
19
  __exportStar(require("./types"), exports);
20
+ // Export integrity module (server-side) - specific exports to avoid conflicts
21
+ var integrity_1 = require("./integrity");
22
+ Object.defineProperty(exports, "DataOrigin", { enumerable: true, get: function () { return integrity_1.DataOrigin; } });
23
+ Object.defineProperty(exports, "DataTrust", { enumerable: true, get: function () { return integrity_1.DataTrust; } });
24
+ Object.defineProperty(exports, "Unit", { enumerable: true, get: function () { return integrity_1.Unit; } });
25
+ Object.defineProperty(exports, "RelayRequestSchema", { enumerable: true, get: function () { return integrity_1.RelayRequestSchema; } });
26
+ Object.defineProperty(exports, "RelayResponseSchema", { enumerable: true, get: function () { return integrity_1.RelayResponseSchema; } });
27
+ Object.defineProperty(exports, "OnionLayerSchema", { enumerable: true, get: function () { return integrity_1.OnionLayerSchema; } });
28
+ Object.defineProperty(exports, "enforce", { enumerable: true, get: function () { return integrity_1.enforce; } });
20
29
  // Export privacy engine (core scanning & remediation detection)
21
30
  var privacy_engine_1 = require("./privacy-engine");
22
31
  Object.defineProperty(exports, "PrivacyEngine", { enumerable: true, get: function () { return privacy_engine_1.PrivacyEngine; } });
23
32
  var pipeline_1 = require("./pipeline");
24
33
  Object.defineProperty(exports, "PrivacyPipeline", { enumerable: true, get: function () { return pipeline_1.PrivacyPipeline; } });
25
- // Export Privacy Core (Production)
34
+ // Export Privacy Core (browser-safe)
26
35
  var shield_1 = require("./privacy/shield");
27
36
  Object.defineProperty(exports, "PrivacyShield", { enumerable: true, get: function () { return shield_1.PrivacyShield; } });
28
- var relayer_1 = require("./privacy/relayer");
29
- Object.defineProperty(exports, "PrivacyRelayer", { enumerable: true, get: function () { return relayer_1.PrivacyRelayer; } });
30
- // Export client (main entry point)
37
+ // Export client (main entry point - browser safe)
31
38
  var client_1 = require("./client");
32
39
  Object.defineProperty(exports, "SolVoidClient", { enumerable: true, get: function () { return client_1.SolVoidClient; } });
33
- // Export registry utilities (needed for decoding for the pipeline)
34
- var idl_fetcher_1 = require("./registry/idl-fetcher");
35
- Object.defineProperty(exports, "OnChainIdlFetcher", { enumerable: true, get: function () { return idl_fetcher_1.OnChainIdlFetcher; } });
40
+ // Export registry utilities
36
41
  var programs_1 = require("./registry/programs");
37
42
  Object.defineProperty(exports, "KNOWN_PROGRAMS", { enumerable: true, get: function () { return programs_1.KNOWN_PROGRAMS; } });
38
43
  Object.defineProperty(exports, "identifyProgram", { enumerable: true, get: function () { return programs_1.identifyProgram; } });
39
44
  Object.defineProperty(exports, "isSwapProgram", { enumerable: true, get: function () { return programs_1.isSwapProgram; } });
40
- // Export configuration utilities
41
- var config_1 = require("./utils/config");
42
- Object.defineProperty(exports, "ConfigLoader", { enumerable: true, get: function () { return config_1.ConfigLoader; } });
45
+ // Export event system (browser-safe)
46
+ var bus_1 = require("./events/bus");
47
+ Object.defineProperty(exports, "EventBus", { enumerable: true, get: function () { return bus_1.EventBus; } });
48
+ // Note: The following are server-side only and should be imported directly:
49
+ // - PrivacyRelayer from './privacy/relayer'
50
+ // - ShadowRPC from './network/shadow-rpc'
51
+ // - ConfigLoader from './utils/config'
52
+ // - OnChainIdlFetcher from './registry/idl-fetcher'
43
53
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0BAA0B;AAC1B,0CAAwB;AAExB,8EAA8E;AAC9E,yCAYqB;AAXnB,uGAAA,UAAU,OAAA;AACV,sGAAA,SAAS,OAAA;AACT,iGAAA,IAAI,OAAA;AACJ,+GAAA,kBAAkB,OAAA;AAClB,gHAAA,mBAAmB,OAAA;AACnB,6GAAA,gBAAgB,OAAA;AAChB,oGAAA,OAAO,OAAA;AAOT,gEAAgE;AAChE,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,uCAA6C;AAApC,2GAAA,eAAe,OAAA;AAExB,qCAAqC;AACrC,2CAAiD;AAAxC,uGAAA,aAAa,OAAA;AAEtB,kDAAkD;AAClD,mCAAwD;AAA/C,uGAAA,aAAa,OAAA;AAEtB,4BAA4B;AAC5B,gDAAqF;AAA5E,0GAAA,cAAc,OAAA;AAAE,2GAAA,eAAe,OAAA;AAAE,yGAAA,aAAa,OAAA;AAEvD,qCAAqC;AACrC,oCAAuD;AAA9C,+FAAA,QAAQ,OAAA;AAEjB,4EAA4E;AAC5E,4CAA4C;AAC5C,0CAA0C;AAC1C,uCAAuC;AACvC,oDAAoD"}