@typeberry/lib 0.5.10 → 0.5.11-1fbacf3

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 (502) hide show
  1. package/README.md +2 -2
  2. package/bin/lib/examples/pvm-usage.test.js +2 -2
  3. package/package.json +1 -1
  4. package/packages/core/codec/descriptor.js +1 -1
  5. package/packages/core/codec/descriptors.js +7 -4
  6. package/packages/core/codec/encoder.d.ts +1 -1
  7. package/packages/core/codec/encoder.d.ts.map +1 -1
  8. package/packages/core/codec/encoder.js +3 -2
  9. package/packages/core/codec/index.test.js +1 -1
  10. package/packages/core/codec/skip.d.ts +2 -1
  11. package/packages/core/codec/skip.d.ts.map +1 -1
  12. package/packages/core/codec/skip.js +3 -0
  13. package/packages/core/codec/view.js +2 -2
  14. package/packages/core/collections/multi-map.d.ts +2 -1
  15. package/packages/core/collections/multi-map.d.ts.map +1 -1
  16. package/packages/core/collections/multi-map.js +3 -0
  17. package/packages/core/collections/multi-map.test.js +2 -2
  18. package/packages/core/concurrent/parent.js +4 -1
  19. package/packages/core/crypto/ed25519.d.ts +2 -5
  20. package/packages/core/crypto/ed25519.d.ts.map +1 -1
  21. package/packages/core/crypto/ed25519.js +4 -1
  22. package/packages/core/hash/hash.d.ts +4 -2
  23. package/packages/core/hash/hash.d.ts.map +1 -1
  24. package/packages/core/hash/hash.js +6 -1
  25. package/packages/core/networking/quic-network.d.ts +3 -2
  26. package/packages/core/networking/quic-network.d.ts.map +1 -1
  27. package/packages/core/networking/quic-network.js +3 -0
  28. package/packages/core/networking/quic-peer.d.ts +2 -1
  29. package/packages/core/networking/quic-peer.d.ts.map +1 -1
  30. package/packages/core/networking/quic-peer.js +5 -2
  31. package/packages/core/networking/quic-stream.d.ts +2 -1
  32. package/packages/core/networking/quic-stream.d.ts.map +1 -1
  33. package/packages/core/networking/quic-stream.js +3 -0
  34. package/packages/core/networking/setup.js +2 -2
  35. package/packages/core/pvm-host-calls/bin.js +2 -2
  36. package/packages/core/pvm-host-calls/ecalli-trace-logger.d.ts +5 -0
  37. package/packages/core/pvm-host-calls/ecalli-trace-logger.d.ts.map +1 -1
  38. package/packages/core/pvm-host-calls/ecalli-trace-logger.js +8 -1
  39. package/packages/core/pvm-host-calls/ecalli-trace-logger.test.js +1 -1
  40. package/packages/core/pvm-host-calls/host-call-memory.d.ts +2 -1
  41. package/packages/core/pvm-host-calls/host-call-memory.d.ts.map +1 -1
  42. package/packages/core/pvm-host-calls/host-call-memory.js +3 -0
  43. package/packages/core/pvm-host-calls/host-call-memory.test.js +1 -1
  44. package/packages/core/pvm-host-calls/host-call-registers.d.ts +5 -1
  45. package/packages/core/pvm-host-calls/host-call-registers.d.ts.map +1 -1
  46. package/packages/core/pvm-host-calls/host-call-registers.js +11 -1
  47. package/packages/core/pvm-host-calls/host-call-registers.test.js +2 -2
  48. package/packages/core/pvm-host-calls/host-calls-executor.d.ts +2 -1
  49. package/packages/core/pvm-host-calls/host-calls-executor.d.ts.map +1 -1
  50. package/packages/core/pvm-host-calls/host-calls-executor.js +5 -2
  51. package/packages/core/pvm-host-calls/host-calls.d.ts +4 -2
  52. package/packages/core/pvm-host-calls/host-calls.d.ts.map +1 -1
  53. package/packages/core/pvm-host-calls/host-calls.js +9 -4
  54. package/packages/core/pvm-host-calls/pvm-instance-manager.js +1 -1
  55. package/packages/core/pvm-interface/pvm.d.ts +2 -0
  56. package/packages/core/pvm-interface/pvm.d.ts.map +1 -1
  57. package/packages/core/pvm-interpreter/args-decoder/args-decoder.js +1 -1
  58. package/packages/core/pvm-interpreter/args-decoder/args-decoder.test.js +3 -3
  59. package/packages/core/pvm-interpreter/args-decoder/args-decoding-results.js +11 -11
  60. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.d.ts +2 -1
  61. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.d.ts.map +1 -1
  62. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.js +3 -0
  63. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.test.js +2 -2
  64. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.d.ts +2 -1
  65. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.d.ts.map +1 -1
  66. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.js +3 -0
  67. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.test.js +26 -26
  68. package/packages/core/pvm-interpreter/basic-blocks/basic-blocks.test.js +8 -8
  69. package/packages/core/pvm-interpreter/bin.js +1 -1
  70. package/packages/core/pvm-interpreter/debugger-adapter.d.ts +2 -1
  71. package/packages/core/pvm-interpreter/debugger-adapter.d.ts.map +1 -1
  72. package/packages/core/pvm-interpreter/debugger-adapter.js +6 -3
  73. package/packages/core/pvm-interpreter/gas.js +4 -1
  74. package/packages/core/pvm-interpreter/interpreter.d.ts +2 -1
  75. package/packages/core/pvm-interpreter/interpreter.d.ts.map +1 -1
  76. package/packages/core/pvm-interpreter/interpreter.js +19 -16
  77. package/packages/core/pvm-interpreter/memory/memory-builder.js +2 -2
  78. package/packages/core/pvm-interpreter/memory/memory-builder.test.js +7 -7
  79. package/packages/core/pvm-interpreter/memory/memory.d.ts +2 -1
  80. package/packages/core/pvm-interpreter/memory/memory.d.ts.map +1 -1
  81. package/packages/core/pvm-interpreter/memory/memory.js +4 -1
  82. package/packages/core/pvm-interpreter/memory/memory.test.js +31 -31
  83. package/packages/core/pvm-interpreter/memory/pages/readable-page.d.ts +2 -1
  84. package/packages/core/pvm-interpreter/memory/pages/readable-page.d.ts.map +1 -1
  85. package/packages/core/pvm-interpreter/memory/pages/readable-page.js +3 -0
  86. package/packages/core/pvm-interpreter/memory/pages/readable-page.test.js +3 -3
  87. package/packages/core/pvm-interpreter/memory/pages/writeable-page.d.ts +2 -1
  88. package/packages/core/pvm-interpreter/memory/pages/writeable-page.d.ts.map +1 -1
  89. package/packages/core/pvm-interpreter/memory/pages/writeable-page.js +3 -0
  90. package/packages/core/pvm-interpreter/memory/pages/writeable-page.test.js +4 -4
  91. package/packages/core/pvm-interpreter/ops/bit-ops.d.ts +2 -1
  92. package/packages/core/pvm-interpreter/ops/bit-ops.d.ts.map +1 -1
  93. package/packages/core/pvm-interpreter/ops/bit-ops.js +3 -0
  94. package/packages/core/pvm-interpreter/ops/bit-ops.test.js +3 -3
  95. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.d.ts +2 -1
  96. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.d.ts.map +1 -1
  97. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.js +3 -0
  98. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.test.js +5 -5
  99. package/packages/core/pvm-interpreter/ops/boolean-ops.d.ts +2 -1
  100. package/packages/core/pvm-interpreter/ops/boolean-ops.d.ts.map +1 -1
  101. package/packages/core/pvm-interpreter/ops/boolean-ops.js +3 -0
  102. package/packages/core/pvm-interpreter/ops/boolean-ops.test.js +3 -3
  103. package/packages/core/pvm-interpreter/ops/branch-ops.d.ts +2 -1
  104. package/packages/core/pvm-interpreter/ops/branch-ops.d.ts.map +1 -1
  105. package/packages/core/pvm-interpreter/ops/branch-ops.js +3 -0
  106. package/packages/core/pvm-interpreter/ops/branch-ops.test.js +4 -4
  107. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.d.ts +2 -1
  108. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.d.ts.map +1 -1
  109. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.js +3 -0
  110. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.test.js +5 -5
  111. package/packages/core/pvm-interpreter/ops/host-call-ops.d.ts +2 -1
  112. package/packages/core/pvm-interpreter/ops/host-call-ops.d.ts.map +1 -1
  113. package/packages/core/pvm-interpreter/ops/host-call-ops.js +3 -0
  114. package/packages/core/pvm-interpreter/ops/host-call-ops.test.js +2 -2
  115. package/packages/core/pvm-interpreter/ops/load-ops.d.ts +2 -1
  116. package/packages/core/pvm-interpreter/ops/load-ops.d.ts.map +1 -1
  117. package/packages/core/pvm-interpreter/ops/load-ops.js +3 -0
  118. package/packages/core/pvm-interpreter/ops/load-ops.test.js +10 -10
  119. package/packages/core/pvm-interpreter/ops/math-ops.d.ts +2 -1
  120. package/packages/core/pvm-interpreter/ops/math-ops.d.ts.map +1 -1
  121. package/packages/core/pvm-interpreter/ops/math-ops.js +3 -0
  122. package/packages/core/pvm-interpreter/ops/math-ops.test.js +3 -3
  123. package/packages/core/pvm-interpreter/ops/memory-ops.d.ts +2 -1
  124. package/packages/core/pvm-interpreter/ops/memory-ops.d.ts.map +1 -1
  125. package/packages/core/pvm-interpreter/ops/memory-ops.js +3 -0
  126. package/packages/core/pvm-interpreter/ops/memory-ops.test.js +3 -3
  127. package/packages/core/pvm-interpreter/ops/move-ops.d.ts +2 -1
  128. package/packages/core/pvm-interpreter/ops/move-ops.d.ts.map +1 -1
  129. package/packages/core/pvm-interpreter/ops/move-ops.js +3 -0
  130. package/packages/core/pvm-interpreter/ops/move-ops.test.js +3 -3
  131. package/packages/core/pvm-interpreter/ops/no-args-ops.d.ts +2 -1
  132. package/packages/core/pvm-interpreter/ops/no-args-ops.d.ts.map +1 -1
  133. package/packages/core/pvm-interpreter/ops/no-args-ops.js +3 -0
  134. package/packages/core/pvm-interpreter/ops/no-args-ops.test.js +2 -2
  135. package/packages/core/pvm-interpreter/ops/shift-ops.d.ts +2 -1
  136. package/packages/core/pvm-interpreter/ops/shift-ops.d.ts.map +1 -1
  137. package/packages/core/pvm-interpreter/ops/shift-ops.js +3 -0
  138. package/packages/core/pvm-interpreter/ops/shift-ops.test.js +3 -3
  139. package/packages/core/pvm-interpreter/ops/store-ops.d.ts +2 -1
  140. package/packages/core/pvm-interpreter/ops/store-ops.d.ts.map +1 -1
  141. package/packages/core/pvm-interpreter/ops/store-ops.js +3 -0
  142. package/packages/core/pvm-interpreter/ops/store-ops.test.js +7 -7
  143. package/packages/core/pvm-interpreter/ops-dispatchers/no-args-dispatcher.test.js +1 -1
  144. package/packages/core/pvm-interpreter/ops-dispatchers/one-imm-dispatcher.test.js +4 -4
  145. package/packages/core/pvm-interpreter/ops-dispatchers/one-offset-dispatcher.test.js +2 -2
  146. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-ext-imm-dispatcher.test.js +4 -4
  147. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-imm-dispatcher.test.js +7 -7
  148. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-imm-one-offset-dispatcher.test.js +10 -10
  149. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-two-imms-dispatcher.test.js +5 -5
  150. package/packages/core/pvm-interpreter/ops-dispatchers/three-regs-dispatcher.test.js +7 -7
  151. package/packages/core/pvm-interpreter/ops-dispatchers/two-imms-dispatcher.test.js +5 -5
  152. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-dispatcher.test.js +6 -6
  153. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-one-imm-dispatcher.test.js +11 -11
  154. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-one-offset-dispatcher.test.js +2 -2
  155. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-two-imms-dispatcher.test.js +14 -14
  156. package/packages/core/pvm-interpreter/program-decoder/jump-table.d.ts +5 -2
  157. package/packages/core/pvm-interpreter/program-decoder/jump-table.d.ts.map +1 -1
  158. package/packages/core/pvm-interpreter/program-decoder/jump-table.js +9 -4
  159. package/packages/core/pvm-interpreter/program-decoder/jump-table.test.js +6 -6
  160. package/packages/core/pvm-interpreter/program-decoder/mask.d.ts +2 -1
  161. package/packages/core/pvm-interpreter/program-decoder/mask.d.ts.map +1 -1
  162. package/packages/core/pvm-interpreter/program-decoder/mask.js +3 -0
  163. package/packages/core/pvm-interpreter/program-decoder/mask.test.js +10 -10
  164. package/packages/core/pvm-interpreter/program-decoder/program-decoder.d.ts +2 -1
  165. package/packages/core/pvm-interpreter/program-decoder/program-decoder.d.ts.map +1 -1
  166. package/packages/core/pvm-interpreter/program-decoder/program-decoder.js +6 -3
  167. package/packages/core/pvm-interpreter/program-decoder/program-decoder.test.js +5 -5
  168. package/packages/core/pvm-interpreter/program.js +3 -3
  169. package/packages/core/pvm-interpreter/registers.d.ts +5 -2
  170. package/packages/core/pvm-interpreter/registers.d.ts.map +1 -1
  171. package/packages/core/pvm-interpreter/registers.js +10 -6
  172. package/packages/core/pvm-interpreter/registers.test.js +10 -10
  173. package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.d.ts +6 -3
  174. package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.d.ts.map +1 -1
  175. package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.js +11 -2
  176. package/packages/core/pvm-interpreter-ananas/index.d.ts +6 -3
  177. package/packages/core/pvm-interpreter-ananas/index.d.ts.map +1 -1
  178. package/packages/core/pvm-interpreter-ananas/index.js +12 -3
  179. package/packages/core/trie/nodes.d.ts +7 -2
  180. package/packages/core/trie/nodes.d.ts.map +1 -1
  181. package/packages/core/trie/nodes.js +20 -11
  182. package/packages/core/trie/nodesDb.d.ts +3 -1
  183. package/packages/core/trie/nodesDb.d.ts.map +1 -1
  184. package/packages/core/trie/nodesDb.js +6 -0
  185. package/packages/core/trie/trie.js +2 -2
  186. package/packages/extensions/ipc/index.js +5 -2
  187. package/packages/extensions/ipc/jamnp/handler.d.ts +4 -2
  188. package/packages/extensions/ipc/jamnp/handler.d.ts.map +1 -1
  189. package/packages/extensions/ipc/jamnp/handler.js +9 -3
  190. package/packages/extensions/ipc/jamnp/server.js +3 -3
  191. package/packages/extensions/ipc/server.d.ts +2 -1
  192. package/packages/extensions/ipc/server.d.ts.map +1 -1
  193. package/packages/extensions/ipc/server.js +4 -1
  194. package/packages/jam/block/header.js +1 -1
  195. package/packages/jam/block/work-package.d.ts +7 -7
  196. package/packages/jam/block/work-package.d.ts.map +1 -1
  197. package/packages/jam/block/work-package.js +12 -12
  198. package/packages/jam/config/chain-spec.d.ts +2 -1
  199. package/packages/jam/config/chain-spec.d.ts.map +1 -1
  200. package/packages/jam/config/chain-spec.js +5 -2
  201. package/packages/jam/config/network.d.ts +2 -7
  202. package/packages/jam/config/network.d.ts.map +1 -1
  203. package/packages/jam/config/network.js +3 -0
  204. package/packages/jam/config-node/jip-chain-spec.js +1 -1
  205. package/packages/jam/database/blocks.test.js +1 -1
  206. package/packages/jam/database/states.d.ts +2 -1
  207. package/packages/jam/database/states.d.ts.map +1 -1
  208. package/packages/jam/database/states.js +3 -0
  209. package/packages/jam/database/states.test.js +1 -1
  210. package/packages/jam/database-lmdb/blocks.d.ts +2 -1
  211. package/packages/jam/database-lmdb/blocks.d.ts.map +1 -1
  212. package/packages/jam/database-lmdb/blocks.js +3 -0
  213. package/packages/jam/database-lmdb/root.d.ts +2 -1
  214. package/packages/jam/database-lmdb/root.d.ts.map +1 -1
  215. package/packages/jam/database-lmdb/root.js +3 -0
  216. package/packages/jam/database-lmdb/states.d.ts +2 -1
  217. package/packages/jam/database-lmdb/states.d.ts.map +1 -1
  218. package/packages/jam/database-lmdb/states.js +3 -0
  219. package/packages/jam/database-lmdb/states.test.js +9 -9
  220. package/packages/jam/executor/index.d.ts +1 -1
  221. package/packages/jam/executor/index.d.ts.map +1 -1
  222. package/packages/jam/executor/index.js +1 -1
  223. package/packages/jam/executor/pvm-executor.d.ts +9 -2
  224. package/packages/jam/executor/pvm-executor.d.ts.map +1 -1
  225. package/packages/jam/executor/pvm-executor.js +36 -21
  226. package/packages/jam/fuzz-proto/v1/handler.d.ts +2 -1
  227. package/packages/jam/fuzz-proto/v1/handler.d.ts.map +1 -1
  228. package/packages/jam/fuzz-proto/v1/handler.js +3 -0
  229. package/packages/jam/fuzz-proto/v1/handler.test.js +10 -10
  230. package/packages/jam/in-core/externalities/index.d.ts +4 -0
  231. package/packages/jam/in-core/externalities/index.d.ts.map +1 -0
  232. package/packages/jam/in-core/externalities/index.js +3 -0
  233. package/packages/jam/in-core/externalities/is-authorized-fetch.d.ts +20 -0
  234. package/packages/jam/in-core/externalities/is-authorized-fetch.d.ts.map +1 -0
  235. package/packages/jam/in-core/externalities/is-authorized-fetch.js +41 -0
  236. package/packages/jam/in-core/externalities/is-authorized-fetch.test.d.ts +2 -0
  237. package/packages/jam/in-core/externalities/is-authorized-fetch.test.d.ts.map +1 -0
  238. package/packages/jam/in-core/externalities/is-authorized-fetch.test.js +101 -0
  239. package/packages/jam/in-core/externalities/refine-fetch.d.ts +51 -0
  240. package/packages/jam/in-core/externalities/refine-fetch.d.ts.map +1 -0
  241. package/packages/jam/in-core/externalities/refine-fetch.js +80 -0
  242. package/packages/jam/in-core/externalities/refine-fetch.test.d.ts +2 -0
  243. package/packages/jam/in-core/externalities/refine-fetch.test.d.ts.map +1 -0
  244. package/packages/jam/in-core/externalities/refine-fetch.test.js +219 -0
  245. package/packages/jam/in-core/externalities/refine.d.ts +18 -8
  246. package/packages/jam/in-core/externalities/refine.d.ts.map +1 -1
  247. package/packages/jam/in-core/externalities/refine.js +86 -7
  248. package/packages/jam/in-core/externalities/refine.test.js +168 -3
  249. package/packages/jam/in-core/in-core.d.ts +9 -23
  250. package/packages/jam/in-core/in-core.d.ts.map +1 -1
  251. package/packages/jam/in-core/in-core.js +22 -187
  252. package/packages/jam/in-core/in-core.test.js +52 -20
  253. package/packages/jam/in-core/is-authorized.d.ts +34 -0
  254. package/packages/jam/in-core/is-authorized.d.ts.map +1 -0
  255. package/packages/jam/in-core/is-authorized.js +73 -0
  256. package/packages/jam/in-core/is-authorized.test.d.ts +2 -0
  257. package/packages/jam/in-core/is-authorized.test.d.ts.map +1 -0
  258. package/packages/jam/in-core/is-authorized.test.js +167 -0
  259. package/packages/jam/in-core/refine.d.ts +31 -0
  260. package/packages/jam/in-core/refine.d.ts.map +1 -0
  261. package/packages/jam/in-core/refine.js +182 -0
  262. package/packages/jam/in-core/refine.test.d.ts +2 -0
  263. package/packages/jam/in-core/refine.test.d.ts.map +1 -0
  264. package/packages/jam/in-core/refine.test.js +6 -0
  265. package/packages/jam/jam-host-calls/accumulate/assign.d.ts +2 -1
  266. package/packages/jam/jam-host-calls/accumulate/assign.d.ts.map +1 -1
  267. package/packages/jam/jam-host-calls/accumulate/assign.js +3 -0
  268. package/packages/jam/jam-host-calls/accumulate/assign.test.js +8 -9
  269. package/packages/jam/jam-host-calls/accumulate/bless.d.ts +2 -1
  270. package/packages/jam/jam-host-calls/accumulate/bless.d.ts.map +1 -1
  271. package/packages/jam/jam-host-calls/accumulate/bless.js +12 -9
  272. package/packages/jam/jam-host-calls/accumulate/bless.test.js +11 -12
  273. package/packages/jam/jam-host-calls/accumulate/checkpoint.d.ts +2 -1
  274. package/packages/jam/jam-host-calls/accumulate/checkpoint.d.ts.map +1 -1
  275. package/packages/jam/jam-host-calls/accumulate/checkpoint.js +4 -1
  276. package/packages/jam/jam-host-calls/accumulate/checkpoint.test.js +2 -3
  277. package/packages/jam/jam-host-calls/accumulate/designate.d.ts +2 -1
  278. package/packages/jam/jam-host-calls/accumulate/designate.d.ts.map +1 -1
  279. package/packages/jam/jam-host-calls/accumulate/designate.js +3 -0
  280. package/packages/jam/jam-host-calls/accumulate/designate.test.js +5 -6
  281. package/packages/jam/jam-host-calls/accumulate/eject.d.ts +2 -1
  282. package/packages/jam/jam-host-calls/accumulate/eject.d.ts.map +1 -1
  283. package/packages/jam/jam-host-calls/accumulate/eject.js +3 -0
  284. package/packages/jam/jam-host-calls/accumulate/eject.test.js +8 -9
  285. package/packages/jam/jam-host-calls/accumulate/forget.d.ts +2 -1
  286. package/packages/jam/jam-host-calls/accumulate/forget.d.ts.map +1 -1
  287. package/packages/jam/jam-host-calls/accumulate/forget.js +3 -0
  288. package/packages/jam/jam-host-calls/accumulate/forget.test.js +5 -6
  289. package/packages/jam/jam-host-calls/accumulate/new.d.ts +2 -1
  290. package/packages/jam/jam-host-calls/accumulate/new.d.ts.map +1 -1
  291. package/packages/jam/jam-host-calls/accumulate/new.js +3 -0
  292. package/packages/jam/jam-host-calls/accumulate/new.test.js +9 -10
  293. package/packages/jam/jam-host-calls/accumulate/provide.d.ts +2 -1
  294. package/packages/jam/jam-host-calls/accumulate/provide.d.ts.map +1 -1
  295. package/packages/jam/jam-host-calls/accumulate/provide.js +3 -0
  296. package/packages/jam/jam-host-calls/accumulate/provide.test.js +8 -9
  297. package/packages/jam/jam-host-calls/accumulate/query.d.ts +2 -1
  298. package/packages/jam/jam-host-calls/accumulate/query.d.ts.map +1 -1
  299. package/packages/jam/jam-host-calls/accumulate/query.js +3 -0
  300. package/packages/jam/jam-host-calls/accumulate/query.test.js +8 -9
  301. package/packages/jam/jam-host-calls/accumulate/solicit.d.ts +2 -1
  302. package/packages/jam/jam-host-calls/accumulate/solicit.d.ts.map +1 -1
  303. package/packages/jam/jam-host-calls/accumulate/solicit.js +3 -0
  304. package/packages/jam/jam-host-calls/accumulate/solicit.test.js +7 -8
  305. package/packages/jam/jam-host-calls/accumulate/transfer.d.ts +2 -1
  306. package/packages/jam/jam-host-calls/accumulate/transfer.d.ts.map +1 -1
  307. package/packages/jam/jam-host-calls/accumulate/transfer.js +3 -0
  308. package/packages/jam/jam-host-calls/accumulate/transfer.test.js +9 -10
  309. package/packages/jam/jam-host-calls/accumulate/upgrade.d.ts +2 -1
  310. package/packages/jam/jam-host-calls/accumulate/upgrade.d.ts.map +1 -1
  311. package/packages/jam/jam-host-calls/accumulate/upgrade.js +3 -0
  312. package/packages/jam/jam-host-calls/accumulate/upgrade.test.js +4 -5
  313. package/packages/jam/jam-host-calls/accumulate/yield.d.ts +2 -1
  314. package/packages/jam/jam-host-calls/accumulate/yield.d.ts.map +1 -1
  315. package/packages/jam/jam-host-calls/accumulate/yield.js +3 -0
  316. package/packages/jam/jam-host-calls/accumulate/yield.test.js +4 -5
  317. package/packages/jam/jam-host-calls/externalities/partial-state.d.ts +1 -1
  318. package/packages/jam/jam-host-calls/externalities/refine-externalities.d.ts +1 -1
  319. package/packages/jam/jam-host-calls/externalities/refine-externalities.d.ts.map +1 -1
  320. package/packages/jam/jam-host-calls/externalities/refine-externalities.test.js +9 -9
  321. package/packages/jam/jam-host-calls/externalities/state-update.d.ts +2 -3
  322. package/packages/jam/jam-host-calls/externalities/state-update.d.ts.map +1 -1
  323. package/packages/jam/jam-host-calls/externalities/state-update.js +5 -2
  324. package/packages/jam/jam-host-calls/externalities/test-accounts.js +2 -2
  325. package/packages/jam/jam-host-calls/general/fetch.d.ts +166 -104
  326. package/packages/jam/jam-host-calls/general/fetch.d.ts.map +1 -1
  327. package/packages/jam/jam-host-calls/general/fetch.js +120 -23
  328. package/packages/jam/jam-host-calls/general/fetch.test.js +125 -92
  329. package/packages/jam/jam-host-calls/general/gas.d.ts +2 -1
  330. package/packages/jam/jam-host-calls/general/gas.d.ts.map +1 -1
  331. package/packages/jam/jam-host-calls/general/gas.js +3 -0
  332. package/packages/jam/jam-host-calls/general/gas.test.js +4 -5
  333. package/packages/jam/jam-host-calls/general/info.d.ts +2 -1
  334. package/packages/jam/jam-host-calls/general/info.d.ts.map +1 -1
  335. package/packages/jam/jam-host-calls/general/info.js +3 -0
  336. package/packages/jam/jam-host-calls/general/info.test.js +6 -7
  337. package/packages/jam/jam-host-calls/general/log.d.ts +2 -1
  338. package/packages/jam/jam-host-calls/general/log.d.ts.map +1 -1
  339. package/packages/jam/jam-host-calls/general/log.js +3 -0
  340. package/packages/jam/jam-host-calls/general/lookup.d.ts +2 -1
  341. package/packages/jam/jam-host-calls/general/lookup.d.ts.map +1 -1
  342. package/packages/jam/jam-host-calls/general/lookup.js +3 -0
  343. package/packages/jam/jam-host-calls/general/lookup.test.js +8 -9
  344. package/packages/jam/jam-host-calls/general/read.d.ts +2 -1
  345. package/packages/jam/jam-host-calls/general/read.d.ts.map +1 -1
  346. package/packages/jam/jam-host-calls/general/read.js +3 -0
  347. package/packages/jam/jam-host-calls/general/read.test.js +11 -12
  348. package/packages/jam/jam-host-calls/general/write.d.ts +2 -1
  349. package/packages/jam/jam-host-calls/general/write.d.ts.map +1 -1
  350. package/packages/jam/jam-host-calls/general/write.js +3 -0
  351. package/packages/jam/jam-host-calls/general/write.test.js +10 -11
  352. package/packages/jam/jam-host-calls/refine/export.d.ts +2 -1
  353. package/packages/jam/jam-host-calls/refine/export.d.ts.map +1 -1
  354. package/packages/jam/jam-host-calls/refine/export.js +3 -0
  355. package/packages/jam/jam-host-calls/refine/export.test.js +6 -7
  356. package/packages/jam/jam-host-calls/refine/expunge.d.ts +2 -1
  357. package/packages/jam/jam-host-calls/refine/expunge.d.ts.map +1 -1
  358. package/packages/jam/jam-host-calls/refine/expunge.js +3 -0
  359. package/packages/jam/jam-host-calls/refine/expunge.test.js +3 -4
  360. package/packages/jam/jam-host-calls/refine/historical-lookup.d.ts +2 -1
  361. package/packages/jam/jam-host-calls/refine/historical-lookup.d.ts.map +1 -1
  362. package/packages/jam/jam-host-calls/refine/historical-lookup.js +3 -0
  363. package/packages/jam/jam-host-calls/refine/historical-lookup.test.js +11 -12
  364. package/packages/jam/jam-host-calls/refine/invoke.d.ts +2 -1
  365. package/packages/jam/jam-host-calls/refine/invoke.d.ts.map +1 -1
  366. package/packages/jam/jam-host-calls/refine/invoke.js +4 -1
  367. package/packages/jam/jam-host-calls/refine/invoke.test.js +10 -11
  368. package/packages/jam/jam-host-calls/refine/machine.d.ts +2 -1
  369. package/packages/jam/jam-host-calls/refine/machine.d.ts.map +1 -1
  370. package/packages/jam/jam-host-calls/refine/machine.js +3 -0
  371. package/packages/jam/jam-host-calls/refine/machine.test.js +6 -7
  372. package/packages/jam/jam-host-calls/refine/pages.d.ts +2 -1
  373. package/packages/jam/jam-host-calls/refine/pages.d.ts.map +1 -1
  374. package/packages/jam/jam-host-calls/refine/pages.js +3 -0
  375. package/packages/jam/jam-host-calls/refine/pages.test.js +3 -4
  376. package/packages/jam/jam-host-calls/refine/peek.d.ts +2 -1
  377. package/packages/jam/jam-host-calls/refine/peek.d.ts.map +1 -1
  378. package/packages/jam/jam-host-calls/refine/peek.js +3 -0
  379. package/packages/jam/jam-host-calls/refine/peek.test.js +3 -4
  380. package/packages/jam/jam-host-calls/refine/poke.d.ts +2 -1
  381. package/packages/jam/jam-host-calls/refine/poke.d.ts.map +1 -1
  382. package/packages/jam/jam-host-calls/refine/poke.js +3 -0
  383. package/packages/jam/jam-host-calls/refine/poke.test.js +3 -4
  384. package/packages/jam/jamnp-s/network.js +1 -1
  385. package/packages/jam/jamnp-s/peers.d.ts +2 -1
  386. package/packages/jam/jamnp-s/peers.d.ts.map +1 -1
  387. package/packages/jam/jamnp-s/peers.js +3 -0
  388. package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts +4 -2
  389. package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts.map +1 -1
  390. package/packages/jam/jamnp-s/protocol/ce-128-block-request.js +6 -0
  391. package/packages/jam/jamnp-s/protocol/ce-128-block-request.test.js +2 -2
  392. package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts +4 -2
  393. package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts.map +1 -1
  394. package/packages/jam/jamnp-s/protocol/ce-129-state-request.js +6 -0
  395. package/packages/jam/jamnp-s/protocol/ce-129-state-request.test.js +4 -4
  396. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts +4 -2
  397. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts.map +1 -1
  398. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.js +6 -0
  399. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.test.js +2 -2
  400. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts +6 -3
  401. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts.map +1 -1
  402. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.js +7 -0
  403. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.test.js +2 -2
  404. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts +5 -2
  405. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts.map +1 -1
  406. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.js +7 -0
  407. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.test.js +2 -2
  408. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts +4 -2
  409. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts.map +1 -1
  410. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.js +6 -0
  411. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.test.js +2 -2
  412. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts +2 -1
  413. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts.map +1 -1
  414. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.js +3 -0
  415. package/packages/jam/jamnp-s/stream-manager.d.ts +2 -1
  416. package/packages/jam/jamnp-s/stream-manager.d.ts.map +1 -1
  417. package/packages/jam/jamnp-s/stream-manager.js +4 -1
  418. package/packages/jam/jamnp-s/tasks/sync.js +4 -4
  419. package/packages/jam/jamnp-s/tasks/sync.test.js +4 -4
  420. package/packages/jam/jamnp-s/tasks/ticket-distribution.js +2 -2
  421. package/packages/jam/jamnp-s/tasks/ticket-distribution.test.js +1 -1
  422. package/packages/jam/node/common.d.ts.map +1 -1
  423. package/packages/jam/node/common.js +3 -3
  424. package/packages/jam/rpc-client/index.d.ts +4 -2
  425. package/packages/jam/rpc-client/index.d.ts.map +1 -1
  426. package/packages/jam/rpc-client/index.js +7 -1
  427. package/packages/jam/state/in-memory-state-view.d.ts +2 -1
  428. package/packages/jam/state/in-memory-state-view.d.ts.map +1 -1
  429. package/packages/jam/state/in-memory-state-view.js +3 -0
  430. package/packages/jam/state/in-memory-state.d.ts +16 -21
  431. package/packages/jam/state/in-memory-state.d.ts.map +1 -1
  432. package/packages/jam/state/in-memory-state.js +10 -6
  433. package/packages/jam/state/in-memory-state.test.js +2 -2
  434. package/packages/jam/state/service.d.ts +2 -6
  435. package/packages/jam/state/service.d.ts.map +1 -1
  436. package/packages/jam/state/service.js +3 -0
  437. package/packages/jam/state/test.utils.js +3 -3
  438. package/packages/jam/state-json/accounts.js +5 -5
  439. package/packages/jam/state-merkleization/in-memory-state-codec.d.ts +3 -34
  440. package/packages/jam/state-merkleization/in-memory-state-codec.d.ts.map +1 -1
  441. package/packages/jam/state-merkleization/in-memory-state-codec.js +1 -1
  442. package/packages/jam/state-merkleization/serialized-state-view.d.ts +8 -3
  443. package/packages/jam/state-merkleization/serialized-state-view.d.ts.map +1 -1
  444. package/packages/jam/state-merkleization/serialized-state-view.js +6 -3
  445. package/packages/jam/state-merkleization/serialized-state.d.ts +2 -3
  446. package/packages/jam/state-merkleization/serialized-state.d.ts.map +1 -1
  447. package/packages/jam/state-merkleization/serialized-state.js +10 -2
  448. package/packages/jam/state-merkleization/serialized-state.test.js +1 -1
  449. package/packages/jam/transition/accumulate/accumulate.d.ts.map +1 -1
  450. package/packages/jam/transition/accumulate/accumulate.js +20 -8
  451. package/packages/jam/transition/accumulate/accumulate.test.js +1 -1
  452. package/packages/jam/transition/accumulate/accumulation-result-merge-utils.js +48 -39
  453. package/packages/jam/transition/block-verifier.d.ts +2 -1
  454. package/packages/jam/transition/block-verifier.d.ts.map +1 -1
  455. package/packages/jam/transition/block-verifier.js +3 -0
  456. package/packages/jam/transition/block-verifier.test.js +8 -8
  457. package/packages/jam/transition/chain-stf.d.ts +12 -4
  458. package/packages/jam/transition/chain-stf.d.ts.map +1 -1
  459. package/packages/jam/transition/chain-stf.js +7 -3
  460. package/packages/jam/transition/externalities/accumulate-externalities.d.ts +22 -8
  461. package/packages/jam/transition/externalities/accumulate-externalities.d.ts.map +1 -1
  462. package/packages/jam/transition/externalities/accumulate-externalities.js +49 -29
  463. package/packages/jam/transition/externalities/accumulate-externalities.test.js +661 -101
  464. package/packages/jam/transition/externalities/accumulate-fetch-externalities.d.ts +19 -0
  465. package/packages/jam/transition/externalities/accumulate-fetch-externalities.d.ts.map +1 -0
  466. package/packages/jam/transition/externalities/accumulate-fetch-externalities.js +45 -0
  467. package/packages/jam/transition/externalities/accumulate-fetch-externalities.test.d.ts +2 -0
  468. package/packages/jam/transition/externalities/accumulate-fetch-externalities.test.d.ts.map +1 -0
  469. package/packages/jam/transition/externalities/accumulate-fetch-externalities.test.js +192 -0
  470. package/packages/jam/transition/externalities/fetch-externalities.d.ts +54 -37
  471. package/packages/jam/transition/externalities/fetch-externalities.d.ts.map +1 -1
  472. package/packages/jam/transition/externalities/fetch-externalities.js +45 -89
  473. package/packages/jam/transition/externalities/index.d.ts +1 -0
  474. package/packages/jam/transition/externalities/index.d.ts.map +1 -1
  475. package/packages/jam/transition/externalities/index.js +1 -0
  476. package/packages/jam/transition/hasher.d.ts +2 -1
  477. package/packages/jam/transition/hasher.d.ts.map +1 -1
  478. package/packages/jam/transition/hasher.js +5 -2
  479. package/packages/jam/transition/hasher.test.js +1 -1
  480. package/packages/jam/transition/preimages.test.js +4 -4
  481. package/packages/jam/transition/reports/test.utils.js +1 -1
  482. package/packages/workers/api-node/config.js +4 -4
  483. package/packages/workers/api-node/port.d.ts +2 -1
  484. package/packages/workers/api-node/port.d.ts.map +1 -1
  485. package/packages/workers/api-node/port.js +4 -1
  486. package/packages/workers/api-node/port.test.js +2 -2
  487. package/packages/workers/api-node/protocol.js +2 -2
  488. package/packages/workers/block-authorship/generator.d.ts +13 -2
  489. package/packages/workers/block-authorship/generator.d.ts.map +1 -1
  490. package/packages/workers/block-authorship/generator.js +13 -9
  491. package/packages/workers/block-authorship/generator.test.js +16 -2
  492. package/packages/workers/block-authorship/main.d.ts.map +1 -1
  493. package/packages/workers/block-authorship/main.js +8 -1
  494. package/packages/workers/importer/finality.test.js +1 -1
  495. package/packages/workers/importer/importer.d.ts +23 -6
  496. package/packages/workers/importer/importer.d.ts.map +1 -1
  497. package/packages/workers/importer/importer.js +34 -19
  498. package/packages/workers/importer/main.d.ts.map +1 -1
  499. package/packages/workers/importer/main.js +13 -5
  500. package/packages/jam/transition/externalities/fetch-externalities.test.d.ts +0 -2
  501. package/packages/jam/transition/externalities/fetch-externalities.test.d.ts.map +0 -1
  502. package/packages/jam/transition/externalities/fetch-externalities.test.js +0 -254
