@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
@@ -5,7 +5,7 @@ describe("JumpTable", () => {
5
5
  it("should return true when an index exist in jump table", () => {
6
6
  const jumpTableItemLength = 4;
7
7
  const bytes = new Uint8Array([0x78, 0x56, 0x34, 0x12]);
8
- const jumpTable = new JumpTable(jumpTableItemLength, bytes);
8
+ const jumpTable = JumpTable.fromRaw(jumpTableItemLength, bytes);
9
9
  const indexToCheck = 0;
10
10
  const result = jumpTable.hasIndex(indexToCheck);
11
11
  assert.strictEqual(result, true);
@@ -13,7 +13,7 @@ describe("JumpTable", () => {
13
13
  it("should return false when an index not exist in jump table", () => {
14
14
  const jumpTableItemLength = 4;
15
15
  const bytes = new Uint8Array([0x78, 0x56, 0x34, 0x12]);
16
- const jumpTable = new JumpTable(jumpTableItemLength, bytes);
16
+ const jumpTable = JumpTable.fromRaw(jumpTableItemLength, bytes);
17
17
  const indexToCheck = 5;
18
18
  const result = jumpTable.hasIndex(indexToCheck);
19
19
  assert.strictEqual(result, false);
@@ -22,7 +22,7 @@ describe("JumpTable", () => {
22
22
  const jumpTableItemLength = 4;
23
23
  const expectedValue = 0x12_34_56_78;
24
24
  const bytes = new Uint8Array([0xff, 0xff, 0xff, 0xff, 0x78, 0x56, 0x34, 0x12]);
25
- const jumpTable = new JumpTable(jumpTableItemLength, bytes);
25
+ const jumpTable = JumpTable.fromRaw(jumpTableItemLength, bytes);
26
26
  const indexToCheck = 1;
27
27
  const result = jumpTable.getDestination(indexToCheck);
28
28
  assert.strictEqual(result, expectedValue);
@@ -31,7 +31,7 @@ describe("JumpTable", () => {
31
31
  const jumpTableItemLength = 8;
32
32
  const expectedValue = 0xff_ff_ff_ff;
33
33
  const bytes = new Uint8Array([0xff, 0xff, 0xff, 0xff, 0x78, 0x56, 0x34, 0x12]);
34
- const jumpTable = new JumpTable(jumpTableItemLength, bytes);
34
+ const jumpTable = JumpTable.fromRaw(jumpTableItemLength, bytes);
35
35
  const indexToCheck = 0;
36
36
  const result = jumpTable.getDestination(indexToCheck);
37
37
  assert.strictEqual(result, expectedValue);
@@ -40,7 +40,7 @@ describe("JumpTable", () => {
40
40
  const jumpTableItemLength = 8;
41
41
  const expectedValue = 0x00_00_00_00_12_34_56_78;
42
42
  const bytes = new Uint8Array([0x78, 0x56, 0x34, 0x12, 0, 0, 0, 0]);
43
- const jumpTable = new JumpTable(jumpTableItemLength, bytes);
43
+ const jumpTable = JumpTable.fromRaw(jumpTableItemLength, bytes);
44
44
  const indexToCheck = 0;
45
45
  const result = jumpTable.getDestination(indexToCheck);
46
46
  assert.strictEqual(result, expectedValue);
@@ -50,7 +50,7 @@ describe("JumpTable", () => {
50
50
  const expectedValue = 2 ** 32 - 1;
51
51
  const bytes = new Uint8Array(255);
52
52
  bytes.fill(1);
53
- const jumpTable = new JumpTable(jumpTableItemLength, bytes);
53
+ const jumpTable = JumpTable.fromRaw(jumpTableItemLength, bytes);
54
54
  const indexToCheck = 0;
55
55
  const result = jumpTable.getDestination(indexToCheck);
56
56
  assert.strictEqual(result, expectedValue);
@@ -17,7 +17,8 @@ export declare class Mask {
17
17
  * There are instructions at indices `0, 3, 5, 9`.
18
18
  */
19
19
  private lookupTableForward;
20
- constructor(mask: BitVec);
20
+ static new(mask: BitVec): Mask;
21
+ private constructor();
21
22
  isInstruction(index: number): boolean;
22
23
  getNoOfBytesToNextInstruction(index: number): number;
23
24
  private buildLookupTableForward;
@@ -1 +1 @@
1
- {"version":3,"file":"mask.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/pvm-interpreter/program-decoder/mask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAQ1C;;;;GAIG;AACH,qBAAa,IAAI;IACf;;;;;;;;;;OAUG;IACH,OAAO,CAAC,kBAAkB,CAAa;gBAE3B,IAAI,EAAE,MAAM;IAIxB,aAAa,CAAC,KAAK,EAAE,MAAM;IAI3B,6BAA6B,CAAC,KAAK,EAAE,MAAM;IAK3C,OAAO,CAAC,uBAAuB;IAc/B,MAAM,CAAC,KAAK;CAGb"}
1
+ {"version":3,"file":"mask.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/pvm-interpreter/program-decoder/mask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAQ1C;;;;GAIG;AACH,qBAAa,IAAI;IACf;;;;;;;;;;OAUG;IACH,OAAO,CAAC,kBAAkB,CAAa;IAEvC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM;IAIvB,OAAO;IAIP,aAAa,CAAC,KAAK,EAAE,MAAM;IAI3B,6BAA6B,CAAC,KAAK,EAAE,MAAM;IAK3C,OAAO,CAAC,uBAAuB;IAc/B,MAAM,CAAC,KAAK;CAGb"}
@@ -22,6 +22,9 @@ export class Mask {
22
22
  * There are instructions at indices `0, 3, 5, 9`.
23
23
  */
24
24
  lookupTableForward;
25
+ static new(mask) {
26
+ return new Mask(mask);
27
+ }
25
28
  constructor(mask) {
26
29
  this.lookupTableForward = this.buildLookupTableForward(mask);
27
30
  }
@@ -8,7 +8,7 @@ describe("Mask", () => {
8
8
  const input = [0b0000_0001];
9
9
  const index = 0;
10
10
  const expectedResult = true;
11
- const mask = new Mask(BitVec.fromBlob(new Uint8Array(input), 3));
11
+ const mask = Mask.new(BitVec.fromBlob(new Uint8Array(input), 3));
12
12
  const result = mask.isInstruction(index);
13
13
  assert.strictEqual(result, expectedResult);
14
14
  });
@@ -16,7 +16,7 @@ describe("Mask", () => {
16
16
  const input = [0b0000_0001];
17
17
  const index = 1;
18
18
  const expectedResult = false;
19
- const mask = new Mask(BitVec.fromBlob(new Uint8Array(input), 3));
19
+ const mask = Mask.new(BitVec.fromBlob(new Uint8Array(input), 3));
20
20
  const result = mask.isInstruction(index);
21
21
  assert.strictEqual(result, expectedResult);
22
22
  });
@@ -24,7 +24,7 @@ describe("Mask", () => {
24
24
  const input = [0x0, 0b0000_0001];
25
25
  const index = 8;
26
26
  const expectedResult = true;
27
- const mask = new Mask(BitVec.fromBlob(new Uint8Array(input), 11));
27
+ const mask = Mask.new(BitVec.fromBlob(new Uint8Array(input), 11));
28
28
  const result = mask.isInstruction(index);
29
29
  assert.strictEqual(result, expectedResult);
30
30
  });
@@ -32,7 +32,7 @@ describe("Mask", () => {
32
32
  const input = [0xff, 0b0000_0001];
33
33
  const index = 10;
34
34
  const expectedResult = false;
35
- const mask = new Mask(BitVec.fromBlob(new Uint8Array(input), 11));
35
+ const mask = Mask.new(BitVec.fromBlob(new Uint8Array(input), 11));
36
36
  const result = mask.isInstruction(index);
37
37
  assert.strictEqual(result, expectedResult);
38
38
  });
@@ -42,7 +42,7 @@ describe("Mask", () => {
42
42
  const input = [0b0000_0001];
43
43
  const index = 1;
44
44
  const expectedResult = 2;
45
- const mask = new Mask(BitVec.fromBlob(new Uint8Array(input), 3));
45
+ const mask = Mask.new(BitVec.fromBlob(new Uint8Array(input), 3));
46
46
  const result = mask.getNoOfBytesToNextInstruction(index);
47
47
  assert.strictEqual(result, expectedResult);
48
48
  });
@@ -50,7 +50,7 @@ describe("Mask", () => {
50
50
  const input = [0b0000_1001];
51
51
  const index = 1;
52
52
  const expectedResult = 2;
53
- const mask = new Mask(BitVec.fromBlob(new Uint8Array(input), 8));
53
+ const mask = Mask.new(BitVec.fromBlob(new Uint8Array(input), 8));
54
54
  const result = mask.getNoOfBytesToNextInstruction(index);
55
55
  assert.strictEqual(result, expectedResult);
56
56
  });
@@ -58,7 +58,7 @@ describe("Mask", () => {
58
58
  const input = [0b0000_0001];
59
59
  const index = 0;
60
60
  const expectedResult = 0;
61
- const mask = new Mask(BitVec.fromBlob(new Uint8Array(input), 3));
61
+ const mask = Mask.new(BitVec.fromBlob(new Uint8Array(input), 3));
62
62
  const result = mask.getNoOfBytesToNextInstruction(index);
63
63
  assert.strictEqual(result, expectedResult);
64
64
  });
@@ -66,7 +66,7 @@ describe("Mask", () => {
66
66
  const input = [0b0001_1001, 0b0001_1000];
67
67
  const index = 5;
68
68
  const expectedResult = 6;
69
- const mask = new Mask(BitVec.fromBlob(new Uint8Array(input), 16));
69
+ const mask = Mask.new(BitVec.fromBlob(new Uint8Array(input), 16));
70
70
  const result = mask.getNoOfBytesToNextInstruction(index);
71
71
  assert.strictEqual(result, expectedResult);
72
72
  });
@@ -74,7 +74,7 @@ describe("Mask", () => {
74
74
  const input = [0b0001_1001];
75
75
  const index = 5;
76
76
  const expectedResult = 3;
77
- const mask = new Mask(BitVec.fromBlob(new Uint8Array(input), 8));
77
+ const mask = Mask.new(BitVec.fromBlob(new Uint8Array(input), 8));
78
78
  const result = mask.getNoOfBytesToNextInstruction(index);
79
79
  assert.strictEqual(result, expectedResult);
80
80
  });
@@ -82,7 +82,7 @@ describe("Mask", () => {
82
82
  const input = [0b0000_0001, 0b0000_0000, 0b0000_0000, 0b1000_0000];
83
83
  const index = 1;
84
84
  const expectedResult = 25;
85
- const mask = new Mask(BitVec.fromBlob(new Uint8Array(input), input.length * 8));
85
+ const mask = Mask.new(BitVec.fromBlob(new Uint8Array(input), input.length * 8));
86
86
  const result = mask.getNoOfBytesToNextInstruction(index);
87
87
  assert.strictEqual(result, expectedResult);
88
88
  });
@@ -8,7 +8,8 @@ export declare class ProgramDecoder {
8
8
  private code;
9
9
  private mask;
10
10
  private jumpTable;
11
- constructor(rawProgram: Uint8Array);
11
+ static new(rawProgram: Uint8Array): ProgramDecoder;
12
+ private constructor();
12
13
  private decodeProgram;
13
14
  getMask(): Mask;
14
15
  getCode(): Uint8Array<ArrayBufferLike>;
@@ -1 +1 @@
1
- {"version":3,"file":"program-decoder.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/pvm-interpreter/program-decoder/program-decoder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,oBAAY,mBAAmB;IAC7B,mBAAmB,IAAI;CACxB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,SAAS,CAAY;gBAEjB,UAAU,EAAE,UAAU;IAQlC,OAAO,CAAC,aAAa;IAwBrB,OAAO;IAIP,OAAO;IAIP,YAAY;IAIZ,sEAAsE;IACtE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAAC,cAAc,EAAE,mBAAmB,CAAC;CAQhF"}
1
+ {"version":3,"file":"program-decoder.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/pvm-interpreter/program-decoder/program-decoder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,oBAAY,mBAAmB;IAC7B,mBAAmB,IAAI;CACxB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,SAAS,CAAY;IAE7B,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU;IAIjC,OAAO;IAQP,OAAO,CAAC,aAAa;IAwBrB,OAAO;IAIP,OAAO;IAIP,YAAY;IAIZ,sEAAsE;IACtE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAAC,cAAc,EAAE,mBAAmB,CAAC;CAQhF"}
@@ -12,11 +12,14 @@ export class ProgramDecoder {
12
12
  code;
13
13
  mask;
14
14
  jumpTable;
15
+ static new(rawProgram) {
16
+ return new ProgramDecoder(rawProgram);
17
+ }
15
18
  constructor(rawProgram) {
16
19
  const { code, mask, jumpTable, jumpTableItemLength } = this.decodeProgram(rawProgram);
17
20
  this.code = new Uint8Array(code);
18
- this.mask = new Mask(mask);
19
- this.jumpTable = new JumpTable(jumpTableItemLength, jumpTable);
21
+ this.mask = Mask.new(mask);
22
+ this.jumpTable = JumpTable.fromRaw(jumpTableItemLength, jumpTable);
20
23
  }
21
24
  decodeProgram(program) {
22
25
  const decoder = Decoder.fromBlob(program);
@@ -50,7 +53,7 @@ export class ProgramDecoder {
50
53
  /** https://graypaper.fluffylabs.dev/#/68eaa1f/23f400234701?v=0.6.4 */
51
54
  static deblob(program) {
52
55
  try {
53
- return Result.ok(new ProgramDecoder(program));
56
+ return Result.ok(ProgramDecoder.new(program));
54
57
  }
55
58
  catch (e) {
56
59
  logger.error `Invalid program: ${e}`;
@@ -11,18 +11,18 @@ const bitMask = [73, 6];
11
11
  const program = new Uint8Array([jumpTable.length, jumpTableItemLength, 16, ...jumpTable, ...code, ...bitMask]);
12
12
  describe("ProgramDecoder", () => {
13
13
  it("should corectly decode instructions", () => {
14
- const programDecoder = new ProgramDecoder(program);
14
+ const programDecoder = ProgramDecoder.new(program);
15
15
  const result = programDecoder.getCode();
16
16
  assert.deepStrictEqual(result, new Uint8Array(code));
17
17
  });
18
18
  it("should corectly decode mask", () => {
19
- const programDecoder = new ProgramDecoder(program);
19
+ const programDecoder = ProgramDecoder.new(program);
20
20
  const result = programDecoder.getMask();
21
- assert.deepStrictEqual(result, new Mask(BitVec.fromBlob(new Uint8Array(bitMask), code.length)));
21
+ assert.deepStrictEqual(result, Mask.new(BitVec.fromBlob(new Uint8Array(bitMask), code.length)));
22
22
  });
23
23
  it("should corectly decode jump table", () => {
24
- const programDecoder = new ProgramDecoder(program);
24
+ const programDecoder = ProgramDecoder.new(program);
25
25
  const result = programDecoder.getJumpTable();
26
- assert.deepStrictEqual(result, new JumpTable(jumpTableItemLength, new Uint8Array(jumpTable)));
26
+ assert.deepStrictEqual(result, JumpTable.fromRaw(jumpTableItemLength, new Uint8Array(jumpTable)));
27
27
  });
28
28
  });
@@ -11,7 +11,7 @@ export class Program {
11
11
  static fromSpi(blob, args, hasMetadata) {
12
12
  const { code: spiCode, metadata } = hasMetadata ? extractCodeAndMetadata(blob) : { code: blob };
13
13
  const { code, memory: rawMemory, registers } = decodeStandardProgram(spiCode, args);
14
- const regs = new Registers();
14
+ const regs = Registers.empty();
15
15
  regs.copyFrom(registers);
16
16
  const memoryBuilder = new MemoryBuilder();
17
17
  for (const { start, end, data } of rawMemory.readable) {
@@ -31,8 +31,8 @@ export class Program {
31
31
  }
32
32
  static fromGeneric(blob, hasMetadata) {
33
33
  const { code, metadata } = hasMetadata ? extractCodeAndMetadata(blob) : { code: blob };
34
- const regs = new Registers();
35
- const memory = new Memory();
34
+ const regs = Registers.empty();
35
+ const memory = Memory.new();
36
36
  return new Program(code, regs, memory, metadata);
37
37
  }
38
38
  constructor(code, registers, memory, metadata = new Uint8Array()) {
@@ -6,10 +6,13 @@ export declare class Registers implements IRegisters {
6
6
  private readonly bytes;
7
7
  private asSigned;
8
8
  private asUnsigned;
9
- constructor(bytes?: Uint8Array<ArrayBufferLike>);
9
+ /** Creates an empty registers object backed by a freshly allocated buffer. */
10
+ static empty(): Registers;
11
+ /** Wraps an existing byte buffer, validating its size. */
12
+ static fromBytes(bytes: Uint8Array): Registers;
13
+ private constructor();
10
14
  getAllEncoded(): Uint8Array;
11
15
  setAllEncoded(bytes: Uint8Array): void;
12
- static fromBytes(bytes: Uint8Array): Registers;
13
16
  getBytesAsLittleEndian(index: number, len: number): Uint8Array<ArrayBufferLike>;
14
17
  copyFrom(regs: Registers | BigUint64Array): void;
15
18
  reset(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"registers.d.ts","sourceRoot":"","sources":["../../../../../packages/core/pvm-interpreter/registers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAmB,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAuB,KAAK,MAAM,EAAuB,MAAM,kBAAkB,CAAC;AAIzF,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAE7D,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,KAAG,aAGlD,CAAC;AAEF,qBAAa,SAAU,YAAW,UAAU;IAI9B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAHlC,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,UAAU,CAAiB;gBAEN,KAAK,8BAA8D;IAMhG,aAAa,IAAI,UAAU;IAI3B,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAKtC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU;IAKlC,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAKjD,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,cAAc;IAKzC,KAAK;IAML,WAAW,CAAC,aAAa,EAAE,MAAM;IAIjC,WAAW,CAAC,aAAa,EAAE,MAAM;IAIjC,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAI3C,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAI3C,MAAM,CAAC,aAAa,EAAE,MAAM;IAI5B,MAAM,CAAC,aAAa,EAAE,MAAM;IAI5B,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAI3C,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAI3C,SAAS;CAGV;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAgB/D"}
1
+ {"version":3,"file":"registers.d.ts","sourceRoot":"","sources":["../../../../../packages/core/pvm-interpreter/registers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAmB,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAuB,KAAK,MAAM,EAAuB,MAAM,kBAAkB,CAAC;AAIzF,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAE7D,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,KAAG,aAGlD,CAAC;AAEF,qBAAa,SAAU,YAAW,UAAU;IAetB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAd1C,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,UAAU,CAAiB;IAEnC,8EAA8E;IAC9E,MAAM,CAAC,KAAK;IAIZ,0DAA0D;IAC1D,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU;IAKlC,OAAO;IAKP,aAAa,IAAI,UAAU;IAI3B,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAKtC,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAKjD,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,cAAc;IAKzC,KAAK;IAML,WAAW,CAAC,aAAa,EAAE,MAAM;IAIjC,WAAW,CAAC,aAAa,EAAE,MAAM;IAIjC,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAI3C,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAI3C,MAAM,CAAC,aAAa,EAAE,MAAM;IAI5B,MAAM,CAAC,aAAa,EAAE,MAAM;IAI5B,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAI3C,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAI3C,SAAS;CAGV;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAgB/D"}
@@ -9,9 +9,17 @@ export class Registers {
9
9
  bytes;
10
10
  asSigned;
11
11
  asUnsigned;
12
- constructor(bytes = safeAllocUint8Array(NO_OF_REGISTERS << REGISTER_SIZE_SHIFT)) {
13
- this.bytes = bytes;
12
+ /** Creates an empty registers object backed by a freshly allocated buffer. */
13
+ static empty() {
14
+ return new Registers(safeAllocUint8Array(NO_OF_REGISTERS << REGISTER_SIZE_SHIFT));
15
+ }
16
+ /** Wraps an existing byte buffer, validating its size. */
17
+ static fromBytes(bytes) {
14
18
  check `${bytes.length === NO_OF_REGISTERS << REGISTER_SIZE_SHIFT} Invalid size of registers array.`;
19
+ return new Registers(bytes);
20
+ }
21
+ constructor(bytes) {
22
+ this.bytes = bytes;
15
23
  this.asSigned = new BigInt64Array(bytes.buffer, bytes.byteOffset);
16
24
  this.asUnsigned = new BigUint64Array(bytes.buffer, bytes.byteOffset);
17
25
  }
@@ -22,10 +30,6 @@ export class Registers {
22
30
  check `${bytes.length === this.bytes.length} Incorrect size of input registers. Got: ${bytes.length}, need: ${this.bytes.length}`;
23
31
  this.bytes.set(bytes, 0);
24
32
  }
25
- static fromBytes(bytes) {
26
- check `${bytes.length === NO_OF_REGISTERS << REGISTER_SIZE_SHIFT} Invalid size of registers array.`;
27
- return new Registers(bytes);
28
- }
29
33
  getBytesAsLittleEndian(index, len) {
30
34
  const offset = index << REGISTER_SIZE_SHIFT;
31
35
  return this.bytes.subarray(offset, offset + len);
@@ -6,7 +6,7 @@ const U64_BYTES = 8;
6
6
  describe("Registers", () => {
7
7
  describe("loading values", () => {
8
8
  it("should return 0xff_ff_ff_ff correctly loaded into register", () => {
9
- const registers = new Registers();
9
+ const registers = Registers.empty();
10
10
  const expectedSignedNumber = -1;
11
11
  const expectedUnsignedNumber = 2 ** 32 - 1;
12
12
  registers.setU32(0, 0xff_ff_ff_ff);
@@ -14,7 +14,7 @@ describe("Registers", () => {
14
14
  assert.strictEqual(registers.getLowerU32(0), expectedUnsignedNumber);
15
15
  });
16
16
  it("should return 0x00_00_00_01 correctly loaded into register", () => {
17
- const registers = new Registers();
17
+ const registers = Registers.empty();
18
18
  const expectedSignedNumber = 1;
19
19
  const expectedUnsignedNumber = 1;
20
20
  registers.setU32(0, 0x00_00_00_01);
@@ -22,7 +22,7 @@ describe("Registers", () => {
22
22
  assert.strictEqual(registers.getLowerU32(0), expectedUnsignedNumber);
23
23
  });
24
24
  it("should return 0x80_00_00_00 correctly loaded into register", () => {
25
- const registers = new Registers();
25
+ const registers = Registers.empty();
26
26
  const expectedSignedNumber = -(2 ** 31);
27
27
  const expectedUnsignedNumber = 2 ** 31;
28
28
  registers.setU32(0, 0x80_00_00_00);
@@ -32,28 +32,28 @@ describe("Registers", () => {
32
32
  });
33
33
  describe("getBytesAsLittleEndian", () => {
34
34
  it("should return empty bytes array", () => {
35
- const regs = new Registers();
35
+ const regs = Registers.empty();
36
36
  const num = 0;
37
37
  const expectedBytes = new Uint8Array([0, 0, 0, 0]);
38
38
  regs.setU32(1, num);
39
39
  assert.deepStrictEqual(regs.getBytesAsLittleEndian(1, U32_BYTES), expectedBytes);
40
40
  });
41
41
  it("should return u8 number correctly encoded as little endian", () => {
42
- const regs = new Registers();
42
+ const regs = Registers.empty();
43
43
  const num = 0xff;
44
44
  const expectedBytes = new Uint8Array([0xff, 0, 0, 0]);
45
45
  regs.setU32(1, num);
46
46
  assert.deepStrictEqual(regs.getBytesAsLittleEndian(1, U32_BYTES), expectedBytes);
47
47
  });
48
48
  it("should return u16 number correctly encoded as little endian", () => {
49
- const regs = new Registers();
49
+ const regs = Registers.empty();
50
50
  const num = 0xff_ee;
51
51
  const expectedBytes = new Uint8Array([0xee, 0xff, 0, 0]);
52
52
  regs.setU32(1, num);
53
53
  assert.deepStrictEqual(regs.getBytesAsLittleEndian(1, U32_BYTES), expectedBytes);
54
54
  });
55
55
  it("should return u32 number correctly encoded as little endian", () => {
56
- const regs = new Registers();
56
+ const regs = Registers.empty();
57
57
  const num = 0xff_ee_dd_cc;
58
58
  const expectedBytes = new Uint8Array([0xcc, 0xdd, 0xee, 0xff]);
59
59
  regs.setU32(1, num);
@@ -62,7 +62,7 @@ describe("Registers", () => {
62
62
  });
63
63
  describe("Implemented IRegister", () => {
64
64
  it("should correctly get all registers into bytes encoded", () => {
65
- const regs = new Registers();
65
+ const regs = Registers.empty();
66
66
  const num = 0xefcdab8967452301n;
67
67
  const bytesReg = new Uint8Array([0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef]);
68
68
  const fill = new Uint8Array(12 * U64_BYTES).fill(0); // we set 1st register so we fill remaining 12 with 0
@@ -75,7 +75,7 @@ describe("Registers", () => {
75
75
  assert.deepStrictEqual(encodedAllRegisters, expected);
76
76
  });
77
77
  it("should correctly set all registers from bytes encoded", () => {
78
- const regs = new Registers();
78
+ const regs = Registers.empty();
79
79
  const bytesReg = new Uint8Array([0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef]);
80
80
  const fill = new Uint8Array(12 * U64_BYTES).fill(0); // we set 1st register so we fill remaining 12 with 0
81
81
  const bytes = new Uint8Array([...bytesReg, ...fill]);
@@ -85,7 +85,7 @@ describe("Registers", () => {
85
85
  assert.deepStrictEqual(reg, expected);
86
86
  });
87
87
  it("should throw when trying to set all registers from bytes encoded with incorrect size", () => {
88
- const regs = new Registers();
88
+ const regs = Registers.empty();
89
89
  const bytesReg = new Uint8Array([0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef]);
90
90
  const fill = new Uint8Array(12 * U64_BYTES).fill(0); // we set 1st register so we fill remaining 12 with 0
91
91
  const bytes = new Uint8Array([...bytesReg, ...fill, 0x00]);
@@ -4,20 +4,23 @@ export declare class MemorySegment extends WithDebug {
4
4
  readonly end: number;
5
5
  readonly data: Uint8Array | null;
6
6
  static from({ start, end, data }: Omit<MemorySegment, never>): MemorySegment;
7
- constructor(start: number, end: number, data: Uint8Array | null);
7
+ static new(start: number, end: number, data: Uint8Array | null): MemorySegment;
8
+ private constructor();
8
9
  }
9
10
  export declare class SpiMemory extends WithDebug {
10
11
  readonly readable: MemorySegment[];
11
12
  readonly writeable: MemorySegment[];
12
13
  readonly sbrkIndex: number;
13
14
  readonly heapEnd: number;
14
- constructor(readable: MemorySegment[], writeable: MemorySegment[], sbrkIndex: number, heapEnd: number);
15
+ static new(readable: MemorySegment[], writeable: MemorySegment[], sbrkIndex: number, heapEnd: number): SpiMemory;
16
+ private constructor();
15
17
  }
16
18
  export declare class SpiProgram extends WithDebug {
17
19
  readonly code: Uint8Array;
18
20
  readonly memory: SpiMemory;
19
21
  readonly registers: BigUint64Array;
20
- constructor(code: Uint8Array, memory: SpiMemory, registers: BigUint64Array);
22
+ static new(code: Uint8Array, memory: SpiMemory, registers: BigUint64Array): SpiProgram;
23
+ private constructor();
21
24
  }
22
25
  /**
23
26
  * program = E_3(|o|) ++ E_3(|w|) ++ E_2(z) ++ E_3(s) ++ o ++ w ++ E_4(|c|) ++ c
@@ -1 +1 @@
1
- {"version":3,"file":"decode-standard-program.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/pvm-interpreter/spi-decoder/decode-standard-program.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAapD,qBAAa,aAAc,SAAQ,SAAS;aAMxB,KAAK,EAAE,MAAM;aACb,GAAG,EAAE,MAAM;aACX,IAAI,EAAE,UAAU,GAAG,IAAI;IAPzC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;gBAK1C,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,UAAU,GAAG,IAAI;CAI1C;AACD,qBAAa,SAAU,SAAQ,SAAS;aAEpB,QAAQ,EAAE,aAAa,EAAE;aACzB,SAAS,EAAE,aAAa,EAAE;aAC1B,SAAS,EAAE,MAAM;aACjB,OAAO,EAAE,MAAM;gBAHf,QAAQ,EAAE,aAAa,EAAE,EACzB,SAAS,EAAE,aAAa,EAAE,EAC1B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM;CAIlC;AAED,qBAAa,UAAW,SAAQ,SAAS;aAErB,IAAI,EAAE,UAAU;aAChB,MAAM,EAAE,SAAS;aACjB,SAAS,EAAE,cAAc;gBAFzB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,cAAc;CAI5C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,cAgD1E"}
1
+ {"version":3,"file":"decode-standard-program.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/pvm-interpreter/spi-decoder/decode-standard-program.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAapD,qBAAa,aAAc,SAAQ,SAAS;aAUxB,KAAK,EAAE,MAAM;aACb,GAAG,EAAE,MAAM;aACX,IAAI,EAAE,UAAU,GAAG,IAAI;IAXzC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IAI5D,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;IAI9D,OAAO;CAOR;AACD,qBAAa,SAAU,SAAQ,SAAS;aAMpB,QAAQ,EAAE,aAAa,EAAE;aACzB,SAAS,EAAE,aAAa,EAAE;aAC1B,SAAS,EAAE,MAAM;aACjB,OAAO,EAAE,MAAM;IARjC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAIpG,OAAO;CAQR;AAED,qBAAa,UAAW,SAAQ,SAAS;aAMrB,IAAI,EAAE,UAAU;aAChB,MAAM,EAAE,SAAS;aACjB,SAAS,EAAE,cAAc;IAP3C,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc;IAIzE,OAAO;CAOR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,cAgD1E"}
@@ -8,6 +8,9 @@ export class MemorySegment extends WithDebug {
8
8
  end;
9
9
  data;
10
10
  static from({ start, end, data }) {
11
+ return MemorySegment.new(start, end, data);
12
+ }
13
+ static new(start, end, data) {
11
14
  return new MemorySegment(start, end, data);
12
15
  }
13
16
  constructor(start, end, data) {
@@ -22,6 +25,9 @@ export class SpiMemory extends WithDebug {
22
25
  writeable;
23
26
  sbrkIndex;
24
27
  heapEnd;
28
+ static new(readable, writeable, sbrkIndex, heapEnd) {
29
+ return new SpiMemory(readable, writeable, sbrkIndex, heapEnd);
30
+ }
25
31
  constructor(readable, writeable, sbrkIndex, heapEnd) {
26
32
  super();
27
33
  this.readable = readable;
@@ -34,6 +40,9 @@ export class SpiProgram extends WithDebug {
34
40
  code;
35
41
  memory;
36
42
  registers;
43
+ static new(code, memory, registers) {
44
+ return new SpiProgram(code, memory, registers);
45
+ }
37
46
  constructor(code, memory, registers) {
38
47
  super();
39
48
  this.code = code;
@@ -92,10 +101,10 @@ export function decodeStandardProgram(program, args) {
92
101
  heapDataEnd < heapZerosEnd && getMemorySegment(heapDataEnd, heapZerosEnd),
93
102
  stackStart < stackEnd && getMemorySegment(stackStart, stackEnd),
94
103
  ].filter(nonEmpty);
95
- return new SpiProgram(code, new SpiMemory(readableMemory, writeableMemory, heapZerosEnd, stackStart), getRegisters(args.length));
104
+ return SpiProgram.new(code, SpiMemory.new(readableMemory, writeableMemory, heapZerosEnd, stackStart), getRegisters(args.length));
96
105
  }
97
106
  function getMemorySegment(start, end, data = null) {
98
- return new MemorySegment(start, end, data);
107
+ return MemorySegment.new(start, end, data);
99
108
  }
100
109
  function getRegisters(argsLength) {
101
110
  const regs = new BigUint64Array(NO_OF_REGISTERS);
@@ -5,21 +5,24 @@ import { OK, Result } from "#@typeberry/utils";
5
5
  type Ananas = Awaited<ReturnType<typeof instantiate>>;
6
6
  declare class AnanasRegisters implements IRegisters {
7
7
  private readonly instance;
8
- constructor(instance: Ananas);
8
+ static new(instance: Ananas): AnanasRegisters;
9
+ private constructor();
9
10
  getAllEncoded(): Uint8Array;
10
11
  setAllEncoded(bytes: Uint8Array): void;
11
12
  getAllU64(): BigUint64Array;
12
13
  }
13
14
  declare class AnanasMemory implements IMemory {
14
15
  private readonly instance;
15
- constructor(instance: Ananas);
16
+ static new(instance: Ananas): AnanasMemory;
17
+ private constructor();
16
18
  store(address: U32, bytes: Uint8Array): Result<OK, PageFault>;
17
19
  read(address: U32, result: Uint8Array): Result<OK, PageFault>;
18
20
  }
19
21
  declare class AnanasGasCounter implements IGasCounter {
20
22
  private readonly instance;
21
23
  initialGas: Gas;
22
- constructor(instance: Ananas);
24
+ static new(instance: Ananas): AnanasGasCounter;
25
+ private constructor();
23
26
  get(): Gas;
24
27
  set(g: Gas): void;
25
28
  sub(g: Gas): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/core/pvm-interpreter-ananas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AACtE,OAAO,EAAY,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EACL,KAAK,GAAG,EAER,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,UAAU,EAEf,KAAK,SAAS,EAEd,MAAM,EAGP,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAS,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAErD,KAAK,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC;AAKtD,cAAM,eAAgB,YAAW,UAAU;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,MAAM;IAE7C,aAAa,IAAI,UAAU;IAI3B,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAOtC,SAAS,IAAI,cAAc;CAI5B;AAED,cAAM,YAAa,YAAW,OAAO;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,MAAM;IAE7C,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC;IAO7D,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC;CAW9D;AAED,cAAM,gBAAiB,YAAW,WAAW;IAG/B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAFrC,UAAU,EAAE,GAAG,CAAgB;gBAEF,QAAQ,EAAE,MAAM;IAE7C,GAAG,IAAI,GAAG;IAIV,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI;IAIjB,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO;IAUpB,IAAI,IAAI,GAAG;CASZ;AAED,qBAAa,iBAAkB,YAAW,eAAe;IAKnC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAJ7C,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC;IAE/B,OAAO;WAMM,GAAG;IAWhB,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI;IAO3E,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI;IAS9D,QAAQ,IAAI,OAAO;IAInB,UAAU,IAAI,IAAI;IAMlB,SAAS,IAAI,MAAM;IASnB,KAAK,IAAI,MAAM;IAIf,YAAY,IAAI,GAAG,GAAG,IAAI;CAG3B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/core/pvm-interpreter-ananas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AACtE,OAAO,EAAY,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EACL,KAAK,GAAG,EAER,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,UAAU,EAEf,KAAK,SAAS,EAEd,MAAM,EAGP,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAS,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAErD,KAAK,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC;AAKtD,cAAM,eAAgB,YAAW,UAAU;IAKrB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAJ7C,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM;IAI3B,OAAO;IAEP,aAAa,IAAI,UAAU;IAI3B,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAOtC,SAAS,IAAI,cAAc;CAI5B;AAED,cAAM,YAAa,YAAW,OAAO;IAKf,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAJ7C,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM;IAI3B,OAAO;IAEP,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC;IAO7D,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC;CAW9D;AAED,cAAM,gBAAiB,YAAW,WAAW;IAOvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAN7C,UAAU,EAAE,GAAG,CAAgB;IAE/B,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM;IAI3B,OAAO;IAEP,GAAG,IAAI,GAAG;IAIV,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI;IAIjB,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO;IAUpB,IAAI,IAAI,GAAG;CASZ;AAED,qBAAa,iBAAkB,YAAW,eAAe;IAKnC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAJ7C,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC;IAE/B,OAAO;WAMM,GAAG;IAWhB,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI;IAO3E,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI;IAS9D,QAAQ,IAAI,OAAO;IAInB,UAAU,IAAI,IAAI;IAMlB,SAAS,IAAI,MAAM;IASnB,KAAK,IAAI,MAAM;IAIf,YAAY,IAAI,GAAG,GAAG,IAAI;CAG3B"}
@@ -6,6 +6,9 @@ import { check, OK, Result } from "#@typeberry/utils";
6
6
  const INF_STEPS = 2 ** 32 - 1;
7
7
  class AnanasRegisters {
8
8
  instance;
9
+ static new(instance) {
10
+ return new AnanasRegisters(instance);
11
+ }
9
12
  constructor(instance) {
10
13
  this.instance = instance;
11
14
  }
@@ -25,6 +28,9 @@ class AnanasRegisters {
25
28
  }
26
29
  class AnanasMemory {
27
30
  instance;
31
+ static new(instance) {
32
+ return new AnanasMemory(instance);
33
+ }
28
34
  constructor(instance) {
29
35
  this.instance = instance;
30
36
  }
@@ -49,6 +55,9 @@ class AnanasMemory {
49
55
  class AnanasGasCounter {
50
56
  instance;
51
57
  initialGas = tryAsGas(0n);
58
+ static new(instance) {
59
+ return new AnanasGasCounter(instance);
60
+ }
52
61
  constructor(instance) {
53
62
  this.instance = instance;
54
63
  }
@@ -82,9 +91,9 @@ export class AnanasInterpreter {
82
91
  gas;
83
92
  constructor(instance) {
84
93
  this.instance = instance;
85
- this.registers = new AnanasRegisters(instance);
86
- this.memory = new AnanasMemory(instance);
87
- this.gas = new AnanasGasCounter(instance);
94
+ this.registers = AnanasRegisters.new(instance);
95
+ this.memory = AnanasMemory.new(instance);
96
+ this.gas = AnanasGasCounter.new(instance);
88
97
  }
89
98
  static async new() {
90
99
  const instance = await instantiate({
@@ -82,8 +82,11 @@ export declare class TrieNode {
82
82
  */
83
83
  export declare class BranchNode {
84
84
  readonly node: TrieNode;
85
- constructor(node: TrieNode);
85
+ /** Build a branch node from its left and right sub-node hashes. */
86
86
  static fromSubNodes(left: TrieNodeHash, right: TrieNodeHash): BranchNode;
87
+ /** View an existing raw trie node as a branch node (validates node type). */
88
+ static viewOf(node: TrieNode): BranchNode;
89
+ private constructor();
87
90
  /** Get the hash of the left sub-trie. */
88
91
  getLeft(): TrieNodeHash;
89
92
  /** Get the hash of the right sub-trie. */
@@ -109,8 +112,10 @@ export declare class BranchNode {
109
112
  */
110
113
  export declare class LeafNode {
111
114
  readonly node: TrieNode;
112
- constructor(node: TrieNode);
113
115
  static fromValue(key: InputKey, value: BytesBlob, valueHash: () => ValueHash): LeafNode;
116
+ /** View an existing raw trie node as a leaf node (validates node type). */
117
+ static viewOf(node: TrieNode): LeafNode;
118
+ private constructor();
114
119
  /** Get the key (truncated to 31 bytes). */
115
120
  getKey(): TruncatedStateKey;
116
121
  hasEmbeddedValue(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../../../../packages/core/trie/nodes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAS,KAAK,MAAM,EAAuB,MAAM,kBAAkB,CAAC;AAG3E,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;AAC1D,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,cAAc,CAAC,CAAC;AAEnF,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,iBAAiB,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAEtD,oDAAoD;AACpD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAExD,sDAAsD;AACtD,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,MAAM,MAAM,mBAAmB,GAAG,EAAE,CAAC;AACrC,eAAO,MAAM,kBAAkB,QAA0B,CAAC;AAE1D,qDAAqD;AACrD,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,QAAQ,CAKjD;AAED;;GAEG;AACH,oBAAY,QAAQ;IAClB,gDAAgD;IAChD,MAAM,IAAI;IACV,6BAA6B;IAC7B,IAAI,IAAI;IACR,6CAA6C;IAC7C,SAAS,IAAI;CACd;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,QAAQ;IAEjB,kCAAkC;aAClB,GAAG,EAAE,UAAU;;IAD/B,kCAAkC;IAClB,GAAG,GAAE,UAAiD;IAGxE,mCAAmC;IACnC,WAAW,IAAI,QAAQ;IAYvB,sCAAsC;IACtC,YAAY,IAAI,UAAU;IAK1B,oCAAoC;IACpC,UAAU,IAAI,QAAQ;IAKtB,QAAQ;CAGT;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,UAAU;IAET,QAAQ,CAAC,IAAI,EAAE,QAAQ;gBAAd,IAAI,EAAE,QAAQ;IAEnC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY;IAW3D,yCAAyC;IACzC,OAAO,IAAI,YAAY;IAIvB,0CAA0C;IAC1C,QAAQ,IAAI,YAAY;CAGzB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,QAAQ;IAEnB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;gBAEZ,IAAI,EAAE,QAAQ;IAI1B,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,GAAG,QAAQ;IAoBvF,2CAA2C;IAC3C,MAAM,IAAI,iBAAiB;IAI3B,gBAAgB,IAAI,OAAO;IAI3B;;;;OAIG;IACH,cAAc,IAAI,MAAM;IAMxB;;;;OAIG;IACH,QAAQ,IAAI,SAAS;IAKrB;;;;OAIG;IACH,YAAY,IAAI,SAAS;IAIzB,QAAQ;CAGT"}
1
+ {"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../../../../packages/core/trie/nodes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAS,KAAK,MAAM,EAAuB,MAAM,kBAAkB,CAAC;AAG3E,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;AAC1D,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,cAAc,CAAC,CAAC;AAEnF,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,iBAAiB,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAEtD,oDAAoD;AACpD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAExD,sDAAsD;AACtD,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,MAAM,MAAM,mBAAmB,GAAG,EAAE,CAAC;AACrC,eAAO,MAAM,kBAAkB,QAA0B,CAAC;AAE1D,qDAAqD;AACrD,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,QAAQ,CAKjD;AAED;;GAEG;AACH,oBAAY,QAAQ;IAClB,gDAAgD;IAChD,MAAM,IAAI;IACV,6BAA6B;IAC7B,IAAI,IAAI;IACR,6CAA6C;IAC7C,SAAS,IAAI;CACd;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,QAAQ;IAEjB,kCAAkC;aAClB,GAAG,EAAE,UAAU;;IAD/B,kCAAkC;IAClB,GAAG,GAAE,UAAiD;IAGxE,mCAAmC;IACnC,WAAW,IAAI,QAAQ;IAYvB,sCAAsC;IACtC,YAAY,IAAI,UAAU;IAI1B,oCAAoC;IACpC,UAAU,IAAI,QAAQ;IAItB,QAAQ;CAGT;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,UAAU;IAoBD,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAnB3C,mEAAmE;IACnE,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY;IAW3D,6EAA6E;IAC7E,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU;IAMzC,OAAO;IAEP,yCAAyC;IACzC,OAAO,IAAI,YAAY;IAIvB,0CAA0C;IAC1C,QAAQ,IAAI,YAAY;CAGzB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,QAAQ;IAEnB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAExB,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,GAAG,QAAQ;IAoBvF,2EAA2E;IAC3E,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ;IAKvC,OAAO;IAIP,2CAA2C;IAC3C,MAAM,IAAI,iBAAiB;IAI3B,gBAAgB,IAAI,OAAO;IAI3B;;;;OAIG;IACH,cAAc,IAAI,MAAM;IAMxB;;;;OAIG;IACH,QAAQ,IAAI,SAAS;IAKrB;;;;OAIG;IACH,YAAY,IAAI,SAAS;IAIzB,QAAQ;CAGT"}