@algorandfoundation/puya-ts 1.0.0-alpha.10

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 (242) hide show
  1. package/README.md +11 -0
  2. package/awst/index.d.ts +4 -0
  3. package/awst/intrinsic-factory.d.ts +35 -0
  4. package/awst/json-serialize-awst.d.ts +17 -0
  5. package/awst/models.d.ts +85 -0
  6. package/awst/node-factory.d.ts +90 -0
  7. package/awst/nodes.d.ts +841 -0
  8. package/awst/source-location.d.ts +21 -0
  9. package/awst/to-code-visitor.d.ts +87 -0
  10. package/awst/txn-fields.d.ts +84 -0
  11. package/awst/util.d.ts +2 -0
  12. package/awst/wtypes.d.ts +136 -0
  13. package/awst_build/base-visitor.d.ts +87 -0
  14. package/awst_build/constructor-visitor.d.ts +18 -0
  15. package/awst_build/context/awst-build-context.d.ts +72 -0
  16. package/awst_build/context/evaluation-context.d.ts +11 -0
  17. package/awst_build/context/switch-loop-context.d.ts +31 -0
  18. package/awst_build/context/unique-name-resolver.d.ts +14 -0
  19. package/awst_build/contract-data.d.ts +24 -0
  20. package/awst_build/contract-method-visitor.d.ts +20 -0
  21. package/awst_build/contract-visitor.d.ts +33 -0
  22. package/awst_build/decorator-visitor.d.ts +34 -0
  23. package/awst_build/eb/arc4/arrays.d.ts +31 -0
  24. package/awst_build/eb/arc4/uint-n-constructor-builder.d.ts +14 -0
  25. package/awst_build/eb/arc4-bare-method-decorator-builder.d.ts +19 -0
  26. package/awst_build/eb/assert-function-builder.d.ts +10 -0
  27. package/awst_build/eb/assert-match-function-builder.d.ts +8 -0
  28. package/awst_build/eb/biguint-expression-builder.d.ts +21 -0
  29. package/awst_build/eb/boolean-expression-builder.d.ts +15 -0
  30. package/awst_build/eb/bytes-expression-builder.d.ts +44 -0
  31. package/awst_build/eb/contract-builder.d.ts +19 -0
  32. package/awst_build/eb/ensure-budget.d.ts +8 -0
  33. package/awst_build/eb/folding.d.ts +5 -0
  34. package/awst_build/eb/free-subroutine-expression-builder.d.ts +22 -0
  35. package/awst_build/eb/index.d.ts +90 -0
  36. package/awst_build/eb/intrinsic-enum-builder.d.ts +9 -0
  37. package/awst_build/eb/iterable-iterator-expression-builder.d.ts +10 -0
  38. package/awst_build/eb/literal/array-literal-expression-builder.d.ts +18 -0
  39. package/awst_build/eb/literal/big-int-literal-expression-builder.d.ts +17 -0
  40. package/awst_build/eb/literal/conditional-expression-builder.d.ts +22 -0
  41. package/awst_build/eb/literal/object-expression-builder.d.ts +13 -0
  42. package/awst_build/eb/literal/object-literal-expression-builder.d.ts +28 -0
  43. package/awst_build/eb/literal-expression-builder.d.ts +27 -0
  44. package/awst_build/eb/log-function-builder.d.ts +7 -0
  45. package/awst_build/eb/namespace-builder.d.ts +9 -0
  46. package/awst_build/eb/native-array-expression-builder.d.ts +8 -0
  47. package/awst_build/eb/omitted-expression-builder.d.ts +9 -0
  48. package/awst_build/eb/op-module-builder.d.ts +25 -0
  49. package/awst_build/eb/reference/account.d.ts +15 -0
  50. package/awst_build/eb/reference/application.d.ts +12 -0
  51. package/awst_build/eb/reference/asset.d.ts +13 -0
  52. package/awst_build/eb/reference/base.d.ts +37 -0
  53. package/awst_build/eb/storage/box.d.ts +50 -0
  54. package/awst_build/eb/storage/global-state.d.ts +29 -0
  55. package/awst_build/eb/storage/local-state.d.ts +32 -0
  56. package/awst_build/eb/storage/util.d.ts +5 -0
  57. package/awst_build/eb/storage/value-proxy.d.ts +22 -0
  58. package/awst_build/eb/string-expression-builder.d.ts +27 -0
  59. package/awst_build/eb/transactions/group-transactions.d.ts +15 -0
  60. package/awst_build/eb/transactions/inner-transaction-params.d.ts +19 -0
  61. package/awst_build/eb/transactions/inner-transactions.d.ts +10 -0
  62. package/awst_build/eb/transactions/txn-fields.d.ts +1317 -0
  63. package/awst_build/eb/transactions/util.d.ts +5 -0
  64. package/awst_build/eb/tuple-expression-builder.d.ts +12 -0
  65. package/awst_build/eb/uint64-enum-type-builder.d.ts +13 -0
  66. package/awst_build/eb/uint64-expression-builder.d.ts +21 -0
  67. package/awst_build/eb/urange-function.d.ts +7 -0
  68. package/awst_build/eb/util/arg-parsing.d.ts +106 -0
  69. package/awst_build/eb/util/compare-bytes.d.ts +5 -0
  70. package/awst_build/eb/util/compare-uint64.d.ts +5 -0
  71. package/awst_build/eb/util/index.d.ts +19 -0
  72. package/awst_build/eb/util/require-constant-value.d.ts +4 -0
  73. package/awst_build/eb/void-expression-builder.d.ts +7 -0
  74. package/awst_build/function-visitor.d.ts +45 -0
  75. package/awst_build/index.d.ts +5 -0
  76. package/awst_build/lib/index.d.ts +2 -0
  77. package/awst_build/op-metadata.d.ts +27 -0
  78. package/awst_build/ptypes/arc4-types.d.ts +56 -0
  79. package/awst_build/ptypes/base.d.ts +31 -0
  80. package/awst_build/ptypes/index.d.ts +464 -0
  81. package/awst_build/ptypes/intrinsic-enum-type.d.ts +14 -0
  82. package/awst_build/ptypes/op-ptypes.d.ts +6 -0
  83. package/awst_build/ptypes/register.d.ts +2 -0
  84. package/awst_build/ptypes/transient-type-errors.d.ts +14 -0
  85. package/awst_build/source-file-visitor.d.ts +21 -0
  86. package/awst_build/subroutine-visitor.d.ts +10 -0
  87. package/awst_build/symbol-name.d.ts +10 -0
  88. package/awst_build/text-visitor.d.ts +20 -0
  89. package/awst_build/type-registry.d.ts +61 -0
  90. package/awst_build/type-resolver.d.ts +18 -0
  91. package/bin/run-cli.d.ts +2 -0
  92. package/bin/run-cli.mjs +21 -0
  93. package/bin/run-cli.mjs.map +1 -0
  94. package/cli.d.ts +1 -0
  95. package/cli.mjs +161 -0
  96. package/cli.mjs.map +1 -0
  97. package/compile-options.d.ts +23 -0
  98. package/constants.d.ts +20 -0
  99. package/errors.d.ts +46 -0
  100. package/index-GbFBpbmB.js +16444 -0
  101. package/index-GbFBpbmB.js.map +1 -0
  102. package/index.d.ts +31 -0
  103. package/index.mjs +16 -0
  104. package/index.mjs.map +1 -0
  105. package/logger.d.ts +39 -0
  106. package/node_modules/typescript/LICENSE.txt +55 -0
  107. package/node_modules/typescript/README.md +50 -0
  108. package/node_modules/typescript/SECURITY.md +41 -0
  109. package/node_modules/typescript/ThirdPartyNoticeText.txt +193 -0
  110. package/node_modules/typescript/bin/tsc +2 -0
  111. package/node_modules/typescript/bin/tsserver +2 -0
  112. package/node_modules/typescript/lib/cancellationToken.js +90 -0
  113. package/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +2087 -0
  114. package/node_modules/typescript/lib/de/diagnosticMessages.generated.json +2087 -0
  115. package/node_modules/typescript/lib/es/diagnosticMessages.generated.json +2087 -0
  116. package/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +2087 -0
  117. package/node_modules/typescript/lib/it/diagnosticMessages.generated.json +2087 -0
  118. package/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +2087 -0
  119. package/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +2087 -0
  120. package/node_modules/typescript/lib/lib.d.ts +22 -0
  121. package/node_modules/typescript/lib/lib.decorators.d.ts +386 -0
  122. package/node_modules/typescript/lib/lib.decorators.legacy.d.ts +22 -0
  123. package/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +41 -0
  124. package/node_modules/typescript/lib/lib.dom.d.ts +28087 -0
  125. package/node_modules/typescript/lib/lib.dom.iterable.d.ts +491 -0
  126. package/node_modules/typescript/lib/lib.es2015.collection.d.ts +147 -0
  127. package/node_modules/typescript/lib/lib.es2015.core.d.ts +597 -0
  128. package/node_modules/typescript/lib/lib.es2015.d.ts +28 -0
  129. package/node_modules/typescript/lib/lib.es2015.generator.d.ts +77 -0
  130. package/node_modules/typescript/lib/lib.es2015.iterable.d.ts +527 -0
  131. package/node_modules/typescript/lib/lib.es2015.promise.d.ts +81 -0
  132. package/node_modules/typescript/lib/lib.es2015.proxy.d.ts +128 -0
  133. package/node_modules/typescript/lib/lib.es2015.reflect.d.ts +144 -0
  134. package/node_modules/typescript/lib/lib.es2015.symbol.d.ts +46 -0
  135. package/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +326 -0
  136. package/node_modules/typescript/lib/lib.es2016.array.include.d.ts +116 -0
  137. package/node_modules/typescript/lib/lib.es2016.d.ts +21 -0
  138. package/node_modules/typescript/lib/lib.es2016.full.d.ts +23 -0
  139. package/node_modules/typescript/lib/lib.es2016.intl.d.ts +31 -0
  140. package/node_modules/typescript/lib/lib.es2017.d.ts +25 -0
  141. package/node_modules/typescript/lib/lib.es2017.date.d.ts +31 -0
  142. package/node_modules/typescript/lib/lib.es2017.full.d.ts +23 -0
  143. package/node_modules/typescript/lib/lib.es2017.intl.d.ts +44 -0
  144. package/node_modules/typescript/lib/lib.es2017.object.d.ts +49 -0
  145. package/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +135 -0
  146. package/node_modules/typescript/lib/lib.es2017.string.d.ts +45 -0
  147. package/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +53 -0
  148. package/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +77 -0
  149. package/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +53 -0
  150. package/node_modules/typescript/lib/lib.es2018.d.ts +24 -0
  151. package/node_modules/typescript/lib/lib.es2018.full.d.ts +24 -0
  152. package/node_modules/typescript/lib/lib.es2018.intl.d.ts +83 -0
  153. package/node_modules/typescript/lib/lib.es2018.promise.d.ts +30 -0
  154. package/node_modules/typescript/lib/lib.es2018.regexp.d.ts +37 -0
  155. package/node_modules/typescript/lib/lib.es2019.array.d.ts +79 -0
  156. package/node_modules/typescript/lib/lib.es2019.d.ts +24 -0
  157. package/node_modules/typescript/lib/lib.es2019.full.d.ts +24 -0
  158. package/node_modules/typescript/lib/lib.es2019.intl.d.ts +23 -0
  159. package/node_modules/typescript/lib/lib.es2019.object.d.ts +33 -0
  160. package/node_modules/typescript/lib/lib.es2019.string.d.ts +37 -0
  161. package/node_modules/typescript/lib/lib.es2019.symbol.d.ts +24 -0
  162. package/node_modules/typescript/lib/lib.es2020.bigint.d.ts +727 -0
  163. package/node_modules/typescript/lib/lib.es2020.d.ts +27 -0
  164. package/node_modules/typescript/lib/lib.es2020.date.d.ts +42 -0
  165. package/node_modules/typescript/lib/lib.es2020.full.d.ts +24 -0
  166. package/node_modules/typescript/lib/lib.es2020.intl.d.ts +474 -0
  167. package/node_modules/typescript/lib/lib.es2020.number.d.ts +28 -0
  168. package/node_modules/typescript/lib/lib.es2020.promise.d.ts +47 -0
  169. package/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +97 -0
  170. package/node_modules/typescript/lib/lib.es2020.string.d.ts +42 -0
  171. package/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +41 -0
  172. package/node_modules/typescript/lib/lib.es2021.d.ts +23 -0
  173. package/node_modules/typescript/lib/lib.es2021.full.d.ts +24 -0
  174. package/node_modules/typescript/lib/lib.es2021.intl.d.ts +166 -0
  175. package/node_modules/typescript/lib/lib.es2021.promise.d.ts +48 -0
  176. package/node_modules/typescript/lib/lib.es2021.string.d.ts +33 -0
  177. package/node_modules/typescript/lib/lib.es2021.weakref.d.ts +76 -0
  178. package/node_modules/typescript/lib/lib.es2022.array.d.ts +121 -0
  179. package/node_modules/typescript/lib/lib.es2022.d.ts +26 -0
  180. package/node_modules/typescript/lib/lib.es2022.error.d.ts +73 -0
  181. package/node_modules/typescript/lib/lib.es2022.full.d.ts +24 -0
  182. package/node_modules/typescript/lib/lib.es2022.intl.d.ts +121 -0
  183. package/node_modules/typescript/lib/lib.es2022.object.d.ts +26 -0
  184. package/node_modules/typescript/lib/lib.es2022.regexp.d.ts +39 -0
  185. package/node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts +39 -0
  186. package/node_modules/typescript/lib/lib.es2022.string.d.ts +25 -0
  187. package/node_modules/typescript/lib/lib.es2023.array.d.ts +924 -0
  188. package/node_modules/typescript/lib/lib.es2023.collection.d.ts +21 -0
  189. package/node_modules/typescript/lib/lib.es2023.d.ts +22 -0
  190. package/node_modules/typescript/lib/lib.es2023.full.d.ts +24 -0
  191. package/node_modules/typescript/lib/lib.es2023.intl.d.ts +56 -0
  192. package/node_modules/typescript/lib/lib.es5.d.ts +4585 -0
  193. package/node_modules/typescript/lib/lib.es6.d.ts +23 -0
  194. package/node_modules/typescript/lib/lib.esnext.array.d.ts +35 -0
  195. package/node_modules/typescript/lib/lib.esnext.collection.d.ts +106 -0
  196. package/node_modules/typescript/lib/lib.esnext.d.ts +29 -0
  197. package/node_modules/typescript/lib/lib.esnext.decorators.d.ts +28 -0
  198. package/node_modules/typescript/lib/lib.esnext.disposable.d.ts +193 -0
  199. package/node_modules/typescript/lib/lib.esnext.full.d.ts +24 -0
  200. package/node_modules/typescript/lib/lib.esnext.intl.d.ts +21 -0
  201. package/node_modules/typescript/lib/lib.esnext.iterator.d.ts +148 -0
  202. package/node_modules/typescript/lib/lib.esnext.object.d.ts +29 -0
  203. package/node_modules/typescript/lib/lib.esnext.promise.d.ts +35 -0
  204. package/node_modules/typescript/lib/lib.esnext.regexp.d.ts +25 -0
  205. package/node_modules/typescript/lib/lib.esnext.string.d.ts +29 -0
  206. package/node_modules/typescript/lib/lib.scripthost.d.ts +322 -0
  207. package/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +41 -0
  208. package/node_modules/typescript/lib/lib.webworker.d.ts +9410 -0
  209. package/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +23 -0
  210. package/node_modules/typescript/lib/lib.webworker.iterable.d.ts +288 -0
  211. package/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +2087 -0
  212. package/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +2087 -0
  213. package/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +2087 -0
  214. package/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +2087 -0
  215. package/node_modules/typescript/lib/tsc.js +130769 -0
  216. package/node_modules/typescript/lib/tsserver.js +623 -0
  217. package/node_modules/typescript/lib/tsserverlibrary.d.ts +17 -0
  218. package/node_modules/typescript/lib/tsserverlibrary.js +21 -0
  219. package/node_modules/typescript/lib/typesMap.json +497 -0
  220. package/node_modules/typescript/lib/typescript.d.ts +11329 -0
  221. package/node_modules/typescript/lib/typescript.js +196072 -0
  222. package/node_modules/typescript/lib/typingsInstaller.js +236 -0
  223. package/node_modules/typescript/lib/watchGuard.js +53 -0
  224. package/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json +2087 -0
  225. package/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json +2087 -0
  226. package/node_modules/typescript/package.json +121 -0
  227. package/package.json +43 -0
  228. package/parser/index.d.ts +13 -0
  229. package/parser/json-serialize-source-files.d.ts +2 -0
  230. package/parser/resolve-module-name-literals.d.ts +2 -0
  231. package/puya/build-compilation-set-mapping.d.ts +9 -0
  232. package/puya/index.d.ts +13 -0
  233. package/puya/options.d.ts +29 -0
  234. package/puya/run-child-proc.d.ts +5 -0
  235. package/util/base-32.d.ts +2 -0
  236. package/util/base-85.d.ts +10 -0
  237. package/util/default-map.d.ts +1 -0
  238. package/util/generate-temp-file.d.ts +9 -0
  239. package/util/index.d.ts +47 -0
  240. package/visitor/syntax-names.d.ts +441 -0
  241. package/visitor/visitor.d.ts +26 -0
  242. package/write-artifact.d.ts +12 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-GbFBpbmB.js","sources":["../src/constants.ts","../src/errors.ts","../src/util/base-32.ts","../src/util/index.ts","../src/util/base-85.ts","../src/awst/models.ts","../src/awst/source-location.ts","../src/awst/json-serialize-awst.ts","../src/logger.ts","../src/awst/nodes.ts","../src/awst/wtypes.ts","../src/awst/to-code-visitor.ts","../src/write-artifact.ts","../src/awst/node-factory.ts","../src/awst/util.ts","../src/awst_build/ptypes/base.ts","../src/awst_build/ptypes/transient-type-errors.ts","../src/awst_build/ptypes/intrinsic-enum-type.ts","../src/awst_build/ptypes/op-ptypes.ts","../src/awst_build/ptypes/index.ts","../src/awst_build/type-registry.ts","../src/awst_build/symbol-name.ts","../src/awst_build/type-resolver.ts","../src/awst_build/context/evaluation-context.ts","../src/util/default-map.ts","../src/awst_build/context/switch-loop-context.ts","../src/awst_build/context/unique-name-resolver.ts","../src/awst_build/context/awst-build-context.ts","../src/awst/intrinsic-factory.ts","../src/awst_build/lib/index.ts","../src/awst_build/eb/index.ts","../src/visitor/syntax-names.ts","../src/visitor/visitor.ts","../src/awst_build/eb/boolean-expression-builder.ts","../src/awst_build/ptypes/arc4-types.ts","../src/awst_build/eb/literal-expression-builder.ts","../src/awst_build/eb/util/index.ts","../src/awst_build/eb/tuple-expression-builder.ts","../src/awst_build/eb/literal/array-literal-expression-builder.ts","../src/awst_build/eb/util/arg-parsing.ts","../src/awst_build/eb/util/compare-uint64.ts","../src/awst_build/eb/uint64-expression-builder.ts","../src/awst_build/eb/biguint-expression-builder.ts","../src/awst_build/eb/folding.ts","../src/awst_build/eb/literal/big-int-literal-expression-builder.ts","../src/awst_build/eb/literal/conditional-expression-builder.ts","../src/awst_build/eb/literal/object-expression-builder.ts","../src/awst_build/eb/literal/object-literal-expression-builder.ts","../src/awst_build/eb/omitted-expression-builder.ts","../src/awst_build/eb/string-expression-builder.ts","../src/awst_build/text-visitor.ts","../src/awst_build/base-visitor.ts","../src/awst_build/eb/free-subroutine-expression-builder.ts","../src/awst_build/eb/void-expression-builder.ts","../src/awst_build/eb/contract-builder.ts","../src/awst_build/eb/native-array-expression-builder.ts","../src/awst_build/function-visitor.ts","../src/awst_build/contract-method-visitor.ts","../src/awst_build/constructor-visitor.ts","../src/awst_build/eb/util/require-constant-value.ts","../src/awst_build/eb/arc4-bare-method-decorator-builder.ts","../src/awst_build/decorator-visitor.ts","../src/awst_build/contract-data.ts","../src/awst_build/eb/storage/util.ts","../src/awst_build/eb/storage/value-proxy.ts","../src/awst_build/eb/storage/box.ts","../src/awst_build/eb/storage/global-state.ts","../src/awst_build/eb/storage/local-state.ts","../src/awst_build/contract-visitor.ts","../src/awst_build/subroutine-visitor.ts","../src/awst_build/source-file-visitor.ts","../src/awst_build/index.ts","../src/awst_build/eb/iterable-iterator-expression-builder.ts","../src/awst_build/eb/arc4/arrays.ts","../src/awst_build/eb/arc4/uint-n-constructor-builder.ts","../src/awst_build/eb/assert-function-builder.ts","../src/awst_build/eb/assert-match-function-builder.ts","../src/awst_build/eb/util/compare-bytes.ts","../src/awst_build/eb/bytes-expression-builder.ts","../src/awst_build/eb/ensure-budget.ts","../src/awst_build/eb/intrinsic-enum-builder.ts","../src/awst_build/eb/log-function-builder.ts","../src/awst_build/eb/namespace-builder.ts","../src/awst_build/op-metadata.ts","../src/awst_build/eb/op-module-builder.ts","../src/awst_build/eb/reference/base.ts","../src/awst_build/eb/reference/account.ts","../src/awst_build/eb/reference/application.ts","../src/awst_build/eb/reference/asset.ts","../src/awst/txn-fields.ts","../src/awst_build/eb/transactions/txn-fields.ts","../src/awst_build/eb/transactions/util.ts","../src/awst_build/eb/transactions/group-transactions.ts","../src/awst_build/eb/transactions/inner-transactions.ts","../src/awst_build/eb/transactions/inner-transaction-params.ts","../src/awst_build/eb/uint64-enum-type-builder.ts","../src/awst_build/eb/urange-function.ts","../src/awst_build/ptypes/register.ts","../src/parser/resolve-module-name-literals.ts","../src/parser/index.ts","../src/parser/json-serialize-source-files.ts","../src/util/generate-temp-file.ts","../src/puya/build-compilation-set-mapping.ts","../src/puya/options.ts","../src/puya/run-child-proc.ts","../src/puya/index.ts","../src/index.ts"],"sourcesContent":["const algoTsPackage = '@algorandfoundation/algorand-typescript'\n\nexport const Constants = {\n approvalProgramMethodName: 'approvalProgram',\n clearStateProgramMethodName: 'clearStateProgram',\n algoTsPackage,\n arc4ModuleName: `${algoTsPackage}/arc4/index.d.ts`,\n opModuleName: `${algoTsPackage}/op.d.ts`,\n baseContractModuleName: `${algoTsPackage}/base-contract.d.ts`,\n utilModuleName: `${algoTsPackage}/util.d.ts`,\n referenceModuleName: `${algoTsPackage}/reference.d.ts`,\n stateModuleName: `${algoTsPackage}/state.d.ts`,\n boxModuleName: `${algoTsPackage}/box.d.ts`,\n transactionsModuleName: `${algoTsPackage}/transactions.d.ts`,\n gtxnModuleName: `${algoTsPackage}/gtxn.d.ts`,\n itxnModuleName: `${algoTsPackage}/itxn.d.ts`,\n primitivesModuleName: `${algoTsPackage}/primitives.d.ts`,\n arc4EncodedTypesModuleName: `${algoTsPackage}/arc4/encoded-types.d.ts`,\n arc4BareDecoratorName: 'arc4.baremethod',\n arc4AbiDecoratorName: 'arc4.abimethod',\n\n constructorMethodName: 'constructor',\n} as const\n","import type { SourceLocation } from './awst/source-location'\nimport type { PType, PTypeOrClass } from './awst_build/ptypes'\n\ntype PuyaErrorOptions = {\n cause?: Error\n sourceLocation?: SourceLocation\n}\n\n/**\n * Thrown when the awst visitor cannot return a meaningful value\n */\nexport class AwstBuildFailureError extends Error {\n constructor() {\n super('AWST build failure. See previous errors')\n }\n}\nexport class PuyaError extends Error {\n readonly sourceLocation: SourceLocation | undefined\n constructor(message?: string, options?: PuyaErrorOptions) {\n super(message, options)\n this.sourceLocation = options?.sourceLocation\n }\n}\n\nexport class CodeError extends PuyaError {\n static unexpectedUnhandledArgs({ sourceLocation }: { sourceLocation: SourceLocation }) {\n return new CodeError('Unexpected/unhandled args', {\n sourceLocation,\n })\n }\n static unexpectedTypeArgs({ sourceLocation }: { sourceLocation: SourceLocation }) {\n return new CodeError('Function does not accept type arguments', {\n sourceLocation,\n })\n }\n static expectedCompileTimeConstant({ sourceLocation }: { sourceLocation: SourceLocation }) {\n return new CodeError('Expected compile time constant', {\n sourceLocation,\n })\n }\n static invalidAssignmentTarget({ sourceLocation, name }: { sourceLocation: SourceLocation; name: string }) {\n return new CodeError(`${name} is not a valid assignment target`, {\n sourceLocation,\n })\n }\n static cannotResolveToType({\n sourceType,\n targetType,\n sourceLocation,\n }: {\n sourceLocation: SourceLocation\n sourceType: PType\n targetType: PTypeOrClass\n }) {\n const targetName = targetType instanceof Function ? targetType.name : targetType.fullName\n return new CodeError(`Cannot resolve ${sourceType} to ${targetName}`, { sourceLocation })\n }\n}\nexport class TodoError extends PuyaError {}\nexport class InternalError extends PuyaError {}\nexport class NotSupported extends CodeError {\n constructor(featureName: string, options?: PuyaErrorOptions) {\n super(`Not Supported: ${featureName}`, options)\n }\n}\n\nexport const throwError = (error: Error): never => {\n throw error\n}\nexport const wrapInCodeError = <T>(func: () => T, sourceLocation: SourceLocation) => {\n try {\n return func()\n } catch (e) {\n if (e instanceof Error) {\n throw new CodeError(e.message, { sourceLocation, cause: e })\n } else {\n throw new CodeError(String(e), { sourceLocation })\n }\n }\n}\n","const BASE32_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'.split('')\n\nconst CHAR_TO_NUM = BASE32_ALPHABET.reduce((acc, cur, index) => ((acc[cur] = index), acc), {} as Record<string, number>)\n\nexport const base32ToUint8Array = (value: string): Uint8Array => {\n let allChars = value\n .split('')\n .filter((c) => c !== '=')\n .map((c) => {\n const cUpper = c.toUpperCase()\n if (cUpper in CHAR_TO_NUM) return CHAR_TO_NUM[cUpper]\n throw new Error(`Invalid base32 char ${c}`)\n })\n const bytes = new Array<number>()\n while (allChars.length) {\n const [a, b, c, d, e, f, g, h, ...rest] = allChars\n if (a === undefined || b === undefined) break\n bytes.push(((a << 3) | (b >>> 2)) & 255)\n if (c === undefined || d === undefined) break\n bytes.push(((b << 6) | (c << 1) | (d >>> 4)) & 255)\n if (e === undefined) break\n bytes.push(((d << 4) | (e >>> 1)) & 255)\n if (f === undefined || g === undefined) break\n bytes.push(((e << 7) | (f << 2) | (g >>> 3)) & 255)\n if (h === undefined) break\n bytes.push(((g << 5) | h) & 255)\n allChars = rest\n }\n return new Uint8Array(bytes)\n}\n\nexport const uint8ArrayToBase32 = (value: Uint8Array): string => {\n let allBytes = Array.from(value)\n let base32str = ''\n while (allBytes.length) {\n const [a, b, c, d, e, ...rest] = allBytes ?? [0, 0, 0, 0, 0]\n\n if (allBytes.length < 1) break\n base32str += BASE32_ALPHABET[a >>> 3]\n base32str += BASE32_ALPHABET[((a << 2) | ((b || 0) >>> 6)) & 31]\n if (allBytes.length < 2) break\n base32str += BASE32_ALPHABET[(b >>> 1) & 31]\n base32str += BASE32_ALPHABET[((b << 4) | (c >>> 4)) & 31]\n if (allBytes.length < 3) break\n base32str += BASE32_ALPHABET[((c << 1) | (d >>> 7)) & 31]\n if (allBytes.length < 4) break\n base32str += BASE32_ALPHABET[(d >>> 2) & 31]\n base32str += BASE32_ALPHABET[((d << 3) | (e >>> 5)) & 31]\n if (allBytes.length < 5) break\n base32str += BASE32_ALPHABET[e & 31]\n allBytes = rest\n }\n return base32str\n}\n","import { Buffer } from 'node:buffer'\nimport fs from 'node:fs'\nimport { TextDecoder } from 'node:util'\nimport upath from 'upath'\nimport type { SourceLocation } from '../awst/source-location'\nimport { Constants } from '../constants'\nimport { CodeError, InternalError } from '../errors'\nimport type { DeliberateAny } from '../typescript-helpers'\n\nexport { base32ToUint8Array, uint8ArrayToBase32 } from './base-32'\n\nclass InvariantError extends Error {}\nexport function invariant(condition: unknown, message: string): asserts condition {\n if (!condition) {\n throw new InvariantError(message)\n }\n}\n\nexport function codeInvariant(condition: unknown, message: string, sourceLocation?: SourceLocation): asserts condition {\n if (!condition) {\n throw new CodeError(message, {\n sourceLocation,\n })\n }\n}\n\nexport const convertEnum = <TEnumIn, TEnumOut, TKeys extends string>(\n value: TEnumIn,\n fromEnum: Record<TKeys, TEnumIn>,\n toEnum: Record<TKeys, TEnumOut>,\n): TEnumOut => {\n const keyOfValue = Object.entries(fromEnum).find(([, v]) => v === value)?.[0]\n if (!keyOfValue) {\n // missing value\n throw new Error(`key missing: ${value}`)\n }\n return toEnum[keyOfValue as keyof typeof toEnum]\n}\n\nexport const tryConvertEnum = <TEnumIn, TEnumOut, TKeys extends string>(\n value: TEnumIn,\n fromEnum: Record<TKeys, TEnumIn>,\n toEnum: Record<string, TEnumOut>,\n): TEnumOut | undefined => {\n const keyOfValue = Object.entries(fromEnum).find(([, v]) => v === value)?.[0]\n if (!keyOfValue) {\n return undefined\n }\n return toEnum[keyOfValue as keyof typeof toEnum]\n}\n\nexport const expandMaybeArray = <T>(maybeArray: T | T[]): T[] => {\n return Array.isArray(maybeArray) ? maybeArray : [maybeArray]\n}\n\nexport const uint8ArrayToBase64 = (value: Uint8Array): string => Buffer.from(value).toString('base64')\n\nexport const hexToUint8Array = (value: string): Uint8Array => {\n invariant(value.length % 2 === 0, 'Hex string must have even number of characters')\n return Uint8Array.from(Buffer.from(value, 'hex'))\n}\n\nexport const base64ToUint8Array = (value: string): Uint8Array => {\n return Uint8Array.from(Buffer.from(value, 'base64'))\n}\n\nexport const utf8ToUint8Array = (value: string): Uint8Array => {\n const encoder = new TextEncoder()\n return encoder.encode(value)\n}\n\nexport const uint8ArrayToBigInt = (v: Uint8Array): bigint => {\n // Assume big-endian\n return Array.from(v)\n .toReversed()\n .map((byte_value, i): bigint => BigInt(byte_value) << BigInt(i * 8))\n .reduce((a, b) => a + b, 0n)\n}\n\nexport const uint8ArrayToHex = (value: Uint8Array): string => Buffer.from(value).toString('hex')\n\nexport const uint8ArrayToUtf8 = (value: Uint8Array): string => {\n const decoder = new TextDecoder()\n return decoder.decode(value)\n}\n\nexport const bigIntToUint8Array = (val: bigint, fixedSize: number | 'dynamic' = 'dynamic'): Uint8Array => {\n const maxBytes = fixedSize === 'dynamic' ? 64 : fixedSize\n\n let hex = val.toString(16)\n\n // Pad the hex with zeros so it matches the size in bytes\n if (fixedSize !== 'dynamic' && hex.length !== fixedSize * 2) {\n hex = hex.padStart(fixedSize * 2, '0')\n } else if (hex.length % 2 === 1) {\n // Pad to 'whole' byte\n hex = `0${hex}`\n }\n if (hex.length > maxBytes * 2) {\n throw new InternalError(`Cannot encode ${val} as ${maxBytes} bytes as it would overflow`)\n }\n const byteArray = new Uint8Array(hex.length / 2)\n for (let i = 0, j = 0; i < hex.length / 2; i++, j += 2) {\n byteArray[i] = parseInt(hex.slice(j, j + 2), 16)\n }\n return byteArray\n}\n\nexport const hasFlags = <T extends number>(value: T, flags: T): boolean => (value & flags) === flags\nexport const intersectsFlags = <T extends number>(value: T, flags: T): boolean => Boolean(value & flags)\n\nexport function* enumerate<T>(iterable: Iterable<T>): IterableIterator<readonly [number, T]> {\n let i = 0\n for (const item of iterable) {\n yield [i, item]\n i++\n }\n}\n\nexport function toSubScript(num: number) {\n const subNumbers = ['\\u2080', '\\u2081', '\\u2082', '\\u2083', '\\u2084', '\\u2085', '\\u2086', '\\u2087', '\\u2088', '\\u2089']\n return num\n .toFixed(0)\n .split('')\n .map((x) => subNumbers[parseInt(x)])\n .join('')\n}\n\nexport function instanceOfAny<T extends Array<{ new (...args: DeliberateAny[]): DeliberateAny }>>(\n x: unknown,\n ...types: T\n): x is InstanceType<T[number]> {\n return types.some((t) => x instanceof t)\n}\n\n/**\n * Normalise a file path to only include relevant segments.\n *\n * - Anything in /node_modules/ is truncated to <package-name>/path.ext\n * - Anything in workingDirectory is truncated relative to the workingDirectory\n * - Forward slashes are used to segment paths\n * @param filePath\n * @param workingDirectory\n */\nexport function normalisePath(filePath: string, workingDirectory: string): string {\n const localPackageName = /packages\\/algo-ts\\/dist\\/(.*)$/.exec(filePath)\n if (localPackageName) {\n return `${Constants.algoTsPackage}/${localPackageName[1]}`\n }\n const nodeModuleName = /node_modules\\/(.*)$/.exec(filePath)\n if (nodeModuleName) {\n return nodeModuleName[1]\n }\n const cwd = upath.normalize(`${workingDirectory}/`)\n const normalizedPath = upath.normalize(filePath)\n const moduleName = normalizedPath.startsWith(cwd) ? normalizedPath.slice(cwd.length) : normalizedPath\n return moduleName.replaceAll('\\\\', '/')\n}\n\ntype SortDir = 'asc' | 'desc'\nexport const sortBy =\n <T, TKey>(keySelector: (item: T) => TKey, dir: SortDir = 'asc') =>\n (a: T, b: T) => {\n const keyA = keySelector(a)\n const keyB = keySelector(b)\n return (dir === 'desc' ? -1 : 1) * (keyA < keyB ? -1 : keyA > keyB ? 1 : 0)\n }\n/**\n * Can be used to filter a collection to a set of distinct items as determined by a specified key.\n * @param keySelector A lambda which when given an item, returns the items unique identifier\n *\n * Usage:\n *\n * ```\n * const distinctItems = nonDistinctItems.filter(distinct(x => x.uniqueId))\n * ```\n */\nexport const distinct = <T>(keySelector?: (item: T) => unknown) => {\n const ks = keySelector || ((x: T) => x)\n const set = new Set()\n return (item: T) => {\n if (set.has(ks(item))) {\n return false\n }\n\n set.add(ks(item))\n return true\n }\n}\n\nexport function mkDirIfNotExists(dir: string) {\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir, { recursive: true })\n }\n}\n","function positiveMod(x: number, m: number) {\n return ((x % m) + m) % m\n}\nfunction repeat<T>(c: T, n: number): T[] {\n return new Array<T>(n).fill(c)\n}\nfunction* batchBytesToUintN(bytes: Uint8Array, n: number): Generator<bigint> {\n const numberBytes = n / 8\n for (let i = 0; i < bytes.length / numberBytes; i += 1) {\n yield new Array(numberBytes).fill(null).reduce((acc, _, index) => {\n const offset = index + i * numberBytes\n if (offset >= bytes.length) {\n throw new Error('Needs padding')\n }\n return (acc << 8n) + BigInt(bytes[offset])\n }, 0n)\n }\n}\n\n/**\n * This implementation of base85 encoding matches python's base64.b85encode(...) function which is based on the character set of rfc1924\n * but supports arbitrary sized input.\n *\n * It IS NOT an ascii85 implementation\n */\nexport function buildBase85Encoder() {\n const b85Alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!#$%&()*+-;<=>?@^_`{|}~'\n const b85Chars = b85Alphabet.split('')\n const b85DoubleChars = b85Chars.flatMap((c) => b85Chars.map((c2) => c + c2))\n\n function encode(b: Uint8Array, chars: string[], doubleChars: string[]) {\n const padding = positiveMod(-b.length, 4)\n if (padding) {\n b = new Uint8Array([...b, ...repeat(0, padding)])\n }\n let result = ''\n for (const word of batchBytesToUintN(b, 4 * 8)) {\n result += doubleChars[Number(word / 85n ** 3n)]\n result += doubleChars[Number((word / 85n) % 85n ** 2n)]\n result += chars[Number(word % 85n)]\n }\n return result.slice(0, result.length - padding)\n }\n\n return {\n encode(b: Uint8Array) {\n return encode(b, b85Chars, b85DoubleChars)\n },\n encodeUtf8(s: string) {\n const b = new TextEncoder().encode(s)\n return this.encode(b)\n },\n }\n}\n","import type { ContractClassPType } from '../awst_build/ptypes'\nimport type { Props } from '../typescript-helpers'\nimport type { SourceLocation } from './source-location'\n\nexport enum OnCompletionAction {\n NoOp = 0,\n OptIn = 1,\n CloseOut = 2,\n ClearState = 3,\n UpdateApplication = 4,\n DeleteApplication = 5,\n}\n\nexport enum ARC4CreateOption {\n Allow = 1,\n Require = 2,\n Disallow = 3,\n}\n\nclass ModelBase {\n /**\n * This field prevents us from accidentally passing an object literal with structural equality to\n * a model class instead of any instance of the class, which would stuff up the serialization\n * @private\n */\n #isModel = true\n}\n\nexport class ARC4BareMethodConfig extends ModelBase {\n readonly sourceLocation: SourceLocation | undefined\n readonly allowedCompletionTypes: OnCompletionAction[]\n readonly create: ARC4CreateOption\n readonly isBare = true as const\n constructor(props: Omit<Props<ARC4BareMethodConfig>, 'isBare'>) {\n super()\n this.sourceLocation = props.sourceLocation\n this.allowedCompletionTypes = props.allowedCompletionTypes\n this.create = props.create\n }\n}\n\nexport type DefaultArgumentSource =\n | {\n source: 'constant'\n value: string | bigint | number | boolean | Uint8Array\n }\n | {\n source: 'global-state'\n memberName: string\n }\n | {\n source: 'local-state'\n memberName: string\n }\n | {\n source: 'abi-method'\n memberName: string\n }\n\nexport class ARC4ABIMethodConfig extends ModelBase {\n readonly sourceLocation: SourceLocation | undefined\n readonly name: string\n readonly isBare = false as const\n readonly create: ARC4CreateOption\n readonly readonly: boolean\n readonly allowedCompletionTypes: OnCompletionAction[]\n readonly defaultArgs: Record<string, DefaultArgumentSource>\n readonly structs: Record<string, ARC32StructDef>\n constructor(props: Omit<Props<ARC4ABIMethodConfig>, 'isBare'>) {\n super()\n this.sourceLocation = props.sourceLocation\n this.name = props.name\n this.create = props.create\n this.readonly = props.readonly\n this.allowedCompletionTypes = props.allowedCompletionTypes\n this.defaultArgs = props.defaultArgs\n this.structs = props.structs\n }\n}\n\nexport interface ARC32StructDef {\n name: string\n elements: [...[string, string][]]\n}\n\nexport class ContractReference extends ModelBase {\n constructor({ className, moduleName }: { className: string; moduleName: string }) {\n super()\n this.className = className\n this.moduleName = moduleName\n }\n readonly className: string\n readonly moduleName: string\n\n get id() {\n return `${this.moduleName}::${this.className}`\n }\n\n toString(): string {\n return this.id\n }\n\n static fromPType(contractPType: ContractClassPType): ContractReference {\n return new ContractReference({\n className: contractPType.name,\n moduleName: contractPType.module,\n })\n }\n}\nexport class LogicSigReference extends ModelBase {\n constructor({ name, moduleName }: { name: string; moduleName: string }) {\n super()\n this.name = name\n this.moduleName = moduleName\n }\n readonly name: string\n readonly moduleName: string\n\n get id() {\n return `${this.moduleName}::${this.name}`\n }\n\n toString(): string {\n return this.id\n }\n}\nexport type CompilationSet = ReadonlyArray<ContractReference | LogicSigReference>\n\nexport enum TransactionKind {\n pay = 1,\n keyreg = 2,\n acfg = 3,\n axfer = 4,\n afrz = 5,\n appl = 6,\n}\n","import type ts from 'typescript'\nimport { invariant, normalisePath } from '../util'\n\nexport class SourceLocation {\n file: string\n line: number\n endLine: number\n column: number\n endColumn: number\n\n constructor(props: { file: string; line: number; endLine: number; column: number; endColumn: number }) {\n this.file = props.file\n this.line = props.line\n this.endLine = props.endLine\n this.column = props.column\n this.endColumn = props.endColumn\n }\n\n static fromNode(sourceFile: ts.SourceFile, node: ts.Node, programDirectory: string): SourceLocation {\n const startPos = node.getStart(sourceFile)\n const width = node.getWidth(sourceFile)\n\n const startLoc = sourceFile.getLineAndCharacterOfPosition(startPos)\n const endLoc = sourceFile.getLineAndCharacterOfPosition(startPos + width)\n\n return new SourceLocation({\n file: normalisePath(sourceFile.fileName, programDirectory),\n line: startLoc.line + 1,\n endLine: endLoc.line + 1,\n column: startLoc.character,\n endColumn: endLoc.character,\n })\n }\n\n static fromFile(sourceFile: ts.SourceFile, programDirectory: string): SourceLocation {\n return new SourceLocation({\n file: normalisePath(sourceFile.fileName, programDirectory),\n line: 1,\n endLine: 1,\n column: 1,\n endColumn: 1,\n })\n }\n\n static fromTextRange(sourceFile: ts.SourceFile, textRange: ts.TextRange, programDirectory: string): SourceLocation {\n const startLoc = sourceFile.getLineAndCharacterOfPosition(textRange.pos)\n const endLoc = sourceFile.getLineAndCharacterOfPosition(textRange.end)\n\n return new SourceLocation({\n file: normalisePath(sourceFile.fileName, programDirectory),\n line: startLoc.line + 1,\n endLine: endLoc.line + 1,\n column: startLoc.character,\n endColumn: endLoc.character,\n })\n }\n\n static fromDiagnostic(diagnostic: ts.DiagnosticWithLocation, programDirectory: string): SourceLocation {\n const startLoc = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start)\n\n return new SourceLocation({\n file: normalisePath(diagnostic.file.fileName, programDirectory),\n line: startLoc.line + 1,\n endLine: startLoc.line + 1,\n column: startLoc.character,\n endColumn: startLoc.character,\n })\n }\n\n toString() {\n return `${this.file}:${this.line}:${this.column + 1}`\n }\n\n static fromLocations(...sourceLocation: SourceLocation[]): SourceLocation {\n const [first, ...rest] = sourceLocation\n invariant(first && rest.every((r) => r.file === first.file), 'All locations must of the same file')\n if (rest.length === 0) return first\n return sourceLocation.reduce((acc, cur) => {\n return new SourceLocation({\n file: acc.file,\n line: Math.min(acc.line, cur.line),\n endLine: Math.max(acc.endLine, cur.endLine),\n column: acc.line === cur.line ? Math.min(acc.column, cur.column) : acc.line < cur.line ? acc.column : cur.column,\n endColumn:\n acc.endLine === cur.endLine ? Math.max(acc.endColumn, cur.endColumn) : acc.endLine > cur.endLine ? acc.endColumn : cur.endColumn,\n })\n })\n }\n}\n","import { snakeCase } from 'change-case'\nimport path from 'node:path'\nimport { Constants } from '../constants'\nimport { invariant } from '../util'\nimport { buildBase85Encoder } from '../util/base-85'\nimport { ContractReference, LogicSigReference } from './models'\nimport type { RootNode } from './nodes'\nimport { SourceLocation } from './source-location'\n\nexport class SnakeCaseSerializer<T> {\n constructor(private readonly spaces = 2) {}\n public serialize(obj: T): string {\n return JSON.stringify(obj, (k, v) => this.serializerFunction(k, v), this.spaces)\n }\n\n protected serializerFunction(key: string, value: unknown): unknown {\n if (value instanceof Object && value.constructor.name !== 'Date' && value.constructor.name !== 'Object') {\n return {\n ...Object.fromEntries(Object.entries(value).map(([key, value]) => [snakeCase(key), value])),\n }\n }\n return value\n }\n}\n\nexport class AwstSerializer extends SnakeCaseSerializer<RootNode[]> {\n constructor(\n private options?: {\n sourcePaths?: 'absolute' | 'relative'\n programDirectory?: string\n },\n ) {\n super()\n }\n private b85 = buildBase85Encoder()\n\n protected serializerFunction(key: string, value: unknown): unknown {\n if (typeof value === 'bigint') {\n return `${value}`\n }\n if (value instanceof Set) {\n return Array.from(value.keys())\n }\n if (value instanceof Array) {\n return value\n }\n if (value instanceof Map) {\n if (value.size === 0) return {}\n const keyType = typeof value.keys().next().value\n if (keyType === 'string' || keyType === 'number') {\n return Object.fromEntries(value.entries())\n }\n if (keyType === 'bigint') {\n return Object.fromEntries(Array.from(value.entries()).map(([k, v]) => [`${k}`, v]))\n }\n return Array.from(value.entries())\n }\n if (value instanceof ContractReference || value instanceof LogicSigReference) {\n return value.toString()\n }\n if (value instanceof SourceLocation) {\n let filePath: string = value.file\n if (this.options?.sourcePaths === 'absolute') {\n invariant(this.options.programDirectory, 'Program directory must be supplied for absolute paths')\n if (value.file.startsWith(Constants.algoTsPackage)) {\n filePath = path.join(this.options.programDirectory, 'node_modules', value.file)\n } else {\n filePath = path.join(this.options.programDirectory, value.file)\n }\n }\n return {\n ...(super.serializerFunction(key, value) as object),\n file: filePath,\n }\n }\n if (value instanceof Uint8Array) {\n return this.b85.encode(value)\n }\n\n if (value instanceof Object && value.constructor.name !== 'Object') {\n return {\n _type: value.constructor.name,\n ...(super.serializerFunction(key, value) as object),\n }\n }\n return super.serializerFunction(key, value)\n }\n}\n\nexport function jsonSerializeAwst(awst: RootNode[]): string {\n return new AwstSerializer().serialize(awst)\n}\n","import chalk from 'chalk'\nimport { SourceLocation } from './awst/source-location'\nimport { AwstBuildFailureError, CodeError, PuyaError, TodoError } from './errors'\n\ntype ColorFn = (text: string) => string\nconst levelConfig: Record<LogEvent['level'], { colorFn: ColorFn; writeFn: (...args: unknown[]) => void; order: number }> = {\n /* eslint-disable no-console */\n debug: { colorFn: chalk.green, writeFn: console.debug, order: 0 },\n info: { colorFn: chalk.green, writeFn: console.info, order: 1 },\n warn: { colorFn: chalk.yellow, writeFn: console.warn, order: 2 },\n error: { colorFn: chalk.red, writeFn: console.error, order: 3 },\n critical: { colorFn: chalk.red, writeFn: console.error, order: 4 },\n /* eslint-enable no-console */\n}\n\ntype NodeOrSourceLocation = SourceLocation | { sourceLocation: SourceLocation }\n\nexport enum LogLevel {\n Error = 'error',\n Info = 'info',\n Warn = 'warn',\n Debug = 'debug',\n Critical = 'critical',\n}\n\nexport type LogEvent = {\n level: LogLevel\n message: string\n sourceLocation: SourceLocation | undefined\n}\n\nclass PuyaLogger {\n private logEvents: LogEvent[] = []\n private minLogLevel: LogLevel = LogLevel.Debug\n\n public configure(options?: { outputToConsole?: boolean; minLogLevel?: LogLevel }) {\n if (options?.outputToConsole !== undefined) this.outputToConsole = options.outputToConsole\n if (options?.minLogLevel !== undefined) {\n this.minLogLevel = options.minLogLevel\n }\n }\n\n outputToConsole: boolean = true\n constructor() {}\n\n private addLog(level: LogEvent['level'], source: NodeOrSourceLocation | undefined, message: string) {\n const config = levelConfig[level]\n if (config.order < levelConfig[this.minLogLevel].order) return\n\n const logEvent: LogEvent = {\n sourceLocation: source ? (source instanceof SourceLocation ? source : source.sourceLocation) : undefined,\n message,\n level,\n }\n this.logEvents.push(logEvent)\n if (!this.outputToConsole) return\n\n let logText = `${config.colorFn(logEvent.level)}: ${logEvent.message}`\n if (logEvent.sourceLocation) {\n logText = `${logEvent.sourceLocation} ${logText}`\n }\n config.writeFn(logText)\n }\n\n reset(): void {\n this.logEvents = []\n }\n\n hasErrors(): boolean {\n return this.logEvents.some((e) => e.level === 'error')\n }\n\n export(): LogEvent[] {\n return this.logEvents.slice()\n }\n\n error(error: Error): void\n error(source: NodeOrSourceLocation | undefined, message: string): void\n error(source: NodeOrSourceLocation | undefined | Error, message?: string): void {\n if (source instanceof Error) {\n const stack = source instanceof CodeError ? '' : source.stack\n this.addLog(LogLevel.Error, tryGetSourceLocationFromError(source), `${source.message} \\n${stack}`)\n if (source.cause) {\n this.addLog(LogLevel.Error, tryGetSourceLocationFromError(source.cause), `Caused by: ${source.cause}`)\n }\n } else {\n this.addLog(LogLevel.Error, source, message ?? '')\n }\n }\n info(source: NodeOrSourceLocation | undefined, message: string): void {\n this.addLog(LogLevel.Info, source, message)\n }\n debug(source: NodeOrSourceLocation | undefined, message: string): void {\n this.addLog(LogLevel.Debug, source, message)\n }\n warn(source: NodeOrSourceLocation | undefined, message: string): void {\n this.addLog(LogLevel.Warn, source, message)\n }\n fatal(source: NodeOrSourceLocation | undefined, message: string): void {\n this.addLog(LogLevel.Critical, source, message)\n }\n}\n\nconst tryGetSourceLocationFromError = (error: unknown): SourceLocation | undefined => {\n if (error instanceof PuyaError) {\n return error.sourceLocation\n }\n return undefined\n}\n\nexport const logger = new PuyaLogger()\n\nexport const logPuyaExceptions = <T>(action: () => T, sourceLocation: SourceLocation): T => {\n try {\n return action()\n } catch (e) {\n if (e instanceof TodoError) {\n logger.warn(e.sourceLocation ?? sourceLocation, `TODO: ${e.message}`)\n } else if (e instanceof PuyaError) {\n logger.error(e.sourceLocation ?? sourceLocation, e.message)\n } else {\n throw e\n }\n throw new AwstBuildFailureError()\n }\n}\n","/* AUTOGENERATED FILE - DO NOT EDIT (see puya/scripts/generate_ts_nodes.py) */\nimport { classes } from 'polytype'\nimport type { Props } from '../typescript-helpers'\nimport type { ARC4ABIMethodConfig, ARC4BareMethodConfig, ContractReference, LogicSigReference } from './models'\nimport type { SourceLocation } from './source-location'\nimport type { TxnField } from './txn-fields'\nimport type * as wtypes from './wtypes'\n\nexport class SubroutineID {\n constructor(props: Props<SubroutineID>) {\n this.target = props.target\n }\n target: string\n}\nexport abstract class Node {\n constructor(props: Props<Node>) {\n this.sourceLocation = props.sourceLocation\n }\n sourceLocation: SourceLocation\n}\nexport abstract class Statement extends Node {\n constructor(props: Props<Statement>) {\n super(props)\n }\n abstract accept<T>(visitor: StatementVisitor<T>): T\n}\nexport abstract class Expression extends Node {\n constructor(props: Props<Expression>) {\n super(props)\n this.wtype = props.wtype\n }\n wtype: wtypes.WType\n abstract accept<T>(visitor: ExpressionVisitor<T>): T\n}\nexport class ExpressionStatement extends Statement {\n constructor(props: Props<ExpressionStatement>) {\n super(props)\n this.expr = props.expr\n this.sourceLocation = props.sourceLocation\n }\n expr: Expression\n sourceLocation: SourceLocation\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitExpressionStatement(this)\n }\n}\nexport class Block extends Statement {\n constructor(props: Props<Block>) {\n super(props)\n this.body = props.body\n this.label = props.label\n this.comment = props.comment\n }\n body: Array<Statement>\n label: string | null\n comment: string | null\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitBlock(this)\n }\n}\nexport class Goto extends Statement {\n constructor(props: Props<Goto>) {\n super(props)\n this.target = props.target\n }\n target: string\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitGoto(this)\n }\n}\nexport class IfElse extends Statement {\n constructor(props: Props<IfElse>) {\n super(props)\n this.condition = props.condition\n this.ifBranch = props.ifBranch\n this.elseBranch = props.elseBranch\n }\n condition: Expression\n ifBranch: Block\n elseBranch: Block | null\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitIfElse(this)\n }\n}\nexport class Switch extends Statement {\n constructor(props: Props<Switch>) {\n super(props)\n this.value = props.value\n this.cases = props.cases\n this.defaultCase = props.defaultCase\n }\n value: Expression\n cases: Map<Expression, Block>\n defaultCase: Block | null\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitSwitch(this)\n }\n}\nexport class WhileLoop extends Statement {\n constructor(props: Props<WhileLoop>) {\n super(props)\n this.condition = props.condition\n this.loopBody = props.loopBody\n }\n condition: Expression\n loopBody: Block\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitWhileLoop(this)\n }\n}\nexport class LoopExit extends Statement {\n constructor(props: Props<LoopExit>) {\n super(props)\n }\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitLoopExit(this)\n }\n}\nexport class LoopContinue extends Statement {\n constructor(props: Props<LoopContinue>) {\n super(props)\n }\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitLoopContinue(this)\n }\n}\nexport class ReturnStatement extends Statement {\n constructor(props: Props<ReturnStatement>) {\n super(props)\n this.value = props.value\n }\n value: Expression | null\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitReturnStatement(this)\n }\n}\nexport class IntegerConstant extends Expression {\n constructor(props: Props<IntegerConstant>) {\n super(props)\n this.wtype = props.wtype\n this.value = props.value\n this.tealAlias = props.tealAlias\n }\n value: bigint\n tealAlias: string | null\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitIntegerConstant(this)\n }\n}\nexport class DecimalConstant extends Expression {\n constructor(props: Props<DecimalConstant>) {\n super(props)\n this.wtype = props.wtype\n this.value = props.value\n }\n declare wtype: wtypes.ARC4UFixedNxM\n value: number\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitDecimalConstant(this)\n }\n}\nexport class BoolConstant extends Expression {\n constructor(props: Props<BoolConstant>) {\n super(props)\n this.wtype = props.wtype\n this.value = props.value\n }\n value: boolean\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBoolConstant(this)\n }\n}\nexport enum BytesEncoding {\n unknown = 'unknown',\n base16 = 'base16',\n base32 = 'base32',\n base64 = 'base64',\n utf8 = 'utf8',\n}\nexport class BytesConstant extends Expression {\n constructor(props: Props<BytesConstant>) {\n super(props)\n this.wtype = props.wtype\n this.value = props.value\n this.encoding = props.encoding\n }\n value: Uint8Array\n encoding: BytesEncoding\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBytesConstant(this)\n }\n}\nexport class StringConstant extends Expression {\n constructor(props: Props<StringConstant>) {\n super(props)\n this.wtype = props.wtype\n this.value = props.value\n }\n value: string\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitStringConstant(this)\n }\n}\nexport class VoidConstant extends Expression {\n constructor(props: Props<VoidConstant>) {\n super(props)\n this.wtype = props.wtype\n }\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitVoidConstant(this)\n }\n}\nexport class TemplateVar extends Expression {\n constructor(props: Props<TemplateVar>) {\n super(props)\n this.wtype = props.wtype\n this.name = props.name\n }\n name: string\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitTemplateVar(this)\n }\n}\nexport class MethodConstant extends Expression {\n constructor(props: Props<MethodConstant>) {\n super(props)\n this.wtype = props.wtype\n this.value = props.value\n }\n value: string\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitMethodConstant(this)\n }\n}\nexport class AddressConstant extends Expression {\n constructor(props: Props<AddressConstant>) {\n super(props)\n this.wtype = props.wtype\n this.value = props.value\n }\n value: string\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitAddressConstant(this)\n }\n}\nexport class ARC4Encode extends Expression {\n constructor(props: Props<ARC4Encode>) {\n super(props)\n this.value = props.value\n this.wtype = props.wtype\n }\n value: Expression\n declare wtype: wtypes.ARC4Type\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitARC4Encode(this)\n }\n}\nexport class Copy extends Expression {\n constructor(props: Props<Copy>) {\n super(props)\n this.value = props.value\n this.wtype = props.wtype\n }\n value: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitCopy(this)\n }\n}\nexport class ArrayConcat extends Expression {\n constructor(props: Props<ArrayConcat>) {\n super(props)\n this.left = props.left\n this.right = props.right\n }\n left: Expression\n right: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitArrayConcat(this)\n }\n}\nexport class ArrayPop extends Expression {\n constructor(props: Props<ArrayPop>) {\n super(props)\n this.base = props.base\n }\n base: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitArrayPop(this)\n }\n}\nexport class ArrayExtend extends Expression {\n constructor(props: Props<ArrayExtend>) {\n super(props)\n this.base = props.base\n this.other = props.other\n }\n base: Expression\n other: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitArrayExtend(this)\n }\n}\nexport class ARC4Decode extends Expression {\n constructor(props: Props<ARC4Decode>) {\n super(props)\n this.value = props.value\n }\n value: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitARC4Decode(this)\n }\n}\nexport class IntrinsicCall extends Expression {\n constructor(props: Props<IntrinsicCall>) {\n super(props)\n this.opCode = props.opCode\n this.immediates = props.immediates\n this.stackArgs = props.stackArgs\n this.comment = props.comment\n }\n opCode: string\n immediates: Array<string | bigint>\n stackArgs: Array<Expression>\n comment: string | null\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitIntrinsicCall(this)\n }\n}\nexport class CreateInnerTransaction extends Expression {\n constructor(props: Props<CreateInnerTransaction>) {\n super(props)\n this.wtype = props.wtype\n this.fields = props.fields\n }\n declare wtype: wtypes.WInnerTransactionFields\n fields: Map<TxnField, Expression>\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitCreateInnerTransaction(this)\n }\n}\nexport class UpdateInnerTransaction extends Expression {\n constructor(props: Props<UpdateInnerTransaction>) {\n super(props)\n this.itxn = props.itxn\n this.fields = props.fields\n this.wtype = props.wtype\n }\n itxn: Expression\n fields: Map<TxnField, Expression>\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitUpdateInnerTransaction(this)\n }\n}\nexport class GroupTransactionReference extends Expression {\n constructor(props: Props<GroupTransactionReference>) {\n super(props)\n this.index = props.index\n this.wtype = props.wtype\n }\n index: Expression\n declare wtype: wtypes.WGroupTransaction\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitGroupTransactionReference(this)\n }\n}\nexport class CheckedMaybe extends Expression {\n constructor(props: Props<CheckedMaybe>) {\n super(props)\n this.expr = props.expr\n this.comment = props.comment\n this.wtype = props.wtype\n this.sourceLocation = props.sourceLocation\n }\n expr: Expression\n comment: string\n sourceLocation: SourceLocation\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitCheckedMaybe(this)\n }\n}\nexport class TupleExpression extends Expression {\n constructor(props: Props<TupleExpression>) {\n super(props)\n this.items = props.items\n this.wtype = props.wtype\n }\n items: Array<Expression>\n declare wtype: wtypes.WTuple\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitTupleExpression(this)\n }\n}\nexport class TupleItemExpression extends Expression {\n constructor(props: Props<TupleItemExpression>) {\n super(props)\n this.base = props.base\n this.index = props.index\n this.wtype = props.wtype\n }\n base: Expression\n index: bigint\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitTupleItemExpression(this)\n }\n}\nexport class VarExpression extends Expression {\n constructor(props: Props<VarExpression>) {\n super(props)\n this.name = props.name\n }\n name: string\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitVarExpression(this)\n }\n}\nexport class InnerTransactionField extends Expression {\n constructor(props: Props<InnerTransactionField>) {\n super(props)\n this.itxn = props.itxn\n this.field = props.field\n this.arrayIndex = props.arrayIndex\n }\n itxn: Expression\n field: TxnField\n arrayIndex: Expression | null\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitInnerTransactionField(this)\n }\n}\nexport class SubmitInnerTransaction extends Expression {\n constructor(props: Props<SubmitInnerTransaction>) {\n super(props)\n this.itxns = props.itxns\n this.wtype = props.wtype\n }\n itxns: Array<Expression>\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitSubmitInnerTransaction(this)\n }\n}\nexport class FieldExpression extends Expression {\n constructor(props: Props<FieldExpression>) {\n super(props)\n this.base = props.base\n this.name = props.name\n this.wtype = props.wtype\n }\n base: Expression\n name: string\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitFieldExpression(this)\n }\n}\nexport class IndexExpression extends Expression {\n constructor(props: Props<IndexExpression>) {\n super(props)\n this.base = props.base\n this.index = props.index\n }\n base: Expression\n index: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitIndexExpression(this)\n }\n}\nexport class SliceExpression extends Expression {\n constructor(props: Props<SliceExpression>) {\n super(props)\n this.base = props.base\n this.beginIndex = props.beginIndex\n this.endIndex = props.endIndex\n }\n base: Expression\n beginIndex: Expression | null\n endIndex: Expression | null\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitSliceExpression(this)\n }\n}\nexport class IntersectionSliceExpression extends Expression {\n constructor(props: Props<IntersectionSliceExpression>) {\n super(props)\n this.base = props.base\n this.beginIndex = props.beginIndex\n this.endIndex = props.endIndex\n }\n base: Expression\n beginIndex: Expression | bigint | null\n endIndex: Expression | bigint | null\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitIntersectionSliceExpression(this)\n }\n}\nexport class AppStateExpression extends Expression {\n constructor(props: Props<AppStateExpression>) {\n super(props)\n this.key = props.key\n this.existsAssertionMessage = props.existsAssertionMessage\n }\n key: Expression\n existsAssertionMessage: string | null\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitAppStateExpression(this)\n }\n}\nexport class AppAccountStateExpression extends Expression {\n constructor(props: Props<AppAccountStateExpression>) {\n super(props)\n this.key = props.key\n this.existsAssertionMessage = props.existsAssertionMessage\n this.account = props.account\n }\n key: Expression\n existsAssertionMessage: string | null\n account: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitAppAccountStateExpression(this)\n }\n}\nexport class BoxValueExpression extends Expression {\n constructor(props: Props<BoxValueExpression>) {\n super(props)\n this.key = props.key\n this.existsAssertionMessage = props.existsAssertionMessage\n }\n key: Expression\n existsAssertionMessage: string | null\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBoxValueExpression(this)\n }\n}\nexport class SingleEvaluation extends Expression {\n constructor(props: Props<SingleEvaluation>) {\n super(props)\n this.source = props.source\n this.id = props.id\n this.wtype = props.wtype\n this.sourceLocation = props.sourceLocation\n }\n source: Expression\n id: bigint\n sourceLocation: SourceLocation\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitSingleEvaluation(this)\n }\n}\nexport class ReinterpretCast extends Expression {\n constructor(props: Props<ReinterpretCast>) {\n super(props)\n this.expr = props.expr\n }\n expr: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitReinterpretCast(this)\n }\n}\nexport class NewArray extends Expression {\n constructor(props: Props<NewArray>) {\n super(props)\n this.wtype = props.wtype\n this.values = props.values\n }\n declare wtype: wtypes.WArray | wtypes.ARC4Array\n values: Array<Expression>\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitNewArray(this)\n }\n}\nexport class ConditionalExpression extends Expression {\n constructor(props: Props<ConditionalExpression>) {\n super(props)\n this.condition = props.condition\n this.trueExpr = props.trueExpr\n this.falseExpr = props.falseExpr\n this.wtype = props.wtype\n }\n condition: Expression\n trueExpr: Expression\n falseExpr: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitConditionalExpression(this)\n }\n}\nexport class AssignmentStatement extends Statement {\n constructor(props: Props<AssignmentStatement>) {\n super(props)\n this.target = props.target\n this.value = props.value\n }\n target:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n value: Expression\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitAssignmentStatement(this)\n }\n}\nexport class AssignmentExpression extends Expression {\n constructor(props: Props<AssignmentExpression>) {\n super(props)\n this.target = props.target\n this.value = props.value\n this.wtype = props.wtype\n }\n target:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n value: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitAssignmentExpression(this)\n }\n}\nexport enum EqualityComparison {\n eq = '==',\n ne = '!=',\n}\nexport enum NumericComparison {\n eq = '==',\n ne = '!=',\n lt = '<',\n lte = '<=',\n gt = '>',\n gte = '>=',\n}\nexport class NumericComparisonExpression extends Expression {\n constructor(props: Props<NumericComparisonExpression>) {\n super(props)\n this.wtype = props.wtype\n this.lhs = props.lhs\n this.operator = props.operator\n this.rhs = props.rhs\n }\n lhs: Expression\n operator: NumericComparison\n rhs: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitNumericComparisonExpression(this)\n }\n}\nexport class BytesComparisonExpression extends Expression {\n constructor(props: Props<BytesComparisonExpression>) {\n super(props)\n this.wtype = props.wtype\n this.lhs = props.lhs\n this.operator = props.operator\n this.rhs = props.rhs\n }\n lhs: Expression\n operator: EqualityComparison\n rhs: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBytesComparisonExpression(this)\n }\n}\nexport class InstanceMethodTarget {\n constructor(props: Props<InstanceMethodTarget>) {\n this.memberName = props.memberName\n }\n memberName: string\n}\nexport class InstanceSuperMethodTarget {\n constructor(props: Props<InstanceSuperMethodTarget>) {\n this.memberName = props.memberName\n }\n memberName: string\n}\nexport class ContractMethodTarget {\n constructor(props: Props<ContractMethodTarget>) {\n this.cref = props.cref\n this.memberName = props.memberName\n }\n cref: ContractReference\n memberName: string\n}\nexport class CallArg {\n constructor(props: Props<CallArg>) {\n this.name = props.name\n this.value = props.value\n }\n name: string | null\n value: Expression\n}\nexport class SubroutineCallExpression extends Expression {\n constructor(props: Props<SubroutineCallExpression>) {\n super(props)\n this.target = props.target\n this.args = props.args\n }\n target: SubroutineID | InstanceMethodTarget | InstanceSuperMethodTarget | ContractMethodTarget\n args: Array<CallArg>\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitSubroutineCallExpression(this)\n }\n}\nexport class PuyaLibData {\n constructor(props: Props<PuyaLibData>) {\n this.id = props.id\n this.params = props.params\n this.wtype = props.wtype\n }\n id: string\n params: Map<string, wtypes.WType>\n wtype: wtypes.WType\n}\nexport enum PuyaLibFunction {\n ensureBudget = 'ensure_budget',\n isSubstring = 'is_substring',\n}\nexport class PuyaLibCall extends Expression {\n constructor(props: Props<PuyaLibCall>) {\n super(props)\n this.func = props.func\n this.args = props.args\n this.wtype = props.wtype\n }\n func: PuyaLibFunction\n args: Array<CallArg>\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitPuyaLibCall(this)\n }\n}\nexport enum UInt64BinaryOperator {\n add = '+',\n sub = '-',\n mult = '*',\n floorDiv = '//',\n mod = '%',\n pow = '**',\n lshift = '<<',\n rshift = '>>',\n bitOr = '|',\n bitXor = '^',\n bitAnd = '&',\n}\nexport enum BigUIntBinaryOperator {\n add = '+',\n sub = '-',\n mult = '*',\n floorDiv = '//',\n mod = '%',\n bitOr = '|',\n bitXor = '^',\n bitAnd = '&',\n}\nexport enum BytesBinaryOperator {\n add = '+',\n bitOr = '|',\n bitXor = '^',\n bitAnd = '&',\n}\nexport enum BytesUnaryOperator {\n bitInvert = '~',\n}\nexport enum UInt64UnaryOperator {\n bitInvert = '~',\n}\nexport enum UInt64PostfixUnaryOperator {\n increment = '++',\n decrement = '--',\n}\nexport class UInt64UnaryOperation extends Expression {\n constructor(props: Props<UInt64UnaryOperation>) {\n super(props)\n this.op = props.op\n this.expr = props.expr\n this.wtype = props.wtype\n }\n op: UInt64UnaryOperator\n expr: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitUInt64UnaryOperation(this)\n }\n}\nexport class UInt64PostfixUnaryOperation extends Expression {\n constructor(props: Props<UInt64PostfixUnaryOperation>) {\n super(props)\n this.op = props.op\n this.target = props.target\n this.wtype = props.wtype\n }\n op: UInt64PostfixUnaryOperator\n target:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitUInt64PostfixUnaryOperation(this)\n }\n}\nexport enum BigUIntPostfixUnaryOperator {\n increment = '++',\n decrement = '--',\n}\nexport class BigUIntPostfixUnaryOperation extends Expression {\n constructor(props: Props<BigUIntPostfixUnaryOperation>) {\n super(props)\n this.op = props.op\n this.target = props.target\n this.wtype = props.wtype\n }\n op: BigUIntPostfixUnaryOperator\n target: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBigUIntPostfixUnaryOperation(this)\n }\n}\nexport class BytesUnaryOperation extends Expression {\n constructor(props: Props<BytesUnaryOperation>) {\n super(props)\n this.op = props.op\n this.expr = props.expr\n this.wtype = props.wtype\n }\n op: BytesUnaryOperator\n expr: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBytesUnaryOperation(this)\n }\n}\nexport class UInt64BinaryOperation extends Expression {\n constructor(props: Props<UInt64BinaryOperation>) {\n super(props)\n this.left = props.left\n this.op = props.op\n this.right = props.right\n this.wtype = props.wtype\n }\n left: Expression\n op: UInt64BinaryOperator\n right: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitUInt64BinaryOperation(this)\n }\n}\nexport class BigUIntBinaryOperation extends Expression {\n constructor(props: Props<BigUIntBinaryOperation>) {\n super(props)\n this.left = props.left\n this.op = props.op\n this.right = props.right\n this.wtype = props.wtype\n }\n left: Expression\n op: BigUIntBinaryOperator\n right: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBigUIntBinaryOperation(this)\n }\n}\nexport class BytesBinaryOperation extends Expression {\n constructor(props: Props<BytesBinaryOperation>) {\n super(props)\n this.left = props.left\n this.op = props.op\n this.right = props.right\n this.wtype = props.wtype\n }\n left: Expression\n op: BytesBinaryOperator\n right: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBytesBinaryOperation(this)\n }\n}\nexport enum BinaryBooleanOperator {\n and = 'and',\n or = 'or',\n}\nexport class BooleanBinaryOperation extends Expression {\n constructor(props: Props<BooleanBinaryOperation>) {\n super(props)\n this.left = props.left\n this.op = props.op\n this.right = props.right\n this.wtype = props.wtype\n }\n left: Expression\n op: BinaryBooleanOperator\n right: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBooleanBinaryOperation(this)\n }\n}\nexport class Not extends Expression {\n constructor(props: Props<Not>) {\n super(props)\n this.expr = props.expr\n this.wtype = props.wtype\n }\n expr: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitNot(this)\n }\n}\nexport class UInt64AugmentedAssignment extends Statement {\n constructor(props: Props<UInt64AugmentedAssignment>) {\n super(props)\n this.target = props.target\n this.op = props.op\n this.value = props.value\n }\n target:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n op: UInt64BinaryOperator\n value: Expression\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitUInt64AugmentedAssignment(this)\n }\n}\nexport class BigUIntAugmentedAssignment extends Statement {\n constructor(props: Props<BigUIntAugmentedAssignment>) {\n super(props)\n this.target = props.target\n this.op = props.op\n this.value = props.value\n }\n target:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n op: BigUIntBinaryOperator\n value: Expression\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitBigUIntAugmentedAssignment(this)\n }\n}\nexport class BytesAugmentedAssignment extends Statement {\n constructor(props: Props<BytesAugmentedAssignment>) {\n super(props)\n this.target = props.target\n this.op = props.op\n this.value = props.value\n }\n target:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n op: BytesBinaryOperator\n value: Expression\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitBytesAugmentedAssignment(this)\n }\n}\nexport class Range extends Expression {\n constructor(props: Props<Range>) {\n super(props)\n this.wtype = props.wtype\n this.start = props.start\n this.stop = props.stop\n this.step = props.step\n }\n start: Expression\n stop: Expression\n step: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitRange(this)\n }\n}\nexport class Enumeration extends Expression {\n constructor(props: Props<Enumeration>) {\n super(props)\n this.expr = props.expr\n this.wtype = props.wtype\n }\n expr: Expression\n declare wtype: wtypes.WEnumeration\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitEnumeration(this)\n }\n}\nexport class Reversed extends Expression {\n constructor(props: Props<Reversed>) {\n super(props)\n this.expr = props.expr\n this.wtype = props.wtype\n }\n expr: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitReversed(this)\n }\n}\nexport class ForInLoop extends Statement {\n constructor(props: Props<ForInLoop>) {\n super(props)\n this.sequence = props.sequence\n this.items = props.items\n this.loopBody = props.loopBody\n }\n sequence: Expression\n items:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n loopBody: Block\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitForInLoop(this)\n }\n}\nexport class StateGet extends Expression {\n constructor(props: Props<StateGet>) {\n super(props)\n this.field = props.field\n this.default = props.default\n this.wtype = props.wtype\n }\n field: AppStateExpression | AppAccountStateExpression | BoxValueExpression\n default: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitStateGet(this)\n }\n}\nexport class StateGetEx extends Expression {\n constructor(props: Props<StateGetEx>) {\n super(props)\n this.field = props.field\n this.wtype = props.wtype\n }\n field: AppStateExpression | AppAccountStateExpression | BoxValueExpression\n declare wtype: wtypes.WTuple\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitStateGetEx(this)\n }\n}\nexport class StateExists extends Expression {\n constructor(props: Props<StateExists>) {\n super(props)\n this.field = props.field\n this.wtype = props.wtype\n }\n field: AppStateExpression | AppAccountStateExpression | BoxValueExpression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitStateExists(this)\n }\n}\nexport class StateDelete extends Expression {\n constructor(props: Props<StateDelete>) {\n super(props)\n this.field = props.field\n this.wtype = props.wtype\n }\n field: AppStateExpression | AppAccountStateExpression | BoxValueExpression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitStateDelete(this)\n }\n}\nexport class NewStruct extends Expression {\n constructor(props: Props<NewStruct>) {\n super(props)\n this.wtype = props.wtype\n this.values = props.values\n }\n declare wtype: wtypes.WStructType | wtypes.ARC4Struct\n values: Map<string, Expression>\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitNewStruct(this)\n }\n}\nexport abstract class RootNode extends Node {\n constructor(props: Props<RootNode>) {\n super(props)\n }\n abstract accept<T>(visitor: RootNodeVisitor<T>): T\n}\nexport class SubroutineArgument {\n constructor(props: Props<SubroutineArgument>) {\n this.name = props.name\n this.wtype = props.wtype\n this.sourceLocation = props.sourceLocation\n }\n name: string\n wtype: wtypes.WType\n sourceLocation: SourceLocation | null\n}\nexport class MethodDocumentation {\n constructor(props: Props<MethodDocumentation>) {\n this.description = props.description\n this.args = props.args\n this.returns = props.returns\n }\n description: string | null\n args: Map<string, string>\n returns: string | null\n}\nexport abstract class _Function extends Node {\n constructor(props: Props<_Function>) {\n super(props)\n this.args = props.args\n this.returnType = props.returnType\n this.body = props.body\n this.documentation = props.documentation\n }\n args: Array<SubroutineArgument>\n returnType: wtypes.WType\n body: Block\n documentation: MethodDocumentation\n}\nexport class Subroutine extends classes(_Function, RootNode) {\n constructor(props: Props<Subroutine>) {\n super([props], [props])\n this.id = props.id\n this.name = props.name\n }\n id: string\n name: string\n accept<T>(visitor: RootNodeVisitor<T>): T {\n return visitor.visitSubroutine(this)\n }\n}\nexport abstract class ContractMemberNode extends Node {\n constructor(props: Props<ContractMemberNode>) {\n super(props)\n }\n abstract accept<T>(visitor: ContractMemberNodeVisitor<T>): T\n}\nexport class ContractMethod extends classes(_Function, ContractMemberNode) {\n constructor(props: Props<ContractMethod>) {\n super([props], [props])\n this.cref = props.cref\n this.memberName = props.memberName\n this.arc4MethodConfig = props.arc4MethodConfig\n this.synthetic = props.synthetic\n this.inheritable = props.inheritable\n }\n cref: ContractReference\n memberName: string\n arc4MethodConfig: ARC4BareMethodConfig | ARC4ABIMethodConfig | null\n synthetic: boolean\n inheritable: boolean\n accept<T>(visitor: ContractMemberNodeVisitor<T>): T {\n return visitor.visitContractMethod(this)\n }\n}\nexport enum AppStorageKind {\n appGlobal = 1,\n accountLocal = 2,\n box = 3,\n}\nexport class AppStorageDefinition extends ContractMemberNode {\n constructor(props: Props<AppStorageDefinition>) {\n super(props)\n this.memberName = props.memberName\n this.kind = props.kind\n this.storageWtype = props.storageWtype\n this.keyWtype = props.keyWtype\n this.key = props.key\n this.description = props.description\n }\n memberName: string\n kind: AppStorageKind\n storageWtype: wtypes.WType\n keyWtype: wtypes.WType | null\n key: BytesConstant\n description: string | null\n accept<T>(visitor: ContractMemberNodeVisitor<T>): T {\n return visitor.visitAppStorageDefinition(this)\n }\n}\nexport class LogicSignature extends RootNode {\n constructor(props: Props<LogicSignature>) {\n super(props)\n this.id = props.id\n this.shortName = props.shortName\n this.program = props.program\n this.docstring = props.docstring\n }\n id: LogicSigReference\n shortName: string\n program: Subroutine\n docstring: string | null\n accept<T>(visitor: RootNodeVisitor<T>): T {\n return visitor.visitLogicSignature(this)\n }\n}\nexport class CompiledContract extends Expression {\n constructor(props: Props<CompiledContract>) {\n super(props)\n this.contract = props.contract\n this.allocationOverrides = props.allocationOverrides\n this.prefix = props.prefix\n this.templateVariables = props.templateVariables\n }\n contract: ContractReference\n allocationOverrides: Map<TxnField, Expression>\n prefix: string | null\n templateVariables: Map<string, Expression>\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitCompiledContract(this)\n }\n}\nexport class CompiledLogicSig extends Expression {\n constructor(props: Props<CompiledLogicSig>) {\n super(props)\n this.logicSig = props.logicSig\n this.prefix = props.prefix\n this.templateVariables = props.templateVariables\n }\n logicSig: LogicSigReference\n prefix: string | null\n templateVariables: Map<string, Expression>\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitCompiledLogicSig(this)\n }\n}\nexport class StateTotals {\n constructor(props: Props<StateTotals>) {\n this.globalUints = props.globalUints\n this.localUints = props.localUints\n this.globalBytes = props.globalBytes\n this.localBytes = props.localBytes\n }\n globalUints: bigint | null\n localUints: bigint | null\n globalBytes: bigint | null\n localBytes: bigint | null\n}\nexport class ARC4Router extends Expression {\n constructor(props: Props<ARC4Router>) {\n super(props)\n this.wtype = props.wtype\n }\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitARC4Router(this)\n }\n}\nexport class ContractFragment extends RootNode {\n constructor(props: Props<ContractFragment>) {\n super(props)\n this.id = props.id\n this.name = props.name\n this.bases = props.bases\n this.init = props.init\n this.approvalProgram = props.approvalProgram\n this.clearProgram = props.clearProgram\n this.subroutines = props.subroutines\n this.appState = props.appState\n this.reservedScratchSpace = props.reservedScratchSpace\n this.stateTotals = props.stateTotals\n this.docstring = props.docstring\n }\n id: ContractReference\n name: string\n bases: Array<ContractReference>\n init: ContractMethod | null\n approvalProgram: ContractMethod | null\n clearProgram: ContractMethod | null\n subroutines: Array<ContractMethod>\n appState: Map<string, AppStorageDefinition>\n reservedScratchSpace: Set<bigint>\n stateTotals: StateTotals | null\n docstring: string | null\n accept<T>(visitor: RootNodeVisitor<T>): T {\n return visitor.visitContractFragment(this)\n }\n}\nexport type LValue = VarExpression | FieldExpression | IndexExpression | TupleExpression | AppStateExpression | AppAccountStateExpression\nexport type Constant = IntegerConstant | BoolConstant | BytesConstant | StringConstant\nexport type AWST = ContractFragment | LogicSignature | Subroutine\nexport const concreteNodes = {\n subroutineID: SubroutineID,\n expressionStatement: ExpressionStatement,\n block: Block,\n goto: Goto,\n ifElse: IfElse,\n switch: Switch,\n whileLoop: WhileLoop,\n loopExit: LoopExit,\n loopContinue: LoopContinue,\n returnStatement: ReturnStatement,\n integerConstant: IntegerConstant,\n decimalConstant: DecimalConstant,\n boolConstant: BoolConstant,\n bytesConstant: BytesConstant,\n stringConstant: StringConstant,\n voidConstant: VoidConstant,\n templateVar: TemplateVar,\n methodConstant: MethodConstant,\n addressConstant: AddressConstant,\n aRC4Encode: ARC4Encode,\n copy: Copy,\n arrayConcat: ArrayConcat,\n arrayPop: ArrayPop,\n arrayExtend: ArrayExtend,\n aRC4Decode: ARC4Decode,\n intrinsicCall: IntrinsicCall,\n createInnerTransaction: CreateInnerTransaction,\n updateInnerTransaction: UpdateInnerTransaction,\n groupTransactionReference: GroupTransactionReference,\n checkedMaybe: CheckedMaybe,\n tupleExpression: TupleExpression,\n tupleItemExpression: TupleItemExpression,\n varExpression: VarExpression,\n innerTransactionField: InnerTransactionField,\n submitInnerTransaction: SubmitInnerTransaction,\n fieldExpression: FieldExpression,\n indexExpression: IndexExpression,\n sliceExpression: SliceExpression,\n intersectionSliceExpression: IntersectionSliceExpression,\n appStateExpression: AppStateExpression,\n appAccountStateExpression: AppAccountStateExpression,\n boxValueExpression: BoxValueExpression,\n singleEvaluation: SingleEvaluation,\n reinterpretCast: ReinterpretCast,\n newArray: NewArray,\n conditionalExpression: ConditionalExpression,\n assignmentStatement: AssignmentStatement,\n assignmentExpression: AssignmentExpression,\n numericComparisonExpression: NumericComparisonExpression,\n bytesComparisonExpression: BytesComparisonExpression,\n instanceMethodTarget: InstanceMethodTarget,\n instanceSuperMethodTarget: InstanceSuperMethodTarget,\n contractMethodTarget: ContractMethodTarget,\n callArg: CallArg,\n subroutineCallExpression: SubroutineCallExpression,\n puyaLibData: PuyaLibData,\n puyaLibCall: PuyaLibCall,\n uInt64UnaryOperation: UInt64UnaryOperation,\n uInt64PostfixUnaryOperation: UInt64PostfixUnaryOperation,\n bigUIntPostfixUnaryOperation: BigUIntPostfixUnaryOperation,\n bytesUnaryOperation: BytesUnaryOperation,\n uInt64BinaryOperation: UInt64BinaryOperation,\n bigUIntBinaryOperation: BigUIntBinaryOperation,\n bytesBinaryOperation: BytesBinaryOperation,\n booleanBinaryOperation: BooleanBinaryOperation,\n not: Not,\n uInt64AugmentedAssignment: UInt64AugmentedAssignment,\n bigUIntAugmentedAssignment: BigUIntAugmentedAssignment,\n bytesAugmentedAssignment: BytesAugmentedAssignment,\n range: Range,\n enumeration: Enumeration,\n reversed: Reversed,\n forInLoop: ForInLoop,\n stateGet: StateGet,\n stateGetEx: StateGetEx,\n stateExists: StateExists,\n stateDelete: StateDelete,\n newStruct: NewStruct,\n subroutineArgument: SubroutineArgument,\n methodDocumentation: MethodDocumentation,\n subroutine: Subroutine,\n contractMethod: ContractMethod,\n appStorageDefinition: AppStorageDefinition,\n logicSignature: LogicSignature,\n compiledContract: CompiledContract,\n compiledLogicSig: CompiledLogicSig,\n stateTotals: StateTotals,\n aRC4Router: ARC4Router,\n contractFragment: ContractFragment,\n uInt64Constant: IntegerConstant,\n bigUIntConstant: IntegerConstant,\n} as const\nexport interface ExpressionVisitor<T> {\n visitIntegerConstant(expression: IntegerConstant): T\n visitDecimalConstant(expression: DecimalConstant): T\n visitBoolConstant(expression: BoolConstant): T\n visitBytesConstant(expression: BytesConstant): T\n visitStringConstant(expression: StringConstant): T\n visitVoidConstant(expression: VoidConstant): T\n visitTemplateVar(expression: TemplateVar): T\n visitMethodConstant(expression: MethodConstant): T\n visitAddressConstant(expression: AddressConstant): T\n visitARC4Encode(expression: ARC4Encode): T\n visitCopy(expression: Copy): T\n visitArrayConcat(expression: ArrayConcat): T\n visitArrayPop(expression: ArrayPop): T\n visitArrayExtend(expression: ArrayExtend): T\n visitARC4Decode(expression: ARC4Decode): T\n visitIntrinsicCall(expression: IntrinsicCall): T\n visitCreateInnerTransaction(expression: CreateInnerTransaction): T\n visitUpdateInnerTransaction(expression: UpdateInnerTransaction): T\n visitGroupTransactionReference(expression: GroupTransactionReference): T\n visitCheckedMaybe(expression: CheckedMaybe): T\n visitTupleExpression(expression: TupleExpression): T\n visitTupleItemExpression(expression: TupleItemExpression): T\n visitVarExpression(expression: VarExpression): T\n visitInnerTransactionField(expression: InnerTransactionField): T\n visitSubmitInnerTransaction(expression: SubmitInnerTransaction): T\n visitFieldExpression(expression: FieldExpression): T\n visitIndexExpression(expression: IndexExpression): T\n visitSliceExpression(expression: SliceExpression): T\n visitIntersectionSliceExpression(expression: IntersectionSliceExpression): T\n visitAppStateExpression(expression: AppStateExpression): T\n visitAppAccountStateExpression(expression: AppAccountStateExpression): T\n visitBoxValueExpression(expression: BoxValueExpression): T\n visitSingleEvaluation(expression: SingleEvaluation): T\n visitReinterpretCast(expression: ReinterpretCast): T\n visitNewArray(expression: NewArray): T\n visitConditionalExpression(expression: ConditionalExpression): T\n visitAssignmentExpression(expression: AssignmentExpression): T\n visitNumericComparisonExpression(expression: NumericComparisonExpression): T\n visitBytesComparisonExpression(expression: BytesComparisonExpression): T\n visitSubroutineCallExpression(expression: SubroutineCallExpression): T\n visitPuyaLibCall(expression: PuyaLibCall): T\n visitUInt64UnaryOperation(expression: UInt64UnaryOperation): T\n visitUInt64PostfixUnaryOperation(expression: UInt64PostfixUnaryOperation): T\n visitBigUIntPostfixUnaryOperation(expression: BigUIntPostfixUnaryOperation): T\n visitBytesUnaryOperation(expression: BytesUnaryOperation): T\n visitUInt64BinaryOperation(expression: UInt64BinaryOperation): T\n visitBigUIntBinaryOperation(expression: BigUIntBinaryOperation): T\n visitBytesBinaryOperation(expression: BytesBinaryOperation): T\n visitBooleanBinaryOperation(expression: BooleanBinaryOperation): T\n visitNot(expression: Not): T\n visitRange(expression: Range): T\n visitEnumeration(expression: Enumeration): T\n visitReversed(expression: Reversed): T\n visitStateGet(expression: StateGet): T\n visitStateGetEx(expression: StateGetEx): T\n visitStateExists(expression: StateExists): T\n visitStateDelete(expression: StateDelete): T\n visitNewStruct(expression: NewStruct): T\n visitCompiledContract(expression: CompiledContract): T\n visitCompiledLogicSig(expression: CompiledLogicSig): T\n visitARC4Router(expression: ARC4Router): T\n}\nexport interface StatementVisitor<T> {\n visitExpressionStatement(statement: ExpressionStatement): T\n visitBlock(statement: Block): T\n visitGoto(statement: Goto): T\n visitIfElse(statement: IfElse): T\n visitSwitch(statement: Switch): T\n visitWhileLoop(statement: WhileLoop): T\n visitLoopExit(statement: LoopExit): T\n visitLoopContinue(statement: LoopContinue): T\n visitReturnStatement(statement: ReturnStatement): T\n visitAssignmentStatement(statement: AssignmentStatement): T\n visitUInt64AugmentedAssignment(statement: UInt64AugmentedAssignment): T\n visitBigUIntAugmentedAssignment(statement: BigUIntAugmentedAssignment): T\n visitBytesAugmentedAssignment(statement: BytesAugmentedAssignment): T\n visitForInLoop(statement: ForInLoop): T\n}\nexport interface ContractMemberNodeVisitor<T> {\n visitContractMethod(contractMemberNode: ContractMethod): T\n visitAppStorageDefinition(contractMemberNode: AppStorageDefinition): T\n}\nexport interface RootNodeVisitor<T> {\n visitSubroutine(rootNode: Subroutine): T\n visitLogicSignature(rootNode: LogicSignature): T\n visitContractFragment(rootNode: ContractFragment): T\n}\n","import { invariant } from '../util'\nimport { TransactionKind } from './models'\nimport type { SourceLocation } from './source-location'\n\nexport enum AVMType {\n bytes = 1 << 0,\n uint64 = 1 << 1,\n any = AVMType.bytes | AVMType.uint64,\n}\n\nexport class WType {\n constructor(props: { name: string; immutable?: boolean; scalarType: AVMType | null; ephemeral?: boolean }) {\n this.name = props.name\n this.immutable = props.immutable ?? true\n this.scalarType = props.scalarType\n this.ephemeral = props.ephemeral ?? false\n }\n\n readonly name: string\n readonly immutable: boolean\n /**\n * ephemeral types are not suitable for naive storage / persistence,\n * even if their underlying type is a simple stack value\n */\n readonly ephemeral: boolean\n /**\n * The AVM stack type of this type (if any)\n */\n readonly scalarType: AVMType | null\n\n equals(other: WType): boolean {\n return other.name === this.name\n }\n\n toString(): string {\n return this.name\n }\n\n get id() {\n return this.name\n }\n}\n\nexport const voidWType = new WType({\n name: 'void',\n scalarType: null,\n})\nexport const boolWType = new WType({\n name: 'bool',\n scalarType: AVMType.uint64,\n})\nexport const uint64WType = new WType({\n name: 'uint64',\n scalarType: AVMType.uint64,\n})\nexport const uint64RangeWType = new WType({\n name: 'uint64_range',\n scalarType: null,\n immutable: true,\n})\nexport const bytesWType = new WType({\n name: 'bytes',\n scalarType: AVMType.bytes,\n})\nexport const stateKeyWType = new WType({\n name: 'state_key',\n scalarType: AVMType.bytes,\n})\nexport const boxKeyWType = new WType({\n name: 'box_key',\n scalarType: AVMType.bytes,\n})\nexport const stringWType = new WType({\n name: 'string',\n scalarType: AVMType.bytes,\n})\nexport const biguintWType = new WType({\n name: 'biguint',\n scalarType: AVMType.bytes,\n})\nexport const assetWType = new WType({\n name: 'asset',\n scalarType: AVMType.uint64,\n})\n\nexport const accountWType = new WType({\n name: 'account',\n scalarType: AVMType.bytes,\n})\nexport const applicationWType = new WType({\n name: 'application',\n scalarType: AVMType.uint64,\n})\n\nexport abstract class ARC4Type extends WType {\n readonly decodeType: WType | null\n readonly arc4Name: string\n readonly otherEncodeableTypes: WType[]\n constructor({\n decodeType,\n arc4Name,\n otherEncodeableTypes,\n ...rest\n }: {\n decodeType: WType | null\n arc4Name: string\n otherEncodeableTypes: WType[]\n name: string\n immutable?: boolean\n scalarType: AVMType | null\n ephemeral?: boolean\n }) {\n super(rest)\n this.arc4Name = arc4Name\n this.decodeType = decodeType\n this.otherEncodeableTypes = otherEncodeableTypes\n }\n}\n\nexport class WStructType extends WType {\n fields: Record<string, WType>\n\n constructor({ fields, name }: { fields: Record<string, WType>; name: string }) {\n super({\n name,\n scalarType: null,\n immutable: true,\n })\n this.fields = fields\n }\n}\n\nexport class WTuple extends WType {\n types: WType[]\n constructor(props: { types: WType[]; immutable?: boolean }) {\n super({\n name: 'WTuple',\n scalarType: null,\n immutable: props.immutable ?? true,\n })\n invariant(props.types.length, 'Tuple length cannot be zero')\n this.types = props.types\n }\n\n toString(): string {\n return `${this.immutable ? 'readonly' : ''}tuple[${this.types.join(', ')}]`\n }\n}\nexport class WArray extends WType {\n readonly elementType: WType\n constructor(props: { itemType: WType; immutable: boolean }) {\n super({\n name: 'WArray',\n scalarType: null,\n immutable: props.immutable,\n })\n this.elementType = props.itemType\n }\n}\n\nexport class WEnumeration extends WType {\n readonly sequenceType: WType\n constructor(props: { sequenceType: WType }) {\n super({\n name: 'WArray',\n scalarType: null,\n immutable: true,\n })\n this.sequenceType = props.sequenceType\n }\n}\nexport class WGroupTransaction extends WType {\n transactionType: TransactionKind | null\n constructor({ transactionType }: { transactionType?: TransactionKind }) {\n super({\n scalarType: AVMType.uint64,\n name: transactionType === undefined ? 'group_transaction' : `group_transaction_${TransactionKind[transactionType]}`,\n })\n this.transactionType = transactionType ?? null\n }\n}\nexport class WInnerTransaction extends WType {\n transactionType: TransactionKind | null\n constructor({ transactionType }: { transactionType?: TransactionKind }) {\n super({\n scalarType: null,\n name: transactionType === undefined ? 'inner_transaction' : `inner_transaction_${TransactionKind[transactionType]}`,\n })\n this.transactionType = transactionType ?? null\n }\n}\nexport class WInnerTransactionFields extends WType {\n transactionType: TransactionKind | null\n constructor({ transactionType }: { transactionType?: TransactionKind }) {\n super({\n scalarType: null,\n name: transactionType === undefined ? 'inner_transaction_fields' : `inner_transaction_fields_${TransactionKind[transactionType]}`,\n })\n this.transactionType = transactionType ?? null\n }\n}\n\nexport class ARC4UIntN extends ARC4Type {\n readonly n: bigint\n constructor({ n }: { n: bigint }) {\n super({\n name: `arc4.uint${n}`,\n scalarType: AVMType.bytes,\n decodeType: n <= 64 ? uint64WType : biguintWType,\n arc4Name: `uint${n}`,\n otherEncodeableTypes: [uint64WType, biguintWType, boolWType],\n })\n this.n = n\n }\n}\nexport class ARC4UFixedNxM extends ARC4Type {}\n\nexport class ARC4Struct extends ARC4Type {}\n\nexport abstract class ARC4Array extends ARC4Type {\n readonly elementType: ARC4Type\n protected constructor(props: { arc4Name: string; otherEncodeableTypes: WType[]; name: string; elementType: ARC4Type }) {\n super({ decodeType: null, scalarType: AVMType.bytes, immutable: false, ...props })\n this.elementType = props.elementType\n }\n}\n\nexport class ARC4DynamicArray extends ARC4Array {\n readonly sourceLocation: SourceLocation | null\n constructor({ elementType, sourceLocation }: { elementType: ARC4Type; sourceLocation?: SourceLocation }) {\n super({ elementType, name: `arc4.dynamic_array<${elementType.name}>`, arc4Name: `${elementType.arc4Name}[]`, otherEncodeableTypes: [] })\n this.sourceLocation = sourceLocation ?? null\n }\n}\nexport class ARC4StaticArray extends ARC4Array {\n readonly sourceLocation: SourceLocation | null\n readonly arraySize: bigint\n constructor({ elementType, sourceLocation, arraySize }: { arraySize: bigint; elementType: ARC4Type; sourceLocation?: SourceLocation }) {\n super({\n elementType,\n name: `arc4.static_array<${elementType.name}>`,\n arc4Name: `${elementType.arc4Name}[${arraySize}]`,\n otherEncodeableTypes: [],\n })\n this.sourceLocation = sourceLocation ?? null\n this.arraySize = arraySize\n }\n}\n","import { Buffer } from 'node:buffer'\nimport { TodoError } from '../errors'\nimport { logger } from '../logger'\nimport { uint8ArrayToBase32, uint8ArrayToUtf8 } from '../util'\nimport type { AppStorageDefinition, ContractMemberNodeVisitor, ExpressionVisitor, RootNodeVisitor, StatementVisitor } from './nodes'\nimport * as nodes from './nodes'\nimport { AppStorageKind, BytesEncoding, ContractMethodTarget, InstanceMethodTarget, InstanceSuperMethodTarget, SubroutineID } from './nodes'\nimport { boolWType } from './wtypes'\n\nfunction printBytes(value: Uint8Array, encoding: BytesEncoding) {\n switch (encoding) {\n case BytesEncoding.utf8:\n return `\"${uint8ArrayToUtf8(value)}\"`\n case BytesEncoding.base64:\n return `b64<${Buffer.from(value).toString('base64')}>`\n case BytesEncoding.base32:\n return `b32<${uint8ArrayToBase32(value)}>`\n default:\n return `0x${Buffer.from(value).toString('hex')}`\n }\n}\nexport class ToCodeVisitor\n implements RootNodeVisitor<string[]>, ContractMemberNodeVisitor<string[]>, StatementVisitor<string[]>, ExpressionVisitor<string>\n{\n visitRange(expression: nodes.Range): string {\n return `urange(${expression.start.accept(this)}, ${expression.stop.accept(this)}, ${expression.step.accept(this)})`\n }\n visitVoidConstant(expression: nodes.VoidConstant): string {\n return `void`\n }\n visitGroupTransactionReference(expression: nodes.GroupTransactionReference): string {\n throw new Error('Method not implemented.')\n }\n visitPuyaLibCall(expression: nodes.PuyaLibCall): string {\n return `${expression.func}(${expression.args.map((a) => a.value.accept(this)).join(', ')})`\n }\n visitARC4Router(expression: nodes.ARC4Router): string {\n throw new Error('Method not implemented.')\n }\n visitAppStorageDefinition(contractMemberNode: AppStorageDefinition): string[] {\n throw new Error('Method not implemented.')\n }\n #singleEval = new Set<bigint>()\n visitUInt64PostfixUnaryOperation(expression: nodes.UInt64PostfixUnaryOperation): string {\n return `${expression.target.accept(this)}${expression.op}`\n }\n visitBigUIntPostfixUnaryOperation(expression: nodes.BigUIntPostfixUnaryOperation): string {\n return `${expression.target.accept(this)}${expression.op}`\n }\n visitCompiledContract(expression: nodes.CompiledContract): string {\n throw new TodoError('Method not implemented.', { sourceLocation: expression.sourceLocation })\n }\n visitCompiledLogicSig(expression: nodes.CompiledLogicSig): string {\n throw new TodoError('Method not implemented.', { sourceLocation: expression.sourceLocation })\n }\n visitLoopExit(statement: nodes.LoopExit): string[] {\n throw new TodoError('Method not implemented.', { sourceLocation: statement.sourceLocation })\n }\n visitLoopContinue(statement: nodes.LoopContinue): string[] {\n throw new TodoError('Method not implemented.', { sourceLocation: statement.sourceLocation })\n }\n visitGoto(statement: nodes.Goto): string[] {\n return [`goto ${statement.target}`]\n }\n visitIntersectionSliceExpression(expression: nodes.IntersectionSliceExpression): string {\n throw new TodoError('Method not implemented.', { sourceLocation: expression.sourceLocation })\n }\n visitBoxValueExpression(expression: nodes.BoxValueExpression): string {\n if (expression.key instanceof nodes.BytesConstant) {\n return `Box[${expression.key.accept(this)}].value`\n }\n return `${expression.key.accept(this)}.value`\n }\n visitIntegerConstant(expression: nodes.IntegerConstant): string {\n if (expression.tealAlias) return expression.tealAlias\n return `${expression.value}`\n }\n visitDecimalConstant(expression: nodes.DecimalConstant): string {\n throw new TodoError('Method not implemented.', { sourceLocation: expression.sourceLocation })\n }\n visitBoolConstant(expression: nodes.BoolConstant): string {\n return expression.value ? 'True' : 'False'\n }\n visitBytesConstant(expression: nodes.BytesConstant): string {\n return printBytes(expression.value, expression.encoding)\n }\n visitStringConstant(expression: nodes.StringConstant): string {\n return `\"${expression.value}\"`\n }\n visitTemplateVar(expression: nodes.TemplateVar): string {\n throw new TodoError('Method not implemented.', { sourceLocation: expression.sourceLocation })\n }\n visitMethodConstant(expression: nodes.MethodConstant): string {\n throw new TodoError('Method not implemented.', { sourceLocation: expression.sourceLocation })\n }\n visitAddressConstant(expression: nodes.AddressConstant): string {\n throw new TodoError('Method not implemented.', { sourceLocation: expression.sourceLocation })\n }\n visitARC4Encode(expression: nodes.ARC4Encode): string {\n return `ARC4_ENCODE(${expression.value.accept(this)}, wtype=${expression.wtype})`\n }\n visitCopy(expression: nodes.Copy): string {\n return `copy(${expression.value.accept(this)})`\n }\n visitArrayConcat(expression: nodes.ArrayConcat): string {\n throw new TodoError('Method not implemented.', { sourceLocation: expression.sourceLocation })\n }\n visitArrayPop(expression: nodes.ArrayPop): string {\n throw new TodoError('Method not implemented.', { sourceLocation: expression.sourceLocation })\n }\n visitArrayExtend(expression: nodes.ArrayExtend): string {\n throw new TodoError('Method not implemented.', { sourceLocation: expression.sourceLocation })\n }\n visitARC4Decode(expression: nodes.ARC4Decode): string {\n throw new TodoError('Method not implemented.', { sourceLocation: expression.sourceLocation })\n }\n visitIntrinsicCall(expression: nodes.IntrinsicCall): string {\n const immediates = expression.immediates.length ? `<${expression.immediates.map((i) => i).join(', ')}>` : ''\n const stack = expression.stackArgs.map((a) => a.accept(this)).join(', ')\n return `${expression.opCode}${immediates}(${stack})`\n }\n visitCreateInnerTransaction(expression: nodes.CreateInnerTransaction): string {\n const fields = Array.from(expression.fields.entries())\n .map(([f, v]) => `${f}=${v.accept(this)}`)\n .join(', ')\n return `create_inner_transaction(${fields})`\n }\n visitUpdateInnerTransaction(expression: nodes.UpdateInnerTransaction): string {\n const fields = Array.from(expression.fields.entries())\n .map(([f, v]) => `${f}=${v.accept(this)}`)\n .join(', ')\n return `update_inner_transaction(${expression.itxn.accept(this)}, ${fields})`\n }\n visitCheckedMaybe(expression: nodes.CheckedMaybe): string {\n return `checked_maybe(${expression.expr.accept(this)}, comment=${expression.comment})`\n }\n visitTupleExpression(expression: nodes.TupleExpression): string {\n return `<tuple>[${expression.items.map((i) => i.accept(this)).join(', ')}]`\n }\n visitTupleItemExpression(expression: nodes.TupleItemExpression): string {\n return `${expression.base.accept(this)}.${expression.index}`\n }\n visitVarExpression(expression: nodes.VarExpression): string {\n return expression.name\n }\n visitInnerTransactionField(expression: nodes.InnerTransactionField): string {\n const indexAccess = expression.arrayIndex ? `[${expression.arrayIndex.accept(this)}]` : ''\n return `${expression.itxn.accept(this)}.${expression.field}${indexAccess}`\n }\n visitSubmitInnerTransaction(expression: nodes.SubmitInnerTransaction): string {\n return `submit_txn(${expression.itxns.map((i) => i.accept(this)).join(', ')})`\n }\n visitFieldExpression(expression: nodes.FieldExpression): string {\n throw new TodoError('Method not implemented.', { sourceLocation: expression.sourceLocation })\n }\n visitIndexExpression(expression: nodes.IndexExpression): string {\n return `${expression.base.accept(this)}[${expression.index.accept(this)}]`\n }\n visitSliceExpression(expression: nodes.SliceExpression): string {\n return `${expression.base.accept(this)}[${expression.beginIndex?.accept(this) ?? ''}:${expression.endIndex?.accept(this) ?? ''}]`\n }\n visitAppStateExpression(expression: nodes.AppStateExpression): string {\n return `GlobalState[${expression.key.accept(this)}]`\n }\n visitAppAccountStateExpression(expression: nodes.AppAccountStateExpression): string {\n return `LocalState[${expression.account.accept(this)}][${expression.key.accept(this)}]`\n }\n visitSingleEvaluation(expression: nodes.SingleEvaluation): string {\n if (this.#singleEval.has(expression.id)) {\n return `#${expression.id}`\n }\n this.#singleEval.add(expression.id)\n return `(#${expression.id} = ${expression.source.accept(this)})`\n }\n visitReinterpretCast(expression: nodes.ReinterpretCast): string {\n const target = expression.expr.accept(this)\n if (expression.wtype.equals(boolWType)) {\n return `Boolean(${target})`\n }\n return `reinterpret_cast<${expression.wtype}>(${target})`\n }\n visitNewArray(expression: nodes.NewArray): string {\n return `new ${expression.wtype.name}(${expression.values.map((v) => v.accept(this)).join(', ')})`\n }\n visitConditionalExpression(expression: nodes.ConditionalExpression): string {\n return `(${expression.condition.accept(this)} ? ${expression.trueExpr.accept(this)} : ${expression.falseExpr.accept(this)})`\n }\n visitAssignmentExpression(expression: nodes.AssignmentExpression): string {\n const rvalue =\n expression.value instanceof nodes.AssignmentExpression ? `(${expression.value.accept(this)})` : expression.value.accept(this)\n return `(${expression.target.accept(this)} = ${rvalue})`\n }\n visitNumericComparisonExpression(expression: nodes.NumericComparisonExpression): string {\n return `${expression.lhs.accept(this)} ${expression.operator} ${expression.rhs.accept(this)}`\n }\n visitBytesComparisonExpression(expression: nodes.BytesComparisonExpression): string {\n return `${expression.lhs.accept(this)} ${expression.operator} ${expression.rhs.accept(this)}`\n }\n visitSubroutineCallExpression(expression: nodes.SubroutineCallExpression): string {\n const target = this.visitCallTarget(expression.target)\n return `${target}(${expression.args.map((a) => a.value.accept(this)).join(', ')})`\n }\n visitCallTarget(target: nodes.SubroutineCallExpression['target']) {\n if (target instanceof SubroutineID) return target.target\n if (target instanceof ContractMethodTarget) return `${target.cref}.${target.memberName}`\n if (target instanceof InstanceMethodTarget) return `this.${target.memberName}`\n if (target instanceof InstanceSuperMethodTarget) return `super.${target.memberName}`\n throw new TodoError(`Unhandled target: ${target}`)\n }\n visitUInt64UnaryOperation(expression: nodes.UInt64UnaryOperation): string {\n return `${expression.op}${expression.expr.accept(this)}`\n }\n visitBytesUnaryOperation(expression: nodes.BytesUnaryOperation): string {\n return `${expression.op}${expression.expr.accept(this)}`\n }\n visitUInt64BinaryOperation(expression: nodes.UInt64BinaryOperation): string {\n return `${expression.left.accept(this)} ${expression.op} ${expression.right.accept(this)}`\n }\n visitBigUIntBinaryOperation(expression: nodes.BigUIntBinaryOperation): string {\n return `${expression.left.accept(this)} ${expression.op} ${expression.right.accept(this)}`\n }\n visitBytesBinaryOperation(expression: nodes.BytesBinaryOperation): string {\n return `${expression.left.accept(this)} ${expression.op} ${expression.right.accept(this)}`\n }\n visitBooleanBinaryOperation(expression: nodes.BooleanBinaryOperation): string {\n return `${expression.left.accept(this)} ${expression.op} ${expression.right.accept(this)}`\n }\n visitNot(expression: nodes.Not): string {\n return `!${expression.expr.accept(this)}`\n }\n visitEnumeration(expression: nodes.Enumeration): string {\n return `enumerate(${expression.expr.accept(this)})`\n }\n visitReversed(expression: nodes.Reversed): string {\n throw new TodoError('Method not implemented.', { sourceLocation: expression.sourceLocation })\n }\n visitStateGet(expression: nodes.StateGet): string {\n return `STATE_GET(${expression.field.accept(this)}, default=${expression.default.accept(this)})`\n }\n\n visitStateDelete(expression: nodes.StateDelete): string {\n return `STATE_DEL(${expression.field.accept(this)})`\n }\n visitStateGetEx(expression: nodes.StateGetEx): string {\n return `STATE_GET_EX(${expression.field.accept(this)})`\n\n throw new TodoError('Method not implemented.', { sourceLocation: expression.sourceLocation })\n }\n visitStateExists(expression: nodes.StateExists): string {\n return `STATE_EXISTS(${expression.field.accept(this)})`\n }\n visitNewStruct(expression: nodes.NewStruct): string {\n throw new TodoError('Method not implemented.', { sourceLocation: expression.sourceLocation })\n }\n visitExpressionStatement(statement: nodes.ExpressionStatement): string[] {\n return [statement.expr.accept(this)]\n }\n visitBlock(statement: nodes.Block): string[] {\n return [...(statement.label ? [`${statement.label}:`] : []), ...statement.body.flatMap((b) => b.accept(this))]\n }\n visitIfElse(statement: nodes.IfElse): string[] {\n return [\n `if (${statement.condition.accept(this)}) {`,\n ...indent(statement.ifBranch.accept(this)),\n ...(statement.elseBranch ? ['} else {', ...indent(statement.elseBranch.accept(this)), '}'] : ['}']),\n ]\n }\n visitSwitch(statement: nodes.Switch): string[] {\n return [\n `switch (${statement.value.accept(this)}) {`,\n ...indent(\n Array.from(statement.cases.entries()).flatMap(([clause, block]) => [`case ${clause.accept(this)}:`, ...indent(block.accept(this))]),\n ),\n ...(statement.defaultCase ? indent(['default:', ...indent(statement.defaultCase.accept(this))]) : []),\n '}',\n ]\n }\n visitWhileLoop(statement: nodes.WhileLoop): string[] {\n return [`while (${statement.condition.accept(this)}) {`, ...indent(statement.loopBody.accept(this)), '}']\n }\n visitReturnStatement(statement: nodes.ReturnStatement): string[] {\n return [`return ${statement.value?.accept(this) ?? ''}`]\n }\n visitAssignmentStatement(statement: nodes.AssignmentStatement): string[] {\n return [`var ${statement.target.accept(this)}: ${statement.target.wtype} = ${statement.value.accept(this)}`]\n }\n visitUInt64AugmentedAssignment(statement: nodes.UInt64AugmentedAssignment): string[] {\n throw new TodoError('Method not implemented.', { sourceLocation: statement.sourceLocation })\n }\n visitBigUIntAugmentedAssignment(statement: nodes.BigUIntAugmentedAssignment): string[] {\n throw new TodoError('Method not implemented.', { sourceLocation: statement.sourceLocation })\n }\n visitBytesAugmentedAssignment(statement: nodes.BytesAugmentedAssignment): string[] {\n throw new TodoError('Method not implemented.', { sourceLocation: statement.sourceLocation })\n }\n visitForInLoop(statement: nodes.ForInLoop): string[] {\n return [\n `for (${statement.items.accept(this)} in ${statement.sequence.accept(this)}) {`,\n ...indent(statement.loopBody.accept(this)),\n '}',\n ]\n }\n visitSubroutine(moduleStatement: nodes.Subroutine): string[] {\n const args = moduleStatement.args.map((a) => `${a.name}: ${a.wtype}`).join(', ')\n return [\n `subroutine ${moduleStatement.name}(${args}): ${moduleStatement.returnType}`,\n '{',\n ...indent(moduleStatement.body.accept(this)),\n '}',\n ]\n }\n visitContractMethod(statement: nodes.ContractMethod): string[] {\n return [`${statement.memberName}(): ${statement.returnType}`, '{', ...indent(statement.body.accept(this)), '}', '']\n }\n visitLogicSignature(moduleStatement: nodes.LogicSignature): string[] {\n throw new TodoError('Method not implemented.', { sourceLocation: moduleStatement.sourceLocation })\n }\n visitContractFragment(c: nodes.ContractFragment): string[] {\n const body: string[] = []\n if (c.appState.size) {\n const storageByKind = Array.from(c.appState.values()).reduce(\n (acc, cur) => acc.set(cur.kind, [...(acc.get(cur.kind) ?? []), cur]),\n new Map<AppStorageKind, AppStorageDefinition[]>(),\n )\n for (const [name, kind] of [\n ['globals', AppStorageKind.appGlobal],\n ['locals', AppStorageKind.accountLocal],\n ['boxes', AppStorageKind.box],\n ] as const) {\n const items = storageByKind.get(kind)\n if (items?.length) {\n body.push(\n `${name} {`,\n ...indent(\n items.map((g) =>\n g.keyWtype ? `[${g.key.accept(this)}]: ${g.keyWtype} => ${g.storageWtype}` : `[${g.key.accept(this)}]: ${g.storageWtype}`,\n ),\n ),\n '}',\n )\n }\n }\n }\n if (c.reservedScratchSpace.size) {\n logger.warn(c.sourceLocation, 'Handle reservedScratchSpace to-code')\n }\n if (c.init) {\n body.push(...this.visitSpecialMethod(c.init, 'constructor'))\n }\n if (c.approvalProgram) {\n body.push(...this.visitSpecialMethod(c.approvalProgram, 'approvalProgram'))\n }\n if (c.clearProgram) {\n body.push(...this.visitSpecialMethod(c.clearProgram, 'clearProgram'))\n }\n for (const method of c.subroutines) {\n body.push(...method.accept(this))\n }\n\n const header = ['contract', c.name]\n if (c.bases.length) {\n header.push('extends', c.bases.map((b) => `${b.moduleName}::${b.className}`).join(', '))\n }\n\n return [header.join(' '), '{', ...indent(body), '}']\n }\n\n visitSpecialMethod(statement: nodes.ContractMethod, name: string): string[] {\n return [`${name}(): ${statement.returnType}`, '{', ...indent(statement.body.accept(this)), '}', '']\n }\n}\n\nfunction indent(lines: string[], indentSize = ' '): string[] {\n return lines.map((l) => `${indentSize}${l}`)\n}\n","import * as fs from 'node:fs'\nimport upath from 'upath'\nimport { logger } from './logger'\n\nexport enum ArtifactKind {\n Awst,\n AwstJson,\n}\n\nexport function writeArtifact<TObj>({\n sourceFile,\n outDir,\n kind,\n obj,\n buildArtifact,\n}: {\n sourceFile: string\n outDir: string\n kind: ArtifactKind\n artifactName?: string\n buildArtifact(obj: TObj): string\n obj: TObj\n}) {\n let outFilePath: string\n switch (kind) {\n case ArtifactKind.Awst:\n outFilePath = upath.join(outDir, `${upath.basename(sourceFile, '.algo.ts')}.awst`)\n break\n case ArtifactKind.AwstJson:\n outFilePath = upath.join(outDir, `${upath.basename(sourceFile, '.algo.ts')}.awst.json`)\n break\n }\n\n const content = buildArtifact(obj)\n logger.info(undefined, `Writing ${outFilePath}`)\n fs.writeFileSync(outFilePath, content, 'utf-8')\n}\n","import type { DeliberateAny, Props } from '../typescript-helpers'\nimport { codeInvariant, invariant } from '../util'\nimport type { Expression, Statement } from './nodes'\nimport {\n AssignmentExpression,\n AssignmentStatement,\n BigUIntBinaryOperation,\n Block,\n BoolConstant,\n BooleanBinaryOperation,\n BytesComparisonExpression,\n BytesConstant,\n BytesEncoding,\n CheckedMaybe,\n concreteNodes,\n Copy,\n ExpressionStatement,\n IntegerConstant,\n IntrinsicCall,\n MethodDocumentation,\n Not,\n NumericComparisonExpression,\n SingleEvaluation,\n StringConstant,\n TupleExpression,\n TupleItemExpression,\n UInt64BinaryOperation,\n VoidConstant,\n} from './nodes'\nimport type { SourceLocation } from './source-location'\nimport type { WType } from './wtypes'\nimport * as wtypes from './wtypes'\nimport { boolWType, voidWType, WTuple } from './wtypes'\n\ntype ConcreteNodes = typeof concreteNodes\n\nlet singleEval = 0n\nconst explicitNodeFactory = {\n voidConstant(props: { sourceLocation: SourceLocation }): VoidConstant {\n return new VoidConstant({\n ...props,\n wtype: voidWType,\n })\n },\n bytesConstant(props: { value: Uint8Array; encoding?: BytesEncoding; sourceLocation: SourceLocation; wtype?: WType }): BytesConstant {\n return new BytesConstant({\n encoding: BytesEncoding.unknown,\n wtype: wtypes.bytesWType,\n ...props,\n })\n },\n stringConstant(props: { value: string; sourceLocation: SourceLocation }): StringConstant {\n return new StringConstant({\n ...props,\n wtype: wtypes.stringWType,\n })\n },\n uInt64Constant(props: { value: bigint; tealAlias?: string; sourceLocation: SourceLocation }): IntegerConstant {\n return new IntegerConstant({\n ...props,\n wtype: wtypes.uint64WType,\n tealAlias: props.tealAlias ?? null,\n })\n },\n bigUIntConstant(props: { value: bigint; sourceLocation: SourceLocation }): IntegerConstant {\n return new IntegerConstant({\n ...props,\n wtype: wtypes.biguintWType,\n tealAlias: null,\n })\n },\n not(props: { expr: Expression; sourceLocation: SourceLocation }): Not {\n return new Not({\n ...props,\n wtype: boolWType,\n })\n },\n uInt64BinaryOperation(props: Omit<Props<UInt64BinaryOperation>, 'wtype'>): UInt64BinaryOperation {\n return new UInt64BinaryOperation({\n ...props,\n wtype: wtypes.uint64WType,\n })\n },\n bigUIntBinaryOperation(props: Omit<Props<BigUIntBinaryOperation>, 'wtype'>): BigUIntBinaryOperation {\n return new BigUIntBinaryOperation({\n ...props,\n wtype: wtypes.biguintWType,\n })\n },\n numericComparisonExpression(props: Omit<Props<NumericComparisonExpression>, 'wtype'>): NumericComparisonExpression {\n return new NumericComparisonExpression({\n ...props,\n wtype: boolWType,\n })\n },\n bytesComparisonExpression(props: Omit<Props<BytesComparisonExpression>, 'wtype'>): BytesComparisonExpression {\n codeInvariant(\n props.lhs.wtype.equals(props.rhs.wtype),\n `Operands type mismatch. lhs is ${props.lhs.wtype}, rhs is ${props.rhs.wtype}`,\n props.sourceLocation,\n )\n return new BytesComparisonExpression({\n ...props,\n wtype: boolWType,\n })\n },\n boolConstant(props: { value: boolean; sourceLocation: SourceLocation }): BoolConstant {\n return new BoolConstant({\n ...props,\n wtype: wtypes.boolWType,\n })\n },\n singleEvaluation({ source }: { source: Expression }) {\n return new SingleEvaluation({\n id: singleEval++,\n sourceLocation: source.sourceLocation,\n wtype: source.wtype,\n source,\n })\n },\n expressionStatement({ expr }: { expr: Expression }) {\n return new ExpressionStatement({\n expr,\n sourceLocation: expr.sourceLocation,\n })\n },\n block(\n { sourceLocation, comment, label }: { sourceLocation: SourceLocation; comment?: string; label?: string },\n ...statements: Array<Statement | Statement[]>\n ) {\n return new Block({\n body: statements.flat(),\n sourceLocation,\n comment: comment ?? null,\n label: label ?? null,\n })\n },\n booleanBinaryOperation(props: Omit<Props<BooleanBinaryOperation>, 'wtype'>) {\n return new BooleanBinaryOperation({\n ...props,\n wtype: boolWType,\n })\n },\n assignmentExpression({\n target,\n value,\n sourceLocation,\n }: {\n target: AssignmentExpression['target']\n value: Expression\n sourceLocation: SourceLocation\n }) {\n codeInvariant(target.wtype.equals(value.wtype), `Assignment target type ${target.wtype} must match assigned value type ${value.wtype}`)\n return new AssignmentExpression({\n target,\n value,\n wtype: value.wtype,\n sourceLocation,\n })\n },\n assignmentStatement({\n target,\n value,\n sourceLocation,\n }: {\n target: AssignmentStatement['target']\n value: Expression\n sourceLocation: SourceLocation\n }) {\n codeInvariant(target.wtype.equals(value.wtype), `Assignment target type ${target.wtype} must match assigned value type ${value.wtype}`)\n return new AssignmentStatement({\n target,\n value,\n sourceLocation,\n })\n },\n tupleExpression(props: Omit<Props<TupleExpression>, 'wtype'>) {\n return new TupleExpression({\n ...props,\n wtype: new WTuple({ types: props.items.map((i) => i.wtype), immutable: false }),\n })\n },\n methodDocumentation(props?: { description?: string | null; args?: Map<string, string>; returns?: string | null }) {\n return new MethodDocumentation({\n args: props?.args ?? new Map(),\n description: props?.description ?? null,\n returns: props?.returns ?? null,\n })\n },\n intrinsicCall(props: Omit<Props<IntrinsicCall>, 'comment'> & { comment?: string | null }) {\n return new IntrinsicCall({\n ...props,\n comment: props.comment ?? null,\n })\n },\n copy({ value, sourceLocation }: { value: Expression; sourceLocation: SourceLocation }) {\n return new Copy({\n value,\n sourceLocation,\n wtype: value.wtype,\n })\n },\n checkedMaybe({ expr, comment }: { expr: Expression; comment: string }) {\n invariant(expr.wtype instanceof WTuple && expr.wtype.types.length === 2, 'expr WType must be WTuple of 2')\n invariant(expr.wtype.types[1].equals(boolWType), '2nd tuple item type must be bool')\n return new CheckedMaybe({\n expr,\n comment,\n sourceLocation: expr.sourceLocation,\n wtype: expr.wtype.types[0],\n })\n },\n tupleItemExpression(props: Omit<Props<TupleItemExpression>, 'wtype'>) {\n invariant(\n props.base.wtype instanceof WTuple && props.base.wtype.types.length > Number(props.index),\n 'expr.base must be WTuple with length greater than index',\n )\n return new TupleItemExpression({\n ...props,\n wtype: props.base.wtype.types[Number(props.index)],\n })\n },\n} satisfies { [key in keyof ConcreteNodes]?: (...args: DeliberateAny[]) => InstanceType<ConcreteNodes[key]> }\n\ntype ExplicitNodeFactory = typeof explicitNodeFactory\n\ntype DefaultNodeFactory<TKey extends keyof ConcreteNodes> = (\n ...args: ConstructorParameters<ConcreteNodes[TKey]>\n) => InstanceType<ConcreteNodes[TKey]>\n\nexport type NodeFactory = {\n [key in keyof ConcreteNodes]: FactoryMethod<key>\n}\n\ntype FactoryMethod<TKey extends keyof ConcreteNodes> = TKey extends keyof ExplicitNodeFactory\n ? ExplicitNodeFactory[TKey]\n : DefaultNodeFactory<TKey>\n\nfunction isNodeName(value: string | symbol): value is keyof ConcreteNodes {\n return typeof value === 'string' && Object.hasOwn(concreteNodes, value)\n}\n\nfunction hasExplicitFactory(value: string): value is keyof typeof explicitNodeFactory {\n return Object.hasOwn(explicitNodeFactory, value)\n}\n\nexport const nodeFactory: NodeFactory = new Proxy({} as unknown as NodeFactory, {\n get(_, property) {\n invariant(isNodeName(property), 'Property must be the name of a concrete node')\n\n if (hasExplicitFactory(property)) {\n return explicitNodeFactory[property]\n }\n return (props: DeliberateAny) => new concreteNodes[property](props)\n },\n})\n","import type { Constant, Expression } from './nodes'\nimport { BoolConstant, BytesConstant, IntegerConstant, StringConstant } from './nodes'\n\nexport function isConstant(expr: Expression): expr is Constant {\n return expr instanceof StringConstant || expr instanceof BytesConstant || expr instanceof IntegerConstant || expr instanceof BoolConstant\n}\n","import type { wtypes } from '../../awst'\nimport type { DeliberateAny } from '../../typescript-helpers'\nimport { codeInvariant } from '../../util'\n\n/**\n * Represents a public type visible to a developer of AlgoTS\n */\nexport abstract class PType {\n /**\n * Get the associated wtype for this ptype if applicable\n */\n abstract readonly wtype: wtypes.WType | undefined\n\n /**\n * Get the unaliased name of this ptype\n */\n abstract readonly name: string\n\n /**\n * Get the declaring module of this ptype\n */\n abstract readonly module: string\n\n abstract readonly singleton: boolean\n\n get fullName() {\n return `${this.module}::${this.name}`\n }\n\n get wtypeOrThrow(): wtypes.WType {\n codeInvariant(this.wtype, `${this.fullName} does not have a wtype`)\n return this.wtype\n }\n\n equals(other: PType): boolean {\n return other instanceof this.constructor && this.fullName === other.fullName\n }\n\n static equals(other: PType): boolean {\n return other instanceof this\n }\n\n equalsOrInstanceOf(other: PTypeOrClass): boolean {\n if (other instanceof Function) {\n return this instanceof other\n }\n return this.equals(other)\n }\n\n toString(): string {\n return this.name\n }\n\n getGenericArgs(): PType[] {\n return []\n }\n}\n\nexport type PTypeOrClass = PType | { new (...args: DeliberateAny[]): PType; equals(other: PType): boolean }\n","type TransientTypeError = {\n usedAsType: string\n usedInExpression: string\n}\n\nexport const transientTypeErrors = {\n arrays: (typeName) => ({\n usedAsType: `\\`${typeName}\\` is not valid as a variable, parameter, return, or property type. Please define a static tuple type or use an \\`as const\\` expression`,\n usedInExpression: `Expression of type \\`${typeName}\\` cannot be used conditionally`,\n }),\n nativeNumeric: (typeName) => ({\n usedAsType: `\\`${typeName}\\` is not valid as a variable, parameter, return, or property type. Please use an algo-ts type such as \\`biguint\\` or \\`uint64\\``,\n usedInExpression: `Expression of type \\`${typeName}\\` must be explicitly converted to an algo-ts type, for example by wrapping the expression in \\`Uint64(...)\\` or \\`BigUint(...)\\``,\n }),\n unionTypes: (typeName) => ({\n usedAsType: `Union types are not valid as a variable, parameter, return, or property type. Expression type is ${typeName}`,\n usedInExpression: `Union types are only valid in boolean expressions. Expression type is ${typeName}`,\n }),\n} satisfies Record<string, (typeName: string) => TransientTypeError>\n","import { PType } from './base'\n\nexport class IntrinsicEnumType extends PType {\n readonly wtype: undefined\n readonly name: string\n readonly factory: undefined\n readonly module: string\n readonly members: Array<[string, string]>\n readonly singleton = true\n\n constructor({ name, module, members }: { name: string; module: string; members: Array<[string, string]> }) {\n super()\n this.members = members\n this.name = name\n this.module = module\n }\n}\n","/* THIS FILE IS GENERATED BY ~/scripts/generate-op-ptypes.ts - DO NOT MODIFY DIRECTLY */\nimport { IntrinsicEnumType } from './intrinsic-enum-type'\nimport { Constants } from '../../constants'\n\nexport const base64PType = new IntrinsicEnumType({\n name: 'base64',\n module: `${Constants.algoTsPackage}/op-types.d.ts`,\n members: [\n ['URLEncoding', 'URLEncoding'],\n ['StdEncoding', 'StdEncoding'],\n ],\n})\nexport const ecPType = new IntrinsicEnumType({\n name: 'EC',\n module: `${Constants.algoTsPackage}/op-types.d.ts`,\n members: [\n ['BN254g1', 'BN254g1'],\n ['BN254g2', 'BN254g2'],\n ['BLS12_381g1', 'BLS12_381g1'],\n ['BLS12_381g2', 'BLS12_381g2'],\n ],\n})\nexport const ecdsaPType = new IntrinsicEnumType({\n name: 'ECDSA',\n module: `${Constants.algoTsPackage}/op-types.d.ts`,\n members: [\n ['Secp256k1', 'Secp256k1'],\n ['Secp256r1', 'Secp256r1'],\n ],\n})\nexport const vrfVerifyPType = new IntrinsicEnumType({\n name: 'vrf_verify',\n module: `${Constants.algoTsPackage}/op-types.d.ts`,\n members: [['VrfAlgorand', 'VrfAlgorand']],\n})\nexport const ALL_OP_ENUMS = [base64PType, ecPType, ecdsaPType, vrfVerifyPType]\n","import { wtypes } from '../../awst'\nimport { TransactionKind } from '../../awst/models'\nimport type { WType } from '../../awst/wtypes'\nimport { uint64WType, WArray, WEnumeration, WGroupTransaction, WInnerTransaction, WInnerTransactionFields, WTuple } from '../../awst/wtypes'\nimport { Constants } from '../../constants'\nimport { CodeError, InternalError, NotSupported } from '../../errors'\nimport { codeInvariant, distinct, sortBy } from '../../util'\nimport { PType } from './base'\nimport { transientTypeErrors } from './transient-type-errors'\n\nexport * from './base'\nexport * from './intrinsic-enum-type'\nexport * from './op-ptypes'\n\n/**\n * Transient types can appear in expressions but should not be used as variable or return types\n */\nexport abstract class TransientType extends PType {\n readonly name: string\n readonly module: string\n readonly singleton: boolean\n readonly typeMessage: string\n readonly expressionMessage: string\n\n constructor({\n name,\n module,\n singleton,\n typeMessage,\n expressionMessage,\n }: {\n name: string\n module: string\n singleton: boolean\n typeMessage: string\n expressionMessage: string\n }) {\n super()\n this.name = name\n this.module = module\n this.singleton = singleton\n this.typeMessage = typeMessage\n this.expressionMessage = expressionMessage\n }\n\n get wtype(): WType | undefined {\n return undefined\n }\n\n get wtypeOrThrow(): WType {\n throw new CodeError(this.typeMessage)\n }\n}\n\nexport class UnsupportedType extends PType {\n readonly wtype: undefined = undefined\n readonly name: string\n readonly module: string\n readonly singleton = false\n #fullName: string | undefined\n\n constructor({ name, module, fullName }: { name: string; module: string; fullName?: string }) {\n super()\n this.name = name\n this.module = module\n this.#fullName = fullName\n }\n\n get fullName() {\n return this.#fullName ?? super.fullName\n }\n\n get wtypeOrThrow(): WType {\n throw new NotSupported(`The type ${this.fullName} is not supported`)\n }\n}\n\nexport class ContractClassPType extends PType {\n readonly wtype = undefined\n readonly name: string\n readonly module: string\n readonly properties: Record<string, PType>\n readonly methods: Record<string, FunctionPType>\n readonly singleton = true\n readonly baseTypes: ContractClassPType[]\n\n constructor(props: {\n module: string\n name: string\n properties: Record<string, AppStorageType>\n methods: Record<string, FunctionPType>\n baseTypes: ContractClassPType[]\n }) {\n super()\n this.name = props.name\n this.module = props.module\n this.properties = props.properties\n this.methods = props.methods\n this.baseTypes = props.baseTypes\n }\n\n get isARC4(): boolean {\n return this.baseTypes.some((b) => b.isARC4)\n }\n}\n\nexport class BaseContractClassType extends ContractClassPType {\n readonly _isArc4: boolean\n get isARC4(): boolean {\n return this._isArc4\n }\n\n constructor({\n isArc4,\n ...rest\n }: {\n isArc4: boolean\n module: string\n name: string\n properties: Record<string, AppStorageType>\n methods: Record<string, FunctionPType>\n baseTypes: ContractClassPType[]\n }) {\n super(rest)\n this._isArc4 = isArc4\n }\n}\n\nexport class UnionPType extends TransientType {\n get fullName() {\n return this.types.map((t) => t.fullName).join(' | ')\n }\n readonly singleton = false\n readonly types: PType[]\n\n private constructor({ types }: { types: PType[] }) {\n let typeMessage: string\n let expressionMessage: string\n const name = types.map((t) => t.name).join(' | ')\n const transientType = types.find((t) => t instanceof TransientType)\n if (transientType) {\n if (transientType instanceof NativeNumericType) {\n typeMessage = transientTypeErrors.nativeNumeric(name).usedAsType\n expressionMessage = transientTypeErrors.nativeNumeric(name).usedInExpression\n } else {\n typeMessage = transientType.typeMessage\n expressionMessage = transientType.expressionMessage\n }\n } else {\n typeMessage = transientTypeErrors.unionTypes(name).usedAsType\n expressionMessage = transientTypeErrors.unionTypes(name).usedInExpression\n }\n super({\n name,\n module: 'lib.d.ts',\n singleton: false,\n typeMessage,\n expressionMessage,\n })\n this.types = types\n }\n\n static fromTypes(types: PType[]) {\n if (types.length === 0) {\n throw new InternalError('Cannot create union of zero types')\n }\n const distinctTypes = types.filter(distinct((t) => t.fullName)).toSorted(sortBy((t) => t.fullName))\n if (distinctTypes.length === 1) {\n return distinctTypes[0]\n }\n return new UnionPType({\n types: distinctTypes,\n })\n }\n}\n\nexport abstract class StorageProxyPType extends PType {\n readonly wtype: WType\n readonly contentType: PType\n readonly singleton = false\n\n protected constructor(props: { content: PType; keyWType: WType }) {\n super()\n this.wtype = props.keyWType\n this.contentType = props.content\n }\n\n abstract getGenericArgs(): PType[]\n}\n\nexport class GlobalStateType extends StorageProxyPType {\n static readonly baseName = 'GlobalState'\n static readonly baseFullName = `${Constants.stateModuleName}::${GlobalStateType.baseName}`\n readonly module: string = Constants.stateModuleName\n get name() {\n return `${GlobalStateType.baseName}<${this.contentType.name}>`\n }\n get fullName() {\n return `${GlobalStateType.baseFullName}<${this.contentType.fullName}>`\n }\n constructor(props: { content: PType }) {\n super({ ...props, keyWType: wtypes.stateKeyWType })\n }\n static parameterise(typeArgs: PType[]): GlobalStateType {\n codeInvariant(typeArgs.length === 1, 'GlobalState type expects exactly one type parameter')\n return new GlobalStateType({\n content: typeArgs[0],\n })\n }\n\n getGenericArgs(): PType[] {\n return [this.contentType]\n }\n}\nexport class LocalStateType extends StorageProxyPType {\n static readonly baseName = 'LocalState'\n static readonly baseFullName = `${Constants.stateModuleName}::${LocalStateType.baseName}`\n readonly module: string = Constants.stateModuleName\n get name() {\n return `${LocalStateType.baseName}<${this.contentType.name}>`\n }\n get fullName() {\n return `${LocalStateType.baseFullName}<${this.contentType.fullName}>`\n }\n constructor(props: { content: PType }) {\n super({ ...props, keyWType: wtypes.stateKeyWType })\n }\n static parameterise(typeArgs: PType[]): LocalStateType {\n codeInvariant(typeArgs.length === 1, 'LocalState type expects exactly one type parameter')\n return new LocalStateType({\n content: typeArgs[0],\n })\n }\n\n getGenericArgs(): PType[] {\n return [this.contentType]\n }\n}\nexport class BoxPType extends StorageProxyPType {\n static readonly baseName = 'Box'\n static readonly baseFullName = `${Constants.boxModuleName}::${BoxPType.baseName}`\n readonly module: string = Constants.boxModuleName\n get name() {\n return `${BoxPType.baseName}<${this.contentType.name}>`\n }\n get fullName() {\n return `${BoxPType.baseFullName}<${this.contentType.fullName}>`\n }\n constructor(props: { content: PType }) {\n super({ ...props, keyWType: wtypes.boxKeyWType })\n }\n static parameterise(typeArgs: PType[]): BoxPType {\n codeInvariant(typeArgs.length === 1, `${BoxPType.baseName} type expects exactly one type parameter`)\n return new BoxPType({\n content: typeArgs[0],\n })\n }\n\n getGenericArgs(): PType[] {\n return [this.contentType]\n }\n}\nexport class BoxMapPType extends StorageProxyPType {\n static readonly baseName = 'BoxMap'\n static readonly baseFullName = `${Constants.boxModuleName}::${BoxMapPType.baseName}`\n readonly module: string = Constants.boxModuleName\n get name() {\n return `${BoxMapPType.baseName}<${this.keyType.name}, ${this.contentType.name}>`\n }\n get fullName() {\n return `${BoxMapPType.baseFullName}<${this.keyType.name}, ${this.contentType.fullName}>`\n }\n readonly keyType: PType\n constructor(props: { content: PType; keyType: PType }) {\n super({ ...props, keyWType: wtypes.boxKeyWType })\n this.keyType = props.keyType\n }\n static parameterise(typeArgs: PType[]): BoxMapPType {\n codeInvariant(typeArgs.length === 2, `${BoxMapPType.baseName} type expects exactly two type parameters`)\n return new BoxMapPType({\n keyType: typeArgs[0],\n content: typeArgs[1],\n })\n }\n\n getGenericArgs(): PType[] {\n return [this.keyType, this.contentType]\n }\n}\nexport class BoxRefPType extends StorageProxyPType {\n readonly module = Constants.boxModuleName\n get name() {\n return 'BoxRef'\n }\n constructor() {\n super({ keyWType: wtypes.boxKeyWType, content: bytesPType })\n }\n\n getGenericArgs(): PType[] {\n return []\n }\n}\nexport type AppStorageType = GlobalStateType | LocalStateType\n\nexport function isAppStorageType(ptype: PType): ptype is AppStorageType {\n return ptype instanceof GlobalStateType || ptype instanceof LocalStateType\n}\n\n/**\n * An open generic type parameter\n */\nexport class TypeParameterType extends PType {\n readonly name: string\n readonly module: string\n readonly singleton = false\n readonly wtype = undefined\n constructor({ name, module }: { name: string; module: string }) {\n super()\n this.name = name\n this.module = module\n }\n}\n\n/**\n * A type from the typescript libs which might pop up in type reflection\n * but is not relevant to the output of the compiler\n */\nexport class InternalType extends PType {\n readonly name: string\n readonly module: string\n readonly singleton = false\n readonly wtype = undefined\n constructor({ name, module }: { name: string; module: string }) {\n super()\n this.name = name\n this.module = module\n }\n}\nexport const ClassMethodDecoratorContext = new InternalType({\n module: 'typescript/lib/lib.decorators.d.ts',\n name: 'ClassMethodDecoratorContext',\n})\n\nexport class AnyPType extends PType {\n get wtype(): never {\n throw new CodeError('`any` is not valid as a variable, parameter, return, or property type.')\n }\n readonly name = 'any'\n readonly module = 'lib.d.ts'\n readonly singleton = false\n}\n\nexport class InstanceType extends PType {\n readonly wtype: wtypes.WType\n readonly name: string\n readonly module: string\n readonly singleton = false\n\n constructor({ name, module, wtype }: { name: string; module: string; wtype: wtypes.WType }) {\n super()\n this.name = name\n this.wtype = wtype\n this.module = module\n }\n}\n\nexport class LibFunctionType extends PType {\n readonly wtype: undefined\n readonly name: string\n readonly module: string\n readonly singleton = true\n\n constructor({ name, module }: { name: string; module: string }) {\n super()\n this.name = name\n this.module = module\n }\n}\n\nexport class IntrinsicFunctionGroupType extends PType {\n readonly wtype: undefined\n readonly name: string\n readonly module: string = Constants.opModuleName\n readonly singleton = true\n\n constructor({ name }: { name: string }) {\n super()\n this.name = name\n }\n}\nexport class IntrinsicFunctionType extends PType {\n readonly wtype: undefined\n readonly name: string\n readonly module: string = Constants.opModuleName\n readonly singleton = true\n\n constructor({ name }: { name: string }) {\n super()\n this.name = name\n }\n}\n\nexport class NamespacePType extends PType {\n readonly wtype: undefined\n readonly name: string\n readonly factory: undefined\n readonly module: string\n readonly singleton = true\n\n constructor({ name, module }: { name: string; module: string }) {\n super()\n this.name = name\n this.module = module\n }\n\n get fullName() {\n return `${this.module}::*`\n }\n\n toString(): string {\n return this.module\n }\n}\n\nexport class FunctionPType extends PType {\n readonly wtype: undefined\n readonly name: string\n readonly module: string\n readonly returnType: PType\n readonly parameters: Array<readonly [string, PType]>\n readonly singleton = true\n\n constructor(props: { name: string; module: string; returnType: PType; parameters: Array<readonly [string, PType]> }) {\n super()\n this.name = props.name\n this.module = props.module\n this.returnType = props.returnType\n this.parameters = props.parameters\n }\n}\nexport class ArrayLiteralPType extends TransientType {\n get fullName() {\n return `${this.module}::[${this.items.map((i) => i.fullName).join(', ')}]`\n }\n\n readonly items: PType[]\n readonly immutable = true\n constructor(props: { items: PType[] }) {\n const name = `[${props.items.map((i) => i.name).join(', ')}]`\n super({\n module: 'lib.d.ts',\n name,\n typeMessage: transientTypeErrors.arrays(name).usedAsType,\n expressionMessage: transientTypeErrors.arrays(name).usedInExpression,\n singleton: false,\n })\n this.items = props.items\n }\n\n getArrayType(): ArrayPType {\n const itemType = UnionPType.fromTypes(this.items)\n\n return new ArrayPType({\n immutable: false,\n itemType,\n })\n }\n\n getTupleType(): TuplePType {\n return new TuplePType({\n immutable: false,\n items: this.items,\n })\n }\n}\n\nexport class TuplePType extends PType {\n readonly module: string = 'lib.d.ts'\n get name() {\n return `Tuple<${this.items.map((i) => i.name).join(', ')}>`\n }\n get fullName() {\n return `${this.module}::Tuple<${this.items.map((i) => i.fullName).join(', ')}>`\n }\n\n readonly items: PType[]\n readonly singleton = false\n readonly immutable: boolean\n constructor(props: { items: PType[]; immutable?: boolean }) {\n super()\n this.items = props.items\n this.immutable = props.immutable ?? true\n }\n\n get wtype(): WTuple {\n return new WTuple({\n types: this.items.map((i) => i.wtypeOrThrow),\n immutable: this.immutable,\n })\n }\n}\nexport class ArrayPType extends TransientType {\n readonly itemType: PType\n readonly immutable: boolean\n\n // get name() {\n // return\n // }\n get fullName() {\n return `${this.module}::Array<${this.itemType.fullName}>`\n }\n constructor(props: { itemType: PType; immutable: boolean }) {\n const name = `Array<${props.itemType.name}>`\n super({\n name,\n typeMessage: transientTypeErrors.arrays(name).usedAsType,\n expressionMessage: transientTypeErrors.arrays(name).usedInExpression,\n module: 'lib.d.ts',\n singleton: false,\n })\n this.itemType = props.itemType\n this.immutable = props.immutable\n }\n\n get wtype() {\n return new WArray({\n itemType: this.itemType.wtypeOrThrow,\n immutable: this.immutable,\n })\n }\n}\n\nexport class ObjectPType extends PType {\n #name: string\n readonly module: string\n readonly properties: Record<string, PType>\n readonly singleton = false\n\n constructor(props: { module?: string; name?: string; properties: Record<string, PType> }) {\n super()\n this.#name = props.name ?? ''\n this.module = props.module ?? ''\n this.properties = props.properties\n }\n\n static anonymous(props: Record<string, PType> | Array<[string, PType]>) {\n const properties = Array.isArray(props) ? Object.fromEntries(props) : props\n return new ObjectPType({\n properties,\n })\n }\n\n get wtype(): WTuple {\n const tupleTypes: WType[] = []\n for (const [propName, propType] of this.orderedProperties()) {\n if (propType instanceof TransientType) {\n throw new CodeError(`Property '${propName}' of ${this.name} has an unsupported type: ${propType.typeMessage}`)\n }\n tupleTypes.push(propType.wtypeOrThrow)\n }\n return new WTuple({\n types: tupleTypes,\n immutable: false,\n })\n }\n\n orderedProperties() {\n // TODO: Respect declaration order\n return Object.entries(this.properties).toSorted(sortBy(([key]) => key))\n }\n\n getPropertyType(name: string): PType {\n if (Object.hasOwn(this.properties, name)) {\n return this.properties[name]\n }\n throw new CodeError(`${this} does not have property ${name}`)\n }\n\n hasProperty(name: string): boolean {\n return Object.hasOwn(this.properties, name)\n }\n\n hasPropertyOfType(name: string, type: PType) {\n return this.hasProperty(name) && this.properties[name].equals(type)\n }\n\n get name(): string {\n // TODO: Include name in identity\n return `{${this.orderedProperties()\n .map((p) => `${p[0]}:${p[1].name}`)\n .join(',')}}`\n }\n\n get fullName(): string {\n //const alias = [this.module, this.#name].filter(Boolean).join('::')\n // TODO: include name in identity\n return `{${this.orderedProperties()\n .map((p) => `${p[0]}:${p[1].fullName}`)\n .join(',')}}`\n }\n}\n\nexport const voidPType = new InstanceType({\n name: 'void',\n module: 'lib.d.ts',\n wtype: wtypes.voidWType,\n})\nexport const neverPType = new InstanceType({\n name: 'never',\n module: 'lib.d.ts',\n wtype: wtypes.voidWType,\n})\nexport const unknownPType = new UnsupportedType({\n name: 'unknown',\n module: 'lib.d.ts',\n fullName: 'unknown',\n})\n\nexport const nullPType = new UnsupportedType({\n name: 'null',\n module: 'lib.d.ts',\n fullName: 'null',\n})\nexport const undefinedPType = new UnsupportedType({\n name: 'undefined',\n module: 'lib.d.ts',\n fullName: 'undefined',\n})\nexport const anyPType = new AnyPType()\n\nexport const boolPType = new InstanceType({\n name: 'boolean',\n module: 'lib.d.ts',\n wtype: wtypes.boolWType,\n})\n\nexport const BooleanFunction = new LibFunctionType({\n name: 'Boolean',\n module: 'typescript/lib/lib.es5.d.ts',\n})\n\nexport class NativeNumericType extends TransientType {}\n\nexport const bigIntPType = new NativeNumericType({\n name: 'bigint',\n module: 'lib.d.ts',\n singleton: false,\n typeMessage: transientTypeErrors.nativeNumeric('bigint').usedAsType,\n expressionMessage: transientTypeErrors.nativeNumeric('bigint').usedInExpression,\n})\nexport const stringPType = new InstanceType({\n name: 'string',\n module: 'lib.d.ts',\n wtype: wtypes.stringWType,\n})\nexport const StringFunction = new LibFunctionType({\n name: 'String',\n module: 'typescript/lib/lib.es5.d.ts',\n})\n\nexport const uint64PType = new InstanceType({\n name: 'uint64',\n module: Constants.primitivesModuleName,\n wtype: wtypes.uint64WType,\n})\nexport const biguintPType = new InstanceType({\n name: 'biguint',\n module: Constants.primitivesModuleName,\n wtype: wtypes.biguintWType,\n})\nexport class NumericLiteralPType extends NativeNumericType {\n readonly literalValue: bigint\n constructor({ literalValue }: { literalValue: bigint }) {\n super({\n name: `${literalValue}`,\n module: 'lib.d.ts',\n singleton: false,\n typeMessage: transientTypeErrors.nativeNumeric(literalValue.toString()).usedAsType,\n expressionMessage: transientTypeErrors.nativeNumeric(literalValue.toString()).usedInExpression,\n })\n this.literalValue = literalValue\n }\n}\nexport class BigIntLiteralPType extends NativeNumericType {\n readonly literalValue: bigint\n constructor({ literalValue }: { literalValue: bigint }) {\n super({\n name: `${literalValue}n`,\n module: 'lib.d.ts',\n singleton: false,\n typeMessage: transientTypeErrors.nativeNumeric(`${literalValue}n`).usedAsType,\n expressionMessage: transientTypeErrors.nativeNumeric(`${literalValue}n`).usedInExpression,\n })\n this.literalValue = literalValue\n }\n}\nexport const numberPType = new NativeNumericType({\n name: 'number',\n module: 'lib.d.ts',\n singleton: false,\n typeMessage: transientTypeErrors.nativeNumeric('number').usedAsType,\n expressionMessage: transientTypeErrors.nativeNumeric('number').usedInExpression,\n})\nexport const Uint64Function = new LibFunctionType({\n name: 'Uint64',\n module: Constants.primitivesModuleName,\n})\n\nexport const BigUintFunction = new LibFunctionType({\n name: 'BigUint',\n module: Constants.primitivesModuleName,\n})\nexport const bytesPType = new InstanceType({\n name: 'bytes',\n module: Constants.primitivesModuleName,\n wtype: wtypes.bytesWType,\n})\nexport const BytesFunction = new LibFunctionType({\n name: 'Bytes',\n module: Constants.primitivesModuleName,\n})\n\nexport const logFunction = new LibFunctionType({\n name: 'log',\n module: Constants.utilModuleName,\n})\nexport const assertFunction = new LibFunctionType({\n name: 'assert',\n module: Constants.utilModuleName,\n})\n\nexport const errFunction = new LibFunctionType({\n name: 'err',\n module: Constants.utilModuleName,\n})\n\nexport const assetPType = new InstanceType({\n name: 'Asset',\n wtype: wtypes.assetWType,\n module: Constants.referenceModuleName,\n})\nexport const AssetFunction = new LibFunctionType({\n name: 'Asset',\n module: Constants.referenceModuleName,\n})\nexport const accountPType = new InstanceType({\n name: 'Account',\n wtype: wtypes.accountWType,\n module: Constants.referenceModuleName,\n})\nexport const AccountFunction = new LibFunctionType({\n name: 'Account',\n module: Constants.referenceModuleName,\n})\nexport const applicationPType = new InstanceType({\n name: 'Application',\n wtype: wtypes.applicationWType,\n module: Constants.referenceModuleName,\n})\nexport const ApplicationFunctionType = new LibFunctionType({\n name: 'Application',\n module: Constants.referenceModuleName,\n})\nexport const GlobalStateFunction = new LibFunctionType({\n name: 'GlobalState',\n module: Constants.stateModuleName,\n})\nexport const LocalStateFunction = new LibFunctionType({\n name: 'LocalState',\n module: Constants.stateModuleName,\n})\nexport const BoxFunction = new LibFunctionType({\n name: BoxPType.baseName,\n module: Constants.boxModuleName,\n})\nexport const BoxMapFunction = new LibFunctionType({\n name: BoxMapPType.baseName,\n module: Constants.boxModuleName,\n})\nexport const BoxRefFunction = new LibFunctionType({\n name: 'BoxRef',\n module: Constants.boxModuleName,\n})\nexport const boxRefType = new BoxRefPType()\n\nexport const ClearStateProgram = new FunctionPType({\n name: Constants.clearStateProgramMethodName,\n module: Constants.baseContractModuleName,\n returnType: uint64PType,\n parameters: [],\n})\n\nexport const ApprovalProgram = new FunctionPType({\n name: Constants.approvalProgramMethodName,\n module: Constants.arc4ModuleName,\n returnType: boolPType,\n parameters: [],\n})\n\nexport const baseContractType = new BaseContractClassType({\n module: Constants.baseContractModuleName,\n name: 'BaseContract',\n methods: {\n clearStateProgram: ClearStateProgram,\n },\n properties: {},\n baseTypes: [],\n isArc4: false,\n})\nexport const arc4BaseContractType = new BaseContractClassType({\n module: Constants.arc4ModuleName,\n name: 'Contract',\n methods: {\n approvalProgram: ApprovalProgram,\n clearStateProgram: ClearStateProgram,\n },\n properties: {},\n baseTypes: [baseContractType],\n isArc4: true,\n})\n\nexport const arc4BareMethodDecorator = new LibFunctionType({\n module: Constants.arc4ModuleName,\n name: 'baremethod',\n})\nexport const arc4AbiMethodDecorator = new LibFunctionType({\n module: Constants.arc4ModuleName,\n name: 'abimethod',\n})\n\nexport class GroupTransactionPType extends PType {\n get wtype() {\n return new WGroupTransaction({\n transactionType: this.kind,\n })\n }\n readonly name: string\n readonly kind: TransactionKind | undefined\n readonly module = Constants.gtxnModuleName\n readonly singleton = false\n\n constructor({ kind, name }: { kind?: TransactionKind; name: string }) {\n super()\n this.name = name\n this.kind = kind\n }\n}\n\nexport class TransactionFunctionType extends LibFunctionType {\n readonly kind: TransactionKind | undefined\n\n constructor({ name, module, kind }: { name: string; module: string; kind: TransactionKind | undefined }) {\n super({ name, module })\n this.kind = kind\n }\n}\n\nexport const paymentGtxnType = new GroupTransactionPType({\n name: 'PaymentTxn',\n kind: TransactionKind.pay,\n})\nexport const PaymentTxnFunction = new TransactionFunctionType({\n name: 'PaymentTxn',\n module: Constants.gtxnModuleName,\n kind: TransactionKind.pay,\n})\nexport const keyRegistrationGtxnType = new GroupTransactionPType({\n name: 'KeyRegistrationTxn',\n kind: TransactionKind.keyreg,\n})\nexport const KeyRegistrationTxnFunction = new TransactionFunctionType({\n name: 'KeyRegistrationTxn',\n module: Constants.gtxnModuleName,\n kind: TransactionKind.keyreg,\n})\nexport const assetConfigGtxnType = new GroupTransactionPType({\n name: 'AssetConfigTxn',\n kind: TransactionKind.acfg,\n})\nexport const AssetConfigTxnFunction = new TransactionFunctionType({\n name: 'AssetConfigTxn',\n module: Constants.gtxnModuleName,\n kind: TransactionKind.acfg,\n})\nexport const assetTransferGtxnType = new GroupTransactionPType({\n name: 'AssetTransferTxn',\n kind: TransactionKind.axfer,\n})\nexport const AssetTransferTxnFunction = new TransactionFunctionType({\n name: 'AssetTransferTxn',\n module: Constants.gtxnModuleName,\n kind: TransactionKind.axfer,\n})\nexport const assetFreezeGtxnType = new GroupTransactionPType({\n name: 'AssetFreezeTxn',\n kind: TransactionKind.afrz,\n})\nexport const AssetFreezeTxnFunction = new TransactionFunctionType({\n name: 'AssetFreezeTxn',\n module: Constants.gtxnModuleName,\n kind: TransactionKind.afrz,\n})\nexport const applicationCallGtxnType = new GroupTransactionPType({\n name: 'ApplicationTxn',\n kind: TransactionKind.appl,\n})\nexport const ApplicationTxnFunction = new TransactionFunctionType({\n name: 'ApplicationTxn',\n module: Constants.gtxnModuleName,\n kind: TransactionKind.appl,\n})\nexport const anyGtxnType = new GroupTransactionPType({\n name: 'Transaction',\n kind: undefined,\n})\nexport const TransactionFunction = new TransactionFunctionType({\n name: 'Transaction',\n module: Constants.gtxnModuleName,\n kind: undefined,\n})\n\nexport const assertMatchFunction = new LibFunctionType({\n name: 'assertMatch',\n module: Constants.utilModuleName,\n})\n\nexport class Uint64EnumMemberType extends PType {\n readonly wtype = uint64WType\n readonly name: string\n readonly module: string\n readonly singleton = false\n readonly enumType: Uint64EnumType\n\n constructor(enumType: Uint64EnumType) {\n super()\n this.name = enumType.name\n this.module = enumType.module\n this.enumType = enumType\n }\n}\n\nexport class Uint64EnumType extends PType {\n get memberType(): Uint64EnumMemberType {\n return new Uint64EnumMemberType(this)\n }\n readonly wtype = uint64WType\n readonly name: string\n readonly module: string\n readonly singleton = true\n readonly members: Record<string, bigint>\n\n constructor(props: { name: string; module: string; members: Record<string, bigint> }) {\n super()\n this.name = props.name\n this.module = props.module\n this.members = props.members\n }\n}\n\nexport const transactionTypeType = new Uint64EnumType({\n module: Constants.transactionsModuleName,\n name: 'TransactionType',\n members: {\n Payment: 1n,\n KeyRegistration: 2n,\n AssetConfig: 3n,\n AssetTransfer: 4n,\n AssetFreeze: 5n,\n Application: 6n,\n },\n})\nexport const onCompleteActionType = new Uint64EnumType({\n module: Constants.arc4ModuleName,\n name: 'OnCompleteAction',\n members: {\n NoOp: 0n,\n OptIn: 1n,\n CloseOut: 2n,\n ClearState: 3n,\n UpdateApplication: 4n,\n DeleteApplication: 5n,\n },\n})\nexport const ensureBudgetFunction = new LibFunctionType({\n name: 'ensureBudget',\n module: Constants.utilModuleName,\n})\nexport const opUpFeeSourceType = new Uint64EnumType({\n module: Constants.utilModuleName,\n name: 'OpUpFeeSource',\n members: {\n GroupCredit: 0n,\n AppAccount: 1n,\n Any: 2n,\n },\n})\n\nexport const urangeFunction = new LibFunctionType({\n name: 'urange',\n module: Constants.utilModuleName,\n})\n\nexport class IterableIteratorType extends TransientType {\n readonly itemType: PType\n constructor({ itemType }: { itemType: PType }) {\n super({\n name: `${IterableIteratorType.baseName}<${itemType.name}>`,\n module: 'typescript/lib/lib.es2015.iterable.d.ts',\n typeMessage: '`IterableIterator` is not valid as a variable, parameter, return, or property type. ',\n expressionMessage: 'IterableIterator expressions can only be used in for loops',\n singleton: false,\n })\n this.itemType = itemType\n }\n static readonly baseName = 'IterableIterator'\n static readonly moduleName = 'typescript/lib/lib.es2015.iterable.d.ts'\n static readonly baseFullName = `${IterableIteratorType.moduleName}::${IterableIteratorType.baseName}`\n\n get fullName() {\n return `${GlobalStateType.baseFullName}<${this.itemType.fullName}>`\n }\n static parameterise(typeArgs: PType[]): IterableIteratorType {\n codeInvariant(typeArgs.length === 1, 'IterableIterator type expects exactly one type parameter')\n return new IterableIteratorType({\n itemType: typeArgs[0],\n })\n }\n\n get wtype(): WEnumeration {\n return new WEnumeration({ sequenceType: this.itemType.wtypeOrThrow })\n }\n\n getGenericArgs(): PType[] {\n return [this.itemType]\n }\n}\n\nexport const paymentItxnFn = new TransactionFunctionType({\n name: 'payment',\n module: Constants.itxnModuleName,\n kind: TransactionKind.pay,\n})\nexport const keyRegistrationItxnFn = new TransactionFunctionType({\n name: 'keyRegistration',\n module: Constants.itxnModuleName,\n kind: TransactionKind.keyreg,\n})\nexport const assetConfigItxnFn = new TransactionFunctionType({\n name: 'assetConfig',\n module: Constants.itxnModuleName,\n kind: TransactionKind.acfg,\n})\nexport const assetTransferItxnFn = new TransactionFunctionType({\n name: 'assetTransfer',\n module: Constants.itxnModuleName,\n kind: TransactionKind.axfer,\n})\nexport const assetFreezeItxnFn = new TransactionFunctionType({\n name: 'assetFreeze',\n module: Constants.itxnModuleName,\n kind: TransactionKind.afrz,\n})\nexport const applicationCallItxnFn = new TransactionFunctionType({\n name: 'applicationCall',\n module: Constants.itxnModuleName,\n kind: TransactionKind.appl,\n})\n\nexport class InnerTransactionPType extends PType {\n get wtype() {\n return new WInnerTransaction({\n transactionType: this.kind,\n })\n }\n readonly name: string\n readonly kind: TransactionKind | undefined\n readonly module = Constants.itxnModuleName\n readonly singleton = false\n\n constructor({ kind, name }: { kind?: TransactionKind; name: string }) {\n super()\n this.name = name\n this.kind = kind\n }\n}\nexport class ItxnParamsPType extends PType {\n get wtype() {\n return new WInnerTransactionFields({\n transactionType: this.kind,\n })\n }\n readonly name: string\n readonly kind: TransactionKind | undefined\n readonly module = Constants.itxnModuleName\n readonly singleton = false\n\n constructor({ kind, name }: { kind?: TransactionKind; name: string }) {\n super()\n this.name = name\n this.kind = kind\n }\n}\nexport const paymentItxnParamsType = new ItxnParamsPType({\n name: 'PaymentItxnParams',\n kind: TransactionKind.pay,\n})\nexport const paymentItxnType = new InnerTransactionPType({\n name: 'PaymentInnerTxn',\n kind: TransactionKind.pay,\n})\nexport const keyRegistrationItxnParamsType = new ItxnParamsPType({\n name: 'KeyRegistrationItxnParams',\n kind: TransactionKind.keyreg,\n})\nexport const keyRegistrationItxnType = new InnerTransactionPType({\n name: 'KeyRegistrationInnerTxn',\n kind: TransactionKind.keyreg,\n})\nexport const assetConfigItxnParamsType = new ItxnParamsPType({\n name: 'AssetConfigItxnParams',\n kind: TransactionKind.acfg,\n})\nexport const assetConfigItxnType = new InnerTransactionPType({\n name: 'AssetConfigInnerTxn',\n kind: TransactionKind.acfg,\n})\nexport const assetTransferItxnParamsType = new ItxnParamsPType({\n name: 'AssetTransferItxnParams',\n kind: TransactionKind.axfer,\n})\nexport const assetTransferItxnType = new InnerTransactionPType({\n name: 'AssetTransferInnerTxn',\n kind: TransactionKind.axfer,\n})\nexport const assetFreezeItxnParamsType = new ItxnParamsPType({\n name: 'AssetFreezeItxnParams',\n kind: TransactionKind.afrz,\n})\nexport const assetFreezeItxnType = new InnerTransactionPType({\n name: 'AssetFreezeInnerTxn',\n kind: TransactionKind.afrz,\n})\nexport const applicationCallItxnParamsType = new ItxnParamsPType({\n name: 'ApplicationCallItxnParams',\n kind: TransactionKind.appl,\n})\nexport const applicationItxnType = new InnerTransactionPType({\n name: 'ApplicationInnerTxn',\n kind: TransactionKind.appl,\n})\n\nexport const submitGroupItxnFunction = new LibFunctionType({\n name: 'submitGroup',\n module: Constants.itxnModuleName,\n})\n","import type { awst } from '../awst'\nimport type { SourceLocation } from '../awst/source-location'\nimport { CodeError, InternalError, throwError } from '../errors'\nimport type { DeliberateAny } from '../typescript-helpers'\nimport type { InstanceBuilder, InstanceExpressionBuilder, NodeBuilder } from './eb'\nimport { PType } from './ptypes'\nimport type { SymbolName } from './symbol-name'\n\ntype ValueExpressionBuilderCtor<TPType extends PType> = { new (expr: awst.Expression, ptype: PType): InstanceExpressionBuilder<TPType> }\ntype SingletonExpressionBuilderCtor = { new (sourceLocation: SourceLocation, ptype: PType): NodeBuilder }\n\ntype PTypeClass = { new (...args: DeliberateAny): PType }\ntype GenericPTypeClass = { new (...args: DeliberateAny): PType; get baseFullName(): string; parameterise(typeArgs: PType[]): PType }\nexport class TypeRegistry {\n get hasRegistrations() {\n return this.types.size > 0 || this.genericTypes.size > 0\n }\n\n private readonly singletonEbs: Map<PType | PTypeClass, SingletonExpressionBuilderCtor> = new Map()\n private readonly instanceEbs: Map<PType | PTypeClass, ValueExpressionBuilderCtor<PType>> = new Map()\n private readonly types: Set<PType | PTypeClass> = new Set()\n private readonly genericTypes: Set<GenericPTypeClass> = new Set()\n\n register({\n ptype,\n singletonEb,\n instanceEb,\n }:\n | {\n ptype: PType | PTypeClass\n singletonEb: SingletonExpressionBuilderCtor\n instanceEb?: undefined\n }\n | {\n ptype: PType | PTypeClass\n singletonEb?: undefined\n instanceEb: ValueExpressionBuilderCtor<PType>\n }) {\n if (this.types.has(ptype) || this.genericTypes.has(ptype as GenericPTypeClass))\n throw new InternalError(`${ptype} has already been registered`)\n this.types.add(ptype)\n if (singletonEb) {\n this.singletonEbs.set(ptype, singletonEb)\n }\n if (instanceEb) {\n this.instanceEbs.set(ptype, instanceEb)\n }\n }\n registerGeneric({ ptype, instanceEb }: { ptype: GenericPTypeClass; instanceEb: ValueExpressionBuilderCtor<PType> }) {\n if (this.genericTypes.has(ptype) || this.types.has(ptype)) throw new InternalError(`${ptype} has already been registered`)\n this.genericTypes.add(ptype)\n this.instanceEbs.set(ptype, instanceEb)\n }\n isGeneric(ptype: PType) {\n return this.genericTypes.has(ptype.constructor as GenericPTypeClass)\n }\n\n /**\n * Try to resolve a symbol name to a singleton ptype\n * @param symbolName The name of the symbol\n */\n tryResolveSingletonName(symbolName: SymbolName): PType | undefined {\n for (const v of this.singletonEbs.keys()) if (v instanceof PType && v.fullName === symbolName.fullName) return v\n return undefined\n }\n\n /**\n * Try to resolve a symbol name to an instance ptype\n * @param symbolName The name of the symbol\n */\n tryResolveInstancePType(symbolName: SymbolName): PType | undefined {\n for (const v of this.instanceEbs.keys()) {\n if (v instanceof PType && v.fullName === symbolName.fullName) return v\n }\n return undefined\n }\n\n resolveInstancePType(symbolName: SymbolName, sourceLocation: SourceLocation): PType {\n const ptype = this.tryResolveInstancePType(symbolName)\n if (!ptype) {\n if (symbolName.module.startsWith('typescript/lib')) {\n throw new CodeError(`${symbolName} type is not supported`, { sourceLocation })\n }\n throw new InternalError(`Cannot resolve ptype for symbol ${symbolName}`, {\n sourceLocation,\n })\n }\n return ptype\n }\n\n tryGetSingletonEb(ptype: PType, sourceLocation: SourceLocation): NodeBuilder | undefined {\n const eb = this.singletonEbs.get(ptype)\n if (eb) {\n return new eb(sourceLocation, ptype)\n }\n for (const [pt, eb] of this.singletonEbs.entries()) {\n if (typeof pt === 'function' && ptype instanceof pt) {\n return new eb(sourceLocation, ptype)\n }\n }\n\n return undefined\n }\n\n getSingletonEb(ptype: PType, sourceLocation: SourceLocation): NodeBuilder {\n return (\n this.tryGetSingletonEb(ptype, sourceLocation) ??\n throwError(\n new InternalError(`No singleton eb registered for ${ptype}`, {\n sourceLocation,\n }),\n )\n )\n }\n getInstanceEb(expression: awst.Expression, ptype: PType): InstanceBuilder {\n return (\n this.tryGetInstanceEb(expression, ptype) ??\n throwError(\n new InternalError(`No InstanceBuilder registered for ${ptype}`, {\n sourceLocation: expression.sourceLocation,\n }),\n )\n )\n }\n tryGetInstanceEb(expression: awst.Expression, ptype: PType): InstanceBuilder | undefined {\n const eb = this.instanceEbs.get(ptype)\n if (eb) {\n return new eb(expression, ptype)\n }\n for (const [pt, eb] of this.instanceEbs.entries()) {\n if (typeof pt === 'function' && ptype instanceof pt) {\n return new eb(expression, ptype)\n }\n }\n return undefined\n }\n\n resolveGenericPType(symbolName: SymbolName, typeArgs: PType[], sourceLocation: SourceLocation) {\n const genericType = this.tryResolveGenericPType(symbolName, typeArgs)\n if (genericType) return genericType\n throw new CodeError(`${symbolName} could not be resolved to a generic type`, { sourceLocation })\n }\n tryResolveGenericPType(symbolName: SymbolName, typeArgs: PType[]): PType | undefined {\n for (const pt of this.genericTypes.values()) {\n if (pt.baseFullName === symbolName.fullName) {\n return pt.parameterise(typeArgs)\n }\n }\n return undefined\n }\n}\nexport const typeRegistry = new TypeRegistry()\n\nexport function instanceEb(expr: awst.Expression, ptype: PType) {\n return typeRegistry.getInstanceEb(expr, ptype)\n}\n","export class SymbolName {\n public readonly module: string\n public readonly name: string\n\n constructor(props: { module: string; name: string }) {\n this.module = props.module\n this.name = props.name\n }\n\n get fullName() {\n return `${this.module}::${this.name}`\n }\n\n toString() {\n return this.fullName\n }\n}\n","import ts from 'typescript'\nimport type { SourceLocation } from '../awst/source-location'\nimport { Constants } from '../constants'\nimport { CodeError, InternalError } from '../errors'\nimport { logger } from '../logger'\nimport { codeInvariant, hasFlags, intersectsFlags, invariant, normalisePath } from '../util'\nimport type { AppStorageType, PType } from './ptypes'\nimport {\n anyPType,\n ApprovalProgram,\n arc4BaseContractType,\n ArrayPType,\n baseContractType,\n BigIntLiteralPType,\n bigIntPType,\n BooleanFunction,\n boolPType,\n ClassMethodDecoratorContext,\n ClearStateProgram,\n ContractClassPType,\n FunctionPType,\n NamespacePType,\n neverPType,\n nullPType,\n numberPType,\n NumericLiteralPType,\n ObjectPType,\n StorageProxyPType,\n StringFunction,\n stringPType,\n TuplePType,\n TypeParameterType,\n undefinedPType,\n UnionPType,\n unknownPType,\n voidPType,\n} from './ptypes'\nimport { SymbolName } from './symbol-name'\nimport { typeRegistry } from './type-registry'\n\nexport class TypeResolver {\n constructor(\n private readonly checker: ts.TypeChecker,\n private readonly programDirectory: string,\n ) {}\n\n private getUnaliasedSymbolForNode(node: ts.Node) {\n const symbol = this.checker.getSymbolAtLocation(node)\n if (symbol) {\n if (hasFlags(symbol.flags, ts.SymbolFlags.Alias)) {\n return this.checker.getAliasedSymbol(symbol)\n }\n return symbol\n }\n return undefined\n }\n\n resolveTypeParameters(node: ts.CallExpression, sourceLocation: SourceLocation) {\n if (node.typeArguments) {\n // Explicit type arguments\n return node.typeArguments.map((t) => this.resolveTypeNode(t, sourceLocation))\n }\n const sig = this.checker.getResolvedSignature(node)\n invariant(sig, 'CallExpression must resolve to a signature')\n /*\n The method getTypeArgumentsForResolvedSignature has not made it into typescript yet, but it has been\n proposed here: https://github.com/microsoft/TypeScript/issues/59637 and added to the backlog. For now\n the method has been patched into the TypeScript 5.6.2 using patch-package\n */\n const tps = this.checker.getTypeArgumentsForResolvedSignature(sig)\n return tps?.map((t) => this.resolveType(t, sourceLocation)) ?? []\n }\n\n resolve(node: ts.Node, sourceLocation: SourceLocation): PType {\n const symbol = this.getUnaliasedSymbolForNode(node)\n if (symbol !== undefined) {\n const symbolName = symbol && this.getSymbolFullName(symbol, sourceLocation)\n if (symbolName.name === '*') {\n return new NamespacePType(symbolName)\n }\n const ptype = typeRegistry.tryResolveSingletonName(symbolName)\n if (ptype === undefined && symbolName.module.startsWith(Constants.algoTsPackage)) {\n /*\n Most symbols in the algo-ts module should resolve to a singleton instance\n This can probably be removed once we've implemented ptypes for everything in algo-ts\n\n */\n if (symbolName.fullName !== baseContractType.fullName && symbolName.fullName !== arc4BaseContractType.fullName)\n logger.warn(sourceLocation, `${symbolName} could not be resolved to a singleton ptype`)\n }\n if (ptype) {\n return ptype\n }\n }\n const type = this.checker.getTypeAtLocation(node)\n if (node.kind === ts.SyntaxKind.ThisKeyword || node.kind === ts.SyntaxKind.SuperKeyword) {\n const [declaration] = type.symbol.declarations ?? []\n return this.resolve(declaration, sourceLocation)\n }\n if (ts.isConstructorDeclaration(node)) {\n const signature = this.checker.getSignatureFromDeclaration(node)\n invariant(signature, 'Constructor node must have call signature')\n const parentType = this.getTypeName(this.checker.getTypeAtLocation(node.parent), sourceLocation)\n return this.reflectFunctionType(\n new SymbolName({\n name: Constants.constructorMethodName,\n module: parentType.module,\n }),\n [signature],\n sourceLocation,\n )\n }\n return this.resolveType(type, sourceLocation)\n }\n\n resolveTypeNode(node: ts.TypeNode, sourceLocation: SourceLocation): PType {\n const type = this.checker.getTypeFromTypeNode(node)\n return this.resolveType(type, sourceLocation)\n }\n\n resolveType(tsType: ts.Type, sourceLocation: SourceLocation): PType {\n if (isUnionType(tsType)) {\n return UnionPType.fromTypes(tsType.types.map((t) => this.resolveType(t, sourceLocation)))\n }\n if (tsType.flags === ts.TypeFlags.Undefined) {\n return undefinedPType\n }\n if (hasFlags(tsType.flags, ts.TypeFlags.Null)) {\n return nullPType\n }\n if (hasFlags(tsType.flags, ts.TypeFlags.Any)) {\n return anyPType\n }\n if (intersectsFlags(tsType.flags, ts.TypeFlags.Boolean | ts.TypeFlags.BooleanLiteral)) {\n return boolPType\n }\n if (tsType.flags === ts.TypeFlags.Void) {\n return voidPType\n }\n if (intersectsFlags(tsType.flags, ts.TypeFlags.String | ts.TypeFlags.StringLiteral)) {\n return stringPType\n }\n if (tsType.flags === ts.TypeFlags.Never) {\n return neverPType\n }\n if (hasFlags(tsType.flags, ts.TypeFlags.Unknown)) {\n return unknownPType\n }\n if (intersectsFlags(tsType.flags, ts.TypeFlags.Number | ts.TypeFlags.NumberLiteral) && tsType.getSymbol() === undefined) {\n if (tsType.isNumberLiteral()) {\n return new NumericLiteralPType({ literalValue: BigInt(tsType.value) })\n }\n return numberPType\n }\n if (intersectsFlags(tsType.flags, ts.TypeFlags.BigInt | ts.TypeFlags.BigIntLiteral) && tsType.getSymbol() === undefined) {\n if (tsType.isLiteral() && typeof tsType.value === 'object') {\n return new BigIntLiteralPType({ literalValue: BigInt(tsType.value.base10Value) * (tsType.value.negative ? -1n : 1n) })\n }\n return bigIntPType\n }\n if (isTupleReference(tsType)) {\n //codeInvariant(tsType.readonly, 'Tuple types should be declared as readonly', sourceLocation)\n codeInvariant(tsType.target.minLength, 'Tuple types cannot have a zero length', sourceLocation)\n codeInvariant(tsType.target.fixedLength, 'Tuple types should have a fixed length', sourceLocation)\n codeInvariant(tsType.typeArguments, 'Tuple items must have types', sourceLocation)\n\n return new TuplePType({\n items: tsType.typeArguments.map((t) => this.resolveType(t, sourceLocation)),\n immutable: tsType.target.readonly,\n })\n }\n\n const typeName = this.getTypeName(tsType, sourceLocation)\n if (tsType.flags === ts.TypeFlags.TypeParameter) {\n return new TypeParameterType(typeName)\n }\n\n if (tsType.aliasTypeArguments?.length) {\n const typeArgs = tsType.aliasTypeArguments.map((a) => this.resolveType(a, sourceLocation))\n const gt = typeRegistry.tryResolveGenericPType(typeName, typeArgs)\n if (gt) return gt\n } else if (isTypeReference(tsType) && tsType.typeArguments?.length) {\n const typeArgs = tsType.typeArguments.map((a) => this.resolveType(a, sourceLocation))\n const gt = typeRegistry.tryResolveGenericPType(typeName, typeArgs)\n if (gt) return gt\n } else {\n const it = typeRegistry.tryResolveInstancePType(typeName)\n if (it) return it\n }\n\n // TODO: These should be resolved from the typeRegistry, but it needs to happen before checking call signatures below\n if (typeName.fullName === StringFunction.fullName) return StringFunction\n if (typeName.fullName === BooleanFunction.fullName) return BooleanFunction\n if (typeName.fullName === ClassMethodDecoratorContext.fullName) return ClassMethodDecoratorContext\n\n if (tsType.isClass()) {\n if (typeName.fullName === arc4BaseContractType.fullName) return arc4BaseContractType\n if (typeName.fullName === baseContractType.fullName) return baseContractType\n const [baseType, ...rest] = tsType.getBaseTypes()?.map((t) => this.resolveType(t, sourceLocation)) ?? []\n\n invariant(rest.length === 0, 'Class can have at most one base type')\n\n if (baseType instanceof ContractClassPType) {\n return this.reflectContractType(typeName, tsType, baseType, sourceLocation)\n }\n throw new CodeError('Classes must extend \"Contract\" or \"BaseContract\" base classes to be considered a contract', { sourceLocation })\n }\n const callSignatures = this.checker.getSignaturesOfType(tsType, ts.SignatureKind.Call)\n if (callSignatures.length) {\n return this.reflectFunctionType(typeName, callSignatures, sourceLocation)\n }\n if (this.checker.isArrayType(tsType)) {\n const itemType = tsType.getNumberIndexType()\n if (!itemType) {\n throw new CodeError('Cannot determine array item type', { sourceLocation })\n } else {\n const itemPType = this.resolveType(itemType, sourceLocation)\n return new ArrayPType({\n itemType: itemPType,\n immutable: false,\n })\n }\n }\n if (isObjectType(tsType)) {\n return this.reflectObjectType(tsType, sourceLocation)\n }\n throw new InternalError(`Cannot determine type of ${typeName}`, { sourceLocation })\n }\n\n private reflectObjectType(tsType: ts.Type, sourceLocation: SourceLocation): ObjectPType {\n const typeAlias = tsType.aliasSymbol ? this.getSymbolFullName(tsType.aliasSymbol, sourceLocation) : undefined\n\n const properties: Record<string, PType> = {}\n for (const prop of tsType.getProperties()) {\n const type = this.checker.getTypeOfSymbol(prop)\n const ptype = this.resolveType(type, sourceLocation)\n if (ptype.singleton) {\n logger.error(sourceLocation, `${ptype} is not a valid object property type`)\n } else {\n properties[prop.name] = ptype\n }\n }\n if (typeAlias) {\n return new ObjectPType({ ...typeAlias, properties })\n }\n return ObjectPType.anonymous(properties)\n }\n\n private reflectFunctionType(\n typeName: SymbolName,\n callSignatures: readonly ts.Signature[],\n sourceLocation: SourceLocation,\n ): FunctionPType {\n if (typeName.fullName === ApprovalProgram.fullName) return ApprovalProgram\n if (typeName.fullName === ClearStateProgram.fullName) return ClearStateProgram\n\n codeInvariant(callSignatures.length === 1, 'User defined functions must have exactly 1 call signature')\n const [sig] = callSignatures\n const returnType = this.resolveType(sig.getReturnType(), sourceLocation)\n const parameters = sig.getParameters().map((p) => {\n const paramType = this.checker.getTypeOfSymbol(p)\n return [p.name, this.resolveType(paramType, sourceLocation)] as const\n })\n return new FunctionPType({\n returnType,\n parameters,\n name: typeName.name,\n module: typeName.module,\n })\n }\n\n private reflectContractType(\n typeName: SymbolName,\n tsType: ts.Type,\n baseType: ContractClassPType,\n sourceLocation: SourceLocation,\n ): ContractClassPType {\n const properties: Record<string, AppStorageType> = {}\n const methods: Record<string, FunctionPType> = {}\n for (const prop of tsType.getProperties()) {\n const type = this.checker.getTypeOfSymbol(prop)\n const ptype = this.resolveType(type, sourceLocation)\n if (ptype instanceof StorageProxyPType) {\n properties[prop.name] = ptype\n } else if (ptype instanceof FunctionPType) {\n methods[prop.name] = ptype\n } else {\n throw new InternalError(`Unhandled property type ${ptype}`, { sourceLocation })\n }\n }\n return new ContractClassPType({\n properties,\n methods,\n name: typeName.name,\n module: typeName.module,\n baseTypes: [baseType],\n })\n }\n\n private getTypeName(type: ts.Type, sourceLocation: SourceLocation): SymbolName {\n if (type.aliasSymbol) {\n const name = this.getSymbolFullName(type.aliasSymbol, sourceLocation)\n // We only respect type aliases within the algo ts package, otherwise use the\n // unaliased symbol\n if (name.module.startsWith(Constants.algoTsPackage)) return name\n }\n invariant(type.symbol, 'Type must have a symbol')\n return this.getSymbolFullName(type.symbol, sourceLocation)\n }\n\n private getSymbolFullName(symbol: ts.Symbol, sourceLocation: SourceLocation): SymbolName {\n const declaration = symbol?.declarations?.[0]\n if (declaration) {\n if (\n intersectsFlags(symbol.flags, ts.SymbolFlags.Namespace) &&\n !intersectsFlags(symbol.flags, ts.SymbolFlags.Function | ts.SymbolFlags.RegularEnum)\n ) {\n return new SymbolName({\n module: normalisePath(declaration.getSourceFile().fileName, this.programDirectory),\n name: '*',\n })\n }\n return new SymbolName({ module: normalisePath(declaration.getSourceFile().fileName, this.programDirectory), name: symbol.name })\n }\n throw new InternalError(`Symbol does not have a declaration`, { sourceLocation })\n }\n}\n\nfunction isObjectType(tsType: ts.Type): tsType is ts.ObjectType {\n return hasFlags(tsType.flags, ts.TypeFlags.Object)\n}\nfunction isTypeReference(tsType: ts.Type): tsType is ts.TypeReference {\n return isObjectType(tsType) && hasFlags(tsType.objectFlags, ts.ObjectFlags.Reference)\n}\nfunction isTupleType(tsType: ts.Type): tsType is ts.TupleType {\n return isObjectType(tsType) && hasFlags(tsType.objectFlags, ts.ObjectFlags.Tuple)\n}\n\nfunction isTupleReference(tsType: ts.Type): tsType is ts.TypeReference & { target: ts.TupleType } {\n return isTypeReference(tsType) && isTupleType(tsType.target)\n}\n\nfunction isUnionType(tsType: ts.Type): tsType is ts.UnionType {\n return tsType.flags === ts.TypeFlags.Union\n}\n","/**\n * Tracks the context in which expressions should be evaluated.\n *\n * A boolean context is more lenient with mixed expression types as it is only concerned with truthy-ness\n */\nexport class EvaluationContext {\n #isBoolean: boolean = false\n\n get isBoolean() {\n return this.#isBoolean\n }\n\n enterBooleanContext(): Disposable {\n const previous = this.#isBoolean\n this.#isBoolean = true\n return {\n [Symbol.dispose]: () => {\n this.#isBoolean = previous\n },\n }\n }\n leaveBooleanContext(): Disposable {\n const previous = this.#isBoolean\n this.#isBoolean = false\n return {\n [Symbol.dispose]: () => {\n this.#isBoolean = previous\n },\n }\n }\n}\n","export function defaultRecord<TKey extends PropertyKey, TValue>(defaultInit: (key: TKey) => TValue) {\n return new Proxy({} as Record<TKey, TValue>, {\n get(target, property, receiver) {\n if (!(property in target)) {\n Object.assign(target, { [property]: defaultInit(property as TKey) })\n }\n return Reflect.get(target, property, receiver)\n },\n })\n}\n","import ts from 'typescript'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { Block, Goto } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { codeInvariant, invariant, toSubScript } from '../../util'\nimport { defaultRecord } from '../../util/default-map'\n\ntype SwitchOrLoop = 'switch' | 'loop'\ntype LoopContext = Disposable & { breakTarget: Block; continueTarget: Block; readonly hasBreaks: boolean; readonly hasContinues: boolean }\ntype SwitchContext = Disposable & {\n breakTarget: Block\n caseTarget(caseIndex: number, sourceLocation: SourceLocation): Block\n gotoCase(caseIndex: number, sourceLocation: SourceLocation): Goto\n readonly hasBreaks: boolean\n}\ntype StackData =\n | { type: 'switch'; uniqueName: string; label?: string; numBreaks: number }\n | { type: 'loop'; uniqueName: string; label?: string; numBreaks: number; numContinues: number }\n\nconst breakSuffix = 'ᵇ'\nconst continueSuffix = 'ᶜ'\n\n/**\n * Tracks parent switches and loops so that break and continue statements\n * can target the correct parent.\n */\nexport class SwitchLoopContext {\n private labelCount = defaultRecord<string, number>(() => 0)\n private unlabelledCount = defaultRecord<SwitchOrLoop, number>(() => 0)\n\n constructor() {}\n\n private switchLoopStack: Array<StackData> = []\n\n getBreakTarget(label: ts.Identifier | undefined, sourceLocation: SourceLocation): string {\n const labelName = label?.text\n const item = this.switchLoopStack.toReversed().find(({ label }) => labelName === undefined || label === labelName)\n codeInvariant(item, 'Break must must exist inside a switch or loop construct', sourceLocation)\n item.numBreaks++\n return `${item.uniqueName}${breakSuffix}`\n }\n\n getContinueTarget(label: ts.Identifier | undefined, sourceLocation: SourceLocation): string {\n const labelName = label?.text\n const item = this.switchLoopStack.toReversed().find(({ label }) => labelName === undefined || label === labelName)\n codeInvariant(item?.type === 'loop', 'Continue must must exist inside a loop construct', sourceLocation)\n item.numContinues++\n return `${item.uniqueName}${continueSuffix}`\n }\n\n enterLoop(\n node: ts.WhileStatement | ts.ForStatement | ts.ForOfStatement | ts.ForInStatement | ts.DoStatement,\n sourceLocation: SourceLocation,\n ): LoopContext {\n const label = ts.isLabeledStatement(node.parent) ? node?.parent.label : undefined\n\n const uniqueName = this.uniqueNameForLabel(label, 'loop')\n const stackData: StackData = {\n uniqueName,\n label: label?.text,\n type: 'loop',\n numBreaks: 0,\n numContinues: 0,\n }\n this.switchLoopStack.push(stackData)\n return {\n breakTarget: nodeFactory.block({ sourceLocation, label: `${uniqueName}${breakSuffix}` }),\n continueTarget: nodeFactory.block({ sourceLocation, label: `${uniqueName}${continueSuffix}` }),\n [Symbol.dispose]: () => {\n const popped = this.switchLoopStack.pop()\n invariant(popped?.uniqueName === uniqueName && popped.type === 'loop', 'Switch loop stack is unbalanced')\n },\n get hasBreaks() {\n return stackData.numBreaks > 0\n },\n get hasContinues() {\n return stackData.numContinues > 0\n },\n }\n }\n\n private uniqueNameForLabel(label: ts.Identifier | undefined, type: 'switch' | 'loop'): string {\n if (label) {\n const count = ++this.labelCount[label.text]\n return `${label.text}${toSubScript(count)}`\n } else {\n const nextCount = ++this.unlabelledCount[type]\n return `#${type}${toSubScript(nextCount)}`\n }\n }\n\n enterSwitch(node: ts.SwitchStatement, sourceLocation: SourceLocation): SwitchContext {\n const label = ts.isLabeledStatement(node.parent) ? node?.parent.label : undefined\n const uniqueName = this.uniqueNameForLabel(label, 'switch')\n const stackData: StackData = {\n uniqueName,\n label: label?.text,\n type: 'switch',\n numBreaks: 0,\n }\n this.switchLoopStack.push(stackData)\n return {\n breakTarget: nodeFactory.block({ sourceLocation, label: `${uniqueName}${breakSuffix}` }),\n caseTarget(caseIndex: number, sourceLocation: SourceLocation) {\n return nodeFactory.block({ sourceLocation, label: `${uniqueName}ᶜ${toSubScript(caseIndex)}` })\n },\n gotoCase(caseIndex: number, sourceLocation: SourceLocation): Goto {\n return nodeFactory.goto({ sourceLocation, target: `${uniqueName}ᶜ${toSubScript(caseIndex)}` })\n },\n [Symbol.dispose]: () => {\n const popped = this.switchLoopStack.pop()\n invariant(popped?.uniqueName === uniqueName && popped.type === 'switch', 'Switch loop stack is unbalanced')\n },\n get hasBreaks() {\n return stackData.numBreaks > 0\n },\n }\n }\n}\n","import type ts from 'typescript'\nimport { toSubScript } from '../../util'\n\nexport class UniqueNameResolver {\n protected readonly symbolToName: Map<ts.Symbol, string>\n protected readonly nameToCount: Map<string, number>\n\n constructor(parent?: UniqueNameResolver) {\n if (parent) {\n this.symbolToName = new Map(parent.symbolToName.entries())\n this.nameToCount = new Map(parent.nameToCount.entries())\n } else {\n this.symbolToName = new Map()\n this.nameToCount = new Map()\n }\n }\n\n /**\n * Resolve a rawName to a unique name within the scope of this resolver. When provided\n * with a symbol which has already been seen, return the same name\n * @param rawName\n * @param symbol\n */\n resolveUniqueName(rawName: string, symbol: ts.Symbol | undefined): string {\n const name = symbol && this.symbolToName.get(symbol)\n if (name) {\n return name\n }\n const nameCount = this.nameToCount.get(rawName) ?? 0\n let uniqueName\n if (nameCount === 0) {\n uniqueName = rawName\n } else {\n uniqueName = `${rawName}${toSubScript(nameCount)}`\n }\n this.nameToCount.set(rawName, nameCount + 1)\n if (symbol) {\n this.symbolToName.set(symbol, uniqueName)\n }\n return uniqueName\n }\n\n createChild(): UniqueNameResolver {\n return new UniqueNameResolver(this)\n }\n}\n","import ts from 'typescript'\nimport type { awst } from '../../awst'\nimport type { CompilationSet, ContractReference, LogicSigReference } from '../../awst/models'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { AppStorageDefinition, Constant } from '../../awst/nodes'\nimport { SourceLocation } from '../../awst/source-location'\nimport { CodeError } from '../../errors'\nimport { logger } from '../../logger'\nimport { codeInvariant, invariant } from '../../util'\nimport type { AppStorageDeclaration } from '../contract-data'\nimport type { NodeBuilder } from '../eb'\nimport type { ContractClassPType, PType } from '../ptypes'\nimport { typeRegistry } from '../type-registry'\nimport { TypeResolver } from '../type-resolver'\nimport { EvaluationContext } from './evaluation-context'\nimport { SwitchLoopContext } from './switch-loop-context'\nimport { UniqueNameResolver } from './unique-name-resolver'\n\nexport interface AwstBuildContext {\n /**\n * Get the source location of a node in the current source file\n * @param node\n */\n getSourceLocation(node: ts.Node): SourceLocation\n\n /**\n * Get NodeBuilder instance for the given identifier.\n * @param node\n */\n getBuilderForNode(node: ts.Identifier): NodeBuilder\n\n /**\n * Reflect the PType of the given node\n * @param node\n */\n getPTypeForNode(node: ts.Node): PType\n\n /**\n * Reflect generic type parameters for a call expression\n * @param node\n */\n getTypeParameters(node: ts.CallExpression): PType[]\n\n /**\n * Resolve the given identifier to a unique variable name that accounts\n * for shadowed variable names.\n * @param node\n */\n resolveVariableName(node: ts.Identifier): string\n\n /**\n * Resolve the given parameter declaration to a unique parameter name to be used\n * in destructuring assignments where no explicit parameter name is available.\n * @param node\n */\n resolveDestructuredParamName(node: ts.ParameterDeclaration): string\n\n /**\n * Generate a unique variable name for a discarded value.\n */\n generateDiscardedVarName(): string\n\n /**\n * Add a named constant to the current context\n * @param name The unique name of the constant declaration in this source file\n * @param value The compile time constant value\n */\n addConstant(name: string, value: awst.Constant): void\n\n /**\n * Retrieve the evaluation context\n */\n get evaluationCtx(): EvaluationContext\n\n /**\n * Retrieve the switch loop context\n */\n get switchLoopCtx(): SwitchLoopContext\n\n /**\n * Create a child context from this context. Used when entering a child parsing context such as a class or function.\n */\n createChildContext(): AwstBuildContext\n\n addStorageDeclaration(declaration: AppStorageDeclaration): void\n\n getStorageDeclaration(contractType: ContractClassPType, memberName: string): AppStorageDeclaration | undefined\n\n getStorageDefinitionsForContract(contractType: ContractClassPType): Map<string, AppStorageDefinition>\n\n addToCompilationSet(compilationTarget: ContractReference | LogicSigReference): void\n\n get compilationSet(): CompilationSet\n}\n\nexport function buildContextForProgram(program: ts.Program): AwstBuildContext {\n return AwstBuildContextImpl.forProgram(program)\n}\n\nclass AwstBuildContextImpl implements AwstBuildContext {\n readonly evaluationCtx = new EvaluationContext()\n readonly switchLoopCtx = new SwitchLoopContext()\n readonly typeResolver: TypeResolver\n readonly typeChecker: ts.TypeChecker\n readonly #compilationSet: Array<ContractReference | LogicSigReference>\n private constructor(\n public readonly program: ts.Program,\n private readonly constants: Map<string, awst.Constant>,\n private readonly nameResolver: UniqueNameResolver,\n private readonly storageDeclarations: Map<string, Map<string, AppStorageDeclaration>>,\n compilationSet: Array<ContractReference | LogicSigReference>,\n ) {\n this.typeChecker = program.getTypeChecker()\n this.typeResolver = new TypeResolver(this.typeChecker, this.program.getCurrentDirectory())\n this.#compilationSet = compilationSet\n }\n\n static forProgram(program: ts.Program): AwstBuildContext {\n return new AwstBuildContextImpl(program, new Map(), new UniqueNameResolver(), new Map(), [])\n }\n\n addConstant(name: string, value: Constant) {\n if (this.constants.has(name)) {\n logger.error(new CodeError(`Duplicate definitions found for constant ${name}`, { sourceLocation: value.sourceLocation }))\n return\n }\n this.constants.set(name, value)\n }\n\n createChildContext(): AwstBuildContext {\n return new AwstBuildContextImpl(\n this.program,\n new Map(this.constants),\n this.nameResolver.createChild(),\n this.storageDeclarations,\n this.#compilationSet,\n )\n }\n\n resolveDestructuredParamName(node: ts.ParameterDeclaration) {\n const symbol = (node as { symbol?: ts.Symbol }).symbol\n invariant(symbol, 'Param node must have symbol')\n return this.nameResolver.resolveUniqueName('p', symbol)\n }\n generateDiscardedVarName() {\n return this.nameResolver.resolveUniqueName('_', undefined)\n }\n resolveVariableName(node: ts.Identifier) {\n codeInvariant(ts.isIdentifier(node), 'Only basic identifiers supported for now')\n const symbol = this.typeChecker.resolveName(node.text, node, ts.SymbolFlags.All, false)\n invariant(symbol, 'There must be a symbol for an identifier node')\n return this.nameResolver.resolveUniqueName(node.text, symbol)\n }\n\n getTypeParameters(node: ts.CallExpression): PType[] {\n return this.typeResolver.resolveTypeParameters(node, this.getSourceLocation(node))\n }\n\n getPTypeForNode(node: ts.Node): PType {\n const sourceLocation = this.getSourceLocation(node)\n if (ts.isTypeNode(node)) {\n return this.typeResolver.resolveTypeNode(node, sourceLocation)\n }\n return this.typeResolver.resolve(node, sourceLocation)\n }\n\n getBuilderForNode(node: ts.Identifier): NodeBuilder {\n const sourceLocation = this.getSourceLocation(node)\n const ptype = this.typeResolver.resolve(node, sourceLocation)\n\n if (ptype.singleton) {\n return typeRegistry.getSingletonEb(ptype, sourceLocation)\n }\n const variableName = this.resolveVariableName(node)\n const constantValue = this.constants.get(variableName)\n if (constantValue) {\n return typeRegistry.getInstanceEb(constantValue, ptype)\n }\n return typeRegistry.getInstanceEb(\n nodeFactory.varExpression({\n sourceLocation,\n name: variableName,\n wtype: ptype.wtypeOrThrow,\n }),\n ptype,\n )\n }\n\n getSourceLocation(node: ts.Node) {\n const sourceFile = node.getSourceFile()\n return SourceLocation.fromNode(sourceFile, node, this.program.getCurrentDirectory())\n }\n\n addStorageDeclaration(declaration: AppStorageDeclaration): void {\n const contractDeclarations = this.storageDeclarations.get(declaration.definedIn.fullName) ?? new Map()\n if (contractDeclarations.size === 0) {\n // Add to map if new\n this.storageDeclarations.set(declaration.definedIn.fullName, contractDeclarations)\n }\n if (contractDeclarations.has(declaration.memberName)) {\n logger.error(declaration.sourceLocation, `Duplicate declaration of member ${declaration.memberName} on ${declaration.definedIn}`)\n }\n contractDeclarations.set(declaration.memberName, declaration)\n }\n\n getStorageDeclaration(contractType: ContractClassPType, memberName: string): AppStorageDeclaration | undefined {\n const declaration = this.storageDeclarations.get(contractType.fullName)?.get(memberName)\n if (declaration) return declaration\n for (const baseType of contractType.baseTypes) {\n const baseDeclaration = this.getStorageDeclaration(baseType, memberName)\n if (baseDeclaration) return baseDeclaration\n }\n return undefined\n }\n\n getStorageDefinitionsForContract(contractType: ContractClassPType): Map<string, AppStorageDefinition> {\n const result = new Map<string, AppStorageDefinition>()\n for (const baseType of contractType.baseTypes) {\n for (const [member, definition] of this.getStorageDefinitionsForContract(baseType)) {\n if (result.has(member)) {\n logger.error(\n definition.sourceLocation,\n `Redefinition of app storage member, original declared in ${result.get(member)?.sourceLocation}`,\n )\n }\n result.set(member, definition)\n }\n }\n const localDeclarations = this.storageDeclarations.get(contractType.fullName)\n if (localDeclarations) {\n for (const [member, declaration] of localDeclarations) {\n if (result.has(member)) {\n logger.error(\n declaration.sourceLocation,\n `Redefinition of app storage member, original declared in ${result.get(member)?.sourceLocation}`,\n )\n }\n result.set(member, declaration.definition)\n }\n }\n return result\n }\n\n addToCompilationSet(compilationTarget: ContractReference | LogicSigReference) {\n if (this.#compilationSet.some((s) => s.id === compilationTarget.id)) {\n logger.debug(undefined, `${compilationTarget.id} already exists in compilation set`)\n return\n }\n this.#compilationSet.push(compilationTarget)\n }\n\n get compilationSet() {\n return this.#compilationSet.slice()\n }\n}\n","import type { DeliberateAny } from '../typescript-helpers'\nimport { bigIntToUint8Array } from '../util'\nimport { nodeFactory } from './node-factory'\nimport * as awst from './nodes'\nimport type { Expression } from './nodes'\nimport { BytesEncoding } from './nodes'\nimport type { SourceLocation } from './source-location'\nimport * as wtypes from './wtypes'\n\nexport const intrinsicFactory = {\n bytesConcat({\n left,\n right,\n sourceLocation,\n }: {\n left: awst.Expression\n right: awst.Expression\n sourceLocation: SourceLocation\n }): awst.IntrinsicCall {\n // invariant(left.wtype.equals(right.wtype), 'left and right operand wtypes must match')\n return nodeFactory.intrinsicCall({\n sourceLocation,\n stackArgs: [left, right],\n immediates: [],\n wtype: left.wtype,\n opCode: 'concat',\n })\n },\n err({ sourceLocation, comment }: { sourceLocation: SourceLocation; comment: string | null }) {\n return nodeFactory.intrinsicCall({\n opCode: 'err',\n sourceLocation,\n stackArgs: [],\n immediates: [],\n wtype: wtypes.voidWType,\n comment,\n })\n },\n assert({ sourceLocation, comment, condition }: { sourceLocation: SourceLocation; comment: string | null; condition: Expression }) {\n return nodeFactory.intrinsicCall({\n opCode: 'assert',\n sourceLocation,\n stackArgs: [condition],\n immediates: [],\n wtype: wtypes.voidWType,\n comment,\n })\n },\n bytesLen({ value, sourceLocation }: { value: awst.Expression; sourceLocation: SourceLocation }) {\n return nodeFactory.intrinsicCall({\n opCode: 'len',\n stackArgs: [value],\n sourceLocation: sourceLocation,\n immediates: [],\n wtype: wtypes.uint64WType,\n })\n },\n bitLen({ value, sourceLocation }: { value: awst.Expression; sourceLocation: SourceLocation }) {\n return nodeFactory.intrinsicCall({\n opCode: 'bitlen',\n stackArgs: [value],\n sourceLocation: sourceLocation,\n immediates: [],\n wtype: wtypes.uint64WType,\n })\n },\n itob({ value, sourceLocation }: { value: awst.Expression; sourceLocation: SourceLocation }): awst.Expression {\n if (value instanceof awst.IntegerConstant) {\n return nodeFactory.bytesConstant({\n sourceLocation,\n value: bigIntToUint8Array(value.value),\n encoding: BytesEncoding.base16,\n })\n }\n return nodeFactory.intrinsicCall({\n sourceLocation,\n stackArgs: [value],\n immediates: [],\n wtype: wtypes.bytesWType,\n opCode: 'itob',\n })\n },\n btoi({ value, sourceLocation }: { value: awst.Expression; sourceLocation: SourceLocation }): awst.IntrinsicCall {\n return nodeFactory.intrinsicCall({\n sourceLocation,\n stackArgs: [value],\n immediates: [],\n wtype: wtypes.uint64WType,\n opCode: 'btoi',\n })\n },\n} satisfies Record<string, (args: DeliberateAny) => awst.Expression>\n","import { intrinsicFactory } from '../../awst/intrinsic-factory'\nimport { ContractReference } from '../../awst/models'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { AWST } from '../../awst/nodes'\nimport { SourceLocation } from '../../awst/source-location'\nimport { boolWType } from '../../awst/wtypes'\nimport { Constants } from '../../constants'\nimport { arc4BaseContractType, baseContractType } from '../ptypes'\n\nexport function buildLibAwst(): AWST[] {\n const sourceLocationArc4 = new SourceLocation({\n file: Constants.arc4ModuleName,\n line: 1,\n endLine: 1,\n column: 0,\n endColumn: 1,\n })\n const sourceLocationBase = new SourceLocation({\n file: Constants.baseContractModuleName,\n line: 1,\n endLine: 1,\n column: 0,\n endColumn: 1,\n })\n const contractCref = ContractReference.fromPType(arc4BaseContractType)\n const baseContractCref = ContractReference.fromPType(baseContractType)\n\n const baseContract = nodeFactory.contractFragment({\n id: baseContractCref,\n name: baseContractType.name,\n bases: [],\n init: null,\n subroutines: [],\n appState: new Map(),\n stateTotals: null,\n docstring: null,\n sourceLocation: sourceLocationBase,\n reservedScratchSpace: new Set(),\n approvalProgram: nodeFactory.contractMethod({\n memberName: Constants.approvalProgramMethodName,\n cref: baseContractCref,\n args: [],\n arc4MethodConfig: null,\n sourceLocation: sourceLocationBase,\n returnType: boolWType,\n synthetic: true,\n inheritable: true,\n documentation: nodeFactory.methodDocumentation(),\n body: nodeFactory.block(\n {\n sourceLocation: sourceLocationBase,\n },\n nodeFactory.expressionStatement({\n expr: intrinsicFactory.err({\n comment: 'Approval program not implemented',\n sourceLocation: sourceLocationBase,\n }),\n }),\n ),\n }),\n clearProgram: nodeFactory.contractMethod({\n memberName: Constants.clearStateProgramMethodName,\n cref: baseContractCref,\n args: [],\n arc4MethodConfig: null,\n sourceLocation: sourceLocationBase,\n returnType: boolWType,\n synthetic: true,\n inheritable: true,\n documentation: nodeFactory.methodDocumentation(),\n body: nodeFactory.block(\n {\n sourceLocation: sourceLocationBase,\n },\n nodeFactory.returnStatement({\n sourceLocation: sourceLocationBase,\n value: nodeFactory.boolConstant({ value: true, sourceLocation: sourceLocationBase }),\n }),\n ),\n }),\n })\n const contract = nodeFactory.contractFragment({\n id: contractCref,\n name: arc4BaseContractType.name,\n bases: [baseContractCref],\n init: null,\n subroutines: [],\n appState: new Map(),\n stateTotals: null,\n docstring: null,\n sourceLocation: sourceLocationArc4,\n reservedScratchSpace: new Set(),\n approvalProgram: nodeFactory.contractMethod({\n memberName: Constants.approvalProgramMethodName,\n cref: contractCref,\n args: [],\n arc4MethodConfig: null,\n sourceLocation: sourceLocationArc4,\n returnType: boolWType,\n synthetic: true,\n inheritable: true,\n documentation: nodeFactory.methodDocumentation(),\n body: nodeFactory.block(\n {\n sourceLocation: sourceLocationArc4,\n },\n nodeFactory.returnStatement({\n sourceLocation: sourceLocationArc4,\n value: nodeFactory.aRC4Router({ sourceLocation: sourceLocationArc4, wtype: boolWType }),\n }),\n ),\n }),\n clearProgram: null,\n })\n\n return [baseContract, contract]\n}\n","import { awst } from '../../awst'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError, NotSupported } from '../../errors'\nimport { logger } from '../../logger'\nimport type { PType, PTypeOrClass } from '../ptypes'\nimport { instanceEb } from '../type-registry'\n\nexport enum BuilderComparisonOp {\n eq = '===',\n ne = '!==',\n lt = '<',\n lte = '<=',\n gt = '>',\n gte = '>=',\n}\nexport enum BuilderUnaryOp {\n inc = '++',\n dec = '--',\n bit_inv = '~',\n neg = '-',\n pos = '+',\n}\n\nexport enum BuilderBinaryOp {\n add = '+',\n sub = '-',\n mult = '*',\n div = '/',\n mod = '%',\n pow = '**',\n matMult = '@',\n lshift = '<<',\n rshift = '>>',\n bitOr = '|',\n bitXor = '^',\n bitAnd = '&',\n /**\n * Eval left, return right\n * let y = 2\n * // x == 4\n * const x = (y * 3, y - 2)\n */\n comma = ',',\n}\n\nexport abstract class NodeBuilder {\n constructor(public readonly sourceLocation: SourceLocation) {}\n\n abstract readonly ptype: PType | undefined\n\n public get typeDescription(): string {\n if (this.ptype) {\n return this.ptype.name\n }\n return this.constructor.name\n }\n\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n throw new NotSupported(`Calling ${this.typeDescription}`, {\n sourceLocation,\n })\n }\n\n newCall(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n throw new NotSupported(`Calling ${this.typeDescription} with the new keyword`, { sourceLocation })\n }\n\n taggedTemplate(head: string, spans: ReadonlyArray<readonly [InstanceBuilder, string]>, sourceLocation: SourceLocation): InstanceBuilder {\n throw new NotSupported(`Tagged templates on ${this.typeDescription}`, {\n sourceLocation,\n })\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n throw new NotSupported(`Accessing member ${name} on ${this.typeDescription}`, {\n sourceLocation,\n })\n }\n\n indexAccess(index: InstanceBuilder, sourceLocation: SourceLocation): NodeBuilder {\n throw new NotSupported(`Indexing ${this.typeDescription}`, {\n sourceLocation,\n })\n }\n\n boolEval(sourceLocation: SourceLocation, negate = false): awst.Expression {\n throw new NotSupported(`Boolean evaluation of ${this.typeDescription}`, {\n sourceLocation,\n })\n }\n}\n\nexport abstract class InstanceBuilder<TPType extends PType = PType> extends NodeBuilder {\n constructor(sourceLocation: SourceLocation) {\n super(sourceLocation)\n }\n abstract get ptype(): TPType\n abstract resolve(): awst.Expression\n abstract resolveLValue(): awst.LValue\n\n resolvableToPType(ptype: PTypeOrClass): boolean {\n return this.ptype.equalsOrInstanceOf(ptype)\n }\n\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n if (this.resolvableToPType(ptype)) {\n return this\n }\n throw CodeError.cannotResolveToType({ sourceType: this.ptype, targetType: ptype, sourceLocation: this.sourceLocation })\n }\n\n singleEvaluation(): InstanceBuilder {\n const expr = this.resolve()\n if (expr instanceof awst.VarExpression) {\n return this\n }\n return instanceEb(\n nodeFactory.singleEvaluation({\n source: this.resolve(),\n }),\n this.ptype,\n )\n }\n\n toBytes(sourceLocation: SourceLocation): awst.Expression {\n throw new NotSupported(`Serializing ${this.typeDescription} to bytes`, {\n sourceLocation,\n })\n }\n\n toString(sourceLocation: SourceLocation): awst.Expression {\n throw new NotSupported(`Converting ${this.typeDescription} to string`, {\n sourceLocation,\n })\n }\n\n prefixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n throw new NotSupported(`Prefix Unary ${op} op on ${this.typeDescription}`, {\n sourceLocation,\n })\n }\n\n postfixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n throw new NotSupported(`Postfix Unary ${op} op on ${this.typeDescription}`, {\n sourceLocation,\n })\n }\n\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n throw new NotSupported(`${op} on ${this.typeDescription}`, {\n sourceLocation,\n })\n }\n\n binaryOp(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n throw new NotSupported(`${op} on ${this.typeDescription}`, {\n sourceLocation,\n })\n }\n\n iterate(sourceLocation: SourceLocation): awst.Expression {\n throw new NotSupported(`Iteration on ${this.typeDescription}`, {\n sourceLocation,\n })\n }\n\n augmentedAssignment(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n throw new NotSupported(`Augmented assignment to ${this.typeDescription} with ${op}`, {\n sourceLocation,\n })\n }\n\n hasProperty(_name: string): boolean {\n throw new NotSupported(`Has property checks on ${this.typeDescription}`)\n }\n}\n\nexport abstract class FunctionBuilder extends NodeBuilder {\n readonly ptype: PType | undefined = undefined\n\n constructor(location: SourceLocation) {\n super(location)\n }\n\n abstract call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder\n}\n\nexport abstract class ParameterlessFunctionBuilder extends FunctionBuilder {\n constructor(\n private readonly expression: Expression,\n private readonly definition: (expr: Expression, sourceLocation: SourceLocation) => NodeBuilder,\n ) {\n super(expression.sourceLocation)\n }\n\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n if (args.length) logger.error(sourceLocation, 'Function expects no arguments')\n if (typeArgs.length) logger.error(sourceLocation, 'Function expects type arguments')\n return this.definition(this.expression, sourceLocation)\n }\n}\n\nexport abstract class InstanceExpressionBuilder<TPType extends PType> extends InstanceBuilder<PType> {\n #ptype: TPType\n\n get ptype(): TPType {\n return this.#ptype\n }\n\n constructor(\n protected _expr: awst.Expression,\n ptype: TPType,\n ) {\n super(_expr.sourceLocation)\n this.#ptype = ptype\n }\n\n resolve() {\n return this._expr\n }\n\n resolveLValue() {\n return requireLValue(this.resolve())\n }\n}\n\nexport function requireLValue(expr: awst.Expression): awst.LValue {\n const lValueNodes = [\n awst.VarExpression,\n awst.FieldExpression,\n awst.IndexExpression,\n awst.TupleExpression,\n awst.AppStateExpression,\n awst.AppAccountStateExpression,\n awst.BoxValueExpression,\n ]\n if (!lValueNodes.some((l) => expr instanceof l)) {\n throw new CodeError(`Expression is not a valid assignment target`, {\n sourceLocation: expr.sourceLocation,\n })\n }\n if (expr instanceof awst.IndexExpression || expr instanceof awst.FieldExpression) {\n if (expr.base.wtype.immutable) {\n throw new CodeError(`${expr.wtype} is not a valid assignment target as it is immutable`, {\n sourceLocation: expr.sourceLocation,\n })\n }\n }\n if (expr instanceof awst.ReinterpretCast) {\n requireLValue(expr.expr)\n }\n if (expr instanceof awst.TupleExpression) {\n for (const item of expr.items) {\n requireLValue(item)\n }\n }\n return expr as awst.LValue\n}\n","import ts from 'typescript'\nimport { BinaryBooleanOperator } from '../awst/nodes'\nimport { BuilderBinaryOp, BuilderComparisonOp, BuilderUnaryOp } from '../awst_build/eb'\nimport type { DeliberateAny } from '../typescript-helpers'\n\nexport const SyntaxKindName = {\n [ts.SyntaxKind.Unknown]: 'Unknown',\n [ts.SyntaxKind.EndOfFileToken]: 'EndOfFileToken',\n [ts.SyntaxKind.SingleLineCommentTrivia]: 'SingleLineCommentTrivia',\n [ts.SyntaxKind.MultiLineCommentTrivia]: 'MultiLineCommentTrivia',\n [ts.SyntaxKind.NewLineTrivia]: 'NewLineTrivia',\n [ts.SyntaxKind.WhitespaceTrivia]: 'WhitespaceTrivia',\n [ts.SyntaxKind.ShebangTrivia]: 'ShebangTrivia',\n [ts.SyntaxKind.ConflictMarkerTrivia]: 'ConflictMarkerTrivia',\n [ts.SyntaxKind.NonTextFileMarkerTrivia]: 'NonTextFileMarkerTrivia',\n [ts.SyntaxKind.NumericLiteral]: 'NumericLiteral',\n [ts.SyntaxKind.BigIntLiteral]: 'BigIntLiteral',\n [ts.SyntaxKind.StringLiteral]: 'StringLiteral',\n [ts.SyntaxKind.JsxText]: 'JsxText',\n [ts.SyntaxKind.JsxTextAllWhiteSpaces]: 'JsxTextAllWhiteSpaces',\n [ts.SyntaxKind.RegularExpressionLiteral]: 'RegularExpressionLiteral',\n [ts.SyntaxKind.NoSubstitutionTemplateLiteral]: 'NoSubstitutionTemplateLiteral',\n [ts.SyntaxKind.TemplateHead]: 'TemplateHead',\n [ts.SyntaxKind.TemplateMiddle]: 'TemplateMiddle',\n [ts.SyntaxKind.TemplateTail]: 'TemplateTail',\n [ts.SyntaxKind.OpenBraceToken]: 'OpenBraceToken',\n [ts.SyntaxKind.CloseBraceToken]: 'CloseBraceToken',\n [ts.SyntaxKind.OpenParenToken]: 'OpenParenToken',\n [ts.SyntaxKind.CloseParenToken]: 'CloseParenToken',\n [ts.SyntaxKind.OpenBracketToken]: 'OpenBracketToken',\n [ts.SyntaxKind.CloseBracketToken]: 'CloseBracketToken',\n [ts.SyntaxKind.DotToken]: 'DotToken',\n [ts.SyntaxKind.DotDotDotToken]: 'DotDotDotToken',\n [ts.SyntaxKind.SemicolonToken]: 'SemicolonToken',\n [ts.SyntaxKind.CommaToken]: 'CommaToken',\n [ts.SyntaxKind.QuestionDotToken]: 'QuestionDotToken',\n [ts.SyntaxKind.LessThanToken]: 'LessThanToken',\n [ts.SyntaxKind.LessThanSlashToken]: 'LessThanSlashToken',\n [ts.SyntaxKind.GreaterThanToken]: 'GreaterThanToken',\n [ts.SyntaxKind.LessThanEqualsToken]: 'LessThanEqualsToken',\n [ts.SyntaxKind.GreaterThanEqualsToken]: 'GreaterThanEqualsToken',\n [ts.SyntaxKind.EqualsEqualsToken]: 'EqualsEqualsToken',\n [ts.SyntaxKind.ExclamationEqualsToken]: 'ExclamationEqualsToken',\n [ts.SyntaxKind.EqualsEqualsEqualsToken]: 'EqualsEqualsEqualsToken',\n [ts.SyntaxKind.ExclamationEqualsEqualsToken]: 'ExclamationEqualsEqualsToken',\n [ts.SyntaxKind.EqualsGreaterThanToken]: 'EqualsGreaterThanToken',\n [ts.SyntaxKind.PlusToken]: 'PlusToken',\n [ts.SyntaxKind.MinusToken]: 'MinusToken',\n [ts.SyntaxKind.AsteriskToken]: 'AsteriskToken',\n [ts.SyntaxKind.AsteriskAsteriskToken]: 'AsteriskAsteriskToken',\n [ts.SyntaxKind.SlashToken]: 'SlashToken',\n [ts.SyntaxKind.PercentToken]: 'PercentToken',\n [ts.SyntaxKind.PlusPlusToken]: 'PlusPlusToken',\n [ts.SyntaxKind.MinusMinusToken]: 'MinusMinusToken',\n [ts.SyntaxKind.LessThanLessThanToken]: 'LessThanLessThanToken',\n [ts.SyntaxKind.GreaterThanGreaterThanToken]: 'GreaterThanGreaterThanToken',\n [ts.SyntaxKind.GreaterThanGreaterThanGreaterThanToken]: 'GreaterThanGreaterThanGreaterThanToken',\n [ts.SyntaxKind.AmpersandToken]: 'AmpersandToken',\n [ts.SyntaxKind.BarToken]: 'BarToken',\n [ts.SyntaxKind.CaretToken]: 'CaretToken',\n [ts.SyntaxKind.ExclamationToken]: 'ExclamationToken',\n [ts.SyntaxKind.TildeToken]: 'TildeToken',\n [ts.SyntaxKind.AmpersandAmpersandToken]: 'AmpersandAmpersandToken',\n [ts.SyntaxKind.BarBarToken]: 'BarBarToken',\n [ts.SyntaxKind.QuestionToken]: 'QuestionToken',\n [ts.SyntaxKind.ColonToken]: 'ColonToken',\n [ts.SyntaxKind.AtToken]: 'AtToken',\n [ts.SyntaxKind.QuestionQuestionToken]: 'QuestionQuestionToken',\n [ts.SyntaxKind.BacktickToken]: 'BacktickToken',\n [ts.SyntaxKind.HashToken]: 'HashToken',\n [ts.SyntaxKind.EqualsToken]: 'EqualsToken',\n [ts.SyntaxKind.PlusEqualsToken]: 'PlusEqualsToken',\n [ts.SyntaxKind.MinusEqualsToken]: 'MinusEqualsToken',\n [ts.SyntaxKind.AsteriskEqualsToken]: 'AsteriskEqualsToken',\n [ts.SyntaxKind.AsteriskAsteriskEqualsToken]: 'AsteriskAsteriskEqualsToken',\n [ts.SyntaxKind.SlashEqualsToken]: 'SlashEqualsToken',\n [ts.SyntaxKind.PercentEqualsToken]: 'PercentEqualsToken',\n [ts.SyntaxKind.LessThanLessThanEqualsToken]: 'LessThanLessThanEqualsToken',\n [ts.SyntaxKind.GreaterThanGreaterThanEqualsToken]: 'GreaterThanGreaterThanEqualsToken',\n [ts.SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken]: 'GreaterThanGreaterThanGreaterThanEqualsToken',\n [ts.SyntaxKind.AmpersandEqualsToken]: 'AmpersandEqualsToken',\n [ts.SyntaxKind.BarEqualsToken]: 'BarEqualsToken',\n [ts.SyntaxKind.BarBarEqualsToken]: 'BarBarEqualsToken',\n [ts.SyntaxKind.AmpersandAmpersandEqualsToken]: 'AmpersandAmpersandEqualsToken',\n [ts.SyntaxKind.QuestionQuestionEqualsToken]: 'QuestionQuestionEqualsToken',\n [ts.SyntaxKind.CaretEqualsToken]: 'CaretEqualsToken',\n [ts.SyntaxKind.Identifier]: 'Identifier',\n [ts.SyntaxKind.PrivateIdentifier]: 'PrivateIdentifier',\n [ts.SyntaxKind.BreakKeyword]: 'BreakKeyword',\n [ts.SyntaxKind.CaseKeyword]: 'CaseKeyword',\n [ts.SyntaxKind.CatchKeyword]: 'CatchKeyword',\n [ts.SyntaxKind.ClassKeyword]: 'ClassKeyword',\n [ts.SyntaxKind.ConstKeyword]: 'ConstKeyword',\n [ts.SyntaxKind.ContinueKeyword]: 'ContinueKeyword',\n [ts.SyntaxKind.DebuggerKeyword]: 'DebuggerKeyword',\n [ts.SyntaxKind.DefaultKeyword]: 'DefaultKeyword',\n [ts.SyntaxKind.DeleteKeyword]: 'DeleteKeyword',\n [ts.SyntaxKind.DoKeyword]: 'DoKeyword',\n [ts.SyntaxKind.ElseKeyword]: 'ElseKeyword',\n [ts.SyntaxKind.EnumKeyword]: 'EnumKeyword',\n [ts.SyntaxKind.ExportKeyword]: 'ExportKeyword',\n [ts.SyntaxKind.ExtendsKeyword]: 'ExtendsKeyword',\n [ts.SyntaxKind.FalseKeyword]: 'FalseKeyword',\n [ts.SyntaxKind.FinallyKeyword]: 'FinallyKeyword',\n [ts.SyntaxKind.ForKeyword]: 'ForKeyword',\n [ts.SyntaxKind.FunctionKeyword]: 'FunctionKeyword',\n [ts.SyntaxKind.IfKeyword]: 'IfKeyword',\n [ts.SyntaxKind.ImportKeyword]: 'ImportKeyword',\n [ts.SyntaxKind.InKeyword]: 'InKeyword',\n [ts.SyntaxKind.InstanceOfKeyword]: 'InstanceOfKeyword',\n [ts.SyntaxKind.NewKeyword]: 'NewKeyword',\n [ts.SyntaxKind.NullKeyword]: 'NullKeyword',\n [ts.SyntaxKind.ReturnKeyword]: 'ReturnKeyword',\n [ts.SyntaxKind.SuperKeyword]: 'SuperKeyword',\n [ts.SyntaxKind.SwitchKeyword]: 'SwitchKeyword',\n [ts.SyntaxKind.ThisKeyword]: 'ThisKeyword',\n [ts.SyntaxKind.ThrowKeyword]: 'ThrowKeyword',\n [ts.SyntaxKind.TrueKeyword]: 'TrueKeyword',\n [ts.SyntaxKind.TryKeyword]: 'TryKeyword',\n [ts.SyntaxKind.TypeOfKeyword]: 'TypeOfKeyword',\n [ts.SyntaxKind.VarKeyword]: 'VarKeyword',\n [ts.SyntaxKind.VoidKeyword]: 'VoidKeyword',\n [ts.SyntaxKind.WhileKeyword]: 'WhileKeyword',\n [ts.SyntaxKind.WithKeyword]: 'WithKeyword',\n [ts.SyntaxKind.ImplementsKeyword]: 'ImplementsKeyword',\n [ts.SyntaxKind.InterfaceKeyword]: 'InterfaceKeyword',\n [ts.SyntaxKind.LetKeyword]: 'LetKeyword',\n [ts.SyntaxKind.PackageKeyword]: 'PackageKeyword',\n [ts.SyntaxKind.PrivateKeyword]: 'PrivateKeyword',\n [ts.SyntaxKind.ProtectedKeyword]: 'ProtectedKeyword',\n [ts.SyntaxKind.PublicKeyword]: 'PublicKeyword',\n [ts.SyntaxKind.StaticKeyword]: 'StaticKeyword',\n [ts.SyntaxKind.YieldKeyword]: 'YieldKeyword',\n [ts.SyntaxKind.AbstractKeyword]: 'AbstractKeyword',\n [ts.SyntaxKind.AccessorKeyword]: 'AccessorKeyword',\n [ts.SyntaxKind.AsKeyword]: 'AsKeyword',\n [ts.SyntaxKind.AssertsKeyword]: 'AssertsKeyword',\n [ts.SyntaxKind.AssertKeyword]: 'AssertKeyword',\n [ts.SyntaxKind.AnyKeyword]: 'AnyKeyword',\n [ts.SyntaxKind.AsyncKeyword]: 'AsyncKeyword',\n [ts.SyntaxKind.AwaitKeyword]: 'AwaitKeyword',\n [ts.SyntaxKind.BooleanKeyword]: 'BooleanKeyword',\n [ts.SyntaxKind.ConstructorKeyword]: 'ConstructorKeyword',\n [ts.SyntaxKind.DeclareKeyword]: 'DeclareKeyword',\n [ts.SyntaxKind.GetKeyword]: 'GetKeyword',\n [ts.SyntaxKind.InferKeyword]: 'InferKeyword',\n [ts.SyntaxKind.IntrinsicKeyword]: 'IntrinsicKeyword',\n [ts.SyntaxKind.IsKeyword]: 'IsKeyword',\n [ts.SyntaxKind.KeyOfKeyword]: 'KeyOfKeyword',\n [ts.SyntaxKind.ModuleKeyword]: 'ModuleKeyword',\n [ts.SyntaxKind.NamespaceKeyword]: 'NamespaceKeyword',\n [ts.SyntaxKind.NeverKeyword]: 'NeverKeyword',\n [ts.SyntaxKind.OutKeyword]: 'OutKeyword',\n [ts.SyntaxKind.ReadonlyKeyword]: 'ReadonlyKeyword',\n [ts.SyntaxKind.RequireKeyword]: 'RequireKeyword',\n [ts.SyntaxKind.NumberKeyword]: 'NumberKeyword',\n [ts.SyntaxKind.ObjectKeyword]: 'ObjectKeyword',\n [ts.SyntaxKind.SatisfiesKeyword]: 'SatisfiesKeyword',\n [ts.SyntaxKind.SetKeyword]: 'SetKeyword',\n [ts.SyntaxKind.StringKeyword]: 'StringKeyword',\n [ts.SyntaxKind.SymbolKeyword]: 'SymbolKeyword',\n [ts.SyntaxKind.TypeKeyword]: 'TypeKeyword',\n [ts.SyntaxKind.UndefinedKeyword]: 'UndefinedKeyword',\n [ts.SyntaxKind.UniqueKeyword]: 'UniqueKeyword',\n [ts.SyntaxKind.UnknownKeyword]: 'UnknownKeyword',\n [ts.SyntaxKind.UsingKeyword]: 'UsingKeyword',\n [ts.SyntaxKind.FromKeyword]: 'FromKeyword',\n [ts.SyntaxKind.GlobalKeyword]: 'GlobalKeyword',\n [ts.SyntaxKind.BigIntKeyword]: 'BigIntKeyword',\n [ts.SyntaxKind.OverrideKeyword]: 'OverrideKeyword',\n [ts.SyntaxKind.OfKeyword]: 'OfKeyword',\n [ts.SyntaxKind.QualifiedName]: 'QualifiedName',\n [ts.SyntaxKind.ComputedPropertyName]: 'ComputedPropertyName',\n [ts.SyntaxKind.TypeParameter]: 'TypeParameter',\n [ts.SyntaxKind.Parameter]: 'Parameter',\n [ts.SyntaxKind.Decorator]: 'Decorator',\n [ts.SyntaxKind.PropertySignature]: 'PropertySignature',\n [ts.SyntaxKind.PropertyDeclaration]: 'PropertyDeclaration',\n [ts.SyntaxKind.MethodSignature]: 'MethodSignature',\n [ts.SyntaxKind.MethodDeclaration]: 'MethodDeclaration',\n [ts.SyntaxKind.ClassStaticBlockDeclaration]: 'ClassStaticBlockDeclaration',\n [ts.SyntaxKind.Constructor]: 'Constructor',\n [ts.SyntaxKind.GetAccessor]: 'GetAccessor',\n [ts.SyntaxKind.SetAccessor]: 'SetAccessor',\n [ts.SyntaxKind.CallSignature]: 'CallSignature',\n [ts.SyntaxKind.ConstructSignature]: 'ConstructSignature',\n [ts.SyntaxKind.IndexSignature]: 'IndexSignature',\n [ts.SyntaxKind.TypePredicate]: 'TypePredicate',\n [ts.SyntaxKind.TypeReference]: 'TypeReference',\n [ts.SyntaxKind.FunctionType]: 'FunctionType',\n [ts.SyntaxKind.ConstructorType]: 'ConstructorType',\n [ts.SyntaxKind.TypeQuery]: 'TypeQuery',\n [ts.SyntaxKind.TypeLiteral]: 'TypeLiteral',\n [ts.SyntaxKind.ArrayType]: 'ArrayType',\n [ts.SyntaxKind.TupleType]: 'TupleType',\n [ts.SyntaxKind.OptionalType]: 'OptionalType',\n [ts.SyntaxKind.RestType]: 'RestType',\n [ts.SyntaxKind.UnionType]: 'UnionType',\n [ts.SyntaxKind.IntersectionType]: 'IntersectionType',\n [ts.SyntaxKind.ConditionalType]: 'ConditionalType',\n [ts.SyntaxKind.InferType]: 'InferType',\n [ts.SyntaxKind.ParenthesizedType]: 'ParenthesizedType',\n [ts.SyntaxKind.ThisType]: 'ThisType',\n [ts.SyntaxKind.TypeOperator]: 'TypeOperator',\n [ts.SyntaxKind.IndexedAccessType]: 'IndexedAccessType',\n [ts.SyntaxKind.MappedType]: 'MappedType',\n [ts.SyntaxKind.LiteralType]: 'LiteralType',\n [ts.SyntaxKind.NamedTupleMember]: 'NamedTupleMember',\n [ts.SyntaxKind.TemplateLiteralType]: 'TemplateLiteralType',\n [ts.SyntaxKind.TemplateLiteralTypeSpan]: 'TemplateLiteralTypeSpan',\n [ts.SyntaxKind.ImportType]: 'ImportType',\n [ts.SyntaxKind.ObjectBindingPattern]: 'ObjectBindingPattern',\n [ts.SyntaxKind.ArrayBindingPattern]: 'ArrayBindingPattern',\n [ts.SyntaxKind.BindingElement]: 'BindingElement',\n [ts.SyntaxKind.ArrayLiteralExpression]: 'ArrayLiteralExpression',\n [ts.SyntaxKind.ObjectLiteralExpression]: 'ObjectLiteralExpression',\n [ts.SyntaxKind.PropertyAccessExpression]: 'PropertyAccessExpression',\n [ts.SyntaxKind.ElementAccessExpression]: 'ElementAccessExpression',\n [ts.SyntaxKind.CallExpression]: 'CallExpression',\n [ts.SyntaxKind.NewExpression]: 'NewExpression',\n [ts.SyntaxKind.TaggedTemplateExpression]: 'TaggedTemplateExpression',\n [ts.SyntaxKind.TypeAssertionExpression]: 'TypeAssertionExpression',\n [ts.SyntaxKind.ParenthesizedExpression]: 'ParenthesizedExpression',\n [ts.SyntaxKind.FunctionExpression]: 'FunctionExpression',\n [ts.SyntaxKind.ArrowFunction]: 'ArrowFunction',\n [ts.SyntaxKind.DeleteExpression]: 'DeleteExpression',\n [ts.SyntaxKind.TypeOfExpression]: 'TypeOfExpression',\n [ts.SyntaxKind.VoidExpression]: 'VoidExpression',\n [ts.SyntaxKind.AwaitExpression]: 'AwaitExpression',\n [ts.SyntaxKind.PrefixUnaryExpression]: 'PrefixUnaryExpression',\n [ts.SyntaxKind.PostfixUnaryExpression]: 'PostfixUnaryExpression',\n [ts.SyntaxKind.BinaryExpression]: 'BinaryExpression',\n [ts.SyntaxKind.ConditionalExpression]: 'ConditionalExpression',\n [ts.SyntaxKind.TemplateExpression]: 'TemplateExpression',\n [ts.SyntaxKind.YieldExpression]: 'YieldExpression',\n [ts.SyntaxKind.SpreadElement]: 'SpreadElement',\n [ts.SyntaxKind.ClassExpression]: 'ClassExpression',\n [ts.SyntaxKind.OmittedExpression]: 'OmittedExpression',\n [ts.SyntaxKind.ExpressionWithTypeArguments]: 'ExpressionWithTypeArguments',\n [ts.SyntaxKind.AsExpression]: 'AsExpression',\n [ts.SyntaxKind.NonNullExpression]: 'NonNullExpression',\n [ts.SyntaxKind.MetaProperty]: 'MetaProperty',\n [ts.SyntaxKind.SyntheticExpression]: 'SyntheticExpression',\n [ts.SyntaxKind.SatisfiesExpression]: 'SatisfiesExpression',\n [ts.SyntaxKind.TemplateSpan]: 'TemplateSpan',\n [ts.SyntaxKind.SemicolonClassElement]: 'SemicolonClassElement',\n [ts.SyntaxKind.Block]: 'Block',\n [ts.SyntaxKind.EmptyStatement]: 'EmptyStatement',\n [ts.SyntaxKind.VariableStatement]: 'VariableStatement',\n [ts.SyntaxKind.ExpressionStatement]: 'ExpressionStatement',\n [ts.SyntaxKind.IfStatement]: 'IfStatement',\n [ts.SyntaxKind.DoStatement]: 'DoStatement',\n [ts.SyntaxKind.WhileStatement]: 'WhileStatement',\n [ts.SyntaxKind.ForStatement]: 'ForStatement',\n [ts.SyntaxKind.ForInStatement]: 'ForInStatement',\n [ts.SyntaxKind.ForOfStatement]: 'ForOfStatement',\n [ts.SyntaxKind.ContinueStatement]: 'ContinueStatement',\n [ts.SyntaxKind.BreakStatement]: 'BreakStatement',\n [ts.SyntaxKind.ReturnStatement]: 'ReturnStatement',\n [ts.SyntaxKind.WithStatement]: 'WithStatement',\n [ts.SyntaxKind.SwitchStatement]: 'SwitchStatement',\n [ts.SyntaxKind.LabeledStatement]: 'LabeledStatement',\n [ts.SyntaxKind.ThrowStatement]: 'ThrowStatement',\n [ts.SyntaxKind.TryStatement]: 'TryStatement',\n [ts.SyntaxKind.DebuggerStatement]: 'DebuggerStatement',\n [ts.SyntaxKind.VariableDeclaration]: 'VariableDeclaration',\n [ts.SyntaxKind.VariableDeclarationList]: 'VariableDeclarationList',\n [ts.SyntaxKind.FunctionDeclaration]: 'FunctionDeclaration',\n [ts.SyntaxKind.ClassDeclaration]: 'ClassDeclaration',\n [ts.SyntaxKind.InterfaceDeclaration]: 'InterfaceDeclaration',\n [ts.SyntaxKind.TypeAliasDeclaration]: 'TypeAliasDeclaration',\n [ts.SyntaxKind.EnumDeclaration]: 'EnumDeclaration',\n [ts.SyntaxKind.ModuleDeclaration]: 'ModuleDeclaration',\n [ts.SyntaxKind.ModuleBlock]: 'ModuleBlock',\n [ts.SyntaxKind.CaseBlock]: 'CaseBlock',\n [ts.SyntaxKind.NamespaceExportDeclaration]: 'NamespaceExportDeclaration',\n [ts.SyntaxKind.ImportEqualsDeclaration]: 'ImportEqualsDeclaration',\n [ts.SyntaxKind.ImportDeclaration]: 'ImportDeclaration',\n [ts.SyntaxKind.ImportClause]: 'ImportClause',\n [ts.SyntaxKind.NamespaceImport]: 'NamespaceImport',\n [ts.SyntaxKind.NamedImports]: 'NamedImports',\n [ts.SyntaxKind.ImportSpecifier]: 'ImportSpecifier',\n [ts.SyntaxKind.ExportAssignment]: 'ExportAssignment',\n [ts.SyntaxKind.ExportDeclaration]: 'ExportDeclaration',\n [ts.SyntaxKind.NamedExports]: 'NamedExports',\n [ts.SyntaxKind.NamespaceExport]: 'NamespaceExport',\n [ts.SyntaxKind.ExportSpecifier]: 'ExportSpecifier',\n [ts.SyntaxKind.MissingDeclaration]: 'MissingDeclaration',\n [ts.SyntaxKind.ExternalModuleReference]: 'ExternalModuleReference',\n [ts.SyntaxKind.JsxElement]: 'JsxElement',\n [ts.SyntaxKind.JsxSelfClosingElement]: 'JsxSelfClosingElement',\n [ts.SyntaxKind.JsxOpeningElement]: 'JsxOpeningElement',\n [ts.SyntaxKind.JsxClosingElement]: 'JsxClosingElement',\n [ts.SyntaxKind.JsxFragment]: 'JsxFragment',\n [ts.SyntaxKind.JsxOpeningFragment]: 'JsxOpeningFragment',\n [ts.SyntaxKind.JsxClosingFragment]: 'JsxClosingFragment',\n [ts.SyntaxKind.JsxAttribute]: 'JsxAttribute',\n [ts.SyntaxKind.JsxAttributes]: 'JsxAttributes',\n [ts.SyntaxKind.JsxSpreadAttribute]: 'JsxSpreadAttribute',\n [ts.SyntaxKind.JsxExpression]: 'JsxExpression',\n [ts.SyntaxKind.JsxNamespacedName]: 'JsxNamespacedName',\n [ts.SyntaxKind.CaseClause]: 'CaseClause',\n [ts.SyntaxKind.DefaultClause]: 'DefaultClause',\n [ts.SyntaxKind.HeritageClause]: 'HeritageClause',\n [ts.SyntaxKind.CatchClause]: 'CatchClause',\n [ts.SyntaxKind.ImportAttributes]: 'ImportAttributes',\n [ts.SyntaxKind.ImportAttribute]: 'ImportAttribute',\n [ts.SyntaxKind.PropertyAssignment]: 'PropertyAssignment',\n [ts.SyntaxKind.ShorthandPropertyAssignment]: 'ShorthandPropertyAssignment',\n [ts.SyntaxKind.SpreadAssignment]: 'SpreadAssignment',\n [ts.SyntaxKind.EnumMember]: 'EnumMember',\n [ts.SyntaxKind.SourceFile]: 'SourceFile',\n [ts.SyntaxKind.Bundle]: 'Bundle',\n [ts.SyntaxKind.JSDocTypeExpression]: 'JSDocTypeExpression',\n [ts.SyntaxKind.JSDocNameReference]: 'JSDocNameReference',\n [ts.SyntaxKind.JSDocMemberName]: 'JSDocMemberName',\n [ts.SyntaxKind.JSDocAllType]: 'JSDocAllType',\n [ts.SyntaxKind.JSDocUnknownType]: 'JSDocUnknownType',\n [ts.SyntaxKind.JSDocNullableType]: 'JSDocNullableType',\n [ts.SyntaxKind.JSDocNonNullableType]: 'JSDocNonNullableType',\n [ts.SyntaxKind.JSDocOptionalType]: 'JSDocOptionalType',\n [ts.SyntaxKind.JSDocFunctionType]: 'JSDocFunctionType',\n [ts.SyntaxKind.JSDocVariadicType]: 'JSDocVariadicType',\n [ts.SyntaxKind.JSDocNamepathType]: 'JSDocNamepathType',\n [ts.SyntaxKind.JSDoc]: 'JSDoc',\n [ts.SyntaxKind.JSDocText]: 'JSDocText',\n [ts.SyntaxKind.JSDocTypeLiteral]: 'JSDocTypeLiteral',\n [ts.SyntaxKind.JSDocSignature]: 'JSDocSignature',\n [ts.SyntaxKind.JSDocLink]: 'JSDocLink',\n [ts.SyntaxKind.JSDocLinkCode]: 'JSDocLinkCode',\n [ts.SyntaxKind.JSDocLinkPlain]: 'JSDocLinkPlain',\n [ts.SyntaxKind.JSDocTag]: 'JSDocTag',\n [ts.SyntaxKind.JSDocAugmentsTag]: 'JSDocAugmentsTag',\n [ts.SyntaxKind.JSDocImplementsTag]: 'JSDocImplementsTag',\n [ts.SyntaxKind.JSDocAuthorTag]: 'JSDocAuthorTag',\n [ts.SyntaxKind.JSDocDeprecatedTag]: 'JSDocDeprecatedTag',\n [ts.SyntaxKind.JSDocClassTag]: 'JSDocClassTag',\n [ts.SyntaxKind.JSDocPublicTag]: 'JSDocPublicTag',\n [ts.SyntaxKind.JSDocPrivateTag]: 'JSDocPrivateTag',\n [ts.SyntaxKind.JSDocProtectedTag]: 'JSDocProtectedTag',\n [ts.SyntaxKind.JSDocReadonlyTag]: 'JSDocReadonlyTag',\n [ts.SyntaxKind.JSDocOverrideTag]: 'JSDocOverrideTag',\n [ts.SyntaxKind.JSDocCallbackTag]: 'JSDocCallbackTag',\n [ts.SyntaxKind.JSDocOverloadTag]: 'JSDocOverloadTag',\n [ts.SyntaxKind.JSDocEnumTag]: 'JSDocEnumTag',\n [ts.SyntaxKind.JSDocParameterTag]: 'JSDocParameterTag',\n [ts.SyntaxKind.JSDocReturnTag]: 'JSDocReturnTag',\n [ts.SyntaxKind.JSDocThisTag]: 'JSDocThisTag',\n [ts.SyntaxKind.JSDocTypeTag]: 'JSDocTypeTag',\n [ts.SyntaxKind.JSDocTemplateTag]: 'JSDocTemplateTag',\n [ts.SyntaxKind.JSDocTypedefTag]: 'JSDocTypedefTag',\n [ts.SyntaxKind.JSDocSeeTag]: 'JSDocSeeTag',\n [ts.SyntaxKind.JSDocPropertyTag]: 'JSDocPropertyTag',\n [ts.SyntaxKind.JSDocThrowsTag]: 'JSDocThrowsTag',\n [ts.SyntaxKind.JSDocSatisfiesTag]: 'JSDocSatisfiesTag',\n [ts.SyntaxKind.SyntaxList]: 'SyntaxList',\n [ts.SyntaxKind.NotEmittedStatement]: 'NotEmittedStatement',\n [ts.SyntaxKind.PartiallyEmittedExpression]: 'PartiallyEmittedExpression',\n [ts.SyntaxKind.CommaListExpression]: 'CommaListExpression',\n [ts.SyntaxKind.SyntheticReferenceExpression]: 'SyntheticReferenceExpression',\n [ts.SyntaxKind.Count]: 'Count',\n} as const\n\nconst namesRecord = SyntaxKindName as Record<ts.SyntaxKind, string | undefined>\n\nexport const getNodeName = (node: ts.Node): string => {\n return namesRecord[node.kind] ?? 'Unknown'\n}\n\nexport const getSyntaxName = (kind: ts.SyntaxKind): string => {\n return namesRecord[kind] ?? 'Unknown'\n}\n\nexport type SyntaxKindNameType = typeof SyntaxKindName\n\nexport type ModuleStatements =\n | ts.ClassDeclaration\n | ts.ImportDeclaration\n | ts.VariableStatement\n | ts.FunctionDeclaration\n | ts.TypeAliasDeclaration\n | ts.InterfaceDeclaration\n\nexport type PrimaryExpressions =\n | LiteralExpressions\n | ts.TrueLiteral\n | ts.FalseLiteral\n | ts.ArrayLiteralExpression\n | ts.ClassExpression\n | ts.FunctionExpression\n | ts.Identifier\n | ts.ImportExpression\n | ts.NewExpression\n | ts.NullLiteral\n | ts.ObjectLiteralExpression\n | ts.PrivateIdentifier\n | ts.ParenthesizedExpression\n | ts.SuperExpression\n | ts.TemplateExpression\n | ts.ThisExpression\n\nexport type MemberExpressions =\n | PrimaryExpressions\n | ts.ElementAccessExpression\n | ts.ExpressionWithTypeArguments\n | ts.PropertyAccessExpression\n | ts.TaggedTemplateExpression\n\nexport type LeftHandSideExpression = ts.CallExpression | MemberExpressions | ts.NonNullExpression\n\n/**\n * All concrete types which extends ts.ClassElement\n */\nexport type ClassElements =\n | ts.ClassStaticBlockDeclaration\n | ts.ConstructorDeclaration\n | ts.GetAccessorDeclaration\n | ts.IndexSignatureDeclaration\n | ts.MethodDeclaration\n | ts.PropertyDeclaration\n | ts.SemicolonClassElement\n | ts.SetAccessorDeclaration\n\n/**\n * All concrete types which extends ts.Statement\n */\nexport type Statements =\n | ts.EmptyStatement\n | ts.VariableStatement\n | ts.ExpressionStatement\n | ts.IfStatement\n | ts.DoStatement\n | ts.WhileStatement\n | ts.ForStatement\n | ts.ForInStatement\n | ts.ForOfStatement\n | ts.ContinueStatement\n | ts.BreakStatement\n | ts.ReturnStatement\n | ts.WithStatement\n | ts.SwitchStatement\n | ts.LabeledStatement\n | ts.ThrowStatement\n | ts.TryStatement\n | ts.DebuggerStatement\n | ts.ImportDeclaration\n | ts.ClassDeclaration\n | ts.TypeAliasDeclaration\n\n/**\n * All concrete types which extends ts.LiteralExpression\n */\nexport type LiteralExpressions =\n | ts.NumericLiteral\n | ts.BigIntLiteral\n | ts.StringLiteral\n | ts.RegularExpressionLiteral\n | ts.NoSubstitutionTemplateLiteral\n\n/**\n * All concrete types which extend ts.Expression\n */\nexport type Expressions =\n | ts.PropertyAccessExpression\n | ts.ElementAccessExpression\n | ts.TypeAssertion\n | ts.ParenthesizedExpression\n | ts.FunctionExpression\n | ts.DeleteExpression\n | ts.TypeOfExpression\n | ts.VoidExpression\n | ts.AwaitExpression\n | ts.PrefixUnaryExpression\n | ts.PostfixUnaryExpression\n | ts.BinaryExpression\n | ts.ConditionalExpression\n | ts.TemplateExpression\n | ts.YieldExpression\n | ts.OmittedExpression\n | ts.ExpressionWithTypeArguments\n | ts.AsExpression\n | ts.NonNullExpression\n | ts.SatisfiesExpression\n | PrimaryExpressions\n | LeftHandSideExpression\n\n/**\n * Map an inherited base type to a union type of \"all\" the nodes which extend that base type\n * where \"all\" is limited to nodes relevant to this compiler.\n */\nexport type MapBaseType<T> = T extends DeliberateAny\n ? IfEquals<\n T,\n ts.Expression,\n Expressions,\n IfEquals<\n T,\n ts.LeftHandSideExpression,\n LeftHandSideExpression,\n IfEquals<T, ts.Statement, Statements, IfEquals<T, ts.ClassElement, ClassElements, T>>\n >\n >\n : never\n\ntype IfEquals<T, U, Y = unknown, N = never> = ((x: T) => T) extends (x: U) => U ? (((x: U) => U) extends (x: T) => T ? Y : N) : N\n\nexport const BinaryOpSyntaxes = {\n [ts.SyntaxKind.PlusToken]: BuilderBinaryOp.add,\n [ts.SyntaxKind.MinusToken]: BuilderBinaryOp.sub,\n [ts.SyntaxKind.AsteriskToken]: BuilderBinaryOp.mult,\n [ts.SyntaxKind.SlashToken]: BuilderBinaryOp.div,\n [ts.SyntaxKind.PercentToken]: BuilderBinaryOp.mod,\n [ts.SyntaxKind.AsteriskAsteriskToken]: BuilderBinaryOp.pow,\n [ts.SyntaxKind.BarToken]: BuilderBinaryOp.bitOr,\n [ts.SyntaxKind.CaretToken]: BuilderBinaryOp.bitXor,\n [ts.SyntaxKind.AmpersandToken]: BuilderBinaryOp.bitAnd,\n [ts.SyntaxKind.LessThanLessThanToken]: BuilderBinaryOp.lshift,\n [ts.SyntaxKind.GreaterThanGreaterThanToken]: BuilderBinaryOp.rshift,\n} as const\n\nexport const LogicalOpSyntaxes = {\n [ts.SyntaxKind.AmpersandAmpersandToken]: BinaryBooleanOperator.and,\n [ts.SyntaxKind.BarBarToken]: BinaryBooleanOperator.or,\n}\nexport const AugmentedAssignmentLogicalOpSyntaxes = {\n [ts.SyntaxKind.AmpersandAmpersandEqualsToken]: BinaryBooleanOperator.and,\n [ts.SyntaxKind.BarBarEqualsToken]: BinaryBooleanOperator.or,\n}\n\nexport function isKeyOf<TMap extends object>(key: PropertyKey, map: TMap): key is keyof TMap {\n return Object.hasOwn(map, key)\n}\n\nexport const ComparisonOpSyntaxes = {\n [ts.SyntaxKind.EqualsEqualsEqualsToken]: BuilderComparisonOp.eq,\n [ts.SyntaxKind.ExclamationEqualsEqualsToken]: BuilderComparisonOp.ne,\n [ts.SyntaxKind.LessThanToken]: BuilderComparisonOp.lt,\n [ts.SyntaxKind.LessThanEqualsToken]: BuilderComparisonOp.lte,\n [ts.SyntaxKind.GreaterThanToken]: BuilderComparisonOp.gt,\n [ts.SyntaxKind.GreaterThanEqualsToken]: BuilderComparisonOp.gte,\n} as const\n\nexport const AugmentedAssignmentBinaryOp = {\n [ts.SyntaxKind.PlusEqualsToken]: BuilderBinaryOp.add,\n [ts.SyntaxKind.MinusEqualsToken]: BuilderBinaryOp.sub,\n [ts.SyntaxKind.AsteriskEqualsToken]: BuilderBinaryOp.mult,\n [ts.SyntaxKind.SlashEqualsToken]: BuilderBinaryOp.div,\n [ts.SyntaxKind.PercentEqualsToken]: BuilderBinaryOp.mod,\n [ts.SyntaxKind.AsteriskAsteriskEqualsToken]: BuilderBinaryOp.pow,\n [ts.SyntaxKind.BarEqualsToken]: BuilderBinaryOp.bitOr,\n [ts.SyntaxKind.CaretEqualsToken]: BuilderBinaryOp.bitXor,\n [ts.SyntaxKind.AmpersandEqualsToken]: BuilderBinaryOp.bitAnd,\n [ts.SyntaxKind.LessThanLessThanEqualsToken]: BuilderBinaryOp.lshift,\n [ts.SyntaxKind.GreaterThanGreaterThanEqualsToken]: BuilderBinaryOp.rshift,\n} as const\n\nexport const UnaryExpressionUnaryOps = {\n [ts.SyntaxKind.PlusPlusToken]: BuilderUnaryOp.inc,\n [ts.SyntaxKind.MinusMinusToken]: BuilderUnaryOp.dec,\n [ts.SyntaxKind.PlusToken]: BuilderUnaryOp.pos,\n [ts.SyntaxKind.MinusToken]: BuilderUnaryOp.neg,\n [ts.SyntaxKind.TildeToken]: BuilderUnaryOp.bit_inv,\n}\n","import type ts from 'typescript'\nimport type { AwstBuildContext } from '../awst_build/context/awst-build-context'\nimport { AwstBuildFailureError } from '../errors'\nimport { logger, logPuyaExceptions } from '../logger'\nimport type { DeliberateAny } from '../typescript-helpers'\nimport type { MapBaseType, SyntaxKindNameType } from './syntax-names'\nimport { getNodeName, SyntaxKindName } from './syntax-names'\n\ntype UnionToIntersection<T> = (T extends DeliberateAny ? (x: T) => void : never) extends (x: infer TIntersection) => void\n ? TIntersection\n : never\n\nexport type Visitor<T extends { kind: ts.SyntaxKind }, TReturn> = UnionToIntersection<\n T extends DeliberateAny\n ? { [key in T['kind'] as key extends keyof SyntaxKindNameType ? `visit${SyntaxKindNameType[key]}` : never]: (node: T) => TReturn }\n : never\n>\n\n/**\n * This type relies on `T` being a concrete node with a `kind` property that is resolved to a single `SyntaxKind`.\n * There are lots of nodes (such as ts.Expression) which are base types for several nodes which means this type\n * will return `typeof SyntaxKind` instead of `typeof SyntaxKind.someValue` and that will break the rest of the\n * generic types here. `MapBaseType<TNode>` exists to convert these base types into a union of their concrete implementors\n */\nexport type KindForNode<T extends ts.Node> = T extends { kind: infer TKind } ? TKind : never\n\nexport type VisitorMethod<TKind> = TKind extends keyof SyntaxKindNameType ? `visit${SyntaxKindNameType[TKind]}` : never\n\nexport type MethodReturnType<TMethod, TVisitor> = TMethod extends keyof TVisitor\n ? TVisitor[TMethod] extends (...args: DeliberateAny[]) => infer TReturn\n ? TReturn\n : never\n : never\n\nexport type ReturnTypeForNode<T extends ts.Node, TVisitor> = MethodReturnType<VisitorMethod<KindForNode<T>>, TVisitor>\n\nexport const accept = <TSelf extends { context: AwstBuildContext }, T extends ts.Node>(\n visitor: TSelf,\n node: T,\n): ReturnTypeForNode<MapBaseType<T>, TSelf> => {\n const sourceLocation = visitor.context.getSourceLocation(node)\n if (node.kind in SyntaxKindName) {\n const nodeName = getNodeName(node)\n const visitFunction = `visit${nodeName}`\n if (visitFunction in Object.getPrototypeOf(visitor)) {\n return logPuyaExceptions(() => Object.getPrototypeOf(visitor)[visitFunction].call(visitor, node), sourceLocation)\n } else {\n logger.error(sourceLocation, `Unsupported syntax visitor ${nodeName}`)\n }\n } else {\n logger.error(sourceLocation, `Unknown syntax kind ${node.kind}`)\n }\n throw new AwstBuildFailureError()\n}\n","import type { awst } from '../../awst'\nimport { intrinsicFactory } from '../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport { EqualityComparison, NumericComparison } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError } from '../../errors'\nimport { codeInvariant, tryConvertEnum } from '../../util'\nimport type { InstanceType, PType } from '../ptypes'\nimport { boolPType, bytesPType, stringPType } from '../ptypes'\nimport type { InstanceBuilder, NodeBuilder } from './index'\nimport { BuilderComparisonOp, FunctionBuilder, InstanceExpressionBuilder } from './index'\n\nexport class BooleanFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n if (args.length !== 1) throw CodeError.unexpectedUnhandledArgs({ sourceLocation })\n\n const [value] = args\n if (value.ptype.equals(boolPType)) {\n return value\n }\n if (value.ptype.equals(bytesPType)) {\n return new BooleanExpressionBuilder(\n nodeFactory.bytesComparisonExpression({\n sourceLocation,\n operator: EqualityComparison.ne,\n lhs: value.resolve(),\n rhs: nodeFactory.bytesConstant({ value: new Uint8Array(), sourceLocation }),\n }),\n )\n } else if (value.ptype.equals(stringPType)) {\n return new BooleanExpressionBuilder(\n nodeFactory.bytesComparisonExpression({\n sourceLocation,\n operator: EqualityComparison.ne,\n lhs: value.toBytes(sourceLocation),\n rhs: nodeFactory.bytesConstant({ value: new Uint8Array(), sourceLocation }),\n }),\n )\n } else {\n // TODO: See if there's a better way to do this. boolEval only returns a truthy/falsy value\n // Whilst 1 and 5 for example are both truthy, they are not equal\n // and we expect Boolean(1) to equal Boolean(5)\n return new BooleanExpressionBuilder(\n nodeFactory.not({\n sourceLocation,\n expr: nodeFactory.not({\n sourceLocation,\n expr: value.boolEval(sourceLocation),\n }),\n }),\n )\n }\n }\n}\n\nexport class BooleanExpressionBuilder extends InstanceExpressionBuilder<InstanceType> {\n constructor(expr: Expression) {\n super(expr, boolPType)\n }\n\n boolEval(sourceLocation: SourceLocation, negate: boolean): awst.Expression {\n if (negate) {\n return nodeFactory.not({ sourceLocation, expr: this._expr })\n }\n return this._expr\n }\n\n toBytes(sourceLocation: SourceLocation): Expression {\n return intrinsicFactory.itob({\n value: this._expr,\n sourceLocation,\n })\n }\n\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n const operator = tryConvertEnum(op, BuilderComparisonOp, NumericComparison)\n codeInvariant(operator, `${op} is not supported on ${this.typeDescription}`, sourceLocation)\n return new BooleanExpressionBuilder(\n nodeFactory.numericComparisonExpression({\n operator,\n lhs: this.resolve(),\n rhs: other.resolveToPType(boolPType).resolve(),\n sourceLocation,\n }),\n )\n }\n}\n","import type { SourceLocation } from '../../awst/source-location'\nimport type { ARC4Type } from '../../awst/wtypes'\nimport { ARC4DynamicArray, ARC4StaticArray, ARC4UIntN } from '../../awst/wtypes'\nimport { Constants } from '../../constants'\nimport { codeInvariant } from '../../util'\nimport { PType } from './base'\nimport { LibFunctionType, NumericLiteralPType } from './index'\n\nexport const UintNConstructor = new LibFunctionType({\n name: 'UintN',\n module: Constants.arc4EncodedTypesModuleName,\n})\nexport abstract class ARC4EncodedType extends PType {\n abstract get wtype(): ARC4Type\n}\n\nexport class UintNType extends ARC4EncodedType {\n static baseFullName = `${Constants.arc4EncodedTypesModuleName}::UintN`\n readonly module = Constants.arc4EncodedTypesModuleName\n readonly n: bigint\n readonly name: string\n readonly singleton = false\n\n get wtype(): ARC4UIntN {\n return new ARC4UIntN({ n: this.n })\n }\n\n constructor({ n }: { n: bigint }) {\n super()\n codeInvariant(n >= 8n && n <= 512n && n % 8n === 0n, 'n must be between 8 and 512, and a multiple of 8')\n this.n = n\n this.name = `UIntN<${n}>`\n }\n\n static parameterise(typeArgs: PType[]): UintNType {\n codeInvariant(typeArgs.length === 1, 'UintNType type expects exactly one type parameter')\n const [size] = typeArgs\n codeInvariant(\n size instanceof NumericLiteralPType && size.literalValue,\n `Generic type param for UintNType must be a literal number. Inferred type is ${size.name}`,\n )\n\n return new UintNType({ n: size.literalValue })\n }\n\n getGenericArgs(): PType[] {\n return [new NumericLiteralPType({ literalValue: this.n })]\n }\n}\n\nexport const DynamicArrayConstructor = new LibFunctionType({\n name: 'DynamicArray',\n module: Constants.arc4EncodedTypesModuleName,\n})\nexport class DynamicArrayType extends ARC4EncodedType {\n static baseFullName = `${Constants.arc4EncodedTypesModuleName}::DynamicArray`\n readonly module = Constants.arc4EncodedTypesModuleName\n readonly elementType: ARC4EncodedType\n readonly name: string\n readonly singleton = false\n readonly sourceLocation: SourceLocation | undefined\n\n get wtype(): ARC4DynamicArray {\n return new ARC4DynamicArray({ elementType: this.elementType.wtype, sourceLocation: this.sourceLocation })\n }\n\n constructor({ elementType, sourceLocation }: { elementType: ARC4EncodedType; sourceLocation?: SourceLocation }) {\n super()\n this.elementType = elementType\n this.name = `DynamicArray<${elementType}>`\n this.sourceLocation = sourceLocation\n }\n\n static parameterise(typeArgs: PType[]): DynamicArrayType {\n codeInvariant(typeArgs.length === 1, 'DynamicArray type expects exactly one type parameter')\n const [elementType] = typeArgs\n codeInvariant(\n elementType instanceof ARC4EncodedType,\n `Generic type param for DynamicArray must be an ARC4 encoded type. Inferred type is ${elementType.name}`,\n )\n\n return new DynamicArrayType({ elementType: elementType })\n }\n\n getGenericArgs(): PType[] {\n return [this.elementType]\n }\n}\nexport const StaticArrayConstructor = new LibFunctionType({\n name: 'StaticArray',\n module: Constants.arc4EncodedTypesModuleName,\n})\nexport class StaticArrayType extends ARC4EncodedType {\n static baseFullName = `${Constants.arc4EncodedTypesModuleName}::StaticArray`\n readonly module = Constants.arc4EncodedTypesModuleName\n readonly elementType: ARC4EncodedType\n readonly arraySize: bigint\n readonly name: string\n readonly singleton = false\n readonly sourceLocation: SourceLocation | undefined\n get wtype(): ARC4StaticArray {\n return new ARC4StaticArray({ elementType: this.elementType.wtype, arraySize: this.arraySize })\n }\n\n constructor({\n elementType,\n arraySize,\n sourceLocation,\n }: {\n elementType: ARC4EncodedType\n arraySize: bigint\n sourceLocation?: SourceLocation\n }) {\n super()\n this.elementType = elementType\n this.arraySize = arraySize\n this.name = `StaticArray<${elementType}>`\n this.sourceLocation = sourceLocation\n }\n\n static parameterise(typeArgs: PType[]): StaticArrayType {\n codeInvariant(typeArgs.length === 2, 'StaticArray type expects exactly one type parameters')\n const [elementType, arraySize] = typeArgs\n codeInvariant(\n elementType instanceof ARC4EncodedType,\n `Element type generic type param for DynamicArray must be an ARC4 encoded type. Inferred type is ${elementType.name}`,\n )\n codeInvariant(\n arraySize instanceof NumericLiteralPType,\n `Array size generic type param for StaticArray must be a literal number. Inferred type is ${arraySize.name}`,\n )\n\n return new StaticArrayType({ arraySize: arraySize.literalValue, elementType })\n }\n\n getGenericArgs(): PType[] {\n return [this.elementType, new NumericLiteralPType({ literalValue: this.arraySize })]\n }\n}\n","import type { awst } from '../../awst'\nimport type { Expression, LValue } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError } from '../../errors'\nimport type { PType, PTypeOrClass } from '../ptypes'\nimport { TransientType } from '../ptypes'\nimport type { BuilderBinaryOp, BuilderComparisonOp, BuilderUnaryOp, NodeBuilder } from './index'\nimport { InstanceBuilder } from './index'\n\nexport abstract class LiteralExpressionBuilder extends InstanceBuilder {\n resolve(): Expression {\n this.throwInvalidExpression()\n }\n\n resolveLValue(): LValue {\n throw new CodeError('A literal value is not a valid assignment target', { sourceLocation: this.sourceLocation })\n }\n\n abstract resolvableToPType(ptype: PTypeOrClass): boolean\n\n abstract resolveToPType(ptype: PTypeOrClass): InstanceBuilder\n\n private throwInvalidExpression(): never {\n if (this.ptype instanceof TransientType) throw new CodeError(this.ptype.expressionMessage, { sourceLocation: this.sourceLocation })\n throw new CodeError(`Invalid expression type ${this.ptype}`, { sourceLocation: this.sourceLocation })\n }\n\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n this.throwInvalidExpression()\n }\n\n assign(other: InstanceBuilder, sourceLocation: SourceLocation): InstanceBuilder {\n this.throwInvalidExpression()\n }\n\n binaryOp(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n this.throwInvalidExpression()\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n this.throwInvalidExpression()\n }\n\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n this.throwInvalidExpression()\n }\n\n taggedTemplate(head: string, spans: ReadonlyArray<readonly [InstanceBuilder, string]>, sourceLocation: SourceLocation): InstanceBuilder {\n this.throwInvalidExpression()\n }\n\n indexAccess(index: InstanceBuilder, sourceLocation: SourceLocation): NodeBuilder {\n this.throwInvalidExpression()\n }\n\n singleEvaluation(): InstanceBuilder {\n this.throwInvalidExpression()\n }\n\n toBytes(sourceLocation: SourceLocation): awst.Expression {\n this.throwInvalidExpression()\n }\n\n prefixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n this.throwInvalidExpression()\n }\n\n postfixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n this.throwInvalidExpression()\n }\n\n iterate(sourceLocation: SourceLocation): awst.Expression {\n this.throwInvalidExpression()\n }\n\n augmentedAssignment(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n this.throwInvalidExpression()\n }\n\n hasProperty(_name: string): boolean {\n this.throwInvalidExpression()\n }\n}\n","import type { awst, ConstantValue } from '../../../awst'\nimport { isConstant } from '../../../awst'\nimport type { Expression } from '../../../awst/nodes'\nimport { BoolConstant, IntegerConstant, StringConstant } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { CodeError } from '../../../errors'\nimport { codeInvariant } from '../../../util'\nimport type { PType, PTypeOrClass } from '../../ptypes'\nimport { biguintPType, boolPType, bytesPType, stringPType, uint64PType } from '../../ptypes'\nimport { UintNType } from '../../ptypes/arc4-types'\nimport type { NodeBuilder } from '../index'\nimport { InstanceBuilder } from '../index'\nimport { LiteralExpressionBuilder } from '../literal-expression-builder'\n\nexport function requireExpressionOfType(builder: NodeBuilder, ptype: PTypeOrClass): Expression {\n if (builder instanceof InstanceBuilder) {\n if (builder.resolvableToPType(ptype)) {\n return builder.resolveToPType(ptype).resolve()\n }\n }\n throw new CodeError(`Expected expression of type ${ptype}, got ${builder.typeDescription}`, {\n sourceLocation: builder.sourceLocation,\n })\n}\nexport function requireBuilderOfType(builder: NodeBuilder, ptype: PTypeOrClass): InstanceBuilder {\n if (builder instanceof InstanceBuilder) {\n if (builder.resolvableToPType(ptype)) {\n return builder.resolveToPType(ptype)\n }\n }\n throw new CodeError(`Expected expression of type ${ptype}, got ${builder.typeDescription}`, {\n sourceLocation: builder.sourceLocation,\n })\n}\n\nexport function resolvableToType(builder: NodeBuilder, ptype: PTypeOrClass): builder is InstanceBuilder {\n if (builder instanceof InstanceBuilder) {\n return builder.resolvableToPType(ptype)\n }\n return false\n}\n\nexport function requestExpressionOfType(builder: NodeBuilder, ptype: PTypeOrClass): Expression | undefined {\n if (builder instanceof InstanceBuilder) {\n if (builder.resolvableToPType(ptype)) {\n return builder.resolveToPType(ptype).resolve()\n }\n return undefined\n }\n return undefined\n}\nexport function requestBuilderOfType(builder: NodeBuilder, ptype: PTypeOrClass): InstanceBuilder | undefined {\n if (builder instanceof InstanceBuilder) {\n if (builder.resolvableToPType(ptype)) {\n return builder.resolveToPType(ptype)\n }\n return undefined\n }\n return undefined\n}\n\nexport function requireInstanceBuilder(builder: NodeBuilder): InstanceBuilder {\n if (builder instanceof InstanceBuilder) return builder\n throw new CodeError(`Expected instance of a type, got ${builder.typeDescription}`, { sourceLocation: builder.sourceLocation })\n}\n\nexport function requireExpressionsOfType<const TPTypes extends [...PType[]]>(\n builders: ReadonlyArray<InstanceBuilder>,\n ptypes: TPTypes,\n sourceLocation: SourceLocation,\n): Array<awst.Expression> {\n if (builders.length === ptypes.length) {\n return builders.map((builder, i) => requireExpressionOfType(builder, ptypes[i]))\n }\n throw new CodeError(`Expected ${ptypes.length} args with types ${ptypes.join(', ')}`, { sourceLocation })\n}\n\nexport function requireStringConstant(builder: InstanceBuilder): awst.StringConstant {\n const constant = requireConstantOfType(builder, stringPType)\n codeInvariant(constant instanceof StringConstant, 'Expected string literal', builder.sourceLocation)\n return constant\n}\nexport function requireIntegerConstant(builder: InstanceBuilder): awst.IntegerConstant {\n const constant = requestConstantOfType(builder, uint64PType) ?? requestConstantOfType(builder, biguintPType)\n codeInvariant(constant instanceof IntegerConstant, 'Expected integer literal')\n return constant\n}\nexport function requireBooleanConstant(builder: InstanceBuilder): awst.BoolConstant {\n const constant = requireConstantOfType(builder, boolPType)\n codeInvariant(constant instanceof BoolConstant, 'Expected boolean literal')\n return constant\n}\n\nexport function requestConstantOfType(builder: NodeBuilder, ptype: PType): awst.Constant | undefined {\n if (builder instanceof LiteralExpressionBuilder) {\n if (builder.resolvableToPType(ptype)) {\n const expr = builder.resolveToPType(ptype).resolve()\n if (isConstant(expr)) return expr\n }\n return undefined\n }\n if (builder instanceof InstanceBuilder && builder.ptype?.equals(ptype)) {\n const expr = builder.resolve()\n if (isConstant(expr)) return expr\n }\n return undefined\n}\n\nexport function requireConstantOfType(builder: NodeBuilder, ptype: PType, messageOverride?: string): awst.Constant {\n const constExpr = requestConstantOfType(builder, ptype)\n if (constExpr) return constExpr\n throw new CodeError(messageOverride ?? `Expected constant of type ${ptype}`, { sourceLocation: builder.sourceLocation })\n}\n\nexport function isValidLiteralForPType(literalValue: ConstantValue, ptype: PTypeOrClass): boolean {\n if (ptype.equals(stringPType)) {\n return typeof literalValue === 'string'\n }\n if (ptype.equals(uint64PType)) {\n return typeof literalValue === 'bigint' && 0 <= literalValue && literalValue < 2n ** 64n\n }\n if (ptype.equals(biguintPType)) {\n return typeof literalValue === 'bigint' && 0 <= literalValue && literalValue < 2n ** 512n\n }\n if (ptype instanceof UintNType) {\n return typeof literalValue === 'bigint' && 0 <= literalValue && literalValue < 2n ** ptype.n\n }\n if (ptype.equals(boolPType)) {\n return typeof literalValue === 'boolean'\n }\n if (ptype.equals(bytesPType)) {\n return literalValue instanceof Uint8Array\n }\n return false\n}\n","import { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { invariant } from '../../util'\nimport type { PType } from '../ptypes'\nimport { TuplePType } from '../ptypes'\nimport { instanceEb } from '../type-registry'\nimport type { InstanceBuilder, NodeBuilder } from './index'\nimport { InstanceExpressionBuilder } from './index'\nimport { requireIntegerConstant } from './util'\n\nexport class TupleExpressionBuilder extends InstanceExpressionBuilder<TuplePType> {\n constructor(expression: Expression, ptype: PType) {\n invariant(ptype instanceof TuplePType, 'TupleExpressionBuilder must be built with ptype of type TuplePType')\n super(expression, ptype)\n }\n\n iterate(): Expression {\n return this.resolve()\n }\n\n indexAccess(index: InstanceBuilder, sourceLocation: SourceLocation): NodeBuilder {\n const indexNum = requireIntegerConstant(index).value\n const itemType = this.ptype.items[Number(indexNum)]\n\n return instanceEb(\n nodeFactory.tupleItemExpression({\n index: indexNum,\n sourceLocation,\n base: this._expr,\n }),\n itemType,\n )\n }\n\n getItemBuilders(): InstanceBuilder[] {\n return this.ptype.items.map((itemType, index) =>\n instanceEb(\n nodeFactory.tupleItemExpression({\n index: BigInt(index),\n sourceLocation: this.sourceLocation,\n base: this._expr,\n }),\n itemType,\n ),\n )\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression, LValue } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { CodeError } from '../../../errors'\nimport { codeInvariant } from '../../../util'\nimport type { PTypeOrClass } from '../../ptypes'\nimport { ArrayLiteralPType, ArrayPType, TuplePType } from '../../ptypes'\nimport type { NodeBuilder } from '../index'\nimport { InstanceBuilder } from '../index'\nimport { TupleExpressionBuilder } from '../tuple-expression-builder'\nimport { requireIntegerConstant } from '../util'\n\nexport class ArrayLiteralExpressionBuilder extends InstanceBuilder {\n readonly ptype: ArrayLiteralPType\n constructor(\n sourceLocation: SourceLocation,\n private readonly items: InstanceBuilder[],\n ) {\n super(sourceLocation)\n this.ptype = new ArrayLiteralPType({ items: items.map((i) => i.ptype) })\n }\n\n resolve(): Expression {\n const arrayType = this.ptype.getArrayType()\n\n return nodeFactory.newArray({\n sourceLocation: this.sourceLocation,\n values: this.items.map((i) => i.resolve()),\n wtype: arrayType.wtype,\n })\n }\n\n resolveLValue(): LValue {\n throw new CodeError('Array literal is not a valid lvalue')\n // return nodeFactory.tupleExpression({\n // items: this.items.map((i) => i.resolveLValue()),\n // sourceLocation: this.sourceLocation,\n // })\n }\n\n singleEvaluation(): InstanceBuilder {\n return new ArrayLiteralExpressionBuilder(\n this.sourceLocation,\n this.items.map((i) => i.singleEvaluation()),\n )\n }\n\n indexAccess(index: InstanceBuilder, sourceLocation: SourceLocation): NodeBuilder {\n const indexNum = Number(requireIntegerConstant(index).value)\n codeInvariant(indexNum < this.items.length, `Index ${indexNum} out of bounds of array`, sourceLocation)\n return this.items[indexNum]\n }\n\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n if (ptype instanceof TuplePType) {\n codeInvariant(\n ptype.items.length <= this.items.length,\n `Value of length ${this.items.length} cannot be resolved to type of length ${ptype.items.length}`,\n )\n return new TupleExpressionBuilder(\n nodeFactory.tupleExpression({\n items: ptype.items.map((itemType, index) => this.items[index].resolveToPType(itemType).resolve()),\n sourceLocation: this.sourceLocation,\n }),\n ptype,\n )\n }\n if (ptype instanceof ArrayPType) {\n return new ArrayLiteralExpressionBuilder(\n this.sourceLocation,\n this.items.map((i) => i.resolveToPType(ptype.itemType)),\n )\n }\n return super.resolveToPType(ptype)\n }\n\n resolvableToPType(ptype: PTypeOrClass): boolean {\n if (ptype.equals(this.ptype)) return true\n if (ptype instanceof TuplePType) {\n return ptype.items.every((itemType, index) => this.items[index].resolvableToPType(itemType))\n }\n if (ptype instanceof ArrayPType) {\n return this.items.every((i) => i.resolveToPType(ptype.itemType))\n }\n return false\n }\n\n getItemBuilders(): InstanceBuilder[] {\n return this.items\n }\n}\n","import type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { CodeError } from '../../../errors'\nimport { logger } from '../../../logger'\nimport type { DeliberateAny, Tuple } from '../../../typescript-helpers'\nimport type { PType, PTypeOrClass } from '../../ptypes'\nimport type { InstanceBuilder } from '../index'\nimport { requestBuilderOfType, requireInstanceBuilder } from './index'\n\nfunction parseTypeArgs<T extends number>(\n typeArgs: ReadonlyArray<PType>,\n sourceLocation: SourceLocation,\n funcName: string,\n expectedCount: T,\n): Tuple<PType, T> {\n if (typeArgs.length !== expectedCount) {\n const err = new CodeError(`${funcName} expects exactly ${expectedCount} type argument${expectedCount === 1 ? '' : 's'}`, {\n sourceLocation,\n })\n if (typeArgs.length > expectedCount) {\n logger.error(err)\n return typeArgs.slice(0, expectedCount) as Tuple<PType, T>\n }\n throw err\n }\n return typeArgs as Tuple<PType, T>\n}\n\nconst ArgSpecDiscriminator = Symbol('_specType')\n\n/**\n * Optional arg spec\n * Will be mapped to `Expression | undefined`\n */\ntype OptionalArg = { t: PTypeOrClass[]; required: false; [ArgSpecDiscriminator]: 'arg' }\n/**\n * Required arg spec\n * Will be mapped to `Expression`\n */\ntype RequiredArg = { t: PTypeOrClass[]; required: true; [ArgSpecDiscriminator]: 'arg' }\ntype ArgSpec = OptionalArg | RequiredArg\n\n/**\n * Object arg spec\n * Will be mapped to an object with the same keys where each property\n * is mapped to a Required or Optional spec\n */\ntype ObjArgSpec = Record<string, ArgSpec> & { [ArgSpecDiscriminator]: 'obj' }\n\n/**\n * Maps an ObjArgSpec to its output type\n */\ntype ArgsForObjSpec<T extends ObjArgSpec> = {\n [key in keyof T]: ArgFor<T[key]>\n}\n/**\n * Defines the expected shape of a single argument.\n * Either an ArgSpec indicting a single value, or an ObjArgSpec indicating an\n * object literal with several properties\n */\ntype ArgMap = ArgSpec | ObjArgSpec\n\n/**\n * Maps an arg spec to its output type\n */\ntype ArgFor<T extends ObjArgSpec | ArgSpec> = T extends ObjArgSpec\n ? ArgsForObjSpec<T>\n : T extends OptionalArg\n ? InstanceBuilder | undefined\n : T extends RequiredArg\n ? InstanceBuilder\n : never\n/**\n * Maps each arg to an expected output type\n */\ntype ParsedArgs<T extends [...DeliberateAny[]]> = T extends [infer T1 extends ArgMap, ...infer TRest]\n ? [ArgFor<T1>, ...ParsedArgs<TRest>]\n : T extends []\n ? []\n : T extends Array<infer TItem extends ArgMap>\n ? Array<ArgFor<TItem>>\n : never\n\nfunction parseObjArg<T extends ObjArgSpec>(\n arg: InstanceBuilder | undefined,\n sourceLocation: SourceLocation,\n subject: string,\n argMap: T,\n): ArgsForObjSpec<T> {\n return Object.entries(argMap).reduce(\n (acc, [property, spec]) => {\n if (arg?.hasProperty(property)) {\n const builder = arg.memberAccess(property, sourceLocation)\n if (spec.t.length === 0) {\n acc[property] = requireInstanceBuilder(builder)\n } else {\n for (const t of spec.t) {\n const typedBuilder = requestBuilderOfType(builder, t)\n if (typedBuilder) {\n acc[property] = typedBuilder\n return acc\n }\n }\n throw new CodeError(\n `${subject} has an incorrect type for property '${property}' of ${builder.ptype}. Expected ${spec.t.join(' or ')}`,\n {\n sourceLocation: arg?.sourceLocation ?? sourceLocation,\n },\n )\n }\n return acc\n }\n if (spec.required) {\n throw new CodeError(`${subject} is missing required property ${property}`, {\n sourceLocation: arg?.sourceLocation ?? sourceLocation,\n })\n }\n return acc\n },\n {} as Record<string, Expression | InstanceBuilder>,\n ) as ArgsForObjSpec<T>\n}\n\nconst argSpecFactory = {\n /**\n * A required arg with one of the specified types\n * @param ptypes\n */\n required(...ptypes: PTypeOrClass[]): RequiredArg {\n return { t: ptypes, required: true, [ArgSpecDiscriminator]: 'arg' }\n },\n /**\n * An optional arg with one of the specified types\n * @param ptypes\n */\n optional(...ptypes: PTypeOrClass[]): OptionalArg {\n return { t: ptypes, required: false, [ArgSpecDiscriminator]: 'arg' }\n },\n /**\n * An object map arg, if all properties are optional - the arg itself becomes optional\n * @param props A mapping of expected properties to expected ptypes\n */\n obj<T extends Omit<ObjArgSpec, typeof ArgSpecDiscriminator>>(props: T): T & { [ArgSpecDiscriminator]: 'obj' } {\n return {\n ...props,\n [ArgSpecDiscriminator]: 'obj',\n }\n },\n}\n\nexport type ArgSpecFactory = typeof argSpecFactory\n\nexport function parseFunctionArgs<const TGenericCount extends number, const TArgMap extends [...ArgMap[]]>({\n args,\n typeArgs,\n funcName,\n callLocation,\n genericTypeArgs,\n argSpec,\n}: {\n /**\n * Raw args array passed to call function\n */\n args: ReadonlyArray<InstanceBuilder>\n /**\n * Raw typeArgs array passed to call function\n */\n typeArgs: ReadonlyArray<PType>\n /**\n * The name of the function being called\n * (Used for error context)\n */\n funcName: string\n /**\n * The location of the call expression in the application source code\n */\n callLocation: SourceLocation\n /**\n * The expected number of generic type arguments\n */\n genericTypeArgs: TGenericCount\n /**\n * A mapping of expected argument types\n */\n argSpec: (a: ArgSpecFactory) => TArgMap\n}): {\n /**\n * A tuple of generic type args with a length of `TGenericCount`\n */\n ptypes: Tuple<PType, TGenericCount>\n args: ParsedArgs<TArgMap>\n} {\n const argMap = argSpec(argSpecFactory)\n if (args.length > argMap.length) {\n throw new CodeError(`${funcName} has ${args.length - argMap.length} too many args`, { sourceLocation: callLocation })\n }\n return {\n ptypes: parseTypeArgs(typeArgs, callLocation, funcName, genericTypeArgs),\n args: argMap.map((a, i) => {\n const source: InstanceBuilder<PType> | undefined = args[i]\n if (a[ArgSpecDiscriminator] === 'arg') {\n if (source) {\n if (a.t.length === 0) {\n return source\n } else {\n for (const t of a.t) {\n const builder = requestBuilderOfType(source, t)\n if (builder) {\n return builder\n }\n }\n throw new CodeError(`Arg ${i} of ${funcName} has an incorrect type of ${source.ptype}. Expected ${a.t.join(' or ')}`, {\n sourceLocation: callLocation,\n })\n }\n }\n if (a.required) {\n throw new CodeError(`Arg ${i} of ${funcName} is missing`, { sourceLocation: callLocation })\n }\n } else {\n return parseObjArg(source, callLocation, `Arg ${i} for ${funcName}`, a)\n }\n }) as ParsedArgs<TArgMap>,\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport { NumericComparison } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { logger } from '../../../logger'\nimport { tryConvertEnum } from '../../../util'\nimport { BooleanExpressionBuilder } from '../boolean-expression-builder'\nimport { BuilderComparisonOp } from '../index'\n\nexport function compareUint64(\n left: Expression,\n right: Expression,\n op: BuilderComparisonOp,\n sourceLocation: SourceLocation,\n typeDescription: string,\n) {\n const numComOp = tryConvertEnum(op, BuilderComparisonOp, NumericComparison)\n if (numComOp === undefined) {\n logger.error(sourceLocation, `${typeDescription} does not support the '${op}' operator`)\n }\n return new BooleanExpressionBuilder(\n nodeFactory.numericComparisonExpression({\n sourceLocation,\n operator: numComOp ?? NumericComparison.eq,\n lhs: left,\n rhs: right,\n }),\n )\n}\n","import type { awst } from '../../awst'\nimport { intrinsicFactory } from '../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport { BoolConstant, UInt64BinaryOperator, UInt64PostfixUnaryOperator, UInt64UnaryOperator } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { boolWType, uint64WType } from '../../awst/wtypes'\nimport { NotSupported } from '../../errors'\nimport { tryConvertEnum } from '../../util'\nimport type { InstanceType, PType } from '../ptypes'\nimport { boolPType, Uint64Function, uint64PType } from '../ptypes'\nimport type { BuilderComparisonOp, InstanceBuilder } from './index'\nimport { BuilderBinaryOp, BuilderUnaryOp, FunctionBuilder, InstanceExpressionBuilder } from './index'\nimport { requireExpressionOfType } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\nimport { compareUint64 } from './util/compare-uint64'\n\nexport class UInt64FunctionBuilder extends FunctionBuilder {\n readonly ptype = Uint64Function\n\n call(args: Array<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const {\n args: [value],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: 'Uint64',\n argSpec: (a) => [a.optional(uint64PType, boolPType)],\n })\n\n if (!value) {\n return new UInt64ExpressionBuilder(\n nodeFactory.uInt64Constant({\n sourceLocation,\n value: 0n,\n }),\n )\n }\n if (value.ptype.equals(boolPType)) {\n const expr = value.resolve()\n if (expr instanceof BoolConstant) {\n return new UInt64ExpressionBuilder(\n nodeFactory.uInt64Constant({\n sourceLocation,\n value: expr.value ? 1n : 0n,\n }),\n )\n } else {\n return new UInt64ExpressionBuilder(\n nodeFactory.reinterpretCast({\n expr,\n wtype: uint64WType,\n sourceLocation,\n }),\n )\n }\n }\n return value\n }\n}\n\nexport class UInt64ExpressionBuilder extends InstanceExpressionBuilder<InstanceType> {\n constructor(expr: Expression) {\n super(expr, uint64PType)\n }\n boolEval(sourceLocation: SourceLocation, negate: boolean): Expression {\n if (negate) {\n return nodeFactory.not({\n expr: this.resolve(),\n sourceLocation,\n })\n }\n return nodeFactory.reinterpretCast({\n sourceLocation,\n expr: this.resolve(),\n wtype: boolWType,\n })\n }\n\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n const otherExpr = requireExpressionOfType(other, uint64PType)\n return compareUint64(this._expr, otherExpr, op, sourceLocation, this.typeDescription)\n }\n\n prefixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n let binaryOp: UInt64BinaryOperator\n\n switch (op) {\n case BuilderUnaryOp.inc:\n binaryOp = UInt64BinaryOperator.add\n break\n case BuilderUnaryOp.dec:\n binaryOp = UInt64BinaryOperator.sub\n break\n case BuilderUnaryOp.bit_inv:\n return new UInt64ExpressionBuilder(\n nodeFactory.uInt64UnaryOperation({\n op: UInt64UnaryOperator.bitInvert,\n sourceLocation,\n expr: this.resolve(),\n wtype: this.ptype.wtype,\n }),\n )\n case BuilderUnaryOp.pos:\n return this\n default:\n return super.prefixUnaryOp(op, sourceLocation)\n }\n return new UInt64ExpressionBuilder(\n nodeFactory.assignmentExpression({\n target: this.resolveLValue(),\n sourceLocation,\n value: nodeFactory.uInt64BinaryOperation({\n left: this.resolve(),\n right: nodeFactory.uInt64Constant({ value: 1n, sourceLocation }),\n op: binaryOp,\n sourceLocation,\n }),\n }),\n )\n }\n\n postfixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n let unaryOp: UInt64PostfixUnaryOperator\n switch (op) {\n case BuilderUnaryOp.inc:\n unaryOp = UInt64PostfixUnaryOperator.increment\n break\n case BuilderUnaryOp.dec:\n unaryOp = UInt64PostfixUnaryOperator.decrement\n break\n default:\n return super.postfixUnaryOp(op, sourceLocation)\n }\n return new UInt64ExpressionBuilder(\n nodeFactory.uInt64PostfixUnaryOperation({\n sourceLocation,\n target: this.resolveLValue(),\n wtype: this.ptype.wtype,\n op: unaryOp,\n }),\n )\n }\n\n binaryOp(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n const otherExpr = requireExpressionOfType(other, uint64PType)\n\n const uintOp = op === BuilderBinaryOp.div ? UInt64BinaryOperator.floorDiv : tryConvertEnum(op, BuilderBinaryOp, UInt64BinaryOperator)\n if (uintOp === undefined) {\n throw new NotSupported(`UInt64 binary operator ${op}`, {\n sourceLocation,\n })\n }\n return new UInt64ExpressionBuilder(\n nodeFactory.uInt64BinaryOperation({\n left: this._expr,\n right: otherExpr,\n op: uintOp,\n sourceLocation,\n }),\n )\n }\n\n augmentedAssignment(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n return new UInt64ExpressionBuilder(\n nodeFactory.assignmentExpression({\n target: this.resolveLValue(),\n value: this.binaryOp(other, op, sourceLocation).resolve(),\n sourceLocation,\n }),\n )\n }\n\n assign(other: InstanceBuilder, sourceLocation: SourceLocation): InstanceBuilder {\n return new UInt64ExpressionBuilder(\n nodeFactory.assignmentExpression({\n target: this.resolveLValue(),\n sourceLocation,\n value: requireExpressionOfType(other, uint64PType),\n }),\n )\n }\n\n toBytes(sourceLocation: SourceLocation): awst.Expression {\n return intrinsicFactory.itob({ value: this.resolve(), sourceLocation })\n }\n}\n","import type { awst } from '../../awst'\nimport { intrinsicFactory } from '../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport { BigUIntBinaryOperator, BigUIntPostfixUnaryOperator, IntegerConstant, NumericComparison } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { NotSupported } from '../../errors'\nimport { logger } from '../../logger'\nimport { tryConvertEnum } from '../../util'\nimport type { InstanceType, PType } from '../ptypes'\nimport { BigUintFunction, biguintPType, uint64PType } from '../ptypes'\nimport { BooleanExpressionBuilder } from './boolean-expression-builder'\nimport type { InstanceBuilder } from './index'\nimport { BuilderBinaryOp, BuilderComparisonOp, BuilderUnaryOp, FunctionBuilder, InstanceExpressionBuilder } from './index'\nimport { UInt64ExpressionBuilder } from './uint64-expression-builder'\nimport { requireExpressionOfType } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\n\nexport class BigUintFunctionBuilder extends FunctionBuilder {\n readonly ptype = BigUintFunction\n\n call(args: Array<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const {\n args: [initialValue],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: 'BigUInt',\n argSpec: (a) => [a.optional(uint64PType, biguintPType)],\n })\n if (!initialValue) {\n return new BigUintExpressionBuilder(\n nodeFactory.bigUIntConstant({\n sourceLocation,\n value: 0n,\n }),\n )\n }\n if (initialValue.ptype.equals(uint64PType)) {\n const expr = initialValue.resolve()\n if (expr instanceof IntegerConstant) {\n return new BigUintExpressionBuilder(\n nodeFactory.bigUIntConstant({\n ...expr,\n }),\n )\n }\n return new BigUintExpressionBuilder(\n nodeFactory.reinterpretCast({\n expr: initialValue.toBytes(sourceLocation),\n sourceLocation,\n wtype: biguintPType.wtype,\n }),\n )\n }\n return initialValue\n }\n}\n\nexport class BigUintExpressionBuilder extends InstanceExpressionBuilder<InstanceType> {\n constructor(expr: Expression) {\n super(expr, biguintPType)\n }\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n const otherExpr = requireExpressionOfType(other, biguintPType)\n const numComOp = tryConvertEnum(op, BuilderComparisonOp, NumericComparison)\n if (numComOp === undefined) {\n throw new NotSupported(`Numeric comparison operator ${op}`, {\n sourceLocation,\n })\n }\n return new BooleanExpressionBuilder(\n nodeFactory.numericComparisonExpression({\n lhs: this._expr,\n rhs: otherExpr,\n operator: numComOp,\n sourceLocation,\n }),\n )\n }\n boolEval(sourceLocation: SourceLocation, negate: boolean = false): Expression {\n return new UInt64ExpressionBuilder(\n intrinsicFactory.bitLen({\n value: this._expr,\n sourceLocation,\n }),\n ).boolEval(sourceLocation, negate)\n }\n\n prefixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n let binaryOp: BigUIntBinaryOperator\n\n switch (op) {\n case BuilderUnaryOp.inc:\n binaryOp = BigUIntBinaryOperator.add\n break\n case BuilderUnaryOp.dec:\n binaryOp = BigUIntBinaryOperator.sub\n break\n case BuilderUnaryOp.bit_inv:\n logger.error(sourceLocation, `Bitwise inversion of ${this.typeDescription} is not supported as the bit size is indeterminate`)\n return this\n\n case BuilderUnaryOp.pos:\n return this\n default:\n return super.prefixUnaryOp(op, sourceLocation)\n }\n return new BigUintExpressionBuilder(\n nodeFactory.assignmentExpression({\n target: this.resolveLValue(),\n sourceLocation,\n value: nodeFactory.bigUIntBinaryOperation({\n left: this.resolve(),\n right: nodeFactory.bigUIntConstant({ value: 1n, sourceLocation }),\n op: binaryOp,\n sourceLocation,\n }),\n }),\n )\n }\n\n postfixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n let unaryOp: BigUIntPostfixUnaryOperator\n switch (op) {\n case BuilderUnaryOp.inc:\n unaryOp = BigUIntPostfixUnaryOperator.increment\n break\n case BuilderUnaryOp.dec:\n unaryOp = BigUIntPostfixUnaryOperator.decrement\n break\n default:\n return super.postfixUnaryOp(op, sourceLocation)\n }\n return new BigUintExpressionBuilder(\n nodeFactory.bigUIntPostfixUnaryOperation({\n sourceLocation,\n target: this.resolveLValue(),\n wtype: this.ptype.wtype,\n op: unaryOp,\n }),\n )\n }\n\n binaryOp(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n const otherExpr = requireExpressionOfType(other, biguintPType)\n\n const uintOp = op === BuilderBinaryOp.div ? BigUIntBinaryOperator.floorDiv : tryConvertEnum(op, BuilderBinaryOp, BigUIntBinaryOperator)\n if (uintOp === undefined) {\n throw new NotSupported(`BigUint binary operator '${op}'`, {\n sourceLocation,\n })\n }\n return new BigUintExpressionBuilder(\n nodeFactory.bigUIntBinaryOperation({\n left: this._expr,\n right: otherExpr,\n op: uintOp,\n sourceLocation,\n }),\n )\n }\n\n augmentedAssignment(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n return new BigUintExpressionBuilder(\n nodeFactory.assignmentExpression({\n target: this.resolveLValue(),\n value: this.binaryOp(other, op, sourceLocation).resolve(),\n sourceLocation,\n }),\n )\n }\n\n assign(other: InstanceBuilder, sourceLocation: SourceLocation): InstanceBuilder {\n return new BigUintExpressionBuilder(\n nodeFactory.assignmentExpression({\n target: this.resolveLValue(),\n sourceLocation,\n value: requireExpressionOfType(other, biguintPType),\n }),\n )\n }\n\n toBytes(sourceLocation: SourceLocation): awst.Expression {\n return intrinsicFactory.itob({ value: this.resolve(), sourceLocation })\n }\n}\n","import { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError } from '../../errors'\nimport { BuilderBinaryOp, BuilderComparisonOp } from './index'\n\nconst binaryOpFolding: Record<BuilderBinaryOp, undefined | ((left: bigint, right: bigint) => bigint)> = {\n [BuilderBinaryOp.div]: (l, r) => l / r,\n [BuilderBinaryOp.add]: (l, r) => l + r,\n [BuilderBinaryOp.sub]: (l, r) => l - r,\n [BuilderBinaryOp.mult]: (l, r) => l * r,\n [BuilderBinaryOp.mod]: (l, r) => l % r,\n [BuilderBinaryOp.pow]: (l, r) => l ** r,\n [BuilderBinaryOp.matMult]: undefined,\n [BuilderBinaryOp.lshift]: (l, r) => {\n return l << r\n },\n [BuilderBinaryOp.rshift]: (l, r) => l >> r,\n [BuilderBinaryOp.bitOr]: (l, r) => l | r,\n [BuilderBinaryOp.bitXor]: (l, r) => l ^ r,\n [BuilderBinaryOp.bitAnd]: (l, r) => l & r,\n [BuilderBinaryOp.comma]: (l, r) => r,\n}\n\nconst comparisonOpFolding: Record<BuilderComparisonOp, undefined | ((left: bigint, right: bigint) => boolean)> = {\n [BuilderComparisonOp.eq]: (l, r) => l === r,\n [BuilderComparisonOp.ne]: (l, r) => l !== r,\n [BuilderComparisonOp.lt]: (l, r) => l < r,\n [BuilderComparisonOp.lte]: (l, r) => l <= r,\n [BuilderComparisonOp.gt]: (l, r) => l > r,\n [BuilderComparisonOp.gte]: (l, r) => l >= r,\n}\n\nexport function foldBinaryOp(left: bigint, right: bigint, op: BuilderBinaryOp, sourceLocation: SourceLocation): bigint {\n const result = binaryOpFolding[op]?.(left, right)\n switch (typeof result) {\n case 'bigint':\n return result\n default:\n throw new CodeError(`${op} is not supported`, { sourceLocation })\n }\n}\n\nexport function foldComparisonOp(left: bigint, right: bigint, op: BuilderComparisonOp, sourceLocation: SourceLocation): Expression {\n const result = comparisonOpFolding[op]?.(left, right)\n switch (typeof result) {\n case 'boolean':\n return nodeFactory.boolConstant({\n value: result,\n sourceLocation: sourceLocation,\n })\n default:\n throw new CodeError(`${op} is not supported`, { sourceLocation })\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { CodeError } from '../../../errors'\nimport { codeInvariant } from '../../../util'\nimport type { PTypeOrClass } from '../../ptypes'\nimport {\n BigIntLiteralPType,\n bigIntPType,\n biguintPType,\n boolPType,\n numberPType,\n NumericLiteralPType,\n TransientType,\n uint64PType,\n} from '../../ptypes'\nimport { typeRegistry } from '../../type-registry'\nimport { BigUintExpressionBuilder } from '../biguint-expression-builder'\nimport { foldBinaryOp, foldComparisonOp } from '../folding'\nimport type { BuilderBinaryOp, BuilderComparisonOp, InstanceBuilder } from '../index'\nimport { LiteralExpressionBuilder } from '../literal-expression-builder'\nimport { UInt64ExpressionBuilder } from '../uint64-expression-builder'\nimport { isValidLiteralForPType } from '../util'\n\nexport class BigIntLiteralExpressionBuilder extends LiteralExpressionBuilder {\n singleEvaluation(): InstanceBuilder {\n return this\n }\n\n constructor(\n public readonly value: bigint,\n public readonly ptype: TransientType,\n location: SourceLocation,\n ) {\n super(location)\n }\n\n resolvableToPType(ptype: PTypeOrClass): boolean {\n if (this.ptype instanceof NumericLiteralPType || this.ptype.equals(numberPType)) {\n return ptype.equals(uint64PType) || ptype.equals(numberPType) || ptype.equals(this.ptype)\n } else if (this.ptype instanceof BigIntLiteralPType || this.ptype.equals(bigIntPType)) {\n return ptype.equals(biguintPType) || ptype.equals(bigIntPType) || ptype.equals(this.ptype)\n }\n return false\n }\n boolEval(sourceLocation: SourceLocation, negate: boolean = false): Expression {\n const value = negate ? !this.value : Boolean(this.value)\n\n return nodeFactory.boolConstant({\n value,\n sourceLocation,\n })\n }\n\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n codeInvariant(this.resolvableToPType(ptype), `${ptype.name} cannot be converted to type ${ptype.name}`, this.sourceLocation)\n\n if (ptype.equals(this.ptype)) return this\n if (ptype instanceof TransientType && (ptype.equals(numberPType) || ptype.equals(bigIntPType))) {\n return new BigIntLiteralExpressionBuilder(this.value, ptype, this.sourceLocation)\n }\n\n codeInvariant(isValidLiteralForPType(this.value, ptype), `${ptype.name} cannot be converted to type ${ptype.name}`, this.sourceLocation)\n if (ptype.equals(uint64PType)) {\n return new UInt64ExpressionBuilder(nodeFactory.uInt64Constant({ value: this.value, sourceLocation: this.sourceLocation }))\n } else if (ptype.equals(biguintPType)) {\n return new BigUintExpressionBuilder(nodeFactory.bigUIntConstant({ value: this.value, sourceLocation: this.sourceLocation }))\n }\n throw new CodeError(`${ptype.name} cannot be converted to type ${ptype.name}`, { sourceLocation: this.sourceLocation })\n }\n\n binaryOp(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n if (other.ptype.wtype) {\n return this.resolveToPType(other.ptype).binaryOp(other, op, sourceLocation)\n }\n if (other instanceof BigIntLiteralExpressionBuilder) {\n return new BigIntLiteralExpressionBuilder(foldBinaryOp(this.value, other.value, op, sourceLocation), this.ptype, sourceLocation)\n }\n return super.binaryOp(other, op, sourceLocation)\n }\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n if (other.ptype.wtype) {\n return this.resolveToPType(other.ptype).compare(other, op, sourceLocation)\n }\n if (other instanceof BigIntLiteralExpressionBuilder) {\n return typeRegistry.getInstanceEb(foldComparisonOp(this.value, other.value, op, sourceLocation), boolPType)\n }\n return super.compare(other, op, sourceLocation)\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { boolWType } from '../../../awst/wtypes'\nimport type { PType, PTypeOrClass } from '../../ptypes'\nimport { typeRegistry } from '../../type-registry'\nimport type { InstanceBuilder } from '../index'\nimport { LiteralExpressionBuilder } from '../literal-expression-builder'\nimport { requireBuilderOfType, resolvableToType } from '../util'\n\nexport class ConditionalExpressionBuilder extends LiteralExpressionBuilder {\n private readonly _ptype: PType\n private readonly whenTrue: InstanceBuilder\n private readonly whenFalse: InstanceBuilder\n private readonly condition: Expression\n\n get ptype(): PType {\n return this._ptype\n }\n\n boolEval(sourceLocation: SourceLocation, negate: boolean = false): Expression {\n return nodeFactory.conditionalExpression({\n sourceLocation: this.sourceLocation,\n falseExpr: this.whenFalse.boolEval(sourceLocation, negate),\n trueExpr: this.whenTrue.boolEval(sourceLocation, negate),\n condition: this.condition,\n wtype: boolWType,\n })\n }\n\n constructor({\n condition,\n ptype,\n whenFalse,\n whenTrue,\n sourceLocation,\n }: {\n ptype: PType\n condition: Expression\n whenTrue: InstanceBuilder\n whenFalse: InstanceBuilder\n sourceLocation: SourceLocation\n }) {\n super(sourceLocation)\n this._ptype = ptype\n this.whenTrue = whenTrue\n this.whenFalse = whenFalse\n this.condition = condition\n }\n\n resolvableToPType(ptype: PTypeOrClass): boolean {\n return resolvableToType(this.whenTrue, ptype) && resolvableToType(this.whenFalse, ptype)\n }\n\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n const falseBuilder = requireBuilderOfType(this.whenFalse, ptype)\n const trueBuilder = requireBuilderOfType(this.whenTrue, ptype)\n\n return typeRegistry.getInstanceEb(\n nodeFactory.conditionalExpression({\n sourceLocation: this.sourceLocation,\n falseExpr: falseBuilder.resolve(),\n trueExpr: trueBuilder.resolve(),\n condition: this.condition,\n wtype: falseBuilder.ptype.wtypeOrThrow,\n }),\n falseBuilder.ptype,\n )\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { CodeError } from '../../../errors'\nimport { invariant } from '../../../util'\nimport type { PTypeOrClass } from '../../ptypes'\nimport { ObjectPType, type PType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder } from '../index'\nimport { InstanceExpressionBuilder, type NodeBuilder } from '../index'\nimport { requireExpressionOfType } from '../util'\n\nexport class ObjectExpressionBuilder extends InstanceExpressionBuilder<ObjectPType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof ObjectPType, `ObjectExpressionBuilder must be instantiated with ptype of ObjectPType`)\n super(expr, ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n const propertyIndex = this.ptype.orderedProperties().findIndex(([prop]) => prop === name)\n if (propertyIndex === -1) {\n return super.memberAccess(name, sourceLocation)\n }\n const propertyPtype = this.ptype.getPropertyType(name)\n return instanceEb(\n nodeFactory.tupleItemExpression({\n index: BigInt(propertyIndex),\n sourceLocation,\n base: this._expr,\n }),\n propertyPtype,\n )\n }\n\n hasProperty(name: string): boolean {\n return this.ptype.orderedProperties().some(([prop]) => prop === name)\n }\n\n resolvableToPType(ptype: PTypeOrClass): ptype is ObjectPType {\n if (ptype instanceof ObjectPType) {\n return ptype.orderedProperties().every(([prop, propType]) => this.ptype.hasPropertyOfType(prop, propType))\n }\n return false\n }\n\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n if (this.resolvableToPType(ptype)) {\n const base = this.singleEvaluation()\n return instanceEb(\n nodeFactory.tupleExpression({\n sourceLocation: this.sourceLocation,\n items: ptype\n .orderedProperties()\n .map(([prop, propType]) => requireExpressionOfType(base.memberAccess(prop, this.sourceLocation), propType)),\n }),\n ptype,\n )\n }\n throw CodeError.cannotResolveToType({ sourceType: this.ptype, targetType: ptype, sourceLocation: this.sourceLocation })\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression, LValue } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { CodeError } from '../../../errors'\nimport { codeInvariant } from '../../../util'\nimport type { PTypeOrClass } from '../../ptypes'\nimport { ObjectPType } from '../../ptypes'\nimport type { InstanceBuilder } from '../index'\nimport { LiteralExpressionBuilder } from '../literal-expression-builder'\nimport { requestExpressionOfType, requireExpressionOfType, requireInstanceBuilder } from '../util'\nimport { ObjectExpressionBuilder } from './object-expression-builder'\n\nexport type ObjectLiteralParts =\n | {\n type: 'properties'\n properties: Record<string, InstanceBuilder>\n }\n | {\n type: 'spread-object'\n obj: InstanceBuilder\n }\n\nexport class ObjectLiteralExpressionBuilder extends LiteralExpressionBuilder {\n readonly _ptype: ObjectPType\n get ptype(): ObjectPType {\n return this._ptype\n }\n\n constructor(\n sourceLocation: SourceLocation,\n ptype: ObjectPType,\n private readonly parts: ObjectLiteralParts[],\n private readonly generateDiscardedVarName: () => string,\n ) {\n super(sourceLocation)\n this._ptype = ptype\n }\n\n resolve(): Expression {\n // Resolve object to a tuple using its own inferred types\n return this.toTuple(this.ptype, this.sourceLocation)\n }\n resolveLValue(): LValue {\n return nodeFactory.tupleExpression({\n items: this.ptype.orderedProperties().map(([p, propPType]) => this.memberAccess(p, this.sourceLocation).resolveLValue()),\n sourceLocation: this.sourceLocation,\n })\n }\n memberAccess(name: string, sourceLocation: SourceLocation): InstanceBuilder {\n for (const part of this.parts.toReversed()) {\n if (part.type === 'properties') {\n if (Object.hasOwn(part.properties, name)) {\n return part.properties[name]\n }\n } else {\n if (part.obj.hasProperty(name)) {\n return requireInstanceBuilder(part.obj.memberAccess(name, sourceLocation))\n }\n }\n }\n throw new CodeError(`${name} does not exist on ${this.typeDescription}`, { sourceLocation })\n }\n\n hasProperty(name: string): boolean {\n return this.parts.some((part) => (part.type === 'properties' ? Object.hasOwn(part.properties, name) : part.obj.hasProperty(name)))\n }\n\n private toTuple(ptype: ObjectPType, sourceLocation: SourceLocation): Expression {\n return nodeFactory.tupleExpression({\n items: ptype\n .orderedProperties()\n .map(([p, propPType]) => requireExpressionOfType(this.memberAccess(p, this.sourceLocation), propPType)),\n sourceLocation: this.sourceLocation,\n })\n }\n\n resolvableToPType(ptype: PTypeOrClass): boolean {\n if (!(ptype instanceof ObjectPType)) return false\n for (const [prop, propPType] of ptype.orderedProperties()) {\n if (!this.hasProperty(prop)) return false\n const propValue = requestExpressionOfType(this.memberAccess(prop, this.sourceLocation), propPType)\n if (propValue === undefined) return false\n }\n return true\n }\n\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n codeInvariant(ptype instanceof ObjectPType, `Object literal cannot be resolved to type ${ptype}`, this.sourceLocation)\n return new ObjectExpressionBuilder(this.toTuple(ptype, this.sourceLocation), ptype)\n }\n\n assign(other: InstanceBuilder, sourceLocation: SourceLocation): InstanceBuilder {\n const sourceType = other.ptype\n codeInvariant(sourceType instanceof ObjectPType, 'Assignment source must be an object type')\n const source = other.resolve()\n\n const targets: LValue[] = []\n for (const [sourceProp, sourcePropType] of sourceType.orderedProperties()) {\n if (this.hasProperty(sourceProp)) {\n targets.push(this.memberAccess(sourceProp, sourceLocation).resolveLValue())\n } else {\n targets.push(\n nodeFactory.varExpression({ name: this.generateDiscardedVarName(), sourceLocation, wtype: sourcePropType.wtypeOrThrow }),\n )\n }\n }\n return new ObjectExpressionBuilder(\n nodeFactory.assignmentExpression({\n target: nodeFactory.tupleExpression({ items: targets, sourceLocation }),\n value: source,\n sourceLocation,\n }),\n sourceType,\n )\n }\n}\n","import type { Expression, LValue } from '../../awst/nodes'\nimport { CodeError, InternalError } from '../../errors'\nimport type { PType, PTypeOrClass } from '../ptypes'\nimport { anyPType } from '../ptypes'\nimport { InstanceBuilder } from './index'\n\nexport class OmittedExpressionBuilder extends InstanceBuilder {\n get ptype(): PType {\n return anyPType\n }\n resolve(): Expression {\n throw new CodeError('Omitted expression cannot be resolved', { sourceLocation: this.sourceLocation })\n }\n resolveLValue(): LValue {\n throw new InternalError('Omitted expression cannot be resolved to an lvalue', { sourceLocation: this.sourceLocation })\n }\n\n resolvableToPType(ptype: PTypeOrClass): boolean {\n throw new InternalError('Omitted expression cannot be resolved to any type', { sourceLocation: this.sourceLocation })\n }\n}\n","import { awst, wtypes } from '../../awst'\nimport { intrinsicFactory } from '../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport { BytesBinaryOperator, BytesEncoding, EqualityComparison } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError, NotSupported } from '../../errors'\nimport { tryConvertEnum, utf8ToUint8Array } from '../../util'\nimport type { InstanceType, PType, PTypeOrClass } from '../ptypes'\nimport { boolPType, bytesPType, stringPType } from '../ptypes'\nimport { instanceEb } from '../type-registry'\nimport type { InstanceBuilder, NodeBuilder } from './index'\nimport { BuilderBinaryOp, BuilderComparisonOp, FunctionBuilder, InstanceExpressionBuilder } from './index'\nimport { UInt64ExpressionBuilder } from './uint64-expression-builder'\nimport { requireExpressionOfType } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\n\nexport class StringFunctionBuilder extends FunctionBuilder {\n taggedTemplate(head: string, spans: ReadonlyArray<readonly [InstanceBuilder, string]>, sourceLocation: SourceLocation): InstanceBuilder {\n let result: awst.Expression = nodeFactory.stringConstant({\n sourceLocation,\n value: head,\n })\n for (const [value, joiningText] of spans) {\n const valueStr = value.toString(sourceLocation)\n result = nodeFactory.bytesBinaryOperation({\n left: result,\n right: valueStr,\n op: BytesBinaryOperator.add,\n sourceLocation,\n wtype: wtypes.stringWType,\n })\n if (joiningText) {\n result = nodeFactory.bytesBinaryOperation({\n left: result,\n right: nodeFactory.stringConstant({\n sourceLocation,\n value: joiningText,\n }),\n op: BytesBinaryOperator.add,\n sourceLocation,\n wtype: wtypes.stringWType,\n })\n }\n }\n return new StringExpressionBuilder(result)\n }\n\n call(args: Array<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n if (args.length === 0) {\n return new StringExpressionBuilder(\n nodeFactory.stringConstant({\n sourceLocation,\n value: '',\n }),\n )\n }\n if (args.length === 1) {\n const [arg0] = args\n\n if (arg0.ptype.equals(bytesPType)) {\n return new StringExpressionBuilder(\n nodeFactory.reinterpretCast({\n expr: arg0.resolve(),\n sourceLocation,\n wtype: wtypes.stringWType,\n }),\n )\n }\n }\n throw CodeError.unexpectedUnhandledArgs({ sourceLocation })\n }\n}\n\nexport class StringExpressionBuilder extends InstanceExpressionBuilder<InstanceType> {\n constructor(expr: Expression) {\n super(expr, stringPType)\n }\n\n resolvableToPType(ptype: PTypeOrClass): boolean {\n return ptype.equals(bytesPType) || super.resolvableToPType(ptype)\n }\n\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n if (ptype.equals(bytesPType)) {\n return instanceEb(this.toBytes(this.sourceLocation), bytesPType)\n }\n return super.resolveToPType(ptype)\n }\n\n boolEval(sourceLocation: SourceLocation, negate = false): Expression {\n return new UInt64ExpressionBuilder(\n intrinsicFactory.bytesLen({\n value: this._expr,\n sourceLocation,\n }),\n ).boolEval(sourceLocation, negate)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'concat':\n return new ConcatExpressionBuilder(this._expr)\n }\n return super.memberAccess(name, sourceLocation)\n }\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n const otherExpr = requireExpressionOfType(other, stringPType)\n const numComOp = tryConvertEnum(op, BuilderComparisonOp, EqualityComparison)\n if (numComOp === undefined) {\n throw new NotSupported(`Numeric comparison operator ${op}`, {\n sourceLocation,\n })\n }\n return instanceEb(\n nodeFactory.bytesComparisonExpression({\n lhs: this._expr,\n rhs: otherExpr,\n operator: numComOp,\n sourceLocation,\n }),\n boolPType,\n )\n }\n\n binaryOp(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n switch (op) {\n case BuilderBinaryOp.add:\n return new StringExpressionBuilder(\n intrinsicFactory.bytesConcat({\n left: this.resolve(),\n right: requireExpressionOfType(other, stringPType),\n sourceLocation,\n }),\n )\n }\n return super.binaryOp(other, op, sourceLocation)\n }\n\n augmentedAssignment(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n const newValue = this.binaryOp(other, op, sourceLocation)\n return new StringExpressionBuilder(\n nodeFactory.assignmentExpression({\n target: this.resolveLValue(),\n sourceLocation,\n value: newValue.resolve(),\n }),\n )\n }\n\n toBytes(sourceLocation: SourceLocation): awst.Expression {\n if (this._expr instanceof awst.StringConstant) {\n return nodeFactory.bytesConstant({\n value: utf8ToUint8Array(this._expr.value),\n encoding: BytesEncoding.utf8,\n sourceLocation: this._expr.sourceLocation,\n })\n }\n return nodeFactory.reinterpretCast({\n expr: this._expr,\n sourceLocation,\n wtype: wtypes.bytesWType,\n })\n }\n\n toString(): Expression {\n return this.resolve()\n }\n}\n\nexport class ConcatExpressionBuilder extends FunctionBuilder {\n constructor(private expr: awst.Expression) {\n super(expr.sourceLocation)\n }\n\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation) {\n const { args: others } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: 'concat',\n argSpec: (a) => args.map((_) => a.required(stringPType)),\n })\n\n return new StringExpressionBuilder(\n others.reduce(\n (acc, cur) =>\n intrinsicFactory.bytesConcat({\n left: acc,\n right: cur.resolve(),\n sourceLocation: sourceLocation,\n }),\n this.expr,\n ),\n )\n }\n}\n","import type * as ts from 'typescript'\nimport { NotSupported } from '../errors'\nimport type { Visitor } from '../visitor/visitor'\nimport { accept } from '../visitor/visitor'\nimport type { AwstBuildContext } from './context/awst-build-context'\n\ntype ObjectNames = ts.PropertyName | ts.PseudoLiteralToken\n\nexport class TextVisitor implements Visitor<ObjectNames, string> {\n constructor(public context: AwstBuildContext) {}\n\n visitBigIntLiteral(node: ts.BigIntLiteral): string {\n return node.text\n }\n\n visitTemplateHead(node: ts.TemplateHead): string {\n return node.text\n }\n visitTemplateMiddle(node: ts.TemplateMiddle): string {\n return node.text\n }\n visitTemplateTail(node: ts.TemplateTail): string {\n return node.text\n }\n public accept = <TNode extends ts.Node>(node: TNode) => accept<TextVisitor, TNode>(this, node)\n\n visitIdentifier(node: ts.Identifier): string {\n return node.text\n }\n visitNoSubstitutionTemplateLiteral(node: ts.NoSubstitutionTemplateLiteral): string {\n return node.text\n }\n visitNumericLiteral(node: ts.NumericLiteral): string {\n return node.text\n }\n visitComputedPropertyName(node: ts.ComputedPropertyName): string {\n throw new NotSupported('Computed property names', {\n sourceLocation: this.context.getSourceLocation(node),\n })\n }\n visitPrivateIdentifier(node: ts.PrivateIdentifier): string {\n return node.text\n }\n visitStringLiteral(node: ts.StringLiteral): string {\n return node.text\n }\n}\n","import ts from 'typescript'\nimport { awst } from '../awst'\nimport { nodeFactory } from '../awst/node-factory'\nimport type { Expression, LValue, Statement } from '../awst/nodes'\nimport type { SourceLocation } from '../awst/source-location'\nimport { CodeError, NotSupported, TodoError } from '../errors'\nimport { logger } from '../logger'\nimport { codeInvariant, enumerate, invariant } from '../util'\nimport type { Expressions } from '../visitor/syntax-names'\nimport {\n AugmentedAssignmentBinaryOp,\n AugmentedAssignmentLogicalOpSyntaxes,\n BinaryOpSyntaxes,\n ComparisonOpSyntaxes,\n getNodeName,\n getSyntaxName,\n isKeyOf,\n LogicalOpSyntaxes,\n UnaryExpressionUnaryOps,\n} from '../visitor/syntax-names'\nimport type { Visitor } from '../visitor/visitor'\nimport { accept } from '../visitor/visitor'\nimport type { AwstBuildContext } from './context/awst-build-context'\nimport type { InstanceBuilder } from './eb'\nimport { NodeBuilder } from './eb'\nimport { BooleanExpressionBuilder } from './eb/boolean-expression-builder'\nimport { ArrayLiteralExpressionBuilder } from './eb/literal/array-literal-expression-builder'\nimport { BigIntLiteralExpressionBuilder } from './eb/literal/big-int-literal-expression-builder'\nimport { ConditionalExpressionBuilder } from './eb/literal/conditional-expression-builder'\nimport type { ObjectLiteralParts } from './eb/literal/object-literal-expression-builder'\nimport { ObjectLiteralExpressionBuilder } from './eb/literal/object-literal-expression-builder'\nimport { OmittedExpressionBuilder } from './eb/omitted-expression-builder'\nimport { StringExpressionBuilder, StringFunctionBuilder } from './eb/string-expression-builder'\nimport { requireExpressionOfType, requireInstanceBuilder } from './eb/util'\nimport type { PType } from './ptypes'\nimport {\n ArrayLiteralPType,\n ArrayPType,\n BigIntLiteralPType,\n bigIntPType,\n biguintPType,\n boolPType,\n numberPType,\n NumericLiteralPType,\n ObjectPType,\n TransientType,\n TuplePType,\n uint64PType,\n UnionPType,\n} from './ptypes'\nimport { TextVisitor } from './text-visitor'\nimport { instanceEb, typeRegistry } from './type-registry'\n\nexport abstract class BaseVisitor implements Visitor<Expressions, NodeBuilder> {\n private baseAccept = <TNode extends ts.Node>(node: TNode) => accept<BaseVisitor, TNode>(this, node)\n readonly textVisitor: TextVisitor\n\n protected constructor(public context: AwstBuildContext) {\n this.textVisitor = new TextVisitor(context)\n }\n\n logNotSupported(node: ts.Node | undefined, message: string) {\n if (!node) return\n logger.error(new NotSupported(message, { sourceLocation: this.sourceLocation(node) }))\n }\n\n throwNotSupported(node: ts.Node, message: string): never {\n throw new NotSupported(message, { sourceLocation: this.sourceLocation(node) })\n }\n\n visitBigIntLiteral(node: ts.BigIntLiteral): InstanceBuilder {\n const literalValue = BigInt(node.text.slice(0, -1))\n const ptype = this.context.getPTypeForNode(node)\n invariant(ptype instanceof TransientType, 'Literals should resolve to transient PTypes')\n return new BigIntLiteralExpressionBuilder(literalValue, ptype, this.sourceLocation(node))\n }\n\n visitRegularExpressionLiteral(node: ts.RegularExpressionLiteral): InstanceBuilder {\n this.throwNotSupported(node, 'Regular expressions')\n }\n\n visitFalseKeyword(node: ts.FalseLiteral): InstanceBuilder {\n return new BooleanExpressionBuilder(nodeFactory.boolConstant({ value: false, sourceLocation: this.sourceLocation(node) }))\n }\n\n visitTrueKeyword(node: ts.TrueLiteral): InstanceBuilder {\n return new BooleanExpressionBuilder(nodeFactory.boolConstant({ value: true, sourceLocation: this.sourceLocation(node) }))\n }\n\n sourceLocation(node: ts.Node): SourceLocation {\n return this.context.getSourceLocation(node)\n }\n\n visitStringLiteral(node: ts.StringLiteral): InstanceBuilder {\n return new StringExpressionBuilder(nodeFactory.stringConstant({ value: node.text, sourceLocation: this.sourceLocation(node) }))\n }\n\n visitNoSubstitutionTemplateLiteral(node: ts.NoSubstitutionTemplateLiteral): InstanceBuilder {\n return new StringExpressionBuilder(nodeFactory.stringConstant({ value: node.text, sourceLocation: this.sourceLocation(node) }))\n }\n\n visitNumericLiteral(node: ts.NumericLiteral): InstanceBuilder {\n const literalValue = BigInt(node.text)\n const ptype = this.context.getPTypeForNode(node)\n invariant(ptype instanceof TransientType, 'Literals should resolve to transient PTypes')\n return new BigIntLiteralExpressionBuilder(literalValue, ptype, this.sourceLocation(node))\n }\n\n visitIdentifier(node: ts.Identifier): NodeBuilder {\n return this.context.getBuilderForNode(node)\n }\n\n visitImportKeyword(node: ts.ImportExpression): NodeBuilder {\n this.throwNotSupported(node, 'Dynamic imports')\n }\n\n visitNullKeyword(node: ts.NullLiteral): NodeBuilder {\n this.throwNotSupported(node, 'Null values')\n }\n\n visitPrivateIdentifier(node: ts.PrivateIdentifier): NodeBuilder {\n throw new TodoError('PrivateIdentifier')\n }\n\n visitSuperKeyword(node: ts.SuperExpression): NodeBuilder {\n this.throwNotSupported(node, `'super' keyword outside of a contract type`)\n }\n\n visitThisKeyword(node: ts.ThisExpression): NodeBuilder {\n this.throwNotSupported(node, `'this' keyword outside of a contract type`)\n }\n\n visitFunctionExpression(node: ts.FunctionExpression): NodeBuilder {\n throw new TodoError('FunctionExpression')\n }\n\n visitClassExpression(node: ts.ClassExpression): NodeBuilder {\n this.throwNotSupported(node, 'Class expressions')\n }\n\n visitObjectLiteralExpression(node: ts.ObjectLiteralExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n const parts: Array<ObjectLiteralParts> = node.properties.flatMap((p): ObjectLiteralParts[] => {\n const propertySourceLocation = this.sourceLocation(p)\n switch (p.kind) {\n case ts.SyntaxKind.PropertyAssignment:\n return [\n {\n type: 'properties',\n properties: {\n [this.textVisitor.accept(p.name)]: requireInstanceBuilder(this.baseAccept(p.initializer)),\n },\n },\n ]\n case ts.SyntaxKind.ShorthandPropertyAssignment:\n codeInvariant(!p.objectAssignmentInitializer, 'Object assignment initializer not supported', propertySourceLocation)\n this.logNotSupported(p.equalsToken, 'The equals token is not valid here')\n return [\n {\n type: 'properties',\n properties: { [this.textVisitor.accept(p.name)]: requireInstanceBuilder(this.baseAccept(p.name)) },\n },\n ]\n case ts.SyntaxKind.SpreadAssignment:\n return [\n {\n type: 'spread-object',\n obj: requireInstanceBuilder(this.baseAccept(p.expression)),\n },\n ]\n default:\n logger.error(propertySourceLocation, `Unsupported object literal property kind ${getNodeName(p)}`)\n return []\n }\n })\n const ptype = this.context.getPTypeForNode(node)\n invariant(ptype instanceof ObjectPType, 'Object literal ptype should resolve to ObjectPType')\n return new ObjectLiteralExpressionBuilder(sourceLocation, ptype, parts, () => this.context.generateDiscardedVarName())\n }\n\n visitArrayLiteralExpression(node: ts.ArrayLiteralExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n return new ArrayLiteralExpressionBuilder(\n sourceLocation,\n node.elements.map((e) => requireInstanceBuilder(this.baseAccept(e))),\n )\n }\n\n visitPropertyAccessExpression(node: ts.PropertyAccessExpression): NodeBuilder {\n this.logNotSupported(node.questionDotToken, 'The optional chaining (?.) operator is not supported')\n const target = this.baseAccept(node.expression)\n const property = this.textVisitor.accept(node.name)\n return target.memberAccess(property, this.sourceLocation(node))\n }\n\n visitElementAccessExpression(node: ts.ElementAccessExpression): NodeBuilder {\n this.logNotSupported(node.questionDotToken, 'The optional chaining (?.) operator is not supported')\n\n const sourceLocation = this.sourceLocation(node)\n const target = this.baseAccept(node.expression)\n const argument = this.baseAccept(node.argumentExpression)\n return target.indexAccess(requireInstanceBuilder(argument), sourceLocation)\n }\n\n visitCallExpression(node: ts.CallExpression): NodeBuilder {\n this.logNotSupported(node.questionDotToken, 'The optional chaining (?.) operator is not supported')\n const sourceLocation = this.sourceLocation(node)\n const eb = this.baseAccept(node.expression)\n const args = node.arguments.map((a) => requireInstanceBuilder(this.baseAccept(a)))\n const typeArgs = this.context.getTypeParameters(node)\n return eb.call(args, typeArgs, sourceLocation)\n }\n\n visitNewExpression(node: ts.NewExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n const eb = this.baseAccept(node.expression)\n const args = node.arguments?.map((a) => requireInstanceBuilder(this.baseAccept(a))) ?? []\n const typeArgs = node.typeArguments?.map((t) => this.context.getPTypeForNode(t)) ?? this.context.getPTypeForNode(node).getGenericArgs()\n return eb.newCall(args, typeArgs, sourceLocation)\n }\n\n visitTaggedTemplateExpression(node: ts.TaggedTemplateExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n const target = this.baseAccept(node.tag)\n if (ts.isNoSubstitutionTemplateLiteral(node.template)) {\n return target.taggedTemplate(this.textVisitor.accept(node.template), [], sourceLocation)\n } else {\n const head = this.textVisitor.accept(node.template.head)\n const spans = node.template.templateSpans.map(\n (s) => [requireInstanceBuilder(this.baseAccept(s.expression)), this.textVisitor.accept(s.literal)] as const,\n )\n return target.taggedTemplate(head, spans, sourceLocation)\n }\n }\n\n visitTypeAssertionExpression(node: ts.TypeAssertion): NodeBuilder {\n throw new TodoError('TypeAssertion')\n }\n\n visitParenthesizedExpression(node: ts.ParenthesizedExpression): NodeBuilder {\n return this.baseAccept(node.expression)\n }\n\n /**\n * `delete obj.prop`\n *\n * Not supported currently as typescript requires 'prop' to be optional and we don't support optional values\n */\n visitDeleteExpression(node: ts.DeleteExpression): NodeBuilder {\n this.throwNotSupported(node, 'Delete expressions')\n }\n\n visitTypeOfExpression(node: ts.TypeOfExpression): NodeBuilder {\n throw new TodoError('TypeOfExpression')\n }\n\n visitVoidExpression(node: ts.VoidExpression): NodeBuilder {\n throw new TodoError('VoidExpression')\n }\n\n visitAwaitExpression(node: ts.AwaitExpression): NodeBuilder {\n throw new TodoError('AwaitExpression')\n }\n\n visitPrefixUnaryExpression(node: ts.PrefixUnaryExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n const target = requireInstanceBuilder(this.baseAccept(node.operand))\n if (node.operator === ts.SyntaxKind.ExclamationToken) {\n return new BooleanExpressionBuilder(target.boolEval(sourceLocation, true))\n }\n const op = UnaryExpressionUnaryOps[node.operator]\n return target.prefixUnaryOp(op, sourceLocation)\n }\n\n visitPostfixUnaryExpression(node: ts.PostfixUnaryExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n const target = requireInstanceBuilder(this.baseAccept(node.operand))\n const op = UnaryExpressionUnaryOps[node.operator]\n return target.postfixUnaryOp(op, sourceLocation)\n }\n\n evaluateCondition(nodeOrBuilder: ts.Expression | NodeBuilder, negate = false): Expression {\n using _ = this.context.evaluationCtx.enterBooleanContext()\n if (nodeOrBuilder instanceof NodeBuilder) {\n return requireInstanceBuilder(nodeOrBuilder).boolEval(nodeOrBuilder.sourceLocation, negate)\n } else {\n const sourceLocation = this.sourceLocation(nodeOrBuilder)\n return requireInstanceBuilder(this.baseAccept(nodeOrBuilder)).boolEval(sourceLocation, negate)\n }\n }\n\n visitBinaryExpression(node: ts.BinaryExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n const binaryOpKind = node.operatorToken.kind\n if (isKeyOf(binaryOpKind, BinaryOpSyntaxes)) {\n const left = requireInstanceBuilder(this.baseAccept(node.left))\n const right = requireInstanceBuilder(this.baseAccept(node.right))\n return left.binaryOp(right, BinaryOpSyntaxes[binaryOpKind], sourceLocation)\n } else if (isKeyOf(binaryOpKind, AugmentedAssignmentBinaryOp)) {\n using _ = this.context.evaluationCtx.leaveBooleanContext()\n\n const left = requireInstanceBuilder(this.baseAccept(node.left))\n const right = requireInstanceBuilder(this.baseAccept(node.right))\n return left.augmentedAssignment(right, AugmentedAssignmentBinaryOp[binaryOpKind], sourceLocation)\n } else if (binaryOpKind === ts.SyntaxKind.EqualsToken) {\n using _ = this.context.evaluationCtx.leaveBooleanContext()\n\n const left = requireInstanceBuilder(this.baseAccept(node.left))\n const right = requireInstanceBuilder(this.baseAccept(node.right))\n return this.handleAssignment(left, right, sourceLocation)\n } else if (isKeyOf(binaryOpKind, ComparisonOpSyntaxes)) {\n const left = requireInstanceBuilder(this.baseAccept(node.left))\n const right = requireInstanceBuilder(this.baseAccept(node.right))\n return left.compare(right, ComparisonOpSyntaxes[binaryOpKind], sourceLocation)\n } else if (isKeyOf(binaryOpKind, LogicalOpSyntaxes)) {\n const ptype = this.context.getPTypeForNode(node)\n if (ptype.equals(boolPType)) {\n const left = requireInstanceBuilder(this.baseAccept(node.left))\n const right = requireInstanceBuilder(this.baseAccept(node.right))\n\n return new BooleanExpressionBuilder(\n nodeFactory.booleanBinaryOperation({\n left: requireExpressionOfType(left, boolPType),\n right: requireExpressionOfType(right, boolPType),\n sourceLocation,\n op: LogicalOpSyntaxes[binaryOpKind],\n }),\n )\n } else if (this.context.evaluationCtx.isBoolean) {\n const left = requireInstanceBuilder(this.baseAccept(node.left))\n const right = requireInstanceBuilder(this.baseAccept(node.right))\n return new BooleanExpressionBuilder(\n nodeFactory.booleanBinaryOperation({\n left: left.boolEval(sourceLocation),\n right: right.boolEval(sourceLocation),\n sourceLocation,\n op: LogicalOpSyntaxes[binaryOpKind],\n }),\n )\n } else {\n const left = requireInstanceBuilder(this.baseAccept(node.left))\n const right = requireInstanceBuilder(this.baseAccept(node.right))\n const leftSingle = left.singleEvaluation()\n const isOr = binaryOpKind === ts.SyntaxKind.BarBarToken\n return this.createConditionalExpression({\n sourceLocation,\n condition: this.evaluateCondition(leftSingle),\n whenTrue: isOr ? leftSingle : right,\n whenFalse: isOr ? right : leftSingle,\n ptype: ptype,\n })\n }\n } else if (isKeyOf(binaryOpKind, AugmentedAssignmentLogicalOpSyntaxes)) {\n using _ = this.context.evaluationCtx.leaveBooleanContext()\n const left = requireInstanceBuilder(this.baseAccept(node.left))\n const right = requireInstanceBuilder(this.baseAccept(node.right))\n const expr = new BooleanExpressionBuilder(\n nodeFactory.booleanBinaryOperation({\n left: requireExpressionOfType(left, boolPType),\n right: requireExpressionOfType(right, boolPType),\n sourceLocation,\n op: AugmentedAssignmentLogicalOpSyntaxes[binaryOpKind],\n }),\n )\n return this.handleAssignment(left, expr, sourceLocation)\n }\n throw new NotSupported(`Binary expression with op ${getSyntaxName(binaryOpKind)}`)\n }\n\n visitConditionalExpression(node: ts.ConditionalExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n const condition = this.evaluateCondition(node.condition)\n const whenTrue = requireInstanceBuilder(this.baseAccept(node.whenTrue))\n const whenFalse = requireInstanceBuilder(this.baseAccept(node.whenFalse))\n const ptype = this.context.getPTypeForNode(node)\n return this.createConditionalExpression({\n condition,\n sourceLocation,\n whenFalse,\n whenTrue,\n ptype,\n })\n }\n\n createConditionalExpression({\n condition,\n ptype,\n whenFalse,\n whenTrue,\n sourceLocation,\n }: {\n ptype: PType\n condition: Expression\n whenTrue: InstanceBuilder\n whenFalse: InstanceBuilder\n sourceLocation: SourceLocation\n }): InstanceBuilder {\n // If the expression has a wtype, we can resolve it immediately - if not, we defer the resolution until we have more context\n // (eg. the type of the assignment target)\n if (!(ptype instanceof TransientType) && ptype.wtype) {\n return typeRegistry.getInstanceEb(\n nodeFactory.conditionalExpression({\n sourceLocation: sourceLocation,\n falseExpr: requireExpressionOfType(whenFalse, ptype),\n trueExpr: requireExpressionOfType(whenTrue, ptype),\n condition: condition,\n wtype: ptype.wtypeOrThrow,\n }),\n ptype,\n )\n }\n return new ConditionalExpressionBuilder({ sourceLocation, condition, whenTrue, whenFalse, ptype })\n }\n\n visitTemplateExpression(node: ts.TemplateExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n const target = new StringFunctionBuilder(sourceLocation)\n\n const head = this.textVisitor.accept(node.head)\n const spans = node.templateSpans.map(\n (s) => [requireInstanceBuilder(this.baseAccept(s.expression)), this.textVisitor.accept(s.literal)] as const,\n )\n return target.taggedTemplate(head, spans, sourceLocation)\n }\n\n visitYieldExpression(node: ts.YieldExpression): NodeBuilder {\n throw new TodoError('YieldExpression')\n }\n\n visitOmittedExpression(node: ts.OmittedExpression): NodeBuilder {\n return new OmittedExpressionBuilder(this.context.getSourceLocation(node))\n }\n\n visitExpressionWithTypeArguments(node: ts.ExpressionWithTypeArguments): NodeBuilder {\n throw new TodoError('ExpressionWithTypeArguments')\n }\n\n visitAsExpression(node: ts.AsExpression): NodeBuilder {\n // TODO: Is this robust enough??\n if (ts.isTypeReferenceNode(node.type) && ts.isIdentifier(node.type.typeName) && node.type.typeName.text === 'const') {\n // TODO: Do we need to do resolveAsPType here to re-resolve the target expression\n return this.baseAccept(node.expression)\n }\n throw new TodoError('AsExpression')\n }\n\n visitNonNullExpression(node: ts.NonNullExpression): NodeBuilder {\n throw new TodoError('NonNullExpression')\n }\n\n visitSatisfiesExpression(node: ts.SatisfiesExpression): NodeBuilder {\n return this.baseAccept(node.expression)\n }\n\n handleAssignmentStatement(target: InstanceBuilder, source: InstanceBuilder, sourceLocation: SourceLocation): Statement {\n const expr = this.handleAssignment(target, source, sourceLocation).resolve()\n if (expr instanceof awst.AssignmentExpression) {\n return nodeFactory.assignmentStatement({\n ...expr,\n })\n }\n return nodeFactory.expressionStatement({ expr })\n }\n\n handleAssignment(target: InstanceBuilder, source: InstanceBuilder, sourceLocation: SourceLocation): InstanceBuilder {\n const assignmentType = this.buildAssignmentExpressionType(target.ptype, source.ptype, sourceLocation)\n return instanceEb(\n nodeFactory.assignmentExpression({\n target: this.buildLValue(target, assignmentType, sourceLocation),\n sourceLocation,\n value: source.resolveToPType(assignmentType).resolve(),\n }),\n assignmentType,\n )\n }\n\n /**\n * Given a target and source type, produce a type that represents the result of an assignment expression.\n *\n * This will largely represent the sourceType verbatim with the exception of numeric literal types which need\n * to be narrowed using the targetType.\n *\n * Eg. a `number` on the rhs should be narrowed to whatever the lhs is for example uint64.\n * @param targetType The type of the assignment target\n * @param sourceType The type of the assignment source\n * @param sourceLocation\n * @private\n */\n private buildAssignmentExpressionType(targetType: PType, sourceType: PType, sourceLocation: SourceLocation): PType {\n if (targetType instanceof ArrayLiteralPType)\n // Puya does not support assigning to array targets, but we can treat array literals as tuples\n return this.buildAssignmentExpressionType(targetType.getTupleType(), sourceType, sourceLocation)\n\n const errorMessage = `Value of type ${sourceType.name} cannot be assigned to target of type ${targetType.name}`\n if (sourceType.equals(targetType)) {\n return targetType\n }\n if (\n sourceType instanceof NumericLiteralPType ||\n sourceType.equals(numberPType) ||\n (sourceType instanceof UnionPType &&\n sourceType.types.every((t) => t.equals(uint64PType) || t instanceof NumericLiteralPType || sourceType.equals(numberPType)))\n ) {\n // Narrow `uint64 | number` or `number` to target type\n return targetType\n }\n if (\n sourceType.equals(bigIntPType) ||\n sourceType instanceof BigIntLiteralPType ||\n (sourceType instanceof UnionPType &&\n sourceType.types.every((t) => t.equals(biguintPType) || t instanceof BigIntLiteralPType || t.equals(bigIntPType)))\n ) {\n // Narrow `biguint | bigint` or `bigint` to target type\n return targetType\n }\n if (sourceType instanceof ArrayLiteralPType) {\n if (targetType instanceof TuplePType) {\n // Narrow array literal types to tuple item types\n codeInvariant(targetType.items.length <= sourceType.items.length, errorMessage, sourceLocation)\n return new TuplePType({\n items: sourceType.items.map((item, index) =>\n index < targetType.items.length ? this.buildAssignmentExpressionType(targetType.items[index], item, sourceLocation) : item,\n ),\n immutable: sourceType.immutable,\n })\n } else if (targetType instanceof ArrayPType) {\n // Narrow array literal types to array type\n codeInvariant(\n sourceType.items.every((i) =>\n this.buildAssignmentExpressionType(targetType.itemType, i, sourceLocation).equals(targetType.itemType),\n ),\n errorMessage,\n sourceLocation,\n )\n return targetType\n }\n }\n if (sourceType instanceof ObjectPType) {\n // Recursively narrow object properties\n codeInvariant(targetType instanceof ObjectPType, errorMessage)\n return new ObjectPType({\n properties: Object.fromEntries(\n sourceType\n .orderedProperties()\n .map(([prop, propType]): [string, PType] => [\n prop,\n prop in targetType.properties\n ? this.buildAssignmentExpressionType(targetType.getPropertyType(prop), propType, sourceLocation)\n : propType,\n ]),\n ),\n })\n }\n return sourceType\n }\n\n buildLValue(target: InstanceBuilder, assignmentType: PType, sourceLocation: SourceLocation): LValue {\n if (target instanceof ArrayLiteralExpressionBuilder) {\n if (assignmentType instanceof TuplePType) {\n const targetItems = target.getItemBuilders()\n\n const targets: LValue[] = []\n for (const [index, sourceItemType] of enumerate(assignmentType.items)) {\n const targetItem = targetItems[index]\n if (targetItem && !(targetItem instanceof OmittedExpressionBuilder)) {\n targets.push(targetItem.resolveToPType(sourceItemType).resolveLValue())\n } else {\n targets.push(\n nodeFactory.varExpression({\n name: this.context.generateDiscardedVarName(),\n sourceLocation,\n wtype: sourceItemType.wtypeOrThrow,\n }),\n )\n }\n }\n return nodeFactory.tupleExpression({ items: targets, sourceLocation })\n }\n }\n if (target instanceof ObjectLiteralExpressionBuilder) {\n if (assignmentType instanceof ObjectPType) {\n const targets: LValue[] = []\n for (const [propName, propType] of assignmentType.orderedProperties()) {\n if (target.hasProperty(propName)) {\n targets.push(target.memberAccess(propName, sourceLocation).resolveLValue())\n } else {\n targets.push(\n nodeFactory.varExpression({\n name: this.context.generateDiscardedVarName(),\n sourceLocation,\n wtype: propType.wtypeOrThrow,\n }),\n )\n }\n }\n return nodeFactory.tupleExpression({ items: targets, sourceLocation })\n }\n }\n if (target.ptype.equals(assignmentType)) {\n return target.resolveLValue()\n }\n throw new CodeError(\n `The target of an assignment must have the same type as the source. Target: ${target.ptype}, Source: ${assignmentType}`,\n {\n sourceLocation,\n },\n )\n }\n}\n","import { nodeFactory } from '../../awst/node-factory'\nimport type { InstanceMethodTarget, InstanceSuperMethodTarget, SubroutineID } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { InternalError } from '../../errors'\nimport type { ContractClassPType, PType } from '../ptypes'\nimport { FunctionPType } from '../ptypes'\nimport { typeRegistry } from '../type-registry'\nimport type { InstanceBuilder } from './index'\nimport { FunctionBuilder } from './index'\nimport { parseFunctionArgs } from './util/arg-parsing'\n\nabstract class SubroutineExpressionBuilder extends FunctionBuilder {\n protected constructor(\n sourceLocation: SourceLocation,\n public readonly ptype: FunctionPType,\n protected readonly target: SubroutineID | InstanceMethodTarget | InstanceSuperMethodTarget,\n ) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const { args: mappedArgs } = parseFunctionArgs({\n args,\n typeArgs,\n funcName: this.ptype.name,\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: (a) => this.ptype.parameters.map(([_, ptype]) => a.required(ptype)),\n })\n\n return typeRegistry.getInstanceEb(\n nodeFactory.subroutineCallExpression({\n target: this.target,\n args: mappedArgs.map((a) => nodeFactory.callArg({ name: null, value: a.resolve() })),\n sourceLocation: sourceLocation,\n wtype: this.ptype.returnType.wtypeOrThrow,\n }),\n this.ptype.returnType,\n )\n }\n}\n\nexport class ContractMethodExpressionBuilder extends SubroutineExpressionBuilder {\n constructor(sourceLocation: SourceLocation, ptype: FunctionPType) {\n super(\n sourceLocation,\n ptype,\n nodeFactory.instanceMethodTarget({\n memberName: ptype.name,\n }),\n )\n }\n}\n\nexport class BaseContractMethodExpressionBuilder extends SubroutineExpressionBuilder {\n constructor(sourceLocation: SourceLocation, ptype: FunctionPType, baseContractPType: ContractClassPType) {\n super(\n sourceLocation,\n ptype,\n nodeFactory.instanceSuperMethodTarget({\n memberName: ptype.name,\n }),\n )\n }\n}\n\nexport class FreeSubroutineExpressionBuilder extends SubroutineExpressionBuilder {\n constructor(sourceLocation: SourceLocation, ptype: PType) {\n if (!(ptype instanceof FunctionPType)) {\n throw new InternalError(`Invalid ptype`)\n }\n super(\n sourceLocation,\n ptype,\n nodeFactory.subroutineID({\n target: ptype.fullName,\n }),\n )\n }\n}\n","import type { Expression, LValue } from '../../awst/nodes'\nimport { CodeError } from '../../errors'\nimport type { InstanceType } from '../ptypes'\nimport { voidPType } from '../ptypes'\nimport { InstanceExpressionBuilder } from './index'\n\nexport class VoidExpressionBuilder extends InstanceExpressionBuilder<InstanceType> {\n constructor(expr: Expression) {\n super(expr, voidPType)\n }\n resolveLValue(): LValue {\n throw new CodeError(`${this.typeDescription} is not a valid assignment target`)\n }\n}\n","import { nodeFactory } from '../../awst/node-factory'\n\nimport type { Expression, LValue } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { voidWType } from '../../awst/wtypes'\nimport { Constants } from '../../constants'\nimport { CodeError } from '../../errors'\nimport { codeInvariant } from '../../util'\nimport type { AwstBuildContext } from '../context/awst-build-context'\nimport type { ContractClassPType, PType } from '../ptypes'\nimport { arc4BaseContractType, baseContractType, StorageProxyPType } from '../ptypes'\n\nimport { instanceEb } from '../type-registry'\n\nimport { ContractMethodExpressionBuilder } from './free-subroutine-expression-builder'\nimport type { NodeBuilder } from './index'\nimport { InstanceBuilder } from './index'\nimport { VoidExpressionBuilder } from './void-expression-builder'\n\nexport class ContractThisBuilder extends InstanceBuilder<ContractClassPType> {\n resolve(): Expression {\n throw new CodeError('this keyword is not valid as a value', { sourceLocation: this.sourceLocation })\n }\n resolveLValue(): LValue {\n throw new CodeError('this keyword is not valid as a value', { sourceLocation: this.sourceLocation })\n }\n readonly #ptype: ContractClassPType\n constructor(\n ptype: ContractClassPType,\n sourceLocation: SourceLocation,\n private context: AwstBuildContext,\n ) {\n super(sourceLocation)\n this.#ptype = ptype\n }\n\n get ptype(): ContractClassPType {\n return this.#ptype\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n const property = this.ptype.properties[name]\n if (property) {\n const storageDeclaration = this.context.getStorageDeclaration(this.ptype, name)\n if (property instanceof StorageProxyPType) {\n codeInvariant(storageDeclaration, `No declaration exists for property ${property}.`, sourceLocation)\n return instanceEb(storageDeclaration.key, property)\n }\n }\n const method = this.ptype.methods[name]\n if (method) {\n return new ContractMethodExpressionBuilder(sourceLocation, method)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nexport class ContractSuperBuilder extends ContractThisBuilder {\n constructor(ptype: ContractClassPType, sourceLocation: SourceLocation, context: AwstBuildContext) {\n super(ptype, sourceLocation, context)\n }\n\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n if (this.ptype.equals(baseContractType) || this.ptype.equals(arc4BaseContractType)) {\n // Contract base types have no code to execute so we can just return void\n return new VoidExpressionBuilder(nodeFactory.voidConstant({ sourceLocation }))\n }\n codeInvariant(args.length === 0, 'Constructor arguments are not supported', sourceLocation)\n codeInvariant(typeArgs.length === 0, 'Super calls cannot be generic', sourceLocation)\n return new VoidExpressionBuilder(\n nodeFactory.subroutineCallExpression({\n target: nodeFactory.instanceSuperMethodTarget({\n memberName: Constants.constructorMethodName,\n }),\n args: [],\n sourceLocation,\n wtype: voidWType,\n }),\n )\n }\n}\n","import type { Expression, LValue } from '../../awst/nodes'\nimport { CodeError } from '../../errors'\nimport { invariant } from '../../util'\nimport type { PType } from '../ptypes'\nimport { ArrayPType } from '../ptypes'\nimport { InstanceExpressionBuilder } from './index'\n\nexport class NativeArrayExpressionBuilder extends InstanceExpressionBuilder<ArrayPType> {\n resolveLValue(): LValue {\n throw new CodeError(this.ptype.typeMessage, { sourceLocation: this.sourceLocation })\n }\n\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof ArrayPType, 'ptype must be instance of ArrayPType')\n super(expr, ptype)\n }\n}\n","import ts from 'typescript'\nimport { nodeFactory } from '../awst/node-factory'\nimport type * as awst from '../awst/nodes'\nimport type { Block } from '../awst/nodes'\nimport { AssignmentExpression, Goto, ReturnStatement } from '../awst/nodes'\nimport type { SourceLocation } from '../awst/source-location'\nimport { AwstBuildFailureError, CodeError, InternalError, NotSupported, TodoError } from '../errors'\nimport { logger } from '../logger'\nimport { codeInvariant, enumerate, instanceOfAny, invariant } from '../util'\nimport type { Statements } from '../visitor/syntax-names'\nimport { getNodeName } from '../visitor/syntax-names'\nimport type { Visitor } from '../visitor/visitor'\nimport { accept } from '../visitor/visitor'\nimport { BaseVisitor } from './base-visitor'\nimport type { AwstBuildContext } from './context/awst-build-context'\nimport type { InstanceBuilder } from './eb'\nimport { ArrayLiteralExpressionBuilder } from './eb/literal/array-literal-expression-builder'\nimport { ObjectLiteralExpressionBuilder } from './eb/literal/object-literal-expression-builder'\nimport { NativeArrayExpressionBuilder } from './eb/native-array-expression-builder'\nimport { OmittedExpressionBuilder } from './eb/omitted-expression-builder'\nimport { TupleExpressionBuilder } from './eb/tuple-expression-builder'\nimport { requireExpressionOfType, requireInstanceBuilder } from './eb/util'\nimport type { PType } from './ptypes'\nimport { FunctionPType, ObjectPType } from './ptypes'\nimport { typeRegistry } from './type-registry'\n\n// noinspection JSUnusedGlobalSymbols\nexport class FunctionVisitor\n extends BaseVisitor\n implements\n Visitor<ts.ParameterDeclaration, awst.SubroutineArgument>,\n Visitor<ts.Block, awst.Block>,\n Visitor<Statements, awst.Statement | awst.Statement[]>\n{\n protected accept = <TNode extends ts.Node>(node: TNode) => accept<FunctionVisitor, TNode>(this, node)\n\n protected readonly _functionType: FunctionPType\n\n constructor(ctx: AwstBuildContext, node: ts.MethodDeclaration | ts.FunctionDeclaration | ts.ConstructorDeclaration) {\n super(ctx)\n const type = ctx.getPTypeForNode(node)\n invariant(type instanceof FunctionPType, 'type of function must be FunctionPType')\n this._functionType = type\n }\n\n protected buildFunctionAwst(node: ts.MethodDeclaration | ts.FunctionDeclaration | ts.ConstructorDeclaration): {\n args: awst.SubroutineArgument[]\n documentation: awst.MethodDocumentation\n body: awst.Block\n } {\n const sourceLocation = this.sourceLocation(node)\n\n const args = node.parameters.map((p) => this.accept(p))\n const assignDestructuredParams = this.evaluateParameterBindingExpressions(node.parameters, sourceLocation)\n codeInvariant(node.body, 'Functions must have a body')\n const body = assignDestructuredParams.length\n ? nodeFactory.block({ sourceLocation }, assignDestructuredParams, this.accept(node.body))\n : this.accept(node.body)\n const documentation = nodeFactory.methodDocumentation({\n args: new Map(),\n description: null,\n returns: null,\n })\n return {\n args,\n body,\n documentation,\n }\n }\n\n buildAssignmentTarget(bindingName: ts.BindingName, sourceLocation: SourceLocation): InstanceBuilder {\n switch (bindingName.kind) {\n case ts.SyntaxKind.ObjectBindingPattern: {\n const props = Array<[string, InstanceBuilder]>()\n for (const element of bindingName.elements) {\n const sourceLocation = this.sourceLocation(element)\n\n const propertyNameIdentifier = element.propertyName ?? element.name\n invariant(ts.isIdentifier(propertyNameIdentifier), 'propertyName must be an identifier')\n\n const propertyName = this.textVisitor.accept(propertyNameIdentifier)\n codeInvariant(!element.dotDotDotToken, 'Spread operator is not supported', sourceLocation)\n codeInvariant(!element.initializer, 'Initializer on object binding pattern is not supported', sourceLocation)\n\n props.push([propertyName, this.buildAssignmentTarget(element.name, sourceLocation)])\n }\n const ptype = ObjectPType.anonymous(props.map(([name, builder]): [string, PType] => [name, builder.ptype]))\n return new ObjectLiteralExpressionBuilder(\n sourceLocation,\n ptype,\n [{ type: 'properties', properties: Object.fromEntries(props) }],\n () => this.context.generateDiscardedVarName(),\n )\n }\n case ts.SyntaxKind.ArrayBindingPattern: {\n const items: InstanceBuilder[] = []\n for (const element of bindingName.elements) {\n const sourceLocation = this.context.getSourceLocation(element)\n\n if (ts.isOmittedExpression(element)) {\n items.push(new OmittedExpressionBuilder(sourceLocation))\n } else {\n codeInvariant(!element.initializer, 'Initializer on array binding expression is not supported', sourceLocation)\n codeInvariant(!element.propertyName, 'Property name on array binding expression is not supported', sourceLocation)\n\n if (element.dotDotDotToken) {\n const spreadResult = this.buildAssignmentTarget(element.name, sourceLocation)\n if (spreadResult instanceof NativeArrayExpressionBuilder) {\n throw new CodeError(\n 'Spread operator is not supported in assignment expressions where the resulting type is a variadic array',\n { sourceLocation },\n )\n } else if (spreadResult instanceof TupleExpressionBuilder) {\n throw new CodeError('Spread operator is not currently supported with tuple expressions', { sourceLocation })\n } else {\n // TODO: What would this context be?\n throw new CodeError('The spread operator is not supported in this context', { sourceLocation })\n }\n } else {\n items.push(this.buildAssignmentTarget(element.name, sourceLocation))\n }\n }\n }\n return new ArrayLiteralExpressionBuilder(sourceLocation, items)\n }\n\n case ts.SyntaxKind.Identifier: {\n return requireInstanceBuilder(this.accept(bindingName))\n }\n default:\n throw new InternalError('Unhandled binding name', { sourceLocation })\n }\n }\n evaluateParameterBindingExpressions(parameters: Iterable<ts.ParameterDeclaration>, sourceLocation: SourceLocation): awst.Statement[] {\n const assignments: awst.Statement[] = []\n for (const p of parameters) {\n const sourceLocation = this.sourceLocation(p)\n if (!ts.isIdentifier(p.name)) {\n const paramPType = this.context.getPTypeForNode(p)\n const paramName = this.context.resolveDestructuredParamName(p)\n const paramBuilder = typeRegistry.getInstanceEb(\n nodeFactory.varExpression({\n name: paramName,\n sourceLocation,\n wtype: paramPType.wtypeOrThrow,\n }),\n paramPType,\n )\n\n assignments.push(this.handleAssignmentStatement(this.buildAssignmentTarget(p.name, sourceLocation), paramBuilder, sourceLocation))\n }\n }\n\n if (assignments.length === 0) return []\n\n return [\n nodeFactory.block(\n {\n sourceLocation,\n comment: 'Destructured params',\n },\n ...assignments,\n ),\n ]\n }\n\n visitTypeAliasDeclaration(node: ts.TypeAliasDeclaration): awst.Statement[] {\n return []\n }\n\n visitClassDeclaration(node: ts.ClassDeclaration): awst.Statement | awst.Statement[] {\n throw new NotSupported('Nested classes', {\n sourceLocation: this.sourceLocation(node),\n })\n }\n\n visitVariableDeclarationList(node: ts.VariableDeclarationList): awst.Statement[] {\n return node.declarations.flatMap((d) => {\n const sourceLocation = this.sourceLocation(d)\n if (!d.initializer) {\n // Typescript will already error if a destructuring expression is used without an initializer\n if (ts.isIdentifier(d.name)) {\n const ptype = this.context.getPTypeForNode(d.name)\n codeInvariant(ptype.wtype, `${ptype.fullName} is not a valid variable type`)\n }\n return []\n }\n\n const source = requireInstanceBuilder(this.accept(d.initializer))\n\n return this.handleAssignmentStatement(this.buildAssignmentTarget(d.name, sourceLocation), source, sourceLocation)\n })\n }\n\n visitVariableStatement(node: ts.VariableStatement): awst.Statement | awst.Statement[] {\n return this.accept(node.declarationList)\n }\n\n visitForStatement(node: ts.ForStatement): awst.Statement | awst.Statement[] {\n const sourceLocation = this.sourceLocation(node)\n let init: awst.Statement[] = []\n if (node.initializer) {\n if (ts.isExpression(node.initializer)) {\n init = [\n nodeFactory.expressionStatement({\n expr: requireInstanceBuilder(this.accept(node.initializer)).resolve(),\n }),\n ]\n } else {\n init = this.accept(node.initializer)\n }\n }\n let incrementor: awst.Statement[] = []\n if (node.incrementor) {\n incrementor = [\n nodeFactory.expressionStatement({\n expr: requireInstanceBuilder(this.accept(node.incrementor)).resolve(),\n }),\n ]\n }\n using ctx = this.context.switchLoopCtx.enterLoop(node, sourceLocation)\n return [\n ...init,\n nodeFactory.whileLoop({\n sourceLocation,\n condition: node.condition ? this.evaluateCondition(node.condition) : nodeFactory.boolConstant({ value: true, sourceLocation }),\n loopBody: nodeFactory.block(\n {\n sourceLocation,\n },\n this.accept(node.statement),\n ctx.continueTarget,\n incrementor,\n ),\n }),\n ctx.breakTarget,\n ]\n }\n\n visitForOfStatement(node: ts.ForOfStatement): awst.Statement | awst.Statement[] {\n const sourceLocation = this.sourceLocation(node)\n\n let items: awst.LValue\n if (ts.isExpression(node.initializer)) {\n items = requireInstanceBuilder(this.accept(node.initializer)).resolveLValue()\n } else {\n const initializerSource = this.sourceLocation(node.initializer)\n codeInvariant(node.initializer.declarations.length === 1, 'For of loops can only declare a single loop variable', initializerSource)\n const [declaration] = node.initializer.declarations\n items = this.buildAssignmentTarget(declaration.name, initializerSource).resolveLValue()\n }\n using ctx = this.context.switchLoopCtx.enterLoop(node, sourceLocation)\n return nodeFactory.block(\n { sourceLocation },\n nodeFactory.forInLoop({\n sourceLocation,\n sequence: requireInstanceBuilder(this.accept(node.expression)).iterate(sourceLocation),\n items,\n loopBody: nodeFactory.block({ sourceLocation }, this.accept(node.statement), ctx.continueTarget),\n }),\n ctx.breakTarget,\n )\n }\n visitForInStatement(node: ts.ForInStatement): awst.Statement | awst.Statement[] {\n throw new NotSupported('For in statements', {\n sourceLocation: this.sourceLocation(node),\n })\n }\n visitTryStatement(node: ts.TryStatement): awst.Statement | awst.Statement[] {\n throw new NotSupported('Try statements', {\n sourceLocation: this.sourceLocation(node),\n })\n }\n visitEmptyStatement(node: ts.EmptyStatement): awst.Statement | awst.Statement[] {\n throw new TodoError('EmptyStatement')\n }\n visitExpressionStatement(node: ts.ExpressionStatement): awst.Statement | awst.Statement[] {\n const expr = requireInstanceBuilder(this.accept(node.expression)).resolve()\n if (expr instanceof AssignmentExpression) {\n return nodeFactory.assignmentStatement({\n ...expr,\n })\n }\n return nodeFactory.expressionStatement({\n expr,\n })\n }\n visitIfStatement(node: ts.IfStatement): awst.Statement | awst.Statement[] {\n const sourceLocation = this.sourceLocation(node)\n const condition = this.evaluateCondition(node.expression)\n\n const ifBranch = nodeFactory.block({ sourceLocation: this.sourceLocation(node.thenStatement) }, this.accept(node.thenStatement))\n const elseBranch =\n node.elseStatement && nodeFactory.block({ sourceLocation: this.sourceLocation(node.elseStatement) }, this.accept(node.elseStatement))\n\n return nodeFactory.ifElse({\n condition,\n ifBranch,\n elseBranch: elseBranch ?? null,\n sourceLocation,\n })\n }\n visitDoStatement(node: ts.DoStatement): awst.Statement | awst.Statement[] {\n const sourceLocation = this.sourceLocation(node)\n using ctx = this.context.switchLoopCtx.enterLoop(node, sourceLocation)\n invariant(ctx.breakTarget.label, 'Break target must have a label')\n return nodeFactory.block(\n { sourceLocation },\n nodeFactory.whileLoop({\n sourceLocation,\n condition: nodeFactory.boolConstant({ value: true, sourceLocation }),\n loopBody: nodeFactory.block(\n { sourceLocation },\n this.accept(node.statement),\n ctx.continueTarget,\n nodeFactory.ifElse({\n condition: this.evaluateCondition(node.expression, true),\n sourceLocation,\n ifBranch: nodeFactory.block({ sourceLocation }, nodeFactory.goto({ sourceLocation, target: ctx.breakTarget.label })),\n elseBranch: null,\n }),\n ),\n }),\n ctx.breakTarget,\n )\n }\n visitWhileStatement(node: ts.WhileStatement): awst.Statement | awst.Statement[] {\n const sourceLocation = this.sourceLocation(node)\n using ctx = this.context.switchLoopCtx.enterLoop(node, sourceLocation)\n\n return nodeFactory.block(\n { sourceLocation },\n nodeFactory.whileLoop({\n sourceLocation,\n condition: this.evaluateCondition(node.expression),\n loopBody: nodeFactory.block({ sourceLocation }, this.accept(node.statement), ctx.continueTarget),\n }),\n ctx.breakTarget,\n )\n }\n visitContinueStatement(node: ts.ContinueStatement): awst.Statement | awst.Statement[] {\n const sourceLocation = this.sourceLocation(node)\n\n return nodeFactory.goto({\n sourceLocation,\n target: this.context.switchLoopCtx.getContinueTarget(node.label, sourceLocation),\n })\n }\n visitBreakStatement(node: ts.BreakStatement): awst.Statement | awst.Statement[] {\n const sourceLocation = this.sourceLocation(node)\n\n return nodeFactory.goto({\n sourceLocation,\n target: this.context.switchLoopCtx.getBreakTarget(node.label, sourceLocation),\n })\n }\n visitReturnStatement(node: ts.ReturnStatement): awst.Statement | awst.Statement[] {\n const sourceLocation = this.sourceLocation(node)\n if (!node.expression) {\n return nodeFactory.returnStatement({\n sourceLocation: sourceLocation,\n value: null,\n })\n }\n const returnValue = this.accept(node.expression)\n return nodeFactory.returnStatement({\n sourceLocation: sourceLocation,\n value: requireExpressionOfType(returnValue, this._functionType.returnType),\n })\n }\n visitWithStatement(node: ts.WithStatement): awst.Statement | awst.Statement[] {\n throw new NotSupported('with statements', { sourceLocation: this.sourceLocation(node) })\n }\n visitSwitchStatement(node: ts.SwitchStatement): awst.Statement | awst.Statement[] {\n const sourceLocation = this.sourceLocation(node)\n using ctx = this.context.switchLoopCtx.enterSwitch(node, sourceLocation)\n\n const subject = requireInstanceBuilder(this.accept(node.expression))\n codeInvariant(subject.ptype, 'The subject of a switch statement must have a resolvable ptype', this.sourceLocation(node.expression))\n\n let defaultCase: Block | null = null\n const cases = new Map<awst.Expression, awst.Block>()\n for (const [index, clause] of enumerate(node.caseBlock.clauses)) {\n const sourceLocation = this.sourceLocation(clause)\n\n const statements = clause.statements.flatMap((s) => this.accept(s))\n const isNotLastCase = index + 1 < node.caseBlock.clauses.length\n const isObviouslyTerminated = instanceOfAny(statements.at(-1), Goto, ReturnStatement)\n const caseBlock = nodeFactory.block(\n {\n sourceLocation,\n },\n ctx.caseTarget(index, sourceLocation),\n statements,\n ...(isNotLastCase && !isObviouslyTerminated ? [ctx.gotoCase(index + 1, sourceLocation)] : []),\n )\n if (clause.kind === ts.SyntaxKind.DefaultClause) {\n defaultCase = caseBlock\n } else {\n const clauseExpr = requireExpressionOfType(this.accept(clause.expression), subject.ptype)\n cases.set(clauseExpr, caseBlock)\n }\n }\n const switchStatement = nodeFactory.switch({\n value: subject.resolve(),\n sourceLocation,\n cases,\n defaultCase,\n })\n if (!ctx.hasBreaks) {\n return switchStatement\n }\n return nodeFactory.block(\n {\n sourceLocation,\n },\n switchStatement,\n ctx.breakTarget,\n )\n }\n\n visitLabeledStatement(node: ts.LabeledStatement): awst.Statement | awst.Statement[] {\n return this.accept(node.statement)\n }\n visitThrowStatement(node: ts.ThrowStatement): awst.Statement | awst.Statement[] {\n throw new NotSupported('Throw statements', {\n sourceLocation: this.sourceLocation(node),\n })\n }\n visitDebuggerStatement(node: ts.DebuggerStatement): awst.Statement | awst.Statement[] {\n logger.warn(this.sourceLocation(node), 'Ignoring debugger statement')\n return []\n }\n visitImportDeclaration(node: ts.ImportDeclaration): awst.Statement | awst.Statement[] {\n throw new NotSupported('Non-top-level import declarations')\n }\n\n visitBlock(node: ts.Block): awst.Block {\n return nodeFactory.block(\n {\n sourceLocation: this.sourceLocation(node),\n },\n node.statements.flatMap((s) => {\n try {\n return this.accept(s)\n } catch (e) {\n if (e instanceof AwstBuildFailureError) return []\n throw e\n }\n }),\n )\n }\n\n visitParameter(node: ts.ParameterDeclaration): awst.SubroutineArgument {\n const sourceLocation = this.sourceLocation(node)\n codeInvariant(node.type, 'Parameters must have type annotation', sourceLocation)\n codeInvariant(!node.dotDotDotToken, 'Rest parameters are not supported', sourceLocation)\n codeInvariant(!node.questionToken, 'Optional parameters are not supported', sourceLocation)\n if (node.initializer) {\n logger.warn(sourceLocation, 'TODO: Default parameter values')\n }\n const paramPType = this.context.getPTypeForNode(node.type)\n\n if (ts.isIdentifier(node.name)) {\n return nodeFactory.subroutineArgument({\n sourceLocation: sourceLocation,\n name: this.context.resolveVariableName(node.name),\n wtype: paramPType.wtypeOrThrow,\n })\n } else if (ts.isObjectBindingPattern(node.name)) {\n codeInvariant(paramPType instanceof ObjectPType, 'Param type must be object if it is being destructured', sourceLocation)\n return nodeFactory.subroutineArgument({\n sourceLocation,\n name: this.context.resolveDestructuredParamName(node),\n wtype: paramPType.wtype,\n })\n } else {\n throw new CodeError(`Unsupported parameter declaration type ${getNodeName(node)}`, { sourceLocation })\n }\n }\n}\n","import type ts from 'typescript'\nimport type { ContractReference } from '../awst/models'\nimport * as awst from '../awst/nodes'\nimport { CodeError } from '../errors'\nimport { invariant } from '../util'\nimport type { AwstBuildContext } from './context/awst-build-context'\nimport type { NodeBuilder } from './eb'\nimport { ContractSuperBuilder, ContractThisBuilder } from './eb/contract-builder'\nimport { FunctionVisitor } from './function-visitor'\nimport { ContractClassPType } from './ptypes'\n\nexport type ContractMethodInfo = {\n cref: ContractReference\n arc4MethodConfig?: awst.ContractMethod['arc4MethodConfig']\n}\n\nexport class ContractMethodBaseVisitor extends FunctionVisitor {\n visitSuperKeyword(node: ts.SuperExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n const ptype = this.context.getPTypeForNode(node)\n if (ptype instanceof ContractClassPType) {\n return new ContractSuperBuilder(ptype, sourceLocation, this.context)\n }\n throw new CodeError(`'super' keyword is not valid outside of a contract type`, { sourceLocation })\n }\n\n visitThisKeyword(node: ts.ThisExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n const ptype = this.context.getPTypeForNode(node)\n if (ptype instanceof ContractClassPType) {\n return new ContractThisBuilder(ptype, sourceLocation, this.context)\n }\n throw new CodeError(`'this' keyword is not valid outside of a contract type`, { sourceLocation })\n }\n}\n\nexport class ContractMethodVisitor extends ContractMethodBaseVisitor {\n private readonly _result: awst.ContractMethod\n\n constructor(ctx: AwstBuildContext, node: ts.MethodDeclaration, contractInfo: ContractMethodInfo) {\n super(ctx, node)\n const sourceLocation = this.sourceLocation(node)\n const { args, body, documentation } = this.buildFunctionAwst(node)\n\n this._result = new awst.ContractMethod({\n arc4MethodConfig: contractInfo.arc4MethodConfig ?? null,\n memberName: this._functionType.name,\n sourceLocation,\n args,\n returnType: this._functionType.returnType.wtypeOrThrow,\n body,\n inheritable: true,\n synthetic: false,\n cref: contractInfo.cref,\n documentation,\n })\n }\n\n get result() {\n return this._result\n }\n\n public static buildContractMethod(\n parentCtx: AwstBuildContext,\n node: ts.MethodDeclaration,\n contractMethodInfo: ContractMethodInfo,\n ): awst.ContractMethod {\n const result = new ContractMethodVisitor(parentCtx.createChildContext(), node, contractMethodInfo).result\n invariant(result instanceof awst.ContractMethod, \"result must be ContractMethod'\")\n return result\n }\n}\n","import ts from 'typescript'\nimport type { ContractReference } from '../awst/models'\nimport { nodeFactory } from '../awst/node-factory'\nimport * as awst from '../awst/nodes'\nimport { AwstBuildFailureError } from '../errors'\nimport { codeInvariant, invariant } from '../util'\nimport type { AwstBuildContext } from './context/awst-build-context'\nimport { ContractMethodBaseVisitor } from './contract-method-visitor'\nimport { voidPType } from './ptypes'\n\nexport interface ConstructorInfo {\n propertyInitializerStatements: awst.Statement[]\n cref: ContractReference\n}\n\nexport class ConstructorVisitor extends ContractMethodBaseVisitor {\n private readonly _result: awst.ContractMethod\n private _foundSuperCall = false\n private readonly _propertyInitializerStatements: awst.Statement[]\n constructor(ctx: AwstBuildContext, node: ts.ConstructorDeclaration, contractInfo: ConstructorInfo) {\n super(ctx, node)\n this._propertyInitializerStatements = contractInfo.propertyInitializerStatements\n const sourceLocation = this.sourceLocation(node)\n\n const { args, body, documentation } = this.buildFunctionAwst(node)\n\n this._result = new awst.ContractMethod({\n arc4MethodConfig: null,\n memberName: this._functionType.name,\n sourceLocation,\n args,\n returnType: voidPType.wtype,\n body,\n inheritable: true,\n synthetic: false,\n cref: contractInfo.cref,\n documentation,\n })\n }\n\n get result() {\n return this._result\n }\n\n public static buildConstructor(parentCtx: AwstBuildContext, node: ts.ConstructorDeclaration, constructorMethodInfo: ConstructorInfo) {\n const result = new ConstructorVisitor(parentCtx.createChildContext(), node, constructorMethodInfo).result\n invariant(result instanceof awst.ContractMethod, \"result must be ContractMethod'\")\n return result\n }\n\n visitBlock(node: ts.Block): awst.Block {\n return nodeFactory.block(\n {\n sourceLocation: this.sourceLocation(node),\n },\n node.statements.flatMap((s) => {\n try {\n const statement = this.accept(s)\n if (isSuperCall(s)) {\n // Property initializer statements should be injected immediately after the super() call\n codeInvariant(!this._foundSuperCall, 'A constructor can only contain one call to super()')\n this._foundSuperCall = true\n return nodeFactory.block(\n {\n sourceLocation: this.sourceLocation(s),\n },\n ...(Array.isArray(statement) ? statement : [statement]),\n ...this._propertyInitializerStatements,\n )\n }\n return statement\n } catch (e) {\n if (e instanceof AwstBuildFailureError) return []\n throw e\n }\n }),\n )\n }\n}\n\nfunction isSuperCall(node: ts.Statement) {\n return (\n ts.isExpressionStatement(node) && ts.isCallExpression(node.expression) && node.expression.expression.kind === ts.SyntaxKind.SuperKeyword\n )\n}\n","import type { ConstantValue } from '../../../awst'\nimport { isConstant } from '../../../awst'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { codeInvariant } from '../../../util'\nimport type { NodeBuilder } from '../index'\nimport { BigIntLiteralExpressionBuilder } from '../literal/big-int-literal-expression-builder'\nimport { requireInstanceBuilder } from './index'\n\nexport function requireConstantValue(builder: NodeBuilder, sourceLocation: SourceLocation): ConstantValue {\n if (builder instanceof BigIntLiteralExpressionBuilder) {\n return builder.value\n }\n const value = requireInstanceBuilder(builder).resolve()\n codeInvariant(isConstant(value), 'Expected compile time constant')\n return value.value\n}\n","import { ARC4CreateOption, OnCompletionAction } from '../../awst/models'\nimport type { Expression } from '../../awst/nodes'\nimport { NewArray, StringConstant, TupleExpression } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { Constants } from '../../constants'\nimport { CodeError } from '../../errors'\nimport { logger } from '../../logger'\nimport { codeInvariant } from '../../util'\nimport type { Arc4AbiDecoratorData, DecoratorData } from '../decorator-visitor'\nimport type { PType } from '../ptypes'\nimport { arc4AbiMethodDecorator, arc4BareMethodDecorator, ArrayPType, boolPType, stringPType } from '../ptypes'\nimport type { InstanceBuilder } from './index'\nimport { NodeBuilder } from './index'\nimport { ObjectLiteralExpressionBuilder } from './literal/object-literal-expression-builder'\nimport { requireBooleanConstant, requireStringConstant } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\nimport { requireConstantValue } from './util/require-constant-value'\n\nconst ocaMap: Record<string, OnCompletionAction> = {\n NoOp: OnCompletionAction.NoOp,\n OptIn: OnCompletionAction.OptIn,\n CloseOut: OnCompletionAction.CloseOut,\n ClearState: OnCompletionAction.ClearState,\n UpdateApplication: OnCompletionAction.UpdateApplication,\n DeleteApplication: OnCompletionAction.DeleteApplication,\n}\n\nconst createMap: Record<string, ARC4CreateOption> = {\n allow: ARC4CreateOption.Allow,\n require: ARC4CreateOption.Require,\n disallow: ARC4CreateOption.Disallow,\n}\n\nexport class Arc4BareMethodDecoratorBuilder extends NodeBuilder {\n get ptype(): PType {\n return arc4BareMethodDecorator\n }\n\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [{ allowActions, onCreate }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n callLocation: sourceLocation,\n funcName: 'arc4.baremethod',\n argSpec: (a) => [\n a.obj({\n allowActions: a.optional(stringPType, new ArrayPType({ itemType: stringPType, immutable: true })),\n onCreate: a.optional(stringPType),\n }),\n ],\n })\n return new DecoratorDataBuilder(sourceLocation, {\n type: Constants.arc4BareDecoratorName,\n ocas: resolveOnCompletionActions(allowActions),\n create: onCreate ? mapStringConstant(createMap, onCreate?.resolve()) : ARC4CreateOption.Disallow,\n sourceLocation: sourceLocation,\n })\n }\n}\n\nexport class Arc4AbiMethodDecoratorBuilder extends NodeBuilder {\n get ptype(): PType {\n return arc4AbiMethodDecorator\n }\n\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [{ allowActions, onCreate, readonly, name, defaultArguments }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n callLocation: sourceLocation,\n funcName: 'arc4.abimethod',\n argSpec: (a) => [\n a.obj({\n allowActions: a.optional(stringPType, new ArrayPType({ itemType: stringPType, immutable: true })),\n onCreate: a.optional(stringPType),\n readonly: a.optional(boolPType),\n name: a.optional(stringPType),\n defaultArguments: a.optional(),\n }),\n ],\n })\n\n return new DecoratorDataBuilder(sourceLocation, {\n type: Constants.arc4AbiDecoratorName,\n ocas: resolveOnCompletionActions(allowActions),\n create: onCreate ? mapStringConstant(createMap, onCreate?.resolve()) : ARC4CreateOption.Disallow,\n sourceLocation: sourceLocation,\n nameOverride: name ? requireStringConstant(name).value : undefined,\n readonly: readonly ? requireBooleanConstant(readonly).value : false,\n\n defaultArguments: resolveDefaultArguments(defaultArguments, sourceLocation),\n })\n }\n}\n\nfunction mapStringConstant<T>(map: Record<string, T>, expr: Expression) {\n codeInvariant(expr instanceof StringConstant, 'Expected string literal', expr.sourceLocation)\n const strValue = expr.value\n if (Object.hasOwn(map, strValue)) return map[strValue]\n throw new CodeError(`${strValue} is not valid at this location`, { sourceLocation: expr.sourceLocation })\n}\n\nfunction resolveOnCompletionActions(oca: InstanceBuilder | undefined): OnCompletionAction[] {\n if (!oca) return [OnCompletionAction.NoOp]\n const value = oca.resolve()\n let ocaRawExpr: Expression[]\n if (value instanceof StringConstant) {\n ocaRawExpr = [value]\n } else if (value instanceof TupleExpression) {\n ocaRawExpr = value.items\n } else if (value instanceof NewArray) {\n ocaRawExpr = value.values\n } else {\n throw new CodeError('Unexpected value for onComplete', { sourceLocation: oca.sourceLocation })\n }\n\n const ocas = ocaRawExpr.map((item) => mapStringConstant(ocaMap, item))\n const distinctOcas = Array.from(new Set(ocas))\n if (distinctOcas.length !== ocas.length) {\n logger.warn(oca.sourceLocation, 'Duplicate on completion actions')\n }\n return ocas\n}\n\nfunction resolveDefaultArguments(\n defaultArguments: NodeBuilder | undefined,\n sourceLocation: SourceLocation,\n): Arc4AbiDecoratorData['defaultArguments'] {\n const result: Arc4AbiDecoratorData['defaultArguments'] = {}\n if (!defaultArguments) return result\n codeInvariant(defaultArguments instanceof ObjectLiteralExpressionBuilder, `Default argument specification should be an object literal`)\n for (const [parameterName] of defaultArguments.ptype.orderedProperties()) {\n const paramConfig = defaultArguments.memberAccess(parameterName, sourceLocation)\n codeInvariant(paramConfig instanceof ObjectLiteralExpressionBuilder, 'Default argument specification should be an object literal')\n\n if (paramConfig.hasProperty('constant')) {\n result[parameterName] = {\n type: 'constant',\n value: requireConstantValue(paramConfig.memberAccess('constant', sourceLocation), sourceLocation),\n }\n } else if (paramConfig.hasProperty('from')) {\n result[parameterName] = {\n type: 'member',\n name: requireStringConstant(paramConfig.memberAccess('from', sourceLocation)).value,\n }\n } else {\n logger.error(sourceLocation, 'Default argument specifications should specify fromConstant or fromMember')\n }\n }\n\n return result\n}\n\nexport class DecoratorDataBuilder extends NodeBuilder {\n get ptype(): PType | undefined {\n return undefined\n }\n constructor(\n sourceLocation: SourceLocation,\n private readonly data: DecoratorData,\n ) {\n super(sourceLocation)\n }\n\n resolveDecoratorData(): DecoratorData {\n return this.data\n }\n}\n","import type ts from 'typescript'\nimport type { ARC4CreateOption, OnCompletionAction } from '../awst/models'\nimport type { SourceLocation } from '../awst/source-location'\nimport type { Constants } from '../constants'\nimport { invariant } from '../util'\nimport { accept } from '../visitor/visitor'\nimport { BaseVisitor } from './base-visitor'\nimport type { AwstBuildContext } from './context/awst-build-context'\nimport { DecoratorDataBuilder } from './eb/arc4-bare-method-decorator-builder'\n\nexport type Arc4AbiDecoratorData = {\n type: typeof Constants.arc4AbiDecoratorName\n create: ARC4CreateOption\n ocas: OnCompletionAction[]\n sourceLocation: SourceLocation\n readonly: boolean\n nameOverride: string | undefined\n defaultArguments: Record<\n string,\n | {\n type: 'constant'\n value: string | boolean | bigint | Uint8Array\n }\n | {\n type: 'member'\n name: string\n }\n >\n}\n\nexport type Arc4BareDecoratorData = {\n type: typeof Constants.arc4BareDecoratorName\n create: ARC4CreateOption\n ocas: OnCompletionAction[]\n sourceLocation: SourceLocation\n}\n\nexport type DecoratorData = Arc4BareDecoratorData | Arc4AbiDecoratorData\n\nexport class DecoratorVisitor extends BaseVisitor {\n private accept = <TNode extends ts.Node>(node: TNode) => accept<DecoratorVisitor, TNode>(this, node)\n\n public readonly result: DecoratorData\n\n constructor(context: AwstBuildContext, node: ts.Decorator) {\n super(context)\n\n const expr = this.accept(node.expression)\n invariant(expr instanceof DecoratorDataBuilder, 'expr must be DecoratorDataBuilder')\n this.result = expr.resolveDecoratorData()\n }\n\n static buildDecoratorData(context: AwstBuildContext, node: ts.Decorator): DecoratorData {\n return new DecoratorVisitor(context.createChildContext(), node).result\n }\n}\n","import { nodeFactory } from '../awst/node-factory'\nimport type { AppStorageDefinition, BytesConstant } from '../awst/nodes'\nimport { AppStorageKind, BytesEncoding } from '../awst/nodes'\nimport type { SourceLocation } from '../awst/source-location'\nimport { CodeError } from '../errors'\nimport { invariant, utf8ToUint8Array } from '../util'\nimport type { ContractClassPType, StorageProxyPType } from './ptypes'\nimport { BoxMapPType, BoxPType, BoxRefPType, GlobalStateType, LocalStateType } from './ptypes'\n\nexport class AppStorageDeclaration {\n readonly memberName: string\n readonly ptype: GlobalStateType | LocalStateType | BoxMapPType | BoxPType | BoxRefPType\n readonly keyOverride: BytesConstant | null\n readonly sourceLocation: SourceLocation\n readonly definedIn: ContractClassPType\n readonly description: string | null\n constructor(props: {\n memberName: string\n ptype: StorageProxyPType\n keyOverride: BytesConstant | null\n sourceLocation: SourceLocation\n definedIn: ContractClassPType\n description: string | null\n }) {\n this.memberName = props.memberName\n this.ptype = props.ptype\n this.keyOverride = props.keyOverride\n this.sourceLocation = props.sourceLocation\n this.definedIn = props.definedIn\n this.description = props.description\n }\n\n get kind(): AppStorageKind {\n if (this.ptype instanceof GlobalStateType) {\n return AppStorageKind.appGlobal\n }\n if (this.ptype instanceof LocalStateType) {\n return AppStorageKind.appGlobal\n }\n invariant(\n this.ptype instanceof BoxPType || this.ptype instanceof BoxRefPType || this.ptype instanceof BoxMapPType,\n 'Must be exhaustive check on ptype',\n )\n return AppStorageKind.box\n }\n\n get key(): BytesConstant {\n if (this.keyOverride) {\n invariant(this.keyOverride.wtype.equals(this.ptype.wtype), 'Key wtype must match ptype')\n return this.keyOverride\n } else {\n return nodeFactory.bytesConstant({\n value: utf8ToUint8Array(this.memberName),\n sourceLocation: this.sourceLocation,\n encoding: BytesEncoding.utf8,\n wtype: this.ptype.wtype,\n })\n }\n }\n\n get definition(): AppStorageDefinition {\n if (!this.ptype.contentType.wtype || !this.ptype.contentType.wtype.scalarType) {\n throw new CodeError(`${this.ptype.contentType.fullName} is not a valid type for storage`, { sourceLocation: this.sourceLocation })\n }\n return nodeFactory.appStorageDefinition({\n ...this,\n kind: this.kind,\n key: this.key,\n keyWtype: null,\n storageWtype: this.ptype.contentType.wtypeOrThrow,\n })\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport { BytesConstant } from '../../../awst/nodes'\nimport type { WType } from '../../../awst/wtypes'\nimport type { InstanceBuilder } from '../index'\n\nexport function extractKey(key: InstanceBuilder, keyWType: WType): Expression\nexport function extractKey(key: InstanceBuilder | undefined, keyWType: WType): Expression | undefined\nexport function extractKey(key: InstanceBuilder | undefined, keyWType: WType): Expression | undefined {\n if (!key) return undefined\n\n const keyBytes = key.toBytes(key.sourceLocation)\n if (keyBytes instanceof BytesConstant) {\n return nodeFactory.bytesConstant({\n ...keyBytes,\n wtype: keyWType,\n })\n } else {\n return nodeFactory.reinterpretCast({\n expr: keyBytes,\n wtype: keyWType,\n sourceLocation: key.sourceLocation,\n })\n }\n}\n","import type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport type { PType } from '../../ptypes'\nimport { typeRegistry } from '../../type-registry'\nimport type { BuilderBinaryOp, BuilderComparisonOp, BuilderUnaryOp, InstanceBuilder, NodeBuilder } from '../index'\nimport { InstanceExpressionBuilder } from '../index'\n\nexport abstract class ValueProxy<TPType extends PType> extends InstanceExpressionBuilder<TPType> {\n private get proxied(): InstanceBuilder {\n return typeRegistry.getInstanceEb(this._expr, this.ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n return this.proxied.memberAccess(name, sourceLocation)\n }\n augmentedAssignment(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n return this.proxied.augmentedAssignment(other, op, sourceLocation)\n }\n iterate(sourceLocation: SourceLocation): Expression {\n return this.proxied.iterate(sourceLocation)\n }\n indexAccess(index: InstanceBuilder, sourceLocation: SourceLocation): NodeBuilder {\n return this.proxied.indexAccess(index, sourceLocation)\n }\n boolEval(sourceLocation: SourceLocation, negate: boolean = false): Expression {\n return this.proxied.boolEval(sourceLocation, negate)\n }\n binaryOp(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n return this.proxied.binaryOp(other, op, sourceLocation)\n }\n prefixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n return this.proxied.prefixUnaryOp(op, sourceLocation)\n }\n postfixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n return this.proxied.postfixUnaryOp(op, sourceLocation)\n }\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n return this.proxied.call(args, typeArgs, sourceLocation)\n }\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n return this.proxied.compare(other, op, sourceLocation)\n }\n taggedTemplate(head: string, spans: ReadonlyArray<readonly [InstanceBuilder, string]>, sourceLocation: SourceLocation): InstanceBuilder {\n return this.proxied.taggedTemplate(head, spans, sourceLocation)\n }\n singleEvaluation(): InstanceBuilder {\n return this.proxied.singleEvaluation()\n }\n hasProperty(_name: string): boolean {\n return this.proxied.hasProperty(_name)\n }\n toBytes(sourceLocation: SourceLocation): Expression {\n return this.proxied.toBytes(sourceLocation)\n }\n}\n","import { intrinsicFactory } from '../../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../../awst/node-factory'\nimport type { BoxValueExpression, Expression } from '../../../awst/nodes'\nimport { BytesConstant } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { boolWType, boxKeyWType, bytesWType, voidWType } from '../../../awst/wtypes'\nimport { codeInvariant, invariant } from '../../../util'\nimport { AppStorageDeclaration } from '../../contract-data'\nimport type { ContractClassPType, PType } from '../../ptypes'\nimport {\n boolPType,\n BoxMapPType,\n BoxPType,\n BoxRefPType,\n boxRefType,\n bytesPType,\n stringPType,\n TuplePType,\n uint64PType,\n voidPType,\n} from '../../ptypes'\nimport { instanceEb, typeRegistry } from '../../type-registry'\nimport { BooleanExpressionBuilder } from '../boolean-expression-builder'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { FunctionBuilder, InstanceExpressionBuilder, ParameterlessFunctionBuilder } from '../index'\nimport { requireExpressionOfType } from '../util'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { VoidExpressionBuilder } from '../void-expression-builder'\nimport { extractKey } from './util'\nimport { ValueProxy } from './value-proxy'\n\nexport class BoxFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n ptypes: [contentPType],\n args: [{ key }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n funcName: `Box`,\n callLocation: sourceLocation,\n genericTypeArgs: 1,\n argSpec: (a) => [a.obj({ key: a.required(bytesPType, stringPType) })],\n })\n\n const ptype = new BoxPType({ content: contentPType })\n return new BoxExpressionBuilder(extractKey(key, boxKeyWType), ptype)\n }\n}\nexport class BoxRefFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [{ key }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n funcName: `BoxRef`,\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: (a) => [a.obj({ key: a.required(bytesPType, stringPType) })],\n })\n\n return new BoxRefExpressionBuilder(extractKey(key, boxKeyWType), boxRefType)\n }\n}\nexport class BoxMapFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n ptypes: [keySuffixType, contentPType],\n args: [{ keyPrefix }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n funcName: `BoxMap`,\n callLocation: sourceLocation,\n genericTypeArgs: 2,\n argSpec: (a) => [a.obj({ keyPrefix: a.required(bytesPType, stringPType) })],\n })\n\n const ptype = new BoxMapPType({ content: contentPType, keyType: keySuffixType })\n return new BoxMapExpressionBuilder(extractKey(keyPrefix, boxKeyWType), ptype)\n }\n}\n\nexport abstract class BoxProxyExpressionBuilder<\n TProxyType extends BoxMapPType | BoxRefPType | BoxPType,\n> extends InstanceExpressionBuilder<TProxyType> {\n buildStorageDeclaration(memberName: string, memberLocation: SourceLocation, contractType: ContractClassPType): AppStorageDeclaration {\n codeInvariant(\n this._expr instanceof BytesConstant,\n `key${this.ptype instanceof BoxMapPType ? ' prefix' : ''} must be a compile time constant value if ${this.typeDescription} is assigned to a contract member`,\n )\n return new AppStorageDeclaration({\n sourceLocation: memberLocation,\n ptype: this.ptype,\n memberName: memberName,\n keyOverride: this._expr ?? null,\n description: null,\n definedIn: contractType,\n })\n }\n}\n\nexport class BoxMapExpressionBuilder extends BoxProxyExpressionBuilder<BoxMapPType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof BoxMapPType, 'BoxMapExpressionBuilder must be constructed with ptype of BoxMapPType')\n super(expr, ptype)\n }\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'set':\n return new BoxMapSetFunctionBuilder(this._expr, this.ptype, sourceLocation)\n case 'delete':\n return new BoxMapDeleteFunctionBuilder(this._expr, this.ptype, sourceLocation)\n case 'get':\n return new BoxMapGetFunctionBuilder(this._expr, this.ptype, sourceLocation)\n case 'has':\n return new BoxMapHasFunctionBuilder(this._expr, this.ptype, sourceLocation)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\nexport class BoxRefExpressionBuilder extends BoxProxyExpressionBuilder<BoxRefPType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof BoxRefPType, 'BoxRefExpressionBuilder must be constructed with ptype of BoxRefPType')\n super(expr, ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n const boxValueExpr = boxValue({\n key: this._expr,\n sourceLocation,\n contentType: this.ptype.contentType,\n })\n switch (name) {\n case 'put':\n return new BoxRefPutFunctionBuilder(boxValueExpr)\n case 'splice':\n return new BoxRefSpliceFunctionBuilder(boxValueExpr)\n case 'create':\n return new BoxRefCreateFunctionBuilder(boxValueExpr)\n case 'extract':\n return new BoxRefExtractFunctionBuilder(boxValueExpr)\n case 'replace':\n return new BoxRefReplaceFunctionBuilder(boxValueExpr)\n case 'value':\n return new BoxValueExpressionBuilder(boxValueExpr, this.ptype.contentType)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nexport abstract class BoxRefBaseFunctionBuilder extends FunctionBuilder {\n constructor(protected readonly boxValue: BoxValueExpression) {\n super(boxValue.sourceLocation)\n }\n}\n\nexport class BoxRefCreateFunctionBuilder extends BoxRefBaseFunctionBuilder {\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [{ size }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n funcName: 'BoxRef.create',\n callLocation: sourceLocation,\n argSpec: (a) => [a.obj({ size: a.required(uint64PType) })],\n })\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'box_create',\n stackArgs: [this.boxValue, size.resolve()],\n wtype: boolWType,\n immediates: [],\n sourceLocation,\n }),\n boolPType,\n )\n }\n}\nexport class BoxRefExtractFunctionBuilder extends BoxRefBaseFunctionBuilder {\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [start, length],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n funcName: 'BoxRef.extract',\n callLocation: sourceLocation,\n argSpec: (a) => [a.required(uint64PType), a.required(uint64PType)],\n })\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'box_extract',\n stackArgs: [this.boxValue, start.resolve(), length.resolve()],\n wtype: bytesWType,\n immediates: [],\n sourceLocation,\n }),\n bytesPType,\n )\n }\n}\nexport class BoxRefReplaceFunctionBuilder extends BoxRefBaseFunctionBuilder {\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [start, value],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n funcName: 'BoxRef.replace',\n callLocation: sourceLocation,\n argSpec: (a) => [a.required(uint64PType), a.required(bytesPType)],\n })\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'box_replace',\n stackArgs: [this.boxValue, start.resolve(), value.resolve()],\n wtype: voidWType,\n immediates: [],\n sourceLocation,\n }),\n voidPType,\n )\n }\n}\n\nexport class BoxRefPutFunctionBuilder extends BoxRefBaseFunctionBuilder {\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [value],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n funcName: 'BoxRef.put',\n callLocation: sourceLocation,\n argSpec: (a) => [a.required(bytesPType)],\n })\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'box_put',\n stackArgs: [this.boxValue, value.resolve()],\n wtype: voidWType,\n immediates: [],\n sourceLocation,\n }),\n voidPType,\n )\n }\n}\nexport class BoxRefSpliceFunctionBuilder extends BoxRefBaseFunctionBuilder {\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [start, stop, value],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n funcName: 'BoxRef.splice',\n callLocation: sourceLocation,\n argSpec: (a) => [a.required(uint64PType), a.required(uint64PType), a.required(bytesPType)],\n })\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'box_splice',\n stackArgs: [this.boxValue, start.resolve(), stop.resolve(), value.resolve()],\n wtype: voidWType,\n immediates: [],\n sourceLocation,\n }),\n voidPType,\n )\n }\n}\n\nfunction boxValue({\n key,\n sourceLocation,\n contentType,\n}: {\n key: Expression\n sourceLocation: SourceLocation\n contentType: PType\n}): BoxValueExpression {\n return nodeFactory.boxValueExpression({\n key,\n sourceLocation,\n wtype: contentType.wtypeOrThrow,\n existsAssertionMessage: 'Box must have value',\n })\n}\n\nexport class BoxExpressionBuilder extends BoxProxyExpressionBuilder<BoxPType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof BoxPType, 'BoxExpressionBuilder must be constructed with ptype of BoxPType')\n super(expr, ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n const boxValueExpr = boxValue({\n key: this._expr,\n sourceLocation,\n contentType: this.ptype.contentType,\n })\n switch (name) {\n case 'value':\n return new BoxValueExpressionBuilder(boxValueExpr, this.ptype.contentType)\n case 'exists':\n return new BooleanExpressionBuilder(\n nodeFactory.stateExists({\n field: boxValueExpr,\n sourceLocation,\n wtype: boolWType,\n }),\n )\n case 'delete':\n return new BoxDeleteFunctionBuilder(boxValueExpr, sourceLocation)\n case 'get':\n return new BoxGetFunctionBuilder(boxValueExpr, this.ptype.contentType, sourceLocation)\n case 'maybe':\n return new BoxMaybeFunctionBuilder(boxValueExpr, this.ptype.contentType, sourceLocation)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\n/**\n * Wraps the box value expression and watches for certain expressions which can be optimized.\n *\n * For example box.value.bytes.slice(...) can be optimized to use box_extract directly rather\n * than reading the entire box into memory and then slicing it. All unhandled scenarios are proxied\n * through to the underlying builder for the given type.\n */\nclass BoxValueExpressionBuilder extends ValueProxy<PType> {\n constructor(boxValue: BoxValueExpression, ptype: PType) {\n super(boxValue, ptype)\n }\n assign(other: InstanceBuilder, sourceLocation: SourceLocation): InstanceBuilder {\n const value = requireExpressionOfType(other, this.ptype)\n return typeRegistry.getInstanceEb(\n nodeFactory.assignmentExpression({\n target: this.resolveLValue(),\n value,\n sourceLocation,\n }),\n this.ptype,\n )\n }\n}\nclass BoxDeleteFunctionBuilder extends ParameterlessFunctionBuilder {\n constructor(boxValue: BoxValueExpression, sourceLocation: SourceLocation) {\n super(\n boxValue,\n (expr) =>\n new VoidExpressionBuilder(\n nodeFactory.stateDelete({\n sourceLocation,\n field: boxValue,\n wtype: voidWType,\n }),\n ),\n )\n }\n}\n\nclass BoxGetFunctionBuilder extends FunctionBuilder {\n constructor(\n private readonly boxValue: BoxValueExpression,\n private readonly contentType: PType,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [{ default: defaultValue }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n funcName: 'Box.get',\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: (a) => [a.obj({ default: a.optional(this.contentType) })],\n })\n\n if (defaultValue) {\n return instanceEb(\n nodeFactory.stateGet({\n sourceLocation,\n default: defaultValue.resolve(),\n wtype: this.contentType.wtypeOrThrow,\n field: this.boxValue,\n }),\n this.contentType,\n )\n } else {\n return new BoxValueExpressionBuilder(this.boxValue, this.contentType)\n }\n }\n}\nclass BoxMaybeFunctionBuilder extends FunctionBuilder {\n constructor(\n private readonly boxValue: BoxValueExpression,\n private readonly contentType: PType,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n parseFunctionArgs({\n args,\n typeArgs,\n funcName: 'Box.maybe',\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: () => [],\n })\n const type = new TuplePType({ items: [this.contentType, boolPType], immutable: true })\n\n return instanceEb(\n nodeFactory.stateGetEx({\n sourceLocation,\n wtype: type.wtype,\n field: this.boxValue,\n }),\n type,\n )\n }\n}\nabstract class BoxMapFunctionBuilderBase extends FunctionBuilder {\n #mapPType: BoxMapPType\n #boxMapExpr: Expression\n constructor(boxMapExpr: Expression, mapPType: BoxMapPType, sourceLocation: SourceLocation) {\n super(sourceLocation)\n this.#mapPType = mapPType\n this.#boxMapExpr = boxMapExpr\n }\n protected get contentType() {\n return this.#mapPType.contentType\n }\n protected get keyType() {\n return this.#mapPType.keyType\n }\n protected boxValueExpression(key: Expression): BoxValueExpression {\n const keyBytes = instanceEb(key, this.keyType).toBytes(this.sourceLocation)\n\n return nodeFactory.boxValueExpression({\n sourceLocation: this.sourceLocation,\n existsAssertionMessage: 'Box must have value',\n key: intrinsicFactory.bytesConcat({\n left: this.#boxMapExpr,\n right: keyBytes,\n sourceLocation: this.sourceLocation,\n }),\n wtype: this.contentType.wtypeOrThrow,\n })\n }\n}\nclass BoxMapHasFunctionBuilder extends BoxMapFunctionBuilderBase {\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [key],\n } = parseFunctionArgs({\n args,\n typeArgs,\n funcName: 'BoxMap.has',\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: (a) => [a.required(this.keyType)],\n })\n return new BooleanExpressionBuilder(\n nodeFactory.stateExists({\n wtype: boolWType,\n field: this.boxValueExpression(key.resolve()),\n sourceLocation,\n }),\n )\n }\n}\n\nclass BoxMapGetFunctionBuilder extends BoxMapFunctionBuilderBase {\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [key, { default: defaultValue }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n funcName: 'BoxMap.set',\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: (a) => [a.required(this.keyType), a.obj({ default: a.optional(this.contentType) })],\n })\n\n if (defaultValue) {\n return instanceEb(\n nodeFactory.stateGet({\n sourceLocation,\n default: defaultValue.resolve(),\n wtype: this.contentType.wtypeOrThrow,\n field: this.boxValueExpression(key.resolve()),\n }),\n this.contentType,\n )\n } else {\n return new BoxValueExpressionBuilder(this.boxValueExpression(key.resolve()), this.contentType)\n }\n }\n}\nclass BoxMapSetFunctionBuilder extends BoxMapFunctionBuilderBase {\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [key, value],\n } = parseFunctionArgs({\n args,\n typeArgs,\n funcName: 'BoxMap.set',\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: (a) => [a.required(this.keyType), a.required(this.contentType)],\n })\n\n return instanceEb(\n nodeFactory.assignmentExpression({\n target: this.boxValueExpression(key.resolve()),\n sourceLocation,\n value: value.resolve(),\n }),\n this.contentType,\n )\n }\n}\nclass BoxMapDeleteFunctionBuilder extends BoxMapFunctionBuilderBase {\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [key],\n } = parseFunctionArgs({\n args,\n typeArgs,\n funcName: 'BoxMap.delete',\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: (a) => [a.required(this.keyType)],\n })\n\n return new VoidExpressionBuilder(\n nodeFactory.stateDelete({\n field: this.boxValueExpression(key.resolve()),\n sourceLocation,\n wtype: voidWType,\n }),\n )\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { AppStateExpression, Expression, LValue } from '../../../awst/nodes'\nimport { BytesConstant } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { stateKeyWType } from '../../../awst/wtypes'\nimport { CodeError } from '../../../errors'\nimport { codeInvariant, invariant } from '../../../util'\nimport { AppStorageDeclaration } from '../../contract-data'\nimport type { ContractClassPType, PType } from '../../ptypes'\nimport { boolPType, bytesPType, GlobalStateType, stringPType } from '../../ptypes'\nimport { typeRegistry } from '../../type-registry'\nimport { BooleanExpressionBuilder } from '../boolean-expression-builder'\nimport type { NodeBuilder } from '../index'\nimport { FunctionBuilder, InstanceBuilder, InstanceExpressionBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { extractKey } from './util'\n\nexport class GlobalStateFunctionBuilder extends FunctionBuilder {\n constructor(sourceLocation: SourceLocation) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const [contentPType] = typeArgs\n const {\n args: [{ initialValue, key }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n argSpec: (a) => [\n a.obj({\n initialValue: a.optional(contentPType),\n key: a.optional(stringPType, bytesPType),\n }),\n ],\n funcName: this.typeDescription,\n callLocation: sourceLocation,\n })\n const ptype = new GlobalStateType({ content: contentPType })\n\n return new GlobalStateFunctionResultBuilder(extractKey(key, stateKeyWType), ptype, {\n initialValue: initialValue?.resolve(),\n sourceLocation,\n })\n }\n}\n\nexport class GlobalStateExpressionBuilder extends InstanceExpressionBuilder<GlobalStateType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof GlobalStateType, 'ptype must be instance of GlobalStateType')\n super(expr, ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'value':\n return typeRegistry.getInstanceEb(this.buildField(sourceLocation), this.ptype.contentType)\n case 'hasValue':\n return new BooleanExpressionBuilder(\n nodeFactory.stateExists({\n field: this.buildField(sourceLocation),\n wtype: boolPType.wtype,\n sourceLocation,\n }),\n )\n }\n return super.memberAccess(name, sourceLocation)\n }\n\n private buildField(sourceLocation: SourceLocation): AppStateExpression {\n return nodeFactory.appStateExpression({\n key: this._expr,\n wtype: this.ptype.contentType.wtypeOrThrow,\n existsAssertionMessage: 'check GlobalState exists',\n sourceLocation,\n })\n }\n}\n\nexport class GlobalStateFunctionResultBuilder extends InstanceBuilder<GlobalStateType> {\n resolve(): Expression {\n codeInvariant(\n this._expr,\n 'Global state must have explicit key provided if not being assigned to a contract property',\n this.sourceLocation,\n )\n return this._expr\n }\n resolveLValue(): LValue {\n throw CodeError.invalidAssignmentTarget({ name: this.typeDescription, sourceLocation: this.sourceLocation })\n }\n private _ptype: GlobalStateType\n private _expr: Expression | undefined\n public readonly initialValue: Expression | undefined\n constructor(expr: Expression | undefined, ptype: PType, config: { initialValue?: Expression; sourceLocation: SourceLocation }) {\n const sourceLocation = expr?.sourceLocation ?? config?.sourceLocation\n invariant(sourceLocation, 'Must have expression or config')\n super(sourceLocation)\n invariant(ptype instanceof GlobalStateType, 'ptype must be GlobalStateType')\n this._ptype = ptype\n this._expr = expr\n this.initialValue = config.initialValue\n }\n\n get ptype(): GlobalStateType {\n return this._ptype\n }\n\n buildStorageDeclaration(memberName: string, memberLocation: SourceLocation, contractType: ContractClassPType): AppStorageDeclaration {\n if (this._expr)\n codeInvariant(\n this._expr instanceof BytesConstant,\n `key must be a compile time constant value if ${this.typeDescription} is assigned to a contract member`,\n )\n return new AppStorageDeclaration({\n sourceLocation: memberLocation,\n ptype: this._ptype,\n memberName: memberName,\n keyOverride: this._expr ?? null,\n description: null,\n definedIn: contractType,\n })\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { AppStateExpression, Expression, LValue } from '../../../awst/nodes'\nimport { BytesConstant } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { stateKeyWType, voidWType } from '../../../awst/wtypes'\nimport { CodeError } from '../../../errors'\nimport { codeInvariant, invariant } from '../../../util'\nimport { AppStorageDeclaration } from '../../contract-data'\nimport type { ContractClassPType, PType } from '../../ptypes'\nimport { accountPType, bytesPType, LocalStateType, stringPType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport { FunctionBuilder, InstanceBuilder, InstanceExpressionBuilder, NodeBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { VoidExpressionBuilder } from '../void-expression-builder'\nimport { extractKey } from './util'\n\nexport class LocalStateFunctionBuilder extends FunctionBuilder {\n constructor(sourceLocation: SourceLocation) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const [contentPType] = typeArgs\n const {\n args: [{ key }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n argSpec: (a) => [\n a.obj({\n key: a.optional(stringPType, bytesPType),\n }),\n ],\n funcName: this.typeDescription,\n callLocation: sourceLocation,\n })\n const ptype = new LocalStateType({ content: contentPType })\n return new LocalStateFunctionResultBuilder(extractKey(key, stateKeyWType), ptype, { sourceLocation })\n }\n}\n\nexport class LocalStateExpressionBuilder extends InstanceExpressionBuilder<LocalStateType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof LocalStateType, 'ptype must be instance of LocalStateType')\n super(expr, ptype)\n }\n\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [account],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: 'LocalState',\n argSpec: (a) => [a.required(accountPType)],\n })\n\n return new LocalStateForAccountExpressionBuilder(this.buildField(account.resolve(), sourceLocation), this.ptype.contentType)\n }\n\n private buildField(account: Expression, sourceLocation: SourceLocation): AppStateExpression {\n return nodeFactory.appAccountStateExpression({\n key: this._expr,\n account,\n wtype: this.ptype.contentType.wtypeOrThrow,\n existsAssertionMessage: 'check LocalState exists',\n sourceLocation,\n })\n }\n}\n\nexport class LocalStateForAccountExpressionBuilder extends NodeBuilder {\n ptype: undefined\n\n constructor(\n private key: AppStateExpression,\n private contentType: PType,\n ) {\n super(key.sourceLocation)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'value':\n // TODO: use value proxy\n return instanceEb(\n nodeFactory.appStateExpression({\n ...this.key,\n sourceLocation,\n }),\n this.contentType,\n )\n case 'delete':\n return new LocalStateDeleteFunctionBuilder(this.key, sourceLocation)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nclass LocalStateDeleteFunctionBuilder extends FunctionBuilder {\n constructor(\n private key: AppStateExpression,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: 'LocalState.delete',\n argSpec: () => [],\n })\n return new VoidExpressionBuilder(\n nodeFactory.stateDelete({\n field: this.key,\n sourceLocation,\n wtype: voidWType,\n }),\n )\n }\n}\n\nexport class LocalStateFunctionResultBuilder extends InstanceBuilder<LocalStateType> {\n resolve(): Expression {\n codeInvariant(\n this._expr,\n 'Local state must have explicit key provided if not being assigned to a contract property',\n this.sourceLocation,\n )\n return this._expr\n }\n resolveLValue(): LValue {\n throw CodeError.invalidAssignmentTarget({ name: this.typeDescription, sourceLocation: this.sourceLocation })\n }\n\n private _expr: Expression | undefined\n constructor(expr: Expression | undefined, ptype: PType, config: { sourceLocation: SourceLocation }) {\n const sourceLocation = expr?.sourceLocation ?? config?.sourceLocation\n invariant(sourceLocation, 'Must have expression or config')\n super(sourceLocation)\n invariant(ptype instanceof LocalStateType, 'ptype must be LocalStateType')\n this._expr = expr\n this.ptype = ptype\n }\n readonly ptype: LocalStateType\n\n buildStorageDeclaration(memberName: string, memberLocation: SourceLocation, contractType: ContractClassPType): AppStorageDeclaration {\n if (this._expr)\n codeInvariant(\n this._expr instanceof BytesConstant,\n `key is must be a compile time constant value if ${this.typeDescription} is assigned to a contract member`,\n )\n return new AppStorageDeclaration({\n sourceLocation: memberLocation,\n ptype: this.ptype,\n memberName: memberName,\n keyOverride: this._expr ?? null,\n description: null,\n definedIn: contractType,\n })\n }\n}\n","import ts from 'typescript'\nimport type { DefaultArgumentSource } from '../awst/models'\nimport { ARC4ABIMethodConfig, ARC4BareMethodConfig, ARC4CreateOption, ContractReference, OnCompletionAction } from '../awst/models'\nimport { nodeFactory } from '../awst/node-factory'\nimport type * as awst from '../awst/nodes'\nimport type { ContractMethod } from '../awst/nodes'\nimport { ContractFragment } from '../awst/nodes'\nimport type { SourceLocation } from '../awst/source-location'\nimport { voidWType } from '../awst/wtypes'\nimport { Constants } from '../constants'\nimport { AwstBuildFailureError, NotSupported, TodoError } from '../errors'\nimport { logger } from '../logger'\nimport { codeInvariant, invariant } from '../util'\nimport type { ClassElements } from '../visitor/syntax-names'\nimport type { Visitor } from '../visitor/visitor'\nimport { accept } from '../visitor/visitor'\nimport { BaseVisitor } from './base-visitor'\nimport { ConstructorVisitor } from './constructor-visitor'\nimport type { AwstBuildContext } from './context/awst-build-context'\nimport { ContractMethodVisitor } from './contract-method-visitor'\nimport type { Arc4AbiDecoratorData, DecoratorData } from './decorator-visitor'\nimport { DecoratorVisitor } from './decorator-visitor'\nimport { ContractSuperBuilder } from './eb/contract-builder'\nimport { BoxProxyExpressionBuilder } from './eb/storage/box'\nimport { GlobalStateFunctionResultBuilder } from './eb/storage/global-state'\nimport { LocalStateFunctionResultBuilder } from './eb/storage/local-state'\nimport { isValidLiteralForPType, requireInstanceBuilder } from './eb/util'\nimport { ContractClassPType, GlobalStateType } from './ptypes'\n\nexport class ContractVisitor extends BaseVisitor implements Visitor<ClassElements, void> {\n private _ctor?: ContractMethod\n private _subroutines: ContractMethod[] = []\n private _approvalProgram: ContractMethod | null = null\n private _clearStateProgram: ContractMethod | null = null\n private _className: string\n private _contractPType: ContractClassPType\n private readonly _propertyInitialization: awst.Statement[] = []\n public readonly result: ContractFragment\n public accept = <TNode extends ts.Node>(node: TNode) => accept<ContractVisitor, TNode>(this, node)\n\n constructor(ctx: AwstBuildContext, classDec: ts.ClassDeclaration) {\n super(ctx)\n const sourceLocation = this.context.getSourceLocation(classDec)\n codeInvariant(classDec.name, 'Anonymous classes are not supported for contracts', sourceLocation)\n this._className = this.textVisitor.accept(classDec.name)\n\n const contractPtype = this.context.getPTypeForNode(classDec)\n invariant(contractPtype instanceof ContractClassPType, 'Contract PType must be ContractClassType')\n this._contractPType = contractPtype\n\n const isAbstract = Boolean(classDec.modifiers?.some((m) => m.kind === ts.SyntaxKind.AbstractKeyword))\n\n for (const property of classDec.members.filter(ts.isPropertyDeclaration)) {\n this.acceptAndIgnoreBuildErrors(property)\n }\n const ctor = classDec.members.find(ts.isConstructorDeclaration)\n if (ctor) this.acceptAndIgnoreBuildErrors(ctor)\n\n for (const member of classDec.members) {\n if (!ts.isConstructorDeclaration(member) && !ts.isPropertyDeclaration(member)) {\n this.acceptAndIgnoreBuildErrors(member)\n }\n }\n const cref = ContractReference.fromPType(this._contractPType)\n this.result = new ContractFragment({\n name: this._className,\n appState: this.context.getStorageDefinitionsForContract(this._contractPType),\n init: this._ctor ?? this.makeDefaultConstructor(sourceLocation),\n subroutines: this._subroutines,\n docstring: null,\n approvalProgram: this._approvalProgram,\n clearProgram: this._clearStateProgram,\n bases: this.getBaseContracts(contractPtype),\n id: cref,\n reservedScratchSpace: new Set(),\n sourceLocation: sourceLocation,\n stateTotals: {\n globalBytes: null,\n globalUints: null,\n localBytes: null,\n localUints: null,\n },\n })\n if (!isAbstract) {\n this.context.addToCompilationSet(cref)\n }\n }\n\n private acceptAndIgnoreBuildErrors(node: ts.ClassElement) {\n try {\n this.accept(node)\n } catch (e) {\n // Ignore this error and continue visiting other members, so we can show additional errors\n if (!(e instanceof AwstBuildFailureError)) {\n throw e\n }\n }\n }\n\n private makeDefaultConstructor(sourceLocation: SourceLocation) {\n invariant(this._contractPType.baseTypes.length === 1, 'Only single base type supported for now')\n return nodeFactory.contractMethod({\n memberName: Constants.constructorMethodName,\n cref: ContractReference.fromPType(this._contractPType),\n args: [],\n arc4MethodConfig: null,\n sourceLocation,\n returnType: voidWType,\n synthetic: true,\n inheritable: true,\n documentation: nodeFactory.methodDocumentation(),\n body: nodeFactory.block(\n { sourceLocation },\n nodeFactory.expressionStatement({\n expr: requireInstanceBuilder(\n new ContractSuperBuilder(this._contractPType.baseTypes[0], sourceLocation, this.context).call([], [], sourceLocation),\n ).resolve(),\n }),\n ...this._propertyInitialization,\n ),\n })\n }\n\n private getBaseContracts(contractType: ContractClassPType): ContractReference[] {\n return contractType.baseTypes.flatMap((baseType) => {\n return [\n new ContractReference({\n className: baseType.name,\n moduleName: baseType.module,\n }),\n ...this.getBaseContracts(baseType),\n ]\n })\n }\n\n visitClassStaticBlockDeclaration(node: ts.ClassStaticBlockDeclaration): void {\n throw new TodoError('visitClassStaticBlockDeclaration')\n }\n visitConstructor(node: ts.ConstructorDeclaration): void {\n this._ctor = ConstructorVisitor.buildConstructor(this.context, node, {\n cref: ContractReference.fromPType(this._contractPType),\n propertyInitializerStatements: this._propertyInitialization,\n })\n }\n visitGetAccessor(node: ts.GetAccessorDeclaration): void {\n throw new TodoError('visitGetAccessor')\n }\n visitIndexSignature(node: ts.IndexSignatureDeclaration): void {\n throw new NotSupported('Index signatures')\n }\n\n private buildDefaultArgument({\n methodName,\n parameterName,\n config,\n decoratorLocation,\n }: {\n methodName: string\n parameterName: string\n config: Arc4AbiDecoratorData['defaultArguments'][string]\n decoratorLocation: SourceLocation\n }): DefaultArgumentSource {\n const [, paramType] = this._contractPType.methods[methodName].parameters.find(([p]) => p === parameterName) ?? [undefined, undefined]\n codeInvariant(\n paramType,\n `Default argument specification '${parameterName}' does not match any parameters on the target method`,\n decoratorLocation,\n )\n if (config.type === 'constant') {\n codeInvariant(isValidLiteralForPType(config.value, paramType), `Literal cannot be converted to type ${paramType}`, decoratorLocation)\n\n return {\n source: 'constant',\n value: config.value,\n }\n }\n const methodType = this._contractPType.methods[config.name]\n if (methodType) {\n codeInvariant(\n methodType.returnType.equals(paramType),\n `Default argument specification for '${parameterName}' does not match parameter type`,\n decoratorLocation,\n )\n return {\n source: 'abi-method',\n memberName: config.name,\n }\n }\n const propertyType = this._contractPType.properties[config.name]\n if (propertyType instanceof GlobalStateType) {\n codeInvariant(\n propertyType.contentType.equals(paramType),\n `Default argument specification for '${parameterName}' does not match parameter type`,\n decoratorLocation,\n )\n return {\n source: 'global-state',\n memberName: config.name,\n }\n }\n throw new TodoError('Unsupported default argument config')\n }\n\n private buildArc4Config({\n decorator,\n methodName,\n isPublic,\n methodLocation,\n }: {\n methodName: string\n decorator: DecoratorData | undefined\n isPublic: boolean\n methodLocation: SourceLocation\n }): awst.ContractMethod['arc4MethodConfig'] {\n if (!isPublic && decorator && [Constants.arc4BareDecoratorName, Constants.arc4AbiDecoratorName].includes(decorator.type)) {\n logger.error(methodLocation, 'Private method cannot be exposed as an abi method')\n }\n\n if (decorator?.type === 'arc4.baremethod') {\n return new ARC4BareMethodConfig({\n sourceLocation: decorator.sourceLocation,\n allowedCompletionTypes: decorator.ocas,\n create: decorator.create,\n })\n } else if (decorator?.type === 'arc4.abimethod') {\n return new ARC4ABIMethodConfig({\n sourceLocation: decorator.sourceLocation,\n allowedCompletionTypes: decorator.ocas,\n create: decorator.create,\n name: decorator.nameOverride ?? methodName,\n readonly: decorator.readonly,\n defaultArgs: Object.fromEntries(\n Object.entries(decorator.defaultArguments).map(([parameterName, argConfig]) => [\n parameterName,\n this.buildDefaultArgument({\n methodName,\n parameterName,\n config: argConfig,\n decoratorLocation: decorator.sourceLocation,\n }),\n ]),\n ),\n structs: {}, // TODO\n })\n } else if (isPublic && this._contractPType.isARC4) {\n return new ARC4ABIMethodConfig({\n sourceLocation: methodLocation,\n allowedCompletionTypes: [OnCompletionAction.NoOp],\n\n create: ARC4CreateOption.Disallow,\n name: methodName,\n readonly: false,\n defaultArgs: {},\n structs: {}, // TODO\n })\n }\n return null\n }\n\n visitMethodDeclaration(node: ts.MethodDeclaration): void {\n const sourceLocation = this.sourceLocation(node)\n const methodName = this.textVisitor.accept(node.name)\n\n const decorators = (node.modifiers ?? []).flatMap((modifier) => {\n if (!ts.isDecorator(modifier)) return []\n\n return DecoratorVisitor.buildDecoratorData(this.context, modifier)\n })\n const isPublic = node.modifiers?.some((m) => m.kind === ts.SyntaxKind.PublicKeyword) === true\n\n if (decorators.length > 1) {\n logger.error(\n sourceLocation,\n 'Only one decorator is allowed per method. Multiple on complete actions can be provided in a single decorator',\n )\n }\n const cref = ContractReference.fromPType(this._contractPType)\n switch (methodName) {\n case Constants.approvalProgramMethodName:\n if (decorators.length) logger.error(sourceLocation, `${Constants.approvalProgramMethodName} should not have a decorator`)\n this._approvalProgram = ContractMethodVisitor.buildContractMethod(this.context, node, { cref })\n break\n case Constants.clearStateProgramMethodName:\n if (decorators.length) logger.error(sourceLocation, `${Constants.clearStateProgramMethodName} should not have a decorator`)\n this._clearStateProgram = ContractMethodVisitor.buildContractMethod(this.context, node, { cref })\n break\n default:\n this._subroutines.push(\n ContractMethodVisitor.buildContractMethod(this.context, node, {\n cref,\n arc4MethodConfig: this.buildArc4Config({\n decorator: decorators[0],\n methodName,\n isPublic,\n methodLocation: sourceLocation,\n }),\n }),\n )\n }\n }\n visitPropertyDeclaration(node: ts.PropertyDeclaration): void {\n const sourceLocation = this.sourceLocation(node)\n codeInvariant(!node.questionToken, 'Optional properties are not supported', sourceLocation)\n codeInvariant(!node.exclamationToken, 'Non-null assertion operators on properties are not supported', sourceLocation)\n // TODO: Check modifiers?\n\n const propertyName = this.textVisitor.accept(node.name)\n codeInvariant(node.initializer, 'Properties must have an initializer', sourceLocation)\n if (node.type) {\n logger.info(sourceLocation, 'Type annotations are not required on initialized properties')\n }\n const initializer = this.accept(node.initializer)\n\n if (initializer instanceof GlobalStateFunctionResultBuilder) {\n const storageDeclaration = initializer.buildStorageDeclaration(propertyName, this.sourceLocation(node.name), this._contractPType)\n this.context.addStorageDeclaration(storageDeclaration)\n if (initializer.initialValue) {\n this._propertyInitialization.push(\n nodeFactory.assignmentStatement({\n target: nodeFactory.appStateExpression({\n key: storageDeclaration.key,\n wtype: storageDeclaration.ptype.contentType.wtypeOrThrow,\n sourceLocation: storageDeclaration.sourceLocation,\n existsAssertionMessage: null,\n }),\n value: initializer.initialValue,\n sourceLocation,\n }),\n )\n }\n } else if (initializer instanceof BoxProxyExpressionBuilder || initializer instanceof LocalStateFunctionResultBuilder) {\n this.context.addStorageDeclaration(\n initializer.buildStorageDeclaration(propertyName, this.sourceLocation(node.name), this._contractPType),\n )\n } else {\n logger.error(initializer.sourceLocation, `Unsupported property type ${initializer.typeDescription}`)\n }\n }\n visitSemicolonClassElement(node: ts.SemicolonClassElement): void {\n // Ignore\n }\n visitSetAccessor(node: ts.SetAccessorDeclaration): void {\n throw new TodoError('visitSetAccessor')\n }\n\n public static buildContract(ctx: AwstBuildContext, classDec: ts.ClassDeclaration): awst.ContractFragment {\n return new ContractVisitor(ctx.createChildContext(), classDec).result\n }\n}\n","import type ts from 'typescript'\nimport * as awst from '../awst/nodes'\nimport { invariant } from '../util'\nimport type { AwstBuildContext } from './context/awst-build-context'\nimport { FunctionVisitor } from './function-visitor'\n\nexport class SubroutineVisitor extends FunctionVisitor {\n private readonly _result: awst.Subroutine\n\n constructor(ctx: AwstBuildContext, node: ts.FunctionDeclaration) {\n super(ctx, node)\n const sourceLocation = this.sourceLocation(node)\n const { args, body, documentation } = this.buildFunctionAwst(node)\n\n this._result = new awst.Subroutine({\n id: this._functionType.fullName,\n name: this._functionType.name,\n sourceLocation,\n args,\n returnType: this._functionType.returnType.wtypeOrThrow,\n body,\n documentation,\n })\n }\n\n get result() {\n return this._result\n }\n\n public static buildSubroutine(parentCtx: AwstBuildContext, node: ts.FunctionDeclaration): awst.Subroutine {\n const result = new SubroutineVisitor(parentCtx.createChildContext(), node).result\n invariant(result instanceof awst.Subroutine, \"result must be Subroutine'\")\n return result\n }\n}\n","import ts from 'typescript'\nimport type * as awst from '../awst/nodes'\nimport { AwstBuildFailureError, CodeError } from '../errors'\nimport { logger, logPuyaExceptions } from '../logger'\nimport { expandMaybeArray } from '../util'\nimport type { ModuleStatements } from '../visitor/syntax-names'\nimport type { Visitor } from '../visitor/visitor'\nimport { accept } from '../visitor/visitor'\nimport { BaseVisitor } from './base-visitor'\n\nimport type { AwstBuildContext } from './context/awst-build-context'\nimport { ContractVisitor } from './contract-visitor'\nimport { requireConstantOfType } from './eb/util'\nimport { ContractClassPType } from './ptypes'\nimport { SubroutineVisitor } from './subroutine-visitor'\n\ntype NodeOrDeferred = awst.AWST[] | awst.AWST | (() => awst.AWST[] | awst.AWST)\n\nexport class SourceFileVisitor extends BaseVisitor implements Visitor<ModuleStatements, NodeOrDeferred> {\n private _moduleStatements: NodeOrDeferred[] = []\n private accept = <TNode extends ts.Node>(node: TNode) => accept<SourceFileVisitor, TNode>(this, node)\n\n constructor(context: AwstBuildContext, sourceFile: ts.SourceFile) {\n super(context)\n\n for (const statement of sourceFile.statements) {\n this._moduleStatements.push(this.accept(statement))\n }\n }\n\n visitInterfaceDeclaration(node: ts.InterfaceDeclaration): NodeOrDeferred {\n // Ignore these for now\n return []\n }\n\n visitTypeAliasDeclaration(_node: ts.TypeAliasDeclaration): NodeOrDeferred {\n // Ignore these for now - but maybe we need to do something with them when it comes to structs\n return []\n }\n\n visitFunctionDeclaration(node: ts.FunctionDeclaration): NodeOrDeferred {\n return () => logPuyaExceptions(() => SubroutineVisitor.buildSubroutine(this.context, node), this.sourceLocation(node))\n }\n\n buildModule(): awst.AWST[] {\n return Array.from(this.gatherStatements())\n }\n\n private *gatherStatements(): Generator<awst.AWST, void, void> {\n for (const statements of this._moduleStatements) {\n try {\n if (typeof statements === 'function') {\n for (const s of expandMaybeArray(statements())) {\n yield s\n }\n } else {\n for (const s of expandMaybeArray(statements)) {\n yield s\n }\n }\n } catch (e) {\n // Ignore this error and continue visiting other statements, so we can show additional errors\n if (!(e instanceof AwstBuildFailureError)) {\n throw e\n }\n }\n }\n }\n\n visitVariableStatement(node: ts.VariableStatement): NodeOrDeferred {\n const sourceLocation = this.sourceLocation(node)\n if (!(node.declarationList.flags & ts.NodeFlags.Const)) {\n logger.error(new CodeError(`Module level variable declarations must use the 'const' keyword.`, { sourceLocation }))\n }\n\n return node.declarationList.declarations.flatMap((dec) => {\n if (!dec.initializer) {\n throw new CodeError(`Module level variable declarations must be initialized with a value.`, { sourceLocation })\n }\n if (!ts.isIdentifier(dec.name)) {\n throw new CodeError(`Module level variable declarations must use plain identifiers.`, { sourceLocation })\n }\n const ptype = this.context.getPTypeForNode(dec.name)\n\n //const value = CompileTimeConstantVisitor.getCompileTimeConstant(this.context, dec.initializer, ptype)\n const value = requireConstantOfType(this.accept(dec.initializer), ptype, 'Module level assignments must be compile time constants')\n const constantName = this.context.resolveVariableName(dec.name)\n this.context.addConstant(constantName, value)\n\n return []\n })\n }\n visitImportDeclaration(_node: ts.ImportDeclaration): NodeOrDeferred {\n return []\n }\n visitClassDeclaration(node: ts.ClassDeclaration): NodeOrDeferred {\n const sourceLocation = this.sourceLocation(node)\n const ptype = this.context.getPTypeForNode(node)\n if (ptype instanceof ContractClassPType) {\n return () => logPuyaExceptions(() => ContractVisitor.buildContract(this.context, node), sourceLocation)\n } else {\n logger.warn(sourceLocation, `Ignoring class declaration ${ptype.fullName}`)\n return []\n }\n }\n}\n","import { jsonSerializeAwst } from '../awst/json-serialize-awst'\nimport type { CompilationSet } from '../awst/models'\nimport type { AWST } from '../awst/nodes'\nimport { SourceLocation } from '../awst/source-location'\nimport { ToCodeVisitor } from '../awst/to-code-visitor'\nimport type { CompileOptions } from '../compile-options'\nimport { AwstBuildFailureError } from '../errors'\nimport { logger } from '../logger'\nimport type { CreateProgramResult } from '../parser'\nimport { ArtifactKind, writeArtifact } from '../write-artifact'\nimport { buildContextForProgram } from './context/awst-build-context'\nimport { buildLibAwst } from './lib'\nimport { SourceFileVisitor } from './source-file-visitor'\n\nexport function buildAwst({ program, sourceFiles }: CreateProgramResult, options: CompileOptions): [AWST[], CompilationSet] {\n const awstBuildContext = buildContextForProgram(program)\n const moduleAwst: AWST[] = [...buildLibAwst()]\n for (const [sourcePath, sourceFile] of Object.entries(sourceFiles)) {\n try {\n const visitor = new SourceFileVisitor(awstBuildContext.createChildContext(), sourceFile)\n const algoFile = options.getFileFromSource(sourcePath)\n\n const module = visitor.buildModule()\n\n if (options.outputAwst && algoFile) {\n writeArtifact({\n sourceFile: sourceFile.fileName,\n outDir: algoFile.outDir,\n kind: ArtifactKind.Awst,\n obj: module,\n buildArtifact(module): string {\n const toCode = new ToCodeVisitor()\n return module.flatMap((s) => s.accept(toCode)).join('\\n')\n },\n })\n }\n if (options.outputAwstJson && algoFile) {\n writeArtifact({\n sourceFile: sourceFile.fileName,\n outDir: algoFile.outDir,\n kind: ArtifactKind.AwstJson,\n obj: module,\n buildArtifact(module): string {\n return jsonSerializeAwst(module)\n },\n })\n }\n moduleAwst.push(...module)\n } catch (e) {\n if (e instanceof AwstBuildFailureError) {\n logger.error(SourceLocation.fromFile(sourceFile, program.getCurrentDirectory()), e.message)\n } else if (e instanceof Error) {\n logger.error(e)\n } else {\n logger.error(undefined, `Unknown error: ${e}`)\n }\n }\n }\n return [moduleAwst, awstBuildContext.compilationSet]\n}\n","import type { awst } from '../../awst'\nimport type { Expression } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError } from '../../errors'\nimport { invariant } from '../../util'\nimport { IterableIteratorType, type PType } from '../ptypes'\nimport { InstanceExpressionBuilder } from './index'\n\nexport class IterableIteratorExpressionBuilder extends InstanceExpressionBuilder<IterableIteratorType> {\n resolve(): awst.Expression {\n throw new CodeError(`${this.typeDescription} can only be used in for loops`, { sourceLocation: this.sourceLocation })\n }\n\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof IterableIteratorType, 'ptype must be instance of IterableIteratorType')\n super(expr, ptype)\n }\n\n iterate(sourceLocation: SourceLocation): Expression {\n return this._expr\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { uint64WType } from '../../../awst/wtypes'\nimport { logger } from '../../../logger'\nimport { codeInvariant, invariant } from '../../../util'\nimport type { PType } from '../../ptypes'\nimport { IterableIteratorType, NumericLiteralPType, TuplePType, uint64PType } from '../../ptypes'\nimport {\n ARC4EncodedType,\n DynamicArrayConstructor,\n DynamicArrayType,\n StaticArrayConstructor,\n StaticArrayType,\n} from '../../ptypes/arc4-types'\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder } from '../index'\nimport { BuilderBinaryOp, FunctionBuilder, InstanceExpressionBuilder, NodeBuilder } from '../index'\nimport { IterableIteratorExpressionBuilder } from '../iterable-iterator-expression-builder'\nimport { BigIntLiteralExpressionBuilder } from '../literal/big-int-literal-expression-builder'\nimport { UInt64ExpressionBuilder } from '../uint64-expression-builder'\nimport { requireExpressionOfType, requireInstanceBuilder } from '../util'\nimport { parseFunctionArgs } from '../util/arg-parsing'\n\nexport class DynamicArrayConstructorBuilder extends NodeBuilder {\n readonly ptype = DynamicArrayConstructor\n newCall(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const {\n args: [...initialItems],\n ptypes: [elementType],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: 'DynamicArray constructor',\n genericTypeArgs: 1,\n argSpec: (a) => args.map((_) => a.required()),\n })\n codeInvariant(elementType instanceof ARC4EncodedType, 'Element type must be an ARC4 encoded type', sourceLocation)\n const initialItemExprs = initialItems.map((i) => requireExpressionOfType(i, elementType))\n const ptype = new DynamicArrayType({ elementType, sourceLocation })\n return new DynamicArrayExpressionBuilder(\n nodeFactory.newArray({\n values: initialItemExprs,\n wtype: ptype.wtype,\n sourceLocation,\n }),\n ptype,\n )\n }\n}\nexport class StaticArrayConstructorBuilder extends NodeBuilder {\n readonly ptype = StaticArrayConstructor\n newCall(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const {\n args: [...initialItems],\n ptypes: [elementType, arraySize],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: 'DynamicArray constructor',\n genericTypeArgs: 2,\n argSpec: (a) => args.map((_) => a.required()),\n })\n codeInvariant(elementType instanceof ARC4EncodedType, 'Element type must be an ARC4 encoded type', sourceLocation)\n codeInvariant(\n arraySize instanceof NumericLiteralPType,\n `Array size type parameter of ${this.typeDescription} must be a literal number. Inferred type is ${arraySize.name}`,\n sourceLocation,\n )\n const initialItemExprs = initialItems.map((i) => requireExpressionOfType(i, elementType))\n const ptype = new StaticArrayType({ elementType, arraySize: arraySize.literalValue, sourceLocation })\n\n // TODO: We should support passing no args in which case the array should be initialized with 'default' values where\n // default is specific to the element type.\n codeInvariant(\n BigInt(initialItemExprs.length) === arraySize.literalValue,\n `Static array of size ${arraySize.literalValue} must be initialized with ${arraySize.literalValue} values`,\n sourceLocation,\n )\n\n return new StaticArrayExpressionBuilder(\n nodeFactory.newArray({\n values: initialItemExprs,\n wtype: ptype.wtype,\n sourceLocation,\n }),\n ptype,\n )\n }\n}\n\nexport abstract class ArrayExpressionBuilder<\n TArrayType extends DynamicArrayType | StaticArrayType,\n> extends InstanceExpressionBuilder<TArrayType> {\n iterate(sourceLocation: SourceLocation): Expression {\n return this.resolve()\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'at':\n return new ArrayAtFunctionBuilder(this)\n case 'entries':\n return new EntriesFunctionBuilder(this)\n case 'copy':\n return new CopyFunctionBuilder(this)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nclass CopyFunctionBuilder extends FunctionBuilder {\n constructor(private arrayBuilder: ArrayExpressionBuilder<DynamicArrayType | StaticArrayType>) {\n super(arrayBuilder.sourceLocation)\n }\n\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n return instanceEb(\n nodeFactory.copy({\n value: this.arrayBuilder.resolve(),\n sourceLocation,\n }),\n this.arrayBuilder.ptype,\n )\n }\n}\nclass EntriesFunctionBuilder extends FunctionBuilder {\n constructor(private arrayBuilder: ArrayExpressionBuilder<DynamicArrayType | StaticArrayType>) {\n super(arrayBuilder.sourceLocation)\n }\n\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n parseFunctionArgs({ args, typeArgs, callLocation: sourceLocation, argSpec: (_) => [], genericTypeArgs: 0, funcName: 'entries' })\n const iteratorType = IterableIteratorType.parameterise([\n new TuplePType({ items: [uint64PType, this.arrayBuilder.ptype.elementType], immutable: true }),\n ])\n return new IterableIteratorExpressionBuilder(\n nodeFactory.enumeration({\n expr: this.arrayBuilder.iterate(sourceLocation),\n sourceLocation,\n wtype: iteratorType.wtype,\n }),\n iteratorType,\n )\n }\n}\n\nexport class DynamicArrayExpressionBuilder extends ArrayExpressionBuilder<DynamicArrayType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof DynamicArrayType, 'ptype must be instance of DynamicArrayType')\n super(expr, ptype)\n }\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'length':\n return new UInt64ExpressionBuilder(\n nodeFactory.intrinsicCall({\n opCode: 'extract_uint16',\n immediates: [],\n stackArgs: [this._expr, nodeFactory.uInt64Constant({ value: 0n, sourceLocation })],\n sourceLocation,\n wtype: uint64WType,\n }),\n )\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nexport class StaticArrayExpressionBuilder extends ArrayExpressionBuilder<StaticArrayType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof StaticArrayType, 'ptype must be instance of StaticArrayType')\n super(expr, ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'length':\n return new UInt64ExpressionBuilder(nodeFactory.uInt64Constant({ value: this.ptype.arraySize, sourceLocation }))\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nexport class ArrayAtFunctionBuilder extends FunctionBuilder {\n constructor(private arrayBuilder: ArrayExpressionBuilder<StaticArrayType | DynamicArrayType>) {\n super(arrayBuilder.sourceLocation)\n }\n\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [index],\n } = parseFunctionArgs({\n args,\n typeArgs,\n funcName: 'at',\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: (a) => [a.required()],\n })\n\n let indexExpr: Expression\n\n if (index instanceof BigIntLiteralExpressionBuilder) {\n if (this.arrayBuilder.ptype instanceof StaticArrayType) {\n const staticSize = this.arrayBuilder.ptype.arraySize\n if (index.value < -staticSize || index.value >= staticSize) {\n logger.error(index.sourceLocation, 'Index access outside the bounds of the array')\n }\n indexExpr = nodeFactory.uInt64Constant({\n value: index.value < 0 ? staticSize + index.value : index.value,\n sourceLocation: index.sourceLocation,\n })\n } else {\n const dynamicSize = requireInstanceBuilder(this.arrayBuilder.memberAccess('length', sourceLocation))\n const absoluteIndex = nodeFactory.uInt64Constant({\n value: index.value < 0n ? index.value * -1n : index.value,\n sourceLocation: index.sourceLocation,\n })\n if (index.value < 0) {\n indexExpr = dynamicSize.binaryOp(new UInt64ExpressionBuilder(absoluteIndex), BuilderBinaryOp.sub, index.sourceLocation).resolve()\n } else {\n indexExpr = absoluteIndex\n }\n }\n } else {\n indexExpr = index.resolveToPType(uint64PType).resolve()\n }\n return instanceEb(\n nodeFactory.indexExpression({\n base: this.arrayBuilder.resolve(),\n index: indexExpr,\n wtype: this.arrayBuilder.ptype.elementType.wtype,\n sourceLocation,\n }),\n this.arrayBuilder.ptype.elementType,\n )\n }\n}\n","import { intrinsicFactory } from '../../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport { IntegerConstant } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { bigIntToUint8Array, codeInvariant, invariant } from '../../../util'\nimport type { PType } from '../../ptypes'\nimport { biguintPType, NumericLiteralPType, uint64PType } from '../../ptypes'\nimport { UintNType } from '../../ptypes/arc4-types'\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder } from '../index'\nimport { InstanceExpressionBuilder, NodeBuilder } from '../index'\nimport { isValidLiteralForPType } from '../util'\nimport { parseFunctionArgs } from '../util/arg-parsing'\n\nexport class UintNConstructorBuilder extends NodeBuilder {\n get ptype(): undefined {\n return undefined\n }\n newCall(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const {\n ptypes: [size],\n args: [initialValueBuilder],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n funcName: 'UintN constructor',\n argSpec: (a) => [a.optional()],\n callLocation: sourceLocation,\n })\n codeInvariant(\n size instanceof NumericLiteralPType,\n `Generic type of ${this.typeDescription} must be a literal number. Inferred type is ${size.name}`,\n sourceLocation,\n )\n const ptype = new UintNType({ n: size.literalValue })\n\n if (initialValueBuilder === undefined) {\n return new UintNExpressionBuilder(\n nodeFactory.bytesConstant({\n value: new Uint8Array([0]),\n wtype: ptype.wtypeOrThrow,\n sourceLocation: sourceLocation,\n }),\n ptype,\n )\n }\n if (initialValueBuilder.resolvableToPType(uint64PType)) {\n const initialValue = initialValueBuilder.resolveToPType(uint64PType).resolve()\n if (initialValue instanceof IntegerConstant) {\n codeInvariant(isValidLiteralForPType(initialValue.value, ptype), `${initialValue.value} cannot be converted to ${ptype}`)\n return new UintNExpressionBuilder(\n nodeFactory.bytesConstant({\n value: bigIntToUint8Array(initialValue.value),\n wtype: ptype.wtypeOrThrow,\n sourceLocation: sourceLocation,\n }),\n ptype,\n )\n } else {\n return new UintNExpressionBuilder(\n nodeFactory.aRC4Encode({\n wtype: ptype.wtype,\n sourceLocation,\n value: initialValue,\n }),\n ptype,\n )\n }\n }\n\n if (initialValueBuilder.resolvableToPType(biguintPType)) {\n const initialValue = initialValueBuilder.resolveToPType(biguintPType).resolve()\n if (initialValue instanceof IntegerConstant) {\n codeInvariant(isValidLiteralForPType(initialValue.value, ptype), `${initialValue.value} cannot be converted to ${ptype}`)\n return new UintNExpressionBuilder(\n nodeFactory.bytesConstant({\n value: bigIntToUint8Array(initialValue.value),\n wtype: ptype.wtypeOrThrow,\n sourceLocation: sourceLocation,\n }),\n ptype,\n )\n } else {\n return new UintNExpressionBuilder(\n nodeFactory.aRC4Encode({\n wtype: ptype.wtype,\n sourceLocation,\n value: initialValue,\n }),\n ptype,\n )\n }\n }\n\n return super.newCall(args, typeArgs, sourceLocation)\n }\n}\nexport class UintNExpressionBuilder extends InstanceExpressionBuilder<UintNType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof UintNType, 'ptype must be instance of UIntNType')\n super(expr, ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'native':\n if (this.ptype.n <= 64) {\n return instanceEb(intrinsicFactory.btoi({ value: this._expr, sourceLocation }), uint64PType)\n } else {\n return instanceEb(nodeFactory.reinterpretCast({ expr: this._expr, sourceLocation, wtype: biguintPType.wtype }), biguintPType)\n }\n }\n\n return super.memberAccess(name, sourceLocation)\n }\n}\n","import { intrinsicFactory } from '../../awst/intrinsic-factory'\nimport { StringConstant } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError } from '../../errors'\nimport { invariant } from '../../util'\nimport type { PType } from '../ptypes'\nimport { stringPType } from '../ptypes'\nimport type { InstanceBuilder } from './index'\nimport { FunctionBuilder } from './index'\nimport { requireConstantOfType, requireStringConstant } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\nimport { VoidExpressionBuilder } from './void-expression-builder'\n\nexport class AssertFunctionBuilder extends FunctionBuilder {\n call(args: Array<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const [condition, message, ...rest] = args\n if (rest.length !== 0) {\n throw CodeError.unexpectedUnhandledArgs({ sourceLocation })\n }\n\n if (condition === undefined) {\n throw new CodeError('Missing required argument: condition', { sourceLocation })\n }\n let messageStr: string | null = null\n if (message) {\n const messageConst = requireConstantOfType(message, stringPType)\n invariant(messageConst instanceof StringConstant, 'messageConst must be StringConst')\n messageStr = messageConst.value\n }\n\n return new VoidExpressionBuilder(\n intrinsicFactory.assert({\n sourceLocation,\n condition: condition.boolEval(sourceLocation),\n comment: messageStr,\n }),\n )\n }\n}\n\nexport class ErrFunctionBuilder extends FunctionBuilder {\n call(args: Array<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const {\n args: [message],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n argSpec: (a) => [a.optional(stringPType)],\n funcName: 'err',\n })\n\n return new VoidExpressionBuilder(\n intrinsicFactory.err({\n sourceLocation,\n comment: message ? requireStringConstant(message).value : null,\n }),\n )\n }\n}\n","import { intrinsicFactory } from '../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport { BinaryBooleanOperator } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError } from '../../errors'\nimport { codeInvariant } from '../../util'\nimport type { PType } from '../ptypes'\nimport { assertMatchFunction, stringPType, TuplePType, uint64PType } from '../ptypes'\nimport { instanceEb } from '../type-registry'\nimport type { InstanceBuilder } from './index'\nimport { BuilderComparisonOp, NodeBuilder } from './index'\nimport { ObjectLiteralExpressionBuilder } from './literal/object-literal-expression-builder'\nimport { requireBuilderOfType, requireInstanceBuilder, requireStringConstant } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\nimport { VoidExpressionBuilder } from './void-expression-builder'\n\nexport class AssertMatchFunctionBuilder extends NodeBuilder {\n readonly ptype = assertMatchFunction\n\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [subject, tests, comment],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n genericTypeArgs: 1,\n funcName: 'assertMatch',\n argSpec: (a) => [a.required(), a.required(), a.optional(stringPType)],\n })\n\n codeInvariant(tests instanceof ObjectLiteralExpressionBuilder, 'Test conditions must be an object literal', tests.sourceLocation)\n\n const condition = tests.ptype\n .orderedProperties()\n .reduce((acc: Expression | undefined, [propName, propType]): Expression | undefined => {\n const subjectProperty = requireInstanceBuilder(subject.memberAccess(propName, sourceLocation))\n const subjectType = subjectProperty.ptype\n const testProperty = requireInstanceBuilder(tests.memberAccess(propName, sourceLocation))\n if (subjectType.equals(propType)) {\n return combineConditions(\n acc,\n subjectProperty.compare(testProperty, BuilderComparisonOp.eq, sourceLocation).resolve(),\n sourceLocation,\n )\n } else if (testProperty.hasProperty('between')) {\n const range = requireInstanceBuilder(testProperty.memberAccess('between', sourceLocation)).singleEvaluation()\n const rangePType = new TuplePType({ items: [subjectType, subjectType], immutable: true })\n codeInvariant(range.resolvableToPType(rangePType), 'Between range must be of type $')\n const zeroIndex = instanceEb(nodeFactory.uInt64Constant({ value: 0n, sourceLocation }), uint64PType)\n const gte = subjectProperty\n .compare(\n requireBuilderOfType(range.indexAccess(zeroIndex, sourceLocation), subjectType),\n BuilderComparisonOp.gte,\n sourceLocation,\n )\n .resolve()\n\n const oneIndex = instanceEb(nodeFactory.uInt64Constant({ value: 1n, sourceLocation }), uint64PType)\n const lte = subjectProperty\n .compare(\n requireBuilderOfType(range.indexAccess(oneIndex, sourceLocation), subjectType),\n BuilderComparisonOp.lte,\n sourceLocation,\n )\n .resolve()\n\n return combineConditions(acc, combineConditions(lte, gte, sourceLocation), sourceLocation)\n } else {\n const [op, operand] = getComparisonOpAndOperand(testProperty, subjectType)\n return combineConditions(acc, subjectProperty.compare(operand, op, sourceLocation).resolve(), sourceLocation)\n }\n }, undefined)\n\n codeInvariant(condition, 'assertMatch must have at least 1 condition', sourceLocation)\n const commentStr = comment ? requireStringConstant(comment).value : 'assert target is match for conditions'\n return new VoidExpressionBuilder(\n intrinsicFactory.assert({\n condition,\n comment: commentStr,\n sourceLocation,\n }),\n )\n }\n}\n\nfunction getComparisonOpAndOperand(testProperty: InstanceBuilder, targetType: PType): [BuilderComparisonOp, operand: InstanceBuilder] {\n const ops = {\n lessThan: BuilderComparisonOp.lt,\n lessThanEq: BuilderComparisonOp.lte,\n greaterThan: BuilderComparisonOp.gt,\n greaterThanEq: BuilderComparisonOp.gte,\n }\n for (const [prop, op] of Object.entries(ops)) {\n if (testProperty.hasProperty(prop)) {\n return [op, requireBuilderOfType(testProperty.memberAccess(prop, testProperty.sourceLocation), targetType)]\n }\n }\n throw new CodeError('Unsupported assertMatch expression', { sourceLocation: testProperty.sourceLocation })\n}\n\nfunction combineConditions(left: Expression | undefined, right: Expression, sourceLocation: SourceLocation): Expression {\n if (left) {\n return nodeFactory.booleanBinaryOperation({\n left: left,\n right: right,\n op: BinaryBooleanOperator.and,\n sourceLocation,\n })\n }\n return right\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport { EqualityComparison } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { logger } from '../../../logger'\nimport { BooleanExpressionBuilder } from '../boolean-expression-builder'\nimport { BuilderComparisonOp } from '../index'\n\nconst builderCompareToBytesCompare: Record<BuilderComparisonOp, EqualityComparison | undefined> = {\n [BuilderComparisonOp.ne]: EqualityComparison.ne,\n [BuilderComparisonOp.eq]: EqualityComparison.eq,\n [BuilderComparisonOp.lt]: undefined,\n [BuilderComparisonOp.lte]: undefined,\n [BuilderComparisonOp.gt]: undefined,\n [BuilderComparisonOp.gte]: undefined,\n}\n\nexport function compareBytes(\n left: Expression,\n right: Expression,\n op: BuilderComparisonOp,\n sourceLocation: SourceLocation,\n typeDescription: string,\n) {\n const equalityOp = builderCompareToBytesCompare[op]\n if (equalityOp === undefined) {\n logger.error(sourceLocation, `${typeDescription} does not support the '${op}' operator`)\n }\n return new BooleanExpressionBuilder(\n nodeFactory.bytesComparisonExpression({\n sourceLocation,\n operator: equalityOp ?? EqualityComparison.eq,\n lhs: left,\n rhs: right,\n }),\n )\n}\n","import type { awst } from '../../awst'\nimport { wtypes } from '../../awst'\nimport { intrinsicFactory } from '../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport { BytesBinaryOperator, BytesConstant, BytesEncoding, BytesUnaryOperator, StringConstant } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { stringWType } from '../../awst/wtypes'\nimport { CodeError, wrapInCodeError } from '../../errors'\nimport { logger } from '../../logger'\nimport { base32ToUint8Array, base64ToUint8Array, hexToUint8Array, uint8ArrayToUtf8, utf8ToUint8Array } from '../../util'\nimport type { InstanceType, PType } from '../ptypes'\nimport { BytesFunction, bytesPType, NumericLiteralPType, stringPType, uint64PType } from '../ptypes'\nimport { instanceEb } from '../type-registry'\nimport type { BuilderComparisonOp, InstanceBuilder, NodeBuilder } from './index'\nimport { BuilderUnaryOp, FunctionBuilder, InstanceExpressionBuilder, ParameterlessFunctionBuilder } from './index'\nimport { LiteralExpressionBuilder } from './literal-expression-builder'\nimport { BigIntLiteralExpressionBuilder } from './literal/big-int-literal-expression-builder'\nimport { StringExpressionBuilder } from './string-expression-builder'\nimport { UInt64ExpressionBuilder } from './uint64-expression-builder'\nimport { requireExpressionOfType, requireExpressionsOfType } from './util'\nimport { compareBytes } from './util/compare-bytes'\n\nexport class BytesFunctionBuilder extends FunctionBuilder {\n readonly ptype = BytesFunction\n\n taggedTemplate(head: string, spans: ReadonlyArray<readonly [InstanceBuilder, string]>, sourceLocation: SourceLocation): InstanceBuilder {\n let result: awst.Expression = nodeFactory.bytesConstant({\n sourceLocation,\n encoding: BytesEncoding.utf8,\n value: utf8ToUint8Array(head),\n })\n for (const [value, joiningText] of spans) {\n const valueBytes = value.ptype?.equals(stringPType) ? value.resolve() : value.toBytes(sourceLocation)\n result = nodeFactory.bytesBinaryOperation({\n left: result,\n right: valueBytes,\n op: BytesBinaryOperator.add,\n sourceLocation,\n wtype: wtypes.bytesWType,\n })\n if (joiningText) {\n result = nodeFactory.bytesBinaryOperation({\n left: result,\n right: nodeFactory.bytesConstant({\n sourceLocation,\n value: utf8ToUint8Array(joiningText),\n encoding: BytesEncoding.utf8,\n }),\n op: BytesBinaryOperator.add,\n sourceLocation,\n wtype: wtypes.bytesWType,\n })\n }\n }\n\n return new BytesExpressionBuilder(result)\n }\n\n call(args: Array<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n if (args.length === 0) {\n return new BytesExpressionBuilder(\n nodeFactory.bytesConstant({\n sourceLocation,\n value: new Uint8Array(),\n }),\n )\n }\n\n const [arg0, ...rest] = args\n if (rest.length) {\n throw CodeError.unexpectedUnhandledArgs({ sourceLocation })\n }\n if (arg0 instanceof LiteralExpressionBuilder) {\n return arg0.resolveToPType(bytesPType)\n } else {\n if (arg0.ptype?.equals(stringPType)) {\n return new BytesExpressionBuilder(arg0.toBytes(sourceLocation))\n }\n throw CodeError.unexpectedUnhandledArgs({ sourceLocation })\n }\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'fromHex':\n return new FromEncodingBuilder(sourceLocation, hexToUint8Array, BytesEncoding.base16)\n case 'fromBase32':\n return new FromEncodingBuilder(sourceLocation, base32ToUint8Array, BytesEncoding.base32)\n case 'fromBase64':\n return new FromEncodingBuilder(sourceLocation, base64ToUint8Array, BytesEncoding.base64)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nclass FromEncodingBuilder extends FunctionBuilder {\n constructor(\n sourceLocation: SourceLocation,\n private decodeLiteral: (value: string) => Uint8Array,\n private encoding: BytesEncoding,\n ) {\n super(sourceLocation)\n }\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const [value] = requireExpressionsOfType(args, [stringPType], sourceLocation)\n\n if (value instanceof StringConstant) {\n return new BytesExpressionBuilder(\n nodeFactory.bytesConstant({\n value: wrapInCodeError(() => this.decodeLiteral(value.value), value.sourceLocation),\n encoding: this.encoding,\n sourceLocation,\n }),\n )\n }\n throw CodeError.expectedCompileTimeConstant({ sourceLocation })\n }\n}\n\nexport class BytesExpressionBuilder extends InstanceExpressionBuilder<InstanceType> {\n constructor(expr: Expression) {\n super(expr, bytesPType)\n }\n prefixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n switch (op) {\n case BuilderUnaryOp.bit_inv:\n logger.error(\n sourceLocation,\n `The '~' ${this.typeDescription} operator coerces the target value to a number type. Use {bytes expression}.bitwiseInvert() instead`,\n )\n return new BigIntLiteralExpressionBuilder(0n, new NumericLiteralPType({ literalValue: 0n }), sourceLocation)\n }\n return super.prefixUnaryOp(op, sourceLocation)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'length':\n return new UInt64ExpressionBuilder(\n intrinsicFactory.bytesLen({\n value: this._expr,\n sourceLocation,\n }),\n )\n case 'bitwiseInvert':\n return new BytesInvertBuilder(this._expr)\n case 'toString':\n return new ToStringBuilder(this._expr)\n case 'concat':\n return new ConcatExpressionBuilder(this._expr)\n case 'at':\n return new BytesAtBuilder(this._expr)\n }\n return super.memberAccess(name, sourceLocation)\n }\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n return compareBytes(this._expr, requireExpressionOfType(other, bytesPType), op, sourceLocation, this.typeDescription)\n }\n boolEval(sourceLocation: SourceLocation, negate: boolean): awst.Expression {\n return new UInt64ExpressionBuilder(\n intrinsicFactory.bytesLen({\n value: this._expr,\n sourceLocation,\n }),\n ).boolEval(sourceLocation, negate)\n }\n\n toBytes(): awst.Expression {\n return this.resolve()\n }\n\n toString(sourceLocation: SourceLocation): Expression {\n if (this._expr instanceof BytesConstant) {\n return nodeFactory.stringConstant({\n value: uint8ArrayToUtf8(this._expr.value),\n sourceLocation: this._expr.sourceLocation,\n })\n }\n return nodeFactory.reinterpretCast({\n expr: this._expr,\n sourceLocation,\n wtype: stringWType,\n })\n }\n}\n\nexport class ConcatExpressionBuilder extends FunctionBuilder {\n constructor(private expr: awst.Expression) {\n super(expr.sourceLocation)\n }\n\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation) {\n const [other] = requireExpressionsOfType(args, [bytesPType], sourceLocation)\n return new BytesExpressionBuilder(\n intrinsicFactory.bytesConcat({\n left: this.expr,\n right: other,\n sourceLocation: sourceLocation,\n }),\n )\n }\n}\n\nexport class BytesInvertBuilder extends ParameterlessFunctionBuilder {\n constructor(private expr: awst.Expression) {\n super(\n expr,\n (expr, sourceLocation) =>\n new BytesExpressionBuilder(\n nodeFactory.bytesUnaryOperation({\n wtype: wtypes.bytesWType,\n expr: this.expr,\n op: BytesUnaryOperator.bitInvert,\n sourceLocation,\n }),\n ),\n )\n }\n}\n\nexport class BytesSliceBuilder extends FunctionBuilder {\n constructor(private expr: awst.Expression) {\n super(expr.sourceLocation)\n }\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation) {\n // TODO: Needs to do range check on target and handle negative values\n // TODO: Also handle single arg\n const [start, stop] = requireExpressionsOfType(args, [uint64PType, uint64PType], sourceLocation)\n return new BytesExpressionBuilder(\n nodeFactory.sliceExpression({\n base: this.expr,\n sourceLocation: sourceLocation,\n beginIndex: start,\n endIndex: stop,\n wtype: wtypes.bytesWType,\n }),\n )\n }\n}\n\nexport class ToStringBuilder extends ParameterlessFunctionBuilder {\n constructor(private expr: awst.Expression) {\n super(\n expr,\n (expr, sourceLocation) =>\n new StringExpressionBuilder(\n nodeFactory.reinterpretCast({\n wtype: wtypes.stringWType,\n expr: this.expr,\n sourceLocation,\n }),\n ),\n )\n }\n}\n\nexport class BytesAtBuilder extends FunctionBuilder {\n constructor(private expr: awst.Expression) {\n super(expr.sourceLocation)\n }\n\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation) {\n const [index] = requireExpressionsOfType(args, [uint64PType], sourceLocation)\n // TODO: Needs to do range check on target and handle negative values\n return instanceEb(\n nodeFactory.sliceExpression({\n base: this.expr,\n sourceLocation: sourceLocation,\n beginIndex: index,\n endIndex: nodeFactory.uInt64Constant({ value: 1n, sourceLocation }),\n wtype: wtypes.bytesWType,\n }),\n bytesPType,\n )\n }\n}\n","import { nodeFactory } from '../../awst/node-factory'\nimport { PuyaLibFunction } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { voidWType } from '../../awst/wtypes'\nimport type { PType } from '../ptypes'\nimport { ensureBudgetFunction, opUpFeeSourceType, uint64PType } from '../ptypes'\nimport type { InstanceBuilder, NodeBuilder } from './index'\nimport { FunctionBuilder } from './index'\nimport { requireExpressionOfType } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\nimport { VoidExpressionBuilder } from './void-expression-builder'\n\nexport class EnsureBudgetFunctionBuilder extends FunctionBuilder {\n readonly ptype = ensureBudgetFunction\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [budget, feeSource],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: this.ptype.name,\n genericTypeArgs: 0,\n argSpec: (a) => [a.required(uint64PType), a.optional(opUpFeeSourceType.memberType)],\n })\n\n return new VoidExpressionBuilder(\n nodeFactory.puyaLibCall({\n func: PuyaLibFunction.ensureBudget,\n args: [\n nodeFactory.callArg({\n name: null,\n value: budget.resolve(),\n }),\n nodeFactory.callArg({\n name: null,\n value: feeSource\n ? requireExpressionOfType(feeSource, opUpFeeSourceType.memberType)\n : nodeFactory.uInt64Constant({ value: 0n, sourceLocation }),\n }),\n ],\n sourceLocation,\n wtype: voidWType,\n }),\n )\n }\n}\n","import { nodeFactory } from '../../awst/node-factory'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError } from '../../errors'\nimport { invariant } from '../../util'\nimport type { PType } from '../ptypes'\nimport { IntrinsicEnumType } from '../ptypes'\nimport { NodeBuilder } from './index'\nimport { StringExpressionBuilder } from './string-expression-builder'\n\nexport class IntrinsicEnumBuilder extends NodeBuilder {\n public readonly ptype: IntrinsicEnumType\n constructor(sourceLocation: SourceLocation, ptype: PType) {\n super(sourceLocation)\n invariant(ptype instanceof IntrinsicEnumType, 'ptype must be instance of IntrinsicEnumType')\n this.ptype = ptype\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n const matchedMember = this.ptype.members.find(([memberName]) => memberName === name)\n if (matchedMember) {\n return new StringExpressionBuilder(\n nodeFactory.stringConstant({\n value: matchedMember[1],\n sourceLocation,\n }),\n )\n }\n throw new CodeError(`Member ${name} does not exist on ${this.typeDescription}`, { sourceLocation })\n }\n}\n","import type { awst } from '../../awst'\nimport { wtypes } from '../../awst'\nimport { intrinsicFactory } from '../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError, InternalError, throwError } from '../../errors'\nimport type { PType } from '../ptypes'\nimport type { InstanceBuilder } from './index'\nimport { FunctionBuilder } from './index'\nimport { requireInstanceBuilder } from './util'\nimport { VoidExpressionBuilder } from './void-expression-builder'\n\nexport class LogFunctionBuilder extends FunctionBuilder {\n call(args: Array<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const argsExps = args.map((a) => requireInstanceBuilder(a))\n\n let logBytes: awst.Expression\n if (argsExps.length === 0) {\n throw new CodeError(`log expects at least 1 argument`, { sourceLocation })\n } else if (argsExps.length === 1) {\n logBytes = argsExps[0].toBytes(sourceLocation)\n } else {\n logBytes =\n argsExps.reduce(\n (a: Expression | undefined, b): Expression | undefined =>\n a === undefined\n ? b.toBytes(sourceLocation)\n : intrinsicFactory.bytesConcat({ left: a, right: b.toBytes(sourceLocation), sourceLocation }),\n undefined,\n ) ?? throwError(new InternalError('Should never get here given previous conditions', { sourceLocation }))\n }\n\n return new VoidExpressionBuilder(\n nodeFactory.intrinsicCall({\n sourceLocation: sourceLocation,\n immediates: [],\n stackArgs: [logBytes],\n opCode: 'log',\n wtype: wtypes.voidWType,\n }),\n )\n }\n}\n","import type { SourceLocation } from '../../awst/source-location'\nimport { codeInvariant, invariant } from '../../util'\nimport type { PType } from '../ptypes'\nimport { NamespacePType } from '../ptypes'\nimport { SymbolName } from '../symbol-name'\nimport { typeRegistry } from '../type-registry'\nimport { NodeBuilder } from './index'\n\nexport class NamespaceBuilder extends NodeBuilder {\n private readonly _ptype: NamespacePType\n constructor(sourceLocation: SourceLocation, ptype: PType) {\n super(sourceLocation)\n invariant(ptype instanceof NamespacePType, 'NamespaceBuilder must be constructed with NamespacePType')\n this._ptype = ptype\n }\n\n get ptype(): PType {\n return this._ptype\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n const symbolName = new SymbolName({ module: this._ptype.module, name })\n\n const type = typeRegistry.tryResolveSingletonName(symbolName)\n codeInvariant(type, `${name} does not exist in namespace ${this._ptype}`)\n\n return typeRegistry.getSingletonEb(type, sourceLocation)\n }\n}\n","/* THIS FILE IS GENERATED BY ~/scripts/generate-op-metadata.ts - DO NOT MODIFY DIRECTLY */\nimport * as ptypes from './ptypes'\nimport type { Expression } from '../awst/nodes'\n\nexport type ImmediateArgMapping = {\n name: string\n ptypes: ptypes.PType[]\n}\n\nexport type StackArg = {\n name: string\n ptypes: ptypes.PType[]\n}\n\nexport type Signature = {\n argNames: string[]\n immediateArgs: Array<ImmediateArgMapping | bigint | string>\n stackArgs: Array<StackArg | Expression>\n returnType: ptypes.PType\n}\n\nexport type IntrinsicOpMapping = {\n type: 'op-mapping'\n op: string\n signatures: Signature[]\n}\nexport type IntrinsicOpGrouping = {\n type: 'op-grouping'\n name: string\n ops: Record<string, IntrinsicOpMapping>\n}\nexport const OP_METADATA: Record<string, IntrinsicOpMapping | IntrinsicOpGrouping> = {\n AcctParams: {\n type: 'op-grouping',\n name: 'AcctParams',\n ops: {\n acctBalance: {\n type: 'op-mapping',\n op: 'acct_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AcctBalance'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n acctMinBalance: {\n type: 'op-mapping',\n op: 'acct_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AcctMinBalance'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n acctAuthAddr: {\n type: 'op-mapping',\n op: 'acct_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AcctAuthAddr'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.accountPType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n acctTotalNumUint: {\n type: 'op-mapping',\n op: 'acct_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AcctTotalNumUint'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n acctTotalNumByteSlice: {\n type: 'op-mapping',\n op: 'acct_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AcctTotalNumByteSlice'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n acctTotalExtraAppPages: {\n type: 'op-mapping',\n op: 'acct_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AcctTotalExtraAppPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n acctTotalAppsCreated: {\n type: 'op-mapping',\n op: 'acct_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AcctTotalAppsCreated'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n acctTotalAppsOptedIn: {\n type: 'op-mapping',\n op: 'acct_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AcctTotalAppsOptedIn'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n acctTotalAssetsCreated: {\n type: 'op-mapping',\n op: 'acct_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AcctTotalAssetsCreated'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n acctTotalAssets: {\n type: 'op-mapping',\n op: 'acct_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AcctTotalAssets'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n acctTotalBoxes: {\n type: 'op-mapping',\n op: 'acct_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AcctTotalBoxes'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n acctTotalBoxBytes: {\n type: 'op-mapping',\n op: 'acct_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AcctTotalBoxBytes'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n },\n },\n addw: {\n type: 'op-mapping',\n op: 'addw',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.uint64PType], immutable: true }),\n },\n ],\n },\n AppGlobal: {\n type: 'op-grouping',\n name: 'AppGlobal',\n ops: {\n delete: {\n type: 'op-mapping',\n op: 'app_global_del',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }], returnType: ptypes.voidPType },\n ],\n },\n getBytes: {\n type: 'op-mapping',\n op: 'app_global_get',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }], returnType: ptypes.bytesPType },\n ],\n },\n getUint64: {\n type: 'op-mapping',\n op: 'app_global_get',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }], returnType: ptypes.uint64PType },\n ],\n },\n getExBytes: {\n type: 'op-mapping',\n op: 'app_global_get_ex',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.applicationPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: new ptypes.TuplePType({ items: [ptypes.bytesPType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n getExUint64: {\n type: 'op-mapping',\n op: 'app_global_get_ex',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.applicationPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n put: {\n type: 'op-mapping',\n op: 'app_global_put',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType, ptypes.bytesPType] },\n ],\n returnType: ptypes.voidPType,\n },\n ],\n },\n },\n },\n AppLocal: {\n type: 'op-grouping',\n name: 'AppLocal',\n ops: {\n delete: {\n type: 'op-mapping',\n op: 'app_local_del',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.voidPType,\n },\n ],\n },\n getBytes: {\n type: 'op-mapping',\n op: 'app_local_get',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n getUint64: {\n type: 'op-mapping',\n op: 'app_local_get',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n getExBytes: {\n type: 'op-mapping',\n op: 'app_local_get_ex',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.applicationPType] },\n { name: 'c', ptypes: [ptypes.bytesPType] },\n ],\n returnType: new ptypes.TuplePType({ items: [ptypes.bytesPType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n getExUint64: {\n type: 'op-mapping',\n op: 'app_local_get_ex',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.applicationPType] },\n { name: 'c', ptypes: [ptypes.bytesPType] },\n ],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n put: {\n type: 'op-mapping',\n op: 'app_local_put',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n { name: 'c', ptypes: [ptypes.uint64PType, ptypes.bytesPType] },\n ],\n returnType: ptypes.voidPType,\n },\n ],\n },\n },\n },\n appOptedIn: {\n type: 'op-mapping',\n op: 'app_opted_in',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.applicationPType] },\n ],\n returnType: ptypes.boolPType,\n },\n ],\n },\n AppParams: {\n type: 'op-grouping',\n name: 'AppParams',\n ops: {\n appApprovalProgram: {\n type: 'op-mapping',\n op: 'app_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AppApprovalProgram'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.applicationPType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.bytesPType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n appClearStateProgram: {\n type: 'op-mapping',\n op: 'app_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AppClearStateProgram'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.applicationPType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.bytesPType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n appGlobalNumUint: {\n type: 'op-mapping',\n op: 'app_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AppGlobalNumUint'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.applicationPType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n appGlobalNumByteSlice: {\n type: 'op-mapping',\n op: 'app_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AppGlobalNumByteSlice'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.applicationPType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n appLocalNumUint: {\n type: 'op-mapping',\n op: 'app_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AppLocalNumUint'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.applicationPType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n appLocalNumByteSlice: {\n type: 'op-mapping',\n op: 'app_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AppLocalNumByteSlice'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.applicationPType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n appExtraProgramPages: {\n type: 'op-mapping',\n op: 'app_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AppExtraProgramPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.applicationPType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n appCreator: {\n type: 'op-mapping',\n op: 'app_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AppCreator'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.applicationPType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.accountPType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n appAddress: {\n type: 'op-mapping',\n op: 'app_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AppAddress'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.applicationPType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.accountPType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n },\n },\n arg: {\n type: 'op-mapping',\n op: 'args',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }], returnType: ptypes.bytesPType },\n ],\n },\n AssetHolding: {\n type: 'op-grouping',\n name: 'AssetHolding',\n ops: {\n assetBalance: {\n type: 'op-mapping',\n op: 'asset_holding_get',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['AssetBalance'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.assetPType] },\n ],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n assetFrozen: {\n type: 'op-mapping',\n op: 'asset_holding_get',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['AssetFrozen'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.assetPType] },\n ],\n returnType: new ptypes.TuplePType({ items: [ptypes.boolPType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n },\n },\n AssetParams: {\n type: 'op-grouping',\n name: 'AssetParams',\n ops: {\n assetTotal: {\n type: 'op-mapping',\n op: 'asset_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetTotal'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n assetDecimals: {\n type: 'op-mapping',\n op: 'asset_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetDecimals'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n assetDefaultFrozen: {\n type: 'op-mapping',\n op: 'asset_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetDefaultFrozen'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.boolPType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n assetUnitName: {\n type: 'op-mapping',\n op: 'asset_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetUnitName'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.bytesPType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n assetName: {\n type: 'op-mapping',\n op: 'asset_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetName'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.bytesPType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n assetUrl: {\n type: 'op-mapping',\n op: 'asset_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetURL'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.bytesPType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n assetMetadataHash: {\n type: 'op-mapping',\n op: 'asset_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetMetadataHash'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.bytesPType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n assetManager: {\n type: 'op-mapping',\n op: 'asset_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetManager'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.accountPType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n assetReserve: {\n type: 'op-mapping',\n op: 'asset_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetReserve'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.accountPType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n assetFreeze: {\n type: 'op-mapping',\n op: 'asset_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetFreeze'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.accountPType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n assetClawback: {\n type: 'op-mapping',\n op: 'asset_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetClawback'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.accountPType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n assetCreator: {\n type: 'op-mapping',\n op: 'asset_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetCreator'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.accountPType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n },\n },\n balance: {\n type: 'op-mapping',\n op: 'balance',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: [],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n base64Decode: {\n type: 'op-mapping',\n op: 'base64_decode',\n signatures: [\n {\n argNames: ['e', 'a'],\n immediateArgs: [{ name: 'e', ptypes: [ptypes.base64PType] }],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n bitLength: {\n type: 'op-mapping',\n op: 'bitlen',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: [],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType, ptypes.bytesPType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n Block: {\n type: 'op-grouping',\n name: 'Block',\n ops: {\n blkSeed: {\n type: 'op-mapping',\n op: 'block',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['BlkSeed'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n blkTimestamp: {\n type: 'op-mapping',\n op: 'block',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['BlkTimestamp'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n },\n },\n Box: {\n type: 'op-grouping',\n name: 'Box',\n ops: {\n create: {\n type: 'op-mapping',\n op: 'box_create',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.boolPType,\n },\n ],\n },\n delete: {\n type: 'op-mapping',\n op: 'box_del',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }], returnType: ptypes.boolPType },\n ],\n },\n extract: {\n type: 'op-mapping',\n op: 'box_extract',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n get: {\n type: 'op-mapping',\n op: 'box_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: [],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.bytesPType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n length: {\n type: 'op-mapping',\n op: 'box_len',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: [],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n put: {\n type: 'op-mapping',\n op: 'box_put',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.voidPType,\n },\n ],\n },\n replace: {\n type: 'op-mapping',\n op: 'box_replace',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.voidPType,\n },\n ],\n },\n resize: {\n type: 'op-mapping',\n op: 'box_resize',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.voidPType,\n },\n ],\n },\n splice: {\n type: 'op-mapping',\n op: 'box_splice',\n signatures: [\n {\n argNames: ['a', 'b', 'c', 'd'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.uint64PType] },\n { name: 'd', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.voidPType,\n },\n ],\n },\n },\n },\n bsqrt: {\n type: 'op-mapping',\n op: 'bsqrt',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.biguintPType] }], returnType: ptypes.biguintPType },\n ],\n },\n btoi: {\n type: 'op-mapping',\n op: 'btoi',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }], returnType: ptypes.uint64PType },\n ],\n },\n bzero: {\n type: 'op-mapping',\n op: 'bzero',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }], returnType: ptypes.bytesPType },\n ],\n },\n concat: {\n type: 'op-mapping',\n op: 'concat',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n divmodw: {\n type: 'op-mapping',\n op: 'divmodw',\n signatures: [\n {\n argNames: ['a', 'b', 'c', 'd'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.uint64PType] },\n { name: 'd', ptypes: [ptypes.uint64PType] },\n ],\n returnType: new ptypes.TuplePType({\n items: [ptypes.uint64PType, ptypes.uint64PType, ptypes.uint64PType, ptypes.uint64PType],\n immutable: true,\n }),\n },\n ],\n },\n divw: {\n type: 'op-mapping',\n op: 'divw',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n EllipticCurve: {\n type: 'op-grouping',\n name: 'EllipticCurve',\n ops: {\n add: {\n type: 'op-mapping',\n op: 'ec_add',\n signatures: [\n {\n argNames: ['g', 'a', 'b'],\n immediateArgs: [{ name: 'g', ptypes: [ptypes.ecPType] }],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n mapTo: {\n type: 'op-mapping',\n op: 'ec_map_to',\n signatures: [\n {\n argNames: ['g', 'a'],\n immediateArgs: [{ name: 'g', ptypes: [ptypes.ecPType] }],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n scalarMulMulti: {\n type: 'op-mapping',\n op: 'ec_multi_scalar_mul',\n signatures: [\n {\n argNames: ['g', 'a', 'b'],\n immediateArgs: [{ name: 'g', ptypes: [ptypes.ecPType] }],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n pairingCheck: {\n type: 'op-mapping',\n op: 'ec_pairing_check',\n signatures: [\n {\n argNames: ['g', 'a', 'b'],\n immediateArgs: [{ name: 'g', ptypes: [ptypes.ecPType] }],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.boolPType,\n },\n ],\n },\n scalarMul: {\n type: 'op-mapping',\n op: 'ec_scalar_mul',\n signatures: [\n {\n argNames: ['g', 'a', 'b'],\n immediateArgs: [{ name: 'g', ptypes: [ptypes.ecPType] }],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n subgroupCheck: {\n type: 'op-mapping',\n op: 'ec_subgroup_check',\n signatures: [\n {\n argNames: ['g', 'a'],\n immediateArgs: [{ name: 'g', ptypes: [ptypes.ecPType] }],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.boolPType,\n },\n ],\n },\n },\n },\n ecdsaPkDecompress: {\n type: 'op-mapping',\n op: 'ecdsa_pk_decompress',\n signatures: [\n {\n argNames: ['v', 'a'],\n immediateArgs: [{ name: 'v', ptypes: [ptypes.ecdsaPType] }],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.bytesPType, ptypes.bytesPType], immutable: true }),\n },\n ],\n },\n ecdsaPkRecover: {\n type: 'op-mapping',\n op: 'ecdsa_pk_recover',\n signatures: [\n {\n argNames: ['v', 'a', 'b', 'c', 'd'],\n immediateArgs: [{ name: 'v', ptypes: [ptypes.ecdsaPType] }],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.bytesPType] },\n { name: 'd', ptypes: [ptypes.bytesPType] },\n ],\n returnType: new ptypes.TuplePType({ items: [ptypes.bytesPType, ptypes.bytesPType], immutable: true }),\n },\n ],\n },\n ecdsaVerify: {\n type: 'op-mapping',\n op: 'ecdsa_verify',\n signatures: [\n {\n argNames: ['v', 'a', 'b', 'c', 'd', 'e'],\n immediateArgs: [{ name: 'v', ptypes: [ptypes.ecdsaPType] }],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n { name: 'c', ptypes: [ptypes.bytesPType] },\n { name: 'd', ptypes: [ptypes.bytesPType] },\n { name: 'e', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.boolPType,\n },\n ],\n },\n ed25519verify: {\n type: 'op-mapping',\n op: 'ed25519verify',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n { name: 'c', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.boolPType,\n },\n ],\n },\n ed25519verifyBare: {\n type: 'op-mapping',\n op: 'ed25519verify_bare',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n { name: 'c', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.boolPType,\n },\n ],\n },\n exp: {\n type: 'op-mapping',\n op: 'exp',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n expw: {\n type: 'op-mapping',\n op: 'expw',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.uint64PType], immutable: true }),\n },\n ],\n },\n extract: {\n type: 'op-mapping',\n op: 'extract3',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n extractUint16: {\n type: 'op-mapping',\n op: 'extract_uint16',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n extractUint32: {\n type: 'op-mapping',\n op: 'extract_uint32',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n extractUint64: {\n type: 'op-mapping',\n op: 'extract_uint64',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n gaid: {\n type: 'op-mapping',\n op: 'gaids',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }], returnType: ptypes.uint64PType },\n ],\n },\n getBit: {\n type: 'op-mapping',\n op: 'getbit',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType, ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n getByte: {\n type: 'op-mapping',\n op: 'getbyte',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n GITxn: {\n type: 'op-grouping',\n name: 'GITxn',\n ops: {\n sender: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Sender'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n fee: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Fee'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n firstValid: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'FirstValid'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n firstValidTime: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'FirstValidTime'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n lastValid: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'LastValid'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n note: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Note'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n lease: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Lease'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n receiver: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Receiver'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n amount: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Amount'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n closeRemainderTo: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'CloseRemainderTo'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n votePk: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'VotePK'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n selectionPk: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'SelectionPK'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n voteFirst: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'VoteFirst'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n voteLast: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'VoteLast'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n voteKeyDilution: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'VoteKeyDilution'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n type: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Type'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n typeEnum: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'TypeEnum'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n xferAsset: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'XferAsset'],\n stackArgs: [],\n returnType: ptypes.assetPType,\n },\n ],\n },\n assetAmount: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'AssetAmount'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n assetSender: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'AssetSender'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n assetReceiver: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'AssetReceiver'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n assetCloseTo: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'AssetCloseTo'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n groupIndex: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'GroupIndex'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n txId: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'TxID'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n applicationId: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ApplicationID'],\n stackArgs: [],\n returnType: ptypes.applicationPType,\n },\n ],\n },\n onCompletion: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'OnCompletion'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n applicationArgs: {\n type: 'op-mapping',\n op: 'gitxnas',\n signatures: [\n {\n argNames: ['t', 'a'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ApplicationArgs'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numAppArgs: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'NumAppArgs'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n accounts: {\n type: 'op-mapping',\n op: 'gitxnas',\n signatures: [\n {\n argNames: ['t', 'a'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Accounts'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n numAccounts: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'NumAccounts'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n approvalProgram: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ApprovalProgram'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n clearStateProgram: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ClearStateProgram'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n rekeyTo: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'RekeyTo'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n configAsset: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAsset'],\n stackArgs: [],\n returnType: ptypes.assetPType,\n },\n ],\n },\n configAssetTotal: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetTotal'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n configAssetDecimals: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetDecimals'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n configAssetDefaultFrozen: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetDefaultFrozen'],\n stackArgs: [],\n returnType: ptypes.boolPType,\n },\n ],\n },\n configAssetUnitName: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetUnitName'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n configAssetName: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetName'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n configAssetUrl: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetURL'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n configAssetMetadataHash: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetMetadataHash'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n configAssetManager: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetManager'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n configAssetReserve: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetReserve'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n configAssetFreeze: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetFreeze'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n configAssetClawback: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetClawback'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n freezeAsset: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'FreezeAsset'],\n stackArgs: [],\n returnType: ptypes.assetPType,\n },\n ],\n },\n freezeAssetAccount: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'FreezeAssetAccount'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n freezeAssetFrozen: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'FreezeAssetFrozen'],\n stackArgs: [],\n returnType: ptypes.boolPType,\n },\n ],\n },\n assets: {\n type: 'op-mapping',\n op: 'gitxnas',\n signatures: [\n {\n argNames: ['t', 'a'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Assets'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.assetPType,\n },\n ],\n },\n numAssets: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'NumAssets'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n applications: {\n type: 'op-mapping',\n op: 'gitxnas',\n signatures: [\n {\n argNames: ['t', 'a'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Applications'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.applicationPType,\n },\n ],\n },\n numApplications: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'NumApplications'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n globalNumUint: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'GlobalNumUint'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n globalNumByteSlice: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'GlobalNumByteSlice'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n localNumUint: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'LocalNumUint'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n localNumByteSlice: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'LocalNumByteSlice'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n extraProgramPages: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ExtraProgramPages'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n nonparticipation: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Nonparticipation'],\n stackArgs: [],\n returnType: ptypes.boolPType,\n },\n ],\n },\n logs: {\n type: 'op-mapping',\n op: 'gitxnas',\n signatures: [\n {\n argNames: ['t', 'a'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Logs'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numLogs: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'NumLogs'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n createdAssetId: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'CreatedAssetID'],\n stackArgs: [],\n returnType: ptypes.assetPType,\n },\n ],\n },\n createdApplicationId: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'CreatedApplicationID'],\n stackArgs: [],\n returnType: ptypes.applicationPType,\n },\n ],\n },\n lastLog: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'LastLog'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n stateProofPk: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'StateProofPK'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n approvalProgramPages: {\n type: 'op-mapping',\n op: 'gitxnas',\n signatures: [\n {\n argNames: ['t', 'a'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ApprovalProgramPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numApprovalProgramPages: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'NumApprovalProgramPages'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n clearStateProgramPages: {\n type: 'op-mapping',\n op: 'gitxnas',\n signatures: [\n {\n argNames: ['t', 'a'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ClearStateProgramPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numClearStateProgramPages: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'NumClearStateProgramPages'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n },\n },\n gloadBytes: {\n type: 'op-mapping',\n op: 'gloadss',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n gloadUint64: {\n type: 'op-mapping',\n op: 'gloadss',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n Global: {\n type: 'op-grouping',\n name: 'Global',\n ops: {\n minTxnFee: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['MinTxnFee'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n minBalance: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['MinBalance'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n maxTxnLife: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['MaxTxnLife'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n zeroAddress: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['ZeroAddress'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n groupSize: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['GroupSize'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n logicSigVersion: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['LogicSigVersion'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n round: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['Round'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n latestTimestamp: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['LatestTimestamp'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n currentApplicationId: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['CurrentApplicationID'], stackArgs: [], returnType: ptypes.applicationPType }],\n },\n creatorAddress: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['CreatorAddress'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n currentApplicationAddress: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['CurrentApplicationAddress'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n groupId: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['GroupID'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n opcodeBudget: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['OpcodeBudget'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n callerApplicationId: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['CallerApplicationID'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n callerApplicationAddress: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['CallerApplicationAddress'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n assetCreateMinBalance: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['AssetCreateMinBalance'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n assetOptInMinBalance: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['AssetOptInMinBalance'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n genesisHash: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['GenesisHash'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n },\n },\n GTxn: {\n type: 'op-grouping',\n name: 'GTxn',\n ops: {\n sender: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Sender'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n fee: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Fee'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n firstValid: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'FirstValid'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n firstValidTime: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'FirstValidTime'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n lastValid: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'LastValid'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n note: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Note'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n lease: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Lease'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n receiver: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Receiver'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n amount: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Amount'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n closeRemainderTo: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'CloseRemainderTo'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n votePk: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'VotePK'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n selectionPk: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'SelectionPK'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n voteFirst: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'VoteFirst'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n voteLast: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'VoteLast'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n voteKeyDilution: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'VoteKeyDilution'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n type: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Type'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n typeEnum: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'TypeEnum'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n xferAsset: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'XferAsset'],\n stackArgs: [],\n returnType: ptypes.assetPType,\n },\n ],\n },\n assetAmount: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'AssetAmount'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n assetSender: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'AssetSender'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n assetReceiver: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'AssetReceiver'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n assetCloseTo: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'AssetCloseTo'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n groupIndex: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'GroupIndex'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n txId: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'TxID'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n applicationId: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ApplicationID'],\n stackArgs: [],\n returnType: ptypes.applicationPType,\n },\n ],\n },\n onCompletion: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'OnCompletion'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n applicationArgs: {\n type: 'op-mapping',\n op: 'gtxnsas',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['ApplicationArgs'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numAppArgs: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'NumAppArgs'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n accounts: {\n type: 'op-mapping',\n op: 'gtxnsas',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['Accounts'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.accountPType,\n },\n ],\n },\n numAccounts: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'NumAccounts'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n approvalProgram: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ApprovalProgram'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n clearStateProgram: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ClearStateProgram'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n rekeyTo: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'RekeyTo'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n configAsset: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAsset'],\n stackArgs: [],\n returnType: ptypes.assetPType,\n },\n ],\n },\n configAssetTotal: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetTotal'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n configAssetDecimals: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetDecimals'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n configAssetDefaultFrozen: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetDefaultFrozen'],\n stackArgs: [],\n returnType: ptypes.boolPType,\n },\n ],\n },\n configAssetUnitName: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetUnitName'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n configAssetName: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetName'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n configAssetUrl: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetURL'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n configAssetMetadataHash: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetMetadataHash'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n configAssetManager: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetManager'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n configAssetReserve: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetReserve'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n configAssetFreeze: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetFreeze'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n configAssetClawback: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetClawback'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n freezeAsset: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'FreezeAsset'],\n stackArgs: [],\n returnType: ptypes.assetPType,\n },\n ],\n },\n freezeAssetAccount: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'FreezeAssetAccount'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n freezeAssetFrozen: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'FreezeAssetFrozen'],\n stackArgs: [],\n returnType: ptypes.boolPType,\n },\n ],\n },\n assets: {\n type: 'op-mapping',\n op: 'gtxnsas',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['Assets'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.assetPType,\n },\n ],\n },\n numAssets: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'NumAssets'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n applications: {\n type: 'op-mapping',\n op: 'gtxnsas',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['Applications'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.applicationPType,\n },\n ],\n },\n numApplications: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'NumApplications'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n globalNumUint: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'GlobalNumUint'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n globalNumByteSlice: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'GlobalNumByteSlice'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n localNumUint: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'LocalNumUint'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n localNumByteSlice: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'LocalNumByteSlice'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n extraProgramPages: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ExtraProgramPages'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n nonparticipation: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Nonparticipation'],\n stackArgs: [],\n returnType: ptypes.boolPType,\n },\n ],\n },\n logs: {\n type: 'op-mapping',\n op: 'gtxnsas',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['Logs'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numLogs: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'NumLogs'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n createdAssetId: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'CreatedAssetID'],\n stackArgs: [],\n returnType: ptypes.assetPType,\n },\n ],\n },\n createdApplicationId: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'CreatedApplicationID'],\n stackArgs: [],\n returnType: ptypes.applicationPType,\n },\n ],\n },\n lastLog: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'LastLog'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n stateProofPk: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'StateProofPK'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n approvalProgramPages: {\n type: 'op-mapping',\n op: 'gtxnsas',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['ApprovalProgramPages'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numApprovalProgramPages: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'NumApprovalProgramPages'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n clearStateProgramPages: {\n type: 'op-mapping',\n op: 'gtxnsas',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['ClearStateProgramPages'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numClearStateProgramPages: {\n type: 'op-mapping',\n op: 'gtxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'NumClearStateProgramPages'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n },\n },\n itob: {\n type: 'op-mapping',\n op: 'itob',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }], returnType: ptypes.bytesPType },\n ],\n },\n ITxn: {\n type: 'op-grouping',\n name: 'ITxn',\n ops: {\n sender: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['Sender'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n fee: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['Fee'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n firstValid: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['FirstValid'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n firstValidTime: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['FirstValidTime'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n lastValid: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['LastValid'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n note: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['Note'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n lease: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['Lease'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n receiver: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['Receiver'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n amount: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['Amount'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n closeRemainderTo: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['CloseRemainderTo'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n votePk: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['VotePK'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n selectionPk: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['SelectionPK'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n voteFirst: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['VoteFirst'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n voteLast: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['VoteLast'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n voteKeyDilution: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['VoteKeyDilution'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n type: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['Type'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n typeEnum: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['TypeEnum'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n xferAsset: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['XferAsset'], stackArgs: [], returnType: ptypes.assetPType }],\n },\n assetAmount: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['AssetAmount'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n assetSender: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['AssetSender'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n assetReceiver: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['AssetReceiver'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n assetCloseTo: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['AssetCloseTo'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n groupIndex: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['GroupIndex'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n txId: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['TxID'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n applicationId: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ApplicationID'], stackArgs: [], returnType: ptypes.applicationPType }],\n },\n onCompletion: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['OnCompletion'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n applicationArgs: {\n type: 'op-mapping',\n op: 'itxnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ApplicationArgs'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numAppArgs: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['NumAppArgs'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n accounts: {\n type: 'op-mapping',\n op: 'itxnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Accounts'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n numAccounts: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['NumAccounts'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n approvalProgram: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ApprovalProgram'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n clearStateProgram: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ClearStateProgram'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n rekeyTo: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['RekeyTo'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n configAsset: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAsset'], stackArgs: [], returnType: ptypes.assetPType }],\n },\n configAssetTotal: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetTotal'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n configAssetDecimals: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetDecimals'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n configAssetDefaultFrozen: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetDefaultFrozen'], stackArgs: [], returnType: ptypes.boolPType }],\n },\n configAssetUnitName: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetUnitName'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n configAssetName: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetName'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n configAssetUrl: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetURL'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n configAssetMetadataHash: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetMetadataHash'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n configAssetManager: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetManager'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n configAssetReserve: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetReserve'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n configAssetFreeze: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetFreeze'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n configAssetClawback: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetClawback'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n freezeAsset: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['FreezeAsset'], stackArgs: [], returnType: ptypes.assetPType }],\n },\n freezeAssetAccount: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['FreezeAssetAccount'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n freezeAssetFrozen: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['FreezeAssetFrozen'], stackArgs: [], returnType: ptypes.boolPType }],\n },\n assets: {\n type: 'op-mapping',\n op: 'itxnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Assets'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.assetPType,\n },\n ],\n },\n numAssets: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['NumAssets'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n applications: {\n type: 'op-mapping',\n op: 'itxnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Applications'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.applicationPType,\n },\n ],\n },\n numApplications: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['NumApplications'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n globalNumUint: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['GlobalNumUint'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n globalNumByteSlice: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['GlobalNumByteSlice'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n localNumUint: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['LocalNumUint'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n localNumByteSlice: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['LocalNumByteSlice'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n extraProgramPages: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ExtraProgramPages'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n nonparticipation: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['Nonparticipation'], stackArgs: [], returnType: ptypes.boolPType }],\n },\n logs: {\n type: 'op-mapping',\n op: 'itxnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Logs'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numLogs: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['NumLogs'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n createdAssetId: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['CreatedAssetID'], stackArgs: [], returnType: ptypes.assetPType }],\n },\n createdApplicationId: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['CreatedApplicationID'], stackArgs: [], returnType: ptypes.applicationPType }],\n },\n lastLog: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['LastLog'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n stateProofPk: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['StateProofPK'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n approvalProgramPages: {\n type: 'op-mapping',\n op: 'itxnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ApprovalProgramPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numApprovalProgramPages: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['NumApprovalProgramPages'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n clearStateProgramPages: {\n type: 'op-mapping',\n op: 'itxnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ClearStateProgramPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numClearStateProgramPages: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['NumClearStateProgramPages'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n },\n },\n ITxnCreate: {\n type: 'op-grouping',\n name: 'ITxnCreate',\n ops: {\n begin: {\n type: 'op-mapping',\n op: 'itxn_begin',\n signatures: [{ argNames: [], immediateArgs: [], stackArgs: [], returnType: ptypes.voidPType }],\n },\n setSender: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Sender'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setFee: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Fee'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setNote: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Note'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setReceiver: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Receiver'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setAmount: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Amount'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setCloseRemainderTo: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['CloseRemainderTo'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setVotePk: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['VotePK'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setSelectionPk: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['SelectionPK'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setVoteFirst: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['VoteFirst'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setVoteLast: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['VoteLast'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setVoteKeyDilution: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['VoteKeyDilution'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setType: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Type'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setTypeEnum: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['TypeEnum'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setXferAsset: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['XferAsset'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setAssetAmount: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetAmount'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setAssetSender: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetSender'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setAssetReceiver: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetReceiver'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setAssetCloseTo: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetCloseTo'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setApplicationId: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ApplicationID'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.applicationPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setOnCompletion: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['OnCompletion'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setApplicationArgs: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ApplicationArgs'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setAccounts: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Accounts'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setApprovalProgram: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ApprovalProgram'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setClearStateProgram: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ClearStateProgram'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setRekeyTo: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['RekeyTo'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAsset: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAsset'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetTotal: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetTotal'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetDecimals: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetDecimals'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetDefaultFrozen: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetDefaultFrozen'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.boolPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetUnitName: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetUnitName'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetName: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetName'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetUrl: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetURL'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetMetadataHash: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetMetadataHash'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetManager: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetManager'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetReserve: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetReserve'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetFreeze: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetFreeze'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetClawback: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetClawback'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setFreezeAsset: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['FreezeAsset'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setFreezeAssetAccount: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['FreezeAssetAccount'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setFreezeAssetFrozen: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['FreezeAssetFrozen'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.boolPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setAssets: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Assets'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setApplications: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Applications'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setGlobalNumUint: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['GlobalNumUint'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setGlobalNumByteSlice: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['GlobalNumByteSlice'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setLocalNumUint: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['LocalNumUint'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setLocalNumByteSlice: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['LocalNumByteSlice'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setExtraProgramPages: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ExtraProgramPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setNonparticipation: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Nonparticipation'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.boolPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setStateProofPk: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['StateProofPK'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setApprovalProgramPages: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ApprovalProgramPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setClearStateProgramPages: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ClearStateProgramPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n next: {\n type: 'op-mapping',\n op: 'itxn_next',\n signatures: [{ argNames: [], immediateArgs: [], stackArgs: [], returnType: ptypes.voidPType }],\n },\n submit: {\n type: 'op-mapping',\n op: 'itxn_submit',\n signatures: [{ argNames: [], immediateArgs: [], stackArgs: [], returnType: ptypes.voidPType }],\n },\n },\n },\n JsonRef: {\n type: 'op-grouping',\n name: 'JsonRef',\n ops: {\n jsonString: {\n type: 'op-mapping',\n op: 'json_ref',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['JSONString'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n jsonUint64: {\n type: 'op-mapping',\n op: 'json_ref',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['JSONUint64'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n jsonObject: {\n type: 'op-mapping',\n op: 'json_ref',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['JSONObject'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n },\n },\n keccak256: {\n type: 'op-mapping',\n op: 'keccak256',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }], returnType: ptypes.bytesPType },\n ],\n },\n len: {\n type: 'op-mapping',\n op: 'len',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }], returnType: ptypes.uint64PType },\n ],\n },\n Scratch: {\n type: 'op-grouping',\n name: 'Scratch',\n ops: {\n loadBytes: {\n type: 'op-mapping',\n op: 'loads',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }], returnType: ptypes.bytesPType },\n ],\n },\n loadUint64: {\n type: 'op-mapping',\n op: 'loads',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }], returnType: ptypes.uint64PType },\n ],\n },\n store: {\n type: 'op-mapping',\n op: 'stores',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType, ptypes.bytesPType] },\n ],\n returnType: ptypes.voidPType,\n },\n ],\n },\n },\n },\n minBalance: {\n type: 'op-mapping',\n op: 'min_balance',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: [],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n mulw: {\n type: 'op-mapping',\n op: 'mulw',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.uint64PType], immutable: true }),\n },\n ],\n },\n replace: {\n type: 'op-mapping',\n op: 'replace3',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n setByte: {\n type: 'op-mapping',\n op: 'setbyte',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n sha256: {\n type: 'op-mapping',\n op: 'sha256',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }], returnType: ptypes.bytesPType },\n ],\n },\n sha3_256: {\n type: 'op-mapping',\n op: 'sha3_256',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }], returnType: ptypes.bytesPType },\n ],\n },\n sha512_256: {\n type: 'op-mapping',\n op: 'sha512_256',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }], returnType: ptypes.bytesPType },\n ],\n },\n shl: {\n type: 'op-mapping',\n op: 'shl',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n shr: {\n type: 'op-mapping',\n op: 'shr',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n sqrt: {\n type: 'op-mapping',\n op: 'sqrt',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }], returnType: ptypes.uint64PType },\n ],\n },\n substring: {\n type: 'op-mapping',\n op: 'substring3',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n Txn: {\n type: 'op-grouping',\n name: 'Txn',\n ops: {\n sender: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['Sender'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n fee: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['Fee'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n firstValid: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['FirstValid'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n firstValidTime: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['FirstValidTime'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n lastValid: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['LastValid'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n note: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['Note'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n lease: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['Lease'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n receiver: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['Receiver'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n amount: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['Amount'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n closeRemainderTo: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['CloseRemainderTo'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n votePk: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['VotePK'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n selectionPk: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['SelectionPK'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n voteFirst: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['VoteFirst'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n voteLast: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['VoteLast'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n voteKeyDilution: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['VoteKeyDilution'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n type: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['Type'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n typeEnum: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['TypeEnum'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n xferAsset: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['XferAsset'], stackArgs: [], returnType: ptypes.assetPType }],\n },\n assetAmount: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['AssetAmount'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n assetSender: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['AssetSender'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n assetReceiver: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['AssetReceiver'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n assetCloseTo: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['AssetCloseTo'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n groupIndex: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['GroupIndex'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n txId: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['TxID'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n applicationId: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ApplicationID'], stackArgs: [], returnType: ptypes.applicationPType }],\n },\n onCompletion: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['OnCompletion'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n applicationArgs: {\n type: 'op-mapping',\n op: 'txnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ApplicationArgs'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numAppArgs: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['NumAppArgs'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n accounts: {\n type: 'op-mapping',\n op: 'txnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Accounts'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n numAccounts: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['NumAccounts'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n approvalProgram: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ApprovalProgram'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n clearStateProgram: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ClearStateProgram'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n rekeyTo: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['RekeyTo'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n configAsset: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAsset'], stackArgs: [], returnType: ptypes.assetPType }],\n },\n configAssetTotal: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetTotal'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n configAssetDecimals: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetDecimals'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n configAssetDefaultFrozen: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetDefaultFrozen'], stackArgs: [], returnType: ptypes.boolPType }],\n },\n configAssetUnitName: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetUnitName'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n configAssetName: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetName'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n configAssetUrl: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetURL'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n configAssetMetadataHash: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetMetadataHash'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n configAssetManager: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetManager'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n configAssetReserve: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetReserve'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n configAssetFreeze: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetFreeze'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n configAssetClawback: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetClawback'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n freezeAsset: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['FreezeAsset'], stackArgs: [], returnType: ptypes.assetPType }],\n },\n freezeAssetAccount: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['FreezeAssetAccount'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n freezeAssetFrozen: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['FreezeAssetFrozen'], stackArgs: [], returnType: ptypes.boolPType }],\n },\n assets: {\n type: 'op-mapping',\n op: 'txnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Assets'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.assetPType,\n },\n ],\n },\n numAssets: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['NumAssets'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n applications: {\n type: 'op-mapping',\n op: 'txnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Applications'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.applicationPType,\n },\n ],\n },\n numApplications: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['NumApplications'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n globalNumUint: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['GlobalNumUint'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n globalNumByteSlice: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['GlobalNumByteSlice'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n localNumUint: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['LocalNumUint'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n localNumByteSlice: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['LocalNumByteSlice'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n extraProgramPages: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ExtraProgramPages'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n nonparticipation: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['Nonparticipation'], stackArgs: [], returnType: ptypes.boolPType }],\n },\n logs: {\n type: 'op-mapping',\n op: 'txnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Logs'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numLogs: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['NumLogs'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n createdAssetId: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['CreatedAssetID'], stackArgs: [], returnType: ptypes.assetPType }],\n },\n createdApplicationId: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['CreatedApplicationID'], stackArgs: [], returnType: ptypes.applicationPType }],\n },\n lastLog: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['LastLog'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n stateProofPk: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['StateProofPK'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n approvalProgramPages: {\n type: 'op-mapping',\n op: 'txnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ApprovalProgramPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numApprovalProgramPages: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['NumApprovalProgramPages'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n clearStateProgramPages: {\n type: 'op-mapping',\n op: 'txnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ClearStateProgramPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numClearStateProgramPages: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['NumClearStateProgramPages'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n },\n },\n vrfVerify: {\n type: 'op-mapping',\n op: 'vrf_verify',\n signatures: [\n {\n argNames: ['s', 'a', 'b', 'c'],\n immediateArgs: [{ name: 's', ptypes: [ptypes.vrfVerifyPType] }],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n { name: 'c', ptypes: [ptypes.bytesPType] },\n ],\n returnType: new ptypes.TuplePType({ items: [ptypes.bytesPType, ptypes.boolPType], immutable: true }),\n },\n ],\n },\n select: {\n type: 'op-mapping',\n op: 'select',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n { name: 'c', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n setBit: {\n type: 'op-mapping',\n op: 'setbit',\n signatures: [\n {\n argNames: ['target', 'n', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'target', ptypes: [ptypes.bytesPType] },\n { name: 'n', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n {\n argNames: ['target', 'n', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'target', ptypes: [ptypes.uint64PType] },\n { name: 'n', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n}\n","import { nodeFactory } from '../../awst/node-factory'\nimport { Expression, IntegerConstant, StringConstant } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError, InternalError } from '../../errors'\nimport { enumerate, invariant } from '../../util'\nimport type { IntrinsicOpGrouping, IntrinsicOpMapping } from '../op-metadata'\nimport { OP_METADATA } from '../op-metadata'\nimport type { PType } from '../ptypes'\nimport { IntrinsicEnumType, IntrinsicFunctionGroupType, IntrinsicFunctionType, stringPType } from '../ptypes'\nimport { typeRegistry } from '../type-registry'\nimport type { InstanceBuilder } from './index'\nimport { FunctionBuilder, NodeBuilder } from './index'\nimport { requestConstantOfType, requestExpressionOfType } from './util'\n\nexport class IntrinsicOpGroupBuilder extends NodeBuilder {\n private opGrouping: IntrinsicOpGrouping\n public readonly ptype: IntrinsicFunctionGroupType\n constructor(sourceLocation: SourceLocation, ptype: PType) {\n super(sourceLocation)\n invariant(ptype instanceof IntrinsicFunctionGroupType, 'ptype must be IntrinsicFunctionGroupType')\n this.ptype = ptype\n const metaData = OP_METADATA[ptype.name]\n invariant(metaData.type === 'op-grouping', 'ptype must map to op-grouping')\n this.opGrouping = metaData\n }\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n if (!Object.hasOwn(this.opGrouping.ops, name)) {\n return super.memberAccess(name, sourceLocation)\n }\n const metaData = this.opGrouping.ops[name]\n\n if (metaData.signatures.some((s) => s.argNames.length)) {\n return new GroupedIntrinsicOpBuilder(sourceLocation, metaData)\n }\n\n const [sig] = metaData.signatures\n return typeRegistry.getInstanceEb(\n nodeFactory.intrinsicCall({\n wtype: sig.returnType.wtypeOrThrow,\n opCode: metaData.op,\n sourceLocation: sourceLocation,\n stackArgs: sig.stackArgs.map((x) => {\n if (x instanceof Expression) {\n return x\n }\n throw new InternalError('Intrinsic property expression cannot have unresolved arguments', { sourceLocation })\n }),\n immediates: sig.immediateArgs.map((x) => {\n switch (typeof x) {\n case 'string':\n case 'bigint':\n return x\n default:\n throw new InternalError('Intrinsic property expression cannot have unresolved arguments', { sourceLocation })\n }\n }),\n }),\n sig.returnType,\n )\n }\n}\n\nabstract class IntrinsicOpBuilderBase extends FunctionBuilder {\n protected constructor(\n sourceLocation: SourceLocation,\n private opMapping: IntrinsicOpMapping,\n ) {\n super(sourceLocation)\n }\n\n call(args: Array<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n signatureLoop: for (const [index, sig] of enumerate(this.opMapping.signatures)) {\n const isLastSig = index + 1 >= this.opMapping.signatures.length\n if (args.length !== sig.argNames.length) {\n if (isLastSig)\n throw new CodeError(`Expected ${sig.argNames.length} args`, {\n sourceLocation,\n })\n else continue\n }\n\n const immediates: Array<string | bigint> = []\n const stackArgs: Array<Expression> = []\n\n stackArgLoop: for (const arg of sig.stackArgs) {\n if (arg instanceof Expression) {\n stackArgs.push(arg)\n continue\n }\n const thisArg = args[sig.argNames.indexOf(arg.name)]\n\n for (const ptype of arg.ptypes) {\n const expr = requestExpressionOfType(thisArg, ptype)\n if (expr) {\n stackArgs.push(expr)\n continue stackArgLoop\n }\n }\n continue signatureLoop\n }\n\n immediateArgLoop: for (const arg of sig.immediateArgs) {\n if (typeof arg === 'string' || typeof arg === 'bigint') {\n immediates.push(arg)\n continue\n }\n const thisArg = args[sig.argNames.indexOf(arg.name)]\n\n for (const ptype of arg.ptypes) {\n if (ptype instanceof IntrinsicEnumType) {\n const enumValue = requestConstantOfType(thisArg, stringPType)\n if (enumValue) {\n invariant(enumValue instanceof StringConstant, 'stringPType constant must be StringConstant')\n immediates.push(enumValue.value)\n continue immediateArgLoop\n }\n }\n const constantValue = requestConstantOfType(thisArg, ptype)\n if (constantValue) {\n if (constantValue instanceof IntegerConstant || constantValue instanceof StringConstant) {\n immediates.push(constantValue.value)\n continue immediateArgLoop\n }\n throw new InternalError(`Constant value ${constantValue} cannot be converted to an immediate argument`, { sourceLocation })\n }\n }\n continue signatureLoop\n }\n\n return typeRegistry.getInstanceEb(\n nodeFactory.intrinsicCall({\n opCode: this.opMapping.op,\n wtype: sig.returnType.wtypeOrThrow,\n sourceLocation: sourceLocation,\n stackArgs,\n immediates,\n }),\n sig.returnType,\n )\n }\n throw new CodeError(`Could not map arguments to any known signature`, { sourceLocation })\n }\n}\n\nexport class FreeIntrinsicOpBuilder extends IntrinsicOpBuilderBase {\n readonly ptype: IntrinsicFunctionType\n constructor(sourceLocation: SourceLocation, ptype: PType) {\n invariant(ptype instanceof IntrinsicFunctionType, 'ptype must be IntrinsicFunctionType')\n const metaData = OP_METADATA[ptype.name]\n invariant(metaData.type === 'op-mapping', 'ptype must map to op-grouping')\n super(sourceLocation, metaData)\n this.ptype = ptype\n }\n}\n\nexport class GroupedIntrinsicOpBuilder extends IntrinsicOpBuilderBase {\n constructor(sourceLocation: SourceLocation, opMapping: IntrinsicOpMapping) {\n super(sourceLocation, opMapping)\n }\n}\n","import { intrinsicFactory } from '../../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { boolWType, WTuple } from '../../../awst/wtypes'\nimport type { PType } from '../../ptypes'\nimport { uint64PType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { BuilderComparisonOp, InstanceBuilder, NodeBuilder } from '../index'\nimport { InstanceExpressionBuilder } from '../index'\nimport { requireExpressionOfType } from '../util'\nimport { compareUint64 } from '../util/compare-uint64'\n\nexport type FieldMapping = Record<string, [string, PType]>\n\nexport abstract class ReferenceTypeExpressionBuilder extends InstanceExpressionBuilder<PType> {\n constructor(\n expr: Expression,\n protected options: {\n ptype: PType\n backingType: PType\n backingMember: string\n fieldMapping: FieldMapping\n fieldOpCode: string\n fieldBoolComment: string\n },\n ) {\n super(expr, options.ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n if (name === this.options.backingMember) {\n return instanceEb(\n nodeFactory.reinterpretCast({\n expr: this.resolve(),\n wtype: this.options.backingType.wtypeOrThrow,\n sourceLocation,\n }),\n this.options.backingType,\n )\n }\n if (name in this.options.fieldMapping) {\n const [immediate, resultType] = this.options.fieldMapping[name]\n const op = nodeFactory.intrinsicCall({\n opCode: this.options.fieldOpCode,\n immediates: [immediate],\n stackArgs: [this.resolve()],\n wtype: new WTuple({ types: [resultType.wtypeOrThrow, boolWType], immutable: true }),\n sourceLocation,\n })\n return instanceEb(nodeFactory.checkedMaybe({ expr: op, comment: this.options.fieldBoolComment }), resultType)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nexport abstract class Uint64BackedReferenceTypeExpressionBuilder extends ReferenceTypeExpressionBuilder {\n constructor(\n expr: Expression,\n options: {\n ptype: PType\n backingMember: string\n fieldMapping: FieldMapping\n fieldOpCode: string\n fieldBoolComment: string\n },\n ) {\n super(expr, {\n backingType: uint64PType,\n ...options,\n })\n }\n\n toBytes(sourceLocation: SourceLocation): Expression {\n return intrinsicFactory.itob({ value: this.resolve(), sourceLocation })\n }\n boolEval(sourceLocation: SourceLocation, negate: boolean = false): Expression {\n if (negate) {\n return nodeFactory.not({\n expr: this.resolve(),\n sourceLocation,\n })\n }\n return nodeFactory.reinterpretCast({\n sourceLocation,\n expr: this.resolve(),\n wtype: boolWType,\n })\n }\n\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n const otherExpr = requireExpressionOfType(other, this.ptype)\n return compareUint64(this.resolve(), otherExpr, op, sourceLocation, this.typeDescription)\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { boolWType, bytesWType, uint64WType, WTuple } from '../../../awst/wtypes'\nimport type { PType } from '../../ptypes'\nimport { accountPType, applicationPType, assetPType, bytesPType, uint64PType } from '../../ptypes'\nimport { BooleanExpressionBuilder } from '../boolean-expression-builder'\nimport type { BuilderComparisonOp, InstanceBuilder, NodeBuilder } from '../index'\nimport { FunctionBuilder } from '../index'\nimport { requireExpressionOfType } from '../util'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { compareBytes } from '../util/compare-bytes'\nimport { ReferenceTypeExpressionBuilder } from './base'\n\nexport class AccountFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [addressBytes],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: 'Account function',\n genericTypeArgs: 0,\n argSpec: (a) => [a.optional(bytesPType)],\n })\n\n if (addressBytes) {\n return new AccountExpressionBuilder(\n nodeFactory.reinterpretCast({\n expr: addressBytes.resolve(),\n wtype: accountPType.wtype,\n sourceLocation,\n }),\n )\n } else {\n return new AccountExpressionBuilder(\n nodeFactory.intrinsicCall({\n opCode: 'global',\n immediates: ['ZeroAddress'],\n stackArgs: [],\n sourceLocation,\n wtype: accountPType.wtype,\n }),\n )\n }\n }\n}\nexport class AccountExpressionBuilder extends ReferenceTypeExpressionBuilder {\n constructor(expr: Expression) {\n super(expr, {\n backingType: bytesPType,\n backingMember: 'bytes',\n fieldMapping: {\n balance: ['AcctBalance', uint64PType],\n minBalance: ['AcctMinBalance', uint64PType],\n authAddress: ['AcctAuthAddr', accountPType],\n totalNumUint: ['AcctTotalNumUint', uint64PType],\n totalNumByteSlice: ['AcctTotalNumByteSlice', uint64PType],\n totalExtraAppPages: ['AcctTotalExtraAppPages', uint64PType],\n totalAppsCreated: ['AcctTotalAppsCreated', uint64PType],\n totalAppsOptedIn: ['AcctTotalAppsOptedIn', uint64PType],\n totalAssetsCreated: ['AcctTotalAssetsCreated', uint64PType],\n totalAssets: ['AcctTotalAssets', uint64PType],\n totalBoxes: ['AcctTotalBoxes', uint64PType],\n totalBoxBytes: ['AcctTotalBoxBytes', uint64PType],\n },\n fieldOpCode: 'acct_params_get',\n ptype: accountPType,\n fieldBoolComment: 'account funded',\n })\n }\n\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n return compareBytes(this._expr, requireExpressionOfType(other, accountPType), op, sourceLocation, this.typeDescription)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'isOptedIn':\n return new IsOptedInFunctionBuilder(this._expr, sourceLocation)\n }\n return super.memberAccess(name, sourceLocation)\n }\n\n toBytes(sourceLocation: SourceLocation): Expression {\n return nodeFactory.reinterpretCast({\n expr: this._expr,\n wtype: bytesWType,\n sourceLocation,\n })\n }\n}\n\nclass IsOptedInFunctionBuilder extends FunctionBuilder {\n constructor(\n private expr: Expression,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [applicationOrAsset],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: 'isOptedIn',\n argSpec: (a) => [a.required(applicationPType, assetPType)],\n })\n\n if (applicationOrAsset.ptype.equals(assetPType)) {\n return new BooleanExpressionBuilder(\n nodeFactory.tupleItemExpression({\n base: nodeFactory.intrinsicCall({\n opCode: 'asset_holding_get',\n immediates: ['AssetBalance'],\n stackArgs: [this.expr, applicationOrAsset.resolve()],\n wtype: new WTuple({ types: [uint64WType, boolWType], immutable: true }),\n sourceLocation,\n }),\n index: 1n,\n sourceLocation,\n }),\n )\n } else {\n return new BooleanExpressionBuilder(\n nodeFactory.intrinsicCall({\n opCode: 'app_opted_in',\n stackArgs: [this.expr, applicationOrAsset.resolve()],\n sourceLocation,\n wtype: boolWType,\n immediates: [],\n }),\n )\n }\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport type { PType } from '../../ptypes'\nimport { accountPType, applicationPType, bytesPType, uint64PType } from '../../ptypes'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { FunctionBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { Uint64BackedReferenceTypeExpressionBuilder } from './base'\n\nexport class ApplicationFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [applicationId],\n } = parseFunctionArgs({\n argSpec: (a) => [a.optional(uint64PType)],\n args,\n typeArgs,\n genericTypeArgs: 0,\n funcName: 'Application',\n callLocation: sourceLocation,\n })\n\n return new ApplicationExpressionBuilder(\n nodeFactory.reinterpretCast({\n expr: applicationId?.resolve() ?? nodeFactory.uInt64Constant({ value: 0n, sourceLocation }),\n sourceLocation,\n wtype: applicationPType.wtypeOrThrow,\n }),\n )\n }\n}\n\nexport class ApplicationExpressionBuilder extends Uint64BackedReferenceTypeExpressionBuilder {\n constructor(expr: Expression) {\n super(expr, {\n ptype: applicationPType,\n backingMember: 'id',\n fieldOpCode: 'app_params_get',\n fieldMapping: {\n approvalProgram: ['AppApprovalProgram', bytesPType],\n clearStateProgram: ['AppClearStateProgram', bytesPType],\n globalNumUint: ['AppGlobalNumUint', uint64PType],\n globalNumBytes: ['AppGlobalNumByteSlice', uint64PType],\n localNumUint: ['AppLocalNumUint', uint64PType],\n localNumBytes: ['AppLocalNumByteSlice', uint64PType],\n extraProgramPages: ['AppExtraProgramPages', uint64PType],\n creator: ['AppCreator', accountPType],\n address: ['AppAddress', accountPType],\n },\n fieldBoolComment: 'application exists',\n })\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { boolWType, WTuple } from '../../../awst/wtypes'\nimport type { PType } from '../../ptypes'\nimport { accountPType, assetPType, boolPType, bytesPType, uint64PType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { FunctionBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport type { FieldMapping } from './base'\nimport { Uint64BackedReferenceTypeExpressionBuilder } from './base'\n\nexport class AssetFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const {\n args: [assetId],\n } = parseFunctionArgs({\n argSpec: (a) => [a.optional(uint64PType)],\n args,\n typeArgs,\n genericTypeArgs: 0,\n funcName: 'Asset function',\n callLocation: sourceLocation,\n })\n\n return new AssetExpressionBuilder(\n nodeFactory.reinterpretCast({\n expr: assetId?.resolve() ?? nodeFactory.uInt64Constant({ value: 0n, sourceLocation }),\n sourceLocation,\n wtype: assetPType.wtypeOrThrow,\n }),\n )\n }\n}\n\nclass AssetHoldingExpressionBuilder extends FunctionBuilder {\n static fieldMapping = {\n balance: ['AssetBalance', uint64PType],\n frozen: ['AssetFrozen', boolPType],\n } satisfies FieldMapping\n constructor(\n private asset: Expression,\n private holdingField: keyof typeof AssetHoldingExpressionBuilder.fieldMapping,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [holder],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n funcName: this.holdingField,\n argSpec: (a) => [a.required(accountPType)],\n })\n const [immediate, resultType] = AssetHoldingExpressionBuilder.fieldMapping[this.holdingField]\n const op = nodeFactory.intrinsicCall({\n opCode: 'asset_holding_get',\n immediates: [immediate],\n stackArgs: [holder.resolve(), this.asset],\n wtype: new WTuple({ types: [resultType.wtypeOrThrow, boolWType], immutable: true }),\n sourceLocation,\n })\n return instanceEb(nodeFactory.checkedMaybe({ expr: op, comment: `account opted into asset` }), resultType)\n }\n}\nexport class AssetExpressionBuilder extends Uint64BackedReferenceTypeExpressionBuilder {\n constructor(expr: Expression) {\n super(expr, {\n ptype: assetPType,\n backingMember: 'id',\n fieldOpCode: 'asset_params_get',\n fieldMapping: {\n total: ['AssetTotal', uint64PType],\n decimal: ['AssetDecimals', uint64PType],\n defaultFrozen: ['AssetDefaultFrozen', boolPType],\n unitName: ['AssetUnitName', bytesPType],\n name: ['AssetName', bytesPType],\n url: ['AssetURL', bytesPType],\n metadataHash: ['AssetMetadataHash', bytesPType],\n manager: ['AssetManager', accountPType],\n reserve: ['AssetReserve', accountPType],\n freeze: ['AssetFreeze', accountPType],\n clawback: ['AssetClawback', accountPType],\n creator: ['AssetCreator', accountPType],\n },\n fieldBoolComment: 'asset exists',\n })\n }\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n if (name in AssetHoldingExpressionBuilder.fieldMapping) {\n return new AssetHoldingExpressionBuilder(\n this.resolve(),\n name as keyof typeof AssetHoldingExpressionBuilder.fieldMapping,\n sourceLocation,\n )\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n","import { wtypes } from './index'\n\nexport class TxnFieldData {\n readonly immediate: string\n readonly wtype: wtypes.WType\n readonly numValues: number\n readonly isInnerParam: boolean\n constructor(data: { field: TxnField; wtype: wtypes.WType; numValues?: number; isInnerParam?: boolean }) {\n this.immediate = data.field\n this.wtype = data.wtype\n this.numValues = data.numValues ?? 1\n this.isInnerParam = data.isInnerParam ?? true\n }\n}\n\nexport enum TxnField {\n Sender = 'Sender',\n Fee = 'Fee',\n FirstValid = 'FirstValid',\n FirstValidTime = 'FirstValidTime',\n LastValid = 'LastValid',\n Note = 'Note',\n Lease = 'Lease',\n Receiver = 'Receiver',\n Amount = 'Amount',\n CloseRemainderTo = 'CloseRemainderTo',\n VotePK = 'VotePK',\n SelectionPK = 'SelectionPK',\n VoteFirst = 'VoteFirst',\n VoteLast = 'VoteLast',\n VoteKeyDilution = 'VoteKeyDilution',\n Type = 'Type',\n TypeEnum = 'TypeEnum',\n XferAsset = 'XferAsset',\n AssetAmount = 'AssetAmount',\n AssetSender = 'AssetSender',\n AssetReceiver = 'AssetReceiver',\n AssetCloseTo = 'AssetCloseTo',\n GroupIndex = 'GroupIndex',\n TxID = 'TxID',\n ApplicationID = 'ApplicationID',\n OnCompletion = 'OnCompletion',\n NumAppArgs = 'NumAppArgs',\n NumAccounts = 'NumAccounts',\n ApprovalProgram = 'ApprovalProgram',\n ClearStateProgram = 'ClearStateProgram',\n RekeyTo = 'RekeyTo',\n ConfigAsset = 'ConfigAsset',\n ConfigAssetTotal = 'ConfigAssetTotal',\n ConfigAssetDecimals = 'ConfigAssetDecimals',\n ConfigAssetDefaultFrozen = 'ConfigAssetDefaultFrozen',\n ConfigAssetUnitName = 'ConfigAssetUnitName',\n ConfigAssetName = 'ConfigAssetName',\n ConfigAssetURL = 'ConfigAssetURL',\n ConfigAssetMetadataHash = 'ConfigAssetMetadataHash',\n ConfigAssetManager = 'ConfigAssetManager',\n ConfigAssetReserve = 'ConfigAssetReserve',\n ConfigAssetFreeze = 'ConfigAssetFreeze',\n ConfigAssetClawback = 'ConfigAssetClawback',\n FreezeAsset = 'FreezeAsset',\n FreezeAssetAccount = 'FreezeAssetAccount',\n FreezeAssetFrozen = 'FreezeAssetFrozen',\n NumAssets = 'NumAssets',\n NumApplications = 'NumApplications',\n GlobalNumUint = 'GlobalNumUint',\n GlobalNumByteSlice = 'GlobalNumByteSlice',\n LocalNumUint = 'LocalNumUint',\n LocalNumByteSlice = 'LocalNumByteSlice',\n ExtraProgramPages = 'ExtraProgramPages',\n Nonparticipation = 'Nonparticipation',\n NumLogs = 'NumLogs',\n CreatedAssetID = 'CreatedAssetID',\n CreatedApplicationID = 'CreatedApplicationID',\n LastLog = 'LastLog',\n StateProofPK = 'StateProofPK',\n NumApprovalProgramPages = 'NumApprovalProgramPages',\n NumClearStateProgramPages = 'NumClearStateProgramPages',\n ApplicationArgs = 'ApplicationArgs',\n Accounts = 'Accounts',\n Assets = 'Assets',\n Applications = 'Applications',\n Logs = 'Logs',\n ApprovalProgramPages = 'ApprovalProgramPages',\n ClearStateProgramPages = 'ClearStateProgramPages',\n}\n\nexport const TxnFields: Record<TxnField, TxnFieldData> = {\n Sender: new TxnFieldData({ field: TxnField.Sender, wtype: wtypes.accountWType }),\n Fee: new TxnFieldData({ field: TxnField.Fee, wtype: wtypes.uint64WType }),\n FirstValid: new TxnFieldData({ field: TxnField.FirstValid, wtype: wtypes.uint64WType, isInnerParam: false }),\n FirstValidTime: new TxnFieldData({ field: TxnField.FirstValidTime, wtype: wtypes.uint64WType, isInnerParam: false }),\n LastValid: new TxnFieldData({ field: TxnField.LastValid, wtype: wtypes.uint64WType, isInnerParam: false }),\n Note: new TxnFieldData({ field: TxnField.Note, wtype: wtypes.bytesWType }),\n Lease: new TxnFieldData({ field: TxnField.Lease, wtype: wtypes.bytesWType, isInnerParam: false }),\n Receiver: new TxnFieldData({ field: TxnField.Receiver, wtype: wtypes.accountWType }),\n Amount: new TxnFieldData({ field: TxnField.Amount, wtype: wtypes.uint64WType }),\n CloseRemainderTo: new TxnFieldData({ field: TxnField.CloseRemainderTo, wtype: wtypes.accountWType }),\n VotePK: new TxnFieldData({ field: TxnField.VotePK, wtype: wtypes.bytesWType }),\n SelectionPK: new TxnFieldData({ field: TxnField.SelectionPK, wtype: wtypes.bytesWType }),\n VoteFirst: new TxnFieldData({ field: TxnField.VoteFirst, wtype: wtypes.uint64WType }),\n VoteLast: new TxnFieldData({ field: TxnField.VoteLast, wtype: wtypes.uint64WType }),\n VoteKeyDilution: new TxnFieldData({ field: TxnField.VoteKeyDilution, wtype: wtypes.uint64WType }),\n Type: new TxnFieldData({ field: TxnField.Type, wtype: wtypes.bytesWType }),\n TypeEnum: new TxnFieldData({ field: TxnField.TypeEnum, wtype: wtypes.uint64WType }),\n XferAsset: new TxnFieldData({ field: TxnField.XferAsset, wtype: wtypes.assetWType }),\n AssetAmount: new TxnFieldData({ field: TxnField.AssetAmount, wtype: wtypes.uint64WType }),\n AssetSender: new TxnFieldData({ field: TxnField.AssetSender, wtype: wtypes.accountWType }),\n AssetReceiver: new TxnFieldData({ field: TxnField.AssetReceiver, wtype: wtypes.accountWType }),\n AssetCloseTo: new TxnFieldData({ field: TxnField.AssetCloseTo, wtype: wtypes.accountWType }),\n GroupIndex: new TxnFieldData({ field: TxnField.GroupIndex, wtype: wtypes.uint64WType, isInnerParam: false }),\n TxID: new TxnFieldData({ field: TxnField.TxID, wtype: wtypes.bytesWType, isInnerParam: false }),\n // v2\n ApplicationID: new TxnFieldData({ field: TxnField.ApplicationID, wtype: wtypes.applicationWType }),\n OnCompletion: new TxnFieldData({ field: TxnField.OnCompletion, wtype: wtypes.uint64WType }),\n NumAppArgs: new TxnFieldData({ field: TxnField.NumAppArgs, wtype: wtypes.uint64WType, isInnerParam: false }),\n NumAccounts: new TxnFieldData({ field: TxnField.NumAccounts, wtype: wtypes.uint64WType, isInnerParam: false }),\n ApprovalProgram: new TxnFieldData({ field: TxnField.ApprovalProgram, wtype: wtypes.bytesWType }),\n ClearStateProgram: new TxnFieldData({ field: TxnField.ClearStateProgram, wtype: wtypes.bytesWType }),\n RekeyTo: new TxnFieldData({ field: TxnField.RekeyTo, wtype: wtypes.accountWType }),\n ConfigAsset: new TxnFieldData({ field: TxnField.ConfigAsset, wtype: wtypes.assetWType }),\n ConfigAssetTotal: new TxnFieldData({ field: TxnField.ConfigAssetTotal, wtype: wtypes.uint64WType }),\n ConfigAssetDecimals: new TxnFieldData({ field: TxnField.ConfigAssetDecimals, wtype: wtypes.uint64WType }),\n ConfigAssetDefaultFrozen: new TxnFieldData({ field: TxnField.ConfigAssetDefaultFrozen, wtype: wtypes.boolWType }),\n ConfigAssetUnitName: new TxnFieldData({ field: TxnField.ConfigAssetUnitName, wtype: wtypes.bytesWType }),\n ConfigAssetName: new TxnFieldData({ field: TxnField.ConfigAssetName, wtype: wtypes.bytesWType }),\n ConfigAssetURL: new TxnFieldData({ field: TxnField.ConfigAssetURL, wtype: wtypes.bytesWType }),\n ConfigAssetMetadataHash: new TxnFieldData({ field: TxnField.ConfigAssetMetadataHash, wtype: wtypes.bytesWType }),\n ConfigAssetManager: new TxnFieldData({ field: TxnField.ConfigAssetManager, wtype: wtypes.accountWType }),\n ConfigAssetReserve: new TxnFieldData({ field: TxnField.ConfigAssetReserve, wtype: wtypes.accountWType }),\n ConfigAssetFreeze: new TxnFieldData({ field: TxnField.ConfigAssetFreeze, wtype: wtypes.accountWType }),\n ConfigAssetClawback: new TxnFieldData({ field: TxnField.ConfigAssetClawback, wtype: wtypes.accountWType }),\n FreezeAsset: new TxnFieldData({ field: TxnField.FreezeAsset, wtype: wtypes.assetWType }),\n FreezeAssetAccount: new TxnFieldData({ field: TxnField.FreezeAssetAccount, wtype: wtypes.accountWType }),\n FreezeAssetFrozen: new TxnFieldData({ field: TxnField.FreezeAssetFrozen, wtype: wtypes.boolWType }),\n // v3\n NumAssets: new TxnFieldData({ field: TxnField.NumAssets, wtype: wtypes.uint64WType, isInnerParam: false }),\n NumApplications: new TxnFieldData({ field: TxnField.NumApplications, wtype: wtypes.uint64WType, isInnerParam: false }),\n GlobalNumUint: new TxnFieldData({ field: TxnField.GlobalNumUint, wtype: wtypes.uint64WType }),\n GlobalNumByteSlice: new TxnFieldData({ field: TxnField.GlobalNumByteSlice, wtype: wtypes.uint64WType }),\n LocalNumUint: new TxnFieldData({ field: TxnField.LocalNumUint, wtype: wtypes.uint64WType }),\n LocalNumByteSlice: new TxnFieldData({ field: TxnField.LocalNumByteSlice, wtype: wtypes.uint64WType }),\n // v4\n ExtraProgramPages: new TxnFieldData({ field: TxnField.ExtraProgramPages, wtype: wtypes.uint64WType }),\n // v5\n Nonparticipation: new TxnFieldData({ field: TxnField.Nonparticipation, wtype: wtypes.boolWType }),\n NumLogs: new TxnFieldData({ field: TxnField.NumLogs, wtype: wtypes.uint64WType, isInnerParam: false }),\n CreatedAssetID: new TxnFieldData({ field: TxnField.CreatedAssetID, wtype: wtypes.assetWType, isInnerParam: false }),\n CreatedApplicationID: new TxnFieldData({ field: TxnField.CreatedApplicationID, wtype: wtypes.applicationWType, isInnerParam: false }),\n // v6\n LastLog: new TxnFieldData({ field: TxnField.LastLog, wtype: wtypes.bytesWType, isInnerParam: false }),\n StateProofPK: new TxnFieldData({ field: TxnField.StateProofPK, wtype: wtypes.bytesWType }),\n // v7\n NumApprovalProgramPages: new TxnFieldData({ field: TxnField.NumApprovalProgramPages, wtype: wtypes.uint64WType, isInnerParam: false }),\n NumClearStateProgramPages: new TxnFieldData({\n field: TxnField.NumClearStateProgramPages,\n wtype: wtypes.uint64WType,\n isInnerParam: false,\n }),\n // array fields\n // TODO: allow configuring as these are consensus values\n // v2\n ApplicationArgs: new TxnFieldData({ field: TxnField.ApplicationArgs, wtype: wtypes.bytesWType, numValues: 16 }),\n Accounts: new TxnFieldData({ field: TxnField.Accounts, wtype: wtypes.accountWType, numValues: 4 }),\n // v3\n Assets: new TxnFieldData({ field: TxnField.Assets, wtype: wtypes.assetWType, numValues: 8 }),\n Applications: new TxnFieldData({ field: TxnField.Applications, wtype: wtypes.applicationWType, numValues: 8 }),\n // v5\n Logs: new TxnFieldData({ field: TxnField.Logs, wtype: wtypes.bytesWType, numValues: 32, isInnerParam: false }),\n // v7\n ApprovalProgramPages: new TxnFieldData({ field: TxnField.ApprovalProgramPages, wtype: wtypes.bytesWType, numValues: 4 }),\n ClearStateProgramPages: new TxnFieldData({ field: TxnField.ClearStateProgramPages, wtype: wtypes.bytesWType, numValues: 4 }),\n}\n","import { TransactionKind } from '../../../awst/models'\nimport { TxnField } from '../../../awst/txn-fields'\nimport type { PType } from '../../ptypes'\nimport {\n accountPType,\n applicationPType,\n assetPType,\n boolPType,\n bytesPType,\n onCompleteActionType,\n transactionTypeType,\n uint64PType,\n} from '../../ptypes'\n\nconst baseTxnFields = {\n /**\n * 32 byte address\n */\n sender: [TxnField.Sender, accountPType] as const,\n\n /**\n * microalgos\n */\n fee: [TxnField.Fee, uint64PType] as const,\n\n /**\n * round number\n */\n firstValid: [TxnField.FirstValid, uint64PType] as const,\n\n /**\n * UNIX timestamp of block before txn.FirstValid. Fails if negative\n */\n firstValidTime: [TxnField.FirstValidTime, uint64PType] as const,\n\n /**\n * round number\n */\n lastValid: [TxnField.LastValid, uint64PType] as const,\n\n /**\n * Any data up to 1024 bytes\n */\n note: [TxnField.Note, bytesPType] as const,\n\n /**\n * 32 byte lease value\n */\n lease: [TxnField.Lease, bytesPType] as const,\n\n /**\n * Transaction type as bytes\n */\n typeBytes: [TxnField.Type, bytesPType] as const,\n\n /**\n * Transaction type as integer\n */\n type: [TxnField.TypeEnum, transactionTypeType] as const,\n\n /**\n * Position of this transaction within an atomic group\n * A stand-alone transaction is implicitly element 0 in a group of 1\n */\n groupIndex: [TxnField.GroupIndex, uint64PType] as const,\n\n /**\n * The computed ID for this transaction. 32 bytes.\n */\n txnId: [TxnField.TxID, bytesPType] as const,\n\n /**\n * 32 byte Sender's new AuthAddr\n */\n rekeyTo: [TxnField.RekeyTo, accountPType] as const,\n}\n\nexport const paymentTxnFields = {\n ...baseTxnFields,\n /**\n * 32 byte address\n */\n receiver: [TxnField.Receiver, accountPType] as const,\n\n /**\n * microalgos\n */\n amount: [TxnField.Amount, uint64PType] as const,\n\n /**\n * 32 byte address\n */\n closeRemainderTo: [TxnField.CloseRemainderTo, accountPType] as const,\n} satisfies Record<string, readonly [TxnField, PType]>\n\nexport const keyRegistrationTxnFields = {\n ...baseTxnFields,\n /**\n * 32 byte address\n */\n voteKey: [TxnField.VotePK, bytesPType] as const,\n\n /**\n * 32 byte address\n */\n selectionKey: [TxnField.SelectionPK, bytesPType] as const,\n\n /**\n * The first round that the participation key is valid.\n */\n voteFirst: [TxnField.VoteFirst, uint64PType] as const,\n\n /**\n * The last round that the participation key is valid.\n */\n voteLast: [TxnField.VoteLast, uint64PType] as const,\n\n /**\n * Dilution for the 2-level participation key\n */\n voteKeyDilution: [TxnField.VoteKeyDilution, uint64PType] as const,\n\n /**\n * Marks an account nonparticipating for rewards\n */\n nonparticipation: [TxnField.Nonparticipation, boolPType] as const,\n\n /**\n * 64 byte state proof public key\n */\n stateProofKey: [TxnField.StateProofPK, bytesPType] as const,\n} satisfies Record<string, readonly [TxnField, PType]>\n\nexport const assetConfigTxnFields = {\n ...baseTxnFields,\n /**\n * Asset ID in asset config transaction\n */\n configAsset: [TxnField.ConfigAsset, assetPType] as const,\n\n /**\n * The asset created by this transaction\n */\n createdAsset: [TxnField.CreatedAssetID, assetPType] as const,\n\n /**\n * Total number of units of this asset created\n */\n total: [TxnField.ConfigAssetTotal, uint64PType] as const,\n\n /**\n * Number of digits to display after the decimal place when displaying the asset\n */\n decimals: [TxnField.ConfigAssetDecimals, uint64PType] as const,\n\n /**\n * Whether the asset's slots are frozen by default or not, 0 or 1\n */\n defaultFrozen: [TxnField.ConfigAssetDefaultFrozen, boolPType] as const,\n\n /**\n * Unit name of the asset\n */\n unitName: [TxnField.ConfigAssetUnitName, bytesPType] as const,\n\n /**\n * The asset name\n */\n assetName: [TxnField.ConfigAssetName, bytesPType] as const,\n\n /**\n * URL\n */\n url: [TxnField.ConfigAssetURL, bytesPType] as const,\n\n /**\n * 32 byte commitment to unspecified asset metadata\n */\n metadataHash: [TxnField.ConfigAssetMetadataHash, bytesPType] as const,\n\n /**\n * 32 byte address\n */\n manager: [TxnField.ConfigAssetManager, accountPType] as const,\n\n /**\n * 32 byte address\n */\n reserve: [TxnField.ConfigAssetReserve, accountPType] as const,\n\n /**\n * 32 byte address\n */\n freeze: [TxnField.ConfigAssetFreeze, accountPType] as const,\n\n /**\n * 32 byte address\n */\n clawback: [TxnField.ConfigAssetClawback, accountPType] as const,\n} satisfies Record<string, readonly [TxnField, PType]>\n\nexport const assetTransferTxnFields = {\n ...baseTxnFields,\n /**\n * Asset ID\n */\n xferAsset: [TxnField.XferAsset, assetPType] as const,\n\n /**\n * value in Asset's units\n */\n assetAmount: [TxnField.AssetAmount, uint64PType] as const,\n\n /**\n * 32 byte address. Source of assets if Sender is the Asset's Clawback address.\n */\n assetSender: [TxnField.AssetSender, accountPType] as const,\n\n /**\n * 32 byte address\n */\n assetReceiver: [TxnField.AssetReceiver, accountPType] as const,\n\n /**\n * 32 byte address\n */\n assetCloseTo: [TxnField.AssetCloseTo, accountPType] as const,\n} satisfies Record<string, readonly [TxnField, PType]>\n\nexport const assetFreezeTxnFields = {\n ...baseTxnFields,\n /**\n * Asset ID being frozen or un-frozen\n */\n freezeAsset: [TxnField.FreezeAsset, assetPType] as const,\n\n /**\n * 32 byte address of the account whose asset slot is being frozen or un-frozen\n */\n freezeAccount: [TxnField.FreezeAssetAccount, accountPType] as const,\n\n /**\n * The new frozen value\n */\n frozen: [TxnField.FreezeAssetFrozen, boolPType] as const,\n} satisfies Record<string, readonly [TxnField, PType]>\n\nexport const applicationCallTxnFields = {\n ...baseTxnFields,\n /**\n * ApplicationID from ApplicationCall transaction\n */\n appId: [TxnField.ApplicationID, applicationPType] as const,\n\n /**\n * The application created by this transaction\n */\n createdApplication: [TxnField.CreatedApplicationID, applicationPType] as const,\n\n /**\n * ApplicationCall transaction on completion action\n */\n onCompletion: [TxnField.OnCompletion, onCompleteActionType.memberType] as const,\n\n /**\n * Number of ApplicationArgs\n */\n numAppArgs: [TxnField.NumAppArgs, uint64PType] as const,\n\n /**\n * Number of ApplicationArgs\n */\n numAccounts: [TxnField.NumAccounts, uint64PType] as const,\n\n /**\n * Approval program\n */\n approvalProgram: [TxnField.ApprovalProgram, bytesPType] as const,\n\n /**\n * Clear State program\n */\n clearStateProgram: [TxnField.ClearStateProgram, bytesPType] as const,\n\n /**\n * Number of Assets\n */\n numAssets: [TxnField.NumAssets, uint64PType] as const,\n\n /**\n * Number of Applications\n */\n numApps: [TxnField.NumApplications, uint64PType] as const,\n\n /**\n * Number of global state integers in ApplicationCall\n */\n globalNumUint: [TxnField.GlobalNumUint, uint64PType] as const,\n\n /**\n * Number of global state byteslices in ApplicationCall\n */\n globalNumBytes: [TxnField.GlobalNumByteSlice, uint64PType] as const,\n\n /**\n * Number of local state integers in ApplicationCall\n */\n localNumUint: [TxnField.LocalNumUint, uint64PType] as const,\n\n /**\n * Number of local state byteslices in ApplicationCall\n */\n localNumBytes: [TxnField.LocalNumByteSlice, uint64PType] as const,\n\n /**\n * Number of additional pages for each of the application's approval and clear state programs. An ExtraProgramPages of 1 means 2048 more total bytes, or 1024 for each program.\n */\n extraProgramPages: [TxnField.ExtraProgramPages, uint64PType] as const,\n\n /**\n * The last message emitted. Empty bytes if none were emitted. Application mode only\n */\n lastLog: [TxnField.LastLog, bytesPType] as const,\n\n /**\n * Number of Approval Program pages\n */\n numApprovalProgramPages: [TxnField.NumApprovalProgramPages, uint64PType] as const,\n\n /**\n * Number of Clear State Program pages\n */\n numClearStateProgramPages: [TxnField.NumClearStateProgramPages, uint64PType] as const,\n\n /**\n * Arguments passed to the application in the ApplicationCall transaction\n * @param index\n */\n appArgs: [TxnField.ApplicationArgs, bytesPType] as const,\n\n /**\n * Accounts listed in the ApplicationCall transaction\n */\n accounts: [TxnField.Accounts, accountPType] as const,\n\n /**\n * Foreign Assets listed in the ApplicationCall transaction\n */\n assets: [TxnField.Assets, assetPType] as const,\n\n /**\n * Foreign Apps listed in the ApplicationCall transaction\n */\n apps: [TxnField.Applications, applicationPType] as const,\n\n /**\n * Approval Program as an array of pages\n */\n approvalProgramPages: [TxnField.ApprovalProgramPages, bytesPType] as const,\n\n /**\n * Clear State Program as an array of pages\n */\n clearStateProgramPages: [TxnField.ClearStateProgramPages, bytesPType] as const,\n} satisfies Record<string, readonly [TxnField, PType]>\n\nexport const anyTxnFields = {\n ...paymentTxnFields,\n ...keyRegistrationTxnFields,\n ...assetConfigTxnFields,\n ...assetTransferTxnFields,\n ...assetFreezeTxnFields,\n ...applicationCallTxnFields,\n} satisfies Record<string, readonly [TxnField, PType]>\n\nexport const txnKindToFields = {\n [TransactionKind.pay]: paymentTxnFields,\n [TransactionKind.keyreg]: keyRegistrationTxnFields,\n [TransactionKind.acfg]: assetConfigTxnFields,\n [TransactionKind.axfer]: assetTransferTxnFields,\n [TransactionKind.afrz]: assetFreezeTxnFields,\n [TransactionKind.appl]: applicationCallTxnFields,\n}\n","import { TransactionKind } from '../../../awst/models'\nimport type { GroupTransactionPType, InnerTransactionPType, ItxnParamsPType } from '../../ptypes'\nimport {\n anyGtxnType,\n applicationCallGtxnType,\n applicationCallItxnParamsType,\n applicationItxnType,\n assetConfigGtxnType,\n assetConfigItxnParamsType,\n assetConfigItxnType,\n assetFreezeGtxnType,\n assetFreezeItxnParamsType,\n assetFreezeItxnType,\n assetTransferGtxnType,\n assetTransferItxnParamsType,\n assetTransferItxnType,\n keyRegistrationGtxnType,\n keyRegistrationItxnParamsType,\n keyRegistrationItxnType,\n paymentGtxnType,\n paymentItxnParamsType,\n paymentItxnType,\n} from '../../ptypes'\n\nexport function getInnerTransactionType(kind: TransactionKind | undefined): InnerTransactionPType {\n switch (kind) {\n case TransactionKind.pay:\n return paymentItxnType\n case TransactionKind.keyreg:\n return keyRegistrationItxnType\n case TransactionKind.acfg:\n return assetConfigItxnType\n case TransactionKind.axfer:\n return assetTransferItxnType\n case TransactionKind.afrz:\n return assetFreezeItxnType\n case TransactionKind.appl:\n return applicationItxnType\n default:\n throw new Error('TODO')\n //return anyInnerTransaction\n }\n}\nexport function getItxnParamsType(kind: TransactionKind | undefined): ItxnParamsPType {\n switch (kind) {\n case TransactionKind.pay:\n return paymentItxnParamsType\n case TransactionKind.keyreg:\n return keyRegistrationItxnParamsType\n case TransactionKind.acfg:\n return assetConfigItxnParamsType\n case TransactionKind.axfer:\n return assetTransferItxnParamsType\n case TransactionKind.afrz:\n return assetFreezeItxnParamsType\n case TransactionKind.appl:\n return applicationCallItxnParamsType\n default:\n throw new Error('TODO')\n //return anyInnerTransaction\n }\n}\nexport function getGroupTransactionType(kind: TransactionKind | undefined): GroupTransactionPType {\n switch (kind) {\n case TransactionKind.pay:\n return paymentGtxnType\n case TransactionKind.keyreg:\n return keyRegistrationGtxnType\n case TransactionKind.acfg:\n return assetConfigGtxnType\n case TransactionKind.axfer:\n return assetTransferGtxnType\n case TransactionKind.afrz:\n return assetFreezeGtxnType\n case TransactionKind.appl:\n return applicationCallGtxnType\n default:\n return anyGtxnType\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport type { TxnFieldData } from '../../../awst/txn-fields'\nimport { TxnFields } from '../../../awst/txn-fields'\nimport { invariant } from '../../../util'\nimport type { PType } from '../../ptypes'\nimport { GroupTransactionPType, TransactionFunctionType, uint64PType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { FunctionBuilder, InstanceExpressionBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { anyTxnFields, txnKindToFields } from './txn-fields'\nimport { getGroupTransactionType } from './util'\n\nexport class GroupTransactionExpressionBuilder extends InstanceExpressionBuilder<GroupTransactionPType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof GroupTransactionPType, 'ptype must be GroupTransactionPType')\n super(expr, ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n const txnKind = this.ptype.kind\n const fields = txnKind === undefined ? anyTxnFields : txnKindToFields[txnKind]\n if (name in fields) {\n const [field, returnType] = fields[name as keyof typeof fields]\n const data = TxnFields[field]\n\n if (data.numValues === 1) {\n return instanceEb(\n nodeFactory.intrinsicCall({\n sourceLocation,\n stackArgs: [this._expr],\n immediates: [data.immediate],\n wtype: data.wtype,\n opCode: 'gtxns',\n }),\n returnType,\n )\n } else {\n return new IndexedTransactionFieldFunctionBuilder(this._expr, {\n txnData: data,\n returnType,\n memberName: name,\n })\n }\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nexport class GroupTransactionFunctionBuilder extends FunctionBuilder {\n readonly ptype: TransactionFunctionType\n\n constructor(sourceLocation: SourceLocation, ptype: PType) {\n super(sourceLocation)\n invariant(ptype instanceof TransactionFunctionType, 'ptype must be instance of TransactionFunctionType')\n this.ptype = ptype\n }\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [groupIndex],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: this.ptype.name,\n argSpec: (a) => [a.required(uint64PType)],\n })\n const txnPType = getGroupTransactionType(this.ptype.kind)\n\n return new GroupTransactionExpressionBuilder(\n nodeFactory.reinterpretCast({\n expr: groupIndex.resolve(),\n wtype: txnPType.wtype,\n sourceLocation,\n }),\n txnPType,\n )\n }\n}\n\nclass IndexedTransactionFieldFunctionBuilder extends FunctionBuilder {\n constructor(\n private gtxn: Expression,\n private config: { txnData: TxnFieldData; returnType: PType; memberName: string },\n ) {\n super(gtxn.sourceLocation)\n }\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [index],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: this.config.memberName,\n argSpec: (a) => [a.required(uint64PType)],\n })\n\n return instanceEb(\n nodeFactory.intrinsicCall({\n sourceLocation,\n stackArgs: [this.gtxn, index.resolve()],\n immediates: [this.config.txnData.immediate],\n wtype: this.config.txnData.wtype,\n opCode: 'gtxnsas',\n }),\n this.config.returnType,\n )\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { type TxnField, type TxnFieldData, TxnFields } from '../../../awst/txn-fields'\nimport { invariant } from '../../../util'\nimport type { PType } from '../../ptypes'\nimport { InnerTransactionPType, uint64PType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { FunctionBuilder, InstanceExpressionBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { anyTxnFields, txnKindToFields } from './txn-fields'\n\nexport class InnerTransactionExpressionBuilder extends InstanceExpressionBuilder<InnerTransactionPType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof InnerTransactionPType, 'ptype must be InnerTransactionPType')\n super(expr, ptype)\n }\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n const txnKind = this.ptype.kind\n const fields = txnKind === undefined ? anyTxnFields : txnKindToFields[txnKind]\n if (name in fields) {\n const [field, returnType] = fields[name as keyof typeof fields]\n const data = TxnFields[field]\n\n if (data.numValues === 1) {\n return instanceEb(\n nodeFactory.innerTransactionField({\n sourceLocation,\n itxn: this.resolve(),\n arrayIndex: null,\n field,\n wtype: data.wtype,\n }),\n returnType,\n )\n } else {\n return new IndexedTransactionFieldFunctionBuilder(this._expr, {\n txnData: data,\n returnType,\n memberName: name,\n field,\n })\n }\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nclass IndexedTransactionFieldFunctionBuilder extends FunctionBuilder {\n constructor(\n private gtxn: Expression,\n private config: { txnData: TxnFieldData; returnType: PType; memberName: string; field: TxnField },\n ) {\n super(gtxn.sourceLocation)\n }\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [index],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: this.config.memberName,\n argSpec: (a) => [a.required(uint64PType)],\n })\n\n return instanceEb(\n nodeFactory.innerTransactionField({\n sourceLocation,\n itxn: this.gtxn,\n arrayIndex: index.resolve(),\n field: this.config.field,\n wtype: this.config.txnData.wtype,\n }),\n this.config.returnType,\n )\n }\n}\n","import type { TransactionKind } from '../../../awst/models'\nimport { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { TxnField, TxnFields } from '../../../awst/txn-fields'\nimport { logger } from '../../../logger'\nimport { codeInvariant, invariant } from '../../../util'\nimport type { PType } from '../../ptypes'\nimport { ItxnParamsPType, ObjectPType, submitGroupItxnFunction, TransactionFunctionType, TuplePType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { FunctionBuilder, InstanceExpressionBuilder } from '../index'\nimport { ArrayLiteralExpressionBuilder } from '../literal/array-literal-expression-builder'\nimport { TupleExpressionBuilder } from '../tuple-expression-builder'\nimport { requireExpressionOfType } from '../util'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { InnerTransactionExpressionBuilder } from './inner-transactions'\nimport { anyTxnFields, txnKindToFields } from './txn-fields'\nimport { getInnerTransactionType, getItxnParamsType } from './util'\n\nexport class ItxnParamsFactoryFunctionBuilder extends FunctionBuilder {\n readonly ptype: TransactionFunctionType\n\n constructor(sourceLocation: SourceLocation, ptype: PType) {\n super(sourceLocation)\n invariant(ptype instanceof TransactionFunctionType, 'ptype must be TransactionFunctionType')\n this.ptype = ptype\n }\n\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [initialFields],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n funcName: this.ptype.name,\n argSpec: (a) => [a.required()],\n })\n const mappedFields = new Map<TxnField, Expression>()\n // Set default fee to 0 (transaction will be paid for from transaction group budget, rather than from the application balance)\n mappedFields.set(TxnField.Fee, nodeFactory.uInt64Constant({ value: 0n, sourceLocation }))\n\n mapTransactionFields(mappedFields, initialFields, this.ptype.kind, sourceLocation)\n const fieldsType = getItxnParamsType(this.ptype.kind)\n\n return new ItxnParamsExpressionBuilder(\n nodeFactory.createInnerTransaction({\n fields: mappedFields,\n sourceLocation,\n wtype: fieldsType.wtype,\n }),\n fieldsType,\n )\n }\n}\n\nfunction mapTransactionFields(\n mappedFields: Map<TxnField, Expression>,\n fields: InstanceBuilder,\n kind: TransactionKind | undefined,\n sourceLocation: SourceLocation,\n) {\n codeInvariant(fields.ptype instanceof ObjectPType, 'fields argument must be an object type')\n const validFields: Record<string, readonly [TxnField, PType]> = kind !== undefined ? txnKindToFields[kind] : anyTxnFields\n for (const [prop] of fields.ptype.orderedProperties()) {\n if (prop in validFields) {\n const [txnField, fieldType] = validFields[prop as keyof typeof validFields]\n const txnFieldData = TxnFields[txnField]\n const propValue = fields.memberAccess(prop, sourceLocation)\n // TODO: Validate prop value\n if (txnField === TxnField.ApplicationArgs) {\n codeInvariant(\n propValue instanceof ArrayLiteralExpressionBuilder || propValue instanceof TupleExpressionBuilder,\n 'Unsupported expression for appArgs',\n propValue.sourceLocation,\n )\n mappedFields.set(\n txnField,\n nodeFactory.tupleExpression({\n items: propValue.getItemBuilders().map((i) => i.toBytes(propValue.sourceLocation)),\n sourceLocation: propValue.sourceLocation,\n }),\n )\n } else if (txnFieldData.numValues > 1) {\n codeInvariant(\n propValue instanceof ArrayLiteralExpressionBuilder || propValue instanceof TupleExpressionBuilder,\n `Unsupported expression for ${prop}`,\n propValue.sourceLocation,\n )\n\n mappedFields.set(\n txnField,\n nodeFactory.tupleExpression({\n items: propValue.getItemBuilders().map((i) => requireExpressionOfType(i, fieldType)),\n sourceLocation: propValue.sourceLocation,\n }),\n )\n } else {\n mappedFields.set(txnField, requireExpressionOfType(propValue, fieldType))\n }\n } else {\n logger.error(sourceLocation, `${prop} not in valid fields `)\n }\n }\n}\n\nabstract class InnerTxnFieldsMethodBuilder extends FunctionBuilder {\n constructor(\n protected builder: ItxnParamsExpressionBuilder,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n}\n\nclass SubmitInnerTxnMethodBuilder extends InnerTxnFieldsMethodBuilder {\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n funcName: 'submit',\n argSpec: () => [],\n })\n const transactionPType = getInnerTransactionType(this.builder.ptype.kind)\n return new InnerTransactionExpressionBuilder(\n nodeFactory.submitInnerTransaction({\n itxns: [this.builder.resolve()],\n wtype: transactionPType.wtype,\n sourceLocation,\n }),\n transactionPType,\n )\n }\n}\n\nexport class SubmitItxnGroupFunctionBuilder extends FunctionBuilder {\n ptype = submitGroupItxnFunction\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const { args: itxnParams } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n callLocation: sourceLocation,\n funcName: this.typeDescription,\n argSpec: (a) => [a.required(ItxnParamsPType), ...args.slice(1).map((_) => a.required(ItxnParamsPType))],\n })\n const resultType = new TuplePType({\n items: itxnParams.map((p, i) => {\n codeInvariant(p.ptype instanceof ItxnParamsPType, `Argument ${i} must be an itxn params type`, p.sourceLocation)\n return getInnerTransactionType(p.ptype.kind)\n }),\n })\n\n return instanceEb(\n nodeFactory.submitInnerTransaction({\n itxns: itxnParams.map((p) => p.resolve()),\n wtype: resultType.wtype,\n sourceLocation,\n }),\n resultType,\n )\n }\n}\n\nclass SetInnerTxnMethodBuilder extends InnerTxnFieldsMethodBuilder {\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [updatedFields],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n funcName: 'set',\n argSpec: (a) => [a.required()],\n })\n\n const mappedFields = new Map<TxnField, Expression>()\n const fieldsType = this.builder.ptype\n\n mapTransactionFields(mappedFields, updatedFields, fieldsType.kind, sourceLocation)\n\n return new ItxnParamsExpressionBuilder(\n nodeFactory.updateInnerTransaction({\n itxn: this.builder.resolve(),\n fields: mappedFields,\n sourceLocation,\n wtype: fieldsType.wtype,\n }),\n fieldsType,\n )\n }\n}\nclass CopyInnerTxnMethodBuilder extends InnerTxnFieldsMethodBuilder {\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n funcName: 'copy',\n argSpec: () => [],\n })\n\n return new InnerTransactionExpressionBuilder(\n nodeFactory.copy({\n value: this.builder.resolve(),\n sourceLocation,\n }),\n this.builder.ptype,\n )\n }\n}\n\nexport class ItxnParamsExpressionBuilder extends InstanceExpressionBuilder<ItxnParamsPType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof ItxnParamsPType, 'ptype must be InnerTransactionFieldsPType')\n super(expr, ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'submit':\n return new SubmitInnerTxnMethodBuilder(this, sourceLocation)\n case 'set':\n return new SetInnerTxnMethodBuilder(this, sourceLocation)\n case 'copy':\n return new CopyInnerTxnMethodBuilder(this, sourceLocation)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n","import { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { invariant } from '../../util'\nimport type { PType } from '../ptypes'\nimport { Uint64EnumMemberType, Uint64EnumType } from '../ptypes'\nimport { InstanceExpressionBuilder, NodeBuilder } from './index'\n\nexport class Uint64EnumTypeBuilder extends NodeBuilder {\n readonly ptype: Uint64EnumType\n constructor(sourceLocation: SourceLocation, ptype: PType) {\n super(sourceLocation)\n invariant(ptype instanceof Uint64EnumType, 'ptype must be Uint64EnumType')\n this.ptype = ptype\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n if (name in this.ptype.members) {\n return new Uint64EnumMemberExpressionBuilder(\n nodeFactory.uInt64Constant({\n value: this.ptype.members[name],\n sourceLocation,\n }),\n this.ptype.memberType,\n )\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nexport class Uint64EnumMemberExpressionBuilder extends InstanceExpressionBuilder<Uint64EnumMemberType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof Uint64EnumMemberType, 'ptype must be Uint64EnumType')\n super(expr, ptype)\n }\n}\n","import type { awst } from '../../awst'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { uint64RangeWType } from '../../awst/wtypes'\nimport type { PType } from '../ptypes'\nimport { IterableIteratorType, uint64PType } from '../ptypes'\nimport type { InstanceBuilder, NodeBuilder } from './index'\nimport { FunctionBuilder } from './index'\nimport { IterableIteratorExpressionBuilder } from './iterable-iterator-expression-builder'\nimport { parseFunctionArgs } from './util/arg-parsing'\n\nexport class UrangeFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<InstanceBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const { args: uArgs } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: 'urange',\n argSpec: (a) => [a.required(uint64PType), ...args.slice(1, 3).map((_) => a.required(uint64PType))],\n })\n let expr: awst.Range\n if (uArgs.length === 1) {\n expr = nodeFactory.range({\n start: nodeFactory.uInt64Constant({ value: 0n, sourceLocation }),\n stop: uArgs[0].resolve(),\n step: nodeFactory.uInt64Constant({ value: 1n, sourceLocation }),\n sourceLocation,\n wtype: uint64RangeWType,\n })\n } else if (uArgs.length === 2) {\n expr = nodeFactory.range({\n start: uArgs[0].resolve(),\n stop: uArgs[1].resolve(),\n step: nodeFactory.uInt64Constant({ value: 0n, sourceLocation }),\n sourceLocation,\n wtype: uint64RangeWType,\n })\n } else {\n expr = nodeFactory.range({\n start: uArgs[0].resolve(),\n stop: uArgs[1].resolve(),\n step: uArgs[2].resolve(),\n sourceLocation,\n wtype: uint64RangeWType,\n })\n }\n return new IterableIteratorExpressionBuilder(expr, IterableIteratorType.parameterise([uint64PType]))\n }\n}\n","import { Arc4AbiMethodDecoratorBuilder, Arc4BareMethodDecoratorBuilder } from '../eb/arc4-bare-method-decorator-builder'\nimport {\n DynamicArrayConstructorBuilder,\n DynamicArrayExpressionBuilder,\n StaticArrayConstructorBuilder,\n StaticArrayExpressionBuilder,\n} from '../eb/arc4/arrays'\nimport { UintNConstructorBuilder, UintNExpressionBuilder } from '../eb/arc4/uint-n-constructor-builder'\nimport { AssertFunctionBuilder, ErrFunctionBuilder } from '../eb/assert-function-builder'\nimport { AssertMatchFunctionBuilder } from '../eb/assert-match-function-builder'\nimport { BigUintExpressionBuilder, BigUintFunctionBuilder } from '../eb/biguint-expression-builder'\nimport { BooleanExpressionBuilder, BooleanFunctionBuilder } from '../eb/boolean-expression-builder'\nimport { BytesExpressionBuilder, BytesFunctionBuilder } from '../eb/bytes-expression-builder'\nimport { EnsureBudgetFunctionBuilder } from '../eb/ensure-budget'\nimport { FreeSubroutineExpressionBuilder } from '../eb/free-subroutine-expression-builder'\nimport { IntrinsicEnumBuilder } from '../eb/intrinsic-enum-builder'\nimport { IterableIteratorExpressionBuilder } from '../eb/iterable-iterator-expression-builder'\nimport { ObjectExpressionBuilder } from '../eb/literal/object-expression-builder'\nimport { LogFunctionBuilder } from '../eb/log-function-builder'\nimport { NamespaceBuilder } from '../eb/namespace-builder'\nimport { NativeArrayExpressionBuilder } from '../eb/native-array-expression-builder'\nimport { FreeIntrinsicOpBuilder, IntrinsicOpGroupBuilder } from '../eb/op-module-builder'\nimport { AccountExpressionBuilder, AccountFunctionBuilder } from '../eb/reference/account'\nimport { ApplicationExpressionBuilder, ApplicationFunctionBuilder } from '../eb/reference/application'\nimport { AssetExpressionBuilder, AssetFunctionBuilder } from '../eb/reference/asset'\nimport {\n BoxExpressionBuilder,\n BoxFunctionBuilder,\n BoxMapExpressionBuilder,\n BoxMapFunctionBuilder,\n BoxRefExpressionBuilder,\n BoxRefFunctionBuilder,\n} from '../eb/storage/box'\nimport { GlobalStateExpressionBuilder, GlobalStateFunctionBuilder } from '../eb/storage/global-state'\nimport { LocalStateExpressionBuilder, LocalStateFunctionBuilder } from '../eb/storage/local-state'\nimport { StringExpressionBuilder, StringFunctionBuilder } from '../eb/string-expression-builder'\nimport { GroupTransactionExpressionBuilder, GroupTransactionFunctionBuilder } from '../eb/transactions/group-transactions'\nimport {\n ItxnParamsExpressionBuilder,\n ItxnParamsFactoryFunctionBuilder,\n SubmitItxnGroupFunctionBuilder,\n} from '../eb/transactions/inner-transaction-params'\nimport { InnerTransactionExpressionBuilder } from '../eb/transactions/inner-transactions'\nimport { TupleExpressionBuilder } from '../eb/tuple-expression-builder'\nimport { Uint64EnumMemberExpressionBuilder, Uint64EnumTypeBuilder } from '../eb/uint64-enum-type-builder'\nimport { UInt64ExpressionBuilder, UInt64FunctionBuilder } from '../eb/uint64-expression-builder'\nimport { UrangeFunctionBuilder } from '../eb/urange-function'\nimport { VoidExpressionBuilder } from '../eb/void-expression-builder'\nimport { OP_METADATA } from '../op-metadata'\nimport type { TypeRegistry } from '../type-registry'\nimport {\n DynamicArrayConstructor,\n DynamicArrayType,\n StaticArrayConstructor,\n StaticArrayType,\n UintNConstructor,\n UintNType,\n} from './arc4-types'\nimport {\n AccountFunction,\n accountPType,\n anyGtxnType,\n applicationCallGtxnType,\n applicationCallItxnFn,\n applicationCallItxnParamsType,\n ApplicationFunctionType,\n applicationItxnType,\n applicationPType,\n ApplicationTxnFunction,\n arc4AbiMethodDecorator,\n arc4BareMethodDecorator,\n ArrayPType,\n assertFunction,\n assertMatchFunction,\n assetConfigGtxnType,\n assetConfigItxnFn,\n assetConfigItxnParamsType,\n assetConfigItxnType,\n AssetConfigTxnFunction,\n assetFreezeGtxnType,\n assetFreezeItxnFn,\n assetFreezeItxnParamsType,\n assetFreezeItxnType,\n AssetFreezeTxnFunction,\n AssetFunction,\n assetPType,\n assetTransferGtxnType,\n assetTransferItxnFn,\n assetTransferItxnParamsType,\n assetTransferItxnType,\n AssetTransferTxnFunction,\n BigUintFunction,\n biguintPType,\n BooleanFunction,\n boolPType,\n BoxFunction,\n BoxMapFunction,\n BoxMapPType,\n BoxPType,\n BoxRefFunction,\n boxRefType,\n BytesFunction,\n bytesPType,\n ensureBudgetFunction,\n errFunction,\n FunctionPType,\n GlobalStateFunction,\n GlobalStateType,\n IntrinsicFunctionGroupType,\n IntrinsicFunctionType,\n IterableIteratorType,\n keyRegistrationGtxnType,\n keyRegistrationItxnFn,\n keyRegistrationItxnParamsType,\n keyRegistrationItxnType,\n KeyRegistrationTxnFunction,\n LocalStateFunction,\n LocalStateType,\n logFunction,\n NamespacePType,\n ObjectPType,\n onCompleteActionType,\n opUpFeeSourceType,\n paymentGtxnType,\n paymentItxnFn,\n paymentItxnParamsType,\n paymentItxnType,\n PaymentTxnFunction,\n StringFunction,\n stringPType,\n submitGroupItxnFunction,\n TransactionFunction,\n transactionTypeType,\n TuplePType,\n Uint64Function,\n uint64PType,\n urangeFunction,\n voidPType,\n} from './index'\nimport { ALL_OP_ENUMS } from './op-ptypes'\n\nexport function registerPTypes(typeRegistry: TypeRegistry) {\n if (typeRegistry.hasRegistrations) {\n return\n }\n typeRegistry.register({ ptype: boolPType, instanceEb: BooleanExpressionBuilder })\n typeRegistry.register({ ptype: BooleanFunction, singletonEb: BooleanFunctionBuilder })\n typeRegistry.register({ ptype: uint64PType, instanceEb: UInt64ExpressionBuilder })\n typeRegistry.register({ ptype: Uint64Function, singletonEb: UInt64FunctionBuilder })\n typeRegistry.register({ ptype: biguintPType, instanceEb: BigUintExpressionBuilder })\n typeRegistry.register({ ptype: BigUintFunction, singletonEb: BigUintFunctionBuilder })\n typeRegistry.register({ ptype: bytesPType, instanceEb: BytesExpressionBuilder })\n typeRegistry.register({ ptype: BytesFunction, singletonEb: BytesFunctionBuilder })\n typeRegistry.register({ ptype: stringPType, instanceEb: StringExpressionBuilder })\n typeRegistry.register({ ptype: StringFunction, singletonEb: StringFunctionBuilder })\n typeRegistry.register({ ptype: logFunction, singletonEb: LogFunctionBuilder })\n typeRegistry.register({ ptype: assertFunction, singletonEb: AssertFunctionBuilder })\n typeRegistry.register({ ptype: errFunction, singletonEb: ErrFunctionBuilder })\n typeRegistry.register({ ptype: AssetFunction, singletonEb: AssetFunctionBuilder })\n typeRegistry.register({ ptype: assetPType, instanceEb: AssetExpressionBuilder })\n typeRegistry.register({ ptype: FunctionPType, singletonEb: FreeSubroutineExpressionBuilder })\n typeRegistry.register({ ptype: NamespacePType, singletonEb: NamespaceBuilder })\n typeRegistry.register({ ptype: voidPType, instanceEb: VoidExpressionBuilder })\n for (const enumPType of ALL_OP_ENUMS) {\n typeRegistry.register({ ptype: enumPType, singletonEb: IntrinsicEnumBuilder })\n }\n for (const [name, metadata] of Object.entries(OP_METADATA)) {\n if (metadata.type === 'op-grouping') {\n typeRegistry.register({\n ptype: new IntrinsicFunctionGroupType({\n name,\n }),\n singletonEb: IntrinsicOpGroupBuilder,\n })\n } else {\n typeRegistry.register({\n ptype: new IntrinsicFunctionType({\n name,\n }),\n singletonEb: FreeIntrinsicOpBuilder,\n })\n }\n }\n\n typeRegistry.register({ ptype: ArrayPType, instanceEb: NativeArrayExpressionBuilder })\n\n typeRegistry.register({ ptype: GlobalStateFunction, singletonEb: GlobalStateFunctionBuilder })\n typeRegistry.registerGeneric({ ptype: GlobalStateType, instanceEb: GlobalStateExpressionBuilder })\n typeRegistry.register({ ptype: LocalStateFunction, singletonEb: LocalStateFunctionBuilder })\n typeRegistry.registerGeneric({ ptype: LocalStateType, instanceEb: LocalStateExpressionBuilder })\n typeRegistry.register({ ptype: BoxFunction, singletonEb: BoxFunctionBuilder })\n typeRegistry.registerGeneric({ ptype: BoxPType, instanceEb: BoxExpressionBuilder })\n typeRegistry.register({ ptype: BoxMapFunction, singletonEb: BoxMapFunctionBuilder })\n typeRegistry.registerGeneric({ ptype: BoxMapPType, instanceEb: BoxMapExpressionBuilder })\n typeRegistry.register({ ptype: BoxRefFunction, singletonEb: BoxRefFunctionBuilder })\n typeRegistry.register({ ptype: boxRefType, instanceEb: BoxRefExpressionBuilder })\n typeRegistry.register({ ptype: TuplePType, instanceEb: TupleExpressionBuilder })\n typeRegistry.register({ ptype: arc4AbiMethodDecorator, singletonEb: Arc4AbiMethodDecoratorBuilder })\n typeRegistry.register({ ptype: arc4BareMethodDecorator, singletonEb: Arc4BareMethodDecoratorBuilder })\n typeRegistry.register({ ptype: ObjectPType, instanceEb: ObjectExpressionBuilder })\n typeRegistry.register({ ptype: AccountFunction, singletonEb: AccountFunctionBuilder })\n typeRegistry.register({ ptype: accountPType, instanceEb: AccountExpressionBuilder })\n typeRegistry.register({ ptype: UintNConstructor, singletonEb: UintNConstructorBuilder })\n typeRegistry.registerGeneric({ ptype: UintNType, instanceEb: UintNExpressionBuilder })\n typeRegistry.register({ ptype: DynamicArrayConstructor, singletonEb: DynamicArrayConstructorBuilder })\n typeRegistry.registerGeneric({ ptype: DynamicArrayType, instanceEb: DynamicArrayExpressionBuilder })\n typeRegistry.register({ ptype: StaticArrayConstructor, singletonEb: StaticArrayConstructorBuilder })\n typeRegistry.registerGeneric({ ptype: StaticArrayType, instanceEb: StaticArrayExpressionBuilder })\n\n typeRegistry.register({ ptype: ApplicationFunctionType, singletonEb: ApplicationFunctionBuilder })\n typeRegistry.register({ ptype: applicationPType, instanceEb: ApplicationExpressionBuilder })\n\n typeRegistry.register({ ptype: paymentGtxnType, instanceEb: GroupTransactionExpressionBuilder })\n typeRegistry.register({ ptype: PaymentTxnFunction, singletonEb: GroupTransactionFunctionBuilder })\n typeRegistry.register({ ptype: keyRegistrationGtxnType, instanceEb: GroupTransactionExpressionBuilder })\n typeRegistry.register({ ptype: KeyRegistrationTxnFunction, singletonEb: GroupTransactionFunctionBuilder })\n typeRegistry.register({ ptype: assetConfigGtxnType, instanceEb: GroupTransactionExpressionBuilder })\n typeRegistry.register({ ptype: AssetConfigTxnFunction, singletonEb: GroupTransactionFunctionBuilder })\n typeRegistry.register({ ptype: assetTransferGtxnType, instanceEb: GroupTransactionExpressionBuilder })\n typeRegistry.register({ ptype: AssetTransferTxnFunction, singletonEb: GroupTransactionFunctionBuilder })\n typeRegistry.register({ ptype: assetFreezeGtxnType, instanceEb: GroupTransactionExpressionBuilder })\n typeRegistry.register({ ptype: AssetFreezeTxnFunction, singletonEb: GroupTransactionFunctionBuilder })\n typeRegistry.register({ ptype: applicationCallGtxnType, instanceEb: GroupTransactionExpressionBuilder })\n typeRegistry.register({ ptype: ApplicationTxnFunction, singletonEb: GroupTransactionFunctionBuilder })\n typeRegistry.register({ ptype: anyGtxnType, instanceEb: GroupTransactionExpressionBuilder })\n typeRegistry.register({ ptype: TransactionFunction, singletonEb: GroupTransactionFunctionBuilder })\n\n typeRegistry.register({ ptype: assertMatchFunction, singletonEb: AssertMatchFunctionBuilder })\n typeRegistry.register({ ptype: ensureBudgetFunction, singletonEb: EnsureBudgetFunctionBuilder })\n\n for (const enumType of [opUpFeeSourceType, onCompleteActionType, transactionTypeType]) {\n typeRegistry.register({ ptype: enumType, singletonEb: Uint64EnumTypeBuilder })\n typeRegistry.register({ ptype: enumType.memberType, instanceEb: Uint64EnumMemberExpressionBuilder })\n }\n\n typeRegistry.register({ ptype: urangeFunction, singletonEb: UrangeFunctionBuilder })\n typeRegistry.registerGeneric({ ptype: IterableIteratorType, instanceEb: IterableIteratorExpressionBuilder })\n\n typeRegistry.register({ ptype: paymentItxnFn, singletonEb: ItxnParamsFactoryFunctionBuilder })\n typeRegistry.register({ ptype: keyRegistrationItxnFn, singletonEb: ItxnParamsFactoryFunctionBuilder })\n typeRegistry.register({ ptype: assetConfigItxnFn, singletonEb: ItxnParamsFactoryFunctionBuilder })\n typeRegistry.register({ ptype: assetTransferItxnFn, singletonEb: ItxnParamsFactoryFunctionBuilder })\n typeRegistry.register({ ptype: assetFreezeItxnFn, singletonEb: ItxnParamsFactoryFunctionBuilder })\n typeRegistry.register({ ptype: applicationCallItxnFn, singletonEb: ItxnParamsFactoryFunctionBuilder })\n typeRegistry.register({ ptype: submitGroupItxnFunction, singletonEb: SubmitItxnGroupFunctionBuilder })\n\n typeRegistry.register({ ptype: paymentItxnType, instanceEb: InnerTransactionExpressionBuilder })\n typeRegistry.register({ ptype: keyRegistrationItxnType, instanceEb: InnerTransactionExpressionBuilder })\n typeRegistry.register({ ptype: assetConfigItxnType, instanceEb: InnerTransactionExpressionBuilder })\n typeRegistry.register({ ptype: assetTransferItxnType, instanceEb: InnerTransactionExpressionBuilder })\n typeRegistry.register({ ptype: assetFreezeItxnType, instanceEb: InnerTransactionExpressionBuilder })\n typeRegistry.register({ ptype: applicationItxnType, instanceEb: InnerTransactionExpressionBuilder })\n\n typeRegistry.register({ ptype: paymentItxnParamsType, instanceEb: ItxnParamsExpressionBuilder })\n typeRegistry.register({ ptype: keyRegistrationItxnParamsType, instanceEb: ItxnParamsExpressionBuilder })\n typeRegistry.register({ ptype: assetConfigItxnParamsType, instanceEb: ItxnParamsExpressionBuilder })\n typeRegistry.register({ ptype: assetTransferItxnParamsType, instanceEb: ItxnParamsExpressionBuilder })\n typeRegistry.register({ ptype: assetFreezeItxnParamsType, instanceEb: ItxnParamsExpressionBuilder })\n typeRegistry.register({ ptype: applicationCallItxnParamsType, instanceEb: ItxnParamsExpressionBuilder })\n}\n","import ts from 'typescript'\nimport { logger } from '../logger'\n\nexport function resolveModuleNameLiterals(\n moduleLiterals: readonly ts.StringLiteralLike[],\n containingFile: string,\n redirectedReference: ts.ResolvedProjectReference | undefined,\n options: ts.CompilerOptions,\n): readonly ts.ResolvedModuleWithFailedLookupLocations[] {\n return moduleLiterals.map(({ text: moduleName }) => {\n const result = ts.resolveModuleName(\n moduleName,\n containingFile,\n options,\n {\n fileExists: ts.sys.fileExists,\n readFile: ts.sys.readFile,\n },\n undefined,\n redirectedReference,\n )\n if (!result.resolvedModule && !containingFile.endsWith('.d.ts')) {\n logger.warn(undefined, `Could not resolve typings for module ${moduleName} referenced by file ${containingFile}. `)\n }\n\n return result\n })\n}\n","import ts from 'typescript'\nimport { SourceLocation } from '../awst/source-location'\nimport type { CompileOptions } from '../compile-options'\nimport { logger } from '../logger'\nimport type { DeliberateAny } from '../typescript-helpers'\nimport { normalisePath } from '../util'\nimport { resolveModuleNameLiterals } from './resolve-module-name-literals'\n\nexport type SourceFileMapping = Record<string, ts.SourceFile>\nexport type CreateProgramResult = {\n sourceFiles: SourceFileMapping\n program: ts.Program\n}\n\nexport function createTsProgram(options: CompileOptions) {\n const compilerOptions: ts.CompilerOptions = {\n allowJs: false,\n noImplicitAny: true,\n target: ts.ScriptTarget.ES2022,\n module: ts.ModuleKind.ESNext,\n moduleResolution: ts.ModuleResolutionKind.Bundler,\n }\n\n const host = ts.createCompilerHost(compilerOptions)\n const program = ts.createProgram(\n options.filePaths.map((p) => p.sourceFile),\n compilerOptions,\n {\n ...host,\n resolveModuleNameLiterals,\n },\n )\n const programDirectory = program.getCurrentDirectory()\n\n reportDiagnostics(program)\n\n const sourceFiles = Object.fromEntries(\n program\n .getSourceFiles()\n .filter((f) => !f.isDeclarationFile)\n .map((f) => {\n if (!(f as DeliberateAny)['externalModuleIndicator']) {\n logger.warn(\n SourceLocation.fromFile(f, programDirectory),\n 'File is being interpreted as a script because it has no import or export statements. Containing statements will be evaluated in a global context.',\n )\n }\n return [normalisePath(f.fileName, programDirectory), f]\n }),\n )\n\n return {\n sourceFiles,\n program,\n }\n}\n\nfunction reportDiagnostics(program: ts.Program) {\n function reportDiagnostic(diagnostic: ts.Diagnostic) {\n if (isDiagnosticWithLocation(diagnostic)) {\n const sourceLocation = SourceLocation.fromDiagnostic(diagnostic, program.getCurrentDirectory())\n const text = typeof diagnostic.messageText === 'string' ? diagnostic.messageText : diagnostic.messageText.messageText\n switch (diagnostic.category) {\n case ts.DiagnosticCategory.Error:\n logger.error(sourceLocation, text)\n break\n case ts.DiagnosticCategory.Warning:\n logger.warn(sourceLocation, text)\n break\n }\n }\n }\n\n function isDiagnosticWithLocation(d: ts.Diagnostic): d is ts.DiagnosticWithLocation {\n return Object.hasOwn(d, 'file')\n }\n\n program.getSemanticDiagnostics().forEach(reportDiagnostic)\n program.getSyntacticDiagnostics().forEach(reportDiagnostic)\n}\n","import path from 'node:path'\nimport ts from 'typescript'\nimport type { SourceFileMapping } from './index'\n\nexport function jsonSerializeSourceFiles(sourceFiles: SourceFileMapping, programDirectory: string) {\n return JSON.stringify(\n Object.fromEntries(Object.entries(sourceFiles).map(([key, value]) => [path.join(programDirectory, key), value] as const)),\n (key, value) => {\n if (ts.isSourceFile(value)) {\n return value.getFullText().split(/\\n/g)\n }\n return value\n },\n 2,\n )\n}\n","import { randomUUID } from 'crypto'\nimport fs from 'fs'\nimport type { WriteFileOptions } from 'node:fs'\nimport path from 'node:path'\nimport os from 'os'\n\nexport type TempFile = {\n writeFileSync(data: NodeJS.ArrayBufferView, options?: WriteFileOptions): void\n writeFileSync(data: string, options?: WriteFileOptions): void\n readonly filePath: string\n} & Disposable\n\nfunction ensureTempDir(): string {\n const tempDir = path.join(os.tmpdir(), 'puya-ts')\n if (!fs.existsSync(tempDir)) fs.mkdirSync(tempDir)\n return tempDir\n}\n\nexport function generateTempFile(options?: { ext?: string }): TempFile {\n const { ext = 'tmp' } = options ?? {}\n const filePath = path.join(ensureTempDir(), `${randomUUID()}.${ext}`)\n\n return {\n get filePath() {\n return filePath\n },\n writeFileSync(data: string | NodeJS.ArrayBufferView, options?: WriteFileOptions) {\n fs.writeFileSync(filePath, data, options)\n },\n [Symbol.dispose]() {\n fs.rmSync(filePath)\n },\n }\n}\n","import type { CompilationSet } from '../awst/models'\nimport type { AWST } from '../awst/nodes'\nimport type { AlgoFile } from '../compile-options'\nimport { mkDirIfNotExists } from '../util'\nimport type { CompilationSetMapping } from './options'\n\nexport function buildCompilationSetMapping({\n awst,\n inputPaths,\n compilationSet,\n}: {\n awst: AWST[]\n inputPaths: AlgoFile[]\n compilationSet: CompilationSet\n}): CompilationSetMapping {\n const setIds = new Set(compilationSet.map((s) => s.id))\n\n return awst.reduce((acc, cur) => {\n if (setIds.has(cur.id.toString())) {\n const matchedPath = inputPaths.find((p) => p.sourceFile === cur.sourceLocation.file)\n if (matchedPath) {\n mkDirIfNotExists(matchedPath.outDir)\n acc[cur.id.toString()] = matchedPath.outDir\n }\n }\n return acc\n }, {} as CompilationSetMapping)\n}\n","export enum LocalsCoalescingStrategy {\n root_operand = 'root_operand',\n root_operand_excluding_args = 'root_operand_excluding_args',\n aggressive = 'aggressive',\n}\nexport type CompilationSetMapping = Record<string, string>\n\nexport const defaultPuyaOptions: PuyaPassThroughOptions = {\n outputTeal: true,\n outputArc32: true,\n outputSsaIr: false,\n outputOptimizationIr: false,\n outputDestructuredIr: false,\n outputMemoryIr: false,\n outputBytecode: false,\n matchAlgodBytecode: false,\n debugLevel: 1,\n optimizationLevel: 1,\n targetAvmVersion: 10,\n cliTemplateDefinitions: [],\n templateVarsPrefix: 'TMPL_',\n localsCoalescingStrategy: LocalsCoalescingStrategy.root_operand,\n}\nexport type PuyaPassThroughOptions = Omit<PuyaOptions, 'compilationSet'>\n\nexport class PuyaOptions {\n outputTeal: boolean\n outputArc32: boolean\n outputSsaIr: boolean\n outputOptimizationIr: boolean\n outputDestructuredIr: boolean\n outputMemoryIr: boolean\n outputBytecode: boolean\n matchAlgodBytecode: boolean\n debugLevel: number\n optimizationLevel: number\n targetAvmVersion: number\n cliTemplateDefinitions: string[]\n templateVarsPrefix: string\n localsCoalescingStrategy: LocalsCoalescingStrategy\n\n compilationSet: CompilationSetMapping\n constructor({\n passThroughOptions,\n compilationSet,\n }: {\n passThroughOptions: PuyaPassThroughOptions\n compilationSet: CompilationSetMapping\n }) {\n this.compilationSet = compilationSet\n this.outputTeal = passThroughOptions.outputTeal\n this.outputArc32 = passThroughOptions.outputArc32\n this.outputSsaIr = passThroughOptions.outputSsaIr\n this.outputOptimizationIr = passThroughOptions.outputOptimizationIr\n this.outputDestructuredIr = passThroughOptions.outputDestructuredIr\n this.outputMemoryIr = passThroughOptions.outputMemoryIr\n this.outputBytecode = passThroughOptions.outputBytecode\n this.matchAlgodBytecode = passThroughOptions.matchAlgodBytecode\n this.debugLevel = passThroughOptions.debugLevel\n this.optimizationLevel = passThroughOptions.optimizationLevel\n this.targetAvmVersion = passThroughOptions.targetAvmVersion\n this.cliTemplateDefinitions = passThroughOptions.cliTemplateDefinitions\n this.templateVarsPrefix = passThroughOptions.templateVarsPrefix\n this.localsCoalescingStrategy = passThroughOptions.localsCoalescingStrategy\n }\n}\n","import { sync } from 'cross-spawn'\nimport { logger } from '../logger'\n\nexport function runChildProc({ command, args, cwd }: { command: string; args: string[]; cwd?: string }) {\n const proc = sync(command, args, {\n // forward all stdin/stdout/stderr to current handlers, with correct interleaving\n stdio: 'inherit',\n cwd,\n })\n\n if (proc.error) {\n // only happens during invocation error, not error return status\n if ('code' in proc.error && proc.error.code === 'ENOENT') {\n logger.fatal(undefined, `Could not find ${command}. Please ensure it is installed and available on your PATH`)\n } else {\n throw proc.error\n }\n }\n if (proc.status !== 0) {\n logger.fatal(undefined, `Compilation exited with status ${proc.status}`)\n }\n}\n","import { AwstSerializer, SnakeCaseSerializer } from '../awst/json-serialize-awst'\nimport type { CompilationSet } from '../awst/models'\nimport type { AWST } from '../awst/nodes'\nimport type { CompileOptions } from '../compile-options'\nimport { logger, LogLevel } from '../logger'\nimport type { SourceFileMapping } from '../parser'\nimport { jsonSerializeSourceFiles } from '../parser/json-serialize-source-files'\nimport { generateTempFile } from '../util/generate-temp-file'\nimport { buildCompilationSetMapping } from './build-compilation-set-mapping'\nimport type { PuyaPassThroughOptions } from './options'\nimport { PuyaOptions } from './options'\nimport { runChildProc } from './run-child-proc'\n\nexport function invokePuya({\n moduleAwst,\n programDirectory,\n sourceFiles,\n compileOptions,\n compilationSet,\n passThroughOptions,\n}: {\n moduleAwst: AWST[]\n programDirectory: string\n sourceFiles: SourceFileMapping\n compileOptions: CompileOptions\n compilationSet: CompilationSet\n passThroughOptions: PuyaPassThroughOptions\n}) {\n // Write AWST file\n using moduleAwstFile = generateTempFile()\n logger.debug(undefined, `Writing awst to ${moduleAwstFile.filePath}`)\n const serializer = new AwstSerializer({\n programDirectory: programDirectory,\n sourcePaths: 'absolute',\n })\n moduleAwstFile.writeFileSync(serializer.serialize(moduleAwst), 'utf-8')\n\n // Write source annotations\n using moduleSourceFile = generateTempFile()\n logger.debug(undefined, `Write source to ${moduleSourceFile.filePath}`)\n moduleSourceFile.writeFileSync(jsonSerializeSourceFiles(sourceFiles, programDirectory), 'utf-8')\n\n // Write puya options\n const puyaOptions = new PuyaOptions({\n passThroughOptions: passThroughOptions,\n compilationSet: buildCompilationSetMapping({\n awst: moduleAwst,\n inputPaths: compileOptions.filePaths,\n compilationSet,\n }),\n })\n using optionsFile = generateTempFile()\n logger.debug(undefined, `Write options to ${optionsFile.filePath}`)\n optionsFile.writeFileSync(new SnakeCaseSerializer().serialize(puyaOptions))\n\n logger.debug(\n undefined,\n `Invoking puya: puya.exe --options ${optionsFile.filePath} --awst ${moduleAwstFile.filePath} --source-annotations ${moduleSourceFile.filePath}`,\n )\n runChildProc({\n command: 'puya.exe',\n args: [\n '--options',\n optionsFile.filePath,\n `--awst`,\n moduleAwstFile.filePath,\n `--source-annotations`,\n moduleSourceFile.filePath,\n '--log-level',\n getPuyaLogLevel(compileOptions.logLevel),\n ],\n cwd: programDirectory,\n })\n}\n\nfunction getPuyaLogLevel(logLevel: LogLevel): string {\n switch (logLevel) {\n case LogLevel.Debug:\n return 'debug'\n case LogLevel.Info:\n return 'info'\n case LogLevel.Warn:\n return 'warning'\n case LogLevel.Error:\n return 'error'\n case LogLevel.Critical:\n return 'critical'\n }\n}\n","import type ts from 'typescript'\nimport type { CompilationSet } from './awst/models'\nimport type { AWST } from './awst/nodes'\nimport { buildAwst } from './awst_build'\nimport { registerPTypes } from './awst_build/ptypes/register'\nimport { typeRegistry } from './awst_build/type-registry'\nimport type { CompileOptions } from './compile-options'\nimport { AwstBuildFailureError } from './errors'\nimport type { LogEvent } from './logger'\nimport { logger } from './logger'\nimport { createTsProgram } from './parser'\nimport { invokePuya } from './puya'\nimport type { PuyaPassThroughOptions } from './puya/options'\nimport {\n base32ToUint8Array,\n base64ToUint8Array,\n bigIntToUint8Array,\n hexToUint8Array,\n uint8ArrayToBase32,\n uint8ArrayToBase64,\n uint8ArrayToBigInt,\n uint8ArrayToHex,\n uint8ArrayToUtf8,\n utf8ToUint8Array,\n} from './util'\n\nexport { SourceLocation } from './awst/source-location'\nexport { anyPType, ContractClassPType, FunctionPType, PType } from './awst_build/ptypes'\nexport { registerPTypes } from './awst_build/ptypes/register'\nexport { typeRegistry } from './awst_build/type-registry'\nexport { TypeResolver } from './awst_build/type-resolver'\n\nexport const encodingUtil = {\n utf8ToUint8Array,\n bigIntToUint8Array,\n hexToUint8Array,\n base32ToUint8Array,\n base64ToUint8Array,\n\n uint8ArrayToUtf8,\n uint8ArrayToHex,\n uint8ArrayToBase32,\n uint8ArrayToBase64,\n uint8ArrayToBigInt,\n}\n\nexport type CompileResult = {\n logs: LogEvent[]\n programDirectory: string\n awst?: AWST[]\n ast?: Record<string, ts.SourceFile>\n compilationSet: CompilationSet\n}\n\nexport function compile(options: CompileOptions, passThroughOptions: PuyaPassThroughOptions): CompileResult {\n registerPTypes(typeRegistry)\n const programResult = createTsProgram(options)\n const programDirectory = programResult.program.getCurrentDirectory()\n let moduleAwst: AWST[] = []\n let compilationSet: CompilationSet = []\n try {\n ;[moduleAwst, compilationSet] = buildAwst(programResult, options)\n } catch (e) {\n if (e instanceof AwstBuildFailureError) {\n return {\n programDirectory,\n logs: logger.export(),\n ast: programResult.sourceFiles,\n compilationSet,\n }\n }\n throw e\n }\n if (!options.dryRun) {\n invokePuya({\n passThroughOptions,\n compileOptions: options,\n moduleAwst,\n programDirectory,\n compilationSet,\n sourceFiles: programResult.sourceFiles,\n })\n }\n\n return {\n programDirectory,\n awst: moduleAwst,\n logs: logger.export(),\n ast: programResult.sourceFiles,\n compilationSet,\n }\n}\n"],"names":["fs","nodes.BytesConstant","nodes.AssignmentExpression","wtypes.bytesWType","wtypes.stringWType","wtypes.uint64WType","wtypes.biguintWType","wtypes.boolWType","wtypes.stateKeyWType","wtypes.boxKeyWType","wtypes.voidWType","wtypes.assetWType","wtypes.accountWType","wtypes.applicationWType","awst.IntegerConstant","awst.VarExpression","awst.FieldExpression","awst.IndexExpression","awst.TupleExpression","awst.AppStateExpression","awst.AppAccountStateExpression","awst.BoxValueExpression","awst.ReinterpretCast","ConcatExpressionBuilder","awst.StringConstant","awst.AssignmentExpression","awst.ContractMethod","awst.Subroutine","ptypes.accountPType","ptypes.uint64PType","ptypes.TuplePType","ptypes.boolPType","ptypes.bytesPType","ptypes.voidPType","ptypes.applicationPType","ptypes.assetPType","ptypes.base64PType","ptypes.biguintPType","ptypes.ecPType","ptypes.ecdsaPType","ptypes.vrfVerifyPType","IndexedTransactionFieldFunctionBuilder"],"mappings":"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"}