@typeberry/lib 0.5.10 → 0.5.11-10b197e

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 (496) hide show
  1. package/README.md +2 -2
  2. package/bin/lib/examples/pvm-usage.test.js +2 -2
  3. package/package.json +1 -1
  4. package/packages/core/codec/descriptor.js +1 -1
  5. package/packages/core/codec/descriptors.js +7 -4
  6. package/packages/core/codec/encoder.d.ts +1 -1
  7. package/packages/core/codec/encoder.d.ts.map +1 -1
  8. package/packages/core/codec/encoder.js +3 -2
  9. package/packages/core/codec/index.test.js +1 -1
  10. package/packages/core/codec/skip.d.ts +2 -1
  11. package/packages/core/codec/skip.d.ts.map +1 -1
  12. package/packages/core/codec/skip.js +3 -0
  13. package/packages/core/codec/view.js +2 -2
  14. package/packages/core/collections/multi-map.d.ts +2 -1
  15. package/packages/core/collections/multi-map.d.ts.map +1 -1
  16. package/packages/core/collections/multi-map.js +3 -0
  17. package/packages/core/collections/multi-map.test.js +2 -2
  18. package/packages/core/concurrent/parent.js +4 -1
  19. package/packages/core/crypto/ed25519.d.ts +2 -5
  20. package/packages/core/crypto/ed25519.d.ts.map +1 -1
  21. package/packages/core/crypto/ed25519.js +4 -1
  22. package/packages/core/hash/hash.d.ts +4 -2
  23. package/packages/core/hash/hash.d.ts.map +1 -1
  24. package/packages/core/hash/hash.js +6 -1
  25. package/packages/core/networking/quic-network.d.ts +3 -2
  26. package/packages/core/networking/quic-network.d.ts.map +1 -1
  27. package/packages/core/networking/quic-network.js +3 -0
  28. package/packages/core/networking/quic-peer.d.ts +2 -1
  29. package/packages/core/networking/quic-peer.d.ts.map +1 -1
  30. package/packages/core/networking/quic-peer.js +5 -2
  31. package/packages/core/networking/quic-stream.d.ts +2 -1
  32. package/packages/core/networking/quic-stream.d.ts.map +1 -1
  33. package/packages/core/networking/quic-stream.js +3 -0
  34. package/packages/core/networking/setup.js +2 -2
  35. package/packages/core/pvm-host-calls/bin.js +2 -2
  36. package/packages/core/pvm-host-calls/ecalli-trace-logger.d.ts +5 -0
  37. package/packages/core/pvm-host-calls/ecalli-trace-logger.d.ts.map +1 -1
  38. package/packages/core/pvm-host-calls/ecalli-trace-logger.js +8 -1
  39. package/packages/core/pvm-host-calls/ecalli-trace-logger.test.js +1 -1
  40. package/packages/core/pvm-host-calls/host-call-memory.d.ts +2 -1
  41. package/packages/core/pvm-host-calls/host-call-memory.d.ts.map +1 -1
  42. package/packages/core/pvm-host-calls/host-call-memory.js +3 -0
  43. package/packages/core/pvm-host-calls/host-call-memory.test.js +1 -1
  44. package/packages/core/pvm-host-calls/host-call-registers.d.ts +5 -1
  45. package/packages/core/pvm-host-calls/host-call-registers.d.ts.map +1 -1
  46. package/packages/core/pvm-host-calls/host-call-registers.js +11 -1
  47. package/packages/core/pvm-host-calls/host-call-registers.test.js +2 -2
  48. package/packages/core/pvm-host-calls/host-calls-executor.d.ts +2 -1
  49. package/packages/core/pvm-host-calls/host-calls-executor.d.ts.map +1 -1
  50. package/packages/core/pvm-host-calls/host-calls-executor.js +5 -2
  51. package/packages/core/pvm-host-calls/host-calls.d.ts +4 -2
  52. package/packages/core/pvm-host-calls/host-calls.d.ts.map +1 -1
  53. package/packages/core/pvm-host-calls/host-calls.js +9 -4
  54. package/packages/core/pvm-host-calls/pvm-instance-manager.js +1 -1
  55. package/packages/core/pvm-interface/pvm.d.ts +2 -0
  56. package/packages/core/pvm-interface/pvm.d.ts.map +1 -1
  57. package/packages/core/pvm-interpreter/args-decoder/args-decoder.js +1 -1
  58. package/packages/core/pvm-interpreter/args-decoder/args-decoder.test.js +3 -3
  59. package/packages/core/pvm-interpreter/args-decoder/args-decoding-results.js +11 -11
  60. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.d.ts +2 -1
  61. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.d.ts.map +1 -1
  62. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.js +3 -0
  63. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.test.js +2 -2
  64. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.d.ts +2 -1
  65. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.d.ts.map +1 -1
  66. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.js +3 -0
  67. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.test.js +26 -26
  68. package/packages/core/pvm-interpreter/basic-blocks/basic-blocks.test.js +8 -8
  69. package/packages/core/pvm-interpreter/bin.js +1 -1
  70. package/packages/core/pvm-interpreter/debugger-adapter.d.ts +2 -1
  71. package/packages/core/pvm-interpreter/debugger-adapter.d.ts.map +1 -1
  72. package/packages/core/pvm-interpreter/debugger-adapter.js +6 -3
  73. package/packages/core/pvm-interpreter/gas.js +4 -1
  74. package/packages/core/pvm-interpreter/interpreter.d.ts +2 -1
  75. package/packages/core/pvm-interpreter/interpreter.d.ts.map +1 -1
  76. package/packages/core/pvm-interpreter/interpreter.js +19 -16
  77. package/packages/core/pvm-interpreter/memory/memory-builder.js +2 -2
  78. package/packages/core/pvm-interpreter/memory/memory-builder.test.js +7 -7
  79. package/packages/core/pvm-interpreter/memory/memory.d.ts +2 -1
  80. package/packages/core/pvm-interpreter/memory/memory.d.ts.map +1 -1
  81. package/packages/core/pvm-interpreter/memory/memory.js +4 -1
  82. package/packages/core/pvm-interpreter/memory/memory.test.js +31 -31
  83. package/packages/core/pvm-interpreter/memory/pages/readable-page.d.ts +2 -1
  84. package/packages/core/pvm-interpreter/memory/pages/readable-page.d.ts.map +1 -1
  85. package/packages/core/pvm-interpreter/memory/pages/readable-page.js +3 -0
  86. package/packages/core/pvm-interpreter/memory/pages/readable-page.test.js +3 -3
  87. package/packages/core/pvm-interpreter/memory/pages/writeable-page.d.ts +2 -1
  88. package/packages/core/pvm-interpreter/memory/pages/writeable-page.d.ts.map +1 -1
  89. package/packages/core/pvm-interpreter/memory/pages/writeable-page.js +3 -0
  90. package/packages/core/pvm-interpreter/memory/pages/writeable-page.test.js +4 -4
  91. package/packages/core/pvm-interpreter/ops/bit-ops.d.ts +2 -1
  92. package/packages/core/pvm-interpreter/ops/bit-ops.d.ts.map +1 -1
  93. package/packages/core/pvm-interpreter/ops/bit-ops.js +3 -0
  94. package/packages/core/pvm-interpreter/ops/bit-ops.test.js +3 -3
  95. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.d.ts +2 -1
  96. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.d.ts.map +1 -1
  97. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.js +3 -0
  98. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.test.js +5 -5
  99. package/packages/core/pvm-interpreter/ops/boolean-ops.d.ts +2 -1
  100. package/packages/core/pvm-interpreter/ops/boolean-ops.d.ts.map +1 -1
  101. package/packages/core/pvm-interpreter/ops/boolean-ops.js +3 -0
  102. package/packages/core/pvm-interpreter/ops/boolean-ops.test.js +3 -3
  103. package/packages/core/pvm-interpreter/ops/branch-ops.d.ts +2 -1
  104. package/packages/core/pvm-interpreter/ops/branch-ops.d.ts.map +1 -1
  105. package/packages/core/pvm-interpreter/ops/branch-ops.js +3 -0
  106. package/packages/core/pvm-interpreter/ops/branch-ops.test.js +4 -4
  107. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.d.ts +2 -1
  108. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.d.ts.map +1 -1
  109. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.js +3 -0
  110. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.test.js +5 -5
  111. package/packages/core/pvm-interpreter/ops/host-call-ops.d.ts +2 -1
  112. package/packages/core/pvm-interpreter/ops/host-call-ops.d.ts.map +1 -1
  113. package/packages/core/pvm-interpreter/ops/host-call-ops.js +3 -0
  114. package/packages/core/pvm-interpreter/ops/host-call-ops.test.js +2 -2
  115. package/packages/core/pvm-interpreter/ops/load-ops.d.ts +2 -1
  116. package/packages/core/pvm-interpreter/ops/load-ops.d.ts.map +1 -1
  117. package/packages/core/pvm-interpreter/ops/load-ops.js +3 -0
  118. package/packages/core/pvm-interpreter/ops/load-ops.test.js +10 -10
  119. package/packages/core/pvm-interpreter/ops/math-ops.d.ts +2 -1
  120. package/packages/core/pvm-interpreter/ops/math-ops.d.ts.map +1 -1
  121. package/packages/core/pvm-interpreter/ops/math-ops.js +3 -0
  122. package/packages/core/pvm-interpreter/ops/math-ops.test.js +3 -3
  123. package/packages/core/pvm-interpreter/ops/memory-ops.d.ts +2 -1
  124. package/packages/core/pvm-interpreter/ops/memory-ops.d.ts.map +1 -1
  125. package/packages/core/pvm-interpreter/ops/memory-ops.js +3 -0
  126. package/packages/core/pvm-interpreter/ops/memory-ops.test.js +3 -3
  127. package/packages/core/pvm-interpreter/ops/move-ops.d.ts +2 -1
  128. package/packages/core/pvm-interpreter/ops/move-ops.d.ts.map +1 -1
  129. package/packages/core/pvm-interpreter/ops/move-ops.js +3 -0
  130. package/packages/core/pvm-interpreter/ops/move-ops.test.js +3 -3
  131. package/packages/core/pvm-interpreter/ops/no-args-ops.d.ts +2 -1
  132. package/packages/core/pvm-interpreter/ops/no-args-ops.d.ts.map +1 -1
  133. package/packages/core/pvm-interpreter/ops/no-args-ops.js +3 -0
  134. package/packages/core/pvm-interpreter/ops/no-args-ops.test.js +2 -2
  135. package/packages/core/pvm-interpreter/ops/shift-ops.d.ts +2 -1
  136. package/packages/core/pvm-interpreter/ops/shift-ops.d.ts.map +1 -1
  137. package/packages/core/pvm-interpreter/ops/shift-ops.js +3 -0
  138. package/packages/core/pvm-interpreter/ops/shift-ops.test.js +3 -3
  139. package/packages/core/pvm-interpreter/ops/store-ops.d.ts +2 -1
  140. package/packages/core/pvm-interpreter/ops/store-ops.d.ts.map +1 -1
  141. package/packages/core/pvm-interpreter/ops/store-ops.js +3 -0
  142. package/packages/core/pvm-interpreter/ops/store-ops.test.js +7 -7
  143. package/packages/core/pvm-interpreter/ops-dispatchers/no-args-dispatcher.test.js +1 -1
  144. package/packages/core/pvm-interpreter/ops-dispatchers/one-imm-dispatcher.test.js +4 -4
  145. package/packages/core/pvm-interpreter/ops-dispatchers/one-offset-dispatcher.test.js +2 -2
  146. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-ext-imm-dispatcher.test.js +4 -4
  147. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-imm-dispatcher.test.js +7 -7
  148. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-imm-one-offset-dispatcher.test.js +10 -10
  149. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-two-imms-dispatcher.test.js +5 -5
  150. package/packages/core/pvm-interpreter/ops-dispatchers/three-regs-dispatcher.test.js +7 -7
  151. package/packages/core/pvm-interpreter/ops-dispatchers/two-imms-dispatcher.test.js +5 -5
  152. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-dispatcher.test.js +6 -6
  153. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-one-imm-dispatcher.test.js +11 -11
  154. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-one-offset-dispatcher.test.js +2 -2
  155. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-two-imms-dispatcher.test.js +14 -14
  156. package/packages/core/pvm-interpreter/program-decoder/jump-table.d.ts +5 -2
  157. package/packages/core/pvm-interpreter/program-decoder/jump-table.d.ts.map +1 -1
  158. package/packages/core/pvm-interpreter/program-decoder/jump-table.js +9 -4
  159. package/packages/core/pvm-interpreter/program-decoder/jump-table.test.js +6 -6
  160. package/packages/core/pvm-interpreter/program-decoder/mask.d.ts +2 -1
  161. package/packages/core/pvm-interpreter/program-decoder/mask.d.ts.map +1 -1
  162. package/packages/core/pvm-interpreter/program-decoder/mask.js +3 -0
  163. package/packages/core/pvm-interpreter/program-decoder/mask.test.js +10 -10
  164. package/packages/core/pvm-interpreter/program-decoder/program-decoder.d.ts +2 -1
  165. package/packages/core/pvm-interpreter/program-decoder/program-decoder.d.ts.map +1 -1
  166. package/packages/core/pvm-interpreter/program-decoder/program-decoder.js +6 -3
  167. package/packages/core/pvm-interpreter/program-decoder/program-decoder.test.js +5 -5
  168. package/packages/core/pvm-interpreter/program.js +3 -3
  169. package/packages/core/pvm-interpreter/registers.d.ts +5 -2
  170. package/packages/core/pvm-interpreter/registers.d.ts.map +1 -1
  171. package/packages/core/pvm-interpreter/registers.js +10 -6
  172. package/packages/core/pvm-interpreter/registers.test.js +10 -10
  173. package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.d.ts +6 -3
  174. package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.d.ts.map +1 -1
  175. package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.js +11 -2
  176. package/packages/core/pvm-interpreter-ananas/index.d.ts +6 -3
  177. package/packages/core/pvm-interpreter-ananas/index.d.ts.map +1 -1
  178. package/packages/core/pvm-interpreter-ananas/index.js +12 -3
  179. package/packages/core/trie/nodes.d.ts +7 -2
  180. package/packages/core/trie/nodes.d.ts.map +1 -1
  181. package/packages/core/trie/nodes.js +20 -11
  182. package/packages/core/trie/nodesDb.d.ts +3 -1
  183. package/packages/core/trie/nodesDb.d.ts.map +1 -1
  184. package/packages/core/trie/nodesDb.js +6 -0
  185. package/packages/core/trie/trie.js +2 -2
  186. package/packages/extensions/ipc/index.js +5 -2
  187. package/packages/extensions/ipc/jamnp/handler.d.ts +4 -2
  188. package/packages/extensions/ipc/jamnp/handler.d.ts.map +1 -1
  189. package/packages/extensions/ipc/jamnp/handler.js +9 -3
  190. package/packages/extensions/ipc/jamnp/server.js +3 -3
  191. package/packages/extensions/ipc/server.d.ts +2 -1
  192. package/packages/extensions/ipc/server.d.ts.map +1 -1
  193. package/packages/extensions/ipc/server.js +4 -1
  194. package/packages/jam/block/header.js +1 -1
  195. package/packages/jam/block/work-package.d.ts +7 -7
  196. package/packages/jam/block/work-package.d.ts.map +1 -1
  197. package/packages/jam/block/work-package.js +12 -12
  198. package/packages/jam/config/chain-spec.d.ts +2 -1
  199. package/packages/jam/config/chain-spec.d.ts.map +1 -1
  200. package/packages/jam/config/chain-spec.js +5 -2
  201. package/packages/jam/config/network.d.ts +2 -7
  202. package/packages/jam/config/network.d.ts.map +1 -1
  203. package/packages/jam/config/network.js +3 -0
  204. package/packages/jam/config-node/jip-chain-spec.js +1 -1
  205. package/packages/jam/database/blocks.test.js +1 -1
  206. package/packages/jam/database/states.d.ts +2 -1
  207. package/packages/jam/database/states.d.ts.map +1 -1
  208. package/packages/jam/database/states.js +3 -0
  209. package/packages/jam/database/states.test.js +1 -1
  210. package/packages/jam/database-lmdb/blocks.d.ts +2 -1
  211. package/packages/jam/database-lmdb/blocks.d.ts.map +1 -1
  212. package/packages/jam/database-lmdb/blocks.js +3 -0
  213. package/packages/jam/database-lmdb/root.d.ts +2 -1
  214. package/packages/jam/database-lmdb/root.d.ts.map +1 -1
  215. package/packages/jam/database-lmdb/root.js +3 -0
  216. package/packages/jam/database-lmdb/states.d.ts +2 -1
  217. package/packages/jam/database-lmdb/states.d.ts.map +1 -1
  218. package/packages/jam/database-lmdb/states.js +3 -0
  219. package/packages/jam/database-lmdb/states.test.js +9 -9
  220. package/packages/jam/executor/index.d.ts +1 -1
  221. package/packages/jam/executor/index.d.ts.map +1 -1
  222. package/packages/jam/executor/index.js +1 -1
  223. package/packages/jam/executor/pvm-executor.d.ts +9 -2
  224. package/packages/jam/executor/pvm-executor.d.ts.map +1 -1
  225. package/packages/jam/executor/pvm-executor.js +36 -21
  226. package/packages/jam/fuzz-proto/v1/handler.d.ts +2 -1
  227. package/packages/jam/fuzz-proto/v1/handler.d.ts.map +1 -1
  228. package/packages/jam/fuzz-proto/v1/handler.js +3 -0
  229. package/packages/jam/fuzz-proto/v1/handler.test.js +10 -10
  230. package/packages/jam/in-core/externalities/refine.d.ts +18 -8
  231. package/packages/jam/in-core/externalities/refine.d.ts.map +1 -1
  232. package/packages/jam/in-core/externalities/refine.js +86 -7
  233. package/packages/jam/in-core/externalities/refine.test.js +168 -3
  234. package/packages/jam/in-core/in-core.d.ts +9 -23
  235. package/packages/jam/in-core/in-core.d.ts.map +1 -1
  236. package/packages/jam/in-core/in-core.js +19 -186
  237. package/packages/jam/in-core/in-core.test.js +52 -20
  238. package/packages/jam/in-core/is-authorized.d.ts +33 -0
  239. package/packages/jam/in-core/is-authorized.d.ts.map +1 -0
  240. package/packages/jam/in-core/is-authorized.js +72 -0
  241. package/packages/jam/in-core/is-authorized.test.d.ts +2 -0
  242. package/packages/jam/in-core/is-authorized.test.d.ts.map +1 -0
  243. package/packages/jam/in-core/is-authorized.test.js +125 -0
  244. package/packages/jam/in-core/refine.d.ts +34 -0
  245. package/packages/jam/in-core/refine.d.ts.map +1 -0
  246. package/packages/jam/in-core/refine.js +176 -0
  247. package/packages/jam/in-core/refine.test.d.ts +2 -0
  248. package/packages/jam/in-core/refine.test.d.ts.map +1 -0
  249. package/packages/jam/in-core/refine.test.js +6 -0
  250. package/packages/jam/jam-host-calls/accumulate/assign.d.ts +2 -1
  251. package/packages/jam/jam-host-calls/accumulate/assign.d.ts.map +1 -1
  252. package/packages/jam/jam-host-calls/accumulate/assign.js +3 -0
  253. package/packages/jam/jam-host-calls/accumulate/assign.test.js +8 -9
  254. package/packages/jam/jam-host-calls/accumulate/bless.d.ts +2 -1
  255. package/packages/jam/jam-host-calls/accumulate/bless.d.ts.map +1 -1
  256. package/packages/jam/jam-host-calls/accumulate/bless.js +12 -9
  257. package/packages/jam/jam-host-calls/accumulate/bless.test.js +11 -12
  258. package/packages/jam/jam-host-calls/accumulate/checkpoint.d.ts +2 -1
  259. package/packages/jam/jam-host-calls/accumulate/checkpoint.d.ts.map +1 -1
  260. package/packages/jam/jam-host-calls/accumulate/checkpoint.js +4 -1
  261. package/packages/jam/jam-host-calls/accumulate/checkpoint.test.js +2 -3
  262. package/packages/jam/jam-host-calls/accumulate/designate.d.ts +2 -1
  263. package/packages/jam/jam-host-calls/accumulate/designate.d.ts.map +1 -1
  264. package/packages/jam/jam-host-calls/accumulate/designate.js +3 -0
  265. package/packages/jam/jam-host-calls/accumulate/designate.test.js +5 -6
  266. package/packages/jam/jam-host-calls/accumulate/eject.d.ts +2 -1
  267. package/packages/jam/jam-host-calls/accumulate/eject.d.ts.map +1 -1
  268. package/packages/jam/jam-host-calls/accumulate/eject.js +3 -0
  269. package/packages/jam/jam-host-calls/accumulate/eject.test.js +8 -9
  270. package/packages/jam/jam-host-calls/accumulate/forget.d.ts +2 -1
  271. package/packages/jam/jam-host-calls/accumulate/forget.d.ts.map +1 -1
  272. package/packages/jam/jam-host-calls/accumulate/forget.js +3 -0
  273. package/packages/jam/jam-host-calls/accumulate/forget.test.js +5 -6
  274. package/packages/jam/jam-host-calls/accumulate/new.d.ts +2 -1
  275. package/packages/jam/jam-host-calls/accumulate/new.d.ts.map +1 -1
  276. package/packages/jam/jam-host-calls/accumulate/new.js +3 -0
  277. package/packages/jam/jam-host-calls/accumulate/new.test.js +9 -10
  278. package/packages/jam/jam-host-calls/accumulate/provide.d.ts +2 -1
  279. package/packages/jam/jam-host-calls/accumulate/provide.d.ts.map +1 -1
  280. package/packages/jam/jam-host-calls/accumulate/provide.js +3 -0
  281. package/packages/jam/jam-host-calls/accumulate/provide.test.js +8 -9
  282. package/packages/jam/jam-host-calls/accumulate/query.d.ts +2 -1
  283. package/packages/jam/jam-host-calls/accumulate/query.d.ts.map +1 -1
  284. package/packages/jam/jam-host-calls/accumulate/query.js +3 -0
  285. package/packages/jam/jam-host-calls/accumulate/query.test.js +8 -9
  286. package/packages/jam/jam-host-calls/accumulate/solicit.d.ts +2 -1
  287. package/packages/jam/jam-host-calls/accumulate/solicit.d.ts.map +1 -1
  288. package/packages/jam/jam-host-calls/accumulate/solicit.js +3 -0
  289. package/packages/jam/jam-host-calls/accumulate/solicit.test.js +7 -8
  290. package/packages/jam/jam-host-calls/accumulate/transfer.d.ts +2 -1
  291. package/packages/jam/jam-host-calls/accumulate/transfer.d.ts.map +1 -1
  292. package/packages/jam/jam-host-calls/accumulate/transfer.js +3 -0
  293. package/packages/jam/jam-host-calls/accumulate/transfer.test.js +9 -10
  294. package/packages/jam/jam-host-calls/accumulate/upgrade.d.ts +2 -1
  295. package/packages/jam/jam-host-calls/accumulate/upgrade.d.ts.map +1 -1
  296. package/packages/jam/jam-host-calls/accumulate/upgrade.js +3 -0
  297. package/packages/jam/jam-host-calls/accumulate/upgrade.test.js +4 -5
  298. package/packages/jam/jam-host-calls/accumulate/yield.d.ts +2 -1
  299. package/packages/jam/jam-host-calls/accumulate/yield.d.ts.map +1 -1
  300. package/packages/jam/jam-host-calls/accumulate/yield.js +3 -0
  301. package/packages/jam/jam-host-calls/accumulate/yield.test.js +4 -5
  302. package/packages/jam/jam-host-calls/externalities/partial-state.d.ts +1 -1
  303. package/packages/jam/jam-host-calls/externalities/refine-externalities.d.ts +1 -1
  304. package/packages/jam/jam-host-calls/externalities/refine-externalities.d.ts.map +1 -1
  305. package/packages/jam/jam-host-calls/externalities/refine-externalities.test.js +9 -9
  306. package/packages/jam/jam-host-calls/externalities/state-update.d.ts +2 -3
  307. package/packages/jam/jam-host-calls/externalities/state-update.d.ts.map +1 -1
  308. package/packages/jam/jam-host-calls/externalities/state-update.js +5 -2
  309. package/packages/jam/jam-host-calls/externalities/test-accounts.js +2 -2
  310. package/packages/jam/jam-host-calls/general/fetch.d.ts +166 -104
  311. package/packages/jam/jam-host-calls/general/fetch.d.ts.map +1 -1
  312. package/packages/jam/jam-host-calls/general/fetch.js +120 -23
  313. package/packages/jam/jam-host-calls/general/fetch.test.js +125 -92
  314. package/packages/jam/jam-host-calls/general/gas.d.ts +2 -1
  315. package/packages/jam/jam-host-calls/general/gas.d.ts.map +1 -1
  316. package/packages/jam/jam-host-calls/general/gas.js +3 -0
  317. package/packages/jam/jam-host-calls/general/gas.test.js +4 -5
  318. package/packages/jam/jam-host-calls/general/info.d.ts +2 -1
  319. package/packages/jam/jam-host-calls/general/info.d.ts.map +1 -1
  320. package/packages/jam/jam-host-calls/general/info.js +3 -0
  321. package/packages/jam/jam-host-calls/general/info.test.js +6 -7
  322. package/packages/jam/jam-host-calls/general/log.d.ts +2 -1
  323. package/packages/jam/jam-host-calls/general/log.d.ts.map +1 -1
  324. package/packages/jam/jam-host-calls/general/log.js +3 -0
  325. package/packages/jam/jam-host-calls/general/lookup.d.ts +2 -1
  326. package/packages/jam/jam-host-calls/general/lookup.d.ts.map +1 -1
  327. package/packages/jam/jam-host-calls/general/lookup.js +3 -0
  328. package/packages/jam/jam-host-calls/general/lookup.test.js +8 -9
  329. package/packages/jam/jam-host-calls/general/read.d.ts +2 -1
  330. package/packages/jam/jam-host-calls/general/read.d.ts.map +1 -1
  331. package/packages/jam/jam-host-calls/general/read.js +3 -0
  332. package/packages/jam/jam-host-calls/general/read.test.js +11 -12
  333. package/packages/jam/jam-host-calls/general/write.d.ts +2 -1
  334. package/packages/jam/jam-host-calls/general/write.d.ts.map +1 -1
  335. package/packages/jam/jam-host-calls/general/write.js +3 -0
  336. package/packages/jam/jam-host-calls/general/write.test.js +10 -11
  337. package/packages/jam/jam-host-calls/refine/export.d.ts +2 -1
  338. package/packages/jam/jam-host-calls/refine/export.d.ts.map +1 -1
  339. package/packages/jam/jam-host-calls/refine/export.js +3 -0
  340. package/packages/jam/jam-host-calls/refine/export.test.js +6 -7
  341. package/packages/jam/jam-host-calls/refine/expunge.d.ts +2 -1
  342. package/packages/jam/jam-host-calls/refine/expunge.d.ts.map +1 -1
  343. package/packages/jam/jam-host-calls/refine/expunge.js +3 -0
  344. package/packages/jam/jam-host-calls/refine/expunge.test.js +3 -4
  345. package/packages/jam/jam-host-calls/refine/historical-lookup.d.ts +2 -1
  346. package/packages/jam/jam-host-calls/refine/historical-lookup.d.ts.map +1 -1
  347. package/packages/jam/jam-host-calls/refine/historical-lookup.js +3 -0
  348. package/packages/jam/jam-host-calls/refine/historical-lookup.test.js +11 -12
  349. package/packages/jam/jam-host-calls/refine/invoke.d.ts +2 -1
  350. package/packages/jam/jam-host-calls/refine/invoke.d.ts.map +1 -1
  351. package/packages/jam/jam-host-calls/refine/invoke.js +4 -1
  352. package/packages/jam/jam-host-calls/refine/invoke.test.js +10 -11
  353. package/packages/jam/jam-host-calls/refine/machine.d.ts +2 -1
  354. package/packages/jam/jam-host-calls/refine/machine.d.ts.map +1 -1
  355. package/packages/jam/jam-host-calls/refine/machine.js +3 -0
  356. package/packages/jam/jam-host-calls/refine/machine.test.js +6 -7
  357. package/packages/jam/jam-host-calls/refine/pages.d.ts +2 -1
  358. package/packages/jam/jam-host-calls/refine/pages.d.ts.map +1 -1
  359. package/packages/jam/jam-host-calls/refine/pages.js +3 -0
  360. package/packages/jam/jam-host-calls/refine/pages.test.js +3 -4
  361. package/packages/jam/jam-host-calls/refine/peek.d.ts +2 -1
  362. package/packages/jam/jam-host-calls/refine/peek.d.ts.map +1 -1
  363. package/packages/jam/jam-host-calls/refine/peek.js +3 -0
  364. package/packages/jam/jam-host-calls/refine/peek.test.js +3 -4
  365. package/packages/jam/jam-host-calls/refine/poke.d.ts +2 -1
  366. package/packages/jam/jam-host-calls/refine/poke.d.ts.map +1 -1
  367. package/packages/jam/jam-host-calls/refine/poke.js +3 -0
  368. package/packages/jam/jam-host-calls/refine/poke.test.js +3 -4
  369. package/packages/jam/jamnp-s/network.js +1 -1
  370. package/packages/jam/jamnp-s/peers.d.ts +2 -1
  371. package/packages/jam/jamnp-s/peers.d.ts.map +1 -1
  372. package/packages/jam/jamnp-s/peers.js +3 -0
  373. package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts +4 -2
  374. package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts.map +1 -1
  375. package/packages/jam/jamnp-s/protocol/ce-128-block-request.js +6 -0
  376. package/packages/jam/jamnp-s/protocol/ce-128-block-request.test.js +2 -2
  377. package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts +4 -2
  378. package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts.map +1 -1
  379. package/packages/jam/jamnp-s/protocol/ce-129-state-request.js +6 -0
  380. package/packages/jam/jamnp-s/protocol/ce-129-state-request.test.js +4 -4
  381. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts +4 -2
  382. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts.map +1 -1
  383. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.js +6 -0
  384. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.test.js +2 -2
  385. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts +6 -3
  386. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts.map +1 -1
  387. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.js +7 -0
  388. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.test.js +2 -2
  389. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts +5 -2
  390. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts.map +1 -1
  391. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.js +7 -0
  392. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.test.js +2 -2
  393. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts +4 -2
  394. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts.map +1 -1
  395. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.js +6 -0
  396. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.test.js +2 -2
  397. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts +2 -1
  398. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts.map +1 -1
  399. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.js +3 -0
  400. package/packages/jam/jamnp-s/stream-manager.d.ts +2 -1
  401. package/packages/jam/jamnp-s/stream-manager.d.ts.map +1 -1
  402. package/packages/jam/jamnp-s/stream-manager.js +4 -1
  403. package/packages/jam/jamnp-s/tasks/sync.js +4 -4
  404. package/packages/jam/jamnp-s/tasks/sync.test.js +4 -4
  405. package/packages/jam/jamnp-s/tasks/ticket-distribution.js +2 -2
  406. package/packages/jam/jamnp-s/tasks/ticket-distribution.test.js +1 -1
  407. package/packages/jam/node/common.d.ts.map +1 -1
  408. package/packages/jam/node/common.js +3 -3
  409. package/packages/jam/rpc-client/index.d.ts +4 -2
  410. package/packages/jam/rpc-client/index.d.ts.map +1 -1
  411. package/packages/jam/rpc-client/index.js +7 -1
  412. package/packages/jam/state/in-memory-state-view.d.ts +2 -1
  413. package/packages/jam/state/in-memory-state-view.d.ts.map +1 -1
  414. package/packages/jam/state/in-memory-state-view.js +3 -0
  415. package/packages/jam/state/in-memory-state.d.ts +16 -21
  416. package/packages/jam/state/in-memory-state.d.ts.map +1 -1
  417. package/packages/jam/state/in-memory-state.js +10 -6
  418. package/packages/jam/state/in-memory-state.test.js +2 -2
  419. package/packages/jam/state/service.d.ts +2 -6
  420. package/packages/jam/state/service.d.ts.map +1 -1
  421. package/packages/jam/state/service.js +3 -0
  422. package/packages/jam/state/test.utils.js +3 -3
  423. package/packages/jam/state-json/accounts.js +5 -5
  424. package/packages/jam/state-merkleization/in-memory-state-codec.d.ts +3 -34
  425. package/packages/jam/state-merkleization/in-memory-state-codec.d.ts.map +1 -1
  426. package/packages/jam/state-merkleization/in-memory-state-codec.js +1 -1
  427. package/packages/jam/state-merkleization/serialized-state-view.d.ts +8 -3
  428. package/packages/jam/state-merkleization/serialized-state-view.d.ts.map +1 -1
  429. package/packages/jam/state-merkleization/serialized-state-view.js +6 -3
  430. package/packages/jam/state-merkleization/serialized-state.d.ts +2 -3
  431. package/packages/jam/state-merkleization/serialized-state.d.ts.map +1 -1
  432. package/packages/jam/state-merkleization/serialized-state.js +10 -2
  433. package/packages/jam/state-merkleization/serialized-state.test.js +1 -1
  434. package/packages/jam/transition/accumulate/accumulate.d.ts.map +1 -1
  435. package/packages/jam/transition/accumulate/accumulate.js +20 -8
  436. package/packages/jam/transition/accumulate/accumulate.test.js +1 -1
  437. package/packages/jam/transition/accumulate/accumulation-result-merge-utils.js +48 -39
  438. package/packages/jam/transition/block-verifier.d.ts +2 -1
  439. package/packages/jam/transition/block-verifier.d.ts.map +1 -1
  440. package/packages/jam/transition/block-verifier.js +3 -0
  441. package/packages/jam/transition/block-verifier.test.js +8 -8
  442. package/packages/jam/transition/chain-stf.d.ts +12 -4
  443. package/packages/jam/transition/chain-stf.d.ts.map +1 -1
  444. package/packages/jam/transition/chain-stf.js +7 -3
  445. package/packages/jam/transition/externalities/accumulate-externalities.d.ts +22 -8
  446. package/packages/jam/transition/externalities/accumulate-externalities.d.ts.map +1 -1
  447. package/packages/jam/transition/externalities/accumulate-externalities.js +49 -29
  448. package/packages/jam/transition/externalities/accumulate-externalities.test.js +661 -101
  449. package/packages/jam/transition/externalities/accumulate-fetch-externalities.d.ts +19 -0
  450. package/packages/jam/transition/externalities/accumulate-fetch-externalities.d.ts.map +1 -0
  451. package/packages/jam/transition/externalities/accumulate-fetch-externalities.js +45 -0
  452. package/packages/jam/transition/externalities/accumulate-fetch-externalities.test.d.ts +2 -0
  453. package/packages/jam/transition/externalities/accumulate-fetch-externalities.test.d.ts.map +1 -0
  454. package/packages/jam/transition/externalities/accumulate-fetch-externalities.test.js +192 -0
  455. package/packages/jam/transition/externalities/fetch-externalities.d.ts +3 -39
  456. package/packages/jam/transition/externalities/fetch-externalities.d.ts.map +1 -1
  457. package/packages/jam/transition/externalities/fetch-externalities.js +2 -88
  458. package/packages/jam/transition/externalities/index.d.ts +3 -0
  459. package/packages/jam/transition/externalities/index.d.ts.map +1 -1
  460. package/packages/jam/transition/externalities/index.js +3 -0
  461. package/packages/jam/transition/externalities/is-authorized-fetch-externalities.d.ts +22 -0
  462. package/packages/jam/transition/externalities/is-authorized-fetch-externalities.d.ts.map +1 -0
  463. package/packages/jam/transition/externalities/is-authorized-fetch-externalities.js +41 -0
  464. package/packages/jam/transition/externalities/refine-fetch-externalities.d.ts +24 -0
  465. package/packages/jam/transition/externalities/refine-fetch-externalities.d.ts.map +1 -0
  466. package/packages/jam/transition/externalities/refine-fetch-externalities.js +59 -0
  467. package/packages/jam/transition/externalities/refine-fetch-externalities.test.d.ts +2 -0
  468. package/packages/jam/transition/externalities/refine-fetch-externalities.test.d.ts.map +1 -0
  469. package/packages/jam/transition/externalities/refine-fetch-externalities.test.js +32 -0
  470. package/packages/jam/transition/hasher.d.ts +2 -1
  471. package/packages/jam/transition/hasher.d.ts.map +1 -1
  472. package/packages/jam/transition/hasher.js +5 -2
  473. package/packages/jam/transition/hasher.test.js +1 -1
  474. package/packages/jam/transition/preimages.test.js +4 -4
  475. package/packages/jam/transition/reports/test.utils.js +1 -1
  476. package/packages/workers/api-node/config.js +4 -4
  477. package/packages/workers/api-node/port.d.ts +2 -1
  478. package/packages/workers/api-node/port.d.ts.map +1 -1
  479. package/packages/workers/api-node/port.js +4 -1
  480. package/packages/workers/api-node/port.test.js +2 -2
  481. package/packages/workers/api-node/protocol.js +2 -2
  482. package/packages/workers/block-authorship/generator.d.ts +13 -2
  483. package/packages/workers/block-authorship/generator.d.ts.map +1 -1
  484. package/packages/workers/block-authorship/generator.js +13 -9
  485. package/packages/workers/block-authorship/generator.test.js +16 -2
  486. package/packages/workers/block-authorship/main.d.ts.map +1 -1
  487. package/packages/workers/block-authorship/main.js +8 -1
  488. package/packages/workers/importer/finality.test.js +1 -1
  489. package/packages/workers/importer/importer.d.ts +23 -6
  490. package/packages/workers/importer/importer.d.ts.map +1 -1
  491. package/packages/workers/importer/importer.js +34 -19
  492. package/packages/workers/importer/main.d.ts.map +1 -1
  493. package/packages/workers/importer/main.js +13 -5
  494. package/packages/jam/transition/externalities/fetch-externalities.test.d.ts +0 -2
  495. package/packages/jam/transition/externalities/fetch-externalities.test.d.ts.map +0 -1
  496. package/packages/jam/transition/externalities/fetch-externalities.test.js +0 -254
