@aztec/foundation 0.76.4 → 0.77.0-testnet-ignition.21

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 (459) hide show
  1. package/dest/array/array.d.ts +1 -1
  2. package/dest/array/array.d.ts.map +1 -1
  3. package/dest/array/array.js +19 -26
  4. package/dest/array/index.js +0 -1
  5. package/dest/async-map/index.js +2 -4
  6. package/dest/async-pool/index.js +6 -9
  7. package/dest/bigint-buffer/index.js +6 -13
  8. package/dest/buffer/buffer32.d.ts +1 -1
  9. package/dest/buffer/buffer32.d.ts.map +1 -1
  10. package/dest/buffer/buffer32.js +53 -66
  11. package/dest/buffer/index.js +0 -1
  12. package/dest/collection/array.d.ts +1 -1
  13. package/dest/collection/array.d.ts.map +1 -1
  14. package/dest/collection/array.js +47 -59
  15. package/dest/collection/index.js +0 -1
  16. package/dest/collection/object.js +9 -9
  17. package/dest/committable/committable.js +15 -20
  18. package/dest/committable/index.js +0 -1
  19. package/dest/config/env_var.d.ts +1 -1
  20. package/dest/config/env_var.d.ts.map +1 -1
  21. package/dest/config/env_var.js +1 -2
  22. package/dest/config/index.d.ts +1 -1
  23. package/dest/config/index.d.ts.map +1 -1
  24. package/dest/config/index.js +31 -36
  25. package/dest/crypto/aes128/index.d.ts +34 -0
  26. package/dest/crypto/aes128/index.d.ts.map +1 -0
  27. package/dest/crypto/aes128/index.js +49 -0
  28. package/dest/crypto/ecdsa/index.d.ts +39 -0
  29. package/dest/crypto/ecdsa/index.d.ts.map +1 -0
  30. package/dest/crypto/ecdsa/index.js +88 -0
  31. package/dest/crypto/ecdsa/signature.d.ts +71 -0
  32. package/dest/crypto/ecdsa/signature.d.ts.map +1 -0
  33. package/dest/crypto/ecdsa/signature.js +92 -0
  34. package/dest/crypto/grumpkin/index.d.ts +47 -0
  35. package/dest/crypto/grumpkin/index.d.ts.map +1 -0
  36. package/dest/crypto/grumpkin/index.js +154 -0
  37. package/dest/crypto/index.d.ts +6 -0
  38. package/dest/crypto/index.d.ts.map +1 -1
  39. package/dest/crypto/index.js +6 -1
  40. package/dest/crypto/keccak/index.js +60 -69
  41. package/dest/crypto/keys/index.js +2 -3
  42. package/dest/crypto/pedersen/index.js +0 -1
  43. package/dest/crypto/pedersen/pedersen.elliptic.js +153 -146
  44. package/dest/crypto/pedersen/pedersen.noble.js +140 -142
  45. package/dest/crypto/pedersen/pedersen.wasm.js +17 -16
  46. package/dest/crypto/poseidon/index.js +15 -19
  47. package/dest/crypto/random/index.js +7 -12
  48. package/dest/crypto/random/randomness_singleton.js +12 -12
  49. package/dest/crypto/schnorr/index.d.ts +30 -0
  50. package/dest/crypto/schnorr/index.d.ts.map +1 -0
  51. package/dest/crypto/schnorr/index.js +68 -0
  52. package/dest/crypto/schnorr/signature.d.ts +70 -0
  53. package/dest/crypto/schnorr/signature.d.ts.map +1 -0
  54. package/dest/crypto/schnorr/signature.js +93 -0
  55. package/dest/crypto/secp256k1/index.d.ts +32 -0
  56. package/dest/crypto/secp256k1/index.d.ts.map +1 -0
  57. package/dest/crypto/secp256k1/index.js +116 -0
  58. package/dest/crypto/secp256k1-signer/index.js +0 -1
  59. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts +2 -2
  60. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts.map +1 -1
  61. package/dest/crypto/secp256k1-signer/secp256k1_signer.js +8 -9
  62. package/dest/crypto/secp256k1-signer/utils.js +11 -16
  63. package/dest/crypto/serialize.d.ts +53 -0
  64. package/dest/crypto/serialize.d.ts.map +1 -0
  65. package/dest/crypto/serialize.js +68 -0
  66. package/dest/crypto/sha256/index.js +80 -30
  67. package/dest/crypto/sha512/index.js +2 -4
  68. package/dest/crypto/signature/index.d.ts +19 -0
  69. package/dest/crypto/signature/index.d.ts.map +1 -0
  70. package/dest/crypto/signature/index.js +3 -0
  71. package/dest/crypto/sync/index.js +1 -2
  72. package/dest/crypto/sync/pedersen/index.js +14 -13
  73. package/dest/crypto/sync/poseidon/index.js +10 -14
  74. package/dest/decorators/index.js +0 -1
  75. package/dest/decorators/memoize.js +1 -2
  76. package/dest/error/index.js +6 -19
  77. package/dest/eth-address/index.js +92 -113
  78. package/dest/eth-signature/eth_signature.js +21 -27
  79. package/dest/eth-signature/index.js +0 -1
  80. package/dest/fields/coordinate.d.ts +1 -1
  81. package/dest/fields/coordinate.d.ts.map +1 -1
  82. package/dest/fields/coordinate.js +47 -46
  83. package/dest/fields/fields.d.ts.map +1 -1
  84. package/dest/fields/fields.js +112 -126
  85. package/dest/fields/index.js +0 -1
  86. package/dest/fields/point.js +119 -129
  87. package/dest/fs/index.js +0 -1
  88. package/dest/fs/run_in_dir.d.ts +1 -1
  89. package/dest/fs/run_in_dir.d.ts.map +1 -1
  90. package/dest/fs/run_in_dir.js +16 -7
  91. package/dest/index.d.ts +0 -2
  92. package/dest/index.d.ts.map +1 -1
  93. package/dest/index.js +0 -3
  94. package/dest/iterable/all.js +3 -4
  95. package/dest/iterable/filter.js +10 -11
  96. package/dest/iterable/index.js +0 -1
  97. package/dest/iterable/isAsyncIt.js +1 -3
  98. package/dest/iterable/map.js +10 -11
  99. package/dest/iterable/peek.js +14 -14
  100. package/dest/iterable/sort.js +4 -5
  101. package/dest/iterable/take.js +6 -7
  102. package/dest/iterable/toArray.js +1 -2
  103. package/dest/jest/setup.js +7 -0
  104. package/dest/json-rpc/client/fetch.js +25 -20
  105. package/dest/json-rpc/client/index.js +0 -1
  106. package/dest/json-rpc/client/safe_json_rpc_client.js +20 -9
  107. package/dest/json-rpc/client/undici.d.ts +1 -1
  108. package/dest/json-rpc/client/undici.d.ts.map +1 -1
  109. package/dest/json-rpc/client/undici.js +16 -17
  110. package/dest/json-rpc/convert.d.ts +1 -1
  111. package/dest/json-rpc/convert.d.ts.map +1 -1
  112. package/dest/json-rpc/convert.js +10 -20
  113. package/dest/json-rpc/fixtures/class_a.js +8 -5
  114. package/dest/json-rpc/fixtures/class_b.js +8 -5
  115. package/dest/json-rpc/fixtures/test_state.js +53 -40
  116. package/dest/json-rpc/index.js +0 -1
  117. package/dest/json-rpc/js_utils.js +2 -5
  118. package/dest/json-rpc/server/index.js +0 -1
  119. package/dest/json-rpc/server/safe_json_rpc_server.js +145 -101
  120. package/dest/json-rpc/server/telemetry.js +0 -2
  121. package/dest/json-rpc/test/index.js +0 -1
  122. package/dest/json-rpc/test/integration.d.ts +1 -1
  123. package/dest/json-rpc/test/integration.d.ts.map +1 -1
  124. package/dest/json-rpc/test/integration.js +11 -5
  125. package/dest/log/console.d.ts +1 -1
  126. package/dest/log/console.d.ts.map +1 -1
  127. package/dest/log/console.js +14 -16
  128. package/dest/log/debug.d.ts +1 -1
  129. package/dest/log/debug.d.ts.map +1 -1
  130. package/dest/log/debug.js +9 -18
  131. package/dest/log/gcloud-logger-config.js +17 -15
  132. package/dest/log/index.d.ts +1 -0
  133. package/dest/log/index.d.ts.map +1 -1
  134. package/dest/log/index.js +1 -1
  135. package/dest/log/libp2p_logger.d.ts +7 -0
  136. package/dest/log/libp2p_logger.d.ts.map +1 -0
  137. package/dest/log/libp2p_logger.js +55 -0
  138. package/dest/log/log-filters.js +14 -13
  139. package/dest/log/log-levels.js +10 -2
  140. package/dest/log/log_fn.js +1 -2
  141. package/dest/log/log_history.js +21 -25
  142. package/dest/log/pino-logger.d.ts +8 -4
  143. package/dest/log/pino-logger.d.ts.map +1 -1
  144. package/dest/log/pino-logger.js +92 -74
  145. package/dest/message/index.js +7 -3
  146. package/dest/mutex/index.d.ts +1 -1
  147. package/dest/mutex/index.d.ts.map +1 -1
  148. package/dest/mutex/index.js +34 -32
  149. package/dest/mutex/mutex_database.js +4 -2
  150. package/dest/noir/index.js +0 -1
  151. package/dest/noir/noir_package_config.js +13 -8
  152. package/dest/promise/index.js +0 -1
  153. package/dest/promise/running-promise.d.ts +8 -2
  154. package/dest/promise/running-promise.d.ts.map +1 -1
  155. package/dest/promise/running-promise.js +44 -31
  156. package/dest/promise/utils.js +3 -5
  157. package/dest/queue/base_memory_queue.js +51 -59
  158. package/dest/queue/batch_queue.js +34 -27
  159. package/dest/queue/bounded_serial_queue.js +41 -51
  160. package/dest/queue/fifo_memory_queue.d.ts +1 -1
  161. package/dest/queue/fifo_memory_queue.d.ts.map +1 -1
  162. package/dest/queue/fifo_memory_queue.js +4 -8
  163. package/dest/queue/index.js +0 -1
  164. package/dest/queue/priority_memory_queue.js +3 -4
  165. package/dest/queue/priority_queue.js +5 -5
  166. package/dest/queue/semaphore.js +15 -19
  167. package/dest/queue/serial_queue.js +37 -47
  168. package/dest/retry/index.js +21 -18
  169. package/dest/running-promise/index.js +0 -1
  170. package/dest/schemas/api.d.ts +2 -2
  171. package/dest/schemas/api.d.ts.map +1 -1
  172. package/dest/schemas/api.js +2 -7
  173. package/dest/schemas/index.d.ts +1 -1
  174. package/dest/schemas/index.d.ts.map +1 -1
  175. package/dest/schemas/index.js +1 -2
  176. package/dest/schemas/parse.js +4 -8
  177. package/dest/schemas/schemas.d.ts +1 -16
  178. package/dest/schemas/schemas.d.ts.map +1 -1
  179. package/dest/schemas/schemas.js +28 -56
  180. package/dest/schemas/types.d.ts +1 -1
  181. package/dest/schemas/types.d.ts.map +1 -1
  182. package/dest/schemas/types.js +1 -2
  183. package/dest/schemas/utils.d.ts +1 -1
  184. package/dest/schemas/utils.d.ts.map +1 -1
  185. package/dest/schemas/utils.js +18 -31
  186. package/dest/serialize/buffer_reader.d.ts +1 -1
  187. package/dest/serialize/buffer_reader.d.ts.map +1 -1
  188. package/dest/serialize/buffer_reader.js +164 -188
  189. package/dest/serialize/field_reader.d.ts +1 -1
  190. package/dest/serialize/field_reader.d.ts.map +1 -1
  191. package/dest/serialize/field_reader.js +70 -79
  192. package/dest/serialize/free_funcs.d.ts +1 -1
  193. package/dest/serialize/free_funcs.d.ts.map +1 -1
  194. package/dest/serialize/free_funcs.js +40 -37
  195. package/dest/serialize/index.js +0 -1
  196. package/dest/serialize/serialize.js +72 -83
  197. package/dest/serialize/type_registry.js +10 -14
  198. package/dest/serialize/types.js +4 -5
  199. package/dest/sleep/index.js +25 -29
  200. package/dest/string/index.js +0 -1
  201. package/dest/testing/files/index.js +3 -7
  202. package/dest/testing/index.js +0 -1
  203. package/dest/testing/port_allocator.js +7 -10
  204. package/dest/testing/snapshot_serializer.d.ts +1 -1
  205. package/dest/testing/snapshot_serializer.d.ts.map +1 -1
  206. package/dest/testing/snapshot_serializer.js +14 -9
  207. package/dest/testing/test_data.js +7 -8
  208. package/dest/timer/date.js +9 -7
  209. package/dest/timer/elapsed.js +10 -7
  210. package/dest/timer/index.js +0 -1
  211. package/dest/timer/timeout.js +34 -34
  212. package/dest/timer/timer.js +17 -21
  213. package/dest/transport/browser/index.js +0 -1
  214. package/dest/transport/browser/message_port_socket.d.ts +1 -1
  215. package/dest/transport/browser/message_port_socket.d.ts.map +1 -1
  216. package/dest/transport/browser/message_port_socket.js +26 -30
  217. package/dest/transport/browser/shared_worker_connector.d.ts +1 -1
  218. package/dest/transport/browser/shared_worker_connector.d.ts.map +1 -1
  219. package/dest/transport/browser/shared_worker_connector.js +8 -10
  220. package/dest/transport/browser/shared_worker_listener.d.ts +1 -1
  221. package/dest/transport/browser/shared_worker_listener.d.ts.map +1 -1
  222. package/dest/transport/browser/shared_worker_listener.js +13 -17
  223. package/dest/transport/browser/worker_connector.d.ts +1 -1
  224. package/dest/transport/browser/worker_connector.d.ts.map +1 -1
  225. package/dest/transport/browser/worker_connector.js +12 -12
  226. package/dest/transport/browser/worker_listener.d.ts +1 -1
  227. package/dest/transport/browser/worker_listener.d.ts.map +1 -1
  228. package/dest/transport/browser/worker_listener.js +13 -17
  229. package/dest/transport/dispatch/create_dispatch_fn.js +2 -4
  230. package/dest/transport/dispatch/create_dispatch_proxy.d.ts +2 -2
  231. package/dest/transport/dispatch/create_dispatch_proxy.d.ts.map +1 -1
  232. package/dest/transport/dispatch/create_dispatch_proxy.js +16 -13
  233. package/dest/transport/dispatch/messages.js +4 -3
  234. package/dest/transport/index.js +0 -1
  235. package/dest/transport/interface/connector.d.ts +1 -1
  236. package/dest/transport/interface/connector.d.ts.map +1 -1
  237. package/dest/transport/interface/connector.js +3 -2
  238. package/dest/transport/interface/listener.d.ts +1 -1
  239. package/dest/transport/interface/listener.d.ts.map +1 -1
  240. package/dest/transport/interface/listener.js +4 -2
  241. package/dest/transport/interface/socket.js +7 -2
  242. package/dest/transport/interface/transferable.js +7 -9
  243. package/dest/transport/node/index.js +0 -1
  244. package/dest/transport/node/node_connector.d.ts +2 -2
  245. package/dest/transport/node/node_connector.d.ts.map +1 -1
  246. package/dest/transport/node/node_connector.js +9 -11
  247. package/dest/transport/node/node_connector_socket.d.ts +2 -2
  248. package/dest/transport/node/node_connector_socket.d.ts.map +1 -1
  249. package/dest/transport/node/node_connector_socket.js +21 -25
  250. package/dest/transport/node/node_listener.d.ts +1 -1
  251. package/dest/transport/node/node_listener.d.ts.map +1 -1
  252. package/dest/transport/node/node_listener.js +11 -15
  253. package/dest/transport/node/node_listener_socket.d.ts +2 -2
  254. package/dest/transport/node/node_listener_socket.d.ts.map +1 -1
  255. package/dest/transport/node/node_listener_socket.js +23 -27
  256. package/dest/transport/transport_client.d.ts +1 -1
  257. package/dest/transport/transport_client.d.ts.map +1 -1
  258. package/dest/transport/transport_client.js +47 -46
  259. package/dest/transport/transport_server.d.ts +1 -1
  260. package/dest/transport/transport_server.d.ts.map +1 -1
  261. package/dest/transport/transport_server.js +68 -55
  262. package/dest/trees/hasher.d.ts +39 -0
  263. package/dest/trees/hasher.d.ts.map +1 -0
  264. package/dest/trees/hasher.js +5 -0
  265. package/dest/trees/index.d.ts +8 -56
  266. package/dest/trees/index.d.ts.map +1 -1
  267. package/dest/trees/index.js +8 -1
  268. package/dest/trees/indexed_merkle_tree.d.ts +13 -0
  269. package/dest/trees/indexed_merkle_tree.d.ts.map +1 -0
  270. package/dest/trees/indexed_merkle_tree.js +27 -0
  271. package/dest/trees/indexed_merkle_tree_calculator.d.ts +23 -0
  272. package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -0
  273. package/dest/trees/indexed_merkle_tree_calculator.js +83 -0
  274. package/dest/trees/indexed_tree_leaf.d.ts +57 -0
  275. package/dest/trees/indexed_tree_leaf.d.ts.map +1 -0
  276. package/dest/trees/indexed_tree_leaf.js +5 -0
  277. package/dest/trees/membership_witness.d.ts +62 -0
  278. package/dest/trees/membership_witness.d.ts.map +1 -0
  279. package/dest/trees/membership_witness.js +70 -0
  280. package/dest/trees/merkle_tree.d.ts +18 -0
  281. package/dest/trees/merkle_tree.d.ts.map +1 -0
  282. package/dest/trees/merkle_tree.js +58 -0
  283. package/dest/trees/merkle_tree_calculator.d.ts +16 -0
  284. package/dest/trees/merkle_tree_calculator.d.ts.map +1 -0
  285. package/dest/trees/merkle_tree_calculator.js +61 -0
  286. package/dest/trees/sibling_path.d.ts +132 -0
  287. package/dest/trees/sibling_path.d.ts.map +1 -0
  288. package/dest/trees/sibling_path.js +144 -0
  289. package/dest/trees/unbalanced_merkle_tree.d.ts +1 -1
  290. package/dest/trees/unbalanced_merkle_tree.d.ts.map +1 -1
  291. package/dest/trees/unbalanced_merkle_tree.js +28 -18
  292. package/dest/trees/unbalanced_tree_store.js +43 -29
  293. package/dest/types/index.js +1 -3
  294. package/dest/url/index.js +4 -8
  295. package/dest/validation/index.js +2 -5
  296. package/dest/wasm/empty_wasi_sdk.js +142 -160
  297. package/dest/wasm/index.d.ts +1 -1
  298. package/dest/wasm/index.d.ts.map +1 -1
  299. package/dest/wasm/index.js +0 -1
  300. package/dest/wasm/wasm_module.js +80 -90
  301. package/dest/worker/browser/index.js +0 -1
  302. package/dest/worker/browser/start_web_module.d.ts +1 -1
  303. package/dest/worker/browser/start_web_module.d.ts.map +1 -1
  304. package/dest/worker/browser/start_web_module.js +9 -5
  305. package/dest/worker/browser/web_data_store.d.ts +1 -1
  306. package/dest/worker/browser/web_data_store.d.ts.map +1 -1
  307. package/dest/worker/browser/web_data_store.js +12 -15
  308. package/dest/worker/browser/web_worker.d.ts +1 -1
  309. package/dest/worker/browser/web_worker.d.ts.map +1 -1
  310. package/dest/worker/browser/web_worker.js +6 -5
  311. package/dest/worker/data_store.js +3 -2
  312. package/dest/worker/index.d.ts +1 -1
  313. package/dest/worker/index.d.ts.map +1 -1
  314. package/dest/worker/index.js +0 -1
  315. package/dest/worker/node/index.js +0 -1
  316. package/dest/worker/node/node_data_store.d.ts +1 -1
  317. package/dest/worker/node/node_data_store.d.ts.map +1 -1
  318. package/dest/worker/node/node_data_store.js +4 -5
  319. package/dest/worker/node/node_worker.d.ts +1 -1
  320. package/dest/worker/node/node_worker.d.ts.map +1 -1
  321. package/dest/worker/node/node_worker.js +6 -5
  322. package/dest/worker/node/start_node_module.d.ts +1 -1
  323. package/dest/worker/node/start_node_module.d.ts.map +1 -1
  324. package/dest/worker/node/start_node_module.js +9 -5
  325. package/dest/worker/wasm_worker.d.ts +2 -2
  326. package/dest/worker/wasm_worker.d.ts.map +1 -1
  327. package/dest/worker/wasm_worker.js +3 -2
  328. package/dest/worker/worker_pool.d.ts +1 -1
  329. package/dest/worker/worker_pool.d.ts.map +1 -1
  330. package/dest/worker/worker_pool.js +32 -43
  331. package/package.json +5 -5
  332. package/src/array/array.ts +1 -1
  333. package/src/buffer/buffer32.ts +1 -1
  334. package/src/collection/array.ts +1 -1
  335. package/src/config/env_var.ts +7 -5
  336. package/src/config/index.ts +1 -1
  337. package/src/crypto/aes128/index.ts +59 -0
  338. package/src/crypto/ecdsa/index.ts +70 -0
  339. package/src/crypto/ecdsa/signature.ts +100 -0
  340. package/src/crypto/grumpkin/index.ts +97 -0
  341. package/src/crypto/index.ts +6 -0
  342. package/src/crypto/keys/index.ts +1 -1
  343. package/src/crypto/pedersen/pedersen.wasm.ts +3 -3
  344. package/src/crypto/poseidon/index.ts +5 -5
  345. package/src/crypto/schnorr/index.ts +55 -0
  346. package/src/crypto/schnorr/signature.ts +116 -0
  347. package/src/crypto/secp256k1/index.ts +57 -0
  348. package/src/crypto/secp256k1-signer/secp256k1_signer.ts +2 -2
  349. package/src/crypto/serialize.ts +85 -0
  350. package/src/crypto/signature/index.ts +17 -0
  351. package/src/crypto/sync/index.ts +1 -1
  352. package/src/fields/coordinate.ts +1 -1
  353. package/src/fields/fields.ts +2 -1
  354. package/src/fs/run_in_dir.ts +8 -1
  355. package/src/index.ts +0 -2
  356. package/src/json-rpc/client/undici.ts +1 -1
  357. package/src/json-rpc/convert.ts +1 -1
  358. package/src/json-rpc/server/safe_json_rpc_server.ts +1 -1
  359. package/src/json-rpc/test/integration.ts +1 -1
  360. package/src/log/console.ts +1 -1
  361. package/src/log/debug.ts +1 -1
  362. package/src/log/gcloud-logger-config.ts +1 -1
  363. package/src/log/index.ts +1 -0
  364. package/src/log/libp2p_logger.ts +67 -0
  365. package/src/log/pino-logger.ts +16 -16
  366. package/src/mutex/index.ts +1 -1
  367. package/src/promise/running-promise.ts +24 -5
  368. package/src/queue/fifo_memory_queue.ts +1 -1
  369. package/src/schemas/api.ts +2 -2
  370. package/src/schemas/index.ts +1 -1
  371. package/src/schemas/schemas.ts +2 -26
  372. package/src/schemas/types.ts +1 -1
  373. package/src/schemas/utils.ts +1 -1
  374. package/src/serialize/buffer_reader.ts +1 -1
  375. package/src/serialize/field_reader.ts +1 -1
  376. package/src/serialize/free_funcs.ts +1 -1
  377. package/src/testing/snapshot_serializer.ts +1 -1
  378. package/src/transport/browser/message_port_socket.ts +1 -1
  379. package/src/transport/browser/shared_worker_connector.ts +1 -1
  380. package/src/transport/browser/shared_worker_listener.ts +1 -1
  381. package/src/transport/browser/worker_connector.ts +1 -1
  382. package/src/transport/browser/worker_listener.ts +1 -1
  383. package/src/transport/dispatch/create_dispatch_proxy.ts +2 -2
  384. package/src/transport/interface/connector.ts +1 -1
  385. package/src/transport/interface/listener.ts +1 -1
  386. package/src/transport/node/node_connector.ts +2 -2
  387. package/src/transport/node/node_connector_socket.ts +2 -2
  388. package/src/transport/node/node_listener.ts +1 -1
  389. package/src/transport/node/node_listener_socket.ts +2 -2
  390. package/src/transport/transport_client.ts +2 -2
  391. package/src/transport/transport_server.ts +3 -3
  392. package/src/trees/hasher.ts +39 -0
  393. package/src/trees/index.ts +8 -57
  394. package/src/trees/indexed_merkle_tree.ts +36 -0
  395. package/src/trees/indexed_merkle_tree_calculator.ts +94 -0
  396. package/src/trees/indexed_tree_leaf.ts +56 -0
  397. package/src/trees/membership_witness.ts +99 -0
  398. package/src/trees/merkle_tree.ts +72 -0
  399. package/src/trees/merkle_tree_calculator.ts +67 -0
  400. package/src/trees/sibling_path.ts +183 -0
  401. package/src/trees/unbalanced_merkle_tree.ts +2 -2
  402. package/src/wasm/index.ts +1 -1
  403. package/src/worker/browser/start_web_module.ts +1 -1
  404. package/src/worker/browser/web_data_store.ts +1 -1
  405. package/src/worker/browser/web_worker.ts +1 -1
  406. package/src/worker/index.ts +1 -1
  407. package/src/worker/node/node_data_store.ts +1 -1
  408. package/src/worker/node/node_worker.ts +1 -1
  409. package/src/worker/node/start_node_module.ts +1 -1
  410. package/src/worker/wasm_worker.ts +2 -2
  411. package/src/worker/worker_pool.ts +1 -1
  412. package/dest/abi/abi.d.ts +0 -853
  413. package/dest/abi/abi.d.ts.map +0 -1
  414. package/dest/abi/abi.js +0 -214
  415. package/dest/abi/buffer.d.ts +0 -18
  416. package/dest/abi/buffer.d.ts.map +0 -1
  417. package/dest/abi/buffer.js +0 -34
  418. package/dest/abi/decoder.d.ts +0 -58
  419. package/dest/abi/decoder.d.ts.map +0 -1
  420. package/dest/abi/decoder.js +0 -180
  421. package/dest/abi/encoder.d.ts +0 -16
  422. package/dest/abi/encoder.d.ts.map +0 -1
  423. package/dest/abi/encoder.js +0 -174
  424. package/dest/abi/event_selector.d.ts +0 -52
  425. package/dest/abi/event_selector.d.ts.map +0 -1
  426. package/dest/abi/event_selector.js +0 -76
  427. package/dest/abi/function_selector.d.ts +0 -65
  428. package/dest/abi/function_selector.d.ts.map +0 -1
  429. package/dest/abi/function_selector.js +0 -92
  430. package/dest/abi/index.d.ts +0 -10
  431. package/dest/abi/index.d.ts.map +0 -1
  432. package/dest/abi/index.js +0 -10
  433. package/dest/abi/note_selector.d.ts +0 -42
  434. package/dest/abi/note_selector.d.ts.map +0 -1
  435. package/dest/abi/note_selector.js +0 -63
  436. package/dest/abi/selector.d.ts +0 -42
  437. package/dest/abi/selector.d.ts.map +0 -1
  438. package/dest/abi/selector.js +0 -57
  439. package/dest/abi/u128.d.ts +0 -13
  440. package/dest/abi/u128.d.ts.map +0 -1
  441. package/dest/abi/u128.js +0 -58
  442. package/dest/abi/utils.d.ts +0 -44
  443. package/dest/abi/utils.d.ts.map +0 -1
  444. package/dest/abi/utils.js +0 -72
  445. package/dest/aztec-address/index.d.ts +0 -57
  446. package/dest/aztec-address/index.d.ts.map +0 -1
  447. package/dest/aztec-address/index.js +0 -114
  448. package/src/abi/abi.ts +0 -504
  449. package/src/abi/buffer.ts +0 -36
  450. package/src/abi/decoder.ts +0 -195
  451. package/src/abi/encoder.ts +0 -170
  452. package/src/abi/event_selector.ts +0 -92
  453. package/src/abi/function_selector.ts +0 -124
  454. package/src/abi/index.ts +0 -9
  455. package/src/abi/note_selector.ts +0 -78
  456. package/src/abi/selector.ts +0 -64
  457. package/src/abi/u128.ts +0 -71
  458. package/src/abi/utils.ts +0 -86
  459. package/src/aztec-address/index.ts +0 -146
@@ -1,195 +0,0 @@
1
- import { AztecAddress } from '../aztec-address/index.js';
2
- import { Fr } from '../fields/index.js';
3
- import { type ABIParameter, type ABIVariable, type AbiType } from './abi.js';
4
- import { U128 } from './u128.js';
5
- import { isAztecAddressStruct, isU128Struct, parseSignedInt } from './utils.js';
6
-
7
- /**
8
- * The type of our decoded ABI.
9
- */
10
- export type AbiDecoded = bigint | boolean | AztecAddress | AbiDecoded[] | { [key: string]: AbiDecoded };
11
-
12
- /**
13
- * Decodes values using a provided ABI.
14
- */
15
- class AbiDecoder {
16
- constructor(private types: AbiType[], private flattened: Fr[]) {}
17
-
18
- /**
19
- * Decodes a single return value from field to the given type.
20
- * @param abiType - The type of the return value.
21
- * @returns The decoded return value.
22
- */
23
- private decodeNext(abiType: AbiType): AbiDecoded {
24
- switch (abiType.kind) {
25
- case 'field':
26
- return this.getNextField().toBigInt();
27
- case 'integer': {
28
- const nextField = this.getNextField();
29
-
30
- if (abiType.sign === 'signed') {
31
- // We parse the buffer using 2's complement
32
- return parseSignedInt(nextField.toBuffer(), abiType.width);
33
- }
34
-
35
- return nextField.toBigInt();
36
- }
37
- case 'boolean':
38
- return !this.getNextField().isZero();
39
- case 'array': {
40
- const array = [];
41
- for (let i = 0; i < abiType.length; i += 1) {
42
- array.push(this.decodeNext(abiType.type));
43
- }
44
- return array;
45
- }
46
- case 'struct': {
47
- if (isU128Struct(abiType)) {
48
- const fields = [
49
- new Fr(this.decodeNext({ kind: 'field' }) as bigint),
50
- new Fr(this.decodeNext({ kind: 'field' }) as bigint),
51
- ];
52
- return U128.fromFields(fields).toInteger();
53
- }
54
-
55
- const struct: { [key: string]: AbiDecoded } = {};
56
- if (isAztecAddressStruct(abiType)) {
57
- return new AztecAddress(this.getNextField().toBuffer());
58
- }
59
-
60
- for (const field of abiType.fields) {
61
- struct[field.name] = this.decodeNext(field.type);
62
- }
63
- return struct;
64
- }
65
- case 'string': {
66
- const array = [];
67
- for (let i = 0; i < abiType.length; i += 1) {
68
- array.push(this.getNextField().toBigInt());
69
- }
70
- return array;
71
- }
72
- case 'tuple': {
73
- const array = [];
74
- for (const tupleAbiType of abiType.fields) {
75
- array.push(this.decodeNext(tupleAbiType));
76
- }
77
- return array;
78
- }
79
- default:
80
- throw new Error(`Unsupported type: ${abiType}`);
81
- }
82
- }
83
-
84
- /**
85
- * Gets the next field in the flattened buffer.
86
- * @returns The next field in the flattened buffer.
87
- */
88
- private getNextField(): Fr {
89
- const field = this.flattened.shift();
90
- if (!field) {
91
- throw new Error('Not enough return values');
92
- }
93
- return field;
94
- }
95
-
96
- /**
97
- * Decodes all the values for the given ABI.
98
- * The decided value can be simple types, structs or arrays
99
- * @returns The decoded return values.
100
- */
101
- public decode(): AbiDecoded {
102
- if (this.types.length > 1) {
103
- throw new Error('Multiple types not supported');
104
- }
105
- if (this.types.length === 0) {
106
- return [];
107
- }
108
- return this.decodeNext(this.types[0]);
109
- }
110
- }
111
-
112
- /**
113
- * Decodes values in a flattened Field array using a provided ABI.
114
- * @param abi - The ABI to use as reference.
115
- * @param buffer - The flattened Field array to decode.
116
- * @returns
117
- */
118
- export function decodeFromAbi(typ: AbiType[], buffer: Fr[]) {
119
- return new AbiDecoder(typ, buffer.slice()).decode();
120
- }
121
-
122
- /**
123
- * Decodes the signature of a function from the name and parameters.
124
- */
125
- export class FunctionSignatureDecoder {
126
- private separator: string;
127
- constructor(private name: string, private parameters: ABIParameter[], private includeNames = false) {
128
- this.separator = includeNames ? ', ' : ',';
129
- }
130
-
131
- /**
132
- * Decodes a single function parameter type for the function signature.
133
- * @param param - The parameter type to decode.
134
- * @returns A string representing the parameter type.
135
- */
136
- private getParameterType(param: AbiType): string {
137
- switch (param.kind) {
138
- case 'field':
139
- return 'Field';
140
- case 'integer':
141
- if (param.sign === 'signed') {
142
- throw new Error('Unsupported type: signed integer');
143
- }
144
- return `u${param.width}`;
145
- case 'boolean':
146
- return 'bool';
147
- case 'array':
148
- return `[${this.getParameterType(param.type)};${param.length}]`;
149
- case 'string':
150
- return `str<${param.length}>`;
151
- case 'struct':
152
- return `(${param.fields.map(field => `${this.decodeParameter(field)}`).join(this.separator)})`;
153
- default:
154
- throw new Error(`Unsupported type: ${param}`);
155
- }
156
- }
157
-
158
- /**
159
- * Decodes a single function parameter for the function signature.
160
- * @param param - The parameter to decode.
161
- * @returns A string representing the parameter type and optionally its name.
162
- */
163
- private decodeParameter(param: ABIVariable): string {
164
- const type = this.getParameterType(param.type);
165
- return this.includeNames ? `${param.name}: ${type}` : type;
166
- }
167
-
168
- /**
169
- * Decodes all the parameters and build the function signature
170
- * @returns The function signature.
171
- */
172
- public decode(): string {
173
- return `${this.name}(${this.parameters.map(param => this.decodeParameter(param)).join(this.separator)})`;
174
- }
175
- }
176
-
177
- /**
178
- * Decodes a function signature from the name and parameters.
179
- * @param name - The name of the function.
180
- * @param parameters - The parameters of the function.
181
- * @returns - The function signature.
182
- */
183
- export function decodeFunctionSignature(name: string, parameters: ABIParameter[]) {
184
- return new FunctionSignatureDecoder(name, parameters).decode();
185
- }
186
-
187
- /**
188
- * Decodes a function signature from the name and parameters including parameter names.
189
- * @param name - The name of the function.
190
- * @param parameters - The parameters of the function.
191
- * @returns - The user-friendly function signature.
192
- */
193
- export function decodeFunctionSignatureWithParameterNames(name: string, parameters: ABIParameter[]) {
194
- return new FunctionSignatureDecoder(name, parameters, true).decode();
195
- }
@@ -1,170 +0,0 @@
1
- import { Fr } from '../fields/index.js';
2
- import { type AbiType, type FunctionAbi } from './abi.js';
3
- import { U128 } from './u128.js';
4
- import { isAddressStruct, isFunctionSelectorStruct, isU128Struct, isWrappedFieldStruct } from './utils.js';
5
-
6
- /**
7
- * Encodes arguments for a function call.
8
- * Missing support for integer and string.
9
- */
10
- class ArgumentEncoder {
11
- private flattened: Fr[] = [];
12
-
13
- constructor(private abi: FunctionAbi, private args: any[]) {}
14
-
15
- static typeSize(abiType: AbiType): number {
16
- switch (abiType.kind) {
17
- case 'field':
18
- case 'boolean':
19
- case 'integer':
20
- return 1;
21
- case 'string':
22
- return abiType.length;
23
- case 'array':
24
- return abiType.length * ArgumentEncoder.typeSize(abiType.type);
25
- case 'struct':
26
- return abiType.fields.reduce((acc, field) => acc + ArgumentEncoder.typeSize(field.type), 0);
27
- case 'tuple':
28
- return abiType.fields.reduce((acc, field) => acc + ArgumentEncoder.typeSize(field), 0);
29
- default: {
30
- const exhaustiveCheck: never = abiType;
31
- throw new Error(`Unhandled abi type: ${exhaustiveCheck}`);
32
- }
33
- }
34
- }
35
-
36
- /**
37
- * Encodes a single argument from the given type to field.
38
- * @param abiType - The abi type of the argument.
39
- * @param arg - The value to encode.
40
- * @param name - Name.
41
- */
42
- private encodeArgument(abiType: AbiType, arg: any, name?: string) {
43
- if (arg === undefined || arg == null) {
44
- throw new Error(`Undefined argument ${name ?? 'unnamed'} of type ${abiType.kind}`);
45
- }
46
- switch (abiType.kind) {
47
- case 'field':
48
- if (typeof arg === 'number') {
49
- this.flattened.push(new Fr(BigInt(arg)));
50
- } else if (typeof arg === 'bigint') {
51
- this.flattened.push(new Fr(arg));
52
- } else if (typeof arg === 'string') {
53
- this.flattened.push(Fr.fromString(arg));
54
- } else if (typeof arg === 'boolean') {
55
- this.flattened.push(new Fr(arg ? 1n : 0n));
56
- } else if (typeof arg === 'object') {
57
- if (Buffer.isBuffer(arg)) {
58
- this.flattened.push(Fr.fromBuffer(arg));
59
- } else if (typeof arg.toField === 'function') {
60
- this.flattened.push(arg.toField());
61
- } else if (typeof arg.value === 'string') {
62
- this.flattened.push(Fr.fromHexString(arg.value));
63
- } else {
64
- throw new Error(`Argument for ${name} cannot be serialized to a field`);
65
- }
66
- } else {
67
- throw new Error(`Invalid argument "${arg}" of type ${abiType.kind}`);
68
- }
69
- break;
70
- case 'boolean':
71
- this.flattened.push(new Fr(arg ? 1n : 0n));
72
- break;
73
- case 'array':
74
- for (let i = 0; i < abiType.length; i += 1) {
75
- this.encodeArgument(abiType.type, arg[i], `${name}[${i}]`);
76
- }
77
- break;
78
- case 'string':
79
- for (let i = 0; i < abiType.length; i += 1) {
80
- // If the string is shorter than the defined length, pad it with 0s.
81
- const toInsert = i < arg.length ? BigInt((arg as string).charCodeAt(i)) : 0n;
82
- this.flattened.push(new Fr(toInsert));
83
- }
84
- break;
85
- case 'struct': {
86
- // If the type defines the encoding to noir, we use it
87
- if (arg.encodeToNoir !== undefined) {
88
- this.flattened.push(...arg.encodeToNoir());
89
- break;
90
- }
91
-
92
- // If the abi expects a struct like { address: Field } and the supplied arg does not have
93
- // an address field in it, we try to encode it as if it were a field directly.
94
- const isAddress = isAddressStruct(abiType);
95
- if (isAddress && typeof arg.address === 'undefined' && typeof arg.inner === 'undefined') {
96
- this.encodeArgument({ kind: 'field' }, arg, `${name}.inner`);
97
- break;
98
- }
99
- // Or if the supplied argument does have an address field in it, like a CompleteAddress,
100
- // we encode it directly as a field.
101
- if (isAddress && typeof arg.address !== 'undefined') {
102
- this.encodeArgument({ kind: 'field' }, arg.address, `${name}.address`);
103
- break;
104
- }
105
- if (isFunctionSelectorStruct(abiType)) {
106
- this.encodeArgument({ kind: 'integer', sign: 'unsigned', width: 32 }, arg.value ?? arg, `${name}.inner`);
107
- break;
108
- }
109
- if (isU128Struct(abiType)) {
110
- // U128 struct has low and high limbs - so we first convert the value to the 2 limbs and then we encode them
111
- const value = new U128(arg);
112
- const limbs = value.toFields();
113
- const limbNames = U128.getLimbNames();
114
- this.encodeArgument({ kind: 'field' }, limbs[0], `${name}.${limbNames[0]}`);
115
- this.encodeArgument({ kind: 'field' }, limbs[1], `${name}.${limbNames[1]}`);
116
- break;
117
- }
118
- if (isWrappedFieldStruct(abiType)) {
119
- this.encodeArgument({ kind: 'field' }, arg.inner ?? arg, `${name}.inner`);
120
- break;
121
- }
122
- for (const field of abiType.fields) {
123
- this.encodeArgument(field.type, arg[field.name], `${name}.${field.name}`);
124
- }
125
- break;
126
- }
127
- case 'integer':
128
- if (typeof arg === 'string') {
129
- const value = BigInt(arg);
130
- this.flattened.push(new Fr(value));
131
- } else {
132
- this.flattened.push(new Fr(arg));
133
- }
134
- break;
135
- default:
136
- throw new Error(`Unsupported type: ${abiType}`);
137
- }
138
- }
139
-
140
- /**
141
- * Encodes all the arguments for the given function ABI.
142
- * @returns The encoded arguments.
143
- */
144
- public encode() {
145
- for (let i = 0; i < this.abi.parameters.length; i += 1) {
146
- const parameterAbi = this.abi.parameters[i];
147
- this.encodeArgument(parameterAbi.type, this.args[i], parameterAbi.name);
148
- }
149
- return this.flattened;
150
- }
151
- }
152
-
153
- /**
154
- * Encodes all the arguments for a function call.
155
- * @param abi - The function ABI entry.
156
- * @param args - The arguments to encode.
157
- * @returns The encoded arguments.
158
- */
159
- export function encodeArguments(abi: FunctionAbi, args: any[]) {
160
- return new ArgumentEncoder(abi, args).encode();
161
- }
162
-
163
- /**
164
- * Returns the size of the arguments for a function ABI.
165
- * @param abi - The function ABI entry.
166
- * @returns The size of the arguments.
167
- */
168
- export function countArgumentsSize(abi: FunctionAbi) {
169
- return abi.parameters.reduce((acc, parameter) => acc + ArgumentEncoder.typeSize(parameter.type), 0);
170
- }
@@ -1,92 +0,0 @@
1
- import { fromHex, toBigIntBE } from '../bigint-buffer/index.js';
2
- import { poseidon2HashBytes, randomBytes } from '../crypto/index.js';
3
- import { type Fr } from '../fields/fields.js';
4
- import { hexSchemaFor } from '../schemas/utils.js';
5
- import { BufferReader } from '../serialize/buffer_reader.js';
6
- import { Selector } from './selector.js';
7
-
8
- /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */
9
-
10
- /** Event selector branding */
11
- export interface EventSelector {
12
- /** Brand. */
13
- _branding: 'EventSelector';
14
- }
15
-
16
- /** An event selector is the first 4 bytes of the hash of an event signature. */
17
- export class EventSelector extends Selector {
18
- /**
19
- * Deserializes from a buffer or reader, corresponding to a write in cpp.
20
- * @param buffer - Buffer or BufferReader to read from.
21
- * @returns The Selector.
22
- */
23
- static fromBuffer(buffer: Buffer | BufferReader) {
24
- const reader = BufferReader.asReader(buffer);
25
- const value = Number(toBigIntBE(reader.readBytes(Selector.SIZE)));
26
- return new EventSelector(value);
27
- }
28
-
29
- /**
30
- * Converts a field to selector.
31
- * @param fr - The field to convert.
32
- * @returns The selector.
33
- */
34
- static fromField(fr: Fr) {
35
- return new EventSelector(Number(fr.toBigInt()));
36
- }
37
-
38
- /**
39
- * Creates a selector from a signature.
40
- * @param signature - Signature to generate the selector for (e.g. "transfer(field,field)").
41
- * @returns selector.
42
- */
43
- static async fromSignature(signature: string) {
44
- // throw if signature contains whitespace
45
- if (/\s/.test(signature)) {
46
- throw new Error('Signature cannot contain whitespace');
47
- }
48
- const hash = await poseidon2HashBytes(Buffer.from(signature));
49
- // We take the last Selector.SIZE big endian bytes
50
- const bytes = hash.toBuffer().slice(-Selector.SIZE);
51
- return EventSelector.fromBuffer(bytes);
52
- }
53
-
54
- /**
55
- * Create a Selector instance from a hex-encoded string.
56
- *
57
- * @param selector - The hex-encoded string representing the Selector.
58
- * @returns An Selector instance.
59
- * @throws If the selector length is invalid.
60
- */
61
- static fromString(selector: string) {
62
- const buf = fromHex(selector);
63
- if (buf.length !== Selector.SIZE) {
64
- throw new Error(`Invalid EventSelector length ${buf.length} (expected ${Selector.SIZE}).`);
65
- }
66
- return EventSelector.fromBuffer(buf);
67
- }
68
-
69
- /**
70
- * Creates an empty selector.
71
- * @returns An empty selector.
72
- */
73
- static empty() {
74
- return new EventSelector(0);
75
- }
76
-
77
- /**
78
- * Creates a random selector.
79
- * @returns A random selector.
80
- */
81
- static random() {
82
- return EventSelector.fromBuffer(randomBytes(Selector.SIZE));
83
- }
84
-
85
- toJSON() {
86
- return this.toString();
87
- }
88
-
89
- static get schema() {
90
- return hexSchemaFor(EventSelector);
91
- }
92
- }
@@ -1,124 +0,0 @@
1
- import { fromHex, toBigIntBE } from '../bigint-buffer/index.js';
2
- import { poseidon2HashBytes, randomBytes } from '../crypto/index.js';
3
- import { type Fr } from '../fields/fields.js';
4
- import { hexSchemaFor } from '../schemas/utils.js';
5
- import { BufferReader } from '../serialize/buffer_reader.js';
6
- import { FieldReader } from '../serialize/field_reader.js';
7
- import { TypeRegistry } from '../serialize/type_registry.js';
8
- import { type ABIParameter } from './abi.js';
9
- import { decodeFunctionSignature } from './decoder.js';
10
- import { Selector } from './selector.js';
11
-
12
- /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */
13
-
14
- /** Function selector branding */
15
- export interface FunctionSelector {
16
- /** Brand. */
17
- _branding: 'FunctionSelector';
18
- }
19
-
20
- /** A function selector is the first 4 bytes of the hash of a function signature. */
21
- export class FunctionSelector extends Selector {
22
- /**
23
- * Deserializes from a buffer or reader, corresponding to a write in cpp.
24
- * @param buffer - Buffer or BufferReader to read from.
25
- * @returns The Selector.
26
- */
27
- static fromBuffer(buffer: Buffer | BufferReader) {
28
- const reader = BufferReader.asReader(buffer);
29
- const value = Number(toBigIntBE(reader.readBytes(Selector.SIZE)));
30
- return new FunctionSelector(value);
31
- }
32
-
33
- /**
34
- * Converts a field to selector.
35
- * @param fr - The field to convert.
36
- * @returns The selector.
37
- */
38
- static fromField(fr: Fr) {
39
- return new FunctionSelector(Number(fr.toBigInt()));
40
- }
41
-
42
- static fromFields(fields: Fr[] | FieldReader) {
43
- const reader = FieldReader.asReader(fields);
44
- return FunctionSelector.fromField(reader.readField());
45
- }
46
-
47
- /**
48
- * Creates a selector from a signature.
49
- * @param signature - Signature to generate the selector for (e.g. "transfer(field,field)").
50
- * @returns selector.
51
- */
52
- static async fromSignature(signature: string) {
53
- // throw if signature contains whitespace
54
- if (/\s/.test(signature)) {
55
- throw new Error('Signature cannot contain whitespace');
56
- }
57
- const hash = await poseidon2HashBytes(Buffer.from(signature));
58
- // We take the last Selector.SIZE big endian bytes
59
- const bytes = hash.toBuffer().slice(-Selector.SIZE);
60
- return FunctionSelector.fromBuffer(bytes);
61
- }
62
-
63
- /**
64
- * Create a Selector instance from a hex-encoded string.
65
- *
66
- * @param selector - The hex-encoded string representing the Selector.
67
- * @returns An Selector instance.
68
- * @throws If the selector length is invalid.
69
- */
70
- static fromString(selector: string) {
71
- const buf = fromHex(selector);
72
- if (buf.length !== Selector.SIZE) {
73
- throw new Error(`Invalid FunctionSelector length ${buf.length} (expected ${Selector.SIZE}).`);
74
- }
75
- return FunctionSelector.fromBuffer(buf);
76
- }
77
-
78
- /**
79
- * Creates an empty selector.
80
- * @returns An empty selector.
81
- */
82
- static empty() {
83
- return new FunctionSelector(0);
84
- }
85
-
86
- /**
87
- * Creates a function selector for a given function name and parameters.
88
- * @param name - The name of the function.
89
- * @param parameters - An array of ABIParameter objects, each containing the type information of a function parameter.
90
- * @returns A Buffer containing the 4-byte selector.
91
- */
92
- static fromNameAndParameters(args: { name: string; parameters: ABIParameter[] }): Promise<FunctionSelector>;
93
- static fromNameAndParameters(name: string, parameters: ABIParameter[]): Promise<FunctionSelector>;
94
- static async fromNameAndParameters(
95
- nameOrArgs: string | { name: string; parameters: ABIParameter[] },
96
- maybeParameters?: ABIParameter[],
97
- ): Promise<FunctionSelector> {
98
- const { name, parameters } =
99
- typeof nameOrArgs === 'string' ? { name: nameOrArgs, parameters: maybeParameters! } : nameOrArgs;
100
- const signature = decodeFunctionSignature(name, parameters);
101
- const selector = await this.fromSignature(signature);
102
- // If using the debug logger here it kill the typing in the `server_world_state_synchronizer` and jest tests.
103
- // console.log(`selector for ${signature} is ${selector}`);
104
- return selector;
105
- }
106
-
107
- /**
108
- * Creates a random instance.
109
- */
110
- static random() {
111
- return FunctionSelector.fromBuffer(randomBytes(Selector.SIZE));
112
- }
113
-
114
- toJSON() {
115
- return this.toString();
116
- }
117
-
118
- static get schema() {
119
- return hexSchemaFor(FunctionSelector);
120
- }
121
- }
122
-
123
- // For deserializing JSON.
124
- TypeRegistry.register('FunctionSelector', FunctionSelector);
package/src/abi/index.ts DELETED
@@ -1,9 +0,0 @@
1
- export * from './abi.js';
2
- export * from './buffer.js';
3
- export * from './decoder.js';
4
- export * from './encoder.js';
5
- export * from './event_selector.js';
6
- export * from './function_selector.js';
7
- export * from './note_selector.js';
8
- export * from './utils.js';
9
- export * from './u128.js';
@@ -1,78 +0,0 @@
1
- import { toBigIntBE } from '../bigint-buffer/index.js';
2
- import { randomInt } from '../crypto/index.js';
3
- import { Fr } from '../fields/fields.js';
4
- import { hexSchemaFor } from '../schemas/utils.js';
5
- import { BufferReader } from '../serialize/buffer_reader.js';
6
- import { TypeRegistry } from '../serialize/type_registry.js';
7
- import { Selector } from './selector.js';
8
-
9
- /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */
10
-
11
- /** Note selector branding */
12
- export interface NoteSelector {
13
- /** Brand. */
14
- _branding: 'NoteSelector';
15
- }
16
-
17
- /**
18
- * A note selector is a 7 bit long value that identifies a note type within a contract.
19
- * TODO(#10952): Encoding of note type id can be reduced to 7 bits.
20
- */
21
- export class NoteSelector extends Selector {
22
- /**
23
- * Deserializes from a buffer or reader, corresponding to a write in cpp.
24
- * @param buffer - Buffer or BufferReader to read from.
25
- * @returns The Selector.
26
- */
27
- static fromBuffer(buffer: Buffer | BufferReader) {
28
- const reader = BufferReader.asReader(buffer);
29
- const value = Number(toBigIntBE(reader.readBytes(Selector.SIZE)));
30
- if (value >= 1 << 7) {
31
- throw new Error(`Invalid note selector: ${value}`);
32
- }
33
- return new NoteSelector(value);
34
- }
35
-
36
- static fromString(buf: string) {
37
- const withoutPrefix = buf.replace(/^0x/i, '').slice(-8);
38
- const buffer = Buffer.from(withoutPrefix, 'hex');
39
- return NoteSelector.fromBuffer(buffer);
40
- }
41
-
42
- /**
43
- * Converts a field to selector.
44
- * @param fr - The field to convert.
45
- * @returns The selector.
46
- */
47
- static fromField(fr: Fr) {
48
- return new NoteSelector(Number(fr.toBigInt()));
49
- }
50
-
51
- /**
52
- * Creates an empty selector.
53
- * @returns An empty selector.
54
- */
55
- static empty() {
56
- return new NoteSelector(0);
57
- }
58
-
59
- /**
60
- * Creates a random selector.
61
- * @returns A random selector.
62
- */
63
- static random() {
64
- const value = randomInt(1 << 7);
65
- return NoteSelector.fromField(new Fr(value));
66
- }
67
-
68
- toJSON() {
69
- return this.toString();
70
- }
71
-
72
- static get schema() {
73
- return hexSchemaFor(NoteSelector);
74
- }
75
- }
76
-
77
- // For deserializing JSON.
78
- TypeRegistry.register('NoteSelector', NoteSelector);