@typeberry/lib 0.5.10-7338c21 → 0.5.10-9ffd7ac

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 (443) 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.test.js +1 -1
  34. package/packages/core/pvm-host-calls/host-call-memory.d.ts +2 -1
  35. package/packages/core/pvm-host-calls/host-call-memory.d.ts.map +1 -1
  36. package/packages/core/pvm-host-calls/host-call-memory.js +3 -0
  37. package/packages/core/pvm-host-calls/host-call-memory.test.js +1 -1
  38. package/packages/core/pvm-host-calls/host-call-registers.d.ts +5 -1
  39. package/packages/core/pvm-host-calls/host-call-registers.d.ts.map +1 -1
  40. package/packages/core/pvm-host-calls/host-call-registers.js +11 -1
  41. package/packages/core/pvm-host-calls/host-call-registers.test.js +2 -2
  42. package/packages/core/pvm-host-calls/host-calls-executor.d.ts +2 -1
  43. package/packages/core/pvm-host-calls/host-calls-executor.d.ts.map +1 -1
  44. package/packages/core/pvm-host-calls/host-calls-executor.js +5 -2
  45. package/packages/core/pvm-host-calls/host-calls.d.ts +4 -2
  46. package/packages/core/pvm-host-calls/host-calls.d.ts.map +1 -1
  47. package/packages/core/pvm-host-calls/host-calls.js +9 -4
  48. package/packages/core/pvm-host-calls/pvm-instance-manager.js +1 -1
  49. package/packages/core/pvm-interpreter/args-decoder/args-decoder.js +1 -1
  50. package/packages/core/pvm-interpreter/args-decoder/args-decoder.test.js +3 -3
  51. package/packages/core/pvm-interpreter/args-decoder/args-decoding-results.js +11 -11
  52. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.d.ts +2 -1
  53. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.d.ts.map +1 -1
  54. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.js +3 -0
  55. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.test.js +2 -2
  56. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.d.ts +2 -1
  57. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.d.ts.map +1 -1
  58. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.js +3 -0
  59. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.test.js +26 -26
  60. package/packages/core/pvm-interpreter/basic-blocks/basic-blocks.test.js +8 -8
  61. package/packages/core/pvm-interpreter/bin.js +1 -1
  62. package/packages/core/pvm-interpreter/debugger-adapter.d.ts +2 -1
  63. package/packages/core/pvm-interpreter/debugger-adapter.d.ts.map +1 -1
  64. package/packages/core/pvm-interpreter/debugger-adapter.js +6 -3
  65. package/packages/core/pvm-interpreter/gas.js +4 -1
  66. package/packages/core/pvm-interpreter/interpreter.d.ts +2 -1
  67. package/packages/core/pvm-interpreter/interpreter.d.ts.map +1 -1
  68. package/packages/core/pvm-interpreter/interpreter.js +19 -16
  69. package/packages/core/pvm-interpreter/memory/memory-builder.js +2 -2
  70. package/packages/core/pvm-interpreter/memory/memory-builder.test.js +7 -7
  71. package/packages/core/pvm-interpreter/memory/memory.d.ts +2 -1
  72. package/packages/core/pvm-interpreter/memory/memory.d.ts.map +1 -1
  73. package/packages/core/pvm-interpreter/memory/memory.js +4 -1
  74. package/packages/core/pvm-interpreter/memory/memory.test.js +31 -31
  75. package/packages/core/pvm-interpreter/memory/pages/readable-page.d.ts +2 -1
  76. package/packages/core/pvm-interpreter/memory/pages/readable-page.d.ts.map +1 -1
  77. package/packages/core/pvm-interpreter/memory/pages/readable-page.js +3 -0
  78. package/packages/core/pvm-interpreter/memory/pages/readable-page.test.js +3 -3
  79. package/packages/core/pvm-interpreter/memory/pages/writeable-page.d.ts +2 -1
  80. package/packages/core/pvm-interpreter/memory/pages/writeable-page.d.ts.map +1 -1
  81. package/packages/core/pvm-interpreter/memory/pages/writeable-page.js +3 -0
  82. package/packages/core/pvm-interpreter/memory/pages/writeable-page.test.js +4 -4
  83. package/packages/core/pvm-interpreter/ops/bit-ops.d.ts +2 -1
  84. package/packages/core/pvm-interpreter/ops/bit-ops.d.ts.map +1 -1
  85. package/packages/core/pvm-interpreter/ops/bit-ops.js +3 -0
  86. package/packages/core/pvm-interpreter/ops/bit-ops.test.js +3 -3
  87. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.d.ts +2 -1
  88. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.d.ts.map +1 -1
  89. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.js +3 -0
  90. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.test.js +5 -5
  91. package/packages/core/pvm-interpreter/ops/boolean-ops.d.ts +2 -1
  92. package/packages/core/pvm-interpreter/ops/boolean-ops.d.ts.map +1 -1
  93. package/packages/core/pvm-interpreter/ops/boolean-ops.js +3 -0
  94. package/packages/core/pvm-interpreter/ops/boolean-ops.test.js +3 -3
  95. package/packages/core/pvm-interpreter/ops/branch-ops.d.ts +2 -1
  96. package/packages/core/pvm-interpreter/ops/branch-ops.d.ts.map +1 -1
  97. package/packages/core/pvm-interpreter/ops/branch-ops.js +3 -0
  98. package/packages/core/pvm-interpreter/ops/branch-ops.test.js +4 -4
  99. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.d.ts +2 -1
  100. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.d.ts.map +1 -1
  101. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.js +3 -0
  102. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.test.js +5 -5
  103. package/packages/core/pvm-interpreter/ops/host-call-ops.d.ts +2 -1
  104. package/packages/core/pvm-interpreter/ops/host-call-ops.d.ts.map +1 -1
  105. package/packages/core/pvm-interpreter/ops/host-call-ops.js +3 -0
  106. package/packages/core/pvm-interpreter/ops/host-call-ops.test.js +2 -2
  107. package/packages/core/pvm-interpreter/ops/load-ops.d.ts +2 -1
  108. package/packages/core/pvm-interpreter/ops/load-ops.d.ts.map +1 -1
  109. package/packages/core/pvm-interpreter/ops/load-ops.js +3 -0
  110. package/packages/core/pvm-interpreter/ops/load-ops.test.js +10 -10
  111. package/packages/core/pvm-interpreter/ops/math-ops.d.ts +2 -1
  112. package/packages/core/pvm-interpreter/ops/math-ops.d.ts.map +1 -1
  113. package/packages/core/pvm-interpreter/ops/math-ops.js +3 -0
  114. package/packages/core/pvm-interpreter/ops/math-ops.test.js +3 -3
  115. package/packages/core/pvm-interpreter/ops/memory-ops.d.ts +2 -1
  116. package/packages/core/pvm-interpreter/ops/memory-ops.d.ts.map +1 -1
  117. package/packages/core/pvm-interpreter/ops/memory-ops.js +3 -0
  118. package/packages/core/pvm-interpreter/ops/memory-ops.test.js +3 -3
  119. package/packages/core/pvm-interpreter/ops/move-ops.d.ts +2 -1
  120. package/packages/core/pvm-interpreter/ops/move-ops.d.ts.map +1 -1
  121. package/packages/core/pvm-interpreter/ops/move-ops.js +3 -0
  122. package/packages/core/pvm-interpreter/ops/move-ops.test.js +3 -3
  123. package/packages/core/pvm-interpreter/ops/no-args-ops.d.ts +2 -1
  124. package/packages/core/pvm-interpreter/ops/no-args-ops.d.ts.map +1 -1
  125. package/packages/core/pvm-interpreter/ops/no-args-ops.js +3 -0
  126. package/packages/core/pvm-interpreter/ops/no-args-ops.test.js +2 -2
  127. package/packages/core/pvm-interpreter/ops/shift-ops.d.ts +2 -1
  128. package/packages/core/pvm-interpreter/ops/shift-ops.d.ts.map +1 -1
  129. package/packages/core/pvm-interpreter/ops/shift-ops.js +3 -0
  130. package/packages/core/pvm-interpreter/ops/shift-ops.test.js +3 -3
  131. package/packages/core/pvm-interpreter/ops/store-ops.d.ts +2 -1
  132. package/packages/core/pvm-interpreter/ops/store-ops.d.ts.map +1 -1
  133. package/packages/core/pvm-interpreter/ops/store-ops.js +3 -0
  134. package/packages/core/pvm-interpreter/ops/store-ops.test.js +7 -7
  135. package/packages/core/pvm-interpreter/ops-dispatchers/no-args-dispatcher.test.js +1 -1
  136. package/packages/core/pvm-interpreter/ops-dispatchers/one-imm-dispatcher.test.js +4 -4
  137. package/packages/core/pvm-interpreter/ops-dispatchers/one-offset-dispatcher.test.js +2 -2
  138. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-ext-imm-dispatcher.test.js +4 -4
  139. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-imm-dispatcher.test.js +7 -7
  140. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-imm-one-offset-dispatcher.test.js +10 -10
  141. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-two-imms-dispatcher.test.js +5 -5
  142. package/packages/core/pvm-interpreter/ops-dispatchers/three-regs-dispatcher.test.js +7 -7
  143. package/packages/core/pvm-interpreter/ops-dispatchers/two-imms-dispatcher.test.js +5 -5
  144. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-dispatcher.test.js +6 -6
  145. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-one-imm-dispatcher.test.js +11 -11
  146. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-one-offset-dispatcher.test.js +2 -2
  147. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-two-imms-dispatcher.test.js +14 -14
  148. package/packages/core/pvm-interpreter/program-decoder/jump-table.d.ts +5 -2
  149. package/packages/core/pvm-interpreter/program-decoder/jump-table.d.ts.map +1 -1
  150. package/packages/core/pvm-interpreter/program-decoder/jump-table.js +9 -4
  151. package/packages/core/pvm-interpreter/program-decoder/jump-table.test.js +6 -6
  152. package/packages/core/pvm-interpreter/program-decoder/mask.d.ts +2 -1
  153. package/packages/core/pvm-interpreter/program-decoder/mask.d.ts.map +1 -1
  154. package/packages/core/pvm-interpreter/program-decoder/mask.js +3 -0
  155. package/packages/core/pvm-interpreter/program-decoder/mask.test.js +10 -10
  156. package/packages/core/pvm-interpreter/program-decoder/program-decoder.d.ts +2 -1
  157. package/packages/core/pvm-interpreter/program-decoder/program-decoder.d.ts.map +1 -1
  158. package/packages/core/pvm-interpreter/program-decoder/program-decoder.js +6 -3
  159. package/packages/core/pvm-interpreter/program-decoder/program-decoder.test.js +5 -5
  160. package/packages/core/pvm-interpreter/program.js +3 -3
  161. package/packages/core/pvm-interpreter/registers.d.ts +5 -2
  162. package/packages/core/pvm-interpreter/registers.d.ts.map +1 -1
  163. package/packages/core/pvm-interpreter/registers.js +10 -6
  164. package/packages/core/pvm-interpreter/registers.test.js +10 -10
  165. package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.d.ts +6 -3
  166. package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.d.ts.map +1 -1
  167. package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.js +11 -2
  168. package/packages/core/pvm-interpreter-ananas/index.d.ts +6 -3
  169. package/packages/core/pvm-interpreter-ananas/index.d.ts.map +1 -1
  170. package/packages/core/pvm-interpreter-ananas/index.js +12 -3
  171. package/packages/core/trie/nodes.d.ts +7 -2
  172. package/packages/core/trie/nodes.d.ts.map +1 -1
  173. package/packages/core/trie/nodes.js +20 -11
  174. package/packages/core/trie/nodesDb.d.ts +3 -1
  175. package/packages/core/trie/nodesDb.d.ts.map +1 -1
  176. package/packages/core/trie/nodesDb.js +6 -0
  177. package/packages/core/trie/trie.js +2 -2
  178. package/packages/extensions/ipc/index.js +5 -2
  179. package/packages/extensions/ipc/jamnp/handler.d.ts +4 -2
  180. package/packages/extensions/ipc/jamnp/handler.d.ts.map +1 -1
  181. package/packages/extensions/ipc/jamnp/handler.js +9 -3
  182. package/packages/extensions/ipc/jamnp/server.js +3 -3
  183. package/packages/extensions/ipc/server.d.ts +2 -1
  184. package/packages/extensions/ipc/server.d.ts.map +1 -1
  185. package/packages/extensions/ipc/server.js +4 -1
  186. package/packages/jam/block/header.js +1 -1
  187. package/packages/jam/config/chain-spec.d.ts +2 -1
  188. package/packages/jam/config/chain-spec.d.ts.map +1 -1
  189. package/packages/jam/config/chain-spec.js +5 -2
  190. package/packages/jam/config/network.d.ts +2 -7
  191. package/packages/jam/config/network.d.ts.map +1 -1
  192. package/packages/jam/config/network.js +3 -0
  193. package/packages/jam/config-node/jip-chain-spec.js +1 -1
  194. package/packages/jam/database/blocks.test.js +1 -1
  195. package/packages/jam/database/states.d.ts +2 -1
  196. package/packages/jam/database/states.d.ts.map +1 -1
  197. package/packages/jam/database/states.js +3 -0
  198. package/packages/jam/database/states.test.js +1 -1
  199. package/packages/jam/database-lmdb/blocks.d.ts +2 -1
  200. package/packages/jam/database-lmdb/blocks.d.ts.map +1 -1
  201. package/packages/jam/database-lmdb/blocks.js +3 -0
  202. package/packages/jam/database-lmdb/root.d.ts +2 -1
  203. package/packages/jam/database-lmdb/root.d.ts.map +1 -1
  204. package/packages/jam/database-lmdb/root.js +3 -0
  205. package/packages/jam/database-lmdb/states.d.ts +2 -1
  206. package/packages/jam/database-lmdb/states.d.ts.map +1 -1
  207. package/packages/jam/database-lmdb/states.js +3 -0
  208. package/packages/jam/database-lmdb/states.test.js +9 -9
  209. package/packages/jam/executor/pvm-executor.js +24 -24
  210. package/packages/jam/fuzz-proto/v1/handler.d.ts +2 -1
  211. package/packages/jam/fuzz-proto/v1/handler.d.ts.map +1 -1
  212. package/packages/jam/fuzz-proto/v1/handler.js +3 -0
  213. package/packages/jam/fuzz-proto/v1/handler.test.js +10 -10
  214. package/packages/jam/in-core/externalities/refine.js +1 -1
  215. package/packages/jam/in-core/externalities/refine.test.js +3 -3
  216. package/packages/jam/in-core/in-core.d.ts +2 -1
  217. package/packages/jam/in-core/in-core.d.ts.map +1 -1
  218. package/packages/jam/in-core/in-core.js +3 -0
  219. package/packages/jam/in-core/in-core.test.js +6 -6
  220. package/packages/jam/in-core/is-authorized.test.js +2 -2
  221. package/packages/jam/in-core/refine.js +1 -1
  222. package/packages/jam/jam-host-calls/accumulate/assign.d.ts +2 -1
  223. package/packages/jam/jam-host-calls/accumulate/assign.d.ts.map +1 -1
  224. package/packages/jam/jam-host-calls/accumulate/assign.js +3 -0
  225. package/packages/jam/jam-host-calls/accumulate/assign.test.js +8 -9
  226. package/packages/jam/jam-host-calls/accumulate/bless.d.ts +2 -1
  227. package/packages/jam/jam-host-calls/accumulate/bless.d.ts.map +1 -1
  228. package/packages/jam/jam-host-calls/accumulate/bless.js +3 -0
  229. package/packages/jam/jam-host-calls/accumulate/bless.test.js +11 -12
  230. package/packages/jam/jam-host-calls/accumulate/checkpoint.d.ts +2 -1
  231. package/packages/jam/jam-host-calls/accumulate/checkpoint.d.ts.map +1 -1
  232. package/packages/jam/jam-host-calls/accumulate/checkpoint.js +4 -1
  233. package/packages/jam/jam-host-calls/accumulate/checkpoint.test.js +2 -3
  234. package/packages/jam/jam-host-calls/accumulate/designate.d.ts +2 -1
  235. package/packages/jam/jam-host-calls/accumulate/designate.d.ts.map +1 -1
  236. package/packages/jam/jam-host-calls/accumulate/designate.js +3 -0
  237. package/packages/jam/jam-host-calls/accumulate/designate.test.js +5 -6
  238. package/packages/jam/jam-host-calls/accumulate/eject.d.ts +2 -1
  239. package/packages/jam/jam-host-calls/accumulate/eject.d.ts.map +1 -1
  240. package/packages/jam/jam-host-calls/accumulate/eject.js +3 -0
  241. package/packages/jam/jam-host-calls/accumulate/eject.test.js +8 -9
  242. package/packages/jam/jam-host-calls/accumulate/forget.d.ts +2 -1
  243. package/packages/jam/jam-host-calls/accumulate/forget.d.ts.map +1 -1
  244. package/packages/jam/jam-host-calls/accumulate/forget.js +3 -0
  245. package/packages/jam/jam-host-calls/accumulate/forget.test.js +5 -6
  246. package/packages/jam/jam-host-calls/accumulate/new.d.ts +2 -1
  247. package/packages/jam/jam-host-calls/accumulate/new.d.ts.map +1 -1
  248. package/packages/jam/jam-host-calls/accumulate/new.js +3 -0
  249. package/packages/jam/jam-host-calls/accumulate/new.test.js +9 -10
  250. package/packages/jam/jam-host-calls/accumulate/provide.d.ts +2 -1
  251. package/packages/jam/jam-host-calls/accumulate/provide.d.ts.map +1 -1
  252. package/packages/jam/jam-host-calls/accumulate/provide.js +3 -0
  253. package/packages/jam/jam-host-calls/accumulate/provide.test.js +8 -9
  254. package/packages/jam/jam-host-calls/accumulate/query.d.ts +2 -1
  255. package/packages/jam/jam-host-calls/accumulate/query.d.ts.map +1 -1
  256. package/packages/jam/jam-host-calls/accumulate/query.js +3 -0
  257. package/packages/jam/jam-host-calls/accumulate/query.test.js +8 -9
  258. package/packages/jam/jam-host-calls/accumulate/solicit.d.ts +2 -1
  259. package/packages/jam/jam-host-calls/accumulate/solicit.d.ts.map +1 -1
  260. package/packages/jam/jam-host-calls/accumulate/solicit.js +3 -0
  261. package/packages/jam/jam-host-calls/accumulate/solicit.test.js +7 -8
  262. package/packages/jam/jam-host-calls/accumulate/transfer.d.ts +2 -1
  263. package/packages/jam/jam-host-calls/accumulate/transfer.d.ts.map +1 -1
  264. package/packages/jam/jam-host-calls/accumulate/transfer.js +3 -0
  265. package/packages/jam/jam-host-calls/accumulate/transfer.test.js +9 -10
  266. package/packages/jam/jam-host-calls/accumulate/upgrade.d.ts +2 -1
  267. package/packages/jam/jam-host-calls/accumulate/upgrade.d.ts.map +1 -1
  268. package/packages/jam/jam-host-calls/accumulate/upgrade.js +3 -0
  269. package/packages/jam/jam-host-calls/accumulate/upgrade.test.js +4 -5
  270. package/packages/jam/jam-host-calls/accumulate/yield.d.ts +2 -1
  271. package/packages/jam/jam-host-calls/accumulate/yield.d.ts.map +1 -1
  272. package/packages/jam/jam-host-calls/accumulate/yield.js +3 -0
  273. package/packages/jam/jam-host-calls/accumulate/yield.test.js +4 -5
  274. package/packages/jam/jam-host-calls/externalities/refine-externalities.test.js +9 -9
  275. package/packages/jam/jam-host-calls/externalities/state-update.d.ts +2 -3
  276. package/packages/jam/jam-host-calls/externalities/state-update.d.ts.map +1 -1
  277. package/packages/jam/jam-host-calls/externalities/state-update.js +5 -2
  278. package/packages/jam/jam-host-calls/externalities/test-accounts.js +2 -2
  279. package/packages/jam/jam-host-calls/general/fetch.d.ts +2 -1
  280. package/packages/jam/jam-host-calls/general/fetch.d.ts.map +1 -1
  281. package/packages/jam/jam-host-calls/general/fetch.js +3 -0
  282. package/packages/jam/jam-host-calls/general/fetch.test.js +27 -28
  283. package/packages/jam/jam-host-calls/general/gas.d.ts +2 -1
  284. package/packages/jam/jam-host-calls/general/gas.d.ts.map +1 -1
  285. package/packages/jam/jam-host-calls/general/gas.js +3 -0
  286. package/packages/jam/jam-host-calls/general/gas.test.js +4 -5
  287. package/packages/jam/jam-host-calls/general/info.d.ts +2 -1
  288. package/packages/jam/jam-host-calls/general/info.d.ts.map +1 -1
  289. package/packages/jam/jam-host-calls/general/info.js +3 -0
  290. package/packages/jam/jam-host-calls/general/info.test.js +6 -7
  291. package/packages/jam/jam-host-calls/general/log.d.ts +2 -1
  292. package/packages/jam/jam-host-calls/general/log.d.ts.map +1 -1
  293. package/packages/jam/jam-host-calls/general/log.js +3 -0
  294. package/packages/jam/jam-host-calls/general/lookup.d.ts +2 -1
  295. package/packages/jam/jam-host-calls/general/lookup.d.ts.map +1 -1
  296. package/packages/jam/jam-host-calls/general/lookup.js +3 -0
  297. package/packages/jam/jam-host-calls/general/lookup.test.js +8 -9
  298. package/packages/jam/jam-host-calls/general/read.d.ts +2 -1
  299. package/packages/jam/jam-host-calls/general/read.d.ts.map +1 -1
  300. package/packages/jam/jam-host-calls/general/read.js +3 -0
  301. package/packages/jam/jam-host-calls/general/read.test.js +11 -12
  302. package/packages/jam/jam-host-calls/general/write.d.ts +2 -1
  303. package/packages/jam/jam-host-calls/general/write.d.ts.map +1 -1
  304. package/packages/jam/jam-host-calls/general/write.js +3 -0
  305. package/packages/jam/jam-host-calls/general/write.test.js +10 -11
  306. package/packages/jam/jam-host-calls/refine/export.d.ts +2 -1
  307. package/packages/jam/jam-host-calls/refine/export.d.ts.map +1 -1
  308. package/packages/jam/jam-host-calls/refine/export.js +3 -0
  309. package/packages/jam/jam-host-calls/refine/export.test.js +6 -7
  310. package/packages/jam/jam-host-calls/refine/expunge.d.ts +2 -1
  311. package/packages/jam/jam-host-calls/refine/expunge.d.ts.map +1 -1
  312. package/packages/jam/jam-host-calls/refine/expunge.js +3 -0
  313. package/packages/jam/jam-host-calls/refine/expunge.test.js +3 -4
  314. package/packages/jam/jam-host-calls/refine/historical-lookup.d.ts +2 -1
  315. package/packages/jam/jam-host-calls/refine/historical-lookup.d.ts.map +1 -1
  316. package/packages/jam/jam-host-calls/refine/historical-lookup.js +3 -0
  317. package/packages/jam/jam-host-calls/refine/historical-lookup.test.js +11 -12
  318. package/packages/jam/jam-host-calls/refine/invoke.d.ts +2 -1
  319. package/packages/jam/jam-host-calls/refine/invoke.d.ts.map +1 -1
  320. package/packages/jam/jam-host-calls/refine/invoke.js +4 -1
  321. package/packages/jam/jam-host-calls/refine/invoke.test.js +10 -11
  322. package/packages/jam/jam-host-calls/refine/machine.d.ts +2 -1
  323. package/packages/jam/jam-host-calls/refine/machine.d.ts.map +1 -1
  324. package/packages/jam/jam-host-calls/refine/machine.js +3 -0
  325. package/packages/jam/jam-host-calls/refine/machine.test.js +6 -7
  326. package/packages/jam/jam-host-calls/refine/pages.d.ts +2 -1
  327. package/packages/jam/jam-host-calls/refine/pages.d.ts.map +1 -1
  328. package/packages/jam/jam-host-calls/refine/pages.js +3 -0
  329. package/packages/jam/jam-host-calls/refine/pages.test.js +3 -4
  330. package/packages/jam/jam-host-calls/refine/peek.d.ts +2 -1
  331. package/packages/jam/jam-host-calls/refine/peek.d.ts.map +1 -1
  332. package/packages/jam/jam-host-calls/refine/peek.js +3 -0
  333. package/packages/jam/jam-host-calls/refine/peek.test.js +3 -4
  334. package/packages/jam/jam-host-calls/refine/poke.d.ts +2 -1
  335. package/packages/jam/jam-host-calls/refine/poke.d.ts.map +1 -1
  336. package/packages/jam/jam-host-calls/refine/poke.js +3 -0
  337. package/packages/jam/jam-host-calls/refine/poke.test.js +3 -4
  338. package/packages/jam/jamnp-s/network.js +1 -1
  339. package/packages/jam/jamnp-s/peers.d.ts +2 -1
  340. package/packages/jam/jamnp-s/peers.d.ts.map +1 -1
  341. package/packages/jam/jamnp-s/peers.js +3 -0
  342. package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts +4 -2
  343. package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts.map +1 -1
  344. package/packages/jam/jamnp-s/protocol/ce-128-block-request.js +6 -0
  345. package/packages/jam/jamnp-s/protocol/ce-128-block-request.test.js +2 -2
  346. package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts +4 -2
  347. package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts.map +1 -1
  348. package/packages/jam/jamnp-s/protocol/ce-129-state-request.js +6 -0
  349. package/packages/jam/jamnp-s/protocol/ce-129-state-request.test.js +4 -4
  350. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts +4 -2
  351. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts.map +1 -1
  352. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.js +6 -0
  353. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.test.js +2 -2
  354. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts +4 -1
  355. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts.map +1 -1
  356. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.js +7 -0
  357. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.test.js +2 -2
  358. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts +5 -2
  359. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts.map +1 -1
  360. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.js +7 -0
  361. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.test.js +2 -2
  362. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts +4 -2
  363. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts.map +1 -1
  364. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.js +6 -0
  365. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.test.js +2 -2
  366. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts +2 -1
  367. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts.map +1 -1
  368. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.js +3 -0
  369. package/packages/jam/jamnp-s/stream-manager.d.ts +2 -1
  370. package/packages/jam/jamnp-s/stream-manager.d.ts.map +1 -1
  371. package/packages/jam/jamnp-s/stream-manager.js +4 -1
  372. package/packages/jam/jamnp-s/tasks/sync.js +4 -4
  373. package/packages/jam/jamnp-s/tasks/sync.test.js +4 -4
  374. package/packages/jam/jamnp-s/tasks/ticket-distribution.js +2 -2
  375. package/packages/jam/jamnp-s/tasks/ticket-distribution.test.js +1 -1
  376. package/packages/jam/node/common.d.ts.map +1 -1
  377. package/packages/jam/node/common.js +3 -3
  378. package/packages/jam/rpc-client/index.d.ts +4 -2
  379. package/packages/jam/rpc-client/index.d.ts.map +1 -1
  380. package/packages/jam/rpc-client/index.js +7 -1
  381. package/packages/jam/state/in-memory-state-view.d.ts +2 -1
  382. package/packages/jam/state/in-memory-state-view.d.ts.map +1 -1
  383. package/packages/jam/state/in-memory-state-view.js +3 -0
  384. package/packages/jam/state/in-memory-state.d.ts +16 -21
  385. package/packages/jam/state/in-memory-state.d.ts.map +1 -1
  386. package/packages/jam/state/in-memory-state.js +10 -6
  387. package/packages/jam/state/in-memory-state.test.js +2 -2
  388. package/packages/jam/state/service.d.ts +2 -6
  389. package/packages/jam/state/service.d.ts.map +1 -1
  390. package/packages/jam/state/service.js +3 -0
  391. package/packages/jam/state/test.utils.js +3 -3
  392. package/packages/jam/state-json/accounts.js +5 -5
  393. package/packages/jam/state-merkleization/in-memory-state-codec.d.ts +3 -34
  394. package/packages/jam/state-merkleization/in-memory-state-codec.d.ts.map +1 -1
  395. package/packages/jam/state-merkleization/in-memory-state-codec.js +1 -1
  396. package/packages/jam/state-merkleization/serialized-state-view.d.ts +8 -3
  397. package/packages/jam/state-merkleization/serialized-state-view.d.ts.map +1 -1
  398. package/packages/jam/state-merkleization/serialized-state-view.js +6 -3
  399. package/packages/jam/state-merkleization/serialized-state.d.ts +2 -3
  400. package/packages/jam/state-merkleization/serialized-state.d.ts.map +1 -1
  401. package/packages/jam/state-merkleization/serialized-state.js +10 -2
  402. package/packages/jam/state-merkleization/serialized-state.test.js +1 -1
  403. package/packages/jam/transition/accumulate/accumulate.js +10 -3
  404. package/packages/jam/transition/accumulate/accumulate.test.js +1 -1
  405. package/packages/jam/transition/block-verifier.d.ts +2 -1
  406. package/packages/jam/transition/block-verifier.d.ts.map +1 -1
  407. package/packages/jam/transition/block-verifier.js +3 -0
  408. package/packages/jam/transition/block-verifier.test.js +8 -8
  409. package/packages/jam/transition/chain-stf.d.ts +12 -4
  410. package/packages/jam/transition/chain-stf.d.ts.map +1 -1
  411. package/packages/jam/transition/chain-stf.js +7 -3
  412. package/packages/jam/transition/externalities/accumulate-externalities.d.ts +20 -6
  413. package/packages/jam/transition/externalities/accumulate-externalities.d.ts.map +1 -1
  414. package/packages/jam/transition/externalities/accumulate-externalities.js +29 -22
  415. package/packages/jam/transition/externalities/accumulate-externalities.test.js +590 -100
  416. package/packages/jam/transition/externalities/refine-fetch-externalities.d.ts +2 -1
  417. package/packages/jam/transition/externalities/refine-fetch-externalities.d.ts.map +1 -1
  418. package/packages/jam/transition/externalities/refine-fetch-externalities.js +3 -0
  419. package/packages/jam/transition/externalities/refine-fetch-externalities.test.js +1 -1
  420. package/packages/jam/transition/hasher.d.ts +2 -1
  421. package/packages/jam/transition/hasher.d.ts.map +1 -1
  422. package/packages/jam/transition/hasher.js +5 -2
  423. package/packages/jam/transition/hasher.test.js +1 -1
  424. package/packages/jam/transition/preimages.test.js +4 -4
  425. package/packages/jam/transition/reports/test.utils.js +1 -1
  426. package/packages/workers/api-node/config.js +4 -4
  427. package/packages/workers/api-node/port.d.ts +2 -1
  428. package/packages/workers/api-node/port.d.ts.map +1 -1
  429. package/packages/workers/api-node/port.js +4 -1
  430. package/packages/workers/api-node/port.test.js +2 -2
  431. package/packages/workers/api-node/protocol.js +2 -2
  432. package/packages/workers/block-authorship/generator.d.ts +13 -2
  433. package/packages/workers/block-authorship/generator.d.ts.map +1 -1
  434. package/packages/workers/block-authorship/generator.js +13 -9
  435. package/packages/workers/block-authorship/generator.test.js +16 -2
  436. package/packages/workers/block-authorship/main.d.ts.map +1 -1
  437. package/packages/workers/block-authorship/main.js +8 -1
  438. package/packages/workers/importer/finality.test.js +1 -1
  439. package/packages/workers/importer/importer.d.ts +23 -6
  440. package/packages/workers/importer/importer.d.ts.map +1 -1
  441. package/packages/workers/importer/importer.js +34 -19
  442. package/packages/workers/importer/main.d.ts.map +1 -1
  443. package/packages/workers/importer/main.js +13 -5
@@ -14,7 +14,6 @@ import { Compatibility, GpVersion, Result } from "#@typeberry/utils";
14
14
  import { TRANSFER_MEMO_BYTES, TransferError } from "../externalities/partial-state.js";
15
15
  import { PartialStateMock } from "../externalities/partial-state-mock.js";
16
16
  import { HostCallResult } from "../general/results.js";
17
- import { emptyRegistersBuffer } from "../utils.js";
18
17
  import { Transfer } from "./transfer.js";
19
18
  const RESULT_REG = 7;
20
19
  const DESTINATION_REG = 7;
@@ -23,7 +22,7 @@ const ON_TRANSFER_GAS_REG = 9; // `l`
23
22
  const MEMO_START_REG = 10; // `o`
24
23
  function prepareRegsAndMemory(destination, amount, gas, memo, { skipMemo = false } = {}) {
25
24
  const memStart = 2 ** 16;
26
- const registers = new HostCallRegisters(emptyRegistersBuffer());
25
+ const registers = HostCallRegisters.empty();
27
26
  registers.set(DESTINATION_REG, tryAsU64(destination));
28
27
  registers.set(AMOUNT_REG, amount);
29
28
  registers.set(ON_TRANSFER_GAS_REG, gas);
@@ -32,7 +31,7 @@ function prepareRegsAndMemory(destination, amount, gas, memo, { skipMemo = false
32
31
  if (!skipMemo) {
33
32
  builder.setReadablePages(tryAsMemoryIndex(memStart), tryAsMemoryIndex(memStart + PAGE_SIZE), memo.raw);
34
33
  }
35
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
34
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
36
35
  return {
37
36
  registers,
38
37
  memory,
@@ -43,7 +42,7 @@ describe("HostCalls: Transfer", () => {
43
42
  it("should perform a transfer to self?", async () => {
44
43
  const accumulate = new PartialStateMock();
45
44
  const currentServiceId = tryAsServiceId(10_000);
46
- const transfer = new Transfer(currentServiceId, accumulate);
45
+ const transfer = Transfer.new(currentServiceId, accumulate);
47
46
  const { registers, memory } = prepareRegsAndMemory(transfer.currentServiceId, tryAsU64(2n ** 45n), tryAsU64(1000n), Bytes.fill(TRANSFER_MEMO_BYTES, 33));
48
47
  const gas = gasCounter(tryAsGas(10_000));
49
48
  const basicGasCost = typeof transfer.basicGasCost === "number" ? transfer.basicGasCost : transfer.basicGasCost(registers);
@@ -61,7 +60,7 @@ describe("HostCalls: Transfer", () => {
61
60
  it("should perform a transfer to different account", async () => {
62
61
  const accumulate = new PartialStateMock();
63
62
  const currentServiceId = tryAsServiceId(10_000);
64
- const transfer = new Transfer(currentServiceId, accumulate);
63
+ const transfer = Transfer.new(currentServiceId, accumulate);
65
64
  const { registers, memory } = prepareRegsAndMemory(tryAsServiceId(15_000), tryAsU64(2n ** 45n), tryAsU64(1000n), Bytes.fill(TRANSFER_MEMO_BYTES, 33));
66
65
  const gas = gasCounter(tryAsGas(10_000));
67
66
  const basicGasCost = typeof transfer.basicGasCost === "number" ? transfer.basicGasCost : transfer.basicGasCost(registers);
@@ -77,7 +76,7 @@ describe("HostCalls: Transfer", () => {
77
76
  itPost072("should OOG if gas is too low", async () => {
78
77
  const accumulate = new PartialStateMock();
79
78
  const currentServiceId = tryAsServiceId(10_000);
80
- const transfer = new Transfer(currentServiceId, accumulate);
79
+ const transfer = Transfer.new(currentServiceId, accumulate);
81
80
  const { registers, memory } = prepareRegsAndMemory(tryAsServiceId(15_000), tryAsU64(2n ** 45n), tryAsU64(1000n), Bytes.fill(TRANSFER_MEMO_BYTES, 33));
82
81
  const gas = gasCounter(tryAsGas(1_000));
83
82
  const basicGasCost = typeof transfer.basicGasCost === "number" ? transfer.basicGasCost : transfer.basicGasCost(registers);
@@ -93,7 +92,7 @@ describe("HostCalls: Transfer", () => {
93
92
  it("should fail if there is no memory for memo", async () => {
94
93
  const accumulate = new PartialStateMock();
95
94
  const currentServiceId = tryAsServiceId(10_000);
96
- const transfer = new Transfer(currentServiceId, accumulate);
95
+ const transfer = Transfer.new(currentServiceId, accumulate);
97
96
  const { registers, memory } = prepareRegsAndMemory(tryAsServiceId(15_000), tryAsU64(2n ** 45n), tryAsU64(1000n), Bytes.fill(TRANSFER_MEMO_BYTES, 33), { skipMemo: true });
98
97
  const gas = gasCounter(tryAsGas(10_000));
99
98
  const basicGasCost = typeof transfer.basicGasCost === "number" ? transfer.basicGasCost : transfer.basicGasCost(registers);
@@ -109,7 +108,7 @@ describe("HostCalls: Transfer", () => {
109
108
  it("should fail if gas is too low", async () => {
110
109
  const accumulate = new PartialStateMock();
111
110
  const currentServiceId = tryAsServiceId(10_000);
112
- const transfer = new Transfer(currentServiceId, accumulate);
111
+ const transfer = Transfer.new(currentServiceId, accumulate);
113
112
  const { registers, memory } = prepareRegsAndMemory(tryAsServiceId(15_000), tryAsU64(2n ** 45n), tryAsU64(1000n), Bytes.fill(TRANSFER_MEMO_BYTES, 33));
114
113
  const gas = gasCounter(tryAsGas(10_000));
115
114
  const basicGasCost = typeof transfer.basicGasCost === "number" ? transfer.basicGasCost : transfer.basicGasCost(registers);
@@ -128,7 +127,7 @@ describe("HostCalls: Transfer", () => {
128
127
  it("should fail if amount is too big", async () => {
129
128
  const accumulate = new PartialStateMock();
130
129
  const currentServiceId = tryAsServiceId(10_000);
131
- const transfer = new Transfer(currentServiceId, accumulate);
130
+ const transfer = Transfer.new(currentServiceId, accumulate);
132
131
  const { registers, memory } = prepareRegsAndMemory(tryAsServiceId(15_000), tryAsU64(2n ** 45n), tryAsU64(1000n), Bytes.fill(TRANSFER_MEMO_BYTES, 33));
133
132
  const gas = gasCounter(tryAsGas(10_000));
134
133
  const basicGasCost = typeof transfer.basicGasCost === "number" ? transfer.basicGasCost : transfer.basicGasCost(registers);
@@ -147,7 +146,7 @@ describe("HostCalls: Transfer", () => {
147
146
  it("should fail if destination does not exist", async () => {
148
147
  const accumulate = new PartialStateMock();
149
148
  const currentServiceId = tryAsServiceId(10_000);
150
- const transfer = new Transfer(currentServiceId, accumulate);
149
+ const transfer = Transfer.new(currentServiceId, accumulate);
151
150
  const { registers, memory } = prepareRegsAndMemory(tryAsServiceId(15_000), tryAsU64(2n ** 45n), tryAsU64(1000n), Bytes.fill(TRANSFER_MEMO_BYTES, 33));
152
151
  const gas = gasCounter(tryAsGas(10_000));
153
152
  const basicGasCost = typeof transfer.basicGasCost === "number" ? transfer.basicGasCost : transfer.basicGasCost(registers);
@@ -14,7 +14,8 @@ export declare class Upgrade 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, partialState: PartialState);
17
+ static new(currentServiceId: ServiceId, partialState: PartialState): Upgrade;
18
+ private constructor();
18
19
  execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined | PvmExecution>;
19
20
  }
20
21
  //# sourceMappingURL=upgrade.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/upgrade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,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,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAQtE;;;;GAIG;AACH,qBAAa,OAAQ,YAAW,eAAe;aAM3B,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAN/B,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,eAAe,uEAAsD;gBAGnD,gBAAgB,EAAE,SAAS,EAC1B,YAAY,EAAE,YAAY;IAGvC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CAqBrH"}
1
+ {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/upgrade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,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,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAQtE;;;;GAIG;AACH,qBAAa,OAAQ,YAAW,eAAe;aAU3B,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAV/B,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,eAAe,uEAAsD;IAErE,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY;IAIlE,OAAO;IAKD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CAqBrH"}
@@ -18,6 +18,9 @@ export class Upgrade {
18
18
  index = tryAsHostCallIndex(19);
19
19
  basicGasCost = tryAsSmallGas(10);
20
20
  tracedRegisters = traceRegisters(IN_OUT_REG, GAS_REG, ALLOWANCE_REG);
21
+ static new(currentServiceId, partialState) {
22
+ return new Upgrade(currentServiceId, partialState);
23
+ }
21
24
  constructor(currentServiceId, partialState) {
22
25
  this.currentServiceId = currentServiceId;
23
26
  this.partialState = partialState;
@@ -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 { PartialStateMock } from "../externalities/partial-state-mock.js";
14
14
  import { HostCallResult } from "../general/results.js";
15
- import { emptyRegistersBuffer } from "../utils.js";
16
15
  import { Upgrade } from "./upgrade.js";
17
16
  const gas = gasCounter(tryAsGas(0));
18
17
  const RESULT_REG = 7;
@@ -21,7 +20,7 @@ const GAS_REG = 8;
21
20
  const BALANCE_REG = 9;
22
21
  function prepareRegsAndMemory(codeHash, gas, balance, { skipCodeHash = false } = {}) {
23
22
  const memStart = 2 ** 16;
24
- const registers = new HostCallRegisters(emptyRegistersBuffer());
23
+ const registers = HostCallRegisters.empty();
25
24
  registers.set(CODE_HASH_START_REG, tryAsU64(memStart));
26
25
  registers.set(GAS_REG, gas);
27
26
  registers.set(BALANCE_REG, balance);
@@ -29,7 +28,7 @@ function prepareRegsAndMemory(codeHash, gas, balance, { skipCodeHash = false } =
29
28
  if (!skipCodeHash) {
30
29
  builder.setReadablePages(tryAsMemoryIndex(memStart), tryAsMemoryIndex(memStart + PAGE_SIZE), codeHash.raw);
31
30
  }
32
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
31
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
33
32
  return {
34
33
  registers,
35
34
  memory,
@@ -39,7 +38,7 @@ describe("HostCalls: Upgrade", () => {
39
38
  it("should upgrade a service", async () => {
40
39
  const accumulate = new PartialStateMock();
41
40
  const currentServiceId = tryAsServiceId(10_000);
42
- const upgrade = new Upgrade(currentServiceId, accumulate);
41
+ const upgrade = Upgrade.new(currentServiceId, accumulate);
43
42
  const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(2n ** 40n), tryAsU64(2n ** 50n));
44
43
  // when
45
44
  await upgrade.execute(gas, registers, memory);
@@ -50,7 +49,7 @@ describe("HostCalls: Upgrade", () => {
50
49
  it("should fail when code not readable", async () => {
51
50
  const accumulate = new PartialStateMock();
52
51
  const currentServiceId = tryAsServiceId(10_000);
53
- const upgrade = new Upgrade(currentServiceId, accumulate);
52
+ const upgrade = Upgrade.new(currentServiceId, accumulate);
54
53
  const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(2n ** 40n), tryAsU64(2n ** 50n), { skipCodeHash: true });
55
54
  // when
56
55
  const result = await upgrade.execute(gas, registers, memory);
@@ -13,7 +13,8 @@ export declare class Yield implements HostCallHandler {
13
13
  index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
14
14
  basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
15
15
  tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
16
- constructor(currentServiceId: ServiceId, partialState: PartialState);
16
+ static new(currentServiceId: ServiceId, partialState: PartialState): Yield;
17
+ private constructor();
17
18
  execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<PvmExecution | undefined>;
18
19
  }
19
20
  //# sourceMappingURL=yield.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"yield.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/yield.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,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,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAMtE;;;;GAIG;AACH,qBAAa,KAAM,YAAW,eAAe;aAMzB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAN/B,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,eAAe,uEAA8B;gBAG3B,gBAAgB,EAAE,SAAS,EAC1B,YAAY,EAAE,YAAY;IAGvC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CAgBrH"}
1
+ {"version":3,"file":"yield.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/yield.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,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,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAMtE;;;;GAIG;AACH,qBAAa,KAAM,YAAW,eAAe;aAUzB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAV/B,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,eAAe,uEAA8B;IAE7C,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY;IAIlE,OAAO;IAKD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CAgBrH"}
@@ -16,6 +16,9 @@ export class Yield {
16
16
  index = tryAsHostCallIndex(25);
17
17
  basicGasCost = tryAsSmallGas(10);
18
18
  tracedRegisters = traceRegisters(IN_OUT_REG);
19
+ static new(currentServiceId, partialState) {
20
+ return new Yield(currentServiceId, partialState);
21
+ }
19
22
  constructor(currentServiceId, partialState) {
20
23
  this.currentServiceId = currentServiceId;
21
24
  this.partialState = partialState;
@@ -10,19 +10,18 @@ import { gasCounter, MemoryBuilder, tryAsMemoryIndex, tryAsSbrkIndex } from "#@t
10
10
  import { PAGE_SIZE } from "#@typeberry/pvm-interpreter/spi-decoder/memory-conts.js";
11
11
  import { PartialStateMock } from "../externalities/partial-state-mock.js";
12
12
  import { HostCallResult } from "../general/results.js";
13
- import { emptyRegistersBuffer } from "../utils.js";
14
13
  import { Yield } from "./yield.js";
15
14
  const gas = gasCounter(tryAsGas(0));
16
15
  const HASH_START_REG = 7;
17
16
  const RESULT_REG = 7;
18
17
  function prepareRegsAndMemory(hashStart, data, { registerMemory = true } = {}) {
19
- const registers = new HostCallRegisters(emptyRegistersBuffer());
18
+ const registers = HostCallRegisters.empty();
20
19
  registers.set(HASH_START_REG, tryAsU64(hashStart));
21
20
  const builder = new MemoryBuilder();
22
21
  if (registerMemory) {
23
22
  builder.setReadablePages(tryAsMemoryIndex(hashStart), tryAsMemoryIndex(hashStart + PAGE_SIZE), data.raw);
24
23
  }
25
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
24
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
26
25
  return {
27
26
  registers,
28
27
  memory,
@@ -32,7 +31,7 @@ describe("HostCalls: Yield", () => {
32
31
  it("should return panic if memory is unreadable", async () => {
33
32
  const accumulate = new PartialStateMock();
34
33
  const currentServiceId = tryAsServiceId(10_000);
35
- const yieldHostCall = new Yield(currentServiceId, accumulate); // yield is a reserved keyword
34
+ const yieldHostCall = Yield.new(currentServiceId, accumulate); // yield is a reserved keyword
36
35
  const hashStart = tryAsU32(2 ** 16);
37
36
  const data = Bytes.fill(HASH_SIZE, 0xaa).asOpaque();
38
37
  const { registers, memory } = prepareRegsAndMemory(hashStart, data, { registerMemory: false });
@@ -46,7 +45,7 @@ describe("HostCalls: Yield", () => {
46
45
  it("should return status OK and yield hash", async () => {
47
46
  const accumulate = new PartialStateMock();
48
47
  const currentServiceId = tryAsServiceId(10_000);
49
- const yieldHostCall = new Yield(currentServiceId, accumulate);
48
+ const yieldHostCall = Yield.new(currentServiceId, accumulate);
50
49
  const hashStart = tryAsU32(2 ** 16);
51
50
  const data = Bytes.fill(HASH_SIZE, 0xaa).asOpaque();
52
51
  const { registers, memory } = prepareRegsAndMemory(hashStart, data);
@@ -4,24 +4,24 @@ import { ProgramDecoder, } from "#@typeberry/pvm-interpreter/program-decoder/pro
4
4
  import { Result } from "#@typeberry/utils";
5
5
  import { NoMachineError, } from "./refine-externalities.js";
6
6
  export class TestRefineExt {
7
- exportSegmentData = new MultiMap(1, [
7
+ exportSegmentData = MultiMap.new(1, [
8
8
  (segment) => segment.toString(),
9
9
  ]);
10
- historicalLookupData = new MultiMap(2, [
10
+ historicalLookupData = MultiMap.new(2, [
11
11
  null,
12
12
  (key) => key.toString(),
13
13
  ]);
14
14
  machineInvokeData = new Map();
15
- machineStartData = new MultiMap(2, [
15
+ machineStartData = MultiMap.new(2, [
16
16
  (code) => code.toString(),
17
17
  null,
18
18
  ]);
19
- machineExpungeData = new MultiMap(1);
20
- machinePeekData = new MultiMap(5);
21
- machinePokeData = new MultiMap(5);
22
- machineVoidPagesData = new MultiMap(3);
23
- machineZeroPagesData = new MultiMap(3);
24
- machinePagesData = new MultiMap(4);
19
+ machineExpungeData = MultiMap.new(1);
20
+ machinePeekData = MultiMap.new(5);
21
+ machinePokeData = MultiMap.new(5);
22
+ machineVoidPagesData = MultiMap.new(3);
23
+ machineZeroPagesData = MultiMap.new(3);
24
+ machinePagesData = MultiMap.new(4);
25
25
  machineInvokeStatus = { status: Status.OK };
26
26
  exportSegments = [];
27
27
  getExportedSegments() {
@@ -48,9 +48,8 @@ export declare class PartiallyUpdatedState<T extends StateSlice = StateSlice> {
48
48
  readonly state: T;
49
49
  /** A collection of state updates. */
50
50
  readonly stateUpdate: AccumulationStateUpdate;
51
- constructor(
52
- /** Original (unmodified state). */
53
- state: T, stateUpdate?: AccumulationStateUpdate);
51
+ static new<T extends StateSlice = StateSlice>(state: T, stateUpdate?: AccumulationStateUpdate): PartiallyUpdatedState<T>;
52
+ private constructor();
54
53
  /**
55
54
  * Retrieve info of service with given id.
56
55
  *
@@ -1 +1 @@
1
- {"version":3,"file":"state-update.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/externalities/state-update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state-update.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/externalities/state-update.ts"],"names":[],"mappings":"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"}
@@ -98,6 +98,9 @@ export class PartiallyUpdatedState {
98
98
  state;
99
99
  /** A collection of state updates. */
100
100
  stateUpdate;
101
+ static new(state, stateUpdate) {
102
+ return new PartiallyUpdatedState(state, stateUpdate);
103
+ }
101
104
  constructor(
102
105
  /** Original (unmodified state). */
103
106
  state, stateUpdate) {
@@ -197,7 +200,7 @@ export class PartiallyUpdatedState {
197
200
  return null;
198
201
  }
199
202
  const slots = service.getLookupHistory(hash, lenU32);
200
- return slots === null ? null : new LookupHistoryItem(hash, lenU32, slots);
203
+ return slots === null ? null : LookupHistoryItem.new(hash, lenU32, slots);
201
204
  };
202
205
  if (updatedPreimage === undefined) {
203
206
  return stateFallback();
@@ -206,7 +209,7 @@ export class PartiallyUpdatedState {
206
209
  switch (action.kind) {
207
210
  case UpdatePreimageKind.Provide: {
208
211
  // casting to U32 is safe, since we compare with object we have in memory.
209
- return new LookupHistoryItem(hash, updatedPreimage.length, tryAsLookupHistorySlots([currentTimeslot]));
212
+ return LookupHistoryItem.new(hash, updatedPreimage.length, tryAsLookupHistorySlots([currentTimeslot]));
210
213
  }
211
214
  case UpdatePreimageKind.Remove: {
212
215
  return null;
@@ -6,11 +6,11 @@ export class TestAccounts {
6
6
  constructor(serviceId) {
7
7
  this.serviceId = serviceId;
8
8
  }
9
- preimages = new MultiMap(2, [
9
+ preimages = MultiMap.new(2, [
10
10
  null,
11
11
  (hash) => hash.toString(),
12
12
  ]);
13
- storage = new MultiMap(2, [
13
+ storage = MultiMap.new(2, [
14
14
  null,
15
15
  (hash) => hash.toString(),
16
16
  ]);
@@ -233,7 +233,8 @@ export declare class Fetch implements HostCallHandler {
233
233
  index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
234
234
  basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
235
235
  tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
236
- constructor(currentServiceId: ServiceId, fetch: IFetchExternalities);
236
+ static new(currentServiceId: ServiceId, fetch: IFetchExternalities): Fetch;
237
+ private constructor();
237
238
  execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined | PvmExecution>;
238
239
  private getValue;
239
240
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/fetch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/fetch.ts"],"names":[],"mappings":"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"}
@@ -46,6 +46,9 @@ export class Fetch {
46
46
  index = tryAsHostCallIndex(1);
47
47
  basicGasCost = tryAsSmallGas(10);
48
48
  tracedRegisters = traceRegisters(IN_OUT_REG, 8, 9, 10, 11, 12);
49
+ static new(currentServiceId, fetch) {
50
+ return new Fetch(currentServiceId, fetch);
51
+ }
49
52
  constructor(currentServiceId, fetch) {
50
53
  this.currentServiceId = currentServiceId;
51
54
  this.fetch = fetch;
@@ -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