@typeberry/lib 0.5.10-ec38e0b → 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 (452) 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/index.test.js +1 -1
  7. package/packages/core/codec/skip.d.ts +2 -1
  8. package/packages/core/codec/skip.d.ts.map +1 -1
  9. package/packages/core/codec/skip.js +3 -0
  10. package/packages/core/codec/view.js +2 -2
  11. package/packages/core/collections/multi-map.d.ts +2 -1
  12. package/packages/core/collections/multi-map.d.ts.map +1 -1
  13. package/packages/core/collections/multi-map.js +3 -0
  14. package/packages/core/collections/multi-map.test.js +2 -2
  15. package/packages/core/concurrent/parent.js +4 -1
  16. package/packages/core/crypto/ed25519.d.ts +2 -5
  17. package/packages/core/crypto/ed25519.d.ts.map +1 -1
  18. package/packages/core/crypto/ed25519.js +4 -1
  19. package/packages/core/hash/hash.d.ts +4 -2
  20. package/packages/core/hash/hash.d.ts.map +1 -1
  21. package/packages/core/hash/hash.js +6 -1
  22. package/packages/core/networking/quic-network.d.ts +3 -2
  23. package/packages/core/networking/quic-network.d.ts.map +1 -1
  24. package/packages/core/networking/quic-network.js +3 -0
  25. package/packages/core/networking/quic-peer.d.ts +2 -1
  26. package/packages/core/networking/quic-peer.d.ts.map +1 -1
  27. package/packages/core/networking/quic-peer.js +5 -2
  28. package/packages/core/networking/quic-stream.d.ts +2 -1
  29. package/packages/core/networking/quic-stream.d.ts.map +1 -1
  30. package/packages/core/networking/quic-stream.js +3 -0
  31. package/packages/core/networking/setup.js +2 -2
  32. package/packages/core/pvm-host-calls/bin.js +2 -2
  33. package/packages/core/pvm-host-calls/ecalli-trace-logger.d.ts +5 -0
  34. package/packages/core/pvm-host-calls/ecalli-trace-logger.d.ts.map +1 -1
  35. package/packages/core/pvm-host-calls/ecalli-trace-logger.js +8 -1
  36. package/packages/core/pvm-host-calls/ecalli-trace-logger.test.js +1 -1
  37. package/packages/core/pvm-host-calls/host-call-memory.d.ts +2 -1
  38. package/packages/core/pvm-host-calls/host-call-memory.d.ts.map +1 -1
  39. package/packages/core/pvm-host-calls/host-call-memory.js +3 -0
  40. package/packages/core/pvm-host-calls/host-call-memory.test.js +1 -1
  41. package/packages/core/pvm-host-calls/host-call-registers.d.ts +5 -1
  42. package/packages/core/pvm-host-calls/host-call-registers.d.ts.map +1 -1
  43. package/packages/core/pvm-host-calls/host-call-registers.js +11 -1
  44. package/packages/core/pvm-host-calls/host-call-registers.test.js +2 -2
  45. package/packages/core/pvm-host-calls/host-calls-executor.d.ts +2 -1
  46. package/packages/core/pvm-host-calls/host-calls-executor.d.ts.map +1 -1
  47. package/packages/core/pvm-host-calls/host-calls-executor.js +5 -2
  48. package/packages/core/pvm-host-calls/host-calls.d.ts +4 -2
  49. package/packages/core/pvm-host-calls/host-calls.d.ts.map +1 -1
  50. package/packages/core/pvm-host-calls/host-calls.js +9 -4
  51. package/packages/core/pvm-host-calls/pvm-instance-manager.js +1 -1
  52. package/packages/core/pvm-interpreter/args-decoder/args-decoder.js +1 -1
  53. package/packages/core/pvm-interpreter/args-decoder/args-decoder.test.js +3 -3
  54. package/packages/core/pvm-interpreter/args-decoder/args-decoding-results.js +11 -11
  55. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.d.ts +2 -1
  56. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.d.ts.map +1 -1
  57. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.js +3 -0
  58. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.test.js +2 -2
  59. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.d.ts +2 -1
  60. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.d.ts.map +1 -1
  61. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.js +3 -0
  62. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.test.js +26 -26
  63. package/packages/core/pvm-interpreter/basic-blocks/basic-blocks.test.js +8 -8
  64. package/packages/core/pvm-interpreter/bin.js +1 -1
  65. package/packages/core/pvm-interpreter/debugger-adapter.d.ts +2 -1
  66. package/packages/core/pvm-interpreter/debugger-adapter.d.ts.map +1 -1
  67. package/packages/core/pvm-interpreter/debugger-adapter.js +6 -3
  68. package/packages/core/pvm-interpreter/gas.js +4 -1
  69. package/packages/core/pvm-interpreter/interpreter.d.ts +2 -1
  70. package/packages/core/pvm-interpreter/interpreter.d.ts.map +1 -1
  71. package/packages/core/pvm-interpreter/interpreter.js +19 -16
  72. package/packages/core/pvm-interpreter/memory/memory-builder.js +2 -2
  73. package/packages/core/pvm-interpreter/memory/memory-builder.test.js +7 -7
  74. package/packages/core/pvm-interpreter/memory/memory.d.ts +2 -1
  75. package/packages/core/pvm-interpreter/memory/memory.d.ts.map +1 -1
  76. package/packages/core/pvm-interpreter/memory/memory.js +4 -1
  77. package/packages/core/pvm-interpreter/memory/memory.test.js +31 -31
  78. package/packages/core/pvm-interpreter/memory/pages/readable-page.d.ts +2 -1
  79. package/packages/core/pvm-interpreter/memory/pages/readable-page.d.ts.map +1 -1
  80. package/packages/core/pvm-interpreter/memory/pages/readable-page.js +3 -0
  81. package/packages/core/pvm-interpreter/memory/pages/readable-page.test.js +3 -3
  82. package/packages/core/pvm-interpreter/memory/pages/writeable-page.d.ts +2 -1
  83. package/packages/core/pvm-interpreter/memory/pages/writeable-page.d.ts.map +1 -1
  84. package/packages/core/pvm-interpreter/memory/pages/writeable-page.js +3 -0
  85. package/packages/core/pvm-interpreter/memory/pages/writeable-page.test.js +4 -4
  86. package/packages/core/pvm-interpreter/ops/bit-ops.d.ts +2 -1
  87. package/packages/core/pvm-interpreter/ops/bit-ops.d.ts.map +1 -1
  88. package/packages/core/pvm-interpreter/ops/bit-ops.js +3 -0
  89. package/packages/core/pvm-interpreter/ops/bit-ops.test.js +3 -3
  90. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.d.ts +2 -1
  91. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.d.ts.map +1 -1
  92. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.js +3 -0
  93. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.test.js +5 -5
  94. package/packages/core/pvm-interpreter/ops/boolean-ops.d.ts +2 -1
  95. package/packages/core/pvm-interpreter/ops/boolean-ops.d.ts.map +1 -1
  96. package/packages/core/pvm-interpreter/ops/boolean-ops.js +3 -0
  97. package/packages/core/pvm-interpreter/ops/boolean-ops.test.js +3 -3
  98. package/packages/core/pvm-interpreter/ops/branch-ops.d.ts +2 -1
  99. package/packages/core/pvm-interpreter/ops/branch-ops.d.ts.map +1 -1
  100. package/packages/core/pvm-interpreter/ops/branch-ops.js +3 -0
  101. package/packages/core/pvm-interpreter/ops/branch-ops.test.js +4 -4
  102. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.d.ts +2 -1
  103. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.d.ts.map +1 -1
  104. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.js +3 -0
  105. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.test.js +5 -5
  106. package/packages/core/pvm-interpreter/ops/host-call-ops.d.ts +2 -1
  107. package/packages/core/pvm-interpreter/ops/host-call-ops.d.ts.map +1 -1
  108. package/packages/core/pvm-interpreter/ops/host-call-ops.js +3 -0
  109. package/packages/core/pvm-interpreter/ops/host-call-ops.test.js +2 -2
  110. package/packages/core/pvm-interpreter/ops/load-ops.d.ts +2 -1
  111. package/packages/core/pvm-interpreter/ops/load-ops.d.ts.map +1 -1
  112. package/packages/core/pvm-interpreter/ops/load-ops.js +3 -0
  113. package/packages/core/pvm-interpreter/ops/load-ops.test.js +10 -10
  114. package/packages/core/pvm-interpreter/ops/math-ops.d.ts +2 -1
  115. package/packages/core/pvm-interpreter/ops/math-ops.d.ts.map +1 -1
  116. package/packages/core/pvm-interpreter/ops/math-ops.js +3 -0
  117. package/packages/core/pvm-interpreter/ops/math-ops.test.js +3 -3
  118. package/packages/core/pvm-interpreter/ops/memory-ops.d.ts +2 -1
  119. package/packages/core/pvm-interpreter/ops/memory-ops.d.ts.map +1 -1
  120. package/packages/core/pvm-interpreter/ops/memory-ops.js +3 -0
  121. package/packages/core/pvm-interpreter/ops/memory-ops.test.js +3 -3
  122. package/packages/core/pvm-interpreter/ops/move-ops.d.ts +2 -1
  123. package/packages/core/pvm-interpreter/ops/move-ops.d.ts.map +1 -1
  124. package/packages/core/pvm-interpreter/ops/move-ops.js +3 -0
  125. package/packages/core/pvm-interpreter/ops/move-ops.test.js +3 -3
  126. package/packages/core/pvm-interpreter/ops/no-args-ops.d.ts +2 -1
  127. package/packages/core/pvm-interpreter/ops/no-args-ops.d.ts.map +1 -1
  128. package/packages/core/pvm-interpreter/ops/no-args-ops.js +3 -0
  129. package/packages/core/pvm-interpreter/ops/no-args-ops.test.js +2 -2
  130. package/packages/core/pvm-interpreter/ops/shift-ops.d.ts +2 -1
  131. package/packages/core/pvm-interpreter/ops/shift-ops.d.ts.map +1 -1
  132. package/packages/core/pvm-interpreter/ops/shift-ops.js +3 -0
  133. package/packages/core/pvm-interpreter/ops/shift-ops.test.js +3 -3
  134. package/packages/core/pvm-interpreter/ops/store-ops.d.ts +2 -1
  135. package/packages/core/pvm-interpreter/ops/store-ops.d.ts.map +1 -1
  136. package/packages/core/pvm-interpreter/ops/store-ops.js +3 -0
  137. package/packages/core/pvm-interpreter/ops/store-ops.test.js +7 -7
  138. package/packages/core/pvm-interpreter/ops-dispatchers/no-args-dispatcher.test.js +1 -1
  139. package/packages/core/pvm-interpreter/ops-dispatchers/one-imm-dispatcher.test.js +4 -4
  140. package/packages/core/pvm-interpreter/ops-dispatchers/one-offset-dispatcher.test.js +2 -2
  141. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-ext-imm-dispatcher.test.js +4 -4
  142. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-imm-dispatcher.test.js +7 -7
  143. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-imm-one-offset-dispatcher.test.js +10 -10
  144. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-two-imms-dispatcher.test.js +5 -5
  145. package/packages/core/pvm-interpreter/ops-dispatchers/three-regs-dispatcher.test.js +7 -7
  146. package/packages/core/pvm-interpreter/ops-dispatchers/two-imms-dispatcher.test.js +5 -5
  147. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-dispatcher.test.js +6 -6
  148. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-one-imm-dispatcher.test.js +11 -11
  149. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-one-offset-dispatcher.test.js +2 -2
  150. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-two-imms-dispatcher.test.js +14 -14
  151. package/packages/core/pvm-interpreter/program-decoder/jump-table.d.ts +5 -2
  152. package/packages/core/pvm-interpreter/program-decoder/jump-table.d.ts.map +1 -1
  153. package/packages/core/pvm-interpreter/program-decoder/jump-table.js +9 -4
  154. package/packages/core/pvm-interpreter/program-decoder/jump-table.test.js +6 -6
  155. package/packages/core/pvm-interpreter/program-decoder/mask.d.ts +2 -1
  156. package/packages/core/pvm-interpreter/program-decoder/mask.d.ts.map +1 -1
  157. package/packages/core/pvm-interpreter/program-decoder/mask.js +3 -0
  158. package/packages/core/pvm-interpreter/program-decoder/mask.test.js +10 -10
  159. package/packages/core/pvm-interpreter/program-decoder/program-decoder.d.ts +2 -1
  160. package/packages/core/pvm-interpreter/program-decoder/program-decoder.d.ts.map +1 -1
  161. package/packages/core/pvm-interpreter/program-decoder/program-decoder.js +6 -3
  162. package/packages/core/pvm-interpreter/program-decoder/program-decoder.test.js +5 -5
  163. package/packages/core/pvm-interpreter/program.js +3 -3
  164. package/packages/core/pvm-interpreter/registers.d.ts +5 -2
  165. package/packages/core/pvm-interpreter/registers.d.ts.map +1 -1
  166. package/packages/core/pvm-interpreter/registers.js +10 -6
  167. package/packages/core/pvm-interpreter/registers.test.js +10 -10
  168. package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.d.ts +6 -3
  169. package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.d.ts.map +1 -1
  170. package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.js +11 -2
  171. package/packages/core/pvm-interpreter-ananas/index.d.ts +6 -3
  172. package/packages/core/pvm-interpreter-ananas/index.d.ts.map +1 -1
  173. package/packages/core/pvm-interpreter-ananas/index.js +12 -3
  174. package/packages/core/trie/nodes.d.ts +7 -2
  175. package/packages/core/trie/nodes.d.ts.map +1 -1
  176. package/packages/core/trie/nodes.js +20 -11
  177. package/packages/core/trie/nodesDb.d.ts +3 -1
  178. package/packages/core/trie/nodesDb.d.ts.map +1 -1
  179. package/packages/core/trie/nodesDb.js +6 -0
  180. package/packages/core/trie/trie.js +2 -2
  181. package/packages/extensions/ipc/index.js +5 -2
  182. package/packages/extensions/ipc/jamnp/handler.d.ts +4 -2
  183. package/packages/extensions/ipc/jamnp/handler.d.ts.map +1 -1
  184. package/packages/extensions/ipc/jamnp/handler.js +9 -3
  185. package/packages/extensions/ipc/jamnp/server.js +3 -3
  186. package/packages/extensions/ipc/server.d.ts +2 -1
  187. package/packages/extensions/ipc/server.d.ts.map +1 -1
  188. package/packages/extensions/ipc/server.js +4 -1
  189. package/packages/jam/block/header.js +1 -1
  190. package/packages/jam/config/chain-spec.d.ts +2 -1
  191. package/packages/jam/config/chain-spec.d.ts.map +1 -1
  192. package/packages/jam/config/chain-spec.js +5 -2
  193. package/packages/jam/config/network.d.ts +2 -7
  194. package/packages/jam/config/network.d.ts.map +1 -1
  195. package/packages/jam/config/network.js +3 -0
  196. package/packages/jam/config-node/jip-chain-spec.js +1 -1
  197. package/packages/jam/database/blocks.test.js +1 -1
  198. package/packages/jam/database/states.d.ts +2 -1
  199. package/packages/jam/database/states.d.ts.map +1 -1
  200. package/packages/jam/database/states.js +3 -0
  201. package/packages/jam/database/states.test.js +1 -1
  202. package/packages/jam/database-lmdb/blocks.d.ts +2 -1
  203. package/packages/jam/database-lmdb/blocks.d.ts.map +1 -1
  204. package/packages/jam/database-lmdb/blocks.js +3 -0
  205. package/packages/jam/database-lmdb/root.d.ts +2 -1
  206. package/packages/jam/database-lmdb/root.d.ts.map +1 -1
  207. package/packages/jam/database-lmdb/root.js +3 -0
  208. package/packages/jam/database-lmdb/states.d.ts +2 -1
  209. package/packages/jam/database-lmdb/states.d.ts.map +1 -1
  210. package/packages/jam/database-lmdb/states.js +3 -0
  211. package/packages/jam/database-lmdb/states.test.js +9 -9
  212. package/packages/jam/executor/index.d.ts +1 -1
  213. package/packages/jam/executor/index.d.ts.map +1 -1
  214. package/packages/jam/executor/index.js +1 -1
  215. package/packages/jam/executor/pvm-executor.js +24 -24
  216. package/packages/jam/fuzz-proto/v1/handler.d.ts +2 -1
  217. package/packages/jam/fuzz-proto/v1/handler.d.ts.map +1 -1
  218. package/packages/jam/fuzz-proto/v1/handler.js +3 -0
  219. package/packages/jam/fuzz-proto/v1/handler.test.js +10 -10
  220. package/packages/jam/in-core/externalities/refine.d.ts +3 -3
  221. package/packages/jam/in-core/externalities/refine.d.ts.map +1 -1
  222. package/packages/jam/in-core/externalities/refine.js +33 -5
  223. package/packages/jam/in-core/externalities/refine.test.js +66 -1
  224. package/packages/jam/in-core/in-core.d.ts +2 -1
  225. package/packages/jam/in-core/in-core.d.ts.map +1 -1
  226. package/packages/jam/in-core/in-core.js +3 -0
  227. package/packages/jam/in-core/in-core.test.js +6 -6
  228. package/packages/jam/in-core/is-authorized.test.js +2 -2
  229. package/packages/jam/in-core/refine.js +1 -1
  230. package/packages/jam/jam-host-calls/accumulate/assign.d.ts +2 -1
  231. package/packages/jam/jam-host-calls/accumulate/assign.d.ts.map +1 -1
  232. package/packages/jam/jam-host-calls/accumulate/assign.js +3 -0
  233. package/packages/jam/jam-host-calls/accumulate/assign.test.js +8 -9
  234. package/packages/jam/jam-host-calls/accumulate/bless.d.ts +2 -1
  235. package/packages/jam/jam-host-calls/accumulate/bless.d.ts.map +1 -1
  236. package/packages/jam/jam-host-calls/accumulate/bless.js +3 -0
  237. package/packages/jam/jam-host-calls/accumulate/bless.test.js +11 -12
  238. package/packages/jam/jam-host-calls/accumulate/checkpoint.d.ts +2 -1
  239. package/packages/jam/jam-host-calls/accumulate/checkpoint.d.ts.map +1 -1
  240. package/packages/jam/jam-host-calls/accumulate/checkpoint.js +4 -1
  241. package/packages/jam/jam-host-calls/accumulate/checkpoint.test.js +2 -3
  242. package/packages/jam/jam-host-calls/accumulate/designate.d.ts +2 -1
  243. package/packages/jam/jam-host-calls/accumulate/designate.d.ts.map +1 -1
  244. package/packages/jam/jam-host-calls/accumulate/designate.js +3 -0
  245. package/packages/jam/jam-host-calls/accumulate/designate.test.js +5 -6
  246. package/packages/jam/jam-host-calls/accumulate/eject.d.ts +2 -1
  247. package/packages/jam/jam-host-calls/accumulate/eject.d.ts.map +1 -1
  248. package/packages/jam/jam-host-calls/accumulate/eject.js +3 -0
  249. package/packages/jam/jam-host-calls/accumulate/eject.test.js +8 -9
  250. package/packages/jam/jam-host-calls/accumulate/forget.d.ts +2 -1
  251. package/packages/jam/jam-host-calls/accumulate/forget.d.ts.map +1 -1
  252. package/packages/jam/jam-host-calls/accumulate/forget.js +3 -0
  253. package/packages/jam/jam-host-calls/accumulate/forget.test.js +5 -6
  254. package/packages/jam/jam-host-calls/accumulate/new.d.ts +2 -1
  255. package/packages/jam/jam-host-calls/accumulate/new.d.ts.map +1 -1
  256. package/packages/jam/jam-host-calls/accumulate/new.js +3 -0
  257. package/packages/jam/jam-host-calls/accumulate/new.test.js +9 -10
  258. package/packages/jam/jam-host-calls/accumulate/provide.d.ts +2 -1
  259. package/packages/jam/jam-host-calls/accumulate/provide.d.ts.map +1 -1
  260. package/packages/jam/jam-host-calls/accumulate/provide.js +3 -0
  261. package/packages/jam/jam-host-calls/accumulate/provide.test.js +8 -9
  262. package/packages/jam/jam-host-calls/accumulate/query.d.ts +2 -1
  263. package/packages/jam/jam-host-calls/accumulate/query.d.ts.map +1 -1
  264. package/packages/jam/jam-host-calls/accumulate/query.js +3 -0
  265. package/packages/jam/jam-host-calls/accumulate/query.test.js +8 -9
  266. package/packages/jam/jam-host-calls/accumulate/solicit.d.ts +2 -1
  267. package/packages/jam/jam-host-calls/accumulate/solicit.d.ts.map +1 -1
  268. package/packages/jam/jam-host-calls/accumulate/solicit.js +3 -0
  269. package/packages/jam/jam-host-calls/accumulate/solicit.test.js +7 -8
  270. package/packages/jam/jam-host-calls/accumulate/transfer.d.ts +2 -1
  271. package/packages/jam/jam-host-calls/accumulate/transfer.d.ts.map +1 -1
  272. package/packages/jam/jam-host-calls/accumulate/transfer.js +3 -0
  273. package/packages/jam/jam-host-calls/accumulate/transfer.test.js +9 -10
  274. package/packages/jam/jam-host-calls/accumulate/upgrade.d.ts +2 -1
  275. package/packages/jam/jam-host-calls/accumulate/upgrade.d.ts.map +1 -1
  276. package/packages/jam/jam-host-calls/accumulate/upgrade.js +3 -0
  277. package/packages/jam/jam-host-calls/accumulate/upgrade.test.js +4 -5
  278. package/packages/jam/jam-host-calls/accumulate/yield.d.ts +2 -1
  279. package/packages/jam/jam-host-calls/accumulate/yield.d.ts.map +1 -1
  280. package/packages/jam/jam-host-calls/accumulate/yield.js +3 -0
  281. package/packages/jam/jam-host-calls/accumulate/yield.test.js +4 -5
  282. package/packages/jam/jam-host-calls/externalities/refine-externalities.test.js +9 -9
  283. package/packages/jam/jam-host-calls/externalities/state-update.d.ts +2 -3
  284. package/packages/jam/jam-host-calls/externalities/state-update.d.ts.map +1 -1
  285. package/packages/jam/jam-host-calls/externalities/state-update.js +5 -2
  286. package/packages/jam/jam-host-calls/externalities/test-accounts.js +2 -2
  287. package/packages/jam/jam-host-calls/general/fetch.d.ts +2 -1
  288. package/packages/jam/jam-host-calls/general/fetch.d.ts.map +1 -1
  289. package/packages/jam/jam-host-calls/general/fetch.js +3 -0
  290. package/packages/jam/jam-host-calls/general/fetch.test.js +27 -28
  291. package/packages/jam/jam-host-calls/general/gas.d.ts +2 -1
  292. package/packages/jam/jam-host-calls/general/gas.d.ts.map +1 -1
  293. package/packages/jam/jam-host-calls/general/gas.js +3 -0
  294. package/packages/jam/jam-host-calls/general/gas.test.js +4 -5
  295. package/packages/jam/jam-host-calls/general/info.d.ts +2 -1
  296. package/packages/jam/jam-host-calls/general/info.d.ts.map +1 -1
  297. package/packages/jam/jam-host-calls/general/info.js +3 -0
  298. package/packages/jam/jam-host-calls/general/info.test.js +6 -7
  299. package/packages/jam/jam-host-calls/general/log.d.ts +2 -1
  300. package/packages/jam/jam-host-calls/general/log.d.ts.map +1 -1
  301. package/packages/jam/jam-host-calls/general/log.js +3 -0
  302. package/packages/jam/jam-host-calls/general/lookup.d.ts +2 -1
  303. package/packages/jam/jam-host-calls/general/lookup.d.ts.map +1 -1
  304. package/packages/jam/jam-host-calls/general/lookup.js +3 -0
  305. package/packages/jam/jam-host-calls/general/lookup.test.js +8 -9
  306. package/packages/jam/jam-host-calls/general/read.d.ts +2 -1
  307. package/packages/jam/jam-host-calls/general/read.d.ts.map +1 -1
  308. package/packages/jam/jam-host-calls/general/read.js +3 -0
  309. package/packages/jam/jam-host-calls/general/read.test.js +11 -12
  310. package/packages/jam/jam-host-calls/general/write.d.ts +2 -1
  311. package/packages/jam/jam-host-calls/general/write.d.ts.map +1 -1
  312. package/packages/jam/jam-host-calls/general/write.js +3 -0
  313. package/packages/jam/jam-host-calls/general/write.test.js +10 -11
  314. package/packages/jam/jam-host-calls/refine/export.d.ts +2 -1
  315. package/packages/jam/jam-host-calls/refine/export.d.ts.map +1 -1
  316. package/packages/jam/jam-host-calls/refine/export.js +3 -0
  317. package/packages/jam/jam-host-calls/refine/export.test.js +6 -7
  318. package/packages/jam/jam-host-calls/refine/expunge.d.ts +2 -1
  319. package/packages/jam/jam-host-calls/refine/expunge.d.ts.map +1 -1
  320. package/packages/jam/jam-host-calls/refine/expunge.js +3 -0
  321. package/packages/jam/jam-host-calls/refine/expunge.test.js +3 -4
  322. package/packages/jam/jam-host-calls/refine/historical-lookup.d.ts +2 -1
  323. package/packages/jam/jam-host-calls/refine/historical-lookup.d.ts.map +1 -1
  324. package/packages/jam/jam-host-calls/refine/historical-lookup.js +3 -0
  325. package/packages/jam/jam-host-calls/refine/historical-lookup.test.js +11 -12
  326. package/packages/jam/jam-host-calls/refine/invoke.d.ts +2 -1
  327. package/packages/jam/jam-host-calls/refine/invoke.d.ts.map +1 -1
  328. package/packages/jam/jam-host-calls/refine/invoke.js +4 -1
  329. package/packages/jam/jam-host-calls/refine/invoke.test.js +10 -11
  330. package/packages/jam/jam-host-calls/refine/machine.d.ts +2 -1
  331. package/packages/jam/jam-host-calls/refine/machine.d.ts.map +1 -1
  332. package/packages/jam/jam-host-calls/refine/machine.js +3 -0
  333. package/packages/jam/jam-host-calls/refine/machine.test.js +6 -7
  334. package/packages/jam/jam-host-calls/refine/pages.d.ts +2 -1
  335. package/packages/jam/jam-host-calls/refine/pages.d.ts.map +1 -1
  336. package/packages/jam/jam-host-calls/refine/pages.js +3 -0
  337. package/packages/jam/jam-host-calls/refine/pages.test.js +3 -4
  338. package/packages/jam/jam-host-calls/refine/peek.d.ts +2 -1
  339. package/packages/jam/jam-host-calls/refine/peek.d.ts.map +1 -1
  340. package/packages/jam/jam-host-calls/refine/peek.js +3 -0
  341. package/packages/jam/jam-host-calls/refine/peek.test.js +3 -4
  342. package/packages/jam/jam-host-calls/refine/poke.d.ts +2 -1
  343. package/packages/jam/jam-host-calls/refine/poke.d.ts.map +1 -1
  344. package/packages/jam/jam-host-calls/refine/poke.js +3 -0
  345. package/packages/jam/jam-host-calls/refine/poke.test.js +3 -4
  346. package/packages/jam/jamnp-s/network.js +1 -1
  347. package/packages/jam/jamnp-s/peers.d.ts +2 -1
  348. package/packages/jam/jamnp-s/peers.d.ts.map +1 -1
  349. package/packages/jam/jamnp-s/peers.js +3 -0
  350. package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts +4 -2
  351. package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts.map +1 -1
  352. package/packages/jam/jamnp-s/protocol/ce-128-block-request.js +6 -0
  353. package/packages/jam/jamnp-s/protocol/ce-128-block-request.test.js +2 -2
  354. package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts +4 -2
  355. package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts.map +1 -1
  356. package/packages/jam/jamnp-s/protocol/ce-129-state-request.js +6 -0
  357. package/packages/jam/jamnp-s/protocol/ce-129-state-request.test.js +4 -4
  358. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts +4 -2
  359. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts.map +1 -1
  360. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.js +6 -0
  361. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.test.js +2 -2
  362. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts +4 -1
  363. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts.map +1 -1
  364. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.js +7 -0
  365. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.test.js +2 -2
  366. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts +5 -2
  367. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts.map +1 -1
  368. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.js +7 -0
  369. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.test.js +2 -2
  370. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts +4 -2
  371. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts.map +1 -1
  372. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.js +6 -0
  373. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.test.js +2 -2
  374. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts +2 -1
  375. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts.map +1 -1
  376. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.js +3 -0
  377. package/packages/jam/jamnp-s/stream-manager.d.ts +2 -1
  378. package/packages/jam/jamnp-s/stream-manager.d.ts.map +1 -1
  379. package/packages/jam/jamnp-s/stream-manager.js +4 -1
  380. package/packages/jam/jamnp-s/tasks/sync.js +4 -4
  381. package/packages/jam/jamnp-s/tasks/sync.test.js +4 -4
  382. package/packages/jam/jamnp-s/tasks/ticket-distribution.js +2 -2
  383. package/packages/jam/jamnp-s/tasks/ticket-distribution.test.js +1 -1
  384. package/packages/jam/node/common.d.ts.map +1 -1
  385. package/packages/jam/node/common.js +3 -3
  386. package/packages/jam/rpc-client/index.d.ts +4 -2
  387. package/packages/jam/rpc-client/index.d.ts.map +1 -1
  388. package/packages/jam/rpc-client/index.js +7 -1
  389. package/packages/jam/state/in-memory-state-view.d.ts +2 -1
  390. package/packages/jam/state/in-memory-state-view.d.ts.map +1 -1
  391. package/packages/jam/state/in-memory-state-view.js +3 -0
  392. package/packages/jam/state/in-memory-state.d.ts +16 -21
  393. package/packages/jam/state/in-memory-state.d.ts.map +1 -1
  394. package/packages/jam/state/in-memory-state.js +10 -6
  395. package/packages/jam/state/in-memory-state.test.js +2 -2
  396. package/packages/jam/state/service.d.ts +2 -6
  397. package/packages/jam/state/service.d.ts.map +1 -1
  398. package/packages/jam/state/service.js +3 -0
  399. package/packages/jam/state/test.utils.js +3 -3
  400. package/packages/jam/state-json/accounts.js +5 -5
  401. package/packages/jam/state-merkleization/in-memory-state-codec.d.ts +3 -34
  402. package/packages/jam/state-merkleization/in-memory-state-codec.d.ts.map +1 -1
  403. package/packages/jam/state-merkleization/in-memory-state-codec.js +1 -1
  404. package/packages/jam/state-merkleization/serialized-state-view.d.ts +8 -3
  405. package/packages/jam/state-merkleization/serialized-state-view.d.ts.map +1 -1
  406. package/packages/jam/state-merkleization/serialized-state-view.js +6 -3
  407. package/packages/jam/state-merkleization/serialized-state.d.ts +2 -3
  408. package/packages/jam/state-merkleization/serialized-state.d.ts.map +1 -1
  409. package/packages/jam/state-merkleization/serialized-state.js +10 -2
  410. package/packages/jam/state-merkleization/serialized-state.test.js +1 -1
  411. package/packages/jam/transition/accumulate/accumulate.d.ts.map +1 -1
  412. package/packages/jam/transition/accumulate/accumulate.js +18 -6
  413. package/packages/jam/transition/accumulate/accumulate.test.js +1 -1
  414. package/packages/jam/transition/block-verifier.d.ts +2 -1
  415. package/packages/jam/transition/block-verifier.d.ts.map +1 -1
  416. package/packages/jam/transition/block-verifier.js +3 -0
  417. package/packages/jam/transition/block-verifier.test.js +8 -8
  418. package/packages/jam/transition/chain-stf.d.ts +12 -4
  419. package/packages/jam/transition/chain-stf.d.ts.map +1 -1
  420. package/packages/jam/transition/chain-stf.js +7 -3
  421. package/packages/jam/transition/externalities/accumulate-externalities.d.ts +20 -6
  422. package/packages/jam/transition/externalities/accumulate-externalities.d.ts.map +1 -1
  423. package/packages/jam/transition/externalities/accumulate-externalities.js +29 -22
  424. package/packages/jam/transition/externalities/accumulate-externalities.test.js +590 -100
  425. package/packages/jam/transition/externalities/refine-fetch-externalities.d.ts +2 -1
  426. package/packages/jam/transition/externalities/refine-fetch-externalities.d.ts.map +1 -1
  427. package/packages/jam/transition/externalities/refine-fetch-externalities.js +3 -0
  428. package/packages/jam/transition/externalities/refine-fetch-externalities.test.js +1 -1
  429. package/packages/jam/transition/hasher.d.ts +2 -1
  430. package/packages/jam/transition/hasher.d.ts.map +1 -1
  431. package/packages/jam/transition/hasher.js +5 -2
  432. package/packages/jam/transition/hasher.test.js +1 -1
  433. package/packages/jam/transition/preimages.test.js +4 -4
  434. package/packages/jam/transition/reports/test.utils.js +1 -1
  435. package/packages/workers/api-node/config.js +4 -4
  436. package/packages/workers/api-node/port.d.ts +2 -1
  437. package/packages/workers/api-node/port.d.ts.map +1 -1
  438. package/packages/workers/api-node/port.js +4 -1
  439. package/packages/workers/api-node/port.test.js +2 -2
  440. package/packages/workers/api-node/protocol.js +2 -2
  441. package/packages/workers/block-authorship/generator.d.ts +13 -2
  442. package/packages/workers/block-authorship/generator.d.ts.map +1 -1
  443. package/packages/workers/block-authorship/generator.js +13 -9
  444. package/packages/workers/block-authorship/generator.test.js +16 -2
  445. package/packages/workers/block-authorship/main.d.ts.map +1 -1
  446. package/packages/workers/block-authorship/main.js +8 -1
  447. package/packages/workers/importer/finality.test.js +1 -1
  448. package/packages/workers/importer/importer.d.ts +23 -6
  449. package/packages/workers/importer/importer.d.ts.map +1 -1
  450. package/packages/workers/importer/importer.js +34 -19
  451. package/packages/workers/importer/main.d.ts.map +1 -1
  452. package/packages/workers/importer/main.js +13 -5