@@ -14,7 +14,8 @@ export declare class New 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): New;
18
+ private constructor();
18
19
  execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined | PvmExecution>;
19
20
  }
20
21
  //# sourceMappingURL=new.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/new.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,kBAAkB,CAAC;AAInE,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,EAAmB,KAAK,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAMvF;;;;GAIG;AACH,qBAAa,GAAI,YAAW,eAAe;aAMvB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAN/B,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,eAAe,uEAAgD;gBAG7C,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;CA0DrH"}
1
+ {"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/new.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,kBAAkB,CAAC;AAInE,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,EAAmB,KAAK,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAMvF;;;;GAIG;AACH,qBAAa,GAAI,YAAW,eAAe;aAUvB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAV/B,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,eAAe,uEAAgD;IAE/D,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;CA0DrH"}
@@ -20,6 +20,9 @@ export class New {
20
20
  index = tryAsHostCallIndex(18);
21
21
  basicGasCost = tryAsSmallGas(10);
22
22
  tracedRegisters = traceRegisters(IN_OUT_REG, 8, 9, 10, 11, 12);
23
+ static new(currentServiceId, partialState) {
24
+ return new New(currentServiceId, partialState);
25
+ }
23
26
  constructor(currentServiceId, partialState) {
24
27
  this.currentServiceId = currentServiceId;
25
28
  this.partialState = partialState;
@@ -14,7 +14,6 @@ import { Result } from "#@typeberry/utils";
14
14
  import { NewServiceError } 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 { New } from "./new.js";
19
18
  const gas = gasCounter(tryAsGas(0));
20
19
  const RESULT_REG = 7;
@@ -28,7 +27,7 @@ function prepareRegsAndMemory(codeHash, codeLength, gas, balance, gratisStorage,
28
27
  // If value exceeds 2 ** 16 or the service is not registrar, it's ignored.
29
28
  wantedServiceId = tryAsU64(2 ** 32 - 1), { skipCodeHash = false } = {}) {
30
29
  const memStart = 2 ** 16;
31
- const registers = new HostCallRegisters(emptyRegistersBuffer());
30
+ const registers = HostCallRegisters.empty();
32
31
  registers.set(CODE_HASH_START_REG, tryAsU64(memStart));
33
32
  registers.set(CODE_LENGTH_REG, tryAsU64(codeLength));
34
33
  registers.set(GAS_REG, gas);
@@ -39,7 +38,7 @@ wantedServiceId = tryAsU64(2 ** 32 - 1), { skipCodeHash = false } = {}) {
39
38
  if (!skipCodeHash) {
40
39
  builder.setReadablePages(tryAsMemoryIndex(memStart), tryAsMemoryIndex(memStart + PAGE_SIZE), codeHash.raw);
41
40
  }
42
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
41
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
43
42
  return {
44
43
  registers,
45
44
  memory,
@@ -49,7 +48,7 @@ describe("HostCalls: New", () => {
49
48
  it("should create a new service", async () => {
50
49
  const accumulate = new PartialStateMock();
51
50
  const serviceId = tryAsServiceId(10_000);
52
- const n = new New(serviceId, accumulate);
51
+ const n = New.new(serviceId, accumulate);
53
52
  accumulate.newServiceResponse = Result.ok(tryAsServiceId(23_000));
54
53
  const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4096n), tryAsU64(2n ** 40n), tryAsU64(2n ** 50n), tryAsU64(1024n));
55
54
  // when
@@ -64,7 +63,7 @@ describe("HostCalls: New", () => {
64
63
  it("should fail when balance is not enough", async () => {
65
64
  const accumulate = new PartialStateMock();
66
65
  const serviceId = tryAsServiceId(10_000);
67
- const n = new New(serviceId, accumulate);
66
+ const n = New.new(serviceId, accumulate);
68
67
  accumulate.newServiceResponse = Result.error(NewServiceError.InsufficientFunds, () => "Test: insufficient funds for new service");
69
68
  const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4096n), tryAsU64(2n ** 40n), tryAsU64(2n ** 50n), tryAsU64(1n));
70
69
  // when
@@ -76,7 +75,7 @@ describe("HostCalls: New", () => {
76
75
  it("should fail when code not readable", async () => {
77
76
  const accumulate = new PartialStateMock();
78
77
  const serviceId = tryAsServiceId(10_000);
79
- const n = new New(serviceId, accumulate);
78
+ const n = New.new(serviceId, accumulate);
80
79
  const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4096n), tryAsU64(2n ** 40n), tryAsU64(2n ** 50n), tryAsU64(1024n), tryAsU64(2 ** 32 - 1), // default service id
81
80
  { skipCodeHash: true });
82
81
  // when
@@ -88,7 +87,7 @@ describe("HostCalls: New", () => {
88
87
  it("should fail when trying to set gratis storage by unprivileged service", async () => {
89
88
  const accumulate = new PartialStateMock();
90
89
  const serviceId = tryAsServiceId(10_000);
91
- const n = new New(serviceId, accumulate);
90
+ const n = New.new(serviceId, accumulate);
92
91
  accumulate.newServiceResponse = Result.error(NewServiceError.UnprivilegedService, () => "Test: unprivileged service trying to set gratis storage");
93
92
  const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4096n), tryAsU64(2n ** 40n), tryAsU64(2n ** 50n), tryAsU64(1024n));
94
93
  // when
@@ -100,7 +99,7 @@ describe("HostCalls: New", () => {
100
99
  it("should create a new service with selected id", async () => {
101
100
  const accumulate = new PartialStateMock();
102
101
  const serviceId = tryAsServiceId(10); // service has registrar privilege
103
- const n = new New(serviceId, accumulate);
102
+ const n = New.new(serviceId, accumulate);
104
103
  accumulate.newServiceResponse = Result.ok(tryAsServiceId(42));
105
104
  const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4096n), tryAsU64(2n ** 40n), tryAsU64(2n ** 50n), tryAsU64(1024n), tryAsU64(42n));
106
105
  // when
@@ -115,7 +114,7 @@ describe("HostCalls: New", () => {
115
114
  it("should create a new service with random id", async () => {
116
115
  const accumulate = new PartialStateMock();
117
116
  const serviceId = tryAsServiceId(10_000); // service does not have registrar privilege
118
- const n = new New(serviceId, accumulate);
117
+ const n = New.new(serviceId, accumulate);
119
118
  accumulate.newServiceResponse = Result.ok(tryAsServiceId(2 ** 20));
120
119
  const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4096n), tryAsU64(2n ** 40n), tryAsU64(2n ** 50n), tryAsU64(1024n), tryAsU64(42n));
121
120
  // when
@@ -130,7 +129,7 @@ describe("HostCalls: New", () => {
130
129
  it("should fail when trying to set selected id, but service already exists", async () => {
131
130
  const accumulate = new PartialStateMock();
132
131
  const serviceId = tryAsServiceId(10);
133
- const n = new New(serviceId, accumulate);
132
+ const n = New.new(serviceId, accumulate);
134
133
  accumulate.newServiceResponse = Result.error(NewServiceError.RegistrarServiceIdAlreadyTaken, () => "Test: service ID already taken");
135
134
  const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4096n), tryAsU64(2n ** 40n), tryAsU64(2n ** 50n), tryAsU64(1024n), tryAsU64(serviceId));
136
135
  // when
@@ -13,7 +13,8 @@ export declare class Provide 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): Provide;
17
+ private constructor();
17
18
  execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<PvmExecution.Panic | undefined>;
18
19
  }
19
20
  //# sourceMappingURL=provide.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provide.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/provide.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,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,EAAE,KAAK,YAAY,EAAwB,MAAM,mCAAmC,CAAC;AAO5F;;;;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,uEAAoC;gBAGjC,gBAAgB,EAAE,SAAS,EAC1B,YAAY,EAAE,YAAY;IAGvC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc;CA0CjF"}
1
+ {"version":3,"file":"provide.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/provide.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,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,EAAE,KAAK,YAAY,EAAwB,MAAM,mCAAmC,CAAC;AAO5F;;;;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,uEAAoC;IAEnD,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;CA0CjF"}
@@ -18,6 +18,9 @@ export class Provide {
18
18
  index = tryAsHostCallIndex(26);
19
19
  basicGasCost = tryAsSmallGas(10);
20
20
  tracedRegisters = traceRegisters(IN_OUT_REG, 8, 9);
21
+ static new(currentServiceId, partialState) {
22
+ return new Provide(currentServiceId, partialState);
23
+ }
21
24
  constructor(currentServiceId, partialState) {
22
25
  this.currentServiceId = currentServiceId;
23
26
  this.partialState = partialState;
@@ -11,7 +11,6 @@ import { deepEqual, Result } from "#@typeberry/utils";
11
11
  import { ProvidePreimageError } from "../externalities/partial-state.js";
12
12
  import { PartialStateMock } from "../externalities/partial-state-mock.js";
13
13
  import { HostCallResult } from "../general/results.js";
14
- import { emptyRegistersBuffer } from "../utils.js";
15
14
  import { Provide } from "./provide.js";
16
15
  const gas = gasCounter(tryAsGas(0));
17
16
  const RESULT_REG = 7;
@@ -19,7 +18,7 @@ const PREIMAGE_START_REG = 8;
19
18
  const LENGTH_REG = 9;
20
19
  function prepareRegsAndMemory(service, preimage, { registerMemory = true } = {}) {
21
20
  const preimageStart = 2 ** 16;
22
- const registers = new HostCallRegisters(emptyRegistersBuffer());
21
+ const registers = HostCallRegisters.empty();
23
22
  registers.set(RESULT_REG, tryAsU64(service));
24
23
  registers.set(PREIMAGE_START_REG, tryAsU64(preimageStart));
25
24
  registers.set(LENGTH_REG, tryAsU64(preimage.length));
@@ -27,7 +26,7 @@ function prepareRegsAndMemory(service, preimage, { registerMemory = true } = {})
27
26
  if (registerMemory) {
28
27
  builder.setReadablePages(tryAsMemoryIndex(preimageStart), tryAsMemoryIndex(preimageStart + PAGE_SIZE), preimage.raw);
29
28
  }
30
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
29
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
31
30
  return {
32
31
  registers,
33
32
  memory,
@@ -37,7 +36,7 @@ describe("HostCalls: Provide", () => {
37
36
  it("should return panic if memory is unreadable", async () => {
38
37
  const accumulate = new PartialStateMock();
39
38
  const currentServiceId = tryAsServiceId(10_000);
40
- const provide = new Provide(currentServiceId, accumulate);
39
+ const provide = Provide.new(currentServiceId, accumulate);
41
40
  const serviceId = tryAsServiceId(15_000);
42
41
  const preimage = BytesBlob.blobFromNumbers([0xaa, 0xbb, 0xcc, 0xdd]);
43
42
  const { registers, memory } = prepareRegsAndMemory(serviceId, preimage, { registerMemory: false });
@@ -48,7 +47,7 @@ describe("HostCalls: Provide", () => {
48
47
  it("should return WHO if service not found", async () => {
49
48
  const accumulate = new PartialStateMock();
50
49
  const currentServiceId = tryAsServiceId(10_000);
51
- const provide = new Provide(currentServiceId, accumulate);
50
+ const provide = Provide.new(currentServiceId, accumulate);
52
51
  const serviceId = tryAsServiceId(15_000);
53
52
  const preimage = BytesBlob.blobFromNumbers([0xaa, 0xbb, 0xcc, 0xdd]);
54
53
  accumulate.providePreimageResponse = Result.error(ProvidePreimageError.ServiceNotFound, () => "Test: service not found for provide");
@@ -62,7 +61,7 @@ describe("HostCalls: Provide", () => {
62
61
  it("should return HUH if preimage was not previously requested", async () => {
63
62
  const accumulate = new PartialStateMock();
64
63
  const currentServiceId = tryAsServiceId(10_000);
65
- const provide = new Provide(currentServiceId, accumulate);
64
+ const provide = Provide.new(currentServiceId, accumulate);
66
65
  const serviceId = tryAsServiceId(15_000);
67
66
  const preimage = BytesBlob.blobFromNumbers([0xaa, 0xbb, 0xcc, 0xdd]);
68
67
  accumulate.providePreimageResponse = Result.error(ProvidePreimageError.WasNotRequested, () => "Test: preimage was not requested for provide");
@@ -76,7 +75,7 @@ describe("HostCalls: Provide", () => {
76
75
  it("should return HUH if preimage already provided", async () => {
77
76
  const accumulate = new PartialStateMock();
78
77
  const currentServiceId = tryAsServiceId(10_000);
79
- const provide = new Provide(currentServiceId, accumulate);
78
+ const provide = Provide.new(currentServiceId, accumulate);
80
79
  const serviceId = tryAsServiceId(15_000);
81
80
  const preimage = BytesBlob.blobFromNumbers([0xaa, 0xbb, 0xcc, 0xdd]);
82
81
  accumulate.providePreimageResponse = Result.error(ProvidePreimageError.AlreadyProvided, () => "Test: preimage already provided");
@@ -90,7 +89,7 @@ describe("HostCalls: Provide", () => {
90
89
  it("should return OK if preimage was not provided before (for other service)", async () => {
91
90
  const accumulate = new PartialStateMock();
92
91
  const currentServiceId = tryAsServiceId(10_000);
93
- const provide = new Provide(currentServiceId, accumulate);
92
+ const provide = Provide.new(currentServiceId, accumulate);
94
93
  const serviceId = tryAsServiceId(15_000);
95
94
  const preimage = BytesBlob.blobFromNumbers([0xaa, 0xbb, 0xcc, 0xdd]);
96
95
  const { registers, memory } = prepareRegsAndMemory(serviceId, preimage);
@@ -102,7 +101,7 @@ describe("HostCalls: Provide", () => {
102
101
  it("should return OK if preimage was not provided before (for self)", async () => {
103
102
  const accumulate = new PartialStateMock();
104
103
  const currentServiceId = tryAsServiceId(10_000);
105
- const provide = new Provide(currentServiceId, accumulate);
104
+ const provide = Provide.new(currentServiceId, accumulate);
106
105
  const serviceId = tryAsServiceId(15_000);
107
106
  const preimage = BytesBlob.blobFromNumbers([0xaa, 0xbb, 0xcc, 0xdd]);
108
107
  const { registers, memory } = prepareRegsAndMemory(serviceId, preimage);
@@ -15,7 +15,8 @@ export declare class Query implements HostCallHandler {
15
15
  index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
16
16
  basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
17
17
  tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
18
- constructor(currentServiceId: ServiceId, partialState: PartialState);
18
+ static new(currentServiceId: ServiceId, partialState: PartialState): Query;
19
+ private constructor();
19
20
  execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<PvmExecution | undefined>;
20
21
  }
21
22
  //# sourceMappingURL=query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIlD,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,EAAE,KAAK,YAAY,EAAsB,MAAM,mCAAmC,CAAC;AAQ1F;;;;;;GAMG;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,uEAA8C;gBAG3C,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;CA+CrH"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIlD,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,EAAE,KAAK,YAAY,EAAsB,MAAM,mCAAmC,CAAC;AAQ1F;;;;;;GAMG;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,uEAA8C;IAE7D,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;CA+CrH"}
@@ -22,6 +22,9 @@ export class Query {
22
22
  index = tryAsHostCallIndex(22);
23
23
  basicGasCost = tryAsSmallGas(10);
24
24
  tracedRegisters = traceRegisters(IN_OUT_REG_1, IN_OUT_REG_2);
25
+ static new(currentServiceId, partialState) {
26
+ return new Query(currentServiceId, partialState);
27
+ }
25
28
  constructor(currentServiceId, partialState) {
26
29
  this.currentServiceId = currentServiceId;
27
30
  this.partialState = partialState;
@@ -11,7 +11,6 @@ import { PAGE_SIZE } from "#@typeberry/pvm-interpreter/spi-decoder/memory-conts.
11
11
  import { PreimageStatusKind } from "../externalities/partial-state.js";
12
12
  import { PartialStateMock } from "../externalities/partial-state-mock.js";
13
13
  import { HostCallResult } from "../general/results.js";
14
- import { emptyRegistersBuffer } from "../utils.js";
15
14
  import { Query } from "./query.js";
16
15
  const gas = gasCounter(tryAsGas(0));
17
16
  const HASH_START_REG = 7;
@@ -20,14 +19,14 @@ const RESULT_REG_1 = 7;
20
19
  const RESULT_REG_2 = 8;
21
20
  const UPPER_BITS_SHIFT = 32n;
22
21
  function prepareRegsAndMemory(hashStart, length, data, { registerMemory = true } = {}) {
23
- const registers = new HostCallRegisters(emptyRegistersBuffer());
22
+ const registers = HostCallRegisters.empty();
24
23
  registers.set(HASH_START_REG, tryAsU64(hashStart));
25
24
  registers.set(LENGTH_REG, tryAsU64(length));
26
25
  const builder = new MemoryBuilder();
27
26
  if (registerMemory) {
28
27
  builder.setReadablePages(tryAsMemoryIndex(hashStart), tryAsMemoryIndex(hashStart + PAGE_SIZE), data.raw);
29
28
  }
30
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
29
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
31
30
  return {
32
31
  registers,
33
32
  memory,
@@ -37,7 +36,7 @@ describe("HostCalls: Query", () => {
37
36
  it("should return panic if memory is unreadable", async () => {
38
37
  const accumulate = new PartialStateMock();
39
38
  const currentServiceId = tryAsServiceId(10_000);
40
- const query = new Query(currentServiceId, accumulate);
39
+ const query = Query.new(currentServiceId, accumulate);
41
40
  const w7 = tryAsU64(2 ** 16);
42
41
  const w8 = tryAsU64(0);
43
42
  const data = Bytes.fill(HASH_SIZE, 0xaa).asOpaque();
@@ -55,7 +54,7 @@ describe("HostCalls: Query", () => {
55
54
  it("should return none if preimage is not found", async () => {
56
55
  const accumulate = new PartialStateMock();
57
56
  const currentServiceId = tryAsServiceId(10_000);
58
- const query = new Query(currentServiceId, accumulate);
57
+ const query = Query.new(currentServiceId, accumulate);
59
58
  const w7 = tryAsU64(2 ** 16);
60
59
  const w8 = tryAsU64(32);
61
60
  const data = Bytes.fill(HASH_SIZE, 0xaa).asOpaque();
@@ -72,7 +71,7 @@ describe("HostCalls: Query", () => {
72
71
  it("should return requested if preimage is requested", async () => {
73
72
  const accumulate = new PartialStateMock();
74
73
  const currentServiceId = tryAsServiceId(10_000);
75
- const query = new Query(currentServiceId, accumulate);
74
+ const query = Query.new(currentServiceId, accumulate);
76
75
  const w7 = tryAsU64(2 ** 16);
77
76
  const w8 = tryAsU64(32);
78
77
  const data = Bytes.fill(HASH_SIZE, 0xaa).asOpaque();
@@ -92,7 +91,7 @@ describe("HostCalls: Query", () => {
92
91
  it("should return available if preimage is available", async () => {
93
92
  const accumulate = new PartialStateMock();
94
93
  const currentServiceId = tryAsServiceId(10_000);
95
- const query = new Query(currentServiceId, accumulate);
94
+ const query = Query.new(currentServiceId, accumulate);
96
95
  const w7 = tryAsU64(2 ** 16);
97
96
  const w8 = tryAsU64(32);
98
97
  const data = Bytes.fill(HASH_SIZE, 0xaa).asOpaque();
@@ -114,7 +113,7 @@ describe("HostCalls: Query", () => {
114
113
  it("should return unavailable if preimage is unavailable", async () => {
115
114
  const accumulate = new PartialStateMock();
116
115
  const currentServiceId = tryAsServiceId(10_000);
117
- const query = new Query(currentServiceId, accumulate);
116
+ const query = Query.new(currentServiceId, accumulate);
118
117
  const w7 = tryAsU64(2 ** 16);
119
118
  const w8 = tryAsU64(32);
120
119
  const data = Bytes.fill(HASH_SIZE, 0xaa).asOpaque();
@@ -137,7 +136,7 @@ describe("HostCalls: Query", () => {
137
136
  it("should return reavailable if preimage is reavailable", async () => {
138
137
  const accumulate = new PartialStateMock();
139
138
  const currentServiceId = tryAsServiceId(10_000);
140
- const query = new Query(currentServiceId, accumulate);
139
+ const query = Query.new(currentServiceId, accumulate);
141
140
  const w7 = tryAsU64(2 ** 16);
142
141
  const w8 = tryAsU64(32);
143
142
  const data = Bytes.fill(HASH_SIZE, 0xaa).asOpaque();
@@ -14,7 +14,8 @@ export declare class Solicit 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): Solicit;
18
+ private constructor();
18
19
  execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<PvmExecution | undefined>;
19
20
  }
20
21
  //# sourceMappingURL=solicit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"solicit.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/solicit.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;AAE3E,OAAO,EAAE,KAAK,YAAY,EAAwB,MAAM,mCAAmC,CAAC;AAM5F;;;;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,uEAAiC;gBAG9B,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;CAmCrH"}
1
+ {"version":3,"file":"solicit.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/solicit.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;AAE3E,OAAO,EAAE,KAAK,YAAY,EAAwB,MAAM,mCAAmC,CAAC;AAM5F;;;;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,uEAAiC;IAEhD,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;CAmCrH"}
@@ -18,6 +18,9 @@ export class Solicit {
18
18
  index = tryAsHostCallIndex(23);
19
19
  basicGasCost = tryAsSmallGas(10);
20
20
  tracedRegisters = traceRegisters(IN_OUT_REG, 8);
21
+ static new(currentServiceId, partialState) {
22
+ return new Solicit(currentServiceId, partialState);
23
+ }
21
24
  constructor(currentServiceId, partialState) {
22
25
  this.currentServiceId = currentServiceId;
23
26
  this.partialState = partialState;
@@ -14,7 +14,6 @@ import { Result } from "#@typeberry/utils";
14
14
  import { RequestPreimageError } 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 { Solicit } from "./solicit.js";
19
18
  const gas = gasCounter(tryAsGas(0));
20
19
  const RESULT_REG = 7;
@@ -22,14 +21,14 @@ const HASH_START_REG = 7;
22
21
  const LENGTH_REG = 8;
23
22
  function prepareRegsAndMemory(preimageHash, preimageLength, { skipPreimageHash = false } = {}) {
24
23
  const memStart = 2 ** 16;
25
- const registers = new HostCallRegisters(emptyRegistersBuffer());
24
+ const registers = HostCallRegisters.empty();
26
25
  registers.set(HASH_START_REG, tryAsU64(memStart));
27
26
  registers.set(LENGTH_REG, preimageLength);
28
27
  const builder = new MemoryBuilder();
29
28
  if (!skipPreimageHash) {
30
29
  builder.setReadablePages(tryAsMemoryIndex(memStart), tryAsMemoryIndex(memStart + PAGE_SIZE), preimageHash.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: Solicit", () => {
39
38
  it("should request a preimage hash", async () => {
40
39
  const accumulate = new PartialStateMock();
41
40
  const currentServiceId = tryAsServiceId(10_000);
42
- const solicit = new Solicit(currentServiceId, accumulate);
41
+ const solicit = Solicit.new(currentServiceId, accumulate);
43
42
  const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4_096));
44
43
  // when
45
44
  await solicit.execute(gas, registers, memory);
@@ -50,7 +49,7 @@ describe("HostCalls: Solicit", () => {
50
49
  it("should fail if hash not available", async () => {
51
50
  const accumulate = new PartialStateMock();
52
51
  const currentServiceId = tryAsServiceId(10_000);
53
- const solicit = new Solicit(currentServiceId, accumulate);
52
+ const solicit = Solicit.new(currentServiceId, accumulate);
54
53
  const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4_096), {
55
54
  skipPreimageHash: true,
56
55
  });
@@ -63,7 +62,7 @@ describe("HostCalls: Solicit", () => {
63
62
  it("should fail if already requested", async () => {
64
63
  const accumulate = new PartialStateMock();
65
64
  const currentServiceId = tryAsServiceId(10_000);
66
- const solicit = new Solicit(currentServiceId, accumulate);
65
+ const solicit = Solicit.new(currentServiceId, accumulate);
67
66
  accumulate.requestPreimageResponse = Result.error(RequestPreimageError.AlreadyRequested, () => "Test: preimage already requested for solicit");
68
67
  const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4_096));
69
68
  // when
@@ -75,7 +74,7 @@ describe("HostCalls: Solicit", () => {
75
74
  it("should fail if already available", async () => {
76
75
  const accumulate = new PartialStateMock();
77
76
  const currentServiceId = tryAsServiceId(10_000);
78
- const solicit = new Solicit(currentServiceId, accumulate);
77
+ const solicit = Solicit.new(currentServiceId, accumulate);
79
78
  accumulate.requestPreimageResponse = Result.error(RequestPreimageError.AlreadyAvailable, () => "Test: preimage already available for solicit");
80
79
  const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4_096));
81
80
  // when
@@ -87,7 +86,7 @@ describe("HostCalls: Solicit", () => {
87
86
  it("should fail if balance too low", async () => {
88
87
  const accumulate = new PartialStateMock();
89
88
  const currentServiceId = tryAsServiceId(10_000);
90
- const solicit = new Solicit(currentServiceId, accumulate);
89
+ const solicit = Solicit.new(currentServiceId, accumulate);
91
90
  accumulate.requestPreimageResponse = Result.error(RequestPreimageError.InsufficientFunds, () => "Test: insufficient funds for solicit");
92
91
  const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4_096));
93
92
  // when
@@ -24,7 +24,8 @@ export declare class Transfer implements HostCallHandler {
24
24
  */
25
25
  basicGasCost: (number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">) | ((regs: HostCallRegisters) => import("@typeberry/pvm-interface").Gas);
26
26
  tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
27
- constructor(currentServiceId: ServiceId, partialState: PartialState);
27
+ static new(currentServiceId: ServiceId, partialState: PartialState): Transfer;
28
+ private constructor();
28
29
  execute(gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined | PvmExecution>;
29
30
  }
30
31
  //# sourceMappingURL=transfer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/transfer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,kBAAkB,CAAC;AAEnE,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,EAA2B,MAAM,0BAA0B,CAAC;AAErF,OAAO,EAAE,KAAK,YAAY,EAAsC,MAAM,mCAAmC,CAAC;AAU1G;;;;GAIG;AACH,qBAAa,QAAS,YAAW,eAAe;aAmB5B,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAnB/B,KAAK,iIAA0B;IAC/B;;;;;;;;;OASG;IACH,YAAY,wIAED,iBAAiB,6CAAoD;IAEhF,eAAe,uEAAgF;gBAG7E,gBAAgB,EAAE,SAAS,EAC1B,YAAY,EAAE,YAAY;IAGvC,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CAsDpH"}
1
+ {"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/transfer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,kBAAkB,CAAC;AAEnE,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,EAA2B,MAAM,0BAA0B,CAAC;AAErF,OAAO,EAAE,KAAK,YAAY,EAAsC,MAAM,mCAAmC,CAAC;AAU1G;;;;GAIG;AACH,qBAAa,QAAS,YAAW,eAAe;aAuB5B,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAvB/B,KAAK,iIAA0B;IAC/B;;;;;;;;;OASG;IACH,YAAY,wIAED,iBAAiB,6CAAoD;IAEhF,eAAe,uEAAgF;IAE/F,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY;IAIlE,OAAO;IAKD,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CAsDpH"}
@@ -34,6 +34,9 @@ export class Transfer {
34
34
  ? tryAsSmallGas(10)
35
35
  : (regs) => tryAsGas(10n + regs.get(TRANSFER_GAS_FEE_REG));
36
36
  tracedRegisters = traceRegisters(IN_OUT_REG, AMOUNT_REG, TRANSFER_GAS_FEE_REG, MEMO_START_REG);
37
+ static new(currentServiceId, partialState) {
38
+ return new Transfer(currentServiceId, partialState);
39
+ }
37
40
  constructor(currentServiceId, partialState) {
38
41
  this.currentServiceId = currentServiceId;
39
42
  this.partialState = partialState;
@@ -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);