@@ -11,7 +11,8 @@ export declare class LogHostCall implements HostCallHandler {
11
11
  index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
12
12
  basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
13
13
  tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
14
- constructor(currentServiceId: ServiceId);
14
+ static new(currentServiceId: ServiceId): LogHostCall;
15
+ private constructor();
15
16
  execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined>;
16
17
  }
17
18
  //# sourceMappingURL=log.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEpG,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAmB3E;;;;GAIG;AACH,qBAAa,WAAY,YAAW,eAAe;aAMrB,gBAAgB,EAAE,SAAS;IALvD,KAAK,iIAA2B;IAChC,YAAY,4HAA2F;IAEvG,eAAe,uEAAoB;gBAEP,gBAAgB,EAAE,SAAS;IAEjD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC;CAqBtG"}
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEpG,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAmB3E;;;;GAIG;AACH,qBAAa,WAAY,YAAW,eAAe;aAUb,gBAAgB,EAAE,SAAS;IAT/D,KAAK,iIAA2B;IAChC,YAAY,4HAA2F;IAEvG,eAAe,uEAAoB;IAEnC,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS;IAItC,OAAO;IAED,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC;CAqBtG"}
@@ -26,6 +26,9 @@ export class LogHostCall {
26
26
  basicGasCost = Compatibility.isGreaterOrEqual(GpVersion.V0_7_2) ? tryAsSmallGas(10) : tryAsSmallGas(0);
27
27
  // intentionally not tracing anything here, since the message will be printed anyway.
28
28
  tracedRegisters = traceRegisters();
29
+ static new(currentServiceId) {
30
+ return new LogHostCall(currentServiceId);
31
+ }
29
32
  constructor(currentServiceId) {
30
33
  this.currentServiceId = currentServiceId;
31
34
  }
@@ -20,7 +20,8 @@ export declare class Lookup implements HostCallHandler {
20
20
  index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
21
21
  basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
22
22
  tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
23
- constructor(currentServiceId: ServiceId, account: AccountsLookup);
23
+ static new(currentServiceId: ServiceId, account: AccountsLookup): Lookup;
24
+ private constructor();
24
25
  execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined | PvmExecution>;
25
26
  }
26
27
  //# sourceMappingURL=lookup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lookup.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/lookup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,KAAK,WAAW,EAAa,MAAM,iBAAiB,CAAC;AAE9D,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAM3E,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,yBAAyB;IACzB,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,EAAE,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;CAC1E;AAID;;;;GAIG;AACH,qBAAa,MAAO,YAAW,eAAe;aAO1B,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAP1B,KAAK,iIAAyB;IAE9B,YAAY,4HAAqB;IACjC,eAAe,uEAA4C;gBAGzC,gBAAgB,EAAE,SAAS,EAC1B,OAAO,EAAE,cAAc;IAGpC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CAgDrH"}
1
+ {"version":3,"file":"lookup.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/lookup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,KAAK,WAAW,EAAa,MAAM,iBAAiB,CAAC;AAE9D,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAM3E,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,yBAAyB;IACzB,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,EAAE,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;CAC1E;AAID;;;;GAIG;AACH,qBAAa,MAAO,YAAW,eAAe;aAW1B,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAX1B,KAAK,iIAAyB;IAE9B,YAAY,4HAAqB;IACjC,eAAe,uEAA4C;IAE3D,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc;IAI/D,OAAO;IAKD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CAgDrH"}
@@ -19,6 +19,9 @@ export class Lookup {
19
19
  index = tryAsHostCallIndex(2);
20
20
  basicGasCost = tryAsSmallGas(10);
21
21
  tracedRegisters = traceRegisters(IN_OUT_REG, 8, 9, 10, 11);
22
+ static new(currentServiceId, account) {
23
+ return new Lookup(currentServiceId, account);
24
+ }
22
25
  constructor(currentServiceId, account) {
23
26
  this.currentServiceId = currentServiceId;
24
27
  this.account = account;
@@ -11,7 +11,6 @@ import { MemoryBuilder, tryAsMemoryIndex } from "#@typeberry/pvm-interpreter/mem
11
11
  import { tryAsSbrkIndex } from "#@typeberry/pvm-interpreter/memory/memory-index.js";
12
12
  import { PAGE_SIZE } from "#@typeberry/pvm-interpreter/spi-decoder/memory-conts.js";
13
13
  import { TestAccounts } from "../externalities/test-accounts.js";
14
- import { emptyRegistersBuffer } from "../utils.js";
15
14
  import { Lookup } from "./lookup.js";
16
15
  import { HostCallResult } from "./results.js";
17
16
  let blake2b;
@@ -31,7 +30,7 @@ const PREIMAGE_BLOB = BytesBlob.blobFromString("hello world");
31
30
  const DESTINATION_MEM_ADDRESS = 2 ** 22;
32
31
  const PREIMAGE_HASH_ADDRESS = 2 ** 16;
33
32
  function prepareRegsAndMemory(serviceId, key, { skipKey = false, skipValue = false, preimageOffset = 0, preimageLength = 0, } = {}) {
34
- const registers = new HostCallRegisters(emptyRegistersBuffer());
33
+ const registers = HostCallRegisters.empty();
35
34
  registers.set(SERVICE_ID_REG, tryAsU64(serviceId));
36
35
  registers.set(HASH_ADDRESS_REG, tryAsU64(PREIMAGE_HASH_ADDRESS));
37
36
  registers.set(DEST_ADDRESS_REG, tryAsU64(DESTINATION_MEM_ADDRESS));
@@ -44,7 +43,7 @@ function prepareRegsAndMemory(serviceId, key, { skipKey = false, skipValue = fal
44
43
  if (!skipValue) {
45
44
  builder.setWriteablePages(tryAsMemoryIndex(DESTINATION_MEM_ADDRESS), tryAsMemoryIndex(DESTINATION_MEM_ADDRESS + PAGE_SIZE));
46
45
  }
47
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
46
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
48
47
  return {
49
48
  registers,
50
49
  memory,
@@ -54,7 +53,7 @@ describe("HostCalls: Lookup", () => {
54
53
  it("should fail gracefully if account doesn't exist", async () => {
55
54
  const currentServiceId = tryAsServiceId(15_000);
56
55
  const accounts = new TestAccounts(currentServiceId);
57
- const lookup = new Lookup(currentServiceId, accounts);
56
+ const lookup = Lookup.new(currentServiceId, accounts);
58
57
  const serviceId = tryAsServiceId(10_000);
59
58
  const { registers, memory } = prepareRegsAndMemory(serviceId, HASH);
60
59
  // serviceId out of range
@@ -66,7 +65,7 @@ describe("HostCalls: Lookup", () => {
66
65
  it("should fail gracefully if preimage doesn't exist", async () => {
67
66
  const currentServiceId = tryAsServiceId(15_000);
68
67
  const accounts = new TestAccounts(currentServiceId);
69
- const lookup = new Lookup(currentServiceId, accounts);
68
+ const lookup = Lookup.new(currentServiceId, accounts);
70
69
  const serviceId = tryAsServiceId(10_000);
71
70
  const { registers, memory } = prepareRegsAndMemory(serviceId, HASH);
72
71
  accounts.preimages.set(null, serviceId, HASH);
@@ -77,7 +76,7 @@ describe("HostCalls: Lookup", () => {
77
76
  it("should fail on page fault if memory isn't readable", async () => {
78
77
  const currentServiceId = tryAsServiceId(15_000);
79
78
  const accounts = new TestAccounts(currentServiceId);
80
- const lookup = new Lookup(currentServiceId, accounts);
79
+ const lookup = Lookup.new(currentServiceId, accounts);
81
80
  const serviceId = tryAsServiceId(10_000);
82
81
  const { registers, memory: emptyMemory } = prepareRegsAndMemory(serviceId, HASH, {
83
82
  skipKey: true,
@@ -88,7 +87,7 @@ describe("HostCalls: Lookup", () => {
88
87
  it("should fail on page fault if destination memory is not writable", async () => {
89
88
  const currentServiceId = tryAsServiceId(15_000);
90
89
  const accounts = new TestAccounts(currentServiceId);
91
- const lookup = new Lookup(currentServiceId, accounts);
90
+ const lookup = Lookup.new(currentServiceId, accounts);
92
91
  const serviceId = tryAsServiceId(10_000);
93
92
  const { registers, memory: emptyMemory } = prepareRegsAndMemory(serviceId, HASH, {
94
93
  skipValue: true,
@@ -102,7 +101,7 @@ describe("HostCalls: Lookup", () => {
102
101
  it("without offset", async () => {
103
102
  const currentServiceId = tryAsServiceId(15_000);
104
103
  const accounts = new TestAccounts(currentServiceId);
105
- const lookup = new Lookup(currentServiceId, accounts);
104
+ const lookup = Lookup.new(currentServiceId, accounts);
106
105
  const serviceId = tryAsServiceId(10_000);
107
106
  const preimageLength = 5;
108
107
  const { registers, memory } = prepareRegsAndMemory(serviceId, HASH, { preimageLength });
@@ -118,7 +117,7 @@ describe("HostCalls: Lookup", () => {
118
117
  it("with offset", async () => {
119
118
  const currentServiceId = tryAsServiceId(15_000);
120
119
  const accounts = new TestAccounts(currentServiceId);
121
- const lookup = new Lookup(currentServiceId, accounts);
120
+ const lookup = Lookup.new(currentServiceId, accounts);
122
121
  const serviceId = tryAsServiceId(10_000);
123
122
  const preimageLength = 5;
124
123
  const preimageOffset = 6;
@@ -19,7 +19,8 @@ export declare class Read implements HostCallHandler {
19
19
  index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
20
20
  basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
21
21
  tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
22
- constructor(currentServiceId: ServiceId, account: AccountsRead);
22
+ static new(currentServiceId: ServiceId, account: AccountsRead): Read;
23
+ private constructor();
23
24
  execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined | PvmExecution>;
24
25
  }
25
26
  //# sourceMappingURL=read.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/read.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAM3E,kDAAkD;AAClD,MAAM,WAAW,YAAY;IAC3B,4BAA4B;IAC5B,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC;CACxE;AAID;;;;GAIG;AACH,qBAAa,IAAK,YAAW,eAAe;aAMxB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAN1B,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,eAAe,uEAAgD;gBAG7C,gBAAgB,EAAE,SAAS,EAC1B,OAAO,EAAE,YAAY;IAGlC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CA2DrH"}
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/read.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAM3E,kDAAkD;AAClD,MAAM,WAAW,YAAY;IAC3B,4BAA4B;IAC5B,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC;CACxE;AAID;;;;GAIG;AACH,qBAAa,IAAK,YAAW,eAAe;aAUxB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAV1B,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,eAAe,uEAAgD;IAE/D,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY;IAI7D,OAAO;IAKD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CA2DrH"}
@@ -18,6 +18,9 @@ export class Read {
18
18
  index = tryAsHostCallIndex(3);
19
19
  basicGasCost = tryAsSmallGas(10);
20
20
  tracedRegisters = traceRegisters(IN_OUT_REG, 8, 9, 10, 11, 12);
21
+ static new(currentServiceId, account) {
22
+ return new Read(currentServiceId, account);
23
+ }
21
24
  constructor(currentServiceId, account) {
22
25
  this.currentServiceId = currentServiceId;
23
26
  this.account = account;
@@ -11,7 +11,6 @@ import { tryAsSbrkIndex } from "#@typeberry/pvm-interpreter/memory/memory-index.
11
11
  import { PAGE_SIZE } from "#@typeberry/pvm-interpreter/spi-decoder/memory-conts.js";
12
12
  import { asOpaqueType, OK, Result } from "#@typeberry/utils";
13
13
  import { TestAccounts } from "../externalities/test-accounts.js";
14
- import { emptyRegistersBuffer } from "../utils.js";
15
14
  import { Read } from "./read.js";
16
15
  import { HostCallResult } from "./results.js";
17
16
  const gas = gasCounter(tryAsGas(0));
@@ -25,7 +24,7 @@ const VALUE_LENGTH_TO_WRITE_REG = 12;
25
24
  function prepareRegsAndMemory(key, valueLength, { skipKey = false, skipValue = false, valueOffset = 0, valueLengthToWrite = valueLength, serviceId, } = {}) {
26
25
  const keyAddress = 2 ** 20;
27
26
  const memStart = 2 ** 16;
28
- const registers = new HostCallRegisters(emptyRegistersBuffer());
27
+ const registers = HostCallRegisters.empty();
29
28
  if (serviceId !== undefined) {
30
29
  registers.set(SERVICE_ID_REG, tryAsU64(serviceId));
31
30
  }
@@ -44,7 +43,7 @@ function prepareRegsAndMemory(key, valueLength, { skipKey = false, skipValue = f
44
43
  if (!skipValue) {
45
44
  builder.setWriteablePages(tryAsMemoryIndex(memStart), tryAsMemoryIndex(memStart + PAGE_SIZE));
46
45
  }
47
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
46
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
48
47
  return {
49
48
  registers,
50
49
  memory,
@@ -60,7 +59,7 @@ describe("HostCalls: Read", () => {
60
59
  it("for current account", async () => {
61
60
  const currentServiceId = tryAsServiceId(10_000);
62
61
  const accounts = new TestAccounts(currentServiceId);
63
- const read = new Read(currentServiceId, accounts);
62
+ const read = Read.new(currentServiceId, accounts);
64
63
  const serviceId = tryAsServiceId(10_000);
65
64
  const key = BytesBlob.blobFromString("key");
66
65
  const value = "hello world";
@@ -74,7 +73,7 @@ describe("HostCalls: Read", () => {
74
73
  it("for different service Id", async () => {
75
74
  const currentServiceId = tryAsServiceId(10_000);
76
75
  const accounts = new TestAccounts(currentServiceId);
77
- const read = new Read(currentServiceId, accounts);
76
+ const read = Read.new(currentServiceId, accounts);
78
77
  const serviceId = tryAsServiceId(11_000);
79
78
  const key = BytesBlob.blobFromString("key");
80
79
  const value = "hello world";
@@ -90,7 +89,7 @@ describe("HostCalls: Read", () => {
90
89
  it("with offset", async () => {
91
90
  const currentServiceId = tryAsServiceId(10_000);
92
91
  const accounts = new TestAccounts(currentServiceId);
93
- const read = new Read(currentServiceId, accounts);
92
+ const read = Read.new(currentServiceId, accounts);
94
93
  const serviceId = tryAsServiceId(10_000);
95
94
  const key = BytesBlob.blobFromString("key");
96
95
  const value = "hello world";
@@ -106,7 +105,7 @@ describe("HostCalls: Read", () => {
106
105
  it("with offset and length", async () => {
107
106
  const currentServiceId = tryAsServiceId(10_000);
108
107
  const accounts = new TestAccounts(currentServiceId);
109
- const read = new Read(currentServiceId, accounts);
108
+ const read = Read.new(currentServiceId, accounts);
110
109
  const serviceId = tryAsServiceId(10_000);
111
110
  const key = BytesBlob.blobFromString("key");
112
111
  const value = "hello world";
@@ -123,7 +122,7 @@ describe("HostCalls: Read", () => {
123
122
  it("with 0-length destination target", async () => {
124
123
  const currentServiceId = tryAsServiceId(10_000);
125
124
  const accounts = new TestAccounts(currentServiceId);
126
- const read = new Read(currentServiceId, accounts);
125
+ const read = Read.new(currentServiceId, accounts);
127
126
  const serviceId = tryAsServiceId(10_000);
128
127
  const key = BytesBlob.blobFromString("xyz");
129
128
  const value = "hello world";
@@ -138,7 +137,7 @@ describe("HostCalls: Read", () => {
138
137
  it("should handle missing account", async () => {
139
138
  const currentServiceId = tryAsServiceId(10_000);
140
139
  const accounts = new TestAccounts(currentServiceId);
141
- const read = new Read(currentServiceId, accounts);
140
+ const read = Read.new(currentServiceId, accounts);
142
141
  const value = "xyz";
143
142
  const key = BytesBlob.blobFromString(value);
144
143
  const { registers, memory } = prepareRegsAndMemory(key, value.length);
@@ -151,7 +150,7 @@ describe("HostCalls: Read", () => {
151
150
  it("should handle missing value", async () => {
152
151
  const currentServiceId = tryAsServiceId(10_000);
153
152
  const accounts = new TestAccounts(currentServiceId);
154
- const read = new Read(currentServiceId, accounts);
153
+ const read = Read.new(currentServiceId, accounts);
155
154
  const serviceId = tryAsServiceId(10_000);
156
155
  const value = "xyz";
157
156
  const key = BytesBlob.blobFromString(value);
@@ -165,7 +164,7 @@ describe("HostCalls: Read", () => {
165
164
  it("should fail if there is no memory for key", async () => {
166
165
  const currentServiceId = tryAsServiceId(10_000);
167
166
  const accounts = new TestAccounts(currentServiceId);
168
- const read = new Read(currentServiceId, accounts);
167
+ const read = Read.new(currentServiceId, accounts);
169
168
  const serviceId = tryAsServiceId(10_000);
170
169
  const value = "xyz";
171
170
  const key = BytesBlob.blobFromString(value);
@@ -177,7 +176,7 @@ describe("HostCalls: Read", () => {
177
176
  it("should fail if there is no memory for result", async () => {
178
177
  const currentServiceId = tryAsServiceId(10_000);
179
178
  const accounts = new TestAccounts(currentServiceId);
180
- const read = new Read(currentServiceId, accounts);
179
+ const read = Read.new(currentServiceId, accounts);
181
180
  const serviceId = tryAsServiceId(10_000);
182
181
  const value = "xyz";
183
182
  const key = BytesBlob.blobFromString(value);
@@ -28,7 +28,8 @@ export declare class Write implements HostCallHandler {
28
28
  index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
29
29
  basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
30
30
  tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
31
- constructor(currentServiceId: ServiceId, account: AccountsWrite);
31
+ static new(currentServiceId: ServiceId, account: AccountsWrite): Write;
32
+ private constructor();
32
33
  execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined | PvmExecution>;
33
34
  }
34
35
  //# sourceMappingURL=write.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/write.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAgB,KAAK,MAAM,EAAuC,MAAM,kBAAkB,CAAC;AAKlG,mDAAmD;AACnD,MAAM,WAAW,aAAa;IAC5B;;;;;;;;OAQG;IACH,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;CACjF;AAID;;;;GAIG;AACH,qBAAa,KAAM,YAAW,eAAe;aAMzB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAN1B,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,eAAe,uEAAwC;gBAGrC,gBAAgB,EAAE,SAAS,EAC1B,OAAO,EAAE,aAAa;IAGnC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CA+CrH"}
1
+ {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/write.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAgB,KAAK,MAAM,EAAuC,MAAM,kBAAkB,CAAC;AAKlG,mDAAmD;AACnD,MAAM,WAAW,aAAa;IAC5B;;;;;;;;OAQG;IACH,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;CACjF;AAID;;;;GAIG;AACH,qBAAa,KAAM,YAAW,eAAe;aAUzB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAV1B,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,eAAe,uEAAwC;IAEvD,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa;IAI9D,OAAO;IAKD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CA+CrH"}
@@ -18,6 +18,9 @@ export class Write {
18
18
  index = tryAsHostCallIndex(4);
19
19
  basicGasCost = tryAsSmallGas(10);
20
20
  tracedRegisters = traceRegisters(IN_OUT_REG, 8, 9, 10);
21
+ static new(currentServiceId, account) {
22
+ return new Write(currentServiceId, account);
23
+ }
21
24
  constructor(currentServiceId, account) {
22
25
  this.currentServiceId = currentServiceId;
23
26
  this.account = account;
@@ -12,7 +12,6 @@ import { PAGE_SIZE } from "#@typeberry/pvm-interpreter/spi-decoder/memory-conts.
12
12
  import { ServiceAccountInfo } from "#@typeberry/state";
13
13
  import { asOpaqueType } from "#@typeberry/utils";
14
14
  import { TestAccounts } from "../externalities/test-accounts.js";
15
- import { emptyRegistersBuffer } from "../utils.js";
16
15
  import { HostCallResult } from "./results.js";
17
16
  import { Write } from "./write.js";
18
17
  const gas = gasCounter(tryAsGas(0));
@@ -40,7 +39,7 @@ function prepareAccounts(serviceId, { balance, gratisStorage } = {}) {
40
39
  function prepareRegsAndMemory(key, dataInMemory, { skipKey = false, skipValue = false } = {}) {
41
40
  const keyAddress = 2 ** 18;
42
41
  const memStart = 2 ** 16;
43
- const registers = new HostCallRegisters(emptyRegistersBuffer());
42
+ const registers = HostCallRegisters.empty();
44
43
  registers.set(KEY_START_REG, tryAsU64(keyAddress));
45
44
  registers.set(KEY_LEN_REG, tryAsU64(key.length));
46
45
  registers.set(DEST_START_REG, tryAsU64(memStart));
@@ -52,7 +51,7 @@ function prepareRegsAndMemory(key, dataInMemory, { skipKey = false, skipValue =
52
51
  if (!skipValue && dataInMemory.length > 0) {
53
52
  builder.setReadablePages(tryAsMemoryIndex(memStart), tryAsMemoryIndex(memStart + PAGE_SIZE), dataInMemory.raw);
54
53
  }
55
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
54
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
56
55
  return {
57
56
  registers,
58
57
  memory,
@@ -62,7 +61,7 @@ describe("HostCalls: Write", () => {
62
61
  it("should write data to account state", async () => {
63
62
  const serviceId = tryAsServiceId(10_000);
64
63
  const accounts = prepareAccounts(serviceId);
65
- const write = new Write(serviceId, accounts);
64
+ const write = Write.new(serviceId, accounts);
66
65
  const key = BytesBlob.blobFromString("imma key");
67
66
  const { registers, memory } = prepareRegsAndMemory(key, BytesBlob.blobFromString("hello world!"));
68
67
  accounts.storage.set(BytesBlob.blobFromString("old data"), serviceId, asOpaqueType(key));
@@ -77,7 +76,7 @@ describe("HostCalls: Write", () => {
77
76
  it("should write data to account state when low balance but with gratisStorage", async () => {
78
77
  const serviceId = tryAsServiceId(10_000);
79
78
  const accounts = prepareAccounts(serviceId, { balance: 100n, gratisStorage: 150000n });
80
- const write = new Write(serviceId, accounts);
79
+ const write = Write.new(serviceId, accounts);
81
80
  const key = BytesBlob.blobFromString("imma key");
82
81
  const { registers, memory } = prepareRegsAndMemory(key, BytesBlob.blobFromString("hello world!"));
83
82
  accounts.storage.set(BytesBlob.blobFromString("old data"), serviceId, asOpaqueType(key));
@@ -92,7 +91,7 @@ describe("HostCalls: Write", () => {
92
91
  it("should remove data from account state", async () => {
93
92
  const serviceId = tryAsServiceId(10_000);
94
93
  const accounts = prepareAccounts(serviceId);
95
- const write = new Write(serviceId, accounts);
94
+ const write = Write.new(serviceId, accounts);
96
95
  const key = BytesBlob.blobFromString("xyz");
97
96
  const { registers, memory } = prepareRegsAndMemory(key, BytesBlob.blobFromNumbers([]));
98
97
  accounts.storage.set(BytesBlob.blobFromString("hello world!"), serviceId, asOpaqueType(key));
@@ -107,7 +106,7 @@ describe("HostCalls: Write", () => {
107
106
  it("should fail if there is no memory for key", async () => {
108
107
  const serviceId = tryAsServiceId(10_000);
109
108
  const accounts = prepareAccounts(serviceId);
110
- const write = new Write(serviceId, accounts);
109
+ const write = Write.new(serviceId, accounts);
111
110
  const key = BytesBlob.blobFromString("xyz");
112
111
  const { registers, memory } = prepareRegsAndMemory(key, BytesBlob.blobFromString("hello world!"), {
113
112
  skipKey: true,
@@ -121,7 +120,7 @@ describe("HostCalls: Write", () => {
121
120
  it("should fail if there is no memory for result", async () => {
122
121
  const serviceId = tryAsServiceId(10_000);
123
122
  const accounts = prepareAccounts(serviceId);
124
- const write = new Write(serviceId, accounts);
123
+ const write = Write.new(serviceId, accounts);
125
124
  const key = BytesBlob.blobFromString("xyz");
126
125
  const { registers, memory } = prepareRegsAndMemory(key, BytesBlob.blobFromString("hello world!"), {
127
126
  skipValue: true,
@@ -135,7 +134,7 @@ describe("HostCalls: Write", () => {
135
134
  it("should fail if the key is not fully readable", async () => {
136
135
  const serviceId = tryAsServiceId(10_000);
137
136
  const accounts = prepareAccounts(serviceId);
138
- const write = new Write(serviceId, accounts);
137
+ const write = Write.new(serviceId, accounts);
139
138
  const key = BytesBlob.blobFromString("xyz");
140
139
  const { registers, memory } = prepareRegsAndMemory(key, BytesBlob.blobFromString("hello world!"));
141
140
  registers.set(KEY_LEN_REG, tryAsU64(PAGE_SIZE + 1));
@@ -148,7 +147,7 @@ describe("HostCalls: Write", () => {
148
147
  it("should fail if the value is not fully readable", async () => {
149
148
  const serviceId = tryAsServiceId(10_000);
150
149
  const accounts = prepareAccounts(serviceId);
151
- const write = new Write(serviceId, accounts);
150
+ const write = Write.new(serviceId, accounts);
152
151
  const key = BytesBlob.blobFromString("xyz");
153
152
  const { registers, memory } = prepareRegsAndMemory(key, BytesBlob.blobFromString("hello world!"));
154
153
  registers.set(DEST_LEN_REG, tryAsU64(PAGE_SIZE + 1));
@@ -161,7 +160,7 @@ describe("HostCalls: Write", () => {
161
160
  it("should handle storage full when low balance in the account", async () => {
162
161
  const serviceId = tryAsServiceId(10_000);
163
162
  const accounts = prepareAccounts(serviceId, { balance: 100n });
164
- const write = new Write(serviceId, accounts);
163
+ const write = Write.new(serviceId, accounts);
165
164
  const key = BytesBlob.blobFromString("imma key");
166
165
  const { registers, memory } = prepareRegsAndMemory(key, BytesBlob.blobFromString("hello world! Is super long very very very."));
167
166
  accounts.storage.set(BytesBlob.blobFromString("old data"), serviceId, asOpaqueType(key));
@@ -12,7 +12,8 @@ export declare class Export implements HostCallHandler {
12
12
  basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
13
13
  currentServiceId: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"ServiceId[u32]">;
14
14
  tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
15
- constructor(refine: RefineExternalities);
15
+ static new(refine: RefineExternalities): Export;
16
+ private constructor();
16
17
  execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<PvmExecution | undefined>;
17
18
  }
18
19
  //# sourceMappingURL=export.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/refine/export.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,YAAY,EAGb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAOpF;;;;GAIG;AACH,qBAAa,MAAO,YAAW,eAAe;IAMhC,OAAO,CAAC,QAAQ,CAAC,MAAM;IALnC,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,gBAAgB,6HAAsB;IACtC,eAAe,uEAAiC;gBAEnB,MAAM,EAAE,mBAAmB;IAElD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CA0BrH"}
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/refine/export.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,YAAY,EAGb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAOpF;;;;GAIG;AACH,qBAAa,MAAO,YAAW,eAAe;IAUxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAT3C,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,gBAAgB,6HAAsB;IACtC,eAAe,uEAAiC;IAEhD,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB;IAItC,OAAO;IAED,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CA0BrH"}
@@ -19,6 +19,9 @@ export class Export {
19
19
  basicGasCost = tryAsSmallGas(10);
20
20
  currentServiceId = CURRENT_SERVICE_ID;
21
21
  tracedRegisters = traceRegisters(IN_OUT_REG, 8);
22
+ static new(refine) {
23
+ return new Export(refine);
24
+ }
22
25
  constructor(refine) {
23
26
  this.refine = refine;
24
27
  }
@@ -13,7 +13,6 @@ import { Result } from "#@typeberry/utils";
13
13
  import { SegmentExportError } from "../externalities/refine-externalities.js";
14
14
  import { TestRefineExt } from "../externalities/refine-externalities.test.js";
15
15
  import { HostCallResult } from "../general/results.js";
16
- import { emptyRegistersBuffer } from "../utils.js";
17
16
  import { Export } from "./export.js";
18
17
  const gas = gasCounter(tryAsGas(0));
19
18
  const SEGMENT_START_REG = 7;
@@ -21,14 +20,14 @@ const RESULT_REG = SEGMENT_START_REG;
21
20
  const SEGMENT_LENGTH_REG = 8;
22
21
  function prepareRegsAndMemory(segment, segmentLength = segment.length, { skipSegment = false } = {}) {
23
22
  const memStart = 2 ** 23;
24
- const registers = new HostCallRegisters(emptyRegistersBuffer());
23
+ const registers = HostCallRegisters.empty();
25
24
  registers.set(SEGMENT_START_REG, tryAsU64(memStart));
26
25
  registers.set(SEGMENT_LENGTH_REG, tryAsU64(segmentLength));
27
26
  const builder = new MemoryBuilder();
28
27
  if (!skipSegment) {
29
28
  builder.setReadablePages(tryAsMemoryIndex(memStart), tryAsMemoryIndex(memStart + 2 * PAGE_SIZE), segment.raw);
30
29
  }
31
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
30
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
32
31
  return {
33
32
  registers,
34
33
  memory,
@@ -37,7 +36,7 @@ function prepareRegsAndMemory(segment, segmentLength = segment.length, { skipSeg
37
36
  describe("HostCalls: Export", () => {
38
37
  it("should export a segment", async () => {
39
38
  const refine = new TestRefineExt();
40
- const exp = new Export(refine);
39
+ const exp = Export.new(refine);
41
40
  exp.currentServiceId = tryAsServiceId(10_000);
42
41
  const segment = Bytes.fill(SEGMENT_BYTES, 15).asOpaque();
43
42
  const { registers, memory } = prepareRegsAndMemory(segment);
@@ -51,7 +50,7 @@ describe("HostCalls: Export", () => {
51
50
  });
52
51
  it("should zero-pad when exported value is small", async () => {
53
52
  const refine = new TestRefineExt();
54
- const exp = new Export(refine);
53
+ const exp = Export.new(refine);
55
54
  exp.currentServiceId = tryAsServiceId(10_000);
56
55
  const segment = Bytes.fill(SEGMENT_BYTES, 15).asOpaque();
57
56
  const { registers, memory } = prepareRegsAndMemory(segment, 2);
@@ -68,7 +67,7 @@ describe("HostCalls: Export", () => {
68
67
  });
69
68
  it("should panic if memory is not readable", async () => {
70
69
  const refine = new TestRefineExt();
71
- const exp = new Export(refine);
70
+ const exp = Export.new(refine);
72
71
  exp.currentServiceId = tryAsServiceId(10_000);
73
72
  const segment = Bytes.fill(SEGMENT_BYTES, 15).asOpaque();
74
73
  const { registers, memory } = prepareRegsAndMemory(segment, segment.length, { skipSegment: true });
@@ -80,7 +79,7 @@ describe("HostCalls: Export", () => {
80
79
  });
81
80
  it("should fail with FULL if export limit is reached", async () => {
82
81
  const refine = new TestRefineExt();
83
- const exp = new Export(refine);
82
+ const exp = Export.new(refine);
84
83
  exp.currentServiceId = tryAsServiceId(10_000);
85
84
  const segment = Bytes.fill(SEGMENT_BYTES, 15).asOpaque();
86
85
  const { registers, memory } = prepareRegsAndMemory(segment);
@@ -12,7 +12,8 @@ export declare class Expunge implements HostCallHandler {
12
12
  basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
13
13
  currentServiceId: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"ServiceId[u32]">;
14
14
  tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
15
- constructor(refine: RefineExternalities);
15
+ static new(refine: RefineExternalities): Expunge;
16
+ private constructor();
16
17
  execute(_gas: IGasCounter, regs: HostCallRegisters): Promise<PvmExecution | undefined>;
17
18
  }
18
19
  //# sourceMappingURL=expunge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"expunge.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/refine/expunge.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAGlB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAE,KAAK,mBAAmB,EAAkB,MAAM,0CAA0C,CAAC;AAOpG;;;;GAIG;AACH,qBAAa,OAAQ,YAAW,eAAe;IAMjC,OAAO,CAAC,QAAQ,CAAC,MAAM;IALnC,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,gBAAgB,6HAAsB;IACtC,eAAe,uEAA8B;gBAEhB,MAAM,EAAE,mBAAmB;IAElD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CAe7F"}
1
+ {"version":3,"file":"expunge.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/refine/expunge.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAGlB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAE,KAAK,mBAAmB,EAAkB,MAAM,0CAA0C,CAAC;AAOpG;;;;GAIG;AACH,qBAAa,OAAQ,YAAW,eAAe;IAUzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAT3C,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,gBAAgB,6HAAsB;IACtC,eAAe,uEAA8B;IAE7C,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB;IAItC,OAAO;IAED,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CAe7F"}
@@ -17,6 +17,9 @@ export class Expunge {
17
17
  basicGasCost = tryAsSmallGas(10);
18
18
  currentServiceId = CURRENT_SERVICE_ID;
19
19
  tracedRegisters = traceRegisters(IN_OUT_REG);
20
+ static new(refine) {
21
+ return new Expunge(refine);
22
+ }
20
23
  constructor(refine) {
21
24
  this.refine = refine;
22
25
  }
@@ -9,15 +9,14 @@ import { Result } from "#@typeberry/utils";
9
9
  import { NoMachineError, tryAsMachineId, tryAsProgramCounter, } from "../externalities/refine-externalities.js";
10
10
  import { TestRefineExt } from "../externalities/refine-externalities.test.js";
11
11
  import { HostCallResult } from "../general/results.js";
12
- import { emptyRegistersBuffer } from "../utils.js";
13
12
  import { Expunge } from "./expunge.js";
14
13
  const gas = gasCounter(tryAsGas(0));
15
14
  const RESULT_REG = 7;
16
15
  function prepareRegsAndMemory(machineId) {
17
- const registers = new HostCallRegisters(emptyRegistersBuffer());
16
+ const registers = HostCallRegisters.empty();
18
17
  registers.set(7, machineId);
19
18
  const builder = new MemoryBuilder();
20
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
19
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
21
20
  return {
22
21
  registers,
23
22
  memory,
@@ -25,7 +24,7 @@ function prepareRegsAndMemory(machineId) {
25
24
  }
26
25
  function prepareTest(result) {
27
26
  const refine = new TestRefineExt();
28
- const expunge = new Expunge(refine);
27
+ const expunge = Expunge.new(refine);
29
28
  expunge.currentServiceId = tryAsServiceId(10_000);
30
29
  const machineId = tryAsMachineId(10_000);
31
30
  const { registers, memory } = prepareRegsAndMemory(machineId);
@@ -12,7 +12,8 @@ export declare class HistoricalLookup implements HostCallHandler {
12
12
  basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
13
13
  currentServiceId: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"ServiceId[u32]">;
14
14
  tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
15
- constructor(refine: RefineExternalities);
15
+ static new(refine: RefineExternalities): HistoricalLookup;
16
+ private constructor();
16
17
  execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<PvmExecution | undefined>;
17
18
  }
18
19
  //# sourceMappingURL=historical-lookup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"historical-lookup.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/refine/historical-lookup.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,YAAY,EAGb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAC3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAOpF;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,eAAe;IAM1C,OAAO,CAAC,QAAQ,CAAC,MAAM;IALnC,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,gBAAgB,6HAAsB;IACtC,eAAe,uEAAoC;gBAEtB,MAAM,EAAE,mBAAmB;IAElD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CAyCrH"}
1
+ {"version":3,"file":"historical-lookup.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/refine/historical-lookup.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,YAAY,EAGb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAC3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAOpF;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,eAAe;IAUlC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAT3C,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,gBAAgB,6HAAsB;IACtC,eAAe,uEAAoC;IAEnD,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB;IAItC,OAAO;IAED,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CAyCrH"}
@@ -18,6 +18,9 @@ export class HistoricalLookup {
18
18
  basicGasCost = tryAsSmallGas(10);
19
19
  currentServiceId = CURRENT_SERVICE_ID;
20
20
  tracedRegisters = traceRegisters(IN_OUT_REG, 8, 9);
21
+ static new(refine) {
22
+ return new HistoricalLookup(refine);
23
+ }
21
24
  constructor(refine) {
22
25
  this.refine = refine;
23
26
  }