@@ -8,7 +8,6 @@ import { HostCallMemory, HostCallRegisters, PvmExecution } from "#@typeberry/pvm
8
8
  import { tryAsGas } from "#@typeberry/pvm-interface";
9
9
  import { gasCounter, MemoryBuilder, tryAsMemoryIndex, tryAsSbrkIndex } from "#@typeberry/pvm-interpreter";
10
10
  import { PAGE_SIZE } from "#@typeberry/pvm-interpreter/memory/memory-consts.js";
11
- import { emptyRegistersBuffer } from "../utils.js";
12
11
  import { Fetch, FetchContext, FetchKind } from "./fetch.js";
13
12
  import { HostCallResult } from "./results.js";
14
13
  describe("Fetch", () => {
@@ -20,15 +19,15 @@ describe("Fetch", () => {
20
19
  const fetchMock = new RefineFetchMock();
21
20
  fetchMock.constantsResponse = blob;
22
21
  const badOffset = tryAsU64(0xfffff);
23
- const registers = new HostCallRegisters(emptyRegistersBuffer());
22
+ const registers = HostCallRegisters.empty();
24
23
  registers.set(IN_OUT_REG, badOffset);
25
24
  registers.set(8, tryAsU64(0));
26
25
  registers.set(9, tryAsU64(blob.length));
27
26
  registers.set(10, tryAsU64(FetchKind.Constants));
28
27
  const builder = new MemoryBuilder();
29
28
  // do not define any writable memory!
30
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
31
- const fetch = new Fetch(currentServiceId, fetchMock);
29
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
30
+ const fetch = Fetch.new(currentServiceId, fetchMock);
32
31
  const result = await fetch.execute(gas, registers, memory);
33
32
  assert.strictEqual(result, PvmExecution.Panic);
34
33
  });
@@ -41,7 +40,7 @@ describe("Fetch", () => {
41
40
  // set work item index to one that has no response → oneWorkItem returns null
42
41
  registers.set(11, tryAsU64(999));
43
42
  fetchMock.oneWorkItemResponses.set("999", null);
44
- const fetch = new Fetch(currentServiceId, fetchMock);
43
+ const fetch = Fetch.new(currentServiceId, fetchMock);
45
44
  const result = await fetch.execute(gas, registers, memory);
46
45
  assert.strictEqual(result, undefined);
47
46
  assert.strictEqual(registers.get(IN_OUT_REG), HostCallResult.NONE);
@@ -54,7 +53,7 @@ describe("Fetch", () => {
54
53
  const fetchMock = new RefineFetchMock();
55
54
  fetchMock.constantsResponse = blob;
56
55
  const { registers, memory, readBack } = prepareRegsAndMemory(blob, FetchKind.Constants, 5, 2);
57
- const fetch = new Fetch(currentServiceId, fetchMock);
56
+ const fetch = Fetch.new(currentServiceId, fetchMock);
58
57
  const result = await fetch.execute(gas, registers, memory);
59
58
  assert.strictEqual(result, undefined);
60
59
  assert.deepStrictEqual(registers.get(IN_OUT_REG), tryAsU64(blob.length));
@@ -66,7 +65,7 @@ describe("Fetch", () => {
66
65
  const fetchMock = new RefineFetchMock();
67
66
  fetchMock.constantsResponse = blob;
68
67
  const { registers, memory, readBack } = prepareRegsAndMemory(blob, FetchKind.Constants, 3, 10);
69
- const fetch = new Fetch(currentServiceId, fetchMock);
68
+ const fetch = Fetch.new(currentServiceId, fetchMock);
70
69
  const result = await fetch.execute(gas, registers, memory);
71
70
  assert.strictEqual(result, undefined);
72
71
  assert.deepStrictEqual(registers.get(IN_OUT_REG), tryAsU64(blob.length));
@@ -79,7 +78,7 @@ describe("Fetch", () => {
79
78
  fetchMock.constantsResponse = blob;
80
79
  const { registers, memory, readBack } = prepareRegsAndMemory(blob, FetchKind.Constants);
81
80
  registers.set(10, tryAsU64(999));
82
- const fetch = new Fetch(currentServiceId, fetchMock);
81
+ const fetch = Fetch.new(currentServiceId, fetchMock);
83
82
  const result = await fetch.execute(gas, registers, memory);
84
83
  assert.strictEqual(result, undefined);
85
84
  assert.strictEqual(registers.get(IN_OUT_REG), HostCallResult.NONE);
@@ -91,7 +90,7 @@ describe("Fetch", () => {
91
90
  const fetchMock = new RefineFetchMock();
92
91
  fetchMock.constantsResponse = blob;
93
92
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.Constants);
94
- const fetch = new Fetch(currentServiceId, fetchMock);
93
+ const fetch = Fetch.new(currentServiceId, fetchMock);
95
94
  const result = await fetch.execute(gas, registers, memory);
96
95
  assert.strictEqual(result, undefined);
97
96
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -103,7 +102,7 @@ describe("Fetch", () => {
103
102
  const fetchMock = new RefineFetchMock();
104
103
  fetchMock.entropyResponse = blob;
105
104
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.Entropy);
106
- const fetch = new Fetch(currentServiceId, fetchMock);
105
+ const fetch = Fetch.new(currentServiceId, fetchMock);
107
106
  const result = await fetch.execute(gas, registers, memory);
108
107
  assert.strictEqual(result, undefined);
109
108
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -115,7 +114,7 @@ describe("Fetch", () => {
115
114
  const fetchMock = new RefineFetchMock();
116
115
  fetchMock.authorizerTraceResponse = blob;
117
116
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.AuthorizerTrace);
118
- const fetch = new Fetch(currentServiceId, fetchMock);
117
+ const fetch = Fetch.new(currentServiceId, fetchMock);
119
118
  const result = await fetch.execute(gas, registers, memory);
120
119
  assert.strictEqual(result, undefined);
121
120
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -132,7 +131,7 @@ describe("Fetch", () => {
132
131
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.OtherWorkItemExtrinsics);
133
132
  registers.set(11, workItem);
134
133
  registers.set(12, index);
135
- const fetch = new Fetch(currentServiceId, fetchMock);
134
+ const fetch = Fetch.new(currentServiceId, fetchMock);
136
135
  const result = await fetch.execute(gas, registers, memory);
137
136
  assert.strictEqual(result, undefined);
138
137
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -148,7 +147,7 @@ describe("Fetch", () => {
148
147
  fetchMock.workItemExtrinsicResponses.set(key, blob);
149
148
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.MyExtrinsics);
150
149
  registers.set(11, index); // only index; workItem is null
151
- const fetch = new Fetch(currentServiceId, fetchMock);
150
+ const fetch = Fetch.new(currentServiceId, fetchMock);
152
151
  const result = await fetch.execute(gas, registers, memory);
153
152
  assert.strictEqual(result, undefined);
154
153
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -166,7 +165,7 @@ describe("Fetch", () => {
166
165
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.OtherWorkItemImports);
167
166
  registers.set(11, workItem);
168
167
  registers.set(12, index);
169
- const fetch = new Fetch(currentServiceId, fetchMock);
168
+ const fetch = Fetch.new(currentServiceId, fetchMock);
170
169
  const result = await fetch.execute(gas, registers, memory);
171
170
  assert.strictEqual(result, undefined);
172
171
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -182,7 +181,7 @@ describe("Fetch", () => {
182
181
  fetchMock.workItemImportResponses.set(key, blob);
183
182
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.MyImports);
184
183
  registers.set(11, index); // workItem is implicitly null
185
- const fetch = new Fetch(currentServiceId, fetchMock);
184
+ const fetch = Fetch.new(currentServiceId, fetchMock);
186
185
  const result = await fetch.execute(gas, registers, memory);
187
186
  assert.strictEqual(result, undefined);
188
187
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -195,7 +194,7 @@ describe("Fetch", () => {
195
194
  const fetchMock = new RefineFetchMock();
196
195
  fetchMock.workPackageResponse = blob;
197
196
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.WorkPackage);
198
- const fetch = new Fetch(currentServiceId, fetchMock);
197
+ const fetch = Fetch.new(currentServiceId, fetchMock);
199
198
  const result = await fetch.execute(gas, registers, memory);
200
199
  assert.strictEqual(result, undefined);
201
200
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -207,7 +206,7 @@ describe("Fetch", () => {
207
206
  const fetchMock = new RefineFetchMock();
208
207
  fetchMock.authorizerResponse = blob;
209
208
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.AuthConfiguration);
210
- const fetch = new Fetch(currentServiceId, fetchMock);
209
+ const fetch = Fetch.new(currentServiceId, fetchMock);
211
210
  const result = await fetch.execute(gas, registers, memory);
212
211
  assert.strictEqual(result, undefined);
213
212
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -219,7 +218,7 @@ describe("Fetch", () => {
219
218
  const fetchMock = new RefineFetchMock();
220
219
  fetchMock.authorizationTokenResponse = blob;
221
220
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.AuthToken);
222
- const fetch = new Fetch(currentServiceId, fetchMock);
221
+ const fetch = Fetch.new(currentServiceId, fetchMock);
223
222
  const result = await fetch.execute(gas, registers, memory);
224
223
  assert.strictEqual(result, undefined);
225
224
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -231,7 +230,7 @@ describe("Fetch", () => {
231
230
  const fetchMock = new RefineFetchMock();
232
231
  fetchMock.refineContextResponse = blob;
233
232
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.RefineContext);
234
- const fetch = new Fetch(currentServiceId, fetchMock);
233
+ const fetch = Fetch.new(currentServiceId, fetchMock);
235
234
  const result = await fetch.execute(gas, registers, memory);
236
235
  assert.strictEqual(result, undefined);
237
236
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -243,7 +242,7 @@ describe("Fetch", () => {
243
242
  const fetchMock = new RefineFetchMock();
244
243
  fetchMock.allWorkItemsResponse = blob;
245
244
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.AllWorkItems);
246
- const fetch = new Fetch(currentServiceId, fetchMock);
245
+ const fetch = Fetch.new(currentServiceId, fetchMock);
247
246
  const result = await fetch.execute(gas, registers, memory);
248
247
  assert.strictEqual(result, undefined);
249
248
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -257,7 +256,7 @@ describe("Fetch", () => {
257
256
  fetchMock.oneWorkItemResponses.set(workItem.toString(), blob);
258
257
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.OneWorkItem);
259
258
  registers.set(11, workItem);
260
- const fetch = new Fetch(currentServiceId, fetchMock);
259
+ const fetch = Fetch.new(currentServiceId, fetchMock);
261
260
  const result = await fetch.execute(gas, registers, memory);
262
261
  assert.strictEqual(result, undefined);
263
262
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -272,7 +271,7 @@ describe("Fetch", () => {
272
271
  fetchMock.workItemPayloadResponses.set(workItem.toString(), blob);
273
272
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.WorkItemPayload);
274
273
  registers.set(11, workItem);
275
- const fetch = new Fetch(currentServiceId, fetchMock);
274
+ const fetch = Fetch.new(currentServiceId, fetchMock);
276
275
  const result = await fetch.execute(gas, registers, memory);
277
276
  assert.strictEqual(result, undefined);
278
277
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -285,7 +284,7 @@ describe("Fetch", () => {
285
284
  const fetchMock = new AccumulateFetchMock();
286
285
  fetchMock.allTransfersAndOperandsResponse = blob;
287
286
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.AllTransfersAndOperands);
288
- const fetch = new Fetch(currentServiceId, fetchMock);
287
+ const fetch = Fetch.new(currentServiceId, fetchMock);
289
288
  const result = await fetch.execute(gas, registers, memory);
290
289
  assert.strictEqual(result, undefined);
291
290
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -299,7 +298,7 @@ describe("Fetch", () => {
299
298
  fetchMock.oneTransferOrOperandResponses.set(index.toString(), blob);
300
299
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.OneTransferOrOperand);
301
300
  registers.set(11, index);
302
- const fetch = new Fetch(currentServiceId, fetchMock);
301
+ const fetch = Fetch.new(currentServiceId, fetchMock);
303
302
  const result = await fetch.execute(gas, registers, memory);
304
303
  assert.strictEqual(result, undefined);
305
304
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -325,7 +324,7 @@ describe("Fetch", () => {
325
324
  FetchKind.WorkItemPayload,
326
325
  ]) {
327
326
  const { registers, memory } = prepareRegsAndMemory(blob, kind);
328
- const fetch = new Fetch(currentServiceId, fetchMock);
327
+ const fetch = Fetch.new(currentServiceId, fetchMock);
329
328
  const result = await fetch.execute(gas, registers, memory);
330
329
  assert.strictEqual(result, undefined, `Expected undefined for kind ${kind}`);
331
330
  assert.strictEqual(registers.get(IN_OUT_REG), HostCallResult.NONE, `Expected NONE for kind ${kind}`);
@@ -337,7 +336,7 @@ describe("Fetch", () => {
337
336
  const blob = BytesBlob.empty();
338
337
  for (const kind of [FetchKind.AllTransfersAndOperands, FetchKind.OneTransferOrOperand]) {
339
338
  const { registers, memory } = prepareRegsAndMemory(blob, kind);
340
- const fetch = new Fetch(currentServiceId, fetchMock);
339
+ const fetch = Fetch.new(currentServiceId, fetchMock);
341
340
  const result = await fetch.execute(gas, registers, memory);
342
341
  assert.strictEqual(result, undefined, `Expected undefined for kind ${kind}`);
343
342
  assert.strictEqual(registers.get(IN_OUT_REG), HostCallResult.NONE, `Expected NONE for kind ${kind}`);
@@ -347,14 +346,14 @@ describe("Fetch", () => {
347
346
  const pageStart = 2 ** 16;
348
347
  const memOffset = tryAsU64(pageStart + 1234);
349
348
  const blobLength = tryAsU64(blob.length);
350
- const registers = new HostCallRegisters(emptyRegistersBuffer());
349
+ const registers = HostCallRegisters.empty();
351
350
  registers.set(IN_OUT_REG, memOffset);
352
351
  registers.set(8, tryAsU64(offset));
353
352
  registers.set(9, tryAsU64(length));
354
353
  registers.set(10, tryAsU64(fetchKind));
355
354
  const builder = new MemoryBuilder();
356
355
  builder.setWriteablePages(tryAsMemoryIndex(pageStart), tryAsMemoryIndex(pageStart + PAGE_SIZE));
357
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
356
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
358
357
  const readBack = () => {
359
358
  const result = new Uint8Array(blob.length);
360
359
  assert.strictEqual(memory.loadInto(result, memOffset).isOk, true);
@@ -14,7 +14,8 @@ export declare class GasHostCall implements HostCallHandler {
14
14
  index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
15
15
  basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
16
16
  tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
17
- constructor(currentServiceId: ServiceId);
17
+ static new(currentServiceId: ServiceId): GasHostCall;
18
+ private constructor();
18
19
  execute(gas: IGasCounter, regs: HostCallRegisters): Promise<undefined | PvmExecution>;
19
20
  }
20
21
  //# sourceMappingURL=gas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gas.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/gas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAE,KAAK,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAClG,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAG3E;;;;;;GAMG;AACH,qBAAa,WAAY,YAAW,eAAe;aAKrB,gBAAgB,EAAE,SAAS;IAJvD,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,eAAe,uEAAqB;gBAER,gBAAgB,EAAE,SAAS;IAEvD,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CAMtF"}
1
+ {"version":3,"file":"gas.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/gas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAE,KAAK,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAClG,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAG3E;;;;;;GAMG;AACH,qBAAa,WAAY,YAAW,eAAe;aASb,gBAAgB,EAAE,SAAS;IAR/D,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,eAAe,uEAAqB;IAEpC,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS;IAItC,OAAO;IAEP,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CAMtF"}
@@ -14,6 +14,9 @@ export class GasHostCall {
14
14
  index = tryAsHostCallIndex(0);
15
15
  basicGasCost = tryAsSmallGas(10);
16
16
  tracedRegisters = traceRegisters(7);
17
+ static new(currentServiceId) {
18
+ return new GasHostCall(currentServiceId);
19
+ }
17
20
  constructor(currentServiceId) {
18
21
  this.currentServiceId = currentServiceId;
19
22
  }
@@ -4,15 +4,14 @@ import { tryAsServiceId } from "#@typeberry/block";
4
4
  import { HostCallRegisters } from "#@typeberry/pvm-host-calls";
5
5
  import { tryAsGas } from "#@typeberry/pvm-interface";
6
6
  import { gasCounter } from "#@typeberry/pvm-interpreter";
7
- import { emptyRegistersBuffer } from "../utils.js";
8
7
  import { GasHostCall } from "./gas.js";
9
8
  const REGISTER = 7;
10
9
  describe("HostCalls: Gas", () => {
11
10
  it("should write U32 gas to register", () => {
12
11
  const currentServiceId = tryAsServiceId(10_000);
13
- const gas = new GasHostCall(currentServiceId);
12
+ const gas = GasHostCall.new(currentServiceId);
14
13
  const counter = gasCounter(tryAsGas(10_000));
15
- const regs = new HostCallRegisters(emptyRegistersBuffer());
14
+ const regs = HostCallRegisters.empty();
16
15
  assert.deepStrictEqual(regs.get(REGISTER), 0n);
17
16
  // when
18
17
  gas.execute(counter, regs);
@@ -21,9 +20,9 @@ describe("HostCalls: Gas", () => {
21
20
  });
22
21
  it("should write U64 gas to register", () => {
23
22
  const currentServiceId = tryAsServiceId(10_000);
24
- const gas = new GasHostCall(currentServiceId);
23
+ const gas = GasHostCall.new(currentServiceId);
25
24
  const counter = gasCounter(tryAsGas(2n ** 64n - 1n));
26
- const regs = new HostCallRegisters(emptyRegistersBuffer());
25
+ const regs = HostCallRegisters.empty();
27
26
  assert.deepStrictEqual(regs.get(REGISTER), 0n);
28
27
  // when
29
28
  gas.execute(counter, regs);
@@ -33,7 +33,8 @@ export declare class Info implements HostCallHandler {
33
33
  index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
34
34
  basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
35
35
  tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
36
- constructor(currentServiceId: ServiceId, account: AccountsInfo);
36
+ static new(currentServiceId: ServiceId, account: AccountsInfo): Info;
37
+ private constructor();
37
38
  execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined | PvmExecution>;
38
39
  }
39
40
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAkD,MAAM,kBAAkB,CAAC;AAKlG,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;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAMtD,kDAAkD;AAClD,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,kBAAkB,GAAG,IAAI,CAAC;CACxE;AAMD,eAAO,MAAM,OAAO,QACsF,CAAC;AAE3G;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,IAAK,YAAW,eAAe;aAMxB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAN1B,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,eAAe,uEAAsD;gBAGnD,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;CA8CrH;AAED;;;;;;GAMG;AACH,eAAO,MAAM,2CAA2C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAevD,CAAC"}
1
+ {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAkD,MAAM,kBAAkB,CAAC;AAKlG,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;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAMtD,kDAAkD;AAClD,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,kBAAkB,GAAG,IAAI,CAAC;CACxE;AAMD,eAAO,MAAM,OAAO,QACsF,CAAC;AAE3G;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,IAAK,YAAW,eAAe;aAUxB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAV1B,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,eAAe,uEAAsD;IAErE,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;CA8CrH;AAED;;;;;;GAMG;AACH,eAAO,MAAM,2CAA2C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAevD,CAAC"}
@@ -37,6 +37,9 @@ export class Info {
37
37
  index = tryAsHostCallIndex(5);
38
38
  basicGasCost = tryAsSmallGas(10);
39
39
  tracedRegisters = traceRegisters(IN_OUT_REG, 8, OFFSET_REG, LEN_REG);
40
+ static new(currentServiceId, account) {
41
+ return new Info(currentServiceId, account);
42
+ }
40
43
  constructor(currentServiceId, account) {
41
44
  this.currentServiceId = currentServiceId;
42
45
  this.account = account;
@@ -12,7 +12,6 @@ import { tryAsSbrkIndex } from "#@typeberry/pvm-interpreter/memory/memory-index.
12
12
  import { PAGE_SIZE } from "#@typeberry/pvm-interpreter/spi-decoder/memory-conts.js";
13
13
  import { ServiceAccountInfo } from "#@typeberry/state";
14
14
  import { TestAccounts } from "../externalities/test-accounts.js";
15
- import { emptyRegistersBuffer } from "../utils.js";
16
15
  import { codecServiceAccountInfoWithThresholdBalance, Info, LEN_REG } from "./info.js";
17
16
  import { HostCallResult } from "./results.js";
18
17
  const SERVICE_ID_REG = 7;
@@ -23,13 +22,13 @@ const serviceAccountInfoSize = tryAsExactBytes(codecServiceAccountInfoWithThresh
23
22
  function prepareRegsAndMemory(serviceId, accountInfoLength = serviceAccountInfoSize) {
24
23
  const pageStart = 2 ** 16;
25
24
  const memStart = pageStart + PAGE_SIZE - accountInfoLength - 1;
26
- const registers = new HostCallRegisters(emptyRegistersBuffer());
25
+ const registers = HostCallRegisters.empty();
27
26
  registers.set(SERVICE_ID_REG, tryAsU64(serviceId));
28
27
  registers.set(DEST_START_REG, tryAsU64(memStart));
29
28
  registers.set(LEN_REG, tryAsU64(serviceAccountInfoSize));
30
29
  const builder = new MemoryBuilder();
31
30
  builder.setWriteablePages(tryAsMemoryIndex(pageStart), tryAsMemoryIndex(pageStart + PAGE_SIZE));
32
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
31
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
33
32
  const readRaw = () => {
34
33
  const result = new Uint8Array(Number(registers.get(LEN_REG)));
35
34
  assert.strictEqual(memory.loadInto(result, tryAsU64(memStart)).isOk, true);
@@ -56,7 +55,7 @@ describe("HostCalls: Info", () => {
56
55
  const serviceId = tryAsServiceId(10_000);
57
56
  const currentServiceId = serviceId;
58
57
  const accounts = new TestAccounts(currentServiceId);
59
- const info = new Info(currentServiceId, accounts);
58
+ const info = Info.new(currentServiceId, accounts);
60
59
  const { registers, memory, readInfo } = prepareRegsAndMemory(serviceId);
61
60
  const storageUtilisationBytes = tryAsU64(10_000);
62
61
  const storageUtilisationCount = tryAsU32(1_000);
@@ -84,7 +83,7 @@ describe("HostCalls: Info", () => {
84
83
  const serviceId = tryAsServiceId(10_000);
85
84
  const currentServiceId = serviceId;
86
85
  const accounts = new TestAccounts(currentServiceId);
87
- const info = new Info(currentServiceId, accounts);
86
+ const info = Info.new(currentServiceId, accounts);
88
87
  const { registers, memory, readRaw } = prepareRegsAndMemory(serviceId);
89
88
  registers.set(LEN_REG, tryAsU64(10));
90
89
  const storageUtilisationBytes = tryAsU64(10_000);
@@ -108,7 +107,7 @@ describe("HostCalls: Info", () => {
108
107
  it("should write none if account info is missing", async () => {
109
108
  const currentServiceId = tryAsServiceId(15_000);
110
109
  const accounts = new TestAccounts(currentServiceId);
111
- const info = new Info(currentServiceId, accounts);
110
+ const info = Info.new(currentServiceId, accounts);
112
111
  const serviceId = tryAsServiceId(10_000);
113
112
  const { registers, memory } = prepareRegsAndMemory(serviceId);
114
113
  // when
@@ -121,7 +120,7 @@ describe("HostCalls: Info", () => {
121
120
  const serviceId = tryAsServiceId(10_000);
122
121
  const currentServiceId = serviceId;
123
122
  const accounts = new TestAccounts(currentServiceId);
124
- const info = new Info(serviceId, accounts);
123
+ const info = Info.new(serviceId, accounts);
125
124
  const { registers, memory } = prepareRegsAndMemory(serviceId, 10);
126
125
  const storageUtilisationBytes = tryAsU64(10_000);
127
126
  const storageUtilisationCount = tryAsU32(1_000);
@@ -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;