@typeberry/lib 0.5.10-9567cee → 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 (470) 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/block/work-package.d.ts +7 -7
  188. package/packages/jam/block/work-package.d.ts.map +1 -1
  189. package/packages/jam/block/work-package.js +12 -12
  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/pvm-executor.d.ts +7 -0
  213. package/packages/jam/executor/pvm-executor.d.ts.map +1 -1
  214. package/packages/jam/executor/pvm-executor.js +36 -21
  215. package/packages/jam/fuzz-proto/v1/handler.d.ts +2 -1
  216. package/packages/jam/fuzz-proto/v1/handler.d.ts.map +1 -1
  217. package/packages/jam/fuzz-proto/v1/handler.js +3 -0
  218. package/packages/jam/fuzz-proto/v1/handler.test.js +10 -10
  219. package/packages/jam/in-core/externalities/refine.d.ts +5 -5
  220. package/packages/jam/in-core/externalities/refine.d.ts.map +1 -1
  221. package/packages/jam/in-core/externalities/refine.js +42 -7
  222. package/packages/jam/in-core/externalities/refine.test.js +119 -1
  223. package/packages/jam/in-core/in-core.d.ts +9 -23
  224. package/packages/jam/in-core/in-core.d.ts.map +1 -1
  225. package/packages/jam/in-core/in-core.js +19 -184
  226. package/packages/jam/in-core/in-core.test.js +52 -20
  227. package/packages/jam/in-core/is-authorized.d.ts +33 -0
  228. package/packages/jam/in-core/is-authorized.d.ts.map +1 -0
  229. package/packages/jam/in-core/is-authorized.js +72 -0
  230. package/packages/jam/in-core/is-authorized.test.d.ts +2 -0
  231. package/packages/jam/in-core/is-authorized.test.d.ts.map +1 -0
  232. package/packages/jam/in-core/is-authorized.test.js +125 -0
  233. package/packages/jam/in-core/refine.d.ts +34 -0
  234. package/packages/jam/in-core/refine.d.ts.map +1 -0
  235. package/packages/jam/in-core/refine.js +176 -0
  236. package/packages/jam/in-core/refine.test.d.ts +2 -0
  237. package/packages/jam/in-core/refine.test.d.ts.map +1 -0
  238. package/packages/jam/in-core/refine.test.js +6 -0
  239. package/packages/jam/jam-host-calls/accumulate/assign.d.ts +2 -1
  240. package/packages/jam/jam-host-calls/accumulate/assign.d.ts.map +1 -1
  241. package/packages/jam/jam-host-calls/accumulate/assign.js +3 -0
  242. package/packages/jam/jam-host-calls/accumulate/assign.test.js +8 -9
  243. package/packages/jam/jam-host-calls/accumulate/bless.d.ts +2 -1
  244. package/packages/jam/jam-host-calls/accumulate/bless.d.ts.map +1 -1
  245. package/packages/jam/jam-host-calls/accumulate/bless.js +12 -9
  246. package/packages/jam/jam-host-calls/accumulate/bless.test.js +11 -12
  247. package/packages/jam/jam-host-calls/accumulate/checkpoint.d.ts +2 -1
  248. package/packages/jam/jam-host-calls/accumulate/checkpoint.d.ts.map +1 -1
  249. package/packages/jam/jam-host-calls/accumulate/checkpoint.js +4 -1
  250. package/packages/jam/jam-host-calls/accumulate/checkpoint.test.js +2 -3
  251. package/packages/jam/jam-host-calls/accumulate/designate.d.ts +2 -1
  252. package/packages/jam/jam-host-calls/accumulate/designate.d.ts.map +1 -1
  253. package/packages/jam/jam-host-calls/accumulate/designate.js +3 -0
  254. package/packages/jam/jam-host-calls/accumulate/designate.test.js +5 -6
  255. package/packages/jam/jam-host-calls/accumulate/eject.d.ts +2 -1
  256. package/packages/jam/jam-host-calls/accumulate/eject.d.ts.map +1 -1
  257. package/packages/jam/jam-host-calls/accumulate/eject.js +3 -0
  258. package/packages/jam/jam-host-calls/accumulate/eject.test.js +8 -9
  259. package/packages/jam/jam-host-calls/accumulate/forget.d.ts +2 -1
  260. package/packages/jam/jam-host-calls/accumulate/forget.d.ts.map +1 -1
  261. package/packages/jam/jam-host-calls/accumulate/forget.js +3 -0
  262. package/packages/jam/jam-host-calls/accumulate/forget.test.js +5 -6
  263. package/packages/jam/jam-host-calls/accumulate/new.d.ts +2 -1
  264. package/packages/jam/jam-host-calls/accumulate/new.d.ts.map +1 -1
  265. package/packages/jam/jam-host-calls/accumulate/new.js +3 -0
  266. package/packages/jam/jam-host-calls/accumulate/new.test.js +9 -10
  267. package/packages/jam/jam-host-calls/accumulate/provide.d.ts +2 -1
  268. package/packages/jam/jam-host-calls/accumulate/provide.d.ts.map +1 -1
  269. package/packages/jam/jam-host-calls/accumulate/provide.js +3 -0
  270. package/packages/jam/jam-host-calls/accumulate/provide.test.js +8 -9
  271. package/packages/jam/jam-host-calls/accumulate/query.d.ts +2 -1
  272. package/packages/jam/jam-host-calls/accumulate/query.d.ts.map +1 -1
  273. package/packages/jam/jam-host-calls/accumulate/query.js +3 -0
  274. package/packages/jam/jam-host-calls/accumulate/query.test.js +8 -9
  275. package/packages/jam/jam-host-calls/accumulate/solicit.d.ts +2 -1
  276. package/packages/jam/jam-host-calls/accumulate/solicit.d.ts.map +1 -1
  277. package/packages/jam/jam-host-calls/accumulate/solicit.js +3 -0
  278. package/packages/jam/jam-host-calls/accumulate/solicit.test.js +7 -8
  279. package/packages/jam/jam-host-calls/accumulate/transfer.d.ts +2 -1
  280. package/packages/jam/jam-host-calls/accumulate/transfer.d.ts.map +1 -1
  281. package/packages/jam/jam-host-calls/accumulate/transfer.js +3 -0
  282. package/packages/jam/jam-host-calls/accumulate/transfer.test.js +9 -10
  283. package/packages/jam/jam-host-calls/accumulate/upgrade.d.ts +2 -1
  284. package/packages/jam/jam-host-calls/accumulate/upgrade.d.ts.map +1 -1
  285. package/packages/jam/jam-host-calls/accumulate/upgrade.js +3 -0
  286. package/packages/jam/jam-host-calls/accumulate/upgrade.test.js +4 -5
  287. package/packages/jam/jam-host-calls/accumulate/yield.d.ts +2 -1
  288. package/packages/jam/jam-host-calls/accumulate/yield.d.ts.map +1 -1
  289. package/packages/jam/jam-host-calls/accumulate/yield.js +3 -0
  290. package/packages/jam/jam-host-calls/accumulate/yield.test.js +4 -5
  291. package/packages/jam/jam-host-calls/externalities/partial-state.d.ts +1 -1
  292. package/packages/jam/jam-host-calls/externalities/refine-externalities.d.ts +1 -1
  293. package/packages/jam/jam-host-calls/externalities/refine-externalities.d.ts.map +1 -1
  294. package/packages/jam/jam-host-calls/externalities/refine-externalities.test.js +9 -9
  295. package/packages/jam/jam-host-calls/externalities/state-update.d.ts +2 -3
  296. package/packages/jam/jam-host-calls/externalities/state-update.d.ts.map +1 -1
  297. package/packages/jam/jam-host-calls/externalities/state-update.js +5 -2
  298. package/packages/jam/jam-host-calls/externalities/test-accounts.js +2 -2
  299. package/packages/jam/jam-host-calls/general/fetch.d.ts +42 -41
  300. package/packages/jam/jam-host-calls/general/fetch.d.ts.map +1 -1
  301. package/packages/jam/jam-host-calls/general/fetch.js +33 -30
  302. package/packages/jam/jam-host-calls/general/fetch.test.js +44 -42
  303. package/packages/jam/jam-host-calls/general/gas.d.ts +2 -1
  304. package/packages/jam/jam-host-calls/general/gas.d.ts.map +1 -1
  305. package/packages/jam/jam-host-calls/general/gas.js +3 -0
  306. package/packages/jam/jam-host-calls/general/gas.test.js +4 -5
  307. package/packages/jam/jam-host-calls/general/info.d.ts +2 -1
  308. package/packages/jam/jam-host-calls/general/info.d.ts.map +1 -1
  309. package/packages/jam/jam-host-calls/general/info.js +3 -0
  310. package/packages/jam/jam-host-calls/general/info.test.js +6 -7
  311. package/packages/jam/jam-host-calls/general/log.d.ts +2 -1
  312. package/packages/jam/jam-host-calls/general/log.d.ts.map +1 -1
  313. package/packages/jam/jam-host-calls/general/log.js +3 -0
  314. package/packages/jam/jam-host-calls/general/lookup.d.ts +2 -1
  315. package/packages/jam/jam-host-calls/general/lookup.d.ts.map +1 -1
  316. package/packages/jam/jam-host-calls/general/lookup.js +3 -0
  317. package/packages/jam/jam-host-calls/general/lookup.test.js +8 -9
  318. package/packages/jam/jam-host-calls/general/read.d.ts +2 -1
  319. package/packages/jam/jam-host-calls/general/read.d.ts.map +1 -1
  320. package/packages/jam/jam-host-calls/general/read.js +3 -0
  321. package/packages/jam/jam-host-calls/general/read.test.js +11 -12
  322. package/packages/jam/jam-host-calls/general/write.d.ts +2 -1
  323. package/packages/jam/jam-host-calls/general/write.d.ts.map +1 -1
  324. package/packages/jam/jam-host-calls/general/write.js +3 -0
  325. package/packages/jam/jam-host-calls/general/write.test.js +10 -11
  326. package/packages/jam/jam-host-calls/refine/export.d.ts +2 -1
  327. package/packages/jam/jam-host-calls/refine/export.d.ts.map +1 -1
  328. package/packages/jam/jam-host-calls/refine/export.js +3 -0
  329. package/packages/jam/jam-host-calls/refine/export.test.js +6 -7
  330. package/packages/jam/jam-host-calls/refine/expunge.d.ts +2 -1
  331. package/packages/jam/jam-host-calls/refine/expunge.d.ts.map +1 -1
  332. package/packages/jam/jam-host-calls/refine/expunge.js +3 -0
  333. package/packages/jam/jam-host-calls/refine/expunge.test.js +3 -4
  334. package/packages/jam/jam-host-calls/refine/historical-lookup.d.ts +2 -1
  335. package/packages/jam/jam-host-calls/refine/historical-lookup.d.ts.map +1 -1
  336. package/packages/jam/jam-host-calls/refine/historical-lookup.js +3 -0
  337. package/packages/jam/jam-host-calls/refine/historical-lookup.test.js +11 -12
  338. package/packages/jam/jam-host-calls/refine/invoke.d.ts +2 -1
  339. package/packages/jam/jam-host-calls/refine/invoke.d.ts.map +1 -1
  340. package/packages/jam/jam-host-calls/refine/invoke.js +4 -1
  341. package/packages/jam/jam-host-calls/refine/invoke.test.js +10 -11
  342. package/packages/jam/jam-host-calls/refine/machine.d.ts +2 -1
  343. package/packages/jam/jam-host-calls/refine/machine.d.ts.map +1 -1
  344. package/packages/jam/jam-host-calls/refine/machine.js +3 -0
  345. package/packages/jam/jam-host-calls/refine/machine.test.js +6 -7
  346. package/packages/jam/jam-host-calls/refine/pages.d.ts +2 -1
  347. package/packages/jam/jam-host-calls/refine/pages.d.ts.map +1 -1
  348. package/packages/jam/jam-host-calls/refine/pages.js +3 -0
  349. package/packages/jam/jam-host-calls/refine/pages.test.js +3 -4
  350. package/packages/jam/jam-host-calls/refine/peek.d.ts +2 -1
  351. package/packages/jam/jam-host-calls/refine/peek.d.ts.map +1 -1
  352. package/packages/jam/jam-host-calls/refine/peek.js +3 -0
  353. package/packages/jam/jam-host-calls/refine/peek.test.js +3 -4
  354. package/packages/jam/jam-host-calls/refine/poke.d.ts +2 -1
  355. package/packages/jam/jam-host-calls/refine/poke.d.ts.map +1 -1
  356. package/packages/jam/jam-host-calls/refine/poke.js +3 -0
  357. package/packages/jam/jam-host-calls/refine/poke.test.js +3 -4
  358. package/packages/jam/jamnp-s/network.js +1 -1
  359. package/packages/jam/jamnp-s/peers.d.ts +2 -1
  360. package/packages/jam/jamnp-s/peers.d.ts.map +1 -1
  361. package/packages/jam/jamnp-s/peers.js +3 -0
  362. package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts +4 -2
  363. package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts.map +1 -1
  364. package/packages/jam/jamnp-s/protocol/ce-128-block-request.js +6 -0
  365. package/packages/jam/jamnp-s/protocol/ce-128-block-request.test.js +2 -2
  366. package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts +4 -2
  367. package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts.map +1 -1
  368. package/packages/jam/jamnp-s/protocol/ce-129-state-request.js +6 -0
  369. package/packages/jam/jamnp-s/protocol/ce-129-state-request.test.js +4 -4
  370. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts +4 -2
  371. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts.map +1 -1
  372. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.js +6 -0
  373. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.test.js +2 -2
  374. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts +6 -3
  375. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts.map +1 -1
  376. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.js +7 -0
  377. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.test.js +2 -2
  378. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts +5 -2
  379. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts.map +1 -1
  380. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.js +7 -0
  381. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.test.js +2 -2
  382. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts +4 -2
  383. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts.map +1 -1
  384. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.js +6 -0
  385. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.test.js +2 -2
  386. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts +2 -1
  387. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts.map +1 -1
  388. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.js +3 -0
  389. package/packages/jam/jamnp-s/stream-manager.d.ts +2 -1
  390. package/packages/jam/jamnp-s/stream-manager.d.ts.map +1 -1
  391. package/packages/jam/jamnp-s/stream-manager.js +4 -1
  392. package/packages/jam/jamnp-s/tasks/sync.js +4 -4
  393. package/packages/jam/jamnp-s/tasks/sync.test.js +4 -4
  394. package/packages/jam/jamnp-s/tasks/ticket-distribution.js +2 -2
  395. package/packages/jam/jamnp-s/tasks/ticket-distribution.test.js +1 -1
  396. package/packages/jam/node/common.d.ts.map +1 -1
  397. package/packages/jam/node/common.js +3 -3
  398. package/packages/jam/rpc-client/index.d.ts +4 -2
  399. package/packages/jam/rpc-client/index.d.ts.map +1 -1
  400. package/packages/jam/rpc-client/index.js +7 -1
  401. package/packages/jam/state/in-memory-state-view.d.ts +2 -1
  402. package/packages/jam/state/in-memory-state-view.d.ts.map +1 -1
  403. package/packages/jam/state/in-memory-state-view.js +3 -0
  404. package/packages/jam/state/in-memory-state.d.ts +16 -21
  405. package/packages/jam/state/in-memory-state.d.ts.map +1 -1
  406. package/packages/jam/state/in-memory-state.js +10 -6
  407. package/packages/jam/state/in-memory-state.test.js +2 -2
  408. package/packages/jam/state/service.d.ts +2 -6
  409. package/packages/jam/state/service.d.ts.map +1 -1
  410. package/packages/jam/state/service.js +3 -0
  411. package/packages/jam/state/test.utils.js +3 -3
  412. package/packages/jam/state-json/accounts.js +5 -5
  413. package/packages/jam/state-merkleization/in-memory-state-codec.d.ts +3 -34
  414. package/packages/jam/state-merkleization/in-memory-state-codec.d.ts.map +1 -1
  415. package/packages/jam/state-merkleization/in-memory-state-codec.js +1 -1
  416. package/packages/jam/state-merkleization/serialized-state-view.d.ts +8 -3
  417. package/packages/jam/state-merkleization/serialized-state-view.d.ts.map +1 -1
  418. package/packages/jam/state-merkleization/serialized-state-view.js +6 -3
  419. package/packages/jam/state-merkleization/serialized-state.d.ts +2 -3
  420. package/packages/jam/state-merkleization/serialized-state.d.ts.map +1 -1
  421. package/packages/jam/state-merkleization/serialized-state.js +10 -2
  422. package/packages/jam/state-merkleization/serialized-state.test.js +1 -1
  423. package/packages/jam/transition/accumulate/accumulate.js +10 -3
  424. package/packages/jam/transition/accumulate/accumulate.test.js +1 -1
  425. package/packages/jam/transition/accumulate/accumulation-result-merge-utils.js +48 -39
  426. package/packages/jam/transition/block-verifier.d.ts +2 -1
  427. package/packages/jam/transition/block-verifier.d.ts.map +1 -1
  428. package/packages/jam/transition/block-verifier.js +3 -0
  429. package/packages/jam/transition/block-verifier.test.js +8 -8
  430. package/packages/jam/transition/chain-stf.d.ts +12 -4
  431. package/packages/jam/transition/chain-stf.d.ts.map +1 -1
  432. package/packages/jam/transition/chain-stf.js +7 -3
  433. package/packages/jam/transition/externalities/accumulate-externalities.d.ts +22 -8
  434. package/packages/jam/transition/externalities/accumulate-externalities.d.ts.map +1 -1
  435. package/packages/jam/transition/externalities/accumulate-externalities.js +49 -29
  436. package/packages/jam/transition/externalities/accumulate-externalities.test.js +661 -101
  437. package/packages/jam/transition/externalities/index.d.ts +1 -0
  438. package/packages/jam/transition/externalities/index.d.ts.map +1 -1
  439. package/packages/jam/transition/externalities/index.js +1 -0
  440. package/packages/jam/transition/externalities/is-authorized-fetch-externalities.d.ts +22 -0
  441. package/packages/jam/transition/externalities/is-authorized-fetch-externalities.d.ts.map +1 -0
  442. package/packages/jam/transition/externalities/is-authorized-fetch-externalities.js +41 -0
  443. package/packages/jam/transition/externalities/refine-fetch-externalities.d.ts +9 -8
  444. package/packages/jam/transition/externalities/refine-fetch-externalities.d.ts.map +1 -1
  445. package/packages/jam/transition/externalities/refine-fetch-externalities.js +20 -9
  446. package/packages/jam/transition/externalities/refine-fetch-externalities.test.js +1 -1
  447. package/packages/jam/transition/hasher.d.ts +2 -1
  448. package/packages/jam/transition/hasher.d.ts.map +1 -1
  449. package/packages/jam/transition/hasher.js +5 -2
  450. package/packages/jam/transition/hasher.test.js +1 -1
  451. package/packages/jam/transition/preimages.test.js +4 -4
  452. package/packages/jam/transition/reports/test.utils.js +1 -1
  453. package/packages/workers/api-node/config.js +4 -4
  454. package/packages/workers/api-node/port.d.ts +2 -1
  455. package/packages/workers/api-node/port.d.ts.map +1 -1
  456. package/packages/workers/api-node/port.js +4 -1
  457. package/packages/workers/api-node/port.test.js +2 -2
  458. package/packages/workers/api-node/protocol.js +2 -2
  459. package/packages/workers/block-authorship/generator.d.ts +13 -2
  460. package/packages/workers/block-authorship/generator.d.ts.map +1 -1
  461. package/packages/workers/block-authorship/generator.js +13 -9
  462. package/packages/workers/block-authorship/generator.test.js +16 -2
  463. package/packages/workers/block-authorship/main.d.ts.map +1 -1
  464. package/packages/workers/block-authorship/main.js +8 -1
  465. package/packages/workers/importer/finality.test.js +1 -1
  466. package/packages/workers/importer/importer.d.ts +23 -6
  467. package/packages/workers/importer/importer.d.ts.map +1 -1
  468. package/packages/workers/importer/importer.js +34 -19
  469. package/packages/workers/importer/main.d.ts.map +1 -1
  470. package/packages/workers/importer/main.js +13 -5
@@ -11,7 +11,6 @@ import { tryAsSbrkIndex } from "#@typeberry/pvm-interpreter/memory/memory-index.
11
11
  import { PAGE_SIZE } from "#@typeberry/pvm-interpreter/spi-decoder/memory-conts.js";
12
12
  import { asOpaqueType, OK, Result } from "#@typeberry/utils";
13
13
  import { TestAccounts } from "../externalities/test-accounts.js";
14
- import { emptyRegistersBuffer } from "../utils.js";
15
14
  import { Read } from "./read.js";
16
15
  import { HostCallResult } from "./results.js";
17
16
  const gas = gasCounter(tryAsGas(0));
@@ -25,7 +24,7 @@ const VALUE_LENGTH_TO_WRITE_REG = 12;
25
24
  function prepareRegsAndMemory(key, valueLength, { skipKey = false, skipValue = false, valueOffset = 0, valueLengthToWrite = valueLength, serviceId, } = {}) {
26
25
  const keyAddress = 2 ** 20;
27
26
  const memStart = 2 ** 16;
28
- const registers = new HostCallRegisters(emptyRegistersBuffer());
27
+ const registers = HostCallRegisters.empty();
29
28
  if (serviceId !== undefined) {
30
29
  registers.set(SERVICE_ID_REG, tryAsU64(serviceId));
31
30
  }
@@ -44,7 +43,7 @@ function prepareRegsAndMemory(key, valueLength, { skipKey = false, skipValue = f
44
43
  if (!skipValue) {
45
44
  builder.setWriteablePages(tryAsMemoryIndex(memStart), tryAsMemoryIndex(memStart + PAGE_SIZE));
46
45
  }
47
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
46
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
48
47
  return {
49
48
  registers,
50
49
  memory,
@@ -60,7 +59,7 @@ describe("HostCalls: Read", () => {
60
59
  it("for current account", async () => {
61
60
  const currentServiceId = tryAsServiceId(10_000);
62
61
  const accounts = new TestAccounts(currentServiceId);
63
- const read = new Read(currentServiceId, accounts);
62
+ const read = Read.new(currentServiceId, accounts);
64
63
  const serviceId = tryAsServiceId(10_000);
65
64
  const key = BytesBlob.blobFromString("key");
66
65
  const value = "hello world";
@@ -74,7 +73,7 @@ describe("HostCalls: Read", () => {
74
73
  it("for different service Id", async () => {
75
74
  const currentServiceId = tryAsServiceId(10_000);
76
75
  const accounts = new TestAccounts(currentServiceId);
77
- const read = new Read(currentServiceId, accounts);
76
+ const read = Read.new(currentServiceId, accounts);
78
77
  const serviceId = tryAsServiceId(11_000);
79
78
  const key = BytesBlob.blobFromString("key");
80
79
  const value = "hello world";
@@ -90,7 +89,7 @@ describe("HostCalls: Read", () => {
90
89
  it("with offset", async () => {
91
90
  const currentServiceId = tryAsServiceId(10_000);
92
91
  const accounts = new TestAccounts(currentServiceId);
93
- const read = new Read(currentServiceId, accounts);
92
+ const read = Read.new(currentServiceId, accounts);
94
93
  const serviceId = tryAsServiceId(10_000);
95
94
  const key = BytesBlob.blobFromString("key");
96
95
  const value = "hello world";
@@ -106,7 +105,7 @@ describe("HostCalls: Read", () => {
106
105
  it("with offset and length", async () => {
107
106
  const currentServiceId = tryAsServiceId(10_000);
108
107
  const accounts = new TestAccounts(currentServiceId);
109
- const read = new Read(currentServiceId, accounts);
108
+ const read = Read.new(currentServiceId, accounts);
110
109
  const serviceId = tryAsServiceId(10_000);
111
110
  const key = BytesBlob.blobFromString("key");
112
111
  const value = "hello world";
@@ -123,7 +122,7 @@ describe("HostCalls: Read", () => {
123
122
  it("with 0-length destination target", async () => {
124
123
  const currentServiceId = tryAsServiceId(10_000);
125
124
  const accounts = new TestAccounts(currentServiceId);
126
- const read = new Read(currentServiceId, accounts);
125
+ const read = Read.new(currentServiceId, accounts);
127
126
  const serviceId = tryAsServiceId(10_000);
128
127
  const key = BytesBlob.blobFromString("xyz");
129
128
  const value = "hello world";
@@ -138,7 +137,7 @@ describe("HostCalls: Read", () => {
138
137
  it("should handle missing account", async () => {
139
138
  const currentServiceId = tryAsServiceId(10_000);
140
139
  const accounts = new TestAccounts(currentServiceId);
141
- const read = new Read(currentServiceId, accounts);
140
+ const read = Read.new(currentServiceId, accounts);
142
141
  const value = "xyz";
143
142
  const key = BytesBlob.blobFromString(value);
144
143
  const { registers, memory } = prepareRegsAndMemory(key, value.length);
@@ -151,7 +150,7 @@ describe("HostCalls: Read", () => {
151
150
  it("should handle missing value", async () => {
152
151
  const currentServiceId = tryAsServiceId(10_000);
153
152
  const accounts = new TestAccounts(currentServiceId);
154
- const read = new Read(currentServiceId, accounts);
153
+ const read = Read.new(currentServiceId, accounts);
155
154
  const serviceId = tryAsServiceId(10_000);
156
155
  const value = "xyz";
157
156
  const key = BytesBlob.blobFromString(value);
@@ -165,7 +164,7 @@ describe("HostCalls: Read", () => {
165
164
  it("should fail if there is no memory for key", async () => {
166
165
  const currentServiceId = tryAsServiceId(10_000);
167
166
  const accounts = new TestAccounts(currentServiceId);
168
- const read = new Read(currentServiceId, accounts);
167
+ const read = Read.new(currentServiceId, accounts);
169
168
  const serviceId = tryAsServiceId(10_000);
170
169
  const value = "xyz";
171
170
  const key = BytesBlob.blobFromString(value);
@@ -177,7 +176,7 @@ describe("HostCalls: Read", () => {
177
176
  it("should fail if there is no memory for result", async () => {
178
177
  const currentServiceId = tryAsServiceId(10_000);
179
178
  const accounts = new TestAccounts(currentServiceId);
180
- const read = new Read(currentServiceId, accounts);
179
+ const read = Read.new(currentServiceId, accounts);
181
180
  const serviceId = tryAsServiceId(10_000);
182
181
  const value = "xyz";
183
182
  const key = BytesBlob.blobFromString(value);
@@ -28,7 +28,8 @@ export declare class Write implements HostCallHandler {
28
28
  index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
29
29
  basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
30
30
  tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
31
- constructor(currentServiceId: ServiceId, account: AccountsWrite);
31
+ static new(currentServiceId: ServiceId, account: AccountsWrite): Write;
32
+ private constructor();
32
33
  execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined | PvmExecution>;
33
34
  }
34
35
  //# sourceMappingURL=write.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/write.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAgB,KAAK,MAAM,EAAuC,MAAM,kBAAkB,CAAC;AAKlG,mDAAmD;AACnD,MAAM,WAAW,aAAa;IAC5B;;;;;;;;OAQG;IACH,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;CACjF;AAID;;;;GAIG;AACH,qBAAa,KAAM,YAAW,eAAe;aAMzB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAN1B,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,eAAe,uEAAwC;gBAGrC,gBAAgB,EAAE,SAAS,EAC1B,OAAO,EAAE,aAAa;IAGnC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CA+CrH"}
1
+ {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/write.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAgB,KAAK,MAAM,EAAuC,MAAM,kBAAkB,CAAC;AAKlG,mDAAmD;AACnD,MAAM,WAAW,aAAa;IAC5B;;;;;;;;OAQG;IACH,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;CACjF;AAID;;;;GAIG;AACH,qBAAa,KAAM,YAAW,eAAe;aAUzB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAV1B,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,eAAe,uEAAwC;IAEvD,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa;IAI9D,OAAO;IAKD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CA+CrH"}
@@ -18,6 +18,9 @@ export class Write {
18
18
  index = tryAsHostCallIndex(4);
19
19
  basicGasCost = tryAsSmallGas(10);
20
20
  tracedRegisters = traceRegisters(IN_OUT_REG, 8, 9, 10);
21
+ static new(currentServiceId, account) {
22
+ return new Write(currentServiceId, account);
23
+ }
21
24
  constructor(currentServiceId, account) {
22
25
  this.currentServiceId = currentServiceId;
23
26
  this.account = account;
@@ -12,7 +12,6 @@ import { PAGE_SIZE } from "#@typeberry/pvm-interpreter/spi-decoder/memory-conts.
12
12
  import { ServiceAccountInfo } from "#@typeberry/state";
13
13
  import { asOpaqueType } from "#@typeberry/utils";
14
14
  import { TestAccounts } from "../externalities/test-accounts.js";
15
- import { emptyRegistersBuffer } from "../utils.js";
16
15
  import { HostCallResult } from "./results.js";
17
16
  import { Write } from "./write.js";
18
17
  const gas = gasCounter(tryAsGas(0));
@@ -40,7 +39,7 @@ function prepareAccounts(serviceId, { balance, gratisStorage } = {}) {
40
39
  function prepareRegsAndMemory(key, dataInMemory, { skipKey = false, skipValue = false } = {}) {
41
40
  const keyAddress = 2 ** 18;
42
41
  const memStart = 2 ** 16;
43
- const registers = new HostCallRegisters(emptyRegistersBuffer());
42
+ const registers = HostCallRegisters.empty();
44
43
  registers.set(KEY_START_REG, tryAsU64(keyAddress));
45
44
  registers.set(KEY_LEN_REG, tryAsU64(key.length));
46
45
  registers.set(DEST_START_REG, tryAsU64(memStart));
@@ -52,7 +51,7 @@ function prepareRegsAndMemory(key, dataInMemory, { skipKey = false, skipValue =
52
51
  if (!skipValue && dataInMemory.length > 0) {
53
52
  builder.setReadablePages(tryAsMemoryIndex(memStart), tryAsMemoryIndex(memStart + PAGE_SIZE), dataInMemory.raw);
54
53
  }
55
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
54
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
56
55
  return {
57
56
  registers,
58
57
  memory,
@@ -62,7 +61,7 @@ describe("HostCalls: Write", () => {
62
61
  it("should write data to account state", async () => {
63
62
  const serviceId = tryAsServiceId(10_000);
64
63
  const accounts = prepareAccounts(serviceId);
65
- const write = new Write(serviceId, accounts);
64
+ const write = Write.new(serviceId, accounts);
66
65
  const key = BytesBlob.blobFromString("imma key");
67
66
  const { registers, memory } = prepareRegsAndMemory(key, BytesBlob.blobFromString("hello world!"));
68
67
  accounts.storage.set(BytesBlob.blobFromString("old data"), serviceId, asOpaqueType(key));
@@ -77,7 +76,7 @@ describe("HostCalls: Write", () => {
77
76
  it("should write data to account state when low balance but with gratisStorage", async () => {
78
77
  const serviceId = tryAsServiceId(10_000);
79
78
  const accounts = prepareAccounts(serviceId, { balance: 100n, gratisStorage: 150000n });
80
- const write = new Write(serviceId, accounts);
79
+ const write = Write.new(serviceId, accounts);
81
80
  const key = BytesBlob.blobFromString("imma key");
82
81
  const { registers, memory } = prepareRegsAndMemory(key, BytesBlob.blobFromString("hello world!"));
83
82
  accounts.storage.set(BytesBlob.blobFromString("old data"), serviceId, asOpaqueType(key));
@@ -92,7 +91,7 @@ describe("HostCalls: Write", () => {
92
91
  it("should remove data from account state", async () => {
93
92
  const serviceId = tryAsServiceId(10_000);
94
93
  const accounts = prepareAccounts(serviceId);
95
- const write = new Write(serviceId, accounts);
94
+ const write = Write.new(serviceId, accounts);
96
95
  const key = BytesBlob.blobFromString("xyz");
97
96
  const { registers, memory } = prepareRegsAndMemory(key, BytesBlob.blobFromNumbers([]));
98
97
  accounts.storage.set(BytesBlob.blobFromString("hello world!"), serviceId, asOpaqueType(key));
@@ -107,7 +106,7 @@ describe("HostCalls: Write", () => {
107
106
  it("should fail if there is no memory for key", async () => {
108
107
  const serviceId = tryAsServiceId(10_000);
109
108
  const accounts = prepareAccounts(serviceId);
110
- const write = new Write(serviceId, accounts);
109
+ const write = Write.new(serviceId, accounts);
111
110
  const key = BytesBlob.blobFromString("xyz");
112
111
  const { registers, memory } = prepareRegsAndMemory(key, BytesBlob.blobFromString("hello world!"), {
113
112
  skipKey: true,
@@ -121,7 +120,7 @@ describe("HostCalls: Write", () => {
121
120
  it("should fail if there is no memory for result", async () => {
122
121
  const serviceId = tryAsServiceId(10_000);
123
122
  const accounts = prepareAccounts(serviceId);
124
- const write = new Write(serviceId, accounts);
123
+ const write = Write.new(serviceId, accounts);
125
124
  const key = BytesBlob.blobFromString("xyz");
126
125
  const { registers, memory } = prepareRegsAndMemory(key, BytesBlob.blobFromString("hello world!"), {
127
126
  skipValue: true,
@@ -135,7 +134,7 @@ describe("HostCalls: Write", () => {
135
134
  it("should fail if the key is not fully readable", async () => {
136
135
  const serviceId = tryAsServiceId(10_000);
137
136
  const accounts = prepareAccounts(serviceId);
138
- const write = new Write(serviceId, accounts);
137
+ const write = Write.new(serviceId, accounts);
139
138
  const key = BytesBlob.blobFromString("xyz");
140
139
  const { registers, memory } = prepareRegsAndMemory(key, BytesBlob.blobFromString("hello world!"));
141
140
  registers.set(KEY_LEN_REG, tryAsU64(PAGE_SIZE + 1));
@@ -148,7 +147,7 @@ describe("HostCalls: Write", () => {
148
147
  it("should fail if the value is not fully readable", async () => {
149
148
  const serviceId = tryAsServiceId(10_000);
150
149
  const accounts = prepareAccounts(serviceId);
151
- const write = new Write(serviceId, accounts);
150
+ const write = Write.new(serviceId, accounts);
152
151
  const key = BytesBlob.blobFromString("xyz");
153
152
  const { registers, memory } = prepareRegsAndMemory(key, BytesBlob.blobFromString("hello world!"));
154
153
  registers.set(DEST_LEN_REG, tryAsU64(PAGE_SIZE + 1));
@@ -161,7 +160,7 @@ describe("HostCalls: Write", () => {
161
160
  it("should handle storage full when low balance in the account", async () => {
162
161
  const serviceId = tryAsServiceId(10_000);
163
162
  const accounts = prepareAccounts(serviceId, { balance: 100n });
164
- const write = new Write(serviceId, accounts);
163
+ const write = Write.new(serviceId, accounts);
165
164
  const key = BytesBlob.blobFromString("imma key");
166
165
  const { registers, memory } = prepareRegsAndMemory(key, BytesBlob.blobFromString("hello world! Is super long very very very."));
167
166
  accounts.storage.set(BytesBlob.blobFromString("old data"), serviceId, asOpaqueType(key));
@@ -12,7 +12,8 @@ export declare class Export implements HostCallHandler {
12
12
  basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
13
13
  currentServiceId: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"ServiceId[u32]">;
14
14
  tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
15
- constructor(refine: RefineExternalities);
15
+ static new(refine: RefineExternalities): Export;
16
+ private constructor();
16
17
  execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<PvmExecution | undefined>;
17
18
  }
18
19
  //# sourceMappingURL=export.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/refine/export.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,YAAY,EAGb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAOpF;;;;GAIG;AACH,qBAAa,MAAO,YAAW,eAAe;IAMhC,OAAO,CAAC,QAAQ,CAAC,MAAM;IALnC,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,gBAAgB,6HAAsB;IACtC,eAAe,uEAAiC;gBAEnB,MAAM,EAAE,mBAAmB;IAElD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CA0BrH"}
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/refine/export.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,YAAY,EAGb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAOpF;;;;GAIG;AACH,qBAAa,MAAO,YAAW,eAAe;IAUxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAT3C,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,gBAAgB,6HAAsB;IACtC,eAAe,uEAAiC;IAEhD,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB;IAItC,OAAO;IAED,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CA0BrH"}
@@ -19,6 +19,9 @@ export class Export {
19
19
  basicGasCost = tryAsSmallGas(10);
20
20
  currentServiceId = CURRENT_SERVICE_ID;
21
21
  tracedRegisters = traceRegisters(IN_OUT_REG, 8);
22
+ static new(refine) {
23
+ return new Export(refine);
24
+ }
22
25
  constructor(refine) {
23
26
  this.refine = refine;
24
27
  }
@@ -13,7 +13,6 @@ import { Result } from "#@typeberry/utils";
13
13
  import { SegmentExportError } from "../externalities/refine-externalities.js";
14
14
  import { TestRefineExt } from "../externalities/refine-externalities.test.js";
15
15
  import { HostCallResult } from "../general/results.js";
16
- import { emptyRegistersBuffer } from "../utils.js";
17
16
  import { Export } from "./export.js";
18
17
  const gas = gasCounter(tryAsGas(0));
19
18
  const SEGMENT_START_REG = 7;
@@ -21,14 +20,14 @@ const RESULT_REG = SEGMENT_START_REG;
21
20
  const SEGMENT_LENGTH_REG = 8;
22
21
  function prepareRegsAndMemory(segment, segmentLength = segment.length, { skipSegment = false } = {}) {
23
22
  const memStart = 2 ** 23;
24
- const registers = new HostCallRegisters(emptyRegistersBuffer());
23
+ const registers = HostCallRegisters.empty();
25
24
  registers.set(SEGMENT_START_REG, tryAsU64(memStart));
26
25
  registers.set(SEGMENT_LENGTH_REG, tryAsU64(segmentLength));
27
26
  const builder = new MemoryBuilder();
28
27
  if (!skipSegment) {
29
28
  builder.setReadablePages(tryAsMemoryIndex(memStart), tryAsMemoryIndex(memStart + 2 * PAGE_SIZE), segment.raw);
30
29
  }
31
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
30
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
32
31
  return {
33
32
  registers,
34
33
  memory,
@@ -37,7 +36,7 @@ function prepareRegsAndMemory(segment, segmentLength = segment.length, { skipSeg
37
36
  describe("HostCalls: Export", () => {
38
37
  it("should export a segment", async () => {
39
38
  const refine = new TestRefineExt();
40
- const exp = new Export(refine);
39
+ const exp = Export.new(refine);
41
40
  exp.currentServiceId = tryAsServiceId(10_000);
42
41
  const segment = Bytes.fill(SEGMENT_BYTES, 15).asOpaque();
43
42
  const { registers, memory } = prepareRegsAndMemory(segment);
@@ -51,7 +50,7 @@ describe("HostCalls: Export", () => {
51
50
  });
52
51
  it("should zero-pad when exported value is small", async () => {
53
52
  const refine = new TestRefineExt();
54
- const exp = new Export(refine);
53
+ const exp = Export.new(refine);
55
54
  exp.currentServiceId = tryAsServiceId(10_000);
56
55
  const segment = Bytes.fill(SEGMENT_BYTES, 15).asOpaque();
57
56
  const { registers, memory } = prepareRegsAndMemory(segment, 2);
@@ -68,7 +67,7 @@ describe("HostCalls: Export", () => {
68
67
  });
69
68
  it("should panic if memory is not readable", async () => {
70
69
  const refine = new TestRefineExt();
71
- const exp = new Export(refine);
70
+ const exp = Export.new(refine);
72
71
  exp.currentServiceId = tryAsServiceId(10_000);
73
72
  const segment = Bytes.fill(SEGMENT_BYTES, 15).asOpaque();
74
73
  const { registers, memory } = prepareRegsAndMemory(segment, segment.length, { skipSegment: true });
@@ -80,7 +79,7 @@ describe("HostCalls: Export", () => {
80
79
  });
81
80
  it("should fail with FULL if export limit is reached", async () => {
82
81
  const refine = new TestRefineExt();
83
- const exp = new Export(refine);
82
+ const exp = Export.new(refine);
84
83
  exp.currentServiceId = tryAsServiceId(10_000);
85
84
  const segment = Bytes.fill(SEGMENT_BYTES, 15).asOpaque();
86
85
  const { registers, memory } = prepareRegsAndMemory(segment);
@@ -12,7 +12,8 @@ export declare class Expunge implements HostCallHandler {
12
12
  basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
13
13
  currentServiceId: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"ServiceId[u32]">;
14
14
  tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
15
- constructor(refine: RefineExternalities);
15
+ static new(refine: RefineExternalities): Expunge;
16
+ private constructor();
16
17
  execute(_gas: IGasCounter, regs: HostCallRegisters): Promise<PvmExecution | undefined>;
17
18
  }
18
19
  //# sourceMappingURL=expunge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"expunge.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/refine/expunge.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAGlB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAE,KAAK,mBAAmB,EAAkB,MAAM,0CAA0C,CAAC;AAOpG;;;;GAIG;AACH,qBAAa,OAAQ,YAAW,eAAe;IAMjC,OAAO,CAAC,QAAQ,CAAC,MAAM;IALnC,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,gBAAgB,6HAAsB;IACtC,eAAe,uEAA8B;gBAEhB,MAAM,EAAE,mBAAmB;IAElD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CAe7F"}
1
+ {"version":3,"file":"expunge.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/refine/expunge.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAGlB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAE,KAAK,mBAAmB,EAAkB,MAAM,0CAA0C,CAAC;AAOpG;;;;GAIG;AACH,qBAAa,OAAQ,YAAW,eAAe;IAUzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAT3C,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,gBAAgB,6HAAsB;IACtC,eAAe,uEAA8B;IAE7C,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB;IAItC,OAAO;IAED,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CAe7F"}
@@ -17,6 +17,9 @@ export class Expunge {
17
17
  basicGasCost = tryAsSmallGas(10);
18
18
  currentServiceId = CURRENT_SERVICE_ID;
19
19
  tracedRegisters = traceRegisters(IN_OUT_REG);
20
+ static new(refine) {
21
+ return new Expunge(refine);
22
+ }
20
23
  constructor(refine) {
21
24
  this.refine = refine;
22
25
  }
@@ -9,15 +9,14 @@ import { Result } from "#@typeberry/utils";
9
9
  import { NoMachineError, tryAsMachineId, tryAsProgramCounter, } from "../externalities/refine-externalities.js";
10
10
  import { TestRefineExt } from "../externalities/refine-externalities.test.js";
11
11
  import { HostCallResult } from "../general/results.js";
12
- import { emptyRegistersBuffer } from "../utils.js";
13
12
  import { Expunge } from "./expunge.js";
14
13
  const gas = gasCounter(tryAsGas(0));
15
14
  const RESULT_REG = 7;
16
15
  function prepareRegsAndMemory(machineId) {
17
- const registers = new HostCallRegisters(emptyRegistersBuffer());
16
+ const registers = HostCallRegisters.empty();
18
17
  registers.set(7, machineId);
19
18
  const builder = new MemoryBuilder();
20
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
19
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
21
20
  return {
22
21
  registers,
23
22
  memory,
@@ -25,7 +24,7 @@ function prepareRegsAndMemory(machineId) {
25
24
  }
26
25
  function prepareTest(result) {
27
26
  const refine = new TestRefineExt();
28
- const expunge = new Expunge(refine);
27
+ const expunge = Expunge.new(refine);
29
28
  expunge.currentServiceId = tryAsServiceId(10_000);
30
29
  const machineId = tryAsMachineId(10_000);
31
30
  const { registers, memory } = prepareRegsAndMemory(machineId);
@@ -12,7 +12,8 @@ export declare class HistoricalLookup implements HostCallHandler {
12
12
  basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
13
13
  currentServiceId: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"ServiceId[u32]">;
14
14
  tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
15
- constructor(refine: RefineExternalities);
15
+ static new(refine: RefineExternalities): HistoricalLookup;
16
+ private constructor();
16
17
  execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<PvmExecution | undefined>;
17
18
  }
18
19
  //# sourceMappingURL=historical-lookup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"historical-lookup.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/refine/historical-lookup.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,YAAY,EAGb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAC3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAOpF;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,eAAe;IAM1C,OAAO,CAAC,QAAQ,CAAC,MAAM;IALnC,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,gBAAgB,6HAAsB;IACtC,eAAe,uEAAoC;gBAEtB,MAAM,EAAE,mBAAmB;IAElD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CAyCrH"}
1
+ {"version":3,"file":"historical-lookup.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/refine/historical-lookup.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,YAAY,EAGb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAC3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAOpF;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,eAAe;IAUlC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAT3C,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,gBAAgB,6HAAsB;IACtC,eAAe,uEAAoC;IAEnD,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB;IAItC,OAAO;IAED,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CAyCrH"}
@@ -18,6 +18,9 @@ export class HistoricalLookup {
18
18
  basicGasCost = tryAsSmallGas(10);
19
19
  currentServiceId = CURRENT_SERVICE_ID;
20
20
  tracedRegisters = traceRegisters(IN_OUT_REG, 8, 9);
21
+ static new(refine) {
22
+ return new HistoricalLookup(refine);
23
+ }
21
24
  constructor(refine) {
22
25
  this.refine = refine;
23
26
  }
@@ -11,7 +11,6 @@ import { tryAsSbrkIndex } from "#@typeberry/pvm-interpreter/memory/memory-index.
11
11
  import { PAGE_SIZE } from "#@typeberry/pvm-interpreter/spi-decoder/memory-conts.js";
12
12
  import { TestRefineExt } from "../externalities/refine-externalities.test.js";
13
13
  import { HostCallResult } from "../general/results.js";
14
- import { emptyRegistersBuffer } from "../utils.js";
15
14
  import { HistoricalLookup } from "./historical-lookup.js";
16
15
  const gas = gasCounter(tryAsGas(0));
17
16
  const SERVICE_ID_REG = 7;
@@ -23,7 +22,7 @@ const DEST_LEN_REG = 11;
23
22
  function prepareRegsAndMemory(serviceId, hash, offset, destinationLength, { skipHash = false, writableMemory = true } = {}) {
24
23
  const hashAddress = 2 ** 16;
25
24
  const memStart = 2 ** 20;
26
- const registers = new HostCallRegisters(emptyRegistersBuffer());
25
+ const registers = HostCallRegisters.empty();
27
26
  registers.set(SERVICE_ID_REG, tryAsU64(serviceId));
28
27
  registers.set(HASH_START_REG, tryAsU64(hashAddress));
29
28
  registers.set(DEST_START_REG, tryAsU64(memStart));
@@ -36,7 +35,7 @@ function prepareRegsAndMemory(serviceId, hash, offset, destinationLength, { skip
36
35
  if (writableMemory) {
37
36
  builder.setWriteablePages(tryAsMemoryIndex(memStart), tryAsMemoryIndex(memStart + PAGE_SIZE));
38
37
  }
39
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
38
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
40
39
  return {
41
40
  registers,
42
41
  memory,
@@ -50,7 +49,7 @@ function prepareRegsAndMemory(serviceId, hash, offset, destinationLength, { skip
50
49
  describe("HostCalls: Historical Lookup", () => {
51
50
  it("should lookup key from an account", async () => {
52
51
  const refine = new TestRefineExt();
53
- const lookup = new HistoricalLookup(refine);
52
+ const lookup = HistoricalLookup.new(refine);
54
53
  const serviceId = tryAsServiceId(10_000);
55
54
  const hash = Bytes.fill(32, 3);
56
55
  const data = "hello world";
@@ -65,7 +64,7 @@ describe("HostCalls: Historical Lookup", () => {
65
64
  });
66
65
  it("should lookup key longer than destination", async () => {
67
66
  const refine = new TestRefineExt();
68
- const lookup = new HistoricalLookup(refine);
67
+ const lookup = HistoricalLookup.new(refine);
69
68
  const serviceId = tryAsServiceId(10_000);
70
69
  const hash = Bytes.fill(32, 3);
71
70
  const data = "hello world";
@@ -80,7 +79,7 @@ describe("HostCalls: Historical Lookup", () => {
80
79
  });
81
80
  it("should lookup key longer than destination + offset", async () => {
82
81
  const refine = new TestRefineExt();
83
- const lookup = new HistoricalLookup(refine);
82
+ const lookup = HistoricalLookup.new(refine);
84
83
  const serviceId = tryAsServiceId(10_000);
85
84
  const hash = Bytes.fill(32, 3);
86
85
  const data = "hello world";
@@ -95,7 +94,7 @@ describe("HostCalls: Historical Lookup", () => {
95
94
  });
96
95
  it("should handle missing value", async () => {
97
96
  const refine = new TestRefineExt();
98
- const lookup = new HistoricalLookup(refine);
97
+ const lookup = HistoricalLookup.new(refine);
99
98
  const serviceId = tryAsServiceId(10_000);
100
99
  const hash = Bytes.fill(32, 3);
101
100
  const { registers, memory, readResult } = prepareRegsAndMemory(serviceId, hash, 0, 32);
@@ -109,7 +108,7 @@ describe("HostCalls: Historical Lookup", () => {
109
108
  });
110
109
  it("should panic if no memory for key", async () => {
111
110
  const refine = new TestRefineExt();
112
- const lookup = new HistoricalLookup(refine);
111
+ const lookup = HistoricalLookup.new(refine);
113
112
  const serviceId = tryAsServiceId(10_000);
114
113
  const hash = Bytes.fill(32, 3);
115
114
  const { registers, memory } = prepareRegsAndMemory(serviceId, hash, 0, 32, { skipHash: true });
@@ -121,7 +120,7 @@ describe("HostCalls: Historical Lookup", () => {
121
120
  });
122
121
  it("should panic if memory is not writable", async () => {
123
122
  const refine = new TestRefineExt();
124
- const lookup = new HistoricalLookup(refine);
123
+ const lookup = HistoricalLookup.new(refine);
125
124
  const serviceId = tryAsServiceId(10_000);
126
125
  const hash = Bytes.fill(32, 3);
127
126
  const data = "hello world";
@@ -135,7 +134,7 @@ describe("HostCalls: Historical Lookup", () => {
135
134
  });
136
135
  it("should handle if the destination length is greater than data length", async () => {
137
136
  const refine = new TestRefineExt();
138
- const lookup = new HistoricalLookup(refine);
137
+ const lookup = HistoricalLookup.new(refine);
139
138
  const serviceId = tryAsServiceId(10_000);
140
139
  const hash = Bytes.fill(32, 3);
141
140
  const data = "hello world";
@@ -151,7 +150,7 @@ describe("HostCalls: Historical Lookup", () => {
151
150
  });
152
151
  it("should panic if the destination is beyond mem limit", async () => {
153
152
  const refine = new TestRefineExt();
154
- const lookup = new HistoricalLookup(refine);
153
+ const lookup = HistoricalLookup.new(refine);
155
154
  const serviceId = tryAsServiceId(10_000);
156
155
  const hash = Bytes.fill(32, 3);
157
156
  const data = "hello world";
@@ -167,7 +166,7 @@ describe("HostCalls: Historical Lookup", () => {
167
166
  });
168
167
  it("should handle 0-length destination", async () => {
169
168
  const refine = new TestRefineExt();
170
- const lookup = new HistoricalLookup(refine);
169
+ const lookup = HistoricalLookup.new(refine);
171
170
  const serviceId = tryAsServiceId(10_000);
172
171
  const hash = Bytes.fill(32, 3);
173
172
  const data = "hello world";
@@ -12,7 +12,8 @@ export declare class Invoke implements HostCallHandler {
12
12
  basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
13
13
  currentServiceId: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"ServiceId[u32]">;
14
14
  tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
15
- constructor(refine: RefineExternalities);
15
+ static new(refine: RefineExternalities): Invoke;
16
+ private constructor();
16
17
  execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<PvmExecution | undefined>;
17
18
  }
18
19
  //# sourceMappingURL=invoke.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"invoke.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/refine/invoke.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,iBAAiB,EACjB,YAAY,EAGb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,KAAK,WAAW,EAMjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,KAAK,mBAAmB,EAAkB,MAAM,0CAA0C,CAAC;AAapG;;;;GAIG;AACH,qBAAa,MAAO,YAAW,eAAe;IAMhC,OAAO,CAAC,QAAQ,CAAC,MAAM;IALnC,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,gBAAgB,6HAAsB;IACtC,eAAe,uEAA8C;gBAEhC,MAAM,EAAE,mBAAmB;IAElD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CAyErH"}
1
+ {"version":3,"file":"invoke.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/refine/invoke.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,iBAAiB,EACjB,YAAY,EAGb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,KAAK,WAAW,EAMjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,KAAK,mBAAmB,EAAkB,MAAM,0CAA0C,CAAC;AAapG;;;;GAIG;AACH,qBAAa,MAAO,YAAW,eAAe;IAUxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAT3C,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,gBAAgB,6HAAsB;IACtC,eAAe,uEAA8C;IAE7D,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB;IAItC,OAAO;IAED,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CAyErH"}
@@ -26,6 +26,9 @@ export class Invoke {
26
26
  basicGasCost = tryAsSmallGas(10);
27
27
  currentServiceId = CURRENT_SERVICE_ID;
28
28
  tracedRegisters = traceRegisters(IN_OUT_REG_1, IN_OUT_REG_2);
29
+ static new(refine) {
30
+ return new Invoke(refine);
31
+ }
29
32
  constructor(refine) {
30
33
  this.refine = refine;
31
34
  }
@@ -53,7 +56,7 @@ export class Invoke {
53
56
  // `g`
54
57
  const gasCost = tryAsBigGas(gasRegisters.gas);
55
58
  // `w`
56
- const registers = new HostCallRegisters(gasRegisters.registers.raw);
59
+ const registers = HostCallRegisters.fromRaw(gasRegisters.registers.raw);
57
60
  // try run the machine
58
61
  const state = await this.refine.machineInvoke(machineIndex, gasCost, registers);
59
62
  logger.trace `[${this.currentServiceId}] INVOKE(${machineIndex}, ${gasCost}, ${registers}) <- ${resultToString(state)}`;
@@ -12,7 +12,6 @@ import { PAGE_SIZE } from "#@typeberry/pvm-interpreter/spi-decoder/memory-conts.
12
12
  import { MachineInstance, tryAsMachineId, } from "../externalities/refine-externalities.js";
13
13
  import { TestRefineExt } from "../externalities/refine-externalities.test.js";
14
14
  import { HostCallResult } from "../general/results.js";
15
- import { emptyRegistersBuffer } from "../utils.js";
16
15
  import { Invoke } from "./invoke.js";
17
16
  const gas = gasCounter(tryAsGas(0));
18
17
  const MACHINE_INDEX_REG = 7;
@@ -22,10 +21,10 @@ const RESULT_REG_2 = DEST_REG;
22
21
  const GAS_REG_SIZE = 112;
23
22
  const MEM_START = RESERVED_NUMBER_OF_PAGES * PAGE_SIZE;
24
23
  function prepareRegsAndMemory(machineIndex, destinationStart, data, { registerMemory = true } = {}) {
25
- const registers = new HostCallRegisters(emptyRegistersBuffer());
24
+ const registers = HostCallRegisters.empty();
26
25
  registers.set(MACHINE_INDEX_REG, machineIndex);
27
26
  registers.set(DEST_REG, tryAsU64(destinationStart));
28
- const memory = new HostCallMemory(prepareMemory(data, destinationStart, PAGE_SIZE, { registerMemory }));
27
+ const memory = HostCallMemory.new(prepareMemory(data, destinationStart, PAGE_SIZE, { registerMemory }));
29
28
  return {
30
29
  registers,
31
30
  memory,
@@ -55,7 +54,7 @@ describe("HostCalls: Invoke", () => {
55
54
  }, {
56
55
  registerMachine: false,
57
56
  });
58
- const invoke = new Invoke(refine);
57
+ const invoke = Invoke.new(refine);
59
58
  invoke.currentServiceId = tryAsServiceId(10_000);
60
59
  const w7 = tryAsU64(machineId);
61
60
  const w8 = tryAsU64(MEM_START);
@@ -72,7 +71,7 @@ describe("HostCalls: Invoke", () => {
72
71
  }, {
73
72
  registerMachine: false,
74
73
  });
75
- const invoke = new Invoke(refine);
74
+ const invoke = Invoke.new(refine);
76
75
  invoke.currentServiceId = tryAsServiceId(10_000);
77
76
  const w7 = tryAsU64(machineId);
78
77
  const w8 = tryAsU64(MEM_START);
@@ -87,7 +86,7 @@ describe("HostCalls: Invoke", () => {
87
86
  const [refine, machineId] = await prepareMachine({
88
87
  status: Status.OK,
89
88
  });
90
- const invoke = new Invoke(refine);
89
+ const invoke = Invoke.new(refine);
91
90
  invoke.currentServiceId = tryAsServiceId(10_000);
92
91
  const w7 = tryAsU64(machineId + 1n);
93
92
  const w8 = tryAsU64(MEM_START);
@@ -104,7 +103,7 @@ describe("HostCalls: Invoke", () => {
104
103
  status: Status.HOST,
105
104
  hostCallIndex,
106
105
  });
107
- const invoke = new Invoke(refine);
106
+ const invoke = Invoke.new(refine);
108
107
  invoke.currentServiceId = tryAsServiceId(10_000);
109
108
  const w7 = tryAsU64(machineId);
110
109
  const w8 = tryAsU64(MEM_START);
@@ -121,7 +120,7 @@ describe("HostCalls: Invoke", () => {
121
120
  status: Status.FAULT,
122
121
  address,
123
122
  });
124
- const invoke = new Invoke(refine);
123
+ const invoke = Invoke.new(refine);
125
124
  invoke.currentServiceId = tryAsServiceId(10_000);
126
125
  const w7 = tryAsU64(machineId);
127
126
  const w8 = tryAsU64(MEM_START);
@@ -136,7 +135,7 @@ describe("HostCalls: Invoke", () => {
136
135
  const [refine, machineId] = await prepareMachine({
137
136
  status: Status.OOG,
138
137
  });
139
- const invoke = new Invoke(refine);
138
+ const invoke = Invoke.new(refine);
140
139
  invoke.currentServiceId = tryAsServiceId(10_000);
141
140
  const w7 = tryAsU64(machineId);
142
141
  const w8 = tryAsU64(MEM_START);
@@ -151,7 +150,7 @@ describe("HostCalls: Invoke", () => {
151
150
  const [refine, machineId] = await prepareMachine({
152
151
  status: Status.PANIC,
153
152
  });
154
- const invoke = new Invoke(refine);
153
+ const invoke = Invoke.new(refine);
155
154
  invoke.currentServiceId = tryAsServiceId(10_000);
156
155
  const w7 = tryAsU64(machineId);
157
156
  const w8 = tryAsU64(MEM_START);
@@ -166,7 +165,7 @@ describe("HostCalls: Invoke", () => {
166
165
  const [refine, machineId] = await prepareMachine({
167
166
  status: Status.HALT,
168
167
  });
169
- const invoke = new Invoke(refine);
168
+ const invoke = Invoke.new(refine);
170
169
  invoke.currentServiceId = tryAsServiceId(10_000);
171
170
  const w7 = tryAsU64(machineId);
172
171
  const w8 = tryAsU64(MEM_START);