@algorandfoundation/algokit-utils 10.0.0-alpha.9 → 10.0.0-beta.2

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 (1602) hide show
  1. package/_virtual/_rolldown/runtime.js +23 -0
  2. package/abi/index.d.ts +2 -1
  3. package/abi/index.js +8 -5
  4. package/abi/index.mjs +2 -2
  5. package/account-manager.d.ts +447 -0
  6. package/account-manager.js +617 -0
  7. package/account-manager.js.map +1 -0
  8. package/account-manager.mjs +613 -0
  9. package/account-manager.mjs.map +1 -0
  10. package/account.d.ts +151 -0
  11. package/account.js +10 -0
  12. package/account.js.map +1 -0
  13. package/account.mjs +9 -0
  14. package/account.mjs.map +1 -0
  15. package/algo25/index.js +3 -3
  16. package/algo25/index.mjs +1 -2
  17. package/algod-client/index.d.ts +2 -3
  18. package/algod-client/index.js +10 -12
  19. package/algod-client/index.mjs +2 -3
  20. package/algorand-client-transaction-creator.d.ts +891 -0
  21. package/algorand-client-transaction-creator.js +735 -0
  22. package/algorand-client-transaction-creator.js.map +1 -0
  23. package/algorand-client-transaction-creator.mjs +734 -0
  24. package/algorand-client-transaction-creator.mjs.map +1 -0
  25. package/algorand-client-transaction-sender.d.ts +1098 -0
  26. package/algorand-client-transaction-sender.js +927 -0
  27. package/algorand-client-transaction-sender.js.map +1 -0
  28. package/algorand-client-transaction-sender.mjs +925 -0
  29. package/algorand-client-transaction-sender.mjs.map +1 -0
  30. package/algorand-client.d.ts +266 -0
  31. package/algorand-client.js +349 -0
  32. package/algorand-client.js.map +1 -0
  33. package/algorand-client.mjs +348 -0
  34. package/algorand-client.mjs.map +1 -0
  35. package/amount.d.ts +58 -3
  36. package/amount.js +110 -19
  37. package/amount.js.map +1 -1
  38. package/amount.mjs +101 -12
  39. package/amount.mjs.map +1 -1
  40. package/app-client.d.ts +1042 -0
  41. package/app-client.js +911 -0
  42. package/app-client.js.map +1 -0
  43. package/app-client.mjs +909 -0
  44. package/app-client.mjs.map +1 -0
  45. package/app-deployer.d.ts +159 -0
  46. package/app-deployer.js +353 -0
  47. package/app-deployer.js.map +1 -0
  48. package/app-deployer.mjs +352 -0
  49. package/app-deployer.mjs.map +1 -0
  50. package/app-factory.d.ts +791 -0
  51. package/app-factory.js +448 -0
  52. package/app-factory.js.map +1 -0
  53. package/app-factory.mjs +447 -0
  54. package/app-factory.mjs.map +1 -0
  55. package/app-manager.d.ts +323 -0
  56. package/app-manager.js +466 -0
  57. package/app-manager.js.map +1 -0
  58. package/app-manager.mjs +465 -0
  59. package/app-manager.mjs.map +1 -0
  60. package/app-spec.d.ts +200 -0
  61. package/app-spec.js +137 -0
  62. package/app-spec.js.map +1 -0
  63. package/app-spec.mjs +136 -0
  64. package/app-spec.mjs.map +1 -0
  65. package/app.d.ts +251 -0
  66. package/app.js +49 -0
  67. package/app.js.map +1 -0
  68. package/app.mjs +42 -0
  69. package/app.mjs.map +1 -0
  70. package/asset-manager.d.ts +215 -0
  71. package/asset-manager.js +169 -0
  72. package/asset-manager.js.map +1 -0
  73. package/asset-manager.mjs +168 -0
  74. package/asset-manager.mjs.map +1 -0
  75. package/async-event-emitter.d.ts +16 -0
  76. package/async-event-emitter.js +38 -0
  77. package/async-event-emitter.js.map +1 -0
  78. package/async-event-emitter.mjs +37 -0
  79. package/async-event-emitter.mjs.map +1 -0
  80. package/client-manager.d.ts +475 -0
  81. package/client-manager.js +616 -0
  82. package/client-manager.js.map +1 -0
  83. package/client-manager.mjs +615 -0
  84. package/client-manager.mjs.map +1 -0
  85. package/common/index.d.ts +28 -0
  86. package/common/index.js +109 -0
  87. package/common/index.mjs +25 -0
  88. package/composer.d.ts +942 -0
  89. package/composer.js +1583 -0
  90. package/composer.js.map +1 -0
  91. package/composer.mjs +1581 -0
  92. package/composer.mjs.map +1 -0
  93. package/config.d.ts +1 -1
  94. package/config.js +3 -4
  95. package/config.js.map +1 -1
  96. package/config.mjs +2 -3
  97. package/config.mjs.map +1 -1
  98. package/crypto/index.d.ts +5 -0
  99. package/crypto/index.js +13 -0
  100. package/crypto/index.mjs +5 -0
  101. package/debugging.d.ts +41 -0
  102. package/debugging.js +20 -0
  103. package/debugging.js.map +1 -0
  104. package/debugging.mjs +15 -0
  105. package/debugging.mjs.map +1 -0
  106. package/dispenser-client.d.ts +91 -0
  107. package/dispenser-client.js +128 -0
  108. package/dispenser-client.js.map +1 -0
  109. package/dispenser-client.mjs +127 -0
  110. package/dispenser-client.mjs.map +1 -0
  111. package/expand.d.ts +2 -0
  112. package/expand.js +0 -0
  113. package/expand.mjs +0 -0
  114. package/index.d.ts +28 -7
  115. package/index.js +45 -17
  116. package/index.mjs +21 -7
  117. package/indexer-client/index.d.ts +2 -2
  118. package/indexer-client/index.js +12 -12
  119. package/indexer-client/index.mjs +2 -3
  120. package/{indexer-lookup.d.ts → indexer-client/indexer-lookup.d.ts} +8 -11
  121. package/{indexer-lookup.js → indexer-client/indexer-lookup.js} +4 -16
  122. package/indexer-client/indexer-lookup.js.map +1 -0
  123. package/{indexer-lookup.mjs → indexer-client/indexer-lookup.mjs} +3 -11
  124. package/indexer-client/indexer-lookup.mjs.map +1 -0
  125. package/indexer.d.ts +40 -0
  126. package/indexer.js +38 -0
  127. package/indexer.js.map +1 -0
  128. package/indexer.mjs +35 -0
  129. package/indexer.mjs.map +1 -0
  130. package/instance-of.d.ts +8 -0
  131. package/kmd-account-manager.d.ts +74 -0
  132. package/kmd-account-manager.js +167 -0
  133. package/kmd-account-manager.js.map +1 -0
  134. package/kmd-account-manager.mjs +164 -0
  135. package/kmd-account-manager.mjs.map +1 -0
  136. package/kmd-client/index.d.ts +1 -2
  137. package/kmd-client/index.js +7 -12
  138. package/kmd-client/index.mjs +1 -3
  139. package/lifecycle-events.d.ts +14 -0
  140. package/lifecycle-events.js +11 -0
  141. package/lifecycle-events.js.map +1 -0
  142. package/lifecycle-events.mjs +10 -0
  143. package/lifecycle-events.mjs.map +1 -0
  144. package/logging.d.ts +13 -0
  145. package/logging.js +47 -0
  146. package/logging.js.map +1 -0
  147. package/logging.mjs +42 -0
  148. package/logging.mjs.map +1 -0
  149. package/logic-error.d.ts +39 -0
  150. package/logic-error.js +54 -0
  151. package/logic-error.js.map +1 -0
  152. package/logic-error.mjs +53 -0
  153. package/logic-error.mjs.map +1 -0
  154. package/network-client.d.ts +43 -0
  155. package/network-client.js +14 -0
  156. package/network-client.js.map +1 -0
  157. package/network-client.mjs +13 -0
  158. package/network-client.mjs.map +1 -0
  159. package/network-manager.d.ts +143 -0
  160. package/network-manager.js +190 -0
  161. package/network-manager.js.map +1 -0
  162. package/network-manager.mjs +189 -0
  163. package/network-manager.mjs.map +1 -0
  164. package/package.json +34 -8
  165. package/packages/abi/src/abi-method.d.ts +7 -12
  166. package/packages/abi/src/abi-method.js +20 -22
  167. package/packages/abi/src/abi-method.js.map +1 -1
  168. package/packages/abi/src/abi-method.mjs +18 -19
  169. package/packages/abi/src/abi-method.mjs.map +1 -1
  170. package/packages/abi/src/abi-type.d.ts +1 -6
  171. package/packages/abi/src/abi-type.js +26 -59
  172. package/packages/abi/src/abi-type.js.map +1 -1
  173. package/packages/abi/src/abi-type.mjs +23 -56
  174. package/packages/abi/src/abi-type.mjs.map +1 -1
  175. package/packages/abi/src/arc28-event.d.ts +4 -10
  176. package/packages/abi/src/arc56-contract.d.ts +66 -155
  177. package/packages/abi/src/arc56-contract.js +2 -3
  178. package/packages/abi/src/arc56-contract.js.map +1 -1
  179. package/packages/abi/src/arc56-contract.mjs +1 -2
  180. package/packages/abi/src/arc56-contract.mjs.map +1 -1
  181. package/packages/abi/src/bigint.js +1 -2
  182. package/packages/abi/src/bigint.js.map +1 -1
  183. package/packages/abi/src/bigint.mjs +1 -1
  184. package/packages/abi/src/utils.d.ts +21 -0
  185. package/packages/abi/src/utils.js +56 -0
  186. package/packages/abi/src/utils.js.map +1 -0
  187. package/packages/abi/src/utils.mjs +55 -0
  188. package/packages/abi/src/utils.mjs.map +1 -0
  189. package/packages/algo25/src/english.js +2 -4
  190. package/packages/algo25/src/english.js.map +1 -1
  191. package/packages/algo25/src/english.mjs +2 -3
  192. package/packages/algo25/src/english.mjs.map +1 -1
  193. package/packages/algo25/src/index.d.ts +2 -2
  194. package/packages/algo25/src/index.js +4 -5
  195. package/packages/algo25/src/index.js.map +1 -1
  196. package/packages/algo25/src/index.mjs +6 -7
  197. package/packages/algo25/src/index.mjs.map +1 -1
  198. package/packages/algod_client/src/apis/api-service.js +33 -34
  199. package/packages/algod_client/src/apis/api-service.js.map +1 -1
  200. package/packages/algod_client/src/apis/api-service.mjs +3 -4
  201. package/packages/algod_client/src/apis/api-service.mjs.map +1 -1
  202. package/packages/algod_client/src/client.js +3 -4
  203. package/packages/algod_client/src/client.js.map +1 -1
  204. package/packages/algod_client/src/client.mjs +1 -2
  205. package/packages/algod_client/src/client.mjs.map +1 -1
  206. package/packages/algod_client/src/core/api-error.js +1 -2
  207. package/packages/algod_client/src/core/api-error.js.map +1 -1
  208. package/packages/algod_client/src/core/api-error.mjs +1 -1
  209. package/packages/algod_client/src/core/api-error.mjs.map +1 -1
  210. package/packages/algod_client/src/core/base-http-request.js +1 -2
  211. package/packages/algod_client/src/core/base-http-request.js.map +1 -1
  212. package/packages/algod_client/src/core/base-http-request.mjs +1 -1
  213. package/packages/algod_client/src/core/base-http-request.mjs.map +1 -1
  214. package/packages/algod_client/src/core/fetch-http-request.js +3 -4
  215. package/packages/algod_client/src/core/fetch-http-request.js.map +1 -1
  216. package/packages/algod_client/src/core/fetch-http-request.mjs +1 -2
  217. package/packages/algod_client/src/core/fetch-http-request.mjs.map +1 -1
  218. package/packages/algod_client/src/core/model-runtime.js +6 -7
  219. package/packages/algod_client/src/core/model-runtime.js.map +1 -1
  220. package/packages/algod_client/src/core/model-runtime.mjs +3 -4
  221. package/packages/algod_client/src/core/model-runtime.mjs.map +1 -1
  222. package/packages/algod_client/src/core/request.js +5 -6
  223. package/packages/algod_client/src/core/request.js.map +1 -1
  224. package/packages/algod_client/src/core/request.mjs +1 -2
  225. package/packages/algod_client/src/core/request.mjs.map +1 -1
  226. package/packages/algod_client/src/models/account-application-response.js +5 -6
  227. package/packages/algod_client/src/models/account-application-response.js.map +1 -1
  228. package/packages/algod_client/src/models/account-application-response.mjs +1 -2
  229. package/packages/algod_client/src/models/account-application-response.mjs.map +1 -1
  230. package/packages/algod_client/src/models/account-asset-response.js +5 -6
  231. package/packages/algod_client/src/models/account-asset-response.js.map +1 -1
  232. package/packages/algod_client/src/models/account-asset-response.mjs +1 -2
  233. package/packages/algod_client/src/models/account-asset-response.mjs.map +1 -1
  234. package/packages/algod_client/src/models/account-participation.js +3 -4
  235. package/packages/algod_client/src/models/account-participation.js.map +1 -1
  236. package/packages/algod_client/src/models/account-participation.mjs +1 -2
  237. package/packages/algod_client/src/models/account-participation.mjs.map +1 -1
  238. package/packages/algod_client/src/models/account-state-delta.d.ts +0 -1
  239. package/packages/algod_client/src/models/account-state-delta.js +4 -5
  240. package/packages/algod_client/src/models/account-state-delta.js.map +1 -1
  241. package/packages/algod_client/src/models/account-state-delta.mjs +1 -2
  242. package/packages/algod_client/src/models/account-state-delta.mjs.map +1 -1
  243. package/packages/algod_client/src/models/account.d.ts +0 -1
  244. package/packages/algod_client/src/models/account.js +14 -15
  245. package/packages/algod_client/src/models/account.js.map +1 -1
  246. package/packages/algod_client/src/models/account.mjs +1 -2
  247. package/packages/algod_client/src/models/account.mjs.map +1 -1
  248. package/packages/algod_client/src/models/application-initial-states.d.ts +0 -1
  249. package/packages/algod_client/src/models/application-initial-states.js +5 -6
  250. package/packages/algod_client/src/models/application-initial-states.js.map +1 -1
  251. package/packages/algod_client/src/models/application-initial-states.mjs +1 -2
  252. package/packages/algod_client/src/models/application-initial-states.mjs.map +1 -1
  253. package/packages/algod_client/src/models/application-kv-storage.d.ts +0 -1
  254. package/packages/algod_client/src/models/application-kv-storage.js +5 -6
  255. package/packages/algod_client/src/models/application-kv-storage.js.map +1 -1
  256. package/packages/algod_client/src/models/application-kv-storage.mjs +1 -2
  257. package/packages/algod_client/src/models/application-kv-storage.mjs.map +1 -1
  258. package/packages/algod_client/src/models/application-local-state.d.ts +0 -1
  259. package/packages/algod_client/src/models/application-local-state.js +6 -7
  260. package/packages/algod_client/src/models/application-local-state.js.map +1 -1
  261. package/packages/algod_client/src/models/application-local-state.mjs +1 -2
  262. package/packages/algod_client/src/models/application-local-state.mjs.map +1 -1
  263. package/packages/algod_client/src/models/application-params.d.ts +0 -1
  264. package/packages/algod_client/src/models/application-params.js +8 -9
  265. package/packages/algod_client/src/models/application-params.js.map +1 -1
  266. package/packages/algod_client/src/models/application-params.mjs +1 -2
  267. package/packages/algod_client/src/models/application-params.mjs.map +1 -1
  268. package/packages/algod_client/src/models/application-state-operation.d.ts +0 -1
  269. package/packages/algod_client/src/models/application-state-operation.js +6 -7
  270. package/packages/algod_client/src/models/application-state-operation.js.map +1 -1
  271. package/packages/algod_client/src/models/application-state-operation.mjs +1 -2
  272. package/packages/algod_client/src/models/application-state-operation.mjs.map +1 -1
  273. package/packages/algod_client/src/models/application-state-schema.js +2 -3
  274. package/packages/algod_client/src/models/application-state-schema.js.map +1 -1
  275. package/packages/algod_client/src/models/application-state-schema.mjs +1 -2
  276. package/packages/algod_client/src/models/application-state-schema.mjs.map +1 -1
  277. package/packages/algod_client/src/models/application.d.ts +0 -1
  278. package/packages/algod_client/src/models/application.js +4 -5
  279. package/packages/algod_client/src/models/application.js.map +1 -1
  280. package/packages/algod_client/src/models/application.mjs +1 -2
  281. package/packages/algod_client/src/models/application.mjs.map +1 -1
  282. package/packages/algod_client/src/models/asset-holding.js +3 -4
  283. package/packages/algod_client/src/models/asset-holding.js.map +1 -1
  284. package/packages/algod_client/src/models/asset-holding.mjs +1 -2
  285. package/packages/algod_client/src/models/asset-holding.mjs.map +1 -1
  286. package/packages/algod_client/src/models/asset-params.js +7 -8
  287. package/packages/algod_client/src/models/asset-params.js.map +1 -1
  288. package/packages/algod_client/src/models/asset-params.mjs +1 -2
  289. package/packages/algod_client/src/models/asset-params.mjs.map +1 -1
  290. package/packages/algod_client/src/models/asset.d.ts +0 -1
  291. package/packages/algod_client/src/models/asset.js +4 -5
  292. package/packages/algod_client/src/models/asset.js.map +1 -1
  293. package/packages/algod_client/src/models/asset.mjs +1 -2
  294. package/packages/algod_client/src/models/asset.mjs.map +1 -1
  295. package/packages/algod_client/src/models/avm-key-value.d.ts +0 -1
  296. package/packages/algod_client/src/models/avm-key-value.js +4 -5
  297. package/packages/algod_client/src/models/avm-key-value.js.map +1 -1
  298. package/packages/algod_client/src/models/avm-key-value.mjs +1 -2
  299. package/packages/algod_client/src/models/avm-key-value.mjs.map +1 -1
  300. package/packages/algod_client/src/models/avm-value.js +4 -6
  301. package/packages/algod_client/src/models/avm-value.js.map +1 -1
  302. package/packages/algod_client/src/models/avm-value.mjs +1 -2
  303. package/packages/algod_client/src/models/avm-value.mjs.map +1 -1
  304. package/packages/algod_client/src/models/block-hash-response.js +2 -4
  305. package/packages/algod_client/src/models/block-hash-response.js.map +1 -1
  306. package/packages/algod_client/src/models/block-hash-response.mjs +1 -2
  307. package/packages/algod_client/src/models/block-hash-response.mjs.map +1 -1
  308. package/packages/algod_client/src/models/block-response.d.ts +1 -3
  309. package/packages/algod_client/src/models/block-response.js +4 -6
  310. package/packages/algod_client/src/models/block-response.js.map +1 -1
  311. package/packages/algod_client/src/models/block-response.mjs +1 -2
  312. package/packages/algod_client/src/models/block-response.mjs.map +1 -1
  313. package/packages/algod_client/src/models/block-txids-response.js +2 -4
  314. package/packages/algod_client/src/models/block-txids-response.js.map +1 -1
  315. package/packages/algod_client/src/models/block-txids-response.mjs +1 -2
  316. package/packages/algod_client/src/models/block-txids-response.mjs.map +1 -1
  317. package/packages/algod_client/src/models/block.d.ts +45 -97
  318. package/packages/algod_client/src/models/block.js +30 -31
  319. package/packages/algod_client/src/models/block.js.map +1 -1
  320. package/packages/algod_client/src/models/block.mjs +19 -20
  321. package/packages/algod_client/src/models/block.mjs.map +1 -1
  322. package/packages/algod_client/src/models/box-descriptor.js +2 -4
  323. package/packages/algod_client/src/models/box-descriptor.js.map +1 -1
  324. package/packages/algod_client/src/models/box-descriptor.mjs +1 -2
  325. package/packages/algod_client/src/models/box-descriptor.mjs.map +1 -1
  326. package/packages/algod_client/src/models/box.js +3 -4
  327. package/packages/algod_client/src/models/box.js.map +1 -1
  328. package/packages/algod_client/src/models/box.mjs +1 -2
  329. package/packages/algod_client/src/models/box.mjs.map +1 -1
  330. package/packages/algod_client/src/models/boxes-response.js +4 -5
  331. package/packages/algod_client/src/models/boxes-response.js.map +1 -1
  332. package/packages/algod_client/src/models/boxes-response.mjs +1 -2
  333. package/packages/algod_client/src/models/boxes-response.mjs.map +1 -1
  334. package/packages/algod_client/src/models/build-version.js +3 -4
  335. package/packages/algod_client/src/models/build-version.js.map +1 -1
  336. package/packages/algod_client/src/models/build-version.mjs +1 -2
  337. package/packages/algod_client/src/models/build-version.mjs.map +1 -1
  338. package/packages/algod_client/src/models/compile-response.js +4 -5
  339. package/packages/algod_client/src/models/compile-response.js.map +1 -1
  340. package/packages/algod_client/src/models/compile-response.mjs +1 -2
  341. package/packages/algod_client/src/models/compile-response.mjs.map +1 -1
  342. package/packages/algod_client/src/models/disassemble-response.js +2 -4
  343. package/packages/algod_client/src/models/disassemble-response.js.map +1 -1
  344. package/packages/algod_client/src/models/disassemble-response.mjs +1 -2
  345. package/packages/algod_client/src/models/disassemble-response.mjs.map +1 -1
  346. package/packages/algod_client/src/models/eval-delta-key-value.d.ts +0 -1
  347. package/packages/algod_client/src/models/eval-delta-key-value.js +5 -6
  348. package/packages/algod_client/src/models/eval-delta-key-value.js.map +1 -1
  349. package/packages/algod_client/src/models/eval-delta-key-value.mjs +3 -4
  350. package/packages/algod_client/src/models/eval-delta-key-value.mjs.map +1 -1
  351. package/packages/algod_client/src/models/eval-delta.js +5 -7
  352. package/packages/algod_client/src/models/eval-delta.js.map +1 -1
  353. package/packages/algod_client/src/models/eval-delta.mjs +3 -4
  354. package/packages/algod_client/src/models/eval-delta.mjs.map +1 -1
  355. package/packages/algod_client/src/models/genesis-allocation.js +59 -62
  356. package/packages/algod_client/src/models/genesis-allocation.js.map +1 -1
  357. package/packages/algod_client/src/models/genesis-allocation.mjs +55 -58
  358. package/packages/algod_client/src/models/genesis-allocation.mjs.map +1 -1
  359. package/packages/algod_client/src/models/genesis.js +7 -8
  360. package/packages/algod_client/src/models/genesis.js.map +1 -1
  361. package/packages/algod_client/src/models/genesis.mjs +1 -2
  362. package/packages/algod_client/src/models/genesis.mjs.map +1 -1
  363. package/packages/algod_client/src/models/get-block-time-stamp-offset-response.js +2 -4
  364. package/packages/algod_client/src/models/get-block-time-stamp-offset-response.js.map +1 -1
  365. package/packages/algod_client/src/models/get-block-time-stamp-offset-response.mjs +1 -2
  366. package/packages/algod_client/src/models/get-block-time-stamp-offset-response.mjs.map +1 -1
  367. package/packages/algod_client/src/models/get-sync-round-response.js +2 -4
  368. package/packages/algod_client/src/models/get-sync-round-response.js.map +1 -1
  369. package/packages/algod_client/src/models/get-sync-round-response.mjs +1 -2
  370. package/packages/algod_client/src/models/get-sync-round-response.mjs.map +1 -1
  371. package/packages/algod_client/src/models/ledger-state-delta-for-transaction-group.d.ts +0 -1
  372. package/packages/algod_client/src/models/ledger-state-delta-for-transaction-group.js +4 -5
  373. package/packages/algod_client/src/models/ledger-state-delta-for-transaction-group.js.map +1 -1
  374. package/packages/algod_client/src/models/ledger-state-delta-for-transaction-group.mjs +1 -2
  375. package/packages/algod_client/src/models/ledger-state-delta-for-transaction-group.mjs.map +1 -1
  376. package/packages/algod_client/src/models/ledger-state-delta.d.ts +3 -8
  377. package/packages/algod_client/src/models/ledger-state-delta.js +98 -101
  378. package/packages/algod_client/src/models/ledger-state-delta.js.map +1 -1
  379. package/packages/algod_client/src/models/ledger-state-delta.mjs +205 -210
  380. package/packages/algod_client/src/models/ledger-state-delta.mjs.map +1 -1
  381. package/packages/algod_client/src/models/light-block-header-proof.js +3 -4
  382. package/packages/algod_client/src/models/light-block-header-proof.js.map +1 -1
  383. package/packages/algod_client/src/models/light-block-header-proof.mjs +1 -2
  384. package/packages/algod_client/src/models/light-block-header-proof.mjs.map +1 -1
  385. package/packages/algod_client/src/models/node-status-response.js +5 -6
  386. package/packages/algod_client/src/models/node-status-response.js.map +1 -1
  387. package/packages/algod_client/src/models/node-status-response.mjs +1 -2
  388. package/packages/algod_client/src/models/node-status-response.mjs.map +1 -1
  389. package/packages/algod_client/src/models/pending-transaction-response.d.ts +0 -1
  390. package/packages/algod_client/src/models/pending-transaction-response.js +9 -10
  391. package/packages/algod_client/src/models/pending-transaction-response.js.map +1 -1
  392. package/packages/algod_client/src/models/pending-transaction-response.mjs +1 -2
  393. package/packages/algod_client/src/models/pending-transaction-response.mjs.map +1 -1
  394. package/packages/algod_client/src/models/pending-transactions-response.d.ts +0 -1
  395. package/packages/algod_client/src/models/pending-transactions-response.js +5 -6
  396. package/packages/algod_client/src/models/pending-transactions-response.js.map +1 -1
  397. package/packages/algod_client/src/models/pending-transactions-response.mjs +1 -2
  398. package/packages/algod_client/src/models/pending-transactions-response.mjs.map +1 -1
  399. package/packages/algod_client/src/models/post-transactions-response.js +2 -4
  400. package/packages/algod_client/src/models/post-transactions-response.js.map +1 -1
  401. package/packages/algod_client/src/models/post-transactions-response.mjs +1 -2
  402. package/packages/algod_client/src/models/post-transactions-response.mjs.map +1 -1
  403. package/packages/algod_client/src/models/scratch-change.d.ts +0 -1
  404. package/packages/algod_client/src/models/scratch-change.js +4 -5
  405. package/packages/algod_client/src/models/scratch-change.js.map +1 -1
  406. package/packages/algod_client/src/models/scratch-change.mjs +1 -2
  407. package/packages/algod_client/src/models/scratch-change.mjs.map +1 -1
  408. package/packages/algod_client/src/models/simulate-initial-states.d.ts +0 -1
  409. package/packages/algod_client/src/models/simulate-initial-states.js +4 -5
  410. package/packages/algod_client/src/models/simulate-initial-states.js.map +1 -1
  411. package/packages/algod_client/src/models/simulate-initial-states.mjs +1 -2
  412. package/packages/algod_client/src/models/simulate-initial-states.mjs.map +1 -1
  413. package/packages/algod_client/src/models/simulate-request-transaction-group.d.ts +0 -1
  414. package/packages/algod_client/src/models/simulate-request-transaction-group.js +4 -5
  415. package/packages/algod_client/src/models/simulate-request-transaction-group.js.map +1 -1
  416. package/packages/algod_client/src/models/simulate-request-transaction-group.mjs +1 -2
  417. package/packages/algod_client/src/models/simulate-request-transaction-group.mjs.map +1 -1
  418. package/packages/algod_client/src/models/simulate-request.d.ts +0 -1
  419. package/packages/algod_client/src/models/simulate-request.js +8 -9
  420. package/packages/algod_client/src/models/simulate-request.js.map +1 -1
  421. package/packages/algod_client/src/models/simulate-request.mjs +2 -3
  422. package/packages/algod_client/src/models/simulate-request.mjs.map +1 -1
  423. package/packages/algod_client/src/models/simulate-response.d.ts +3 -1
  424. package/packages/algod_client/src/models/simulate-response.js +18 -10
  425. package/packages/algod_client/src/models/simulate-response.js.map +1 -1
  426. package/packages/algod_client/src/models/simulate-response.mjs +10 -4
  427. package/packages/algod_client/src/models/simulate-response.mjs.map +1 -1
  428. package/packages/algod_client/src/models/simulate-trace-config.js +2 -3
  429. package/packages/algod_client/src/models/simulate-trace-config.js.map +1 -1
  430. package/packages/algod_client/src/models/simulate-trace-config.mjs +1 -2
  431. package/packages/algod_client/src/models/simulate-trace-config.mjs.map +1 -1
  432. package/packages/algod_client/src/models/simulate-transaction-group-result.d.ts +0 -1
  433. package/packages/algod_client/src/models/simulate-transaction-group-result.js +7 -8
  434. package/packages/algod_client/src/models/simulate-transaction-group-result.js.map +1 -1
  435. package/packages/algod_client/src/models/simulate-transaction-group-result.mjs +1 -2
  436. package/packages/algod_client/src/models/simulate-transaction-group-result.mjs.map +1 -1
  437. package/packages/algod_client/src/models/simulate-transaction-result.d.ts +0 -1
  438. package/packages/algod_client/src/models/simulate-transaction-result.js +7 -8
  439. package/packages/algod_client/src/models/simulate-transaction-result.js.map +1 -1
  440. package/packages/algod_client/src/models/simulate-transaction-result.mjs +1 -2
  441. package/packages/algod_client/src/models/simulate-transaction-result.mjs.map +1 -1
  442. package/packages/algod_client/src/models/simulate-unnamed-resources-accessed.d.ts +0 -1
  443. package/packages/algod_client/src/models/simulate-unnamed-resources-accessed.js +5 -6
  444. package/packages/algod_client/src/models/simulate-unnamed-resources-accessed.js.map +1 -1
  445. package/packages/algod_client/src/models/simulate-unnamed-resources-accessed.mjs +1 -2
  446. package/packages/algod_client/src/models/simulate-unnamed-resources-accessed.mjs.map +1 -1
  447. package/packages/algod_client/src/models/simulation-eval-overrides.js +3 -4
  448. package/packages/algod_client/src/models/simulation-eval-overrides.js.map +1 -1
  449. package/packages/algod_client/src/models/simulation-eval-overrides.mjs +1 -2
  450. package/packages/algod_client/src/models/simulation-eval-overrides.mjs.map +1 -1
  451. package/packages/algod_client/src/models/simulation-opcode-trace-unit.d.ts +0 -1
  452. package/packages/algod_client/src/models/simulation-opcode-trace-unit.js +7 -8
  453. package/packages/algod_client/src/models/simulation-opcode-trace-unit.js.map +1 -1
  454. package/packages/algod_client/src/models/simulation-opcode-trace-unit.mjs +1 -2
  455. package/packages/algod_client/src/models/simulation-opcode-trace-unit.mjs.map +1 -1
  456. package/packages/algod_client/src/models/simulation-transaction-exec-trace.d.ts +0 -1
  457. package/packages/algod_client/src/models/simulation-transaction-exec-trace.js +7 -8
  458. package/packages/algod_client/src/models/simulation-transaction-exec-trace.js.map +1 -1
  459. package/packages/algod_client/src/models/simulation-transaction-exec-trace.mjs +1 -2
  460. package/packages/algod_client/src/models/simulation-transaction-exec-trace.mjs.map +1 -1
  461. package/packages/algod_client/src/models/source-map.js +4 -5
  462. package/packages/algod_client/src/models/source-map.js.map +1 -1
  463. package/packages/algod_client/src/models/source-map.mjs +1 -2
  464. package/packages/algod_client/src/models/source-map.mjs.map +1 -1
  465. package/packages/algod_client/src/models/state-delta.d.ts +0 -1
  466. package/packages/algod_client/src/models/state-delta.js +4 -5
  467. package/packages/algod_client/src/models/state-delta.js.map +1 -1
  468. package/packages/algod_client/src/models/state-delta.mjs +1 -2
  469. package/packages/algod_client/src/models/state-delta.mjs.map +1 -1
  470. package/packages/algod_client/src/models/state-proof-message.js +3 -4
  471. package/packages/algod_client/src/models/state-proof-message.js.map +1 -1
  472. package/packages/algod_client/src/models/state-proof-message.mjs +1 -2
  473. package/packages/algod_client/src/models/state-proof-message.mjs.map +1 -1
  474. package/packages/algod_client/src/models/state-proof.d.ts +0 -1
  475. package/packages/algod_client/src/models/state-proof.js +4 -5
  476. package/packages/algod_client/src/models/state-proof.js.map +1 -1
  477. package/packages/algod_client/src/models/state-proof.mjs +1 -2
  478. package/packages/algod_client/src/models/state-proof.mjs.map +1 -1
  479. package/packages/algod_client/src/models/supply-response.js +2 -3
  480. package/packages/algod_client/src/models/supply-response.js.map +1 -1
  481. package/packages/algod_client/src/models/supply-response.mjs +1 -2
  482. package/packages/algod_client/src/models/supply-response.mjs.map +1 -1
  483. package/packages/algod_client/src/models/teal-key-value-store.d.ts +0 -1
  484. package/packages/algod_client/src/models/teal-key-value-store.js +4 -5
  485. package/packages/algod_client/src/models/teal-key-value-store.js.map +1 -1
  486. package/packages/algod_client/src/models/teal-key-value-store.mjs +1 -2
  487. package/packages/algod_client/src/models/teal-key-value-store.mjs.map +1 -1
  488. package/packages/algod_client/src/models/teal-key-value.d.ts +0 -1
  489. package/packages/algod_client/src/models/teal-key-value.js +4 -5
  490. package/packages/algod_client/src/models/teal-key-value.js.map +1 -1
  491. package/packages/algod_client/src/models/teal-key-value.mjs +1 -2
  492. package/packages/algod_client/src/models/teal-key-value.mjs.map +1 -1
  493. package/packages/algod_client/src/models/teal-value.js +4 -6
  494. package/packages/algod_client/src/models/teal-value.js.map +1 -1
  495. package/packages/algod_client/src/models/teal-value.mjs +1 -2
  496. package/packages/algod_client/src/models/teal-value.mjs.map +1 -1
  497. package/packages/algod_client/src/models/transaction-group-ledger-state-deltas-for-round-response.js +4 -5
  498. package/packages/algod_client/src/models/transaction-group-ledger-state-deltas-for-round-response.js.map +1 -1
  499. package/packages/algod_client/src/models/transaction-group-ledger-state-deltas-for-round-response.mjs +1 -2
  500. package/packages/algod_client/src/models/transaction-group-ledger-state-deltas-for-round-response.mjs.map +1 -1
  501. package/packages/algod_client/src/models/transaction-parameters-response.js +4 -5
  502. package/packages/algod_client/src/models/transaction-parameters-response.js.map +1 -1
  503. package/packages/algod_client/src/models/transaction-parameters-response.mjs +1 -2
  504. package/packages/algod_client/src/models/transaction-parameters-response.mjs.map +1 -1
  505. package/packages/algod_client/src/models/transaction-proof.js +4 -5
  506. package/packages/algod_client/src/models/transaction-proof.js.map +1 -1
  507. package/packages/algod_client/src/models/transaction-proof.mjs +1 -2
  508. package/packages/algod_client/src/models/transaction-proof.mjs.map +1 -1
  509. package/packages/algod_client/src/models/version.d.ts +0 -1
  510. package/packages/algod_client/src/models/version.js +6 -7
  511. package/packages/algod_client/src/models/version.js.map +1 -1
  512. package/packages/algod_client/src/models/version.mjs +1 -2
  513. package/packages/algod_client/src/models/version.mjs.map +1 -1
  514. package/packages/common/src/address.d.ts +14 -3
  515. package/packages/common/src/address.js +24 -24
  516. package/packages/common/src/address.js.map +1 -1
  517. package/packages/common/src/address.mjs +17 -21
  518. package/packages/common/src/address.mjs.map +1 -1
  519. package/packages/common/src/array.d.ts +6 -0
  520. package/packages/common/src/array.js +1 -2
  521. package/packages/common/src/array.js.map +1 -1
  522. package/packages/common/src/array.mjs +1 -1
  523. package/packages/common/src/codecs/codec.d.ts +0 -1
  524. package/packages/common/src/codecs/codec.js +1 -2
  525. package/packages/common/src/codecs/codec.js.map +1 -1
  526. package/packages/common/src/codecs/codec.mjs +1 -1
  527. package/packages/common/src/codecs/codec.mjs.map +1 -1
  528. package/packages/common/src/codecs/composite/array.d.ts +25 -0
  529. package/packages/common/src/codecs/composite/array.js +9 -9
  530. package/packages/common/src/codecs/composite/array.js.map +1 -1
  531. package/packages/common/src/codecs/composite/array.mjs +2 -3
  532. package/packages/common/src/codecs/composite/array.mjs.map +1 -1
  533. package/packages/common/src/codecs/composite/map.d.ts +26 -0
  534. package/packages/common/src/codecs/composite/map.js +2 -3
  535. package/packages/common/src/codecs/composite/map.js.map +1 -1
  536. package/packages/common/src/codecs/composite/map.mjs +1 -2
  537. package/packages/common/src/codecs/composite/map.mjs.map +1 -1
  538. package/packages/common/src/codecs/composite/record.d.ts +19 -0
  539. package/packages/common/src/codecs/composite/record.js +3 -4
  540. package/packages/common/src/codecs/composite/record.js.map +1 -1
  541. package/packages/common/src/codecs/composite/record.mjs +1 -2
  542. package/packages/common/src/codecs/composite/record.mjs.map +1 -1
  543. package/packages/common/src/codecs/models/array-model.d.ts +19 -0
  544. package/packages/common/src/codecs/models/array-model.js +2 -3
  545. package/packages/common/src/codecs/models/array-model.js.map +1 -1
  546. package/packages/common/src/codecs/models/array-model.mjs +1 -2
  547. package/packages/common/src/codecs/models/array-model.mjs.map +1 -1
  548. package/packages/common/src/codecs/models/object-model.js +6 -8
  549. package/packages/common/src/codecs/models/object-model.js.map +1 -1
  550. package/packages/common/src/codecs/models/object-model.mjs +4 -6
  551. package/packages/common/src/codecs/models/object-model.mjs.map +1 -1
  552. package/packages/common/src/codecs/models/primitive-model.d.ts +19 -0
  553. package/packages/common/src/codecs/models/primitive-model.js +2 -3
  554. package/packages/common/src/codecs/models/primitive-model.js.map +1 -1
  555. package/packages/common/src/codecs/models/primitive-model.mjs +1 -2
  556. package/packages/common/src/codecs/models/primitive-model.mjs.map +1 -1
  557. package/packages/common/src/codecs/primitives/address.d.ts +16 -0
  558. package/packages/common/src/codecs/primitives/address.js +7 -8
  559. package/packages/common/src/codecs/primitives/address.js.map +1 -1
  560. package/packages/common/src/codecs/primitives/address.mjs +4 -5
  561. package/packages/common/src/codecs/primitives/address.mjs.map +1 -1
  562. package/packages/common/src/codecs/primitives/bigint.d.ts +13 -0
  563. package/packages/common/src/codecs/primitives/bigint.js +2 -3
  564. package/packages/common/src/codecs/primitives/bigint.js.map +1 -1
  565. package/packages/common/src/codecs/primitives/bigint.mjs +1 -2
  566. package/packages/common/src/codecs/primitives/bigint.mjs.map +1 -1
  567. package/packages/common/src/codecs/primitives/boolean.d.ts +10 -0
  568. package/packages/common/src/codecs/primitives/boolean.js +2 -3
  569. package/packages/common/src/codecs/primitives/boolean.js.map +1 -1
  570. package/packages/common/src/codecs/primitives/boolean.mjs +1 -2
  571. package/packages/common/src/codecs/primitives/boolean.mjs.map +1 -1
  572. package/packages/common/src/codecs/primitives/bytes-base64.d.ts +15 -0
  573. package/packages/common/src/codecs/primitives/bytes-base64.js +25 -0
  574. package/packages/common/src/codecs/primitives/bytes-base64.js.map +1 -0
  575. package/packages/common/src/codecs/primitives/bytes-base64.mjs +24 -0
  576. package/packages/common/src/codecs/primitives/bytes-base64.mjs.map +1 -0
  577. package/packages/common/src/codecs/primitives/bytes.d.ts +15 -0
  578. package/packages/common/src/codecs/primitives/bytes.js +3 -4
  579. package/packages/common/src/codecs/primitives/bytes.js.map +1 -1
  580. package/packages/common/src/codecs/primitives/bytes.mjs +1 -2
  581. package/packages/common/src/codecs/primitives/bytes.mjs.map +1 -1
  582. package/packages/common/src/codecs/primitives/fixed-bytes.d.ts +19 -0
  583. package/packages/common/src/codecs/primitives/fixed-bytes.js +3 -4
  584. package/packages/common/src/codecs/primitives/fixed-bytes.js.map +1 -1
  585. package/packages/common/src/codecs/primitives/fixed-bytes.mjs +1 -2
  586. package/packages/common/src/codecs/primitives/fixed-bytes.mjs.map +1 -1
  587. package/packages/common/src/codecs/primitives/number.d.ts +11 -0
  588. package/packages/common/src/codecs/primitives/number.js +2 -3
  589. package/packages/common/src/codecs/primitives/number.js.map +1 -1
  590. package/packages/common/src/codecs/primitives/number.mjs +1 -2
  591. package/packages/common/src/codecs/primitives/number.mjs.map +1 -1
  592. package/packages/common/src/codecs/primitives/string.d.ts +13 -0
  593. package/packages/common/src/codecs/primitives/string.js +3 -4
  594. package/packages/common/src/codecs/primitives/string.js.map +1 -1
  595. package/packages/common/src/codecs/primitives/string.mjs +1 -2
  596. package/packages/common/src/codecs/primitives/string.mjs.map +1 -1
  597. package/packages/common/src/codecs/primitives/unknown.d.ts +26 -0
  598. package/packages/common/src/codecs/primitives/unknown.js +10 -11
  599. package/packages/common/src/codecs/primitives/unknown.js.map +1 -1
  600. package/packages/common/src/codecs/primitives/unknown.mjs +3 -4
  601. package/packages/common/src/codecs/primitives/unknown.mjs.map +1 -1
  602. package/packages/common/src/codecs/types.d.ts +12 -2
  603. package/packages/common/src/codecs/wire.d.ts +17 -1
  604. package/packages/common/src/codecs/wire.js +2 -3
  605. package/packages/common/src/codecs/wire.js.map +1 -1
  606. package/packages/common/src/codecs/wire.mjs +1 -2
  607. package/packages/common/src/codecs/wire.mjs.map +1 -1
  608. package/packages/common/src/constants.d.ts +34 -0
  609. package/packages/common/src/constants.js +4 -3
  610. package/packages/common/src/constants.js.map +1 -1
  611. package/packages/common/src/constants.mjs +4 -3
  612. package/packages/common/src/constants.mjs.map +1 -1
  613. package/packages/common/src/encoding.d.ts +10 -0
  614. package/packages/common/src/encoding.js +30 -0
  615. package/packages/common/src/encoding.js.map +1 -0
  616. package/packages/common/src/encoding.mjs +24 -0
  617. package/packages/common/src/encoding.mjs.map +1 -0
  618. package/packages/common/src/json.d.ts +17 -0
  619. package/packages/common/src/json.js +3 -4
  620. package/packages/common/src/json.js.map +1 -1
  621. package/packages/common/src/json.mjs +3 -4
  622. package/packages/common/src/json.mjs.map +1 -1
  623. package/packages/common/src/msgpack.d.ts +11 -0
  624. package/packages/common/src/msgpack.js +2 -3
  625. package/packages/common/src/msgpack.js.map +1 -1
  626. package/packages/common/src/msgpack.mjs +1 -2
  627. package/packages/common/src/msgpack.mjs.map +1 -1
  628. package/packages/{sdk/src/logic → common/src}/sourcemap.d.ts +1 -1
  629. package/packages/{sdk/src/logic → common/src}/sourcemap.js +4 -5
  630. package/packages/common/src/sourcemap.js.map +1 -0
  631. package/packages/{sdk/src/logic → common/src}/sourcemap.mjs +2 -3
  632. package/packages/common/src/sourcemap.mjs.map +1 -0
  633. package/packages/crypto/src/ed25519.d.ts +60 -0
  634. package/packages/crypto/src/ed25519.js +58 -0
  635. package/packages/crypto/src/ed25519.js.map +1 -0
  636. package/packages/crypto/src/ed25519.mjs +53 -0
  637. package/packages/crypto/src/ed25519.mjs.map +1 -0
  638. package/packages/crypto/src/hash.d.ts +8 -0
  639. package/packages/crypto/src/hash.js +14 -0
  640. package/packages/crypto/src/hash.js.map +1 -0
  641. package/packages/crypto/src/hash.mjs +13 -0
  642. package/packages/crypto/src/hash.mjs.map +1 -0
  643. package/packages/crypto/src/hd.d.ts +36 -0
  644. package/packages/crypto/src/hd.js +36 -0
  645. package/packages/crypto/src/hd.js.map +1 -0
  646. package/packages/crypto/src/hd.mjs +35 -0
  647. package/packages/crypto/src/hd.mjs.map +1 -0
  648. package/packages/crypto/src/index.d.ts +28 -0
  649. package/packages/crypto/src/index.js +142 -0
  650. package/packages/crypto/src/index.js.map +1 -0
  651. package/packages/crypto/src/index.mjs +139 -0
  652. package/packages/crypto/src/index.mjs.map +1 -0
  653. package/packages/indexer_client/src/apis/api-service.js +19 -20
  654. package/packages/indexer_client/src/apis/api-service.js.map +1 -1
  655. package/packages/indexer_client/src/apis/api-service.mjs +1 -2
  656. package/packages/indexer_client/src/apis/api-service.mjs.map +1 -1
  657. package/packages/indexer_client/src/client.js +3 -4
  658. package/packages/indexer_client/src/client.js.map +1 -1
  659. package/packages/indexer_client/src/client.mjs +1 -2
  660. package/packages/indexer_client/src/client.mjs.map +1 -1
  661. package/packages/indexer_client/src/core/api-error.js +1 -2
  662. package/packages/indexer_client/src/core/api-error.js.map +1 -1
  663. package/packages/indexer_client/src/core/api-error.mjs +1 -1
  664. package/packages/indexer_client/src/core/api-error.mjs.map +1 -1
  665. package/packages/indexer_client/src/core/base-http-request.js +1 -2
  666. package/packages/indexer_client/src/core/base-http-request.js.map +1 -1
  667. package/packages/indexer_client/src/core/base-http-request.mjs +1 -1
  668. package/packages/indexer_client/src/core/base-http-request.mjs.map +1 -1
  669. package/packages/indexer_client/src/core/fetch-http-request.js +3 -4
  670. package/packages/indexer_client/src/core/fetch-http-request.js.map +1 -1
  671. package/packages/indexer_client/src/core/fetch-http-request.mjs +1 -2
  672. package/packages/indexer_client/src/core/fetch-http-request.mjs.map +1 -1
  673. package/packages/indexer_client/src/core/model-runtime.js +2 -18
  674. package/packages/indexer_client/src/core/model-runtime.js.map +1 -1
  675. package/packages/indexer_client/src/core/model-runtime.mjs +2 -15
  676. package/packages/indexer_client/src/core/model-runtime.mjs.map +1 -1
  677. package/packages/indexer_client/src/core/request.js +5 -6
  678. package/packages/indexer_client/src/core/request.js.map +1 -1
  679. package/packages/indexer_client/src/core/request.mjs +1 -2
  680. package/packages/indexer_client/src/core/request.mjs.map +1 -1
  681. package/packages/indexer_client/src/models/account-participation.js +3 -4
  682. package/packages/indexer_client/src/models/account-participation.js.map +1 -1
  683. package/packages/indexer_client/src/models/account-participation.mjs +1 -2
  684. package/packages/indexer_client/src/models/account-participation.mjs.map +1 -1
  685. package/packages/indexer_client/src/models/account-response.js +4 -5
  686. package/packages/indexer_client/src/models/account-response.js.map +1 -1
  687. package/packages/indexer_client/src/models/account-response.mjs +1 -2
  688. package/packages/indexer_client/src/models/account-response.mjs.map +1 -1
  689. package/packages/indexer_client/src/models/account-state-delta.d.ts +0 -1
  690. package/packages/indexer_client/src/models/account-state-delta.js +4 -5
  691. package/packages/indexer_client/src/models/account-state-delta.js.map +1 -1
  692. package/packages/indexer_client/src/models/account-state-delta.mjs +1 -2
  693. package/packages/indexer_client/src/models/account-state-delta.mjs.map +1 -1
  694. package/packages/indexer_client/src/models/account.d.ts +0 -1
  695. package/packages/indexer_client/src/models/account.js +14 -15
  696. package/packages/indexer_client/src/models/account.js.map +1 -1
  697. package/packages/indexer_client/src/models/account.mjs +1 -2
  698. package/packages/indexer_client/src/models/account.mjs.map +1 -1
  699. package/packages/indexer_client/src/models/accounts-response.js +6 -7
  700. package/packages/indexer_client/src/models/accounts-response.js.map +1 -1
  701. package/packages/indexer_client/src/models/accounts-response.mjs +1 -2
  702. package/packages/indexer_client/src/models/accounts-response.mjs.map +1 -1
  703. package/packages/indexer_client/src/models/application-local-state.d.ts +0 -1
  704. package/packages/indexer_client/src/models/application-local-state.js +7 -8
  705. package/packages/indexer_client/src/models/application-local-state.js.map +1 -1
  706. package/packages/indexer_client/src/models/application-local-state.mjs +1 -2
  707. package/packages/indexer_client/src/models/application-local-state.mjs.map +1 -1
  708. package/packages/indexer_client/src/models/application-local-states-response.js +6 -7
  709. package/packages/indexer_client/src/models/application-local-states-response.js.map +1 -1
  710. package/packages/indexer_client/src/models/application-local-states-response.mjs +1 -2
  711. package/packages/indexer_client/src/models/application-local-states-response.mjs.map +1 -1
  712. package/packages/indexer_client/src/models/application-log-data.js +3 -4
  713. package/packages/indexer_client/src/models/application-log-data.js.map +1 -1
  714. package/packages/indexer_client/src/models/application-log-data.mjs +1 -2
  715. package/packages/indexer_client/src/models/application-log-data.mjs.map +1 -1
  716. package/packages/indexer_client/src/models/application-logs-response.js +6 -7
  717. package/packages/indexer_client/src/models/application-logs-response.js.map +1 -1
  718. package/packages/indexer_client/src/models/application-logs-response.mjs +1 -2
  719. package/packages/indexer_client/src/models/application-logs-response.mjs.map +1 -1
  720. package/packages/indexer_client/src/models/application-params.d.ts +0 -1
  721. package/packages/indexer_client/src/models/application-params.js +8 -9
  722. package/packages/indexer_client/src/models/application-params.js.map +1 -1
  723. package/packages/indexer_client/src/models/application-params.mjs +1 -2
  724. package/packages/indexer_client/src/models/application-params.mjs.map +1 -1
  725. package/packages/indexer_client/src/models/application-response.js +4 -5
  726. package/packages/indexer_client/src/models/application-response.js.map +1 -1
  727. package/packages/indexer_client/src/models/application-response.mjs +1 -2
  728. package/packages/indexer_client/src/models/application-response.mjs.map +1 -1
  729. package/packages/indexer_client/src/models/application-state-schema.js +2 -3
  730. package/packages/indexer_client/src/models/application-state-schema.js.map +1 -1
  731. package/packages/indexer_client/src/models/application-state-schema.mjs +1 -2
  732. package/packages/indexer_client/src/models/application-state-schema.mjs.map +1 -1
  733. package/packages/indexer_client/src/models/application.d.ts +0 -1
  734. package/packages/indexer_client/src/models/application.js +5 -6
  735. package/packages/indexer_client/src/models/application.js.map +1 -1
  736. package/packages/indexer_client/src/models/application.mjs +1 -2
  737. package/packages/indexer_client/src/models/application.mjs.map +1 -1
  738. package/packages/indexer_client/src/models/applications-response.js +6 -7
  739. package/packages/indexer_client/src/models/applications-response.js.map +1 -1
  740. package/packages/indexer_client/src/models/applications-response.mjs +1 -2
  741. package/packages/indexer_client/src/models/applications-response.mjs.map +1 -1
  742. package/packages/indexer_client/src/models/asset-balances-response.js +6 -7
  743. package/packages/indexer_client/src/models/asset-balances-response.js.map +1 -1
  744. package/packages/indexer_client/src/models/asset-balances-response.mjs +1 -2
  745. package/packages/indexer_client/src/models/asset-balances-response.mjs.map +1 -1
  746. package/packages/indexer_client/src/models/asset-holding.js +3 -4
  747. package/packages/indexer_client/src/models/asset-holding.js.map +1 -1
  748. package/packages/indexer_client/src/models/asset-holding.mjs +1 -2
  749. package/packages/indexer_client/src/models/asset-holding.mjs.map +1 -1
  750. package/packages/indexer_client/src/models/asset-holdings-response.js +6 -7
  751. package/packages/indexer_client/src/models/asset-holdings-response.js.map +1 -1
  752. package/packages/indexer_client/src/models/asset-holdings-response.mjs +1 -2
  753. package/packages/indexer_client/src/models/asset-holdings-response.mjs.map +1 -1
  754. package/packages/indexer_client/src/models/asset-params.js +7 -8
  755. package/packages/indexer_client/src/models/asset-params.js.map +1 -1
  756. package/packages/indexer_client/src/models/asset-params.mjs +1 -2
  757. package/packages/indexer_client/src/models/asset-params.mjs.map +1 -1
  758. package/packages/indexer_client/src/models/asset-response.js +4 -5
  759. package/packages/indexer_client/src/models/asset-response.js.map +1 -1
  760. package/packages/indexer_client/src/models/asset-response.mjs +1 -2
  761. package/packages/indexer_client/src/models/asset-response.mjs.map +1 -1
  762. package/packages/indexer_client/src/models/asset.d.ts +0 -1
  763. package/packages/indexer_client/src/models/asset.js +5 -6
  764. package/packages/indexer_client/src/models/asset.js.map +1 -1
  765. package/packages/indexer_client/src/models/asset.mjs +1 -2
  766. package/packages/indexer_client/src/models/asset.mjs.map +1 -1
  767. package/packages/indexer_client/src/models/assets-response.js +6 -7
  768. package/packages/indexer_client/src/models/assets-response.js.map +1 -1
  769. package/packages/indexer_client/src/models/assets-response.mjs +1 -2
  770. package/packages/indexer_client/src/models/assets-response.mjs.map +1 -1
  771. package/packages/indexer_client/src/models/block-headers-response.js +6 -7
  772. package/packages/indexer_client/src/models/block-headers-response.js.map +1 -1
  773. package/packages/indexer_client/src/models/block-headers-response.mjs +1 -2
  774. package/packages/indexer_client/src/models/block-headers-response.mjs.map +1 -1
  775. package/packages/indexer_client/src/models/block-rewards.js +3 -4
  776. package/packages/indexer_client/src/models/block-rewards.js.map +1 -1
  777. package/packages/indexer_client/src/models/block-rewards.mjs +1 -2
  778. package/packages/indexer_client/src/models/block-rewards.mjs.map +1 -1
  779. package/packages/indexer_client/src/models/block-upgrade-state.js +4 -5
  780. package/packages/indexer_client/src/models/block-upgrade-state.js.map +1 -1
  781. package/packages/indexer_client/src/models/block-upgrade-state.mjs +1 -2
  782. package/packages/indexer_client/src/models/block-upgrade-state.mjs.map +1 -1
  783. package/packages/indexer_client/src/models/block-upgrade-vote.js +4 -5
  784. package/packages/indexer_client/src/models/block-upgrade-vote.js.map +1 -1
  785. package/packages/indexer_client/src/models/block-upgrade-vote.mjs +1 -2
  786. package/packages/indexer_client/src/models/block-upgrade-vote.mjs.map +1 -1
  787. package/packages/indexer_client/src/models/block.d.ts +5 -6
  788. package/packages/indexer_client/src/models/block.js +19 -20
  789. package/packages/indexer_client/src/models/block.js.map +1 -1
  790. package/packages/indexer_client/src/models/block.mjs +6 -7
  791. package/packages/indexer_client/src/models/block.mjs.map +1 -1
  792. package/packages/indexer_client/src/models/box-descriptor.js +2 -4
  793. package/packages/indexer_client/src/models/box-descriptor.js.map +1 -1
  794. package/packages/indexer_client/src/models/box-descriptor.mjs +1 -2
  795. package/packages/indexer_client/src/models/box-descriptor.mjs.map +1 -1
  796. package/packages/indexer_client/src/models/box-reference.js +3 -4
  797. package/packages/indexer_client/src/models/box-reference.js.map +1 -1
  798. package/packages/indexer_client/src/models/box-reference.mjs +1 -2
  799. package/packages/indexer_client/src/models/box-reference.mjs.map +1 -1
  800. package/packages/indexer_client/src/models/box.js +3 -4
  801. package/packages/indexer_client/src/models/box.js.map +1 -1
  802. package/packages/indexer_client/src/models/box.mjs +1 -2
  803. package/packages/indexer_client/src/models/box.mjs.map +1 -1
  804. package/packages/indexer_client/src/models/boxes-response.js +6 -7
  805. package/packages/indexer_client/src/models/boxes-response.js.map +1 -1
  806. package/packages/indexer_client/src/models/boxes-response.mjs +1 -2
  807. package/packages/indexer_client/src/models/boxes-response.mjs.map +1 -1
  808. package/packages/indexer_client/src/models/eval-delta-key-value.d.ts +0 -1
  809. package/packages/indexer_client/src/models/eval-delta-key-value.js +4 -5
  810. package/packages/indexer_client/src/models/eval-delta-key-value.js.map +1 -1
  811. package/packages/indexer_client/src/models/eval-delta-key-value.mjs +1 -2
  812. package/packages/indexer_client/src/models/eval-delta-key-value.mjs.map +1 -1
  813. package/packages/indexer_client/src/models/eval-delta.js +4 -6
  814. package/packages/indexer_client/src/models/eval-delta.js.map +1 -1
  815. package/packages/indexer_client/src/models/eval-delta.mjs +1 -2
  816. package/packages/indexer_client/src/models/eval-delta.mjs.map +1 -1
  817. package/packages/indexer_client/src/models/hash-factory.js +2 -4
  818. package/packages/indexer_client/src/models/hash-factory.js.map +1 -1
  819. package/packages/indexer_client/src/models/hash-factory.mjs +1 -2
  820. package/packages/indexer_client/src/models/hash-factory.mjs.map +1 -1
  821. package/packages/indexer_client/src/models/hb-proof-fields.js +2 -3
  822. package/packages/indexer_client/src/models/hb-proof-fields.js.map +1 -1
  823. package/packages/indexer_client/src/models/hb-proof-fields.mjs +1 -2
  824. package/packages/indexer_client/src/models/hb-proof-fields.mjs.map +1 -1
  825. package/packages/indexer_client/src/models/health-check.js +7 -8
  826. package/packages/indexer_client/src/models/health-check.js.map +1 -1
  827. package/packages/indexer_client/src/models/health-check.mjs +1 -2
  828. package/packages/indexer_client/src/models/health-check.mjs.map +1 -1
  829. package/packages/indexer_client/src/models/holding-ref.d.ts +0 -1
  830. package/packages/indexer_client/src/models/holding-ref.js +3 -4
  831. package/packages/indexer_client/src/models/holding-ref.js.map +1 -1
  832. package/packages/indexer_client/src/models/holding-ref.mjs +1 -2
  833. package/packages/indexer_client/src/models/holding-ref.mjs.map +1 -1
  834. package/packages/indexer_client/src/models/indexer-state-proof-message.js +3 -4
  835. package/packages/indexer_client/src/models/indexer-state-proof-message.js.map +1 -1
  836. package/packages/indexer_client/src/models/indexer-state-proof-message.mjs +1 -2
  837. package/packages/indexer_client/src/models/indexer-state-proof-message.mjs.map +1 -1
  838. package/packages/indexer_client/src/models/locals-ref.d.ts +0 -1
  839. package/packages/indexer_client/src/models/locals-ref.js +3 -4
  840. package/packages/indexer_client/src/models/locals-ref.js.map +1 -1
  841. package/packages/indexer_client/src/models/locals-ref.mjs +1 -2
  842. package/packages/indexer_client/src/models/locals-ref.mjs.map +1 -1
  843. package/packages/indexer_client/src/models/merkle-array-proof.js +5 -6
  844. package/packages/indexer_client/src/models/merkle-array-proof.js.map +1 -1
  845. package/packages/indexer_client/src/models/merkle-array-proof.mjs +1 -2
  846. package/packages/indexer_client/src/models/merkle-array-proof.mjs.map +1 -1
  847. package/packages/indexer_client/src/models/mini-asset-holding.js +4 -6
  848. package/packages/indexer_client/src/models/mini-asset-holding.js.map +1 -1
  849. package/packages/indexer_client/src/models/mini-asset-holding.mjs +1 -2
  850. package/packages/indexer_client/src/models/mini-asset-holding.mjs.map +1 -1
  851. package/packages/indexer_client/src/models/on-completion.js +2 -4
  852. package/packages/indexer_client/src/models/on-completion.js.map +1 -1
  853. package/packages/indexer_client/src/models/on-completion.mjs +1 -2
  854. package/packages/indexer_client/src/models/on-completion.mjs.map +1 -1
  855. package/packages/indexer_client/src/models/participation-updates.d.ts +2 -2
  856. package/packages/indexer_client/src/models/participation-updates.js +4 -5
  857. package/packages/indexer_client/src/models/participation-updates.js.map +1 -1
  858. package/packages/indexer_client/src/models/participation-updates.mjs +3 -4
  859. package/packages/indexer_client/src/models/participation-updates.mjs.map +1 -1
  860. package/packages/indexer_client/src/models/resource-ref.d.ts +0 -1
  861. package/packages/indexer_client/src/models/resource-ref.js +7 -8
  862. package/packages/indexer_client/src/models/resource-ref.js.map +1 -1
  863. package/packages/indexer_client/src/models/resource-ref.mjs +1 -2
  864. package/packages/indexer_client/src/models/resource-ref.mjs.map +1 -1
  865. package/packages/indexer_client/src/models/state-delta.d.ts +0 -1
  866. package/packages/indexer_client/src/models/state-delta.js +4 -5
  867. package/packages/indexer_client/src/models/state-delta.js.map +1 -1
  868. package/packages/indexer_client/src/models/state-delta.mjs +1 -2
  869. package/packages/indexer_client/src/models/state-delta.mjs.map +1 -1
  870. package/packages/indexer_client/src/models/state-proof-fields.d.ts +0 -1
  871. package/packages/indexer_client/src/models/state-proof-fields.js +8 -9
  872. package/packages/indexer_client/src/models/state-proof-fields.js.map +1 -1
  873. package/packages/indexer_client/src/models/state-proof-fields.mjs +1 -2
  874. package/packages/indexer_client/src/models/state-proof-fields.mjs.map +1 -1
  875. package/packages/indexer_client/src/models/state-proof-participant.js +4 -5
  876. package/packages/indexer_client/src/models/state-proof-participant.js.map +1 -1
  877. package/packages/indexer_client/src/models/state-proof-participant.mjs +1 -2
  878. package/packages/indexer_client/src/models/state-proof-participant.mjs.map +1 -1
  879. package/packages/indexer_client/src/models/state-proof-reveal.js +5 -6
  880. package/packages/indexer_client/src/models/state-proof-reveal.js.map +1 -1
  881. package/packages/indexer_client/src/models/state-proof-reveal.mjs +1 -2
  882. package/packages/indexer_client/src/models/state-proof-reveal.mjs.map +1 -1
  883. package/packages/indexer_client/src/models/state-proof-sig-slot.js +4 -5
  884. package/packages/indexer_client/src/models/state-proof-sig-slot.js.map +1 -1
  885. package/packages/indexer_client/src/models/state-proof-sig-slot.mjs +1 -2
  886. package/packages/indexer_client/src/models/state-proof-sig-slot.mjs.map +1 -1
  887. package/packages/indexer_client/src/models/state-proof-signature.js +5 -6
  888. package/packages/indexer_client/src/models/state-proof-signature.js.map +1 -1
  889. package/packages/indexer_client/src/models/state-proof-signature.mjs +1 -2
  890. package/packages/indexer_client/src/models/state-proof-signature.mjs.map +1 -1
  891. package/packages/indexer_client/src/models/state-proof-tracking.js +4 -5
  892. package/packages/indexer_client/src/models/state-proof-tracking.js.map +1 -1
  893. package/packages/indexer_client/src/models/state-proof-tracking.mjs +1 -2
  894. package/packages/indexer_client/src/models/state-proof-tracking.mjs.map +1 -1
  895. package/packages/indexer_client/src/models/state-proof-verifier.js +3 -5
  896. package/packages/indexer_client/src/models/state-proof-verifier.js.map +1 -1
  897. package/packages/indexer_client/src/models/state-proof-verifier.mjs +1 -2
  898. package/packages/indexer_client/src/models/state-proof-verifier.mjs.map +1 -1
  899. package/packages/indexer_client/src/models/state-schema.js +2 -3
  900. package/packages/indexer_client/src/models/state-schema.js.map +1 -1
  901. package/packages/indexer_client/src/models/state-schema.mjs +1 -2
  902. package/packages/indexer_client/src/models/state-schema.mjs.map +1 -1
  903. package/packages/indexer_client/src/models/teal-key-value-store.d.ts +0 -1
  904. package/packages/indexer_client/src/models/teal-key-value-store.js +4 -5
  905. package/packages/indexer_client/src/models/teal-key-value-store.js.map +1 -1
  906. package/packages/indexer_client/src/models/teal-key-value-store.mjs +1 -2
  907. package/packages/indexer_client/src/models/teal-key-value-store.mjs.map +1 -1
  908. package/packages/indexer_client/src/models/teal-key-value.d.ts +0 -1
  909. package/packages/indexer_client/src/models/teal-key-value.js +4 -5
  910. package/packages/indexer_client/src/models/teal-key-value.js.map +1 -1
  911. package/packages/indexer_client/src/models/teal-key-value.mjs +1 -2
  912. package/packages/indexer_client/src/models/teal-key-value.mjs.map +1 -1
  913. package/packages/indexer_client/src/models/teal-value.js +4 -6
  914. package/packages/indexer_client/src/models/teal-value.js.map +1 -1
  915. package/packages/indexer_client/src/models/teal-value.mjs +1 -2
  916. package/packages/indexer_client/src/models/teal-value.mjs.map +1 -1
  917. package/packages/indexer_client/src/models/transaction-application.d.ts +0 -1
  918. package/packages/indexer_client/src/models/transaction-application.js +11 -12
  919. package/packages/indexer_client/src/models/transaction-application.js.map +1 -1
  920. package/packages/indexer_client/src/models/transaction-application.mjs +1 -2
  921. package/packages/indexer_client/src/models/transaction-application.mjs.map +1 -1
  922. package/packages/indexer_client/src/models/transaction-asset-config.d.ts +0 -1
  923. package/packages/indexer_client/src/models/transaction-asset-config.js +4 -5
  924. package/packages/indexer_client/src/models/transaction-asset-config.js.map +1 -1
  925. package/packages/indexer_client/src/models/transaction-asset-config.mjs +1 -2
  926. package/packages/indexer_client/src/models/transaction-asset-config.mjs.map +1 -1
  927. package/packages/indexer_client/src/models/transaction-asset-freeze.js +4 -6
  928. package/packages/indexer_client/src/models/transaction-asset-freeze.js.map +1 -1
  929. package/packages/indexer_client/src/models/transaction-asset-freeze.mjs +1 -2
  930. package/packages/indexer_client/src/models/transaction-asset-freeze.mjs.map +1 -1
  931. package/packages/indexer_client/src/models/transaction-asset-transfer.js +3 -4
  932. package/packages/indexer_client/src/models/transaction-asset-transfer.js.map +1 -1
  933. package/packages/indexer_client/src/models/transaction-asset-transfer.mjs +1 -2
  934. package/packages/indexer_client/src/models/transaction-asset-transfer.mjs.map +1 -1
  935. package/packages/indexer_client/src/models/transaction-heartbeat.d.ts +0 -1
  936. package/packages/indexer_client/src/models/transaction-heartbeat.js +7 -8
  937. package/packages/indexer_client/src/models/transaction-heartbeat.js.map +1 -1
  938. package/packages/indexer_client/src/models/transaction-heartbeat.mjs +1 -2
  939. package/packages/indexer_client/src/models/transaction-heartbeat.mjs.map +1 -1
  940. package/packages/indexer_client/src/models/transaction-keyreg.js +4 -5
  941. package/packages/indexer_client/src/models/transaction-keyreg.js.map +1 -1
  942. package/packages/indexer_client/src/models/transaction-keyreg.mjs +1 -2
  943. package/packages/indexer_client/src/models/transaction-keyreg.mjs.map +1 -1
  944. package/packages/indexer_client/src/models/transaction-payment.js +3 -4
  945. package/packages/indexer_client/src/models/transaction-payment.js.map +1 -1
  946. package/packages/indexer_client/src/models/transaction-payment.mjs +1 -2
  947. package/packages/indexer_client/src/models/transaction-payment.mjs.map +1 -1
  948. package/packages/indexer_client/src/models/transaction-response.js +4 -5
  949. package/packages/indexer_client/src/models/transaction-response.js.map +1 -1
  950. package/packages/indexer_client/src/models/transaction-response.mjs +1 -2
  951. package/packages/indexer_client/src/models/transaction-response.mjs.map +1 -1
  952. package/packages/indexer_client/src/models/transaction-signature-logicsig.d.ts +0 -1
  953. package/packages/indexer_client/src/models/transaction-signature-logicsig.js +6 -7
  954. package/packages/indexer_client/src/models/transaction-signature-logicsig.js.map +1 -1
  955. package/packages/indexer_client/src/models/transaction-signature-logicsig.mjs +1 -2
  956. package/packages/indexer_client/src/models/transaction-signature-logicsig.mjs.map +1 -1
  957. package/packages/indexer_client/src/models/transaction-signature-multisig-subsignature.js +2 -3
  958. package/packages/indexer_client/src/models/transaction-signature-multisig-subsignature.js.map +1 -1
  959. package/packages/indexer_client/src/models/transaction-signature-multisig-subsignature.mjs +1 -2
  960. package/packages/indexer_client/src/models/transaction-signature-multisig-subsignature.mjs.map +1 -1
  961. package/packages/indexer_client/src/models/transaction-signature-multisig.d.ts +0 -1
  962. package/packages/indexer_client/src/models/transaction-signature-multisig.js +5 -6
  963. package/packages/indexer_client/src/models/transaction-signature-multisig.js.map +1 -1
  964. package/packages/indexer_client/src/models/transaction-signature-multisig.mjs +1 -2
  965. package/packages/indexer_client/src/models/transaction-signature-multisig.mjs.map +1 -1
  966. package/packages/indexer_client/src/models/transaction-signature.d.ts +0 -1
  967. package/packages/indexer_client/src/models/transaction-signature.js +5 -6
  968. package/packages/indexer_client/src/models/transaction-signature.js.map +1 -1
  969. package/packages/indexer_client/src/models/transaction-signature.mjs +1 -2
  970. package/packages/indexer_client/src/models/transaction-signature.mjs.map +1 -1
  971. package/packages/indexer_client/src/models/transaction-state-proof.d.ts +1 -2
  972. package/packages/indexer_client/src/models/transaction-state-proof.js +6 -7
  973. package/packages/indexer_client/src/models/transaction-state-proof.js.map +1 -1
  974. package/packages/indexer_client/src/models/transaction-state-proof.mjs +3 -4
  975. package/packages/indexer_client/src/models/transaction-state-proof.mjs.map +1 -1
  976. package/packages/indexer_client/src/models/transaction.d.ts +0 -1
  977. package/packages/indexer_client/src/models/transaction.js +21 -22
  978. package/packages/indexer_client/src/models/transaction.js.map +1 -1
  979. package/packages/indexer_client/src/models/transaction.mjs +1 -2
  980. package/packages/indexer_client/src/models/transaction.mjs.map +1 -1
  981. package/packages/indexer_client/src/models/transactions-response.js +6 -7
  982. package/packages/indexer_client/src/models/transactions-response.js.map +1 -1
  983. package/packages/indexer_client/src/models/transactions-response.mjs +1 -2
  984. package/packages/indexer_client/src/models/transactions-response.mjs.map +1 -1
  985. package/packages/kmd_client/src/apis/api-service.js +44 -46
  986. package/packages/kmd_client/src/apis/api-service.js.map +1 -1
  987. package/packages/kmd_client/src/apis/api-service.mjs +3 -5
  988. package/packages/kmd_client/src/apis/api-service.mjs.map +1 -1
  989. package/packages/kmd_client/src/client.js +3 -4
  990. package/packages/kmd_client/src/client.js.map +1 -1
  991. package/packages/kmd_client/src/client.mjs +1 -2
  992. package/packages/kmd_client/src/client.mjs.map +1 -1
  993. package/packages/kmd_client/src/core/api-error.js +1 -2
  994. package/packages/kmd_client/src/core/api-error.js.map +1 -1
  995. package/packages/kmd_client/src/core/api-error.mjs +1 -1
  996. package/packages/kmd_client/src/core/api-error.mjs.map +1 -1
  997. package/packages/kmd_client/src/core/base-http-request.js +1 -2
  998. package/packages/kmd_client/src/core/base-http-request.js.map +1 -1
  999. package/packages/kmd_client/src/core/base-http-request.mjs +1 -1
  1000. package/packages/kmd_client/src/core/base-http-request.mjs.map +1 -1
  1001. package/packages/kmd_client/src/core/fetch-http-request.js +3 -4
  1002. package/packages/kmd_client/src/core/fetch-http-request.js.map +1 -1
  1003. package/packages/kmd_client/src/core/fetch-http-request.mjs +1 -2
  1004. package/packages/kmd_client/src/core/fetch-http-request.mjs.map +1 -1
  1005. package/packages/kmd_client/src/core/model-runtime.js +5 -16
  1006. package/packages/kmd_client/src/core/model-runtime.js.map +1 -1
  1007. package/packages/kmd_client/src/core/model-runtime.mjs +4 -13
  1008. package/packages/kmd_client/src/core/model-runtime.mjs.map +1 -1
  1009. package/packages/kmd_client/src/core/request.js +5 -6
  1010. package/packages/kmd_client/src/core/request.js.map +1 -1
  1011. package/packages/kmd_client/src/core/request.mjs +1 -2
  1012. package/packages/kmd_client/src/core/request.mjs.map +1 -1
  1013. package/packages/kmd_client/src/models/create-wallet-request.js +3 -4
  1014. package/packages/kmd_client/src/models/create-wallet-request.js.map +1 -1
  1015. package/packages/kmd_client/src/models/create-wallet-request.mjs +1 -2
  1016. package/packages/kmd_client/src/models/create-wallet-request.mjs.map +1 -1
  1017. package/packages/kmd_client/src/models/create-wallet-response.d.ts +0 -1
  1018. package/packages/kmd_client/src/models/create-wallet-response.js +3 -4
  1019. package/packages/kmd_client/src/models/create-wallet-response.js.map +1 -1
  1020. package/packages/kmd_client/src/models/create-wallet-response.mjs +1 -2
  1021. package/packages/kmd_client/src/models/create-wallet-response.mjs.map +1 -1
  1022. package/packages/kmd_client/src/models/delete-key-request.d.ts +0 -1
  1023. package/packages/kmd_client/src/models/delete-key-request.js +3 -4
  1024. package/packages/kmd_client/src/models/delete-key-request.js.map +1 -1
  1025. package/packages/kmd_client/src/models/delete-key-request.mjs +1 -2
  1026. package/packages/kmd_client/src/models/delete-key-request.mjs.map +1 -1
  1027. package/packages/kmd_client/src/models/delete-multisig-request.d.ts +0 -1
  1028. package/packages/kmd_client/src/models/delete-multisig-request.js +3 -4
  1029. package/packages/kmd_client/src/models/delete-multisig-request.js.map +1 -1
  1030. package/packages/kmd_client/src/models/delete-multisig-request.mjs +1 -2
  1031. package/packages/kmd_client/src/models/delete-multisig-request.mjs.map +1 -1
  1032. package/packages/kmd_client/src/models/export-key-request.d.ts +0 -1
  1033. package/packages/kmd_client/src/models/export-key-request.js +3 -4
  1034. package/packages/kmd_client/src/models/export-key-request.js.map +1 -1
  1035. package/packages/kmd_client/src/models/export-key-request.mjs +1 -2
  1036. package/packages/kmd_client/src/models/export-key-request.mjs.map +1 -1
  1037. package/packages/kmd_client/src/models/export-key-response.js +2 -4
  1038. package/packages/kmd_client/src/models/export-key-response.js.map +1 -1
  1039. package/packages/kmd_client/src/models/export-key-response.mjs +1 -2
  1040. package/packages/kmd_client/src/models/export-key-response.mjs.map +1 -1
  1041. package/packages/kmd_client/src/models/export-master-key-request.js +2 -3
  1042. package/packages/kmd_client/src/models/export-master-key-request.js.map +1 -1
  1043. package/packages/kmd_client/src/models/export-master-key-request.mjs +1 -2
  1044. package/packages/kmd_client/src/models/export-master-key-request.mjs.map +1 -1
  1045. package/packages/kmd_client/src/models/export-master-key-response.js +2 -4
  1046. package/packages/kmd_client/src/models/export-master-key-response.js.map +1 -1
  1047. package/packages/kmd_client/src/models/export-master-key-response.mjs +1 -2
  1048. package/packages/kmd_client/src/models/export-master-key-response.mjs.map +1 -1
  1049. package/packages/kmd_client/src/models/export-multisig-request.d.ts +0 -1
  1050. package/packages/kmd_client/src/models/export-multisig-request.js +3 -4
  1051. package/packages/kmd_client/src/models/export-multisig-request.js.map +1 -1
  1052. package/packages/kmd_client/src/models/export-multisig-request.mjs +1 -2
  1053. package/packages/kmd_client/src/models/export-multisig-request.mjs.map +1 -1
  1054. package/packages/kmd_client/src/models/export-multisig-response.js +3 -4
  1055. package/packages/kmd_client/src/models/export-multisig-response.js.map +1 -1
  1056. package/packages/kmd_client/src/models/export-multisig-response.mjs +1 -2
  1057. package/packages/kmd_client/src/models/export-multisig-response.mjs.map +1 -1
  1058. package/packages/kmd_client/src/models/generate-key-request.js +2 -4
  1059. package/packages/kmd_client/src/models/generate-key-request.js.map +1 -1
  1060. package/packages/kmd_client/src/models/generate-key-request.mjs +1 -2
  1061. package/packages/kmd_client/src/models/generate-key-request.mjs.map +1 -1
  1062. package/packages/kmd_client/src/models/generate-key-response.d.ts +0 -1
  1063. package/packages/kmd_client/src/models/generate-key-response.js +2 -4
  1064. package/packages/kmd_client/src/models/generate-key-response.js.map +1 -1
  1065. package/packages/kmd_client/src/models/generate-key-response.mjs +1 -2
  1066. package/packages/kmd_client/src/models/generate-key-response.mjs.map +1 -1
  1067. package/packages/kmd_client/src/models/import-key-request.js +3 -4
  1068. package/packages/kmd_client/src/models/import-key-request.js.map +1 -1
  1069. package/packages/kmd_client/src/models/import-key-request.mjs +1 -2
  1070. package/packages/kmd_client/src/models/import-key-request.mjs.map +1 -1
  1071. package/packages/kmd_client/src/models/import-key-response.d.ts +0 -1
  1072. package/packages/kmd_client/src/models/import-key-response.js +2 -4
  1073. package/packages/kmd_client/src/models/import-key-response.js.map +1 -1
  1074. package/packages/kmd_client/src/models/import-key-response.mjs +1 -2
  1075. package/packages/kmd_client/src/models/import-key-response.mjs.map +1 -1
  1076. package/packages/kmd_client/src/models/import-multisig-request.js +4 -5
  1077. package/packages/kmd_client/src/models/import-multisig-request.js.map +1 -1
  1078. package/packages/kmd_client/src/models/import-multisig-request.mjs +1 -2
  1079. package/packages/kmd_client/src/models/import-multisig-request.mjs.map +1 -1
  1080. package/packages/kmd_client/src/models/import-multisig-response.d.ts +0 -1
  1081. package/packages/kmd_client/src/models/import-multisig-response.js +2 -4
  1082. package/packages/kmd_client/src/models/import-multisig-response.js.map +1 -1
  1083. package/packages/kmd_client/src/models/import-multisig-response.mjs +1 -2
  1084. package/packages/kmd_client/src/models/import-multisig-response.mjs.map +1 -1
  1085. package/packages/kmd_client/src/models/init-wallet-handle-token-request.js +2 -3
  1086. package/packages/kmd_client/src/models/init-wallet-handle-token-request.js.map +1 -1
  1087. package/packages/kmd_client/src/models/init-wallet-handle-token-request.mjs +1 -2
  1088. package/packages/kmd_client/src/models/init-wallet-handle-token-request.mjs.map +1 -1
  1089. package/packages/kmd_client/src/models/init-wallet-handle-token-response.js +2 -4
  1090. package/packages/kmd_client/src/models/init-wallet-handle-token-response.js.map +1 -1
  1091. package/packages/kmd_client/src/models/init-wallet-handle-token-response.mjs +1 -2
  1092. package/packages/kmd_client/src/models/init-wallet-handle-token-response.mjs.map +1 -1
  1093. package/packages/kmd_client/src/models/list-keys-request.js +2 -4
  1094. package/packages/kmd_client/src/models/list-keys-request.js.map +1 -1
  1095. package/packages/kmd_client/src/models/list-keys-request.mjs +1 -2
  1096. package/packages/kmd_client/src/models/list-keys-request.mjs.map +1 -1
  1097. package/packages/kmd_client/src/models/list-keys-response.d.ts +0 -1
  1098. package/packages/kmd_client/src/models/list-keys-response.js +2 -4
  1099. package/packages/kmd_client/src/models/list-keys-response.js.map +1 -1
  1100. package/packages/kmd_client/src/models/list-keys-response.mjs +1 -2
  1101. package/packages/kmd_client/src/models/list-keys-response.mjs.map +1 -1
  1102. package/packages/kmd_client/src/models/list-multisig-request.js +2 -4
  1103. package/packages/kmd_client/src/models/list-multisig-request.js.map +1 -1
  1104. package/packages/kmd_client/src/models/list-multisig-request.mjs +1 -2
  1105. package/packages/kmd_client/src/models/list-multisig-request.mjs.map +1 -1
  1106. package/packages/kmd_client/src/models/list-multisig-response.d.ts +0 -1
  1107. package/packages/kmd_client/src/models/list-multisig-response.js +2 -4
  1108. package/packages/kmd_client/src/models/list-multisig-response.js.map +1 -1
  1109. package/packages/kmd_client/src/models/list-multisig-response.mjs +1 -2
  1110. package/packages/kmd_client/src/models/list-multisig-response.mjs.map +1 -1
  1111. package/packages/kmd_client/src/models/list-wallets-response.d.ts +0 -1
  1112. package/packages/kmd_client/src/models/list-wallets-response.js +4 -5
  1113. package/packages/kmd_client/src/models/list-wallets-response.js.map +1 -1
  1114. package/packages/kmd_client/src/models/list-wallets-response.mjs +1 -2
  1115. package/packages/kmd_client/src/models/list-wallets-response.mjs.map +1 -1
  1116. package/packages/kmd_client/src/models/multisig-sig.d.ts +0 -1
  1117. package/packages/kmd_client/src/models/multisig-sig.js +5 -6
  1118. package/packages/kmd_client/src/models/multisig-sig.js.map +1 -1
  1119. package/packages/kmd_client/src/models/multisig-sig.mjs +1 -2
  1120. package/packages/kmd_client/src/models/multisig-sig.mjs.map +1 -1
  1121. package/packages/kmd_client/src/models/multisig-subsig.js +2 -3
  1122. package/packages/kmd_client/src/models/multisig-subsig.js.map +1 -1
  1123. package/packages/kmd_client/src/models/multisig-subsig.mjs +1 -2
  1124. package/packages/kmd_client/src/models/multisig-subsig.mjs.map +1 -1
  1125. package/packages/kmd_client/src/models/release-wallet-handle-token-request.js +2 -4
  1126. package/packages/kmd_client/src/models/release-wallet-handle-token-request.js.map +1 -1
  1127. package/packages/kmd_client/src/models/release-wallet-handle-token-request.mjs +1 -2
  1128. package/packages/kmd_client/src/models/release-wallet-handle-token-request.mjs.map +1 -1
  1129. package/packages/kmd_client/src/models/rename-wallet-request.js +2 -3
  1130. package/packages/kmd_client/src/models/rename-wallet-request.js.map +1 -1
  1131. package/packages/kmd_client/src/models/rename-wallet-request.mjs +1 -2
  1132. package/packages/kmd_client/src/models/rename-wallet-request.mjs.map +1 -1
  1133. package/packages/kmd_client/src/models/rename-wallet-response.d.ts +0 -1
  1134. package/packages/kmd_client/src/models/rename-wallet-response.js +3 -4
  1135. package/packages/kmd_client/src/models/rename-wallet-response.js.map +1 -1
  1136. package/packages/kmd_client/src/models/rename-wallet-response.mjs +1 -2
  1137. package/packages/kmd_client/src/models/rename-wallet-response.mjs.map +1 -1
  1138. package/packages/kmd_client/src/models/renew-wallet-handle-token-request.js +2 -4
  1139. package/packages/kmd_client/src/models/renew-wallet-handle-token-request.js.map +1 -1
  1140. package/packages/kmd_client/src/models/renew-wallet-handle-token-request.mjs +1 -2
  1141. package/packages/kmd_client/src/models/renew-wallet-handle-token-request.mjs.map +1 -1
  1142. package/packages/kmd_client/src/models/renew-wallet-handle-token-response.d.ts +0 -1
  1143. package/packages/kmd_client/src/models/renew-wallet-handle-token-response.js +3 -4
  1144. package/packages/kmd_client/src/models/renew-wallet-handle-token-response.js.map +1 -1
  1145. package/packages/kmd_client/src/models/renew-wallet-handle-token-response.mjs +1 -2
  1146. package/packages/kmd_client/src/models/renew-wallet-handle-token-response.mjs.map +1 -1
  1147. package/packages/kmd_client/src/models/sign-multisig-response.js +2 -4
  1148. package/packages/kmd_client/src/models/sign-multisig-response.js.map +1 -1
  1149. package/packages/kmd_client/src/models/sign-multisig-response.mjs +1 -2
  1150. package/packages/kmd_client/src/models/sign-multisig-response.mjs.map +1 -1
  1151. package/packages/kmd_client/src/models/sign-multisig-txn-request.d.ts +0 -1
  1152. package/packages/kmd_client/src/models/sign-multisig-txn-request.js +5 -6
  1153. package/packages/kmd_client/src/models/sign-multisig-txn-request.js.map +1 -1
  1154. package/packages/kmd_client/src/models/sign-multisig-txn-request.mjs +1 -2
  1155. package/packages/kmd_client/src/models/sign-multisig-txn-request.mjs.map +1 -1
  1156. package/packages/kmd_client/src/models/sign-program-multisig-request.d.ts +0 -1
  1157. package/packages/kmd_client/src/models/sign-program-multisig-request.js +7 -8
  1158. package/packages/kmd_client/src/models/sign-program-multisig-request.js.map +1 -1
  1159. package/packages/kmd_client/src/models/sign-program-multisig-request.mjs +1 -2
  1160. package/packages/kmd_client/src/models/sign-program-multisig-request.mjs.map +1 -1
  1161. package/packages/kmd_client/src/models/sign-program-multisig-response.js +2 -4
  1162. package/packages/kmd_client/src/models/sign-program-multisig-response.js.map +1 -1
  1163. package/packages/kmd_client/src/models/sign-program-multisig-response.mjs +1 -2
  1164. package/packages/kmd_client/src/models/sign-program-multisig-response.mjs.map +1 -1
  1165. package/packages/kmd_client/src/models/sign-program-request.d.ts +0 -1
  1166. package/packages/kmd_client/src/models/sign-program-request.js +4 -5
  1167. package/packages/kmd_client/src/models/sign-program-request.js.map +1 -1
  1168. package/packages/kmd_client/src/models/sign-program-request.mjs +1 -2
  1169. package/packages/kmd_client/src/models/sign-program-request.mjs.map +1 -1
  1170. package/packages/kmd_client/src/models/sign-program-response.js +2 -4
  1171. package/packages/kmd_client/src/models/sign-program-response.js.map +1 -1
  1172. package/packages/kmd_client/src/models/sign-program-response.mjs +1 -2
  1173. package/packages/kmd_client/src/models/sign-program-response.mjs.map +1 -1
  1174. package/packages/kmd_client/src/models/sign-transaction-response.js +2 -4
  1175. package/packages/kmd_client/src/models/sign-transaction-response.js.map +1 -1
  1176. package/packages/kmd_client/src/models/sign-transaction-response.mjs +1 -2
  1177. package/packages/kmd_client/src/models/sign-transaction-response.mjs.map +1 -1
  1178. package/packages/kmd_client/src/models/sign-txn-request.js +3 -4
  1179. package/packages/kmd_client/src/models/sign-txn-request.js.map +1 -1
  1180. package/packages/kmd_client/src/models/sign-txn-request.mjs +1 -2
  1181. package/packages/kmd_client/src/models/sign-txn-request.mjs.map +1 -1
  1182. package/packages/kmd_client/src/models/tx-type.js +2 -4
  1183. package/packages/kmd_client/src/models/tx-type.js.map +1 -1
  1184. package/packages/kmd_client/src/models/tx-type.mjs +1 -2
  1185. package/packages/kmd_client/src/models/tx-type.mjs.map +1 -1
  1186. package/packages/kmd_client/src/models/versions-response.js +2 -4
  1187. package/packages/kmd_client/src/models/versions-response.js.map +1 -1
  1188. package/packages/kmd_client/src/models/versions-response.mjs +1 -2
  1189. package/packages/kmd_client/src/models/versions-response.mjs.map +1 -1
  1190. package/packages/kmd_client/src/models/wallet-handle.d.ts +0 -1
  1191. package/packages/kmd_client/src/models/wallet-handle.js +4 -5
  1192. package/packages/kmd_client/src/models/wallet-handle.js.map +1 -1
  1193. package/packages/kmd_client/src/models/wallet-handle.mjs +1 -2
  1194. package/packages/kmd_client/src/models/wallet-handle.mjs.map +1 -1
  1195. package/packages/kmd_client/src/models/wallet-info-request.js +2 -4
  1196. package/packages/kmd_client/src/models/wallet-info-request.js.map +1 -1
  1197. package/packages/kmd_client/src/models/wallet-info-request.mjs +1 -2
  1198. package/packages/kmd_client/src/models/wallet-info-request.mjs.map +1 -1
  1199. package/packages/kmd_client/src/models/wallet-info-response.d.ts +0 -1
  1200. package/packages/kmd_client/src/models/wallet-info-response.js +3 -4
  1201. package/packages/kmd_client/src/models/wallet-info-response.js.map +1 -1
  1202. package/packages/kmd_client/src/models/wallet-info-response.mjs +1 -2
  1203. package/packages/kmd_client/src/models/wallet-info-response.mjs.map +1 -1
  1204. package/packages/kmd_client/src/models/wallet.d.ts +0 -1
  1205. package/packages/kmd_client/src/models/wallet.js +7 -8
  1206. package/packages/kmd_client/src/models/wallet.js.map +1 -1
  1207. package/packages/kmd_client/src/models/wallet.mjs +1 -2
  1208. package/packages/kmd_client/src/models/wallet.mjs.map +1 -1
  1209. package/packages/testing/src/globalSetup.js +39 -0
  1210. package/packages/testing/src/globalSetup.js.map +1 -0
  1211. package/packages/testing/src/globalSetup.mjs +35 -0
  1212. package/packages/testing/src/globalSetup.mjs.map +1 -0
  1213. package/packages/testing/src/mockServer.js +94 -0
  1214. package/packages/testing/src/mockServer.js.map +1 -0
  1215. package/packages/testing/src/mockServer.mjs +83 -0
  1216. package/packages/testing/src/mockServer.mjs.map +1 -0
  1217. package/packages/transact/src/logicsig.d.ts +35 -34
  1218. package/packages/transact/src/logicsig.js +81 -84
  1219. package/packages/transact/src/logicsig.js.map +1 -1
  1220. package/packages/transact/src/logicsig.mjs +79 -81
  1221. package/packages/transact/src/logicsig.mjs.map +1 -1
  1222. package/packages/transact/src/multisig.d.ts +11 -116
  1223. package/packages/transact/src/multisig.js +87 -118
  1224. package/packages/transact/src/multisig.js.map +1 -1
  1225. package/packages/transact/src/multisig.mjs +86 -97
  1226. package/packages/transact/src/multisig.mjs.map +1 -1
  1227. package/packages/transact/src/signer.d.ts +11 -3
  1228. package/packages/transact/src/signer.js +29 -8
  1229. package/packages/transact/src/signer.js.map +1 -1
  1230. package/packages/transact/src/signer.mjs +26 -6
  1231. package/packages/transact/src/signer.mjs.map +1 -1
  1232. package/packages/transact/src/transactions/app-call.d.ts +9 -25
  1233. package/packages/transact/src/transactions/app-call.js +30 -31
  1234. package/packages/transact/src/transactions/app-call.js.map +1 -1
  1235. package/packages/transact/src/transactions/app-call.mjs +29 -30
  1236. package/packages/transact/src/transactions/app-call.mjs.map +1 -1
  1237. package/packages/transact/src/transactions/asset-config.d.ts +1 -7
  1238. package/packages/transact/src/transactions/asset-config.js +11 -12
  1239. package/packages/transact/src/transactions/asset-config.js.map +1 -1
  1240. package/packages/transact/src/transactions/asset-config.mjs +10 -11
  1241. package/packages/transact/src/transactions/asset-config.mjs.map +1 -1
  1242. package/packages/transact/src/transactions/asset-freeze.d.ts +1 -7
  1243. package/packages/transact/src/transactions/asset-freeze.js +2 -3
  1244. package/packages/transact/src/transactions/asset-freeze.js.map +1 -1
  1245. package/packages/transact/src/transactions/asset-freeze.mjs +1 -2
  1246. package/packages/transact/src/transactions/asset-freeze.mjs.map +1 -1
  1247. package/packages/transact/src/transactions/asset-transfer.d.ts +1 -7
  1248. package/packages/transact/src/transactions/asset-transfer.js +2 -3
  1249. package/packages/transact/src/transactions/asset-transfer.js.map +1 -1
  1250. package/packages/transact/src/transactions/asset-transfer.mjs +1 -2
  1251. package/packages/transact/src/transactions/asset-transfer.mjs.map +1 -1
  1252. package/packages/transact/src/transactions/common.js +8 -9
  1253. package/packages/transact/src/transactions/common.js.map +1 -1
  1254. package/packages/transact/src/transactions/common.mjs +8 -8
  1255. package/packages/transact/src/transactions/common.mjs.map +1 -1
  1256. package/packages/transact/src/transactions/heartbeat.d.ts +8 -19
  1257. package/packages/transact/src/transactions/key-registration.d.ts +1 -8
  1258. package/packages/transact/src/transactions/key-registration.js +2 -3
  1259. package/packages/transact/src/transactions/key-registration.js.map +1 -1
  1260. package/packages/transact/src/transactions/key-registration.mjs +1 -2
  1261. package/packages/transact/src/transactions/key-registration.mjs.map +1 -1
  1262. package/packages/transact/src/transactions/payment.d.ts +0 -1
  1263. package/packages/transact/src/transactions/reference-types-meta.d.ts +0 -1
  1264. package/packages/transact/src/transactions/reference-types-meta.js +4 -5
  1265. package/packages/transact/src/transactions/reference-types-meta.js.map +1 -1
  1266. package/packages/transact/src/transactions/reference-types-meta.mjs +1 -2
  1267. package/packages/transact/src/transactions/reference-types-meta.mjs.map +1 -1
  1268. package/packages/transact/src/transactions/signed-transaction-meta.d.ts +0 -1
  1269. package/packages/transact/src/transactions/signed-transaction-meta.js +14 -16
  1270. package/packages/transact/src/transactions/signed-transaction-meta.js.map +1 -1
  1271. package/packages/transact/src/transactions/signed-transaction-meta.mjs +7 -8
  1272. package/packages/transact/src/transactions/signed-transaction-meta.mjs.map +1 -1
  1273. package/packages/transact/src/transactions/signed-transaction.d.ts +20 -5
  1274. package/packages/transact/src/transactions/signed-transaction.js +21 -6
  1275. package/packages/transact/src/transactions/signed-transaction.js.map +1 -1
  1276. package/packages/transact/src/transactions/signed-transaction.mjs +17 -4
  1277. package/packages/transact/src/transactions/signed-transaction.mjs.map +1 -1
  1278. package/packages/transact/src/transactions/state-proof.d.ts +2 -5
  1279. package/packages/transact/src/transactions/transaction-meta.d.ts +0 -1
  1280. package/packages/transact/src/transactions/transaction-meta.js +15 -16
  1281. package/packages/transact/src/transactions/transaction-meta.js.map +1 -1
  1282. package/packages/transact/src/transactions/transaction-meta.mjs +1 -2
  1283. package/packages/transact/src/transactions/transaction-meta.mjs.map +1 -1
  1284. package/packages/transact/src/transactions/transaction-type.d.ts +1 -1
  1285. package/packages/transact/src/transactions/transaction-type.js +12 -13
  1286. package/packages/transact/src/transactions/transaction-type.js.map +1 -1
  1287. package/packages/transact/src/transactions/transaction-type.mjs +12 -12
  1288. package/packages/transact/src/transactions/transaction-type.mjs.map +1 -1
  1289. package/packages/transact/src/transactions/transaction.d.ts +5 -2
  1290. package/packages/transact/src/transactions/transaction.js +29 -30
  1291. package/packages/transact/src/transactions/transaction.js.map +1 -1
  1292. package/packages/transact/src/transactions/transaction.mjs +13 -14
  1293. package/packages/transact/src/transactions/transaction.mjs.map +1 -1
  1294. package/testing/account.d.ts +2 -3
  1295. package/testing/account.js +5 -7
  1296. package/testing/account.js.map +1 -1
  1297. package/testing/account.mjs +3 -5
  1298. package/testing/account.mjs.map +1 -1
  1299. package/testing/fixtures/algokit-log-capture-fixture.d.ts +1 -2
  1300. package/testing/fixtures/algokit-log-capture-fixture.js +3 -4
  1301. package/testing/fixtures/algokit-log-capture-fixture.js.map +1 -1
  1302. package/testing/fixtures/algokit-log-capture-fixture.mjs +1 -2
  1303. package/testing/fixtures/algokit-log-capture-fixture.mjs.map +1 -1
  1304. package/testing/fixtures/algorand-fixture.d.ts +2 -3
  1305. package/testing/fixtures/algorand-fixture.js +8 -9
  1306. package/testing/fixtures/algorand-fixture.js.map +1 -1
  1307. package/testing/fixtures/algorand-fixture.mjs +3 -4
  1308. package/testing/fixtures/algorand-fixture.mjs.map +1 -1
  1309. package/testing/index.d.ts +2 -1
  1310. package/testing/index.js +26 -8
  1311. package/testing/index.mjs +3 -2
  1312. package/testing/indexer.js +1 -2
  1313. package/testing/indexer.js.map +1 -1
  1314. package/testing/indexer.mjs +1 -1
  1315. package/testing/indexer.mjs.map +1 -1
  1316. package/testing/test-logger.d.ts +1 -2
  1317. package/testing/test-logger.js +2 -3
  1318. package/testing/test-logger.js.map +1 -1
  1319. package/testing/test-logger.mjs +1 -2
  1320. package/testing/test-logger.mjs.map +1 -1
  1321. package/testing/transaction-logger.d.ts +0 -1
  1322. package/testing/transaction-logger.js +4 -5
  1323. package/testing/transaction-logger.js.map +1 -1
  1324. package/testing/transaction-logger.mjs +1 -2
  1325. package/testing/transaction-logger.mjs.map +1 -1
  1326. package/testing/types.d.ts +156 -0
  1327. package/transact/index.d.ts +12 -12
  1328. package/transact/index.js +16 -42
  1329. package/transact/index.mjs +7 -12
  1330. package/transaction/index.d.ts +4 -0
  1331. package/transaction/index.js +9 -0
  1332. package/transaction/index.mjs +3 -0
  1333. package/transaction/perform-transaction-composer-simulate.d.ts +1 -2
  1334. package/transaction/perform-transaction-composer-simulate.js +3 -5
  1335. package/transaction/perform-transaction-composer-simulate.js.map +1 -1
  1336. package/transaction/perform-transaction-composer-simulate.mjs +3 -4
  1337. package/transaction/perform-transaction-composer-simulate.mjs.map +1 -1
  1338. package/transaction/transaction.d.ts +2 -4
  1339. package/transaction/transaction.js +2 -5
  1340. package/transaction/transaction.js.map +1 -1
  1341. package/transaction/transaction.mjs +1 -4
  1342. package/transaction/transaction.mjs.map +1 -1
  1343. package/transaction/types.d.ts +133 -0
  1344. package/transactions/app-call.d.ts +17 -34
  1345. package/transactions/app-call.js +53 -54
  1346. package/transactions/app-call.js.map +1 -1
  1347. package/transactions/app-call.mjs +47 -48
  1348. package/transactions/app-call.mjs.map +1 -1
  1349. package/transactions/asset-config.d.ts +4 -10
  1350. package/transactions/asset-config.js +5 -6
  1351. package/transactions/asset-config.js.map +1 -1
  1352. package/transactions/asset-config.mjs +1 -2
  1353. package/transactions/asset-config.mjs.map +1 -1
  1354. package/transactions/asset-transfer.d.ts +4 -10
  1355. package/transactions/asset-transfer.js +5 -6
  1356. package/transactions/asset-transfer.js.map +1 -1
  1357. package/transactions/asset-transfer.mjs +1 -2
  1358. package/transactions/asset-transfer.mjs.map +1 -1
  1359. package/transactions/common.d.ts +8 -15
  1360. package/transactions/common.js +3 -4
  1361. package/transactions/common.js.map +1 -1
  1362. package/transactions/common.mjs +1 -2
  1363. package/transactions/common.mjs.map +1 -1
  1364. package/transactions/fee-coverage.js +7 -8
  1365. package/transactions/fee-coverage.js.map +1 -1
  1366. package/transactions/fee-coverage.mjs +7 -7
  1367. package/transactions/fee-coverage.mjs.map +1 -1
  1368. package/transactions/key-registration.d.ts +7 -15
  1369. package/transactions/key-registration.js +4 -5
  1370. package/transactions/key-registration.js.map +1 -1
  1371. package/transactions/key-registration.mjs +1 -2
  1372. package/transactions/key-registration.mjs.map +1 -1
  1373. package/transactions/method-call.d.ts +3 -5
  1374. package/transactions/method-call.js +84 -94
  1375. package/transactions/method-call.js.map +1 -1
  1376. package/transactions/method-call.mjs +76 -86
  1377. package/transactions/method-call.mjs.map +1 -1
  1378. package/transactions/payment.d.ts +2 -5
  1379. package/transactions/payment.js +5 -6
  1380. package/transactions/payment.js.map +1 -1
  1381. package/transactions/payment.mjs +1 -2
  1382. package/transactions/payment.mjs.map +1 -1
  1383. package/types/account-manager.d.ts +11 -444
  1384. package/types/account-manager.js +7 -608
  1385. package/types/account-manager.js.map +1 -1
  1386. package/types/account-manager.mjs +6 -606
  1387. package/types/account-manager.mjs.map +1 -1
  1388. package/types/account.d.ts +8 -150
  1389. package/types/account.js +4 -6
  1390. package/types/account.js.map +1 -1
  1391. package/types/account.mjs +4 -5
  1392. package/types/account.mjs.map +1 -1
  1393. package/types/algorand-client-transaction-creator.d.ts +5 -1098
  1394. package/types/algorand-client-transaction-creator.js +4 -731
  1395. package/types/algorand-client-transaction-creator.js.map +1 -1
  1396. package/types/algorand-client-transaction-creator.mjs +4 -730
  1397. package/types/algorand-client-transaction-creator.mjs.map +1 -1
  1398. package/types/algorand-client-transaction-sender.d.ts +5 -1312
  1399. package/types/algorand-client-transaction-sender.js +4 -929
  1400. package/types/algorand-client-transaction-sender.js.map +1 -1
  1401. package/types/algorand-client-transaction-sender.mjs +4 -928
  1402. package/types/algorand-client-transaction-sender.mjs.map +1 -1
  1403. package/types/algorand-client.d.ts +5 -241
  1404. package/types/algorand-client.js +4 -321
  1405. package/types/algorand-client.js.map +1 -1
  1406. package/types/algorand-client.mjs +4 -321
  1407. package/types/algorand-client.mjs.map +1 -1
  1408. package/types/amount.d.ts +6 -45
  1409. package/types/amount.js +4 -62
  1410. package/types/amount.js.map +1 -1
  1411. package/types/amount.mjs +4 -62
  1412. package/types/amount.mjs.map +1 -1
  1413. package/types/app-client.d.ts +75 -2125
  1414. package/types/app-client.js +4 -905
  1415. package/types/app-client.js.map +1 -1
  1416. package/types/app-client.mjs +4 -904
  1417. package/types/app-client.mjs.map +1 -1
  1418. package/types/app-deployer.d.ts +21 -161
  1419. package/types/app-deployer.js +4 -349
  1420. package/types/app-deployer.js.map +1 -1
  1421. package/types/app-deployer.mjs +4 -349
  1422. package/types/app-deployer.mjs.map +1 -1
  1423. package/types/app-factory.d.ts +21 -960
  1424. package/types/app-factory.js +4 -444
  1425. package/types/app-factory.js.map +1 -1
  1426. package/types/app-factory.mjs +4 -444
  1427. package/types/app-factory.mjs.map +1 -1
  1428. package/types/app-manager.d.ts +15 -318
  1429. package/types/app-manager.js +4 -464
  1430. package/types/app-manager.js.map +1 -1
  1431. package/types/app-manager.mjs +4 -464
  1432. package/types/app-manager.mjs.map +1 -1
  1433. package/types/app-spec.d.ts +39 -198
  1434. package/types/app-spec.js +4 -133
  1435. package/types/app-spec.js.map +1 -1
  1436. package/types/app-spec.mjs +4 -133
  1437. package/types/app-spec.mjs.map +1 -1
  1438. package/types/app.d.ts +63 -248
  1439. package/types/app.js +17 -39
  1440. package/types/app.js.map +1 -1
  1441. package/types/app.mjs +16 -38
  1442. package/types/app.mjs.map +1 -1
  1443. package/types/asset-manager.d.ts +9 -207
  1444. package/types/asset-manager.js +4 -162
  1445. package/types/asset-manager.js.map +1 -1
  1446. package/types/asset-manager.mjs +4 -162
  1447. package/types/asset-manager.mjs.map +1 -1
  1448. package/types/async-event-emitter.d.ts +7 -14
  1449. package/types/async-event-emitter.js +4 -34
  1450. package/types/async-event-emitter.js.map +1 -1
  1451. package/types/async-event-emitter.mjs +4 -33
  1452. package/types/async-event-emitter.mjs.map +1 -1
  1453. package/types/client-manager.d.ts +27 -470
  1454. package/types/client-manager.js +4 -612
  1455. package/types/client-manager.js.map +1 -1
  1456. package/types/client-manager.mjs +4 -612
  1457. package/types/client-manager.mjs.map +1 -1
  1458. package/types/composer.d.ts +79 -943
  1459. package/types/composer.js +4 -1575
  1460. package/types/composer.js.map +1 -1
  1461. package/types/composer.mjs +4 -1574
  1462. package/types/composer.mjs.map +1 -1
  1463. package/types/config.d.ts +7 -52
  1464. package/types/config.js +4 -76
  1465. package/types/config.js.map +1 -1
  1466. package/types/config.mjs +4 -76
  1467. package/types/config.mjs.map +1 -1
  1468. package/types/debugging.d.ts +12 -33
  1469. package/types/debugging.js +12 -11
  1470. package/types/debugging.js.map +1 -1
  1471. package/types/debugging.mjs +11 -10
  1472. package/types/debugging.mjs.map +1 -1
  1473. package/types/dispenser-client.d.ts +11 -85
  1474. package/types/dispenser-client.js +4 -123
  1475. package/types/dispenser-client.js.map +1 -1
  1476. package/types/dispenser-client.mjs +4 -123
  1477. package/types/dispenser-client.mjs.map +1 -1
  1478. package/types/expand.d.ts +4 -5
  1479. package/types/indexer.d.ts +16 -36
  1480. package/types/indexer.js +9 -32
  1481. package/types/indexer.js.map +1 -1
  1482. package/types/indexer.mjs +8 -31
  1483. package/types/indexer.mjs.map +1 -1
  1484. package/types/instance-of.d.ts +4 -4
  1485. package/types/kmd-account-manager.d.ts +5 -69
  1486. package/types/kmd-account-manager.js +4 -163
  1487. package/types/kmd-account-manager.js.map +1 -1
  1488. package/types/kmd-account-manager.mjs +4 -161
  1489. package/types/kmd-account-manager.mjs.map +1 -1
  1490. package/types/lifecycle-events.d.ts +7 -10
  1491. package/types/lifecycle-events.js +4 -7
  1492. package/types/lifecycle-events.js.map +1 -1
  1493. package/types/lifecycle-events.mjs +4 -6
  1494. package/types/lifecycle-events.mjs.map +1 -1
  1495. package/types/logging.d.ts +14 -9
  1496. package/types/logging.js +13 -39
  1497. package/types/logging.js.map +1 -1
  1498. package/types/logging.mjs +12 -38
  1499. package/types/logging.mjs.map +1 -1
  1500. package/types/logic-error.d.ts +8 -35
  1501. package/types/logic-error.js +4 -50
  1502. package/types/logic-error.js.map +1 -1
  1503. package/types/logic-error.mjs +4 -49
  1504. package/types/logic-error.mjs.map +1 -1
  1505. package/types/network-client.d.ts +10 -39
  1506. package/types/network-client.js +4 -10
  1507. package/types/network-client.js.map +1 -1
  1508. package/types/network-client.mjs +4 -9
  1509. package/types/network-client.mjs.map +1 -1
  1510. package/types/testing.d.ts +13 -151
  1511. package/types/transaction.d.ts +33 -128
  1512. package/updatable-config.d.ts +57 -0
  1513. package/updatable-config.js +79 -0
  1514. package/updatable-config.js.map +1 -0
  1515. package/updatable-config.mjs +79 -0
  1516. package/updatable-config.mjs.map +1 -0
  1517. package/util.js +2 -3
  1518. package/util.js.map +1 -1
  1519. package/util.mjs +2 -3
  1520. package/util.mjs.map +1 -1
  1521. package/_virtual/rolldown_runtime.js +0 -43
  1522. package/_virtual/rolldown_runtime.mjs +0 -18
  1523. package/indexer-lookup.js.map +0 -1
  1524. package/indexer-lookup.mjs.map +0 -1
  1525. package/packages/algod_client/src/core/model-runtime.d.ts +0 -10
  1526. package/packages/common/src/crypto.js +0 -13
  1527. package/packages/common/src/crypto.js.map +0 -1
  1528. package/packages/common/src/crypto.mjs +0 -11
  1529. package/packages/common/src/crypto.mjs.map +0 -1
  1530. package/packages/indexer_client/src/core/model-runtime.d.ts +0 -10
  1531. package/packages/kmd_client/src/core/model-runtime.d.ts +0 -10
  1532. package/packages/sdk/src/convert.d.ts +0 -17
  1533. package/packages/sdk/src/convert.js +0 -28
  1534. package/packages/sdk/src/convert.js.map +0 -1
  1535. package/packages/sdk/src/convert.mjs +0 -25
  1536. package/packages/sdk/src/convert.mjs.map +0 -1
  1537. package/packages/sdk/src/encoding/binarydata.d.ts +0 -34
  1538. package/packages/sdk/src/encoding/binarydata.js +0 -65
  1539. package/packages/sdk/src/encoding/binarydata.js.map +0 -1
  1540. package/packages/sdk/src/encoding/binarydata.mjs +0 -60
  1541. package/packages/sdk/src/encoding/binarydata.mjs.map +0 -1
  1542. package/packages/sdk/src/encoding/encoding.d.ts +0 -237
  1543. package/packages/sdk/src/encoding/encoding.js +0 -312
  1544. package/packages/sdk/src/encoding/encoding.js.map +0 -1
  1545. package/packages/sdk/src/encoding/encoding.mjs +0 -298
  1546. package/packages/sdk/src/encoding/encoding.mjs.map +0 -1
  1547. package/packages/sdk/src/encoding/schema/array.js +0 -35
  1548. package/packages/sdk/src/encoding/schema/array.js.map +0 -1
  1549. package/packages/sdk/src/encoding/schema/array.mjs +0 -35
  1550. package/packages/sdk/src/encoding/schema/array.mjs.map +0 -1
  1551. package/packages/sdk/src/encoding/schema/bytearray.js +0 -49
  1552. package/packages/sdk/src/encoding/schema/bytearray.js.map +0 -1
  1553. package/packages/sdk/src/encoding/schema/bytearray.mjs +0 -49
  1554. package/packages/sdk/src/encoding/schema/bytearray.mjs.map +0 -1
  1555. package/packages/sdk/src/encoding/schema/map.d.ts +0 -58
  1556. package/packages/sdk/src/encoding/schema/map.js +0 -108
  1557. package/packages/sdk/src/encoding/schema/map.js.map +0 -1
  1558. package/packages/sdk/src/encoding/schema/map.mjs +0 -107
  1559. package/packages/sdk/src/encoding/schema/map.mjs.map +0 -1
  1560. package/packages/sdk/src/encoding/schema/optional.js +0 -46
  1561. package/packages/sdk/src/encoding/schema/optional.js.map +0 -1
  1562. package/packages/sdk/src/encoding/schema/optional.mjs +0 -46
  1563. package/packages/sdk/src/encoding/schema/optional.mjs.map +0 -1
  1564. package/packages/sdk/src/encoding/schema/uint64.js +0 -30
  1565. package/packages/sdk/src/encoding/schema/uint64.js.map +0 -1
  1566. package/packages/sdk/src/encoding/schema/uint64.mjs +0 -30
  1567. package/packages/sdk/src/encoding/schema/uint64.mjs.map +0 -1
  1568. package/packages/sdk/src/encoding/uint64.d.ts +0 -34
  1569. package/packages/sdk/src/encoding/uint64.js +0 -34
  1570. package/packages/sdk/src/encoding/uint64.js.map +0 -1
  1571. package/packages/sdk/src/encoding/uint64.mjs +0 -33
  1572. package/packages/sdk/src/encoding/uint64.mjs.map +0 -1
  1573. package/packages/sdk/src/index.d.ts +0 -44
  1574. package/packages/sdk/src/index.js +0 -62
  1575. package/packages/sdk/src/index.js.map +0 -1
  1576. package/packages/sdk/src/index.mjs +0 -58
  1577. package/packages/sdk/src/index.mjs.map +0 -1
  1578. package/packages/sdk/src/logic/sourcemap.js.map +0 -1
  1579. package/packages/sdk/src/logic/sourcemap.mjs.map +0 -1
  1580. package/packages/sdk/src/nacl/naclWrappers.js +0 -14
  1581. package/packages/sdk/src/nacl/naclWrappers.js.map +0 -1
  1582. package/packages/sdk/src/nacl/naclWrappers.mjs +0 -11
  1583. package/packages/sdk/src/nacl/naclWrappers.mjs.map +0 -1
  1584. package/packages/sdk/src/types/intDecoding.d.ts +0 -28
  1585. package/packages/sdk/src/types/intDecoding.js +0 -32
  1586. package/packages/sdk/src/types/intDecoding.js.map +0 -1
  1587. package/packages/sdk/src/types/intDecoding.mjs +0 -31
  1588. package/packages/sdk/src/types/intDecoding.mjs.map +0 -1
  1589. package/packages/sdk/src/types/transactions/encoded.d.ts +0 -40
  1590. package/packages/sdk/src/types/transactions/encoded.js +0 -64
  1591. package/packages/sdk/src/types/transactions/encoded.js.map +0 -1
  1592. package/packages/sdk/src/types/transactions/encoded.mjs +0 -59
  1593. package/packages/sdk/src/types/transactions/encoded.mjs.map +0 -1
  1594. package/packages/sdk/src/utils/utils.d.ts +0 -64
  1595. package/packages/sdk/src/utils/utils.js +0 -140
  1596. package/packages/sdk/src/utils/utils.js.map +0 -1
  1597. package/packages/sdk/src/utils/utils.mjs +0 -128
  1598. package/packages/sdk/src/utils/utils.mjs.map +0 -1
  1599. package/packages/transact/src/transactions/common.d.ts +0 -37
  1600. package/sdk/index.d.ts +0 -10
  1601. package/sdk/index.js +0 -59
  1602. package/sdk/index.mjs +0 -11
@@ -1 +1 @@
1
- {"version":3,"file":"abi-type.js","names":["childTypes: ABIType[]","bitSize: number","bigIntToBytes","bytesToBigInt","precision: number","PUBLIC_KEY_BYTE_LENGTH","Address","encodedBytes: Uint8Array","LENGTH_ENCODE_BYTE_SIZE","typeStrings: string[]","heads: Uint8Array[]","tails: Uint8Array[]","values: ABIValue[]","childType: ABIType","length: number","concatArrays","structName: string","structFields: ABIStructField[]","dynamicSegments: Segment[]","valuePartitions: (Uint8Array | null)[]","BOOL_TRUE_BYTE","BOOL_FALSE_BYTE","result: Uint8Array[]","tupleStrings: string[]"],"sources":["../../../../packages/abi/src/abi-type.ts"],"sourcesContent":["import {\n Address,\n BOOL_FALSE_BYTE,\n BOOL_TRUE_BYTE,\n LENGTH_ENCODE_BYTE_SIZE,\n PUBLIC_KEY_BYTE_LENGTH,\n concatArrays,\n} from '@algorandfoundation/algokit-common'\nimport type { ABIStructValue, ABIValue } from './abi-value'\nimport { StructField } from './arc56-contract'\nimport { bigIntToBytes, bytesToBigInt } from './bigint'\n\nconst STATIC_ARRAY_REGEX = /^([a-z\\d[\\](),]+)\\[(0|[1-9][\\d]*)]$/\nconst UFIXED_REGEX = /^ufixed([1-9][\\d]*)x([1-9][\\d]*)$/\nconst MAX_LEN = 2 ** 16 - 1\n\n/**\n * Information about a single field in a struct\n */\nexport type ABIStructField = {\n /** The name of the struct field */\n name: string\n /** The type of the struct field's value */\n type: ABIType | ABIStructField[]\n}\n\ninterface Segment {\n left: number\n right: number\n}\n\n/**\n * Represents an Algorand ABI type for encoding and decoding values as defined in [ARC-0004](https://arc.algorand.foundation/ARCs/arc-0004#types).\n *\n * This is the abstract base class for all ABI types.\n */\nexport abstract class ABIType {\n /**\n * Returns the ARC-4 type name string representation.\n * @returns The ARC-4 type string\n */\n abstract get name(): string\n\n /**\n * Returns a user-friendly display name for this type.\n * @returns The display name for this type\n */\n get displayName(): string {\n return this.name\n }\n\n /**\n * Returns the ARC-4 type name string representation.\n * @returns The ARC-4 type string\n */\n toString(): string {\n return this.name\n }\n\n /**\n * Checks if this ABI type is equal to another.\n * @param other The other ABI type to compare with\n * @returns True if the types are equal, false otherwise\n */\n abstract equals(other: ABIType): boolean\n\n /**\n * Checks if this ABI type is dynamic (variable-length).\n * @returns True if the type is dynamic, false otherwise\n */\n abstract isDynamic(): boolean\n\n /**\n * Gets the byte length of the encoded type for static types.\n * @returns The number of bytes needed to encode this type\n * @throws Error if the type is dynamic\n */\n abstract byteLen(): number\n\n /**\n * Encodes a value according to this ABI type.\n * @param value The value to encode\n * @returns The encoded bytes\n */\n abstract encode(value: ABIValue): Uint8Array\n\n /**\n * Decodes bytes according to this ABI type.\n * @param bytes The bytes to decode\n * @returns The decoded value\n */\n abstract decode(bytes: Uint8Array): ABIValue\n\n /**\n * Creates an ABI type from an ARC-4 type string.\n * @param str The ARC-4 type string (e.g., \"uint256\", \"bool\", \"(uint8,address)\")\n * @returns The corresponding ABI type\n */\n static from(str: string): ABIType {\n if (str.endsWith('[]')) {\n const childType = ABIType.from(str.slice(0, str.length - 2))\n return new ABIArrayDynamicType(childType)\n }\n if (str.endsWith(']')) {\n const stringMatches = str.match(STATIC_ARRAY_REGEX)\n if (!stringMatches || stringMatches.length !== 3) {\n throw new Error(`Malformed static array string: ${str}`)\n }\n const arrayLengthStr = stringMatches[2]\n const arrayLength = parseInt(arrayLengthStr, 10)\n if (arrayLength > MAX_LEN) {\n throw new Error(`Array length exceeds limit ${MAX_LEN}`)\n }\n const childType = ABIType.from(stringMatches[1])\n return new ABIArrayStaticType(childType, arrayLength)\n }\n if (str.startsWith('uint')) {\n const digitsOnly = (s: string) => [...s].every((c) => '0123456789'.includes(c))\n const typeSizeStr = str.slice(4, str.length)\n if (!digitsOnly(typeSizeStr)) {\n throw new Error(`Malformed uint string: ${typeSizeStr}`)\n }\n const bitSize = parseInt(typeSizeStr, 10)\n if (bitSize > MAX_LEN) {\n throw new Error(`Malformed uint string: ${bitSize}`)\n }\n return new ABIUintType(bitSize)\n }\n if (str === 'byte') {\n return new ABIByteType()\n }\n if (str.startsWith('ufixed')) {\n const stringMatches = str.match(UFIXED_REGEX)\n if (!stringMatches || stringMatches.length !== 3) {\n throw new Error(`Malformed ufixed type: ${str}`)\n }\n const bitSize = parseInt(stringMatches[1], 10)\n const precision = parseInt(stringMatches[2], 10)\n return new ABIUfixedType(bitSize, precision)\n }\n if (str === 'bool') {\n return new ABIBoolType()\n }\n if (str === 'address') {\n return new ABIAddressType()\n }\n if (str === 'string') {\n return new ABIStringType()\n }\n if (str.length >= 2 && str[0] === '(' && str[str.length - 1] === ')') {\n const tupleContent = parseTupleContent(str.slice(1, str.length - 1))\n const childTypes: ABIType[] = []\n for (let i = 0; i < tupleContent.length; i++) {\n const ti = ABIType.from(tupleContent[i])\n childTypes.push(ti)\n }\n return new ABITupleType(childTypes)\n }\n throw new Error(`Cannot convert a string ${str} to an ABI type`)\n }\n}\n\n// ============================================================================\n// Primitive Types\n// ============================================================================\n\n/**\n * An unsigned integer ABI type of a specific bit size.\n */\nexport class ABIUintType extends ABIType {\n /**\n * Creates a new unsigned integer type.\n * @param bitSize The bit size (must be a multiple of 8, between 8 and 512)\n */\n constructor(public readonly bitSize: number) {\n super()\n if (bitSize % 8 !== 0 || bitSize < 8 || bitSize > 512) {\n throw new Error(`Unsupported uint type bitSize: ${bitSize}`)\n }\n }\n\n get name(): string {\n return `uint${this.bitSize}`\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIUintType && this.bitSize === other.bitSize\n }\n\n isDynamic(): boolean {\n return false\n }\n\n byteLen(): number {\n return this.bitSize / 8\n }\n\n encode(value: ABIValue): Uint8Array {\n if (typeof value !== 'bigint' && typeof value !== 'number') {\n throw new Error(`Cannot encode value as ${this.name}: ${value}`)\n }\n\n if (value >= BigInt(2 ** this.bitSize) || value < BigInt(0)) {\n throw new Error(`${value} is not a non-negative int or too big to fit in size ${this.name}`)\n }\n if (typeof value === 'number' && !Number.isSafeInteger(value)) {\n throw new Error(`${value} should be converted into a BigInt before it is encoded`)\n }\n return bigIntToBytes(value, this.bitSize / 8)\n }\n\n decode(bytes: Uint8Array): ABIValue {\n if (bytes.length !== this.bitSize / 8) {\n throw new Error(`Byte string must correspond to a ${this.name}`)\n }\n const value = bytesToBigInt(bytes)\n return this.bitSize < 53 ? Number(value) : value\n }\n}\n\n/**\n * A fixed-point number ABI type of a specific bit size and precision.\n */\nexport class ABIUfixedType extends ABIType {\n /**\n * Creates a new fixed-point type.\n * @param bitSize The bit size (must be a multiple of 8, between 8 and 512)\n * @param precision The decimal precision (must be between 1 and 160)\n */\n constructor(\n public readonly bitSize: number,\n public readonly precision: number,\n ) {\n super()\n if (bitSize % 8 !== 0 || bitSize < 8 || bitSize > 512) {\n throw new Error(`Unsupported ufixed type bitSize: ${bitSize}`)\n }\n if (precision > 160 || precision < 1) {\n throw new Error(`Unsupported ufixed type precision: ${precision}`)\n }\n }\n\n get name(): string {\n return `ufixed${this.bitSize}x${this.precision}`\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIUfixedType && this.bitSize === other.bitSize && this.precision === other.precision\n }\n\n isDynamic(): boolean {\n return false\n }\n\n byteLen(): number {\n return this.bitSize / 8\n }\n\n encode(value: ABIValue): Uint8Array {\n if (typeof value !== 'bigint' && typeof value !== 'number') {\n throw new Error(`Cannot encode value as ${this.name}: ${value}`)\n }\n if (value >= BigInt(2 ** this.bitSize) || value < BigInt(0)) {\n throw new Error(`${value} is not a non-negative int or too big to fit in size ${this.name}`)\n }\n if (typeof value === 'number' && !Number.isSafeInteger(value)) {\n throw new Error(`${value} should be converted into a BigInt before it is encoded`)\n }\n return bigIntToBytes(value, this.bitSize / 8)\n }\n\n decode(bytes: Uint8Array): ABIValue {\n if (bytes.length !== this.bitSize / 8) {\n throw new Error(`Byte string must correspond to a ${this.name}`)\n }\n const value = bytesToBigInt(bytes)\n return this.bitSize < 53 ? Number(value) : value\n }\n}\n\n/**\n * An Algorand address ABI type.\n */\nexport class ABIAddressType extends ABIType {\n get name(): string {\n return 'address'\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIAddressType\n }\n\n isDynamic(): boolean {\n return false\n }\n\n byteLen(): number {\n return PUBLIC_KEY_BYTE_LENGTH\n }\n\n encode(value: ABIValue): Uint8Array {\n if (typeof value === 'string') {\n return Address.fromString(value).publicKey\n }\n\n if (value instanceof Address) {\n return value.publicKey\n }\n\n if (value instanceof Uint8Array && value.length === 32) {\n return value\n }\n\n throw new Error(`Cannot encode value as address: ${value}`)\n }\n\n decode(bytes: Uint8Array): string {\n return new Address(bytes).toString()\n }\n}\n\n/**\n * A boolean ABI type.\n */\nexport class ABIBoolType extends ABIType {\n get name(): string {\n return 'bool'\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIBoolType\n }\n\n isDynamic(): boolean {\n return false\n }\n\n byteLen(): number {\n return 1\n }\n\n encode(value: ABIValue): Uint8Array {\n if (typeof value !== 'boolean') {\n throw new Error(`Cannot encode value as bool: ${value}`)\n }\n\n return value ? new Uint8Array([0x80]) : new Uint8Array([0x00])\n }\n\n decode(bytes: Uint8Array): ABIValue {\n if (bytes.length !== 1) {\n throw new Error(`Expected 1 byte for bool, got ${bytes.length}`)\n }\n\n return (bytes[0] & 0x80) !== 0\n }\n}\n\n/**\n * A single byte ABI type.\n */\nexport class ABIByteType extends ABIType {\n get name(): string {\n return 'byte'\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIByteType\n }\n\n isDynamic(): boolean {\n return false\n }\n\n byteLen(): number {\n return 1\n }\n\n encode(value: ABIValue): Uint8Array {\n if (typeof value !== 'number' && typeof value !== 'bigint') {\n throw new Error(`Cannot encode value as byte: ${value}`)\n }\n const numberValue = typeof value === 'bigint' ? Number(value) : value\n if (value < 0 || value > 255) {\n throw new Error(`Byte value must be between 0 and 255, got ${numberValue}`)\n }\n\n return new Uint8Array([numberValue])\n }\n\n decode(bytes: Uint8Array): ABIValue {\n if (bytes.length !== 1) {\n throw new Error(`Expected 1 byte for byte type, got ${bytes.length}`)\n }\n\n return bytes[0]\n }\n}\n\n/**\n * A dynamic-length string ABI type.\n */\nexport class ABIStringType extends ABIType {\n get name(): string {\n return 'string'\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIStringType\n }\n\n isDynamic(): boolean {\n return true\n }\n\n byteLen(): number {\n throw new Error(`Failed to get size, string is a dynamic type`)\n }\n\n encode(value: ABIValue): Uint8Array {\n if (typeof value !== 'string' && !(value instanceof Uint8Array)) {\n throw new Error(`Cannot encode value as string: ${value}`)\n }\n\n let encodedBytes: Uint8Array\n if (typeof value === 'string') {\n encodedBytes = new TextEncoder().encode(value)\n } else {\n encodedBytes = value\n }\n const encodedLength = bigIntToBytes(encodedBytes.length, LENGTH_ENCODE_BYTE_SIZE)\n const mergedBytes = new Uint8Array(encodedBytes.length + LENGTH_ENCODE_BYTE_SIZE)\n mergedBytes.set(encodedLength)\n mergedBytes.set(encodedBytes, LENGTH_ENCODE_BYTE_SIZE)\n return mergedBytes\n }\n\n decode(bytes: Uint8Array): ABIValue {\n if (bytes.length < LENGTH_ENCODE_BYTE_SIZE) {\n throw new Error(\n `Byte string is too short to be decoded. Actual length is ${bytes.length}, but expected at least ${LENGTH_ENCODE_BYTE_SIZE}`,\n )\n }\n const view = new DataView(bytes.buffer, bytes.byteOffset, LENGTH_ENCODE_BYTE_SIZE)\n const byteLength = view.getUint16(0)\n const byteValue = bytes.slice(LENGTH_ENCODE_BYTE_SIZE, bytes.length)\n if (byteLength !== byteValue.length) {\n throw new Error(`String length bytes do not match the actual length of string. Expected ${byteLength}, got ${byteValue.length}`)\n }\n return new TextDecoder('utf-8').decode(byteValue)\n }\n}\n\n// ============================================================================\n// Collection Types\n// ============================================================================\n\n/**\n * A tuple ABI type containing other ABI types.\n */\nexport class ABITupleType extends ABIType {\n /**\n * Creates a new tuple type.\n * @param childTypes The types of the tuple elements\n */\n constructor(public readonly childTypes: ABIType[]) {\n super()\n if (childTypes.length > MAX_LEN) {\n throw new Error(`Tuple has too many child types: ${childTypes.length}`)\n }\n }\n\n get name(): string {\n const typeStrings: string[] = []\n for (let i = 0; i < this.childTypes.length; i++) {\n typeStrings[i] = this.childTypes[i].name\n }\n return `(${typeStrings.join(',')})`\n }\n\n equals(other: ABIType): boolean {\n if (!(other instanceof ABITupleType)) return false\n if (this.childTypes.length !== other.childTypes.length) return false\n return this.childTypes.every((t, i) => t.equals(other.childTypes[i]))\n }\n\n isDynamic(): boolean {\n return this.childTypes.some((c) => c.isDynamic())\n }\n\n byteLen(): number {\n let size = 0\n let i = 0\n while (i < this.childTypes.length) {\n const childType = this.childTypes[i]\n if (childType instanceof ABIBoolType) {\n const sequenceEndIndex = findBoolSequenceEnd(this.childTypes, i)\n const boolCount = sequenceEndIndex - i + 1\n size += Math.ceil(boolCount / 8)\n i = sequenceEndIndex + 1\n } else {\n size += childType.byteLen()\n i++\n }\n }\n return size\n }\n\n encode(value: ABIValue): Uint8Array {\n if (!Array.isArray(value) && !(value instanceof Uint8Array)) {\n throw new Error(`Cannot encode value as ${this.toString()}: ${value}`)\n }\n\n const values = Array.from(value)\n\n if (this.childTypes.length !== values.length) {\n throw new Error('Mismatch lengths between the values and types')\n }\n\n const heads: Uint8Array[] = []\n const tails: Uint8Array[] = []\n const isDynamicIndex = new Map<number, boolean>()\n let abiTypesCursor = 0\n\n while (abiTypesCursor < this.childTypes.length) {\n const childType = this.childTypes[abiTypesCursor]\n\n if (childType.isDynamic()) {\n isDynamicIndex.set(heads.length, true)\n heads.push(new Uint8Array(2)) // Placeholder for dynamic offset\n tails.push(childType.encode(values[abiTypesCursor]))\n } else {\n if (childType instanceof ABIBoolType) {\n const boolSequenceEndIndex = findBoolSequenceEnd(this.childTypes, abiTypesCursor)\n const boolValues = values.slice(abiTypesCursor, boolSequenceEndIndex + 1)\n const compressedBool = compressBools(boolValues)\n heads.push(new Uint8Array([compressedBool]))\n abiTypesCursor = boolSequenceEndIndex\n } else {\n heads.push(childType.encode(values[abiTypesCursor]))\n }\n isDynamicIndex.set(abiTypesCursor, false)\n tails.push(new Uint8Array(0))\n }\n abiTypesCursor += 1\n }\n\n const headLength = heads.reduce((sum, head) => sum + head.length, 0)\n let tailLength = 0\n\n for (let i = 0; i < heads.length; i++) {\n if (isDynamicIndex.get(i)) {\n const headValue = headLength + tailLength\n if (headValue > 0xffff) {\n throw new Error(`Value ${headValue} cannot fit in u16`)\n }\n heads[i] = new Uint8Array([(headValue >> 8) & 0xff, headValue & 0xff])\n }\n tailLength += tails[i].length\n }\n\n const totalLength = heads.reduce((sum, head) => sum + head.length, 0) + tails.reduce((sum, tail) => sum + tail.length, 0)\n const result = new Uint8Array(totalLength)\n let offset = 0\n\n for (const head of heads) {\n result.set(head, offset)\n offset += head.length\n }\n\n for (const tail of tails) {\n result.set(tail, offset)\n offset += tail.length\n }\n\n return result\n }\n\n decode(bytes: Uint8Array): ABIValue[] {\n const valuePartitions = extractValues(this.childTypes, bytes)\n const values: ABIValue[] = []\n\n for (let i = 0; i < this.childTypes.length; i++) {\n const childType = this.childTypes[i]\n const valuePartition = valuePartitions[i]\n const childValue = childType.decode(valuePartition)\n values.push(childValue)\n }\n\n return values\n }\n}\n\n/**\n * A static-length array ABI type.\n */\nexport class ABIArrayStaticType extends ABIType {\n /**\n * Creates a new static array type.\n * @param childType The type of the array elements\n * @param length The fixed length of the array\n */\n constructor(\n public readonly childType: ABIType,\n public readonly length: number,\n ) {\n super()\n if (length < 0 || length > MAX_LEN) {\n throw new Error(`Invalid static array length: ${length}`)\n }\n }\n\n get name(): string {\n return `${this.childType.name}[${this.length}]`\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIArrayStaticType && this.childType.equals(other.childType) && this.length === other.length\n }\n\n isDynamic(): boolean {\n return this.childType.isDynamic()\n }\n\n byteLen(): number {\n if (this.childType instanceof ABIBoolType) {\n return Math.ceil(this.length / 8)\n }\n return this.childType.byteLen() * this.length\n }\n\n /**\n * Converts this static array type to an equivalent tuple type.\n * @returns The equivalent tuple type\n */\n toABITupleType(): ABITupleType {\n return new ABITupleType(Array(this.length).fill(this.childType))\n }\n\n encode(value: ABIValue): Uint8Array {\n if (!Array.isArray(value) && !(value instanceof Uint8Array)) {\n throw new Error(`Cannot encode value as ${this.name}: ${value}`)\n }\n if (value.length !== this.length) {\n throw new Error(`Value array does not match static array length. Expected ${this.length}, got ${value.length}`)\n }\n const convertedTuple = this.toABITupleType()\n return convertedTuple.encode(value)\n }\n\n decode(bytes: Uint8Array): ABIValue[] | Uint8Array {\n const convertedTuple = this.toABITupleType()\n const decoded = convertedTuple.decode(bytes)\n\n // Convert byte arrays to Uint8Array\n if (this.childType instanceof ABIByteType && Array.isArray(decoded)) {\n return new Uint8Array(decoded as number[])\n }\n\n return decoded\n }\n}\n\n/**\n * A dynamic-length array ABI type.\n */\nexport class ABIArrayDynamicType extends ABIType {\n /**\n * Creates a new dynamic array type.\n * @param childType The type of the array elements\n */\n constructor(public readonly childType: ABIType) {\n super()\n }\n\n get name(): string {\n return `${this.childType.name}[]`\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIArrayDynamicType && this.childType.equals(other.childType)\n }\n\n isDynamic(): boolean {\n return true\n }\n\n byteLen(): number {\n throw new Error(`Failed to get size, dynamic array is a dynamic type`)\n }\n\n /**\n * Converts this dynamic array type to an equivalent tuple type of a given length.\n * @param length The number of elements\n * @returns The equivalent tuple type\n */\n toABITupleType(length: number): ABITupleType {\n return new ABITupleType(Array(length).fill(this.childType))\n }\n\n encode(value: ABIValue): Uint8Array {\n if (!Array.isArray(value) && !(value instanceof Uint8Array)) {\n throw new Error(`Cannot encode value as ${this.name}: ${value}`)\n }\n const convertedTuple = this.toABITupleType(value.length)\n const encodedTuple = convertedTuple.encode(value)\n const encodedLength = bigIntToBytes(convertedTuple.childTypes.length, LENGTH_ENCODE_BYTE_SIZE)\n return concatArrays(encodedLength, encodedTuple)\n }\n\n decode(bytes: Uint8Array): ABIValue[] | Uint8Array {\n const view = new DataView(bytes.buffer, 0, LENGTH_ENCODE_BYTE_SIZE)\n const byteLength = view.getUint16(0)\n const convertedTuple = this.toABITupleType(byteLength)\n const decoded = convertedTuple.decode(bytes.slice(LENGTH_ENCODE_BYTE_SIZE, bytes.length))\n\n // Convert byte arrays to Uint8Array\n if (this.childType instanceof ABIByteType && Array.isArray(decoded)) {\n return new Uint8Array(decoded as number[])\n }\n\n return decoded\n }\n}\n\n/**\n * A struct ABI type with named fields.\n */\nexport class ABIStructType extends ABIType {\n /**\n * Creates a new struct type.\n * @param structName The name of the struct\n * @param structFields The fields of the struct\n */\n constructor(\n public readonly structName: string,\n public readonly structFields: ABIStructField[],\n ) {\n super()\n }\n\n get name(): string {\n const tupleType = this.toABITupleType()\n return tupleType.name\n }\n\n get displayName(): string {\n return this.structName\n }\n\n equals(other: ABIType): boolean {\n if (!(other instanceof ABIStructType)) return false\n if (this.structName !== other.structName) return false\n if (this.structFields.length !== other.structFields.length) return false\n return this.structFields.every((f, i) => {\n const otherField = other.structFields[i]\n if (f.name !== otherField.name) return false\n if (Array.isArray(f.type) && Array.isArray(otherField.type)) {\n return JSON.stringify(f.type) === JSON.stringify(otherField.type)\n }\n if (f.type instanceof ABIType && otherField.type instanceof ABIType) {\n return f.type.equals(otherField.type)\n }\n return false\n })\n }\n\n isDynamic(): boolean {\n const tupleType = this.toABITupleType()\n return tupleType.isDynamic()\n }\n\n byteLen(): number {\n const tupleType = this.toABITupleType()\n return tupleType.byteLen()\n }\n\n /**\n * Converts this struct type to an equivalent tuple type.\n * @returns The equivalent tuple type\n */\n toABITupleType(): ABITupleType {\n const getABITupleTypeFromABIStructFields = (fields: ABIStructField[]): ABITupleType => {\n const childTypes = fields.map((field) =>\n Array.isArray(field.type)\n ? getABITupleTypeFromABIStructFields(field.type)\n : field.type instanceof ABIStructType\n ? field.type.toABITupleType()\n : field.type,\n )\n return new ABITupleType(childTypes)\n }\n\n return getABITupleTypeFromABIStructFields(this.structFields)\n }\n\n /**\n * Creates an ABIStructType from struct name and struct definitions.\n * @param structName The name of the struct\n * @param structs A record of struct definitions\n * @returns The struct type\n */\n static fromStruct(structName: string, structs: Record<string, StructField[]>): ABIStructType {\n const getStructFieldType = (structFieldType: string | StructField[]): ABIType | ABIStructField[] => {\n // When the input is an array of struct fields\n if (Array.isArray(structFieldType)) {\n return structFieldType.map((structField) => ({\n name: structField.name,\n type: getStructFieldType(structField.type),\n }))\n }\n\n // When the input is a name of another struct\n if (structs[structFieldType]) {\n return ABIStructType.fromStruct(structFieldType, structs)\n }\n\n // When the input in an ABI type name\n return ABIType.from(structFieldType)\n }\n\n if (!structs[structName]) throw new Error('Struct not found')\n\n const fields = structs[structName]\n return new ABIStructType(\n structName,\n fields.map((f) => ({\n name: f.name,\n type: getStructFieldType(f.type),\n })),\n )\n }\n\n encode(value: ABIValue): Uint8Array {\n if (typeof value !== 'object' || Array.isArray(value) || value instanceof Uint8Array || value instanceof Address) {\n throw new Error(`Cannot encode value as ${this.name}: ${value}`)\n }\n\n const tupleType = this.toABITupleType()\n const tupleValue = this.getTupleValueFromStructValue(value)\n return tupleType.encode(tupleValue)\n }\n\n decode(bytes: Uint8Array): ABIStructValue {\n const tupleType = this.toABITupleType()\n const tupleValue = tupleType.decode(bytes)\n return this.getStructValueFromTupleValue(tupleValue)\n }\n\n private getTupleValueFromStructValue(structValue: ABIStructValue): ABIValue[] {\n const getTupleValueFromStructFields = (structFields: ABIStructField[], values: ABIValue[]): ABIValue[] => {\n return structFields.map(({ type }, index) => {\n // if type is an array of fields, treat as unnamed struct\n if (Array.isArray(type)) {\n const value = values[index] as ABIStructValue\n return getTupleValueFromStructFields(type, Object.values(value))\n }\n // if type is struct, treat as struct\n if (type instanceof ABIStructType) {\n const value = values[index] as ABIStructValue\n return getTupleValueFromStructFields(type.structFields, Object.values(value))\n }\n return values[index]\n })\n }\n\n return getTupleValueFromStructFields(this.structFields, Object.values(structValue))\n }\n\n private getStructValueFromTupleValue(tupleValue: ABIValue[]): ABIStructValue {\n const getStructFieldValues = (structFields: ABIStructField[], values: ABIValue[]): ABIStructValue => {\n return Object.fromEntries(\n structFields.map(({ name, type }, index) => {\n // When the type is an array of fields, the value must be tuple\n if (Array.isArray(type)) {\n const value = values[index] as ABIValue[]\n return [name, getStructFieldValues(type, value)]\n }\n // When the type is a struct, the value must be tuple\n if (type instanceof ABIStructType) {\n const value = values[index] as ABIValue[]\n return [name, getStructFieldValues(type.structFields, value)]\n }\n return [name, values[index]]\n }),\n )\n }\n\n return getStructFieldValues(this.structFields, tupleValue)\n }\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\nfunction compressBools(values: ABIValue[]): number {\n if (values.length > 8) {\n throw new Error(`Expected no more than 8 bool values, received ${values.length}`)\n }\n\n let result = 0\n for (let i = 0; i < values.length; i++) {\n if (typeof values[i] !== 'boolean') {\n throw new Error('Expected all values to be boolean')\n }\n if (values[i]) {\n result |= 1 << (7 - i)\n }\n }\n\n return result\n}\n\nfunction findBoolSequenceEnd(abiTypes: ABIType[], currentIndex: number): number {\n let cursor = currentIndex\n while (cursor < abiTypes.length) {\n if (abiTypes[cursor] instanceof ABIBoolType) {\n if (cursor - currentIndex + 1 === 8 || cursor === abiTypes.length - 1) {\n return cursor\n }\n cursor++\n } else {\n return cursor - 1\n }\n }\n return cursor - 1\n}\n\nfunction extractValues(abiTypes: ABIType[], bytes: Uint8Array): Uint8Array[] {\n const dynamicSegments: Segment[] = []\n const valuePartitions: (Uint8Array | null)[] = []\n let bytesCursor = 0\n let abiTypesCursor = 0\n\n while (abiTypesCursor < abiTypes.length) {\n const childType = abiTypes[abiTypesCursor]\n\n if (childType.isDynamic()) {\n if (bytes.length - bytesCursor < LENGTH_ENCODE_BYTE_SIZE) {\n throw new Error('Byte array is too short to be decoded')\n }\n\n const dynamicIndex = (bytes[bytesCursor] << 8) | bytes[bytesCursor + 1]\n\n if (dynamicSegments.length > 0) {\n const lastSegment = dynamicSegments[dynamicSegments.length - 1]\n if (dynamicIndex < lastSegment.left) {\n throw new Error('Dynamic index segment miscalculation: left is greater than right index')\n }\n lastSegment.right = dynamicIndex\n }\n\n dynamicSegments.push({ left: dynamicIndex, right: 0 })\n valuePartitions.push(null)\n bytesCursor += LENGTH_ENCODE_BYTE_SIZE\n } else {\n if (childType instanceof ABIBoolType) {\n const boolSequenceEndIndex = findBoolSequenceEnd(abiTypes, abiTypesCursor)\n for (let j = 0; j <= boolSequenceEndIndex - abiTypesCursor; j++) {\n const boolMask = BOOL_TRUE_BYTE >> j\n if ((bytes[bytesCursor] & boolMask) > 0) {\n valuePartitions.push(new Uint8Array([BOOL_TRUE_BYTE]))\n } else {\n valuePartitions.push(new Uint8Array([BOOL_FALSE_BYTE]))\n }\n }\n abiTypesCursor = boolSequenceEndIndex\n bytesCursor += 1\n } else {\n const childTypeSize = childType.byteLen()\n if (bytesCursor + childTypeSize > bytes.length) {\n throw new Error(\n `Index out of bounds, trying to access bytes[${bytesCursor}..${bytesCursor + childTypeSize}] but slice has length ${bytes.length}`,\n )\n }\n valuePartitions.push(bytes.slice(bytesCursor, bytesCursor + childTypeSize))\n bytesCursor += childTypeSize\n }\n }\n\n if (abiTypesCursor !== abiTypes.length - 1 && bytesCursor >= bytes.length) {\n throw new Error('Input bytes not enough to decode')\n }\n abiTypesCursor += 1\n }\n\n if (dynamicSegments.length > 0) {\n const lastSegment = dynamicSegments[dynamicSegments.length - 1]\n lastSegment.right = bytes.length\n } else if (bytesCursor < bytes.length) {\n throw new Error('Input bytes not fully consumed')\n }\n\n for (let i = 0; i < dynamicSegments.length; i++) {\n const segment = dynamicSegments[i]\n if (segment.left > segment.right) {\n throw new Error('Dynamic segment should display a [l, r] space with l <= r')\n }\n if (i !== dynamicSegments.length - 1 && segment.right !== dynamicSegments[i + 1].left) {\n throw new Error('Dynamic segments should be consecutive')\n }\n }\n\n let segmentIndex = 0\n for (let i = 0; i < abiTypes.length; i++) {\n const childType = abiTypes[i]\n if (childType.isDynamic()) {\n valuePartitions[i] = bytes.slice(dynamicSegments[segmentIndex].left, dynamicSegments[segmentIndex].right)\n segmentIndex += 1\n }\n }\n\n const result: Uint8Array[] = []\n for (let i = 0; i < valuePartitions.length; i++) {\n const partition = valuePartitions[i]\n if (partition === null) {\n throw new Error(`Value partition at index ${i} is None`)\n }\n result.push(partition)\n }\n\n return result\n}\n\nexport function parseTupleContent(content: string): string[] {\n if (content === '') {\n return []\n }\n\n if (content.startsWith(',')) {\n throw new Error('The content should not start with comma')\n }\n if (content.endsWith(',')) {\n throw new Error('The content should not end with comma')\n }\n if (content.includes(',,')) {\n throw new Error('The content should not have consecutive commas')\n }\n\n const tupleStrings: string[] = []\n let depth = 0\n let word = ''\n\n for (const ch of content) {\n word += ch\n if (ch === '(') {\n depth += 1\n } else if (ch === ')') {\n depth -= 1\n } else if (ch === ',' && depth === 0) {\n word = word.slice(0, -1) // Remove the comma\n tupleStrings.push(word)\n word = ''\n }\n }\n\n if (word !== '') {\n tupleStrings.push(word)\n }\n\n if (depth !== 0) {\n throw new Error('The content has mismatched parentheses')\n }\n\n return tupleStrings\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"abi-type.js","names":["bigIntToBytes","bytesToBigInt","Address","concatArrays","getTupleValueFromStructValue","getStructValueFromTupleValue"],"sources":["../../../../packages/abi/src/abi-type.ts"],"sourcesContent":["import {\n Address,\n BOOL_FALSE_BYTE,\n BOOL_TRUE_BYTE,\n LENGTH_ENCODE_BYTE_SIZE,\n PUBLIC_KEY_BYTE_LENGTH,\n concatArrays,\n} from '@algorandfoundation/algokit-common'\nimport type { ABIStructValue, ABIValue } from './abi-value'\nimport { StructField } from './arc56-contract'\nimport { bigIntToBytes, bytesToBigInt } from './bigint'\nimport { getStructValueFromTupleValue, getTupleValueFromStructValue } from './utils'\n\nconst STATIC_ARRAY_REGEX = /^([a-z\\d[\\](),]+)\\[(0|[1-9][\\d]*)]$/\nconst UFIXED_REGEX = /^ufixed([1-9][\\d]*)x([1-9][\\d]*)$/\nconst MAX_LEN = 2 ** 16 - 1\n\n/**\n * Information about a single field in a struct\n */\nexport type ABIStructField = {\n /** The name of the struct field */\n name: string\n /** The type of the struct field's value */\n type: ABIType | ABIStructField[]\n}\n\ninterface Segment {\n left: number\n right: number\n}\n\n/**\n * Represents an Algorand ABI type for encoding and decoding values as defined in [ARC-0004](https://arc.algorand.foundation/ARCs/arc-0004#types).\n *\n * This is the abstract base class for all ABI types.\n */\nexport abstract class ABIType {\n /**\n * Returns the ARC-4 type name string representation.\n * @returns The ARC-4 type string\n */\n abstract get name(): string\n\n /**\n * Returns a user-friendly display name for this type.\n * @returns The display name for this type\n */\n get displayName(): string {\n return this.name\n }\n\n /**\n * Returns the ARC-4 type name string representation.\n * @returns The ARC-4 type string\n */\n toString(): string {\n return this.name\n }\n\n /**\n * Checks if this ABI type is equal to another.\n * @param other The other ABI type to compare with\n * @returns True if the types are equal, false otherwise\n */\n abstract equals(other: ABIType): boolean\n\n /**\n * Checks if this ABI type is dynamic (variable-length).\n * @returns True if the type is dynamic, false otherwise\n */\n abstract isDynamic(): boolean\n\n /**\n * Gets the byte length of the encoded type for static types.\n * @returns The number of bytes needed to encode this type\n * @throws Error if the type is dynamic\n */\n abstract byteLen(): number\n\n /**\n * Encodes a value according to this ABI type.\n * @param value The value to encode\n * @returns The encoded bytes\n */\n abstract encode(value: ABIValue): Uint8Array\n\n /**\n * Decodes bytes according to this ABI type.\n * @param bytes The bytes to decode\n * @returns The decoded value\n */\n abstract decode(bytes: Uint8Array): ABIValue\n\n /**\n * Creates an ABI type from an ARC-4 type string.\n * @param str The ARC-4 type string (e.g., \"uint256\", \"bool\", \"(uint8,address)\")\n * @returns The corresponding ABI type\n */\n static from(str: string): ABIType {\n if (str.endsWith('[]')) {\n const childType = ABIType.from(str.slice(0, str.length - 2))\n return new ABIArrayDynamicType(childType)\n }\n if (str.endsWith(']')) {\n const stringMatches = str.match(STATIC_ARRAY_REGEX)\n if (!stringMatches || stringMatches.length !== 3) {\n throw new Error(`Malformed static array string: ${str}`)\n }\n const arrayLengthStr = stringMatches[2]\n const arrayLength = parseInt(arrayLengthStr, 10)\n if (arrayLength > MAX_LEN) {\n throw new Error(`Array length exceeds limit ${MAX_LEN}`)\n }\n const childType = ABIType.from(stringMatches[1])\n return new ABIArrayStaticType(childType, arrayLength)\n }\n if (str.startsWith('uint')) {\n const digitsOnly = (s: string) => [...s].every((c) => '0123456789'.includes(c))\n const typeSizeStr = str.slice(4, str.length)\n if (!digitsOnly(typeSizeStr)) {\n throw new Error(`Malformed uint string: ${typeSizeStr}`)\n }\n const bitSize = parseInt(typeSizeStr, 10)\n if (bitSize > MAX_LEN) {\n throw new Error(`Malformed uint string: ${bitSize}`)\n }\n return new ABIUintType(bitSize)\n }\n if (str === 'byte') {\n return new ABIByteType()\n }\n if (str.startsWith('ufixed')) {\n const stringMatches = str.match(UFIXED_REGEX)\n if (!stringMatches || stringMatches.length !== 3) {\n throw new Error(`Malformed ufixed type: ${str}`)\n }\n const bitSize = parseInt(stringMatches[1], 10)\n const precision = parseInt(stringMatches[2], 10)\n return new ABIUfixedType(bitSize, precision)\n }\n if (str === 'bool') {\n return new ABIBoolType()\n }\n if (str === 'address') {\n return new ABIAddressType()\n }\n if (str === 'string') {\n return new ABIStringType()\n }\n if (str.length >= 2 && str[0] === '(' && str[str.length - 1] === ')') {\n const tupleContent = parseTupleContent(str.slice(1, str.length - 1))\n const childTypes: ABIType[] = []\n for (let i = 0; i < tupleContent.length; i++) {\n const ti = ABIType.from(tupleContent[i])\n childTypes.push(ti)\n }\n return new ABITupleType(childTypes)\n }\n throw new Error(`Cannot convert a string ${str} to an ABI type`)\n }\n}\n\n// ============================================================================\n// Primitive Types\n// ============================================================================\n\n/**\n * An unsigned integer ABI type of a specific bit size.\n */\nexport class ABIUintType extends ABIType {\n /**\n * Creates a new unsigned integer type.\n * @param bitSize The bit size (must be a multiple of 8, between 8 and 512)\n */\n constructor(public readonly bitSize: number) {\n super()\n if (bitSize % 8 !== 0 || bitSize < 8 || bitSize > 512) {\n throw new Error(`Unsupported uint type bitSize: ${bitSize}`)\n }\n }\n\n get name(): string {\n return `uint${this.bitSize}`\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIUintType && this.bitSize === other.bitSize\n }\n\n isDynamic(): boolean {\n return false\n }\n\n byteLen(): number {\n return this.bitSize / 8\n }\n\n encode(value: ABIValue): Uint8Array {\n if (typeof value !== 'bigint' && typeof value !== 'number') {\n throw new Error(`Cannot encode value as ${this.name}: ${value}`)\n }\n\n if (value >= BigInt(2 ** this.bitSize) || value < BigInt(0)) {\n throw new Error(`${value} is not a non-negative int or too big to fit in size ${this.name}`)\n }\n if (typeof value === 'number' && !Number.isSafeInteger(value)) {\n throw new Error(`${value} should be converted into a BigInt before it is encoded`)\n }\n return bigIntToBytes(value, this.bitSize / 8)\n }\n\n decode(bytes: Uint8Array): ABIValue {\n if (bytes.length !== this.bitSize / 8) {\n throw new Error(`Byte string must correspond to a ${this.name}`)\n }\n const value = bytesToBigInt(bytes)\n return this.bitSize < 53 ? Number(value) : value\n }\n}\n\n/**\n * A fixed-point number ABI type of a specific bit size and precision.\n */\nexport class ABIUfixedType extends ABIType {\n /**\n * Creates a new fixed-point type.\n * @param bitSize The bit size (must be a multiple of 8, between 8 and 512)\n * @param precision The decimal precision (must be between 1 and 160)\n */\n constructor(\n public readonly bitSize: number,\n public readonly precision: number,\n ) {\n super()\n if (bitSize % 8 !== 0 || bitSize < 8 || bitSize > 512) {\n throw new Error(`Unsupported ufixed type bitSize: ${bitSize}`)\n }\n if (precision > 160 || precision < 1) {\n throw new Error(`Unsupported ufixed type precision: ${precision}`)\n }\n }\n\n get name(): string {\n return `ufixed${this.bitSize}x${this.precision}`\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIUfixedType && this.bitSize === other.bitSize && this.precision === other.precision\n }\n\n isDynamic(): boolean {\n return false\n }\n\n byteLen(): number {\n return this.bitSize / 8\n }\n\n encode(value: ABIValue): Uint8Array {\n if (typeof value !== 'bigint' && typeof value !== 'number') {\n throw new Error(`Cannot encode value as ${this.name}: ${value}`)\n }\n if (value >= BigInt(2 ** this.bitSize) || value < BigInt(0)) {\n throw new Error(`${value} is not a non-negative int or too big to fit in size ${this.name}`)\n }\n if (typeof value === 'number' && !Number.isSafeInteger(value)) {\n throw new Error(`${value} should be converted into a BigInt before it is encoded`)\n }\n return bigIntToBytes(value, this.bitSize / 8)\n }\n\n decode(bytes: Uint8Array): ABIValue {\n if (bytes.length !== this.bitSize / 8) {\n throw new Error(`Byte string must correspond to a ${this.name}`)\n }\n const value = bytesToBigInt(bytes)\n return this.bitSize < 53 ? Number(value) : value\n }\n}\n\n/**\n * An Algorand address ABI type.\n */\nexport class ABIAddressType extends ABIType {\n get name(): string {\n return 'address'\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIAddressType\n }\n\n isDynamic(): boolean {\n return false\n }\n\n byteLen(): number {\n return PUBLIC_KEY_BYTE_LENGTH\n }\n\n encode(value: ABIValue): Uint8Array {\n if (typeof value === 'string') {\n return Address.fromString(value).publicKey\n }\n\n if (value instanceof Address) {\n return value.publicKey\n }\n\n if (value instanceof Uint8Array && value.length === 32) {\n return value\n }\n\n throw new Error(`Cannot encode value as address: ${value}`)\n }\n\n decode(bytes: Uint8Array): string {\n return new Address(bytes).toString()\n }\n}\n\n/**\n * A boolean ABI type.\n */\nexport class ABIBoolType extends ABIType {\n get name(): string {\n return 'bool'\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIBoolType\n }\n\n isDynamic(): boolean {\n return false\n }\n\n byteLen(): number {\n return 1\n }\n\n encode(value: ABIValue): Uint8Array {\n if (typeof value !== 'boolean') {\n throw new Error(`Cannot encode value as bool: ${value}`)\n }\n\n return value ? new Uint8Array([0x80]) : new Uint8Array([0x00])\n }\n\n decode(bytes: Uint8Array): ABIValue {\n if (bytes.length !== 1) {\n throw new Error(`Expected 1 byte for bool, got ${bytes.length}`)\n }\n\n return (bytes[0] & 0x80) !== 0\n }\n}\n\n/**\n * A single byte ABI type.\n */\nexport class ABIByteType extends ABIType {\n get name(): string {\n return 'byte'\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIByteType\n }\n\n isDynamic(): boolean {\n return false\n }\n\n byteLen(): number {\n return 1\n }\n\n encode(value: ABIValue): Uint8Array {\n if (typeof value !== 'number' && typeof value !== 'bigint') {\n throw new Error(`Cannot encode value as byte: ${value}`)\n }\n const numberValue = typeof value === 'bigint' ? Number(value) : value\n if (value < 0 || value > 255) {\n throw new Error(`Byte value must be between 0 and 255, got ${numberValue}`)\n }\n\n return new Uint8Array([numberValue])\n }\n\n decode(bytes: Uint8Array): ABIValue {\n if (bytes.length !== 1) {\n throw new Error(`Expected 1 byte for byte type, got ${bytes.length}`)\n }\n\n return bytes[0]\n }\n}\n\n/**\n * A dynamic-length string ABI type.\n */\nexport class ABIStringType extends ABIType {\n get name(): string {\n return 'string'\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIStringType\n }\n\n isDynamic(): boolean {\n return true\n }\n\n byteLen(): number {\n throw new Error(`Failed to get size, string is a dynamic type`)\n }\n\n encode(value: ABIValue): Uint8Array {\n if (typeof value !== 'string' && !(value instanceof Uint8Array)) {\n throw new Error(`Cannot encode value as string: ${value}`)\n }\n\n let encodedBytes: Uint8Array\n if (typeof value === 'string') {\n encodedBytes = new TextEncoder().encode(value)\n } else {\n encodedBytes = value\n }\n const encodedLength = bigIntToBytes(encodedBytes.length, LENGTH_ENCODE_BYTE_SIZE)\n const mergedBytes = new Uint8Array(encodedBytes.length + LENGTH_ENCODE_BYTE_SIZE)\n mergedBytes.set(encodedLength)\n mergedBytes.set(encodedBytes, LENGTH_ENCODE_BYTE_SIZE)\n return mergedBytes\n }\n\n decode(bytes: Uint8Array): ABIValue {\n if (bytes.length < LENGTH_ENCODE_BYTE_SIZE) {\n throw new Error(\n `Byte string is too short to be decoded. Actual length is ${bytes.length}, but expected at least ${LENGTH_ENCODE_BYTE_SIZE}`,\n )\n }\n const view = new DataView(bytes.buffer, bytes.byteOffset, LENGTH_ENCODE_BYTE_SIZE)\n const byteLength = view.getUint16(0)\n const byteValue = bytes.slice(LENGTH_ENCODE_BYTE_SIZE, bytes.length)\n if (byteLength !== byteValue.length) {\n throw new Error(`String length bytes do not match the actual length of string. Expected ${byteLength}, got ${byteValue.length}`)\n }\n return new TextDecoder('utf-8').decode(byteValue)\n }\n}\n\n// ============================================================================\n// Collection Types\n// ============================================================================\n\n/**\n * A tuple ABI type containing other ABI types.\n */\nexport class ABITupleType extends ABIType {\n /**\n * Creates a new tuple type.\n * @param childTypes The types of the tuple elements\n */\n constructor(public readonly childTypes: ABIType[]) {\n super()\n if (childTypes.length > MAX_LEN) {\n throw new Error(`Tuple has too many child types: ${childTypes.length}`)\n }\n }\n\n get name(): string {\n const typeStrings: string[] = []\n for (let i = 0; i < this.childTypes.length; i++) {\n typeStrings[i] = this.childTypes[i].name\n }\n return `(${typeStrings.join(',')})`\n }\n\n equals(other: ABIType): boolean {\n if (!(other instanceof ABITupleType)) return false\n if (this.childTypes.length !== other.childTypes.length) return false\n return this.childTypes.every((t, i) => t.equals(other.childTypes[i]))\n }\n\n isDynamic(): boolean {\n return this.childTypes.some((c) => c.isDynamic())\n }\n\n byteLen(): number {\n let size = 0\n let i = 0\n while (i < this.childTypes.length) {\n const childType = this.childTypes[i]\n if (childType instanceof ABIBoolType) {\n const sequenceEndIndex = findBoolSequenceEnd(this.childTypes, i)\n const boolCount = sequenceEndIndex - i + 1\n size += Math.ceil(boolCount / 8)\n i = sequenceEndIndex + 1\n } else {\n size += childType.byteLen()\n i++\n }\n }\n return size\n }\n\n encode(value: ABIValue): Uint8Array {\n if (!Array.isArray(value) && !(value instanceof Uint8Array)) {\n throw new Error(`Cannot encode value as ${this.toString()}: ${value}`)\n }\n\n const values = Array.from(value)\n\n if (this.childTypes.length !== values.length) {\n throw new Error('Mismatch lengths between the values and types')\n }\n\n const heads: Uint8Array[] = []\n const tails: Uint8Array[] = []\n const isDynamicIndex = new Map<number, boolean>()\n let abiTypesCursor = 0\n\n while (abiTypesCursor < this.childTypes.length) {\n const childType = this.childTypes[abiTypesCursor]\n\n if (childType.isDynamic()) {\n isDynamicIndex.set(heads.length, true)\n heads.push(new Uint8Array(2)) // Placeholder for dynamic offset\n tails.push(childType.encode(values[abiTypesCursor]))\n } else {\n if (childType instanceof ABIBoolType) {\n const boolSequenceEndIndex = findBoolSequenceEnd(this.childTypes, abiTypesCursor)\n const boolValues = values.slice(abiTypesCursor, boolSequenceEndIndex + 1)\n const compressedBool = compressBools(boolValues)\n heads.push(new Uint8Array([compressedBool]))\n abiTypesCursor = boolSequenceEndIndex\n } else {\n heads.push(childType.encode(values[abiTypesCursor]))\n }\n isDynamicIndex.set(abiTypesCursor, false)\n tails.push(new Uint8Array(0))\n }\n abiTypesCursor += 1\n }\n\n const headLength = heads.reduce((sum, head) => sum + head.length, 0)\n let tailLength = 0\n\n for (let i = 0; i < heads.length; i++) {\n if (isDynamicIndex.get(i)) {\n const headValue = headLength + tailLength\n if (headValue > 0xffff) {\n throw new Error(`Value ${headValue} cannot fit in u16`)\n }\n heads[i] = new Uint8Array([(headValue >> 8) & 0xff, headValue & 0xff])\n }\n tailLength += tails[i].length\n }\n\n const totalLength = heads.reduce((sum, head) => sum + head.length, 0) + tails.reduce((sum, tail) => sum + tail.length, 0)\n const result = new Uint8Array(totalLength)\n let offset = 0\n\n for (const head of heads) {\n result.set(head, offset)\n offset += head.length\n }\n\n for (const tail of tails) {\n result.set(tail, offset)\n offset += tail.length\n }\n\n return result\n }\n\n decode(bytes: Uint8Array): ABIValue[] {\n const valuePartitions = extractValues(this.childTypes, bytes)\n const values: ABIValue[] = []\n\n for (let i = 0; i < this.childTypes.length; i++) {\n const childType = this.childTypes[i]\n const valuePartition = valuePartitions[i]\n const childValue = childType.decode(valuePartition)\n values.push(childValue)\n }\n\n return values\n }\n}\n\n/**\n * A static-length array ABI type.\n */\nexport class ABIArrayStaticType extends ABIType {\n /**\n * Creates a new static array type.\n * @param childType The type of the array elements\n * @param length The fixed length of the array\n */\n constructor(\n public readonly childType: ABIType,\n public readonly length: number,\n ) {\n super()\n if (length < 0 || length > MAX_LEN) {\n throw new Error(`Invalid static array length: ${length}`)\n }\n }\n\n get name(): string {\n return `${this.childType.name}[${this.length}]`\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIArrayStaticType && this.childType.equals(other.childType) && this.length === other.length\n }\n\n isDynamic(): boolean {\n return this.childType.isDynamic()\n }\n\n byteLen(): number {\n if (this.childType instanceof ABIBoolType) {\n return Math.ceil(this.length / 8)\n }\n return this.childType.byteLen() * this.length\n }\n\n /**\n * Converts this static array type to an equivalent tuple type.\n * @returns The equivalent tuple type\n */\n toABITupleType(): ABITupleType {\n return new ABITupleType(Array(this.length).fill(this.childType))\n }\n\n encode(value: ABIValue): Uint8Array {\n if (!Array.isArray(value) && !(value instanceof Uint8Array)) {\n throw new Error(`Cannot encode value as ${this.name}: ${value}`)\n }\n if (value.length !== this.length) {\n throw new Error(`Value array does not match static array length. Expected ${this.length}, got ${value.length}`)\n }\n const convertedTuple = this.toABITupleType()\n return convertedTuple.encode(value)\n }\n\n decode(bytes: Uint8Array): ABIValue[] | Uint8Array {\n const convertedTuple = this.toABITupleType()\n const decoded = convertedTuple.decode(bytes)\n\n // Convert byte arrays to Uint8Array\n if (this.childType instanceof ABIByteType && Array.isArray(decoded)) {\n return new Uint8Array(decoded as number[])\n }\n\n return decoded\n }\n}\n\n/**\n * A dynamic-length array ABI type.\n */\nexport class ABIArrayDynamicType extends ABIType {\n /**\n * Creates a new dynamic array type.\n * @param childType The type of the array elements\n */\n constructor(public readonly childType: ABIType) {\n super()\n }\n\n get name(): string {\n return `${this.childType.name}[]`\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIArrayDynamicType && this.childType.equals(other.childType)\n }\n\n isDynamic(): boolean {\n return true\n }\n\n byteLen(): number {\n throw new Error(`Failed to get size, dynamic array is a dynamic type`)\n }\n\n /**\n * Converts this dynamic array type to an equivalent tuple type of a given length.\n * @param length The number of elements\n * @returns The equivalent tuple type\n */\n toABITupleType(length: number): ABITupleType {\n return new ABITupleType(Array(length).fill(this.childType))\n }\n\n encode(value: ABIValue): Uint8Array {\n if (!Array.isArray(value) && !(value instanceof Uint8Array)) {\n throw new Error(`Cannot encode value as ${this.name}: ${value}`)\n }\n const convertedTuple = this.toABITupleType(value.length)\n const encodedTuple = convertedTuple.encode(value)\n const encodedLength = bigIntToBytes(convertedTuple.childTypes.length, LENGTH_ENCODE_BYTE_SIZE)\n return concatArrays(encodedLength, encodedTuple)\n }\n\n decode(bytes: Uint8Array): ABIValue[] | Uint8Array {\n const view = new DataView(bytes.buffer, 0, LENGTH_ENCODE_BYTE_SIZE)\n const byteLength = view.getUint16(0)\n const convertedTuple = this.toABITupleType(byteLength)\n const decoded = convertedTuple.decode(bytes.slice(LENGTH_ENCODE_BYTE_SIZE, bytes.length))\n\n // Convert byte arrays to Uint8Array\n if (this.childType instanceof ABIByteType && Array.isArray(decoded)) {\n return new Uint8Array(decoded as number[])\n }\n\n return decoded\n }\n}\n\n/**\n * A struct ABI type with named fields.\n */\nexport class ABIStructType extends ABIType {\n /**\n * Creates a new struct type.\n * @param structName The name of the struct\n * @param structFields The fields of the struct\n */\n constructor(\n public readonly structName: string,\n public readonly structFields: ABIStructField[],\n ) {\n super()\n }\n\n get name(): string {\n const tupleType = this.toABITupleType()\n return tupleType.name\n }\n\n get displayName(): string {\n return this.structName\n }\n\n equals(other: ABIType): boolean {\n if (!(other instanceof ABIStructType)) return false\n if (this.structName !== other.structName) return false\n if (this.structFields.length !== other.structFields.length) return false\n return this.structFields.every((f, i) => {\n const otherField = other.structFields[i]\n if (f.name !== otherField.name) return false\n if (Array.isArray(f.type) && Array.isArray(otherField.type)) {\n return JSON.stringify(f.type) === JSON.stringify(otherField.type)\n }\n if (f.type instanceof ABIType && otherField.type instanceof ABIType) {\n return f.type.equals(otherField.type)\n }\n return false\n })\n }\n\n isDynamic(): boolean {\n const tupleType = this.toABITupleType()\n return tupleType.isDynamic()\n }\n\n byteLen(): number {\n const tupleType = this.toABITupleType()\n return tupleType.byteLen()\n }\n\n /**\n * Converts this struct type to an equivalent tuple type.\n * @returns The equivalent tuple type\n */\n toABITupleType(): ABITupleType {\n const getABITupleTypeFromABIStructFields = (fields: ABIStructField[]): ABITupleType => {\n const childTypes = fields.map((field) =>\n Array.isArray(field.type)\n ? getABITupleTypeFromABIStructFields(field.type)\n : field.type instanceof ABIStructType\n ? field.type.toABITupleType()\n : field.type,\n )\n return new ABITupleType(childTypes)\n }\n\n return getABITupleTypeFromABIStructFields(this.structFields)\n }\n\n /**\n * Creates an ABIStructType from struct name and struct definitions.\n * @param structName The name of the struct\n * @param structs A record of struct definitions\n * @returns The struct type\n */\n static fromStruct(structName: string, structs: Record<string, StructField[]>): ABIStructType {\n const getStructFieldType = (structFieldType: string | StructField[]): ABIType | ABIStructField[] => {\n // When the input is an array of struct fields\n if (Array.isArray(structFieldType)) {\n return structFieldType.map((structField) => ({\n name: structField.name,\n type: getStructFieldType(structField.type),\n }))\n }\n\n // When the input is a name of another struct\n if (structs[structFieldType]) {\n return ABIStructType.fromStruct(structFieldType, structs)\n }\n\n // When the input in an ABI type name\n return ABIType.from(structFieldType)\n }\n\n if (!structs[structName]) throw new Error('Struct not found')\n\n const fields = structs[structName]\n return new ABIStructType(\n structName,\n fields.map((f) => ({\n name: f.name,\n type: getStructFieldType(f.type),\n })),\n )\n }\n\n encode(value: ABIValue): Uint8Array {\n if (value instanceof Uint8Array || value instanceof Address || typeof value !== 'object') {\n throw new Error(`Cannot encode value as ${this.name}: ${value}`)\n }\n\n const tupleType = this.toABITupleType()\n if (Array.isArray(value)) {\n return tupleType.encode(value)\n }\n\n const tupleValue = getTupleValueFromStructValue(this, value)\n return tupleType.encode(tupleValue)\n }\n\n decode(bytes: Uint8Array): ABIStructValue {\n const tupleType = this.toABITupleType()\n const tupleValue = tupleType.decode(bytes)\n return getStructValueFromTupleValue(this, tupleValue)\n }\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\nfunction compressBools(values: ABIValue[]): number {\n if (values.length > 8) {\n throw new Error(`Expected no more than 8 bool values, received ${values.length}`)\n }\n\n let result = 0\n for (let i = 0; i < values.length; i++) {\n if (typeof values[i] !== 'boolean') {\n throw new Error('Expected all values to be boolean')\n }\n if (values[i]) {\n result |= 1 << (7 - i)\n }\n }\n\n return result\n}\n\nfunction findBoolSequenceEnd(abiTypes: ABIType[], currentIndex: number): number {\n let cursor = currentIndex\n while (cursor < abiTypes.length) {\n if (abiTypes[cursor] instanceof ABIBoolType) {\n if (cursor - currentIndex + 1 === 8 || cursor === abiTypes.length - 1) {\n return cursor\n }\n cursor++\n } else {\n return cursor - 1\n }\n }\n return cursor - 1\n}\n\nfunction extractValues(abiTypes: ABIType[], bytes: Uint8Array): Uint8Array[] {\n const dynamicSegments: Segment[] = []\n const valuePartitions: (Uint8Array | null)[] = []\n let bytesCursor = 0\n let abiTypesCursor = 0\n\n while (abiTypesCursor < abiTypes.length) {\n const childType = abiTypes[abiTypesCursor]\n\n if (childType.isDynamic()) {\n if (bytes.length - bytesCursor < LENGTH_ENCODE_BYTE_SIZE) {\n throw new Error('Byte array is too short to be decoded')\n }\n\n const dynamicIndex = (bytes[bytesCursor] << 8) | bytes[bytesCursor + 1]\n\n if (dynamicSegments.length > 0) {\n const lastSegment = dynamicSegments[dynamicSegments.length - 1]\n if (dynamicIndex < lastSegment.left) {\n throw new Error('Dynamic index segment miscalculation: left is greater than right index')\n }\n lastSegment.right = dynamicIndex\n }\n\n dynamicSegments.push({ left: dynamicIndex, right: 0 })\n valuePartitions.push(null)\n bytesCursor += LENGTH_ENCODE_BYTE_SIZE\n } else {\n if (childType instanceof ABIBoolType) {\n const boolSequenceEndIndex = findBoolSequenceEnd(abiTypes, abiTypesCursor)\n for (let j = 0; j <= boolSequenceEndIndex - abiTypesCursor; j++) {\n const boolMask = BOOL_TRUE_BYTE >> j\n if ((bytes[bytesCursor] & boolMask) > 0) {\n valuePartitions.push(new Uint8Array([BOOL_TRUE_BYTE]))\n } else {\n valuePartitions.push(new Uint8Array([BOOL_FALSE_BYTE]))\n }\n }\n abiTypesCursor = boolSequenceEndIndex\n bytesCursor += 1\n } else {\n const childTypeSize = childType.byteLen()\n if (bytesCursor + childTypeSize > bytes.length) {\n throw new Error(\n `Index out of bounds, trying to access bytes[${bytesCursor}..${bytesCursor + childTypeSize}] but slice has length ${bytes.length}`,\n )\n }\n valuePartitions.push(bytes.slice(bytesCursor, bytesCursor + childTypeSize))\n bytesCursor += childTypeSize\n }\n }\n\n if (abiTypesCursor !== abiTypes.length - 1 && bytesCursor >= bytes.length) {\n throw new Error('Input bytes not enough to decode')\n }\n abiTypesCursor += 1\n }\n\n if (dynamicSegments.length > 0) {\n const lastSegment = dynamicSegments[dynamicSegments.length - 1]\n lastSegment.right = bytes.length\n } else if (bytesCursor < bytes.length) {\n throw new Error('Input bytes not fully consumed')\n }\n\n for (let i = 0; i < dynamicSegments.length; i++) {\n const segment = dynamicSegments[i]\n if (segment.left > segment.right) {\n throw new Error('Dynamic segment should display a [l, r] space with l <= r')\n }\n if (i !== dynamicSegments.length - 1 && segment.right !== dynamicSegments[i + 1].left) {\n throw new Error('Dynamic segments should be consecutive')\n }\n }\n\n let segmentIndex = 0\n for (let i = 0; i < abiTypes.length; i++) {\n const childType = abiTypes[i]\n if (childType.isDynamic()) {\n valuePartitions[i] = bytes.slice(dynamicSegments[segmentIndex].left, dynamicSegments[segmentIndex].right)\n segmentIndex += 1\n }\n }\n\n const result: Uint8Array[] = []\n for (let i = 0; i < valuePartitions.length; i++) {\n const partition = valuePartitions[i]\n if (partition === null) {\n throw new Error(`Value partition at index ${i} is None`)\n }\n result.push(partition)\n }\n\n return result\n}\n\nexport function parseTupleContent(content: string): string[] {\n if (content === '') {\n return []\n }\n\n if (content.startsWith(',')) {\n throw new Error('The content should not start with comma')\n }\n if (content.endsWith(',')) {\n throw new Error('The content should not end with comma')\n }\n if (content.includes(',,')) {\n throw new Error('The content should not have consecutive commas')\n }\n\n const tupleStrings: string[] = []\n let depth = 0\n let word = ''\n\n for (const ch of content) {\n word += ch\n if (ch === '(') {\n depth += 1\n } else if (ch === ')') {\n depth -= 1\n } else if (ch === ',' && depth === 0) {\n word = word.slice(0, -1) // Remove the comma\n tupleStrings.push(word)\n word = ''\n }\n }\n\n if (word !== '') {\n tupleStrings.push(word)\n }\n\n if (depth !== 0) {\n throw new Error('The content has mismatched parentheses')\n }\n\n return tupleStrings\n}\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { concatArrays } from "../../common/src/array.mjs";
2
- import { BOOL_FALSE_BYTE, BOOL_TRUE_BYTE, LENGTH_ENCODE_BYTE_SIZE, PUBLIC_KEY_BYTE_LENGTH } from "../../common/src/constants.mjs";
2
+ import "../../common/src/constants.mjs";
3
3
  import { Address } from "../../common/src/address.mjs";
4
4
  import { bigIntToBytes, bytesToBigInt } from "./bigint.mjs";
5
-
5
+ import { getStructValueFromTupleValue, getTupleValueFromStructValue } from "./utils.mjs";
6
6
  //#region packages/abi/src/abi-type.ts
7
7
  const STATIC_ARRAY_REGEX = /^([a-z\d[\](),]+)\[(0|[1-9][\d]*)]$/;
8
8
  const UFIXED_REGEX = /^ufixed([1-9][\d]*)x([1-9][\d]*)$/;
@@ -162,7 +162,7 @@ var ABIAddressType = class ABIAddressType extends ABIType {
162
162
  return false;
163
163
  }
164
164
  byteLen() {
165
- return PUBLIC_KEY_BYTE_LENGTH;
165
+ return 32;
166
166
  }
167
167
  encode(value) {
168
168
  if (typeof value === "string") return Address.fromString(value).publicKey;
@@ -247,16 +247,16 @@ var ABIStringType = class ABIStringType extends ABIType {
247
247
  let encodedBytes;
248
248
  if (typeof value === "string") encodedBytes = new TextEncoder().encode(value);
249
249
  else encodedBytes = value;
250
- const encodedLength = bigIntToBytes(encodedBytes.length, LENGTH_ENCODE_BYTE_SIZE);
251
- const mergedBytes = new Uint8Array(encodedBytes.length + LENGTH_ENCODE_BYTE_SIZE);
250
+ const encodedLength = bigIntToBytes(encodedBytes.length, 2);
251
+ const mergedBytes = new Uint8Array(encodedBytes.length + 2);
252
252
  mergedBytes.set(encodedLength);
253
- mergedBytes.set(encodedBytes, LENGTH_ENCODE_BYTE_SIZE);
253
+ mergedBytes.set(encodedBytes, 2);
254
254
  return mergedBytes;
255
255
  }
256
256
  decode(bytes) {
257
- if (bytes.length < LENGTH_ENCODE_BYTE_SIZE) throw new Error(`Byte string is too short to be decoded. Actual length is ${bytes.length}, but expected at least ${LENGTH_ENCODE_BYTE_SIZE}`);
258
- const byteLength = new DataView(bytes.buffer, bytes.byteOffset, LENGTH_ENCODE_BYTE_SIZE).getUint16(0);
259
- const byteValue = bytes.slice(LENGTH_ENCODE_BYTE_SIZE, bytes.length);
257
+ if (bytes.length < 2) throw new Error(`Byte string is too short to be decoded. Actual length is ${bytes.length}, but expected at least 2`);
258
+ const byteLength = new DataView(bytes.buffer, bytes.byteOffset, 2).getUint16(0);
259
+ const byteValue = bytes.slice(2, bytes.length);
260
260
  if (byteLength !== byteValue.length) throw new Error(`String length bytes do not match the actual length of string. Expected ${byteLength}, got ${byteValue.length}`);
261
261
  return new TextDecoder("utf-8").decode(byteValue);
262
262
  }
@@ -357,9 +357,7 @@ var ABITupleType = class ABITupleType extends ABIType {
357
357
  const valuePartitions = extractValues(this.childTypes, bytes);
358
358
  const values = [];
359
359
  for (let i = 0; i < this.childTypes.length; i++) {
360
- const childType = this.childTypes[i];
361
- const valuePartition = valuePartitions[i];
362
- const childValue = childType.decode(valuePartition);
360
+ const childValue = this.childTypes[i].decode(valuePartitions[i]);
363
361
  values.push(childValue);
364
362
  }
365
363
  return values;
@@ -447,11 +445,11 @@ var ABIArrayDynamicType = class ABIArrayDynamicType extends ABIType {
447
445
  if (!Array.isArray(value) && !(value instanceof Uint8Array)) throw new Error(`Cannot encode value as ${this.name}: ${value}`);
448
446
  const convertedTuple = this.toABITupleType(value.length);
449
447
  const encodedTuple = convertedTuple.encode(value);
450
- return concatArrays(bigIntToBytes(convertedTuple.childTypes.length, LENGTH_ENCODE_BYTE_SIZE), encodedTuple);
448
+ return concatArrays(bigIntToBytes(convertedTuple.childTypes.length, 2), encodedTuple);
451
449
  }
452
450
  decode(bytes) {
453
- const byteLength = new DataView(bytes.buffer, 0, LENGTH_ENCODE_BYTE_SIZE).getUint16(0);
454
- const decoded = this.toABITupleType(byteLength).decode(bytes.slice(LENGTH_ENCODE_BYTE_SIZE, bytes.length));
451
+ const byteLength = new DataView(bytes.buffer, 0, 2).getUint16(0);
452
+ const decoded = this.toABITupleType(byteLength).decode(bytes.slice(2, bytes.length));
455
453
  if (this.childType instanceof ABIByteType && Array.isArray(decoded)) return new Uint8Array(decoded);
456
454
  return decoded;
457
455
  }
@@ -527,46 +525,15 @@ var ABIStructType = class ABIStructType extends ABIType {
527
525
  })));
528
526
  }
529
527
  encode(value) {
530
- if (typeof value !== "object" || Array.isArray(value) || value instanceof Uint8Array || value instanceof Address) throw new Error(`Cannot encode value as ${this.name}: ${value}`);
528
+ if (value instanceof Uint8Array || value instanceof Address || typeof value !== "object") throw new Error(`Cannot encode value as ${this.name}: ${value}`);
531
529
  const tupleType = this.toABITupleType();
532
- const tupleValue = this.getTupleValueFromStructValue(value);
530
+ if (Array.isArray(value)) return tupleType.encode(value);
531
+ const tupleValue = getTupleValueFromStructValue(this, value);
533
532
  return tupleType.encode(tupleValue);
534
533
  }
535
534
  decode(bytes) {
536
535
  const tupleValue = this.toABITupleType().decode(bytes);
537
- return this.getStructValueFromTupleValue(tupleValue);
538
- }
539
- getTupleValueFromStructValue(structValue) {
540
- const getTupleValueFromStructFields = (structFields, values) => {
541
- return structFields.map(({ type }, index) => {
542
- if (Array.isArray(type)) {
543
- const value = values[index];
544
- return getTupleValueFromStructFields(type, Object.values(value));
545
- }
546
- if (type instanceof ABIStructType) {
547
- const value = values[index];
548
- return getTupleValueFromStructFields(type.structFields, Object.values(value));
549
- }
550
- return values[index];
551
- });
552
- };
553
- return getTupleValueFromStructFields(this.structFields, Object.values(structValue));
554
- }
555
- getStructValueFromTupleValue(tupleValue) {
556
- const getStructFieldValues = (structFields, values) => {
557
- return Object.fromEntries(structFields.map(({ name, type }, index) => {
558
- if (Array.isArray(type)) {
559
- const value = values[index];
560
- return [name, getStructFieldValues(type, value)];
561
- }
562
- if (type instanceof ABIStructType) {
563
- const value = values[index];
564
- return [name, getStructFieldValues(type.structFields, value)];
565
- }
566
- return [name, values[index]];
567
- }));
568
- };
569
- return getStructFieldValues(this.structFields, tupleValue);
536
+ return getStructValueFromTupleValue(this, tupleValue);
570
537
  }
571
538
  };
572
539
  function compressBools(values) {
@@ -594,7 +561,7 @@ function extractValues(abiTypes, bytes) {
594
561
  while (abiTypesCursor < abiTypes.length) {
595
562
  const childType = abiTypes[abiTypesCursor];
596
563
  if (childType.isDynamic()) {
597
- if (bytes.length - bytesCursor < LENGTH_ENCODE_BYTE_SIZE) throw new Error("Byte array is too short to be decoded");
564
+ if (bytes.length - bytesCursor < 2) throw new Error("Byte array is too short to be decoded");
598
565
  const dynamicIndex = bytes[bytesCursor] << 8 | bytes[bytesCursor + 1];
599
566
  if (dynamicSegments.length > 0) {
600
567
  const lastSegment = dynamicSegments[dynamicSegments.length - 1];
@@ -606,13 +573,13 @@ function extractValues(abiTypes, bytes) {
606
573
  right: 0
607
574
  });
608
575
  valuePartitions.push(null);
609
- bytesCursor += LENGTH_ENCODE_BYTE_SIZE;
576
+ bytesCursor += 2;
610
577
  } else if (childType instanceof ABIBoolType) {
611
578
  const boolSequenceEndIndex = findBoolSequenceEnd(abiTypes, abiTypesCursor);
612
579
  for (let j = 0; j <= boolSequenceEndIndex - abiTypesCursor; j++) {
613
- const boolMask = BOOL_TRUE_BYTE >> j;
614
- if ((bytes[bytesCursor] & boolMask) > 0) valuePartitions.push(new Uint8Array([BOOL_TRUE_BYTE]));
615
- else valuePartitions.push(new Uint8Array([BOOL_FALSE_BYTE]));
580
+ const boolMask = 128 >> j;
581
+ if ((bytes[bytesCursor] & boolMask) > 0) valuePartitions.push(new Uint8Array([128]));
582
+ else valuePartitions.push(new Uint8Array([0]));
616
583
  }
617
584
  abiTypesCursor = boolSequenceEndIndex;
618
585
  bytesCursor += 1;
@@ -669,7 +636,7 @@ function parseTupleContent(content) {
669
636
  if (depth !== 0) throw new Error("The content has mismatched parentheses");
670
637
  return tupleStrings;
671
638
  }
672
-
673
639
  //#endregion
674
640
  export { ABIAddressType, ABIArrayDynamicType, ABIArrayStaticType, ABIBoolType, ABIByteType, ABIStringType, ABIStructType, ABITupleType, ABIType, ABIUfixedType, ABIUintType, parseTupleContent };
641
+
675
642
  //# sourceMappingURL=abi-type.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"abi-type.mjs","names":["childTypes: ABIType[]","bitSize: number","precision: number","encodedBytes: Uint8Array","typeStrings: string[]","heads: Uint8Array[]","tails: Uint8Array[]","values: ABIValue[]","childType: ABIType","length: number","structName: string","structFields: ABIStructField[]","dynamicSegments: Segment[]","valuePartitions: (Uint8Array | null)[]","result: Uint8Array[]","tupleStrings: string[]"],"sources":["../../../../packages/abi/src/abi-type.ts"],"sourcesContent":["import {\n Address,\n BOOL_FALSE_BYTE,\n BOOL_TRUE_BYTE,\n LENGTH_ENCODE_BYTE_SIZE,\n PUBLIC_KEY_BYTE_LENGTH,\n concatArrays,\n} from '@algorandfoundation/algokit-common'\nimport type { ABIStructValue, ABIValue } from './abi-value'\nimport { StructField } from './arc56-contract'\nimport { bigIntToBytes, bytesToBigInt } from './bigint'\n\nconst STATIC_ARRAY_REGEX = /^([a-z\\d[\\](),]+)\\[(0|[1-9][\\d]*)]$/\nconst UFIXED_REGEX = /^ufixed([1-9][\\d]*)x([1-9][\\d]*)$/\nconst MAX_LEN = 2 ** 16 - 1\n\n/**\n * Information about a single field in a struct\n */\nexport type ABIStructField = {\n /** The name of the struct field */\n name: string\n /** The type of the struct field's value */\n type: ABIType | ABIStructField[]\n}\n\ninterface Segment {\n left: number\n right: number\n}\n\n/**\n * Represents an Algorand ABI type for encoding and decoding values as defined in [ARC-0004](https://arc.algorand.foundation/ARCs/arc-0004#types).\n *\n * This is the abstract base class for all ABI types.\n */\nexport abstract class ABIType {\n /**\n * Returns the ARC-4 type name string representation.\n * @returns The ARC-4 type string\n */\n abstract get name(): string\n\n /**\n * Returns a user-friendly display name for this type.\n * @returns The display name for this type\n */\n get displayName(): string {\n return this.name\n }\n\n /**\n * Returns the ARC-4 type name string representation.\n * @returns The ARC-4 type string\n */\n toString(): string {\n return this.name\n }\n\n /**\n * Checks if this ABI type is equal to another.\n * @param other The other ABI type to compare with\n * @returns True if the types are equal, false otherwise\n */\n abstract equals(other: ABIType): boolean\n\n /**\n * Checks if this ABI type is dynamic (variable-length).\n * @returns True if the type is dynamic, false otherwise\n */\n abstract isDynamic(): boolean\n\n /**\n * Gets the byte length of the encoded type for static types.\n * @returns The number of bytes needed to encode this type\n * @throws Error if the type is dynamic\n */\n abstract byteLen(): number\n\n /**\n * Encodes a value according to this ABI type.\n * @param value The value to encode\n * @returns The encoded bytes\n */\n abstract encode(value: ABIValue): Uint8Array\n\n /**\n * Decodes bytes according to this ABI type.\n * @param bytes The bytes to decode\n * @returns The decoded value\n */\n abstract decode(bytes: Uint8Array): ABIValue\n\n /**\n * Creates an ABI type from an ARC-4 type string.\n * @param str The ARC-4 type string (e.g., \"uint256\", \"bool\", \"(uint8,address)\")\n * @returns The corresponding ABI type\n */\n static from(str: string): ABIType {\n if (str.endsWith('[]')) {\n const childType = ABIType.from(str.slice(0, str.length - 2))\n return new ABIArrayDynamicType(childType)\n }\n if (str.endsWith(']')) {\n const stringMatches = str.match(STATIC_ARRAY_REGEX)\n if (!stringMatches || stringMatches.length !== 3) {\n throw new Error(`Malformed static array string: ${str}`)\n }\n const arrayLengthStr = stringMatches[2]\n const arrayLength = parseInt(arrayLengthStr, 10)\n if (arrayLength > MAX_LEN) {\n throw new Error(`Array length exceeds limit ${MAX_LEN}`)\n }\n const childType = ABIType.from(stringMatches[1])\n return new ABIArrayStaticType(childType, arrayLength)\n }\n if (str.startsWith('uint')) {\n const digitsOnly = (s: string) => [...s].every((c) => '0123456789'.includes(c))\n const typeSizeStr = str.slice(4, str.length)\n if (!digitsOnly(typeSizeStr)) {\n throw new Error(`Malformed uint string: ${typeSizeStr}`)\n }\n const bitSize = parseInt(typeSizeStr, 10)\n if (bitSize > MAX_LEN) {\n throw new Error(`Malformed uint string: ${bitSize}`)\n }\n return new ABIUintType(bitSize)\n }\n if (str === 'byte') {\n return new ABIByteType()\n }\n if (str.startsWith('ufixed')) {\n const stringMatches = str.match(UFIXED_REGEX)\n if (!stringMatches || stringMatches.length !== 3) {\n throw new Error(`Malformed ufixed type: ${str}`)\n }\n const bitSize = parseInt(stringMatches[1], 10)\n const precision = parseInt(stringMatches[2], 10)\n return new ABIUfixedType(bitSize, precision)\n }\n if (str === 'bool') {\n return new ABIBoolType()\n }\n if (str === 'address') {\n return new ABIAddressType()\n }\n if (str === 'string') {\n return new ABIStringType()\n }\n if (str.length >= 2 && str[0] === '(' && str[str.length - 1] === ')') {\n const tupleContent = parseTupleContent(str.slice(1, str.length - 1))\n const childTypes: ABIType[] = []\n for (let i = 0; i < tupleContent.length; i++) {\n const ti = ABIType.from(tupleContent[i])\n childTypes.push(ti)\n }\n return new ABITupleType(childTypes)\n }\n throw new Error(`Cannot convert a string ${str} to an ABI type`)\n }\n}\n\n// ============================================================================\n// Primitive Types\n// ============================================================================\n\n/**\n * An unsigned integer ABI type of a specific bit size.\n */\nexport class ABIUintType extends ABIType {\n /**\n * Creates a new unsigned integer type.\n * @param bitSize The bit size (must be a multiple of 8, between 8 and 512)\n */\n constructor(public readonly bitSize: number) {\n super()\n if (bitSize % 8 !== 0 || bitSize < 8 || bitSize > 512) {\n throw new Error(`Unsupported uint type bitSize: ${bitSize}`)\n }\n }\n\n get name(): string {\n return `uint${this.bitSize}`\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIUintType && this.bitSize === other.bitSize\n }\n\n isDynamic(): boolean {\n return false\n }\n\n byteLen(): number {\n return this.bitSize / 8\n }\n\n encode(value: ABIValue): Uint8Array {\n if (typeof value !== 'bigint' && typeof value !== 'number') {\n throw new Error(`Cannot encode value as ${this.name}: ${value}`)\n }\n\n if (value >= BigInt(2 ** this.bitSize) || value < BigInt(0)) {\n throw new Error(`${value} is not a non-negative int or too big to fit in size ${this.name}`)\n }\n if (typeof value === 'number' && !Number.isSafeInteger(value)) {\n throw new Error(`${value} should be converted into a BigInt before it is encoded`)\n }\n return bigIntToBytes(value, this.bitSize / 8)\n }\n\n decode(bytes: Uint8Array): ABIValue {\n if (bytes.length !== this.bitSize / 8) {\n throw new Error(`Byte string must correspond to a ${this.name}`)\n }\n const value = bytesToBigInt(bytes)\n return this.bitSize < 53 ? Number(value) : value\n }\n}\n\n/**\n * A fixed-point number ABI type of a specific bit size and precision.\n */\nexport class ABIUfixedType extends ABIType {\n /**\n * Creates a new fixed-point type.\n * @param bitSize The bit size (must be a multiple of 8, between 8 and 512)\n * @param precision The decimal precision (must be between 1 and 160)\n */\n constructor(\n public readonly bitSize: number,\n public readonly precision: number,\n ) {\n super()\n if (bitSize % 8 !== 0 || bitSize < 8 || bitSize > 512) {\n throw new Error(`Unsupported ufixed type bitSize: ${bitSize}`)\n }\n if (precision > 160 || precision < 1) {\n throw new Error(`Unsupported ufixed type precision: ${precision}`)\n }\n }\n\n get name(): string {\n return `ufixed${this.bitSize}x${this.precision}`\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIUfixedType && this.bitSize === other.bitSize && this.precision === other.precision\n }\n\n isDynamic(): boolean {\n return false\n }\n\n byteLen(): number {\n return this.bitSize / 8\n }\n\n encode(value: ABIValue): Uint8Array {\n if (typeof value !== 'bigint' && typeof value !== 'number') {\n throw new Error(`Cannot encode value as ${this.name}: ${value}`)\n }\n if (value >= BigInt(2 ** this.bitSize) || value < BigInt(0)) {\n throw new Error(`${value} is not a non-negative int or too big to fit in size ${this.name}`)\n }\n if (typeof value === 'number' && !Number.isSafeInteger(value)) {\n throw new Error(`${value} should be converted into a BigInt before it is encoded`)\n }\n return bigIntToBytes(value, this.bitSize / 8)\n }\n\n decode(bytes: Uint8Array): ABIValue {\n if (bytes.length !== this.bitSize / 8) {\n throw new Error(`Byte string must correspond to a ${this.name}`)\n }\n const value = bytesToBigInt(bytes)\n return this.bitSize < 53 ? Number(value) : value\n }\n}\n\n/**\n * An Algorand address ABI type.\n */\nexport class ABIAddressType extends ABIType {\n get name(): string {\n return 'address'\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIAddressType\n }\n\n isDynamic(): boolean {\n return false\n }\n\n byteLen(): number {\n return PUBLIC_KEY_BYTE_LENGTH\n }\n\n encode(value: ABIValue): Uint8Array {\n if (typeof value === 'string') {\n return Address.fromString(value).publicKey\n }\n\n if (value instanceof Address) {\n return value.publicKey\n }\n\n if (value instanceof Uint8Array && value.length === 32) {\n return value\n }\n\n throw new Error(`Cannot encode value as address: ${value}`)\n }\n\n decode(bytes: Uint8Array): string {\n return new Address(bytes).toString()\n }\n}\n\n/**\n * A boolean ABI type.\n */\nexport class ABIBoolType extends ABIType {\n get name(): string {\n return 'bool'\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIBoolType\n }\n\n isDynamic(): boolean {\n return false\n }\n\n byteLen(): number {\n return 1\n }\n\n encode(value: ABIValue): Uint8Array {\n if (typeof value !== 'boolean') {\n throw new Error(`Cannot encode value as bool: ${value}`)\n }\n\n return value ? new Uint8Array([0x80]) : new Uint8Array([0x00])\n }\n\n decode(bytes: Uint8Array): ABIValue {\n if (bytes.length !== 1) {\n throw new Error(`Expected 1 byte for bool, got ${bytes.length}`)\n }\n\n return (bytes[0] & 0x80) !== 0\n }\n}\n\n/**\n * A single byte ABI type.\n */\nexport class ABIByteType extends ABIType {\n get name(): string {\n return 'byte'\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIByteType\n }\n\n isDynamic(): boolean {\n return false\n }\n\n byteLen(): number {\n return 1\n }\n\n encode(value: ABIValue): Uint8Array {\n if (typeof value !== 'number' && typeof value !== 'bigint') {\n throw new Error(`Cannot encode value as byte: ${value}`)\n }\n const numberValue = typeof value === 'bigint' ? Number(value) : value\n if (value < 0 || value > 255) {\n throw new Error(`Byte value must be between 0 and 255, got ${numberValue}`)\n }\n\n return new Uint8Array([numberValue])\n }\n\n decode(bytes: Uint8Array): ABIValue {\n if (bytes.length !== 1) {\n throw new Error(`Expected 1 byte for byte type, got ${bytes.length}`)\n }\n\n return bytes[0]\n }\n}\n\n/**\n * A dynamic-length string ABI type.\n */\nexport class ABIStringType extends ABIType {\n get name(): string {\n return 'string'\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIStringType\n }\n\n isDynamic(): boolean {\n return true\n }\n\n byteLen(): number {\n throw new Error(`Failed to get size, string is a dynamic type`)\n }\n\n encode(value: ABIValue): Uint8Array {\n if (typeof value !== 'string' && !(value instanceof Uint8Array)) {\n throw new Error(`Cannot encode value as string: ${value}`)\n }\n\n let encodedBytes: Uint8Array\n if (typeof value === 'string') {\n encodedBytes = new TextEncoder().encode(value)\n } else {\n encodedBytes = value\n }\n const encodedLength = bigIntToBytes(encodedBytes.length, LENGTH_ENCODE_BYTE_SIZE)\n const mergedBytes = new Uint8Array(encodedBytes.length + LENGTH_ENCODE_BYTE_SIZE)\n mergedBytes.set(encodedLength)\n mergedBytes.set(encodedBytes, LENGTH_ENCODE_BYTE_SIZE)\n return mergedBytes\n }\n\n decode(bytes: Uint8Array): ABIValue {\n if (bytes.length < LENGTH_ENCODE_BYTE_SIZE) {\n throw new Error(\n `Byte string is too short to be decoded. Actual length is ${bytes.length}, but expected at least ${LENGTH_ENCODE_BYTE_SIZE}`,\n )\n }\n const view = new DataView(bytes.buffer, bytes.byteOffset, LENGTH_ENCODE_BYTE_SIZE)\n const byteLength = view.getUint16(0)\n const byteValue = bytes.slice(LENGTH_ENCODE_BYTE_SIZE, bytes.length)\n if (byteLength !== byteValue.length) {\n throw new Error(`String length bytes do not match the actual length of string. Expected ${byteLength}, got ${byteValue.length}`)\n }\n return new TextDecoder('utf-8').decode(byteValue)\n }\n}\n\n// ============================================================================\n// Collection Types\n// ============================================================================\n\n/**\n * A tuple ABI type containing other ABI types.\n */\nexport class ABITupleType extends ABIType {\n /**\n * Creates a new tuple type.\n * @param childTypes The types of the tuple elements\n */\n constructor(public readonly childTypes: ABIType[]) {\n super()\n if (childTypes.length > MAX_LEN) {\n throw new Error(`Tuple has too many child types: ${childTypes.length}`)\n }\n }\n\n get name(): string {\n const typeStrings: string[] = []\n for (let i = 0; i < this.childTypes.length; i++) {\n typeStrings[i] = this.childTypes[i].name\n }\n return `(${typeStrings.join(',')})`\n }\n\n equals(other: ABIType): boolean {\n if (!(other instanceof ABITupleType)) return false\n if (this.childTypes.length !== other.childTypes.length) return false\n return this.childTypes.every((t, i) => t.equals(other.childTypes[i]))\n }\n\n isDynamic(): boolean {\n return this.childTypes.some((c) => c.isDynamic())\n }\n\n byteLen(): number {\n let size = 0\n let i = 0\n while (i < this.childTypes.length) {\n const childType = this.childTypes[i]\n if (childType instanceof ABIBoolType) {\n const sequenceEndIndex = findBoolSequenceEnd(this.childTypes, i)\n const boolCount = sequenceEndIndex - i + 1\n size += Math.ceil(boolCount / 8)\n i = sequenceEndIndex + 1\n } else {\n size += childType.byteLen()\n i++\n }\n }\n return size\n }\n\n encode(value: ABIValue): Uint8Array {\n if (!Array.isArray(value) && !(value instanceof Uint8Array)) {\n throw new Error(`Cannot encode value as ${this.toString()}: ${value}`)\n }\n\n const values = Array.from(value)\n\n if (this.childTypes.length !== values.length) {\n throw new Error('Mismatch lengths between the values and types')\n }\n\n const heads: Uint8Array[] = []\n const tails: Uint8Array[] = []\n const isDynamicIndex = new Map<number, boolean>()\n let abiTypesCursor = 0\n\n while (abiTypesCursor < this.childTypes.length) {\n const childType = this.childTypes[abiTypesCursor]\n\n if (childType.isDynamic()) {\n isDynamicIndex.set(heads.length, true)\n heads.push(new Uint8Array(2)) // Placeholder for dynamic offset\n tails.push(childType.encode(values[abiTypesCursor]))\n } else {\n if (childType instanceof ABIBoolType) {\n const boolSequenceEndIndex = findBoolSequenceEnd(this.childTypes, abiTypesCursor)\n const boolValues = values.slice(abiTypesCursor, boolSequenceEndIndex + 1)\n const compressedBool = compressBools(boolValues)\n heads.push(new Uint8Array([compressedBool]))\n abiTypesCursor = boolSequenceEndIndex\n } else {\n heads.push(childType.encode(values[abiTypesCursor]))\n }\n isDynamicIndex.set(abiTypesCursor, false)\n tails.push(new Uint8Array(0))\n }\n abiTypesCursor += 1\n }\n\n const headLength = heads.reduce((sum, head) => sum + head.length, 0)\n let tailLength = 0\n\n for (let i = 0; i < heads.length; i++) {\n if (isDynamicIndex.get(i)) {\n const headValue = headLength + tailLength\n if (headValue > 0xffff) {\n throw new Error(`Value ${headValue} cannot fit in u16`)\n }\n heads[i] = new Uint8Array([(headValue >> 8) & 0xff, headValue & 0xff])\n }\n tailLength += tails[i].length\n }\n\n const totalLength = heads.reduce((sum, head) => sum + head.length, 0) + tails.reduce((sum, tail) => sum + tail.length, 0)\n const result = new Uint8Array(totalLength)\n let offset = 0\n\n for (const head of heads) {\n result.set(head, offset)\n offset += head.length\n }\n\n for (const tail of tails) {\n result.set(tail, offset)\n offset += tail.length\n }\n\n return result\n }\n\n decode(bytes: Uint8Array): ABIValue[] {\n const valuePartitions = extractValues(this.childTypes, bytes)\n const values: ABIValue[] = []\n\n for (let i = 0; i < this.childTypes.length; i++) {\n const childType = this.childTypes[i]\n const valuePartition = valuePartitions[i]\n const childValue = childType.decode(valuePartition)\n values.push(childValue)\n }\n\n return values\n }\n}\n\n/**\n * A static-length array ABI type.\n */\nexport class ABIArrayStaticType extends ABIType {\n /**\n * Creates a new static array type.\n * @param childType The type of the array elements\n * @param length The fixed length of the array\n */\n constructor(\n public readonly childType: ABIType,\n public readonly length: number,\n ) {\n super()\n if (length < 0 || length > MAX_LEN) {\n throw new Error(`Invalid static array length: ${length}`)\n }\n }\n\n get name(): string {\n return `${this.childType.name}[${this.length}]`\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIArrayStaticType && this.childType.equals(other.childType) && this.length === other.length\n }\n\n isDynamic(): boolean {\n return this.childType.isDynamic()\n }\n\n byteLen(): number {\n if (this.childType instanceof ABIBoolType) {\n return Math.ceil(this.length / 8)\n }\n return this.childType.byteLen() * this.length\n }\n\n /**\n * Converts this static array type to an equivalent tuple type.\n * @returns The equivalent tuple type\n */\n toABITupleType(): ABITupleType {\n return new ABITupleType(Array(this.length).fill(this.childType))\n }\n\n encode(value: ABIValue): Uint8Array {\n if (!Array.isArray(value) && !(value instanceof Uint8Array)) {\n throw new Error(`Cannot encode value as ${this.name}: ${value}`)\n }\n if (value.length !== this.length) {\n throw new Error(`Value array does not match static array length. Expected ${this.length}, got ${value.length}`)\n }\n const convertedTuple = this.toABITupleType()\n return convertedTuple.encode(value)\n }\n\n decode(bytes: Uint8Array): ABIValue[] | Uint8Array {\n const convertedTuple = this.toABITupleType()\n const decoded = convertedTuple.decode(bytes)\n\n // Convert byte arrays to Uint8Array\n if (this.childType instanceof ABIByteType && Array.isArray(decoded)) {\n return new Uint8Array(decoded as number[])\n }\n\n return decoded\n }\n}\n\n/**\n * A dynamic-length array ABI type.\n */\nexport class ABIArrayDynamicType extends ABIType {\n /**\n * Creates a new dynamic array type.\n * @param childType The type of the array elements\n */\n constructor(public readonly childType: ABIType) {\n super()\n }\n\n get name(): string {\n return `${this.childType.name}[]`\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIArrayDynamicType && this.childType.equals(other.childType)\n }\n\n isDynamic(): boolean {\n return true\n }\n\n byteLen(): number {\n throw new Error(`Failed to get size, dynamic array is a dynamic type`)\n }\n\n /**\n * Converts this dynamic array type to an equivalent tuple type of a given length.\n * @param length The number of elements\n * @returns The equivalent tuple type\n */\n toABITupleType(length: number): ABITupleType {\n return new ABITupleType(Array(length).fill(this.childType))\n }\n\n encode(value: ABIValue): Uint8Array {\n if (!Array.isArray(value) && !(value instanceof Uint8Array)) {\n throw new Error(`Cannot encode value as ${this.name}: ${value}`)\n }\n const convertedTuple = this.toABITupleType(value.length)\n const encodedTuple = convertedTuple.encode(value)\n const encodedLength = bigIntToBytes(convertedTuple.childTypes.length, LENGTH_ENCODE_BYTE_SIZE)\n return concatArrays(encodedLength, encodedTuple)\n }\n\n decode(bytes: Uint8Array): ABIValue[] | Uint8Array {\n const view = new DataView(bytes.buffer, 0, LENGTH_ENCODE_BYTE_SIZE)\n const byteLength = view.getUint16(0)\n const convertedTuple = this.toABITupleType(byteLength)\n const decoded = convertedTuple.decode(bytes.slice(LENGTH_ENCODE_BYTE_SIZE, bytes.length))\n\n // Convert byte arrays to Uint8Array\n if (this.childType instanceof ABIByteType && Array.isArray(decoded)) {\n return new Uint8Array(decoded as number[])\n }\n\n return decoded\n }\n}\n\n/**\n * A struct ABI type with named fields.\n */\nexport class ABIStructType extends ABIType {\n /**\n * Creates a new struct type.\n * @param structName The name of the struct\n * @param structFields The fields of the struct\n */\n constructor(\n public readonly structName: string,\n public readonly structFields: ABIStructField[],\n ) {\n super()\n }\n\n get name(): string {\n const tupleType = this.toABITupleType()\n return tupleType.name\n }\n\n get displayName(): string {\n return this.structName\n }\n\n equals(other: ABIType): boolean {\n if (!(other instanceof ABIStructType)) return false\n if (this.structName !== other.structName) return false\n if (this.structFields.length !== other.structFields.length) return false\n return this.structFields.every((f, i) => {\n const otherField = other.structFields[i]\n if (f.name !== otherField.name) return false\n if (Array.isArray(f.type) && Array.isArray(otherField.type)) {\n return JSON.stringify(f.type) === JSON.stringify(otherField.type)\n }\n if (f.type instanceof ABIType && otherField.type instanceof ABIType) {\n return f.type.equals(otherField.type)\n }\n return false\n })\n }\n\n isDynamic(): boolean {\n const tupleType = this.toABITupleType()\n return tupleType.isDynamic()\n }\n\n byteLen(): number {\n const tupleType = this.toABITupleType()\n return tupleType.byteLen()\n }\n\n /**\n * Converts this struct type to an equivalent tuple type.\n * @returns The equivalent tuple type\n */\n toABITupleType(): ABITupleType {\n const getABITupleTypeFromABIStructFields = (fields: ABIStructField[]): ABITupleType => {\n const childTypes = fields.map((field) =>\n Array.isArray(field.type)\n ? getABITupleTypeFromABIStructFields(field.type)\n : field.type instanceof ABIStructType\n ? field.type.toABITupleType()\n : field.type,\n )\n return new ABITupleType(childTypes)\n }\n\n return getABITupleTypeFromABIStructFields(this.structFields)\n }\n\n /**\n * Creates an ABIStructType from struct name and struct definitions.\n * @param structName The name of the struct\n * @param structs A record of struct definitions\n * @returns The struct type\n */\n static fromStruct(structName: string, structs: Record<string, StructField[]>): ABIStructType {\n const getStructFieldType = (structFieldType: string | StructField[]): ABIType | ABIStructField[] => {\n // When the input is an array of struct fields\n if (Array.isArray(structFieldType)) {\n return structFieldType.map((structField) => ({\n name: structField.name,\n type: getStructFieldType(structField.type),\n }))\n }\n\n // When the input is a name of another struct\n if (structs[structFieldType]) {\n return ABIStructType.fromStruct(structFieldType, structs)\n }\n\n // When the input in an ABI type name\n return ABIType.from(structFieldType)\n }\n\n if (!structs[structName]) throw new Error('Struct not found')\n\n const fields = structs[structName]\n return new ABIStructType(\n structName,\n fields.map((f) => ({\n name: f.name,\n type: getStructFieldType(f.type),\n })),\n )\n }\n\n encode(value: ABIValue): Uint8Array {\n if (typeof value !== 'object' || Array.isArray(value) || value instanceof Uint8Array || value instanceof Address) {\n throw new Error(`Cannot encode value as ${this.name}: ${value}`)\n }\n\n const tupleType = this.toABITupleType()\n const tupleValue = this.getTupleValueFromStructValue(value)\n return tupleType.encode(tupleValue)\n }\n\n decode(bytes: Uint8Array): ABIStructValue {\n const tupleType = this.toABITupleType()\n const tupleValue = tupleType.decode(bytes)\n return this.getStructValueFromTupleValue(tupleValue)\n }\n\n private getTupleValueFromStructValue(structValue: ABIStructValue): ABIValue[] {\n const getTupleValueFromStructFields = (structFields: ABIStructField[], values: ABIValue[]): ABIValue[] => {\n return structFields.map(({ type }, index) => {\n // if type is an array of fields, treat as unnamed struct\n if (Array.isArray(type)) {\n const value = values[index] as ABIStructValue\n return getTupleValueFromStructFields(type, Object.values(value))\n }\n // if type is struct, treat as struct\n if (type instanceof ABIStructType) {\n const value = values[index] as ABIStructValue\n return getTupleValueFromStructFields(type.structFields, Object.values(value))\n }\n return values[index]\n })\n }\n\n return getTupleValueFromStructFields(this.structFields, Object.values(structValue))\n }\n\n private getStructValueFromTupleValue(tupleValue: ABIValue[]): ABIStructValue {\n const getStructFieldValues = (structFields: ABIStructField[], values: ABIValue[]): ABIStructValue => {\n return Object.fromEntries(\n structFields.map(({ name, type }, index) => {\n // When the type is an array of fields, the value must be tuple\n if (Array.isArray(type)) {\n const value = values[index] as ABIValue[]\n return [name, getStructFieldValues(type, value)]\n }\n // When the type is a struct, the value must be tuple\n if (type instanceof ABIStructType) {\n const value = values[index] as ABIValue[]\n return [name, getStructFieldValues(type.structFields, value)]\n }\n return [name, values[index]]\n }),\n )\n }\n\n return getStructFieldValues(this.structFields, tupleValue)\n }\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\nfunction compressBools(values: ABIValue[]): number {\n if (values.length > 8) {\n throw new Error(`Expected no more than 8 bool values, received ${values.length}`)\n }\n\n let result = 0\n for (let i = 0; i < values.length; i++) {\n if (typeof values[i] !== 'boolean') {\n throw new Error('Expected all values to be boolean')\n }\n if (values[i]) {\n result |= 1 << (7 - i)\n }\n }\n\n return result\n}\n\nfunction findBoolSequenceEnd(abiTypes: ABIType[], currentIndex: number): number {\n let cursor = currentIndex\n while (cursor < abiTypes.length) {\n if (abiTypes[cursor] instanceof ABIBoolType) {\n if (cursor - currentIndex + 1 === 8 || cursor === abiTypes.length - 1) {\n return cursor\n }\n cursor++\n } else {\n return cursor - 1\n }\n }\n return cursor - 1\n}\n\nfunction extractValues(abiTypes: ABIType[], bytes: Uint8Array): Uint8Array[] {\n const dynamicSegments: Segment[] = []\n const valuePartitions: (Uint8Array | null)[] = []\n let bytesCursor = 0\n let abiTypesCursor = 0\n\n while (abiTypesCursor < abiTypes.length) {\n const childType = abiTypes[abiTypesCursor]\n\n if (childType.isDynamic()) {\n if (bytes.length - bytesCursor < LENGTH_ENCODE_BYTE_SIZE) {\n throw new Error('Byte array is too short to be decoded')\n }\n\n const dynamicIndex = (bytes[bytesCursor] << 8) | bytes[bytesCursor + 1]\n\n if (dynamicSegments.length > 0) {\n const lastSegment = dynamicSegments[dynamicSegments.length - 1]\n if (dynamicIndex < lastSegment.left) {\n throw new Error('Dynamic index segment miscalculation: left is greater than right index')\n }\n lastSegment.right = dynamicIndex\n }\n\n dynamicSegments.push({ left: dynamicIndex, right: 0 })\n valuePartitions.push(null)\n bytesCursor += LENGTH_ENCODE_BYTE_SIZE\n } else {\n if (childType instanceof ABIBoolType) {\n const boolSequenceEndIndex = findBoolSequenceEnd(abiTypes, abiTypesCursor)\n for (let j = 0; j <= boolSequenceEndIndex - abiTypesCursor; j++) {\n const boolMask = BOOL_TRUE_BYTE >> j\n if ((bytes[bytesCursor] & boolMask) > 0) {\n valuePartitions.push(new Uint8Array([BOOL_TRUE_BYTE]))\n } else {\n valuePartitions.push(new Uint8Array([BOOL_FALSE_BYTE]))\n }\n }\n abiTypesCursor = boolSequenceEndIndex\n bytesCursor += 1\n } else {\n const childTypeSize = childType.byteLen()\n if (bytesCursor + childTypeSize > bytes.length) {\n throw new Error(\n `Index out of bounds, trying to access bytes[${bytesCursor}..${bytesCursor + childTypeSize}] but slice has length ${bytes.length}`,\n )\n }\n valuePartitions.push(bytes.slice(bytesCursor, bytesCursor + childTypeSize))\n bytesCursor += childTypeSize\n }\n }\n\n if (abiTypesCursor !== abiTypes.length - 1 && bytesCursor >= bytes.length) {\n throw new Error('Input bytes not enough to decode')\n }\n abiTypesCursor += 1\n }\n\n if (dynamicSegments.length > 0) {\n const lastSegment = dynamicSegments[dynamicSegments.length - 1]\n lastSegment.right = bytes.length\n } else if (bytesCursor < bytes.length) {\n throw new Error('Input bytes not fully consumed')\n }\n\n for (let i = 0; i < dynamicSegments.length; i++) {\n const segment = dynamicSegments[i]\n if (segment.left > segment.right) {\n throw new Error('Dynamic segment should display a [l, r] space with l <= r')\n }\n if (i !== dynamicSegments.length - 1 && segment.right !== dynamicSegments[i + 1].left) {\n throw new Error('Dynamic segments should be consecutive')\n }\n }\n\n let segmentIndex = 0\n for (let i = 0; i < abiTypes.length; i++) {\n const childType = abiTypes[i]\n if (childType.isDynamic()) {\n valuePartitions[i] = bytes.slice(dynamicSegments[segmentIndex].left, dynamicSegments[segmentIndex].right)\n segmentIndex += 1\n }\n }\n\n const result: Uint8Array[] = []\n for (let i = 0; i < valuePartitions.length; i++) {\n const partition = valuePartitions[i]\n if (partition === null) {\n throw new Error(`Value partition at index ${i} is None`)\n }\n result.push(partition)\n }\n\n return result\n}\n\nexport function parseTupleContent(content: string): string[] {\n if (content === '') {\n return []\n }\n\n if (content.startsWith(',')) {\n throw new Error('The content should not start with comma')\n }\n if (content.endsWith(',')) {\n throw new Error('The content should not end with comma')\n }\n if (content.includes(',,')) {\n throw new Error('The content should not have consecutive commas')\n }\n\n const tupleStrings: string[] = []\n let depth = 0\n let word = ''\n\n for (const ch of content) {\n word += ch\n if (ch === '(') {\n depth += 1\n } else if (ch === ')') {\n depth -= 1\n } else if (ch === ',' && depth === 0) {\n word = word.slice(0, -1) // Remove the comma\n tupleStrings.push(word)\n word = ''\n }\n }\n\n if (word !== '') {\n tupleStrings.push(word)\n }\n\n if (depth !== 0) {\n throw new Error('The content has mismatched parentheses')\n }\n\n return tupleStrings\n}\n"],"mappings":";;;;;;AAYA,MAAM,qBAAqB;AAC3B,MAAM,eAAe;AACrB,MAAM,UAAU,KAAK,KAAK;;;;;;AAsB1B,IAAsB,UAAtB,MAAsB,QAAQ;;;;;CAW5B,IAAI,cAAsB;AACxB,SAAO,KAAK;;;;;;CAOd,WAAmB;AACjB,SAAO,KAAK;;;;;;;CA0Cd,OAAO,KAAK,KAAsB;AAChC,MAAI,IAAI,SAAS,KAAK,CAEpB,QAAO,IAAI,oBADO,QAAQ,KAAK,IAAI,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC,CACnB;AAE3C,MAAI,IAAI,SAAS,IAAI,EAAE;GACrB,MAAM,gBAAgB,IAAI,MAAM,mBAAmB;AACnD,OAAI,CAAC,iBAAiB,cAAc,WAAW,EAC7C,OAAM,IAAI,MAAM,kCAAkC,MAAM;GAE1D,MAAM,iBAAiB,cAAc;GACrC,MAAM,cAAc,SAAS,gBAAgB,GAAG;AAChD,OAAI,cAAc,QAChB,OAAM,IAAI,MAAM,8BAA8B,UAAU;AAG1D,UAAO,IAAI,mBADO,QAAQ,KAAK,cAAc,GAAG,EACP,YAAY;;AAEvD,MAAI,IAAI,WAAW,OAAO,EAAE;GAC1B,MAAM,cAAc,MAAc,CAAC,GAAG,EAAE,CAAC,OAAO,MAAM,aAAa,SAAS,EAAE,CAAC;GAC/E,MAAM,cAAc,IAAI,MAAM,GAAG,IAAI,OAAO;AAC5C,OAAI,CAAC,WAAW,YAAY,CAC1B,OAAM,IAAI,MAAM,0BAA0B,cAAc;GAE1D,MAAM,UAAU,SAAS,aAAa,GAAG;AACzC,OAAI,UAAU,QACZ,OAAM,IAAI,MAAM,0BAA0B,UAAU;AAEtD,UAAO,IAAI,YAAY,QAAQ;;AAEjC,MAAI,QAAQ,OACV,QAAO,IAAI,aAAa;AAE1B,MAAI,IAAI,WAAW,SAAS,EAAE;GAC5B,MAAM,gBAAgB,IAAI,MAAM,aAAa;AAC7C,OAAI,CAAC,iBAAiB,cAAc,WAAW,EAC7C,OAAM,IAAI,MAAM,0BAA0B,MAAM;AAIlD,UAAO,IAAI,cAFK,SAAS,cAAc,IAAI,GAAG,EAC5B,SAAS,cAAc,IAAI,GAAG,CACJ;;AAE9C,MAAI,QAAQ,OACV,QAAO,IAAI,aAAa;AAE1B,MAAI,QAAQ,UACV,QAAO,IAAI,gBAAgB;AAE7B,MAAI,QAAQ,SACV,QAAO,IAAI,eAAe;AAE5B,MAAI,IAAI,UAAU,KAAK,IAAI,OAAO,OAAO,IAAI,IAAI,SAAS,OAAO,KAAK;GACpE,MAAM,eAAe,kBAAkB,IAAI,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;GACpE,MAAMA,aAAwB,EAAE;AAChC,QAAK,IAAI,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;IAC5C,MAAM,KAAK,QAAQ,KAAK,aAAa,GAAG;AACxC,eAAW,KAAK,GAAG;;AAErB,UAAO,IAAI,aAAa,WAAW;;AAErC,QAAM,IAAI,MAAM,2BAA2B,IAAI,iBAAiB;;;;;;AAWpE,IAAa,cAAb,MAAa,oBAAoB,QAAQ;;;;;CAKvC,YAAY,AAAgBC,SAAiB;AAC3C,SAAO;EADmB;AAE1B,MAAI,UAAU,MAAM,KAAK,UAAU,KAAK,UAAU,IAChD,OAAM,IAAI,MAAM,kCAAkC,UAAU;;CAIhE,IAAI,OAAe;AACjB,SAAO,OAAO,KAAK;;CAGrB,OAAO,OAAyB;AAC9B,SAAO,iBAAiB,eAAe,KAAK,YAAY,MAAM;;CAGhE,YAAqB;AACnB,SAAO;;CAGT,UAAkB;AAChB,SAAO,KAAK,UAAU;;CAGxB,OAAO,OAA6B;AAClC,MAAI,OAAO,UAAU,YAAY,OAAO,UAAU,SAChD,OAAM,IAAI,MAAM,0BAA0B,KAAK,KAAK,IAAI,QAAQ;AAGlE,MAAI,SAAS,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,OAAO,EAAE,CACzD,OAAM,IAAI,MAAM,GAAG,MAAM,uDAAuD,KAAK,OAAO;AAE9F,MAAI,OAAO,UAAU,YAAY,CAAC,OAAO,cAAc,MAAM,CAC3D,OAAM,IAAI,MAAM,GAAG,MAAM,yDAAyD;AAEpF,SAAO,cAAc,OAAO,KAAK,UAAU,EAAE;;CAG/C,OAAO,OAA6B;AAClC,MAAI,MAAM,WAAW,KAAK,UAAU,EAClC,OAAM,IAAI,MAAM,oCAAoC,KAAK,OAAO;EAElE,MAAM,QAAQ,cAAc,MAAM;AAClC,SAAO,KAAK,UAAU,KAAK,OAAO,MAAM,GAAG;;;;;;AAO/C,IAAa,gBAAb,MAAa,sBAAsB,QAAQ;;;;;;CAMzC,YACE,AAAgBA,SAChB,AAAgBC,WAChB;AACA,SAAO;EAHS;EACA;AAGhB,MAAI,UAAU,MAAM,KAAK,UAAU,KAAK,UAAU,IAChD,OAAM,IAAI,MAAM,oCAAoC,UAAU;AAEhE,MAAI,YAAY,OAAO,YAAY,EACjC,OAAM,IAAI,MAAM,sCAAsC,YAAY;;CAItE,IAAI,OAAe;AACjB,SAAO,SAAS,KAAK,QAAQ,GAAG,KAAK;;CAGvC,OAAO,OAAyB;AAC9B,SAAO,iBAAiB,iBAAiB,KAAK,YAAY,MAAM,WAAW,KAAK,cAAc,MAAM;;CAGtG,YAAqB;AACnB,SAAO;;CAGT,UAAkB;AAChB,SAAO,KAAK,UAAU;;CAGxB,OAAO,OAA6B;AAClC,MAAI,OAAO,UAAU,YAAY,OAAO,UAAU,SAChD,OAAM,IAAI,MAAM,0BAA0B,KAAK,KAAK,IAAI,QAAQ;AAElE,MAAI,SAAS,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,OAAO,EAAE,CACzD,OAAM,IAAI,MAAM,GAAG,MAAM,uDAAuD,KAAK,OAAO;AAE9F,MAAI,OAAO,UAAU,YAAY,CAAC,OAAO,cAAc,MAAM,CAC3D,OAAM,IAAI,MAAM,GAAG,MAAM,yDAAyD;AAEpF,SAAO,cAAc,OAAO,KAAK,UAAU,EAAE;;CAG/C,OAAO,OAA6B;AAClC,MAAI,MAAM,WAAW,KAAK,UAAU,EAClC,OAAM,IAAI,MAAM,oCAAoC,KAAK,OAAO;EAElE,MAAM,QAAQ,cAAc,MAAM;AAClC,SAAO,KAAK,UAAU,KAAK,OAAO,MAAM,GAAG;;;;;;AAO/C,IAAa,iBAAb,MAAa,uBAAuB,QAAQ;CAC1C,IAAI,OAAe;AACjB,SAAO;;CAGT,OAAO,OAAyB;AAC9B,SAAO,iBAAiB;;CAG1B,YAAqB;AACnB,SAAO;;CAGT,UAAkB;AAChB,SAAO;;CAGT,OAAO,OAA6B;AAClC,MAAI,OAAO,UAAU,SACnB,QAAO,QAAQ,WAAW,MAAM,CAAC;AAGnC,MAAI,iBAAiB,QACnB,QAAO,MAAM;AAGf,MAAI,iBAAiB,cAAc,MAAM,WAAW,GAClD,QAAO;AAGT,QAAM,IAAI,MAAM,mCAAmC,QAAQ;;CAG7D,OAAO,OAA2B;AAChC,SAAO,IAAI,QAAQ,MAAM,CAAC,UAAU;;;;;;AAOxC,IAAa,cAAb,MAAa,oBAAoB,QAAQ;CACvC,IAAI,OAAe;AACjB,SAAO;;CAGT,OAAO,OAAyB;AAC9B,SAAO,iBAAiB;;CAG1B,YAAqB;AACnB,SAAO;;CAGT,UAAkB;AAChB,SAAO;;CAGT,OAAO,OAA6B;AAClC,MAAI,OAAO,UAAU,UACnB,OAAM,IAAI,MAAM,gCAAgC,QAAQ;AAG1D,SAAO,QAAQ,IAAI,WAAW,CAAC,IAAK,CAAC,GAAG,IAAI,WAAW,CAAC,EAAK,CAAC;;CAGhE,OAAO,OAA6B;AAClC,MAAI,MAAM,WAAW,EACnB,OAAM,IAAI,MAAM,iCAAiC,MAAM,SAAS;AAGlE,UAAQ,MAAM,KAAK,SAAU;;;;;;AAOjC,IAAa,cAAb,MAAa,oBAAoB,QAAQ;CACvC,IAAI,OAAe;AACjB,SAAO;;CAGT,OAAO,OAAyB;AAC9B,SAAO,iBAAiB;;CAG1B,YAAqB;AACnB,SAAO;;CAGT,UAAkB;AAChB,SAAO;;CAGT,OAAO,OAA6B;AAClC,MAAI,OAAO,UAAU,YAAY,OAAO,UAAU,SAChD,OAAM,IAAI,MAAM,gCAAgC,QAAQ;EAE1D,MAAM,cAAc,OAAO,UAAU,WAAW,OAAO,MAAM,GAAG;AAChE,MAAI,QAAQ,KAAK,QAAQ,IACvB,OAAM,IAAI,MAAM,6CAA6C,cAAc;AAG7E,SAAO,IAAI,WAAW,CAAC,YAAY,CAAC;;CAGtC,OAAO,OAA6B;AAClC,MAAI,MAAM,WAAW,EACnB,OAAM,IAAI,MAAM,sCAAsC,MAAM,SAAS;AAGvE,SAAO,MAAM;;;;;;AAOjB,IAAa,gBAAb,MAAa,sBAAsB,QAAQ;CACzC,IAAI,OAAe;AACjB,SAAO;;CAGT,OAAO,OAAyB;AAC9B,SAAO,iBAAiB;;CAG1B,YAAqB;AACnB,SAAO;;CAGT,UAAkB;AAChB,QAAM,IAAI,MAAM,+CAA+C;;CAGjE,OAAO,OAA6B;AAClC,MAAI,OAAO,UAAU,YAAY,EAAE,iBAAiB,YAClD,OAAM,IAAI,MAAM,kCAAkC,QAAQ;EAG5D,IAAIC;AACJ,MAAI,OAAO,UAAU,SACnB,gBAAe,IAAI,aAAa,CAAC,OAAO,MAAM;MAE9C,gBAAe;EAEjB,MAAM,gBAAgB,cAAc,aAAa,QAAQ,wBAAwB;EACjF,MAAM,cAAc,IAAI,WAAW,aAAa,SAAS,wBAAwB;AACjF,cAAY,IAAI,cAAc;AAC9B,cAAY,IAAI,cAAc,wBAAwB;AACtD,SAAO;;CAGT,OAAO,OAA6B;AAClC,MAAI,MAAM,SAAS,wBACjB,OAAM,IAAI,MACR,4DAA4D,MAAM,OAAO,0BAA0B,0BACpG;EAGH,MAAM,aADO,IAAI,SAAS,MAAM,QAAQ,MAAM,YAAY,wBAAwB,CAC1D,UAAU,EAAE;EACpC,MAAM,YAAY,MAAM,MAAM,yBAAyB,MAAM,OAAO;AACpE,MAAI,eAAe,UAAU,OAC3B,OAAM,IAAI,MAAM,0EAA0E,WAAW,QAAQ,UAAU,SAAS;AAElI,SAAO,IAAI,YAAY,QAAQ,CAAC,OAAO,UAAU;;;;;;AAWrD,IAAa,eAAb,MAAa,qBAAqB,QAAQ;;;;;CAKxC,YAAY,AAAgBH,YAAuB;AACjD,SAAO;EADmB;AAE1B,MAAI,WAAW,SAAS,QACtB,OAAM,IAAI,MAAM,mCAAmC,WAAW,SAAS;;CAI3E,IAAI,OAAe;EACjB,MAAMI,cAAwB,EAAE;AAChC,OAAK,IAAI,IAAI,GAAG,IAAI,KAAK,WAAW,QAAQ,IAC1C,aAAY,KAAK,KAAK,WAAW,GAAG;AAEtC,SAAO,IAAI,YAAY,KAAK,IAAI,CAAC;;CAGnC,OAAO,OAAyB;AAC9B,MAAI,EAAE,iBAAiB,cAAe,QAAO;AAC7C,MAAI,KAAK,WAAW,WAAW,MAAM,WAAW,OAAQ,QAAO;AAC/D,SAAO,KAAK,WAAW,OAAO,GAAG,MAAM,EAAE,OAAO,MAAM,WAAW,GAAG,CAAC;;CAGvE,YAAqB;AACnB,SAAO,KAAK,WAAW,MAAM,MAAM,EAAE,WAAW,CAAC;;CAGnD,UAAkB;EAChB,IAAI,OAAO;EACX,IAAI,IAAI;AACR,SAAO,IAAI,KAAK,WAAW,QAAQ;GACjC,MAAM,YAAY,KAAK,WAAW;AAClC,OAAI,qBAAqB,aAAa;IACpC,MAAM,mBAAmB,oBAAoB,KAAK,YAAY,EAAE;IAChE,MAAM,YAAY,mBAAmB,IAAI;AACzC,YAAQ,KAAK,KAAK,YAAY,EAAE;AAChC,QAAI,mBAAmB;UAClB;AACL,YAAQ,UAAU,SAAS;AAC3B;;;AAGJ,SAAO;;CAGT,OAAO,OAA6B;AAClC,MAAI,CAAC,MAAM,QAAQ,MAAM,IAAI,EAAE,iBAAiB,YAC9C,OAAM,IAAI,MAAM,0BAA0B,KAAK,UAAU,CAAC,IAAI,QAAQ;EAGxE,MAAM,SAAS,MAAM,KAAK,MAAM;AAEhC,MAAI,KAAK,WAAW,WAAW,OAAO,OACpC,OAAM,IAAI,MAAM,gDAAgD;EAGlE,MAAMC,QAAsB,EAAE;EAC9B,MAAMC,QAAsB,EAAE;EAC9B,MAAM,iCAAiB,IAAI,KAAsB;EACjD,IAAI,iBAAiB;AAErB,SAAO,iBAAiB,KAAK,WAAW,QAAQ;GAC9C,MAAM,YAAY,KAAK,WAAW;AAElC,OAAI,UAAU,WAAW,EAAE;AACzB,mBAAe,IAAI,MAAM,QAAQ,KAAK;AACtC,UAAM,KAAK,IAAI,WAAW,EAAE,CAAC;AAC7B,UAAM,KAAK,UAAU,OAAO,OAAO,gBAAgB,CAAC;UAC/C;AACL,QAAI,qBAAqB,aAAa;KACpC,MAAM,uBAAuB,oBAAoB,KAAK,YAAY,eAAe;KAEjF,MAAM,iBAAiB,cADJ,OAAO,MAAM,gBAAgB,uBAAuB,EAAE,CACzB;AAChD,WAAM,KAAK,IAAI,WAAW,CAAC,eAAe,CAAC,CAAC;AAC5C,sBAAiB;UAEjB,OAAM,KAAK,UAAU,OAAO,OAAO,gBAAgB,CAAC;AAEtD,mBAAe,IAAI,gBAAgB,MAAM;AACzC,UAAM,KAAK,IAAI,WAAW,EAAE,CAAC;;AAE/B,qBAAkB;;EAGpB,MAAM,aAAa,MAAM,QAAQ,KAAK,SAAS,MAAM,KAAK,QAAQ,EAAE;EACpE,IAAI,aAAa;AAEjB,OAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,OAAI,eAAe,IAAI,EAAE,EAAE;IACzB,MAAM,YAAY,aAAa;AAC/B,QAAI,YAAY,MACd,OAAM,IAAI,MAAM,SAAS,UAAU,oBAAoB;AAEzD,UAAM,KAAK,IAAI,WAAW,CAAE,aAAa,IAAK,KAAM,YAAY,IAAK,CAAC;;AAExE,iBAAc,MAAM,GAAG;;EAGzB,MAAM,cAAc,MAAM,QAAQ,KAAK,SAAS,MAAM,KAAK,QAAQ,EAAE,GAAG,MAAM,QAAQ,KAAK,SAAS,MAAM,KAAK,QAAQ,EAAE;EACzH,MAAM,SAAS,IAAI,WAAW,YAAY;EAC1C,IAAI,SAAS;AAEb,OAAK,MAAM,QAAQ,OAAO;AACxB,UAAO,IAAI,MAAM,OAAO;AACxB,aAAU,KAAK;;AAGjB,OAAK,MAAM,QAAQ,OAAO;AACxB,UAAO,IAAI,MAAM,OAAO;AACxB,aAAU,KAAK;;AAGjB,SAAO;;CAGT,OAAO,OAA+B;EACpC,MAAM,kBAAkB,cAAc,KAAK,YAAY,MAAM;EAC7D,MAAMC,SAAqB,EAAE;AAE7B,OAAK,IAAI,IAAI,GAAG,IAAI,KAAK,WAAW,QAAQ,KAAK;GAC/C,MAAM,YAAY,KAAK,WAAW;GAClC,MAAM,iBAAiB,gBAAgB;GACvC,MAAM,aAAa,UAAU,OAAO,eAAe;AACnD,UAAO,KAAK,WAAW;;AAGzB,SAAO;;;;;;AAOX,IAAa,qBAAb,MAAa,2BAA2B,QAAQ;;;;;;CAM9C,YACE,AAAgBC,WAChB,AAAgBC,QAChB;AACA,SAAO;EAHS;EACA;AAGhB,MAAI,SAAS,KAAK,SAAS,QACzB,OAAM,IAAI,MAAM,gCAAgC,SAAS;;CAI7D,IAAI,OAAe;AACjB,SAAO,GAAG,KAAK,UAAU,KAAK,GAAG,KAAK,OAAO;;CAG/C,OAAO,OAAyB;AAC9B,SAAO,iBAAiB,sBAAsB,KAAK,UAAU,OAAO,MAAM,UAAU,IAAI,KAAK,WAAW,MAAM;;CAGhH,YAAqB;AACnB,SAAO,KAAK,UAAU,WAAW;;CAGnC,UAAkB;AAChB,MAAI,KAAK,qBAAqB,YAC5B,QAAO,KAAK,KAAK,KAAK,SAAS,EAAE;AAEnC,SAAO,KAAK,UAAU,SAAS,GAAG,KAAK;;;;;;CAOzC,iBAA+B;AAC7B,SAAO,IAAI,aAAa,MAAM,KAAK,OAAO,CAAC,KAAK,KAAK,UAAU,CAAC;;CAGlE,OAAO,OAA6B;AAClC,MAAI,CAAC,MAAM,QAAQ,MAAM,IAAI,EAAE,iBAAiB,YAC9C,OAAM,IAAI,MAAM,0BAA0B,KAAK,KAAK,IAAI,QAAQ;AAElE,MAAI,MAAM,WAAW,KAAK,OACxB,OAAM,IAAI,MAAM,4DAA4D,KAAK,OAAO,QAAQ,MAAM,SAAS;AAGjH,SADuB,KAAK,gBAAgB,CACtB,OAAO,MAAM;;CAGrC,OAAO,OAA4C;EAEjD,MAAM,UADiB,KAAK,gBAAgB,CACb,OAAO,MAAM;AAG5C,MAAI,KAAK,qBAAqB,eAAe,MAAM,QAAQ,QAAQ,CACjE,QAAO,IAAI,WAAW,QAAoB;AAG5C,SAAO;;;;;;AAOX,IAAa,sBAAb,MAAa,4BAA4B,QAAQ;;;;;CAK/C,YAAY,AAAgBD,WAAoB;AAC9C,SAAO;EADmB;;CAI5B,IAAI,OAAe;AACjB,SAAO,GAAG,KAAK,UAAU,KAAK;;CAGhC,OAAO,OAAyB;AAC9B,SAAO,iBAAiB,uBAAuB,KAAK,UAAU,OAAO,MAAM,UAAU;;CAGvF,YAAqB;AACnB,SAAO;;CAGT,UAAkB;AAChB,QAAM,IAAI,MAAM,sDAAsD;;;;;;;CAQxE,eAAe,QAA8B;AAC3C,SAAO,IAAI,aAAa,MAAM,OAAO,CAAC,KAAK,KAAK,UAAU,CAAC;;CAG7D,OAAO,OAA6B;AAClC,MAAI,CAAC,MAAM,QAAQ,MAAM,IAAI,EAAE,iBAAiB,YAC9C,OAAM,IAAI,MAAM,0BAA0B,KAAK,KAAK,IAAI,QAAQ;EAElE,MAAM,iBAAiB,KAAK,eAAe,MAAM,OAAO;EACxD,MAAM,eAAe,eAAe,OAAO,MAAM;AAEjD,SAAO,aADe,cAAc,eAAe,WAAW,QAAQ,wBAAwB,EAC3D,aAAa;;CAGlD,OAAO,OAA4C;EAEjD,MAAM,aADO,IAAI,SAAS,MAAM,QAAQ,GAAG,wBAAwB,CAC3C,UAAU,EAAE;EAEpC,MAAM,UADiB,KAAK,eAAe,WAAW,CACvB,OAAO,MAAM,MAAM,yBAAyB,MAAM,OAAO,CAAC;AAGzF,MAAI,KAAK,qBAAqB,eAAe,MAAM,QAAQ,QAAQ,CACjE,QAAO,IAAI,WAAW,QAAoB;AAG5C,SAAO;;;;;;AAOX,IAAa,gBAAb,MAAa,sBAAsB,QAAQ;;;;;;CAMzC,YACE,AAAgBE,YAChB,AAAgBC,cAChB;AACA,SAAO;EAHS;EACA;;CAKlB,IAAI,OAAe;AAEjB,SADkB,KAAK,gBAAgB,CACtB;;CAGnB,IAAI,cAAsB;AACxB,SAAO,KAAK;;CAGd,OAAO,OAAyB;AAC9B,MAAI,EAAE,iBAAiB,eAAgB,QAAO;AAC9C,MAAI,KAAK,eAAe,MAAM,WAAY,QAAO;AACjD,MAAI,KAAK,aAAa,WAAW,MAAM,aAAa,OAAQ,QAAO;AACnE,SAAO,KAAK,aAAa,OAAO,GAAG,MAAM;GACvC,MAAM,aAAa,MAAM,aAAa;AACtC,OAAI,EAAE,SAAS,WAAW,KAAM,QAAO;AACvC,OAAI,MAAM,QAAQ,EAAE,KAAK,IAAI,MAAM,QAAQ,WAAW,KAAK,CACzD,QAAO,KAAK,UAAU,EAAE,KAAK,KAAK,KAAK,UAAU,WAAW,KAAK;AAEnE,OAAI,EAAE,gBAAgB,WAAW,WAAW,gBAAgB,QAC1D,QAAO,EAAE,KAAK,OAAO,WAAW,KAAK;AAEvC,UAAO;IACP;;CAGJ,YAAqB;AAEnB,SADkB,KAAK,gBAAgB,CACtB,WAAW;;CAG9B,UAAkB;AAEhB,SADkB,KAAK,gBAAgB,CACtB,SAAS;;;;;;CAO5B,iBAA+B;EAC7B,MAAM,sCAAsC,WAA2C;AAQrF,UAAO,IAAI,aAPQ,OAAO,KAAK,UAC7B,MAAM,QAAQ,MAAM,KAAK,GACrB,mCAAmC,MAAM,KAAK,GAC9C,MAAM,gBAAgB,gBACpB,MAAM,KAAK,gBAAgB,GAC3B,MAAM,KACb,CACkC;;AAGrC,SAAO,mCAAmC,KAAK,aAAa;;;;;;;;CAS9D,OAAO,WAAW,YAAoB,SAAuD;EAC3F,MAAM,sBAAsB,oBAAwE;AAElG,OAAI,MAAM,QAAQ,gBAAgB,CAChC,QAAO,gBAAgB,KAAK,iBAAiB;IAC3C,MAAM,YAAY;IAClB,MAAM,mBAAmB,YAAY,KAAK;IAC3C,EAAE;AAIL,OAAI,QAAQ,iBACV,QAAO,cAAc,WAAW,iBAAiB,QAAQ;AAI3D,UAAO,QAAQ,KAAK,gBAAgB;;AAGtC,MAAI,CAAC,QAAQ,YAAa,OAAM,IAAI,MAAM,mBAAmB;EAE7D,MAAM,SAAS,QAAQ;AACvB,SAAO,IAAI,cACT,YACA,OAAO,KAAK,OAAO;GACjB,MAAM,EAAE;GACR,MAAM,mBAAmB,EAAE,KAAK;GACjC,EAAE,CACJ;;CAGH,OAAO,OAA6B;AAClC,MAAI,OAAO,UAAU,YAAY,MAAM,QAAQ,MAAM,IAAI,iBAAiB,cAAc,iBAAiB,QACvG,OAAM,IAAI,MAAM,0BAA0B,KAAK,KAAK,IAAI,QAAQ;EAGlE,MAAM,YAAY,KAAK,gBAAgB;EACvC,MAAM,aAAa,KAAK,6BAA6B,MAAM;AAC3D,SAAO,UAAU,OAAO,WAAW;;CAGrC,OAAO,OAAmC;EAExC,MAAM,aADY,KAAK,gBAAgB,CACV,OAAO,MAAM;AAC1C,SAAO,KAAK,6BAA6B,WAAW;;CAGtD,AAAQ,6BAA6B,aAAyC;EAC5E,MAAM,iCAAiC,cAAgC,WAAmC;AACxG,UAAO,aAAa,KAAK,EAAE,QAAQ,UAAU;AAE3C,QAAI,MAAM,QAAQ,KAAK,EAAE;KACvB,MAAM,QAAQ,OAAO;AACrB,YAAO,8BAA8B,MAAM,OAAO,OAAO,MAAM,CAAC;;AAGlE,QAAI,gBAAgB,eAAe;KACjC,MAAM,QAAQ,OAAO;AACrB,YAAO,8BAA8B,KAAK,cAAc,OAAO,OAAO,MAAM,CAAC;;AAE/E,WAAO,OAAO;KACd;;AAGJ,SAAO,8BAA8B,KAAK,cAAc,OAAO,OAAO,YAAY,CAAC;;CAGrF,AAAQ,6BAA6B,YAAwC;EAC3E,MAAM,wBAAwB,cAAgC,WAAuC;AACnG,UAAO,OAAO,YACZ,aAAa,KAAK,EAAE,MAAM,QAAQ,UAAU;AAE1C,QAAI,MAAM,QAAQ,KAAK,EAAE;KACvB,MAAM,QAAQ,OAAO;AACrB,YAAO,CAAC,MAAM,qBAAqB,MAAM,MAAM,CAAC;;AAGlD,QAAI,gBAAgB,eAAe;KACjC,MAAM,QAAQ,OAAO;AACrB,YAAO,CAAC,MAAM,qBAAqB,KAAK,cAAc,MAAM,CAAC;;AAE/D,WAAO,CAAC,MAAM,OAAO,OAAO;KAC5B,CACH;;AAGH,SAAO,qBAAqB,KAAK,cAAc,WAAW;;;AAQ9D,SAAS,cAAc,QAA4B;AACjD,KAAI,OAAO,SAAS,EAClB,OAAM,IAAI,MAAM,iDAAiD,OAAO,SAAS;CAGnF,IAAI,SAAS;AACb,MAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,MAAI,OAAO,OAAO,OAAO,UACvB,OAAM,IAAI,MAAM,oCAAoC;AAEtD,MAAI,OAAO,GACT,WAAU,KAAM,IAAI;;AAIxB,QAAO;;AAGT,SAAS,oBAAoB,UAAqB,cAA8B;CAC9E,IAAI,SAAS;AACb,QAAO,SAAS,SAAS,OACvB,KAAI,SAAS,mBAAmB,aAAa;AAC3C,MAAI,SAAS,eAAe,MAAM,KAAK,WAAW,SAAS,SAAS,EAClE,QAAO;AAET;OAEA,QAAO,SAAS;AAGpB,QAAO,SAAS;;AAGlB,SAAS,cAAc,UAAqB,OAAiC;CAC3E,MAAMC,kBAA6B,EAAE;CACrC,MAAMC,kBAAyC,EAAE;CACjD,IAAI,cAAc;CAClB,IAAI,iBAAiB;AAErB,QAAO,iBAAiB,SAAS,QAAQ;EACvC,MAAM,YAAY,SAAS;AAE3B,MAAI,UAAU,WAAW,EAAE;AACzB,OAAI,MAAM,SAAS,cAAc,wBAC/B,OAAM,IAAI,MAAM,wCAAwC;GAG1D,MAAM,eAAgB,MAAM,gBAAgB,IAAK,MAAM,cAAc;AAErE,OAAI,gBAAgB,SAAS,GAAG;IAC9B,MAAM,cAAc,gBAAgB,gBAAgB,SAAS;AAC7D,QAAI,eAAe,YAAY,KAC7B,OAAM,IAAI,MAAM,yEAAyE;AAE3F,gBAAY,QAAQ;;AAGtB,mBAAgB,KAAK;IAAE,MAAM;IAAc,OAAO;IAAG,CAAC;AACtD,mBAAgB,KAAK,KAAK;AAC1B,kBAAe;aAEX,qBAAqB,aAAa;GACpC,MAAM,uBAAuB,oBAAoB,UAAU,eAAe;AAC1E,QAAK,IAAI,IAAI,GAAG,KAAK,uBAAuB,gBAAgB,KAAK;IAC/D,MAAM,WAAW,kBAAkB;AACnC,SAAK,MAAM,eAAe,YAAY,EACpC,iBAAgB,KAAK,IAAI,WAAW,CAAC,eAAe,CAAC,CAAC;QAEtD,iBAAgB,KAAK,IAAI,WAAW,CAAC,gBAAgB,CAAC,CAAC;;AAG3D,oBAAiB;AACjB,kBAAe;SACV;GACL,MAAM,gBAAgB,UAAU,SAAS;AACzC,OAAI,cAAc,gBAAgB,MAAM,OACtC,OAAM,IAAI,MACR,+CAA+C,YAAY,IAAI,cAAc,cAAc,yBAAyB,MAAM,SAC3H;AAEH,mBAAgB,KAAK,MAAM,MAAM,aAAa,cAAc,cAAc,CAAC;AAC3E,kBAAe;;AAInB,MAAI,mBAAmB,SAAS,SAAS,KAAK,eAAe,MAAM,OACjE,OAAM,IAAI,MAAM,mCAAmC;AAErD,oBAAkB;;AAGpB,KAAI,gBAAgB,SAAS,GAAG;EAC9B,MAAM,cAAc,gBAAgB,gBAAgB,SAAS;AAC7D,cAAY,QAAQ,MAAM;YACjB,cAAc,MAAM,OAC7B,OAAM,IAAI,MAAM,iCAAiC;AAGnD,MAAK,IAAI,IAAI,GAAG,IAAI,gBAAgB,QAAQ,KAAK;EAC/C,MAAM,UAAU,gBAAgB;AAChC,MAAI,QAAQ,OAAO,QAAQ,MACzB,OAAM,IAAI,MAAM,4DAA4D;AAE9E,MAAI,MAAM,gBAAgB,SAAS,KAAK,QAAQ,UAAU,gBAAgB,IAAI,GAAG,KAC/E,OAAM,IAAI,MAAM,yCAAyC;;CAI7D,IAAI,eAAe;AACnB,MAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,IAEnC,KADkB,SAAS,GACb,WAAW,EAAE;AACzB,kBAAgB,KAAK,MAAM,MAAM,gBAAgB,cAAc,MAAM,gBAAgB,cAAc,MAAM;AACzG,kBAAgB;;CAIpB,MAAMC,SAAuB,EAAE;AAC/B,MAAK,IAAI,IAAI,GAAG,IAAI,gBAAgB,QAAQ,KAAK;EAC/C,MAAM,YAAY,gBAAgB;AAClC,MAAI,cAAc,KAChB,OAAM,IAAI,MAAM,4BAA4B,EAAE,UAAU;AAE1D,SAAO,KAAK,UAAU;;AAGxB,QAAO;;AAGT,SAAgB,kBAAkB,SAA2B;AAC3D,KAAI,YAAY,GACd,QAAO,EAAE;AAGX,KAAI,QAAQ,WAAW,IAAI,CACzB,OAAM,IAAI,MAAM,0CAA0C;AAE5D,KAAI,QAAQ,SAAS,IAAI,CACvB,OAAM,IAAI,MAAM,wCAAwC;AAE1D,KAAI,QAAQ,SAAS,KAAK,CACxB,OAAM,IAAI,MAAM,iDAAiD;CAGnE,MAAMC,eAAyB,EAAE;CACjC,IAAI,QAAQ;CACZ,IAAI,OAAO;AAEX,MAAK,MAAM,MAAM,SAAS;AACxB,UAAQ;AACR,MAAI,OAAO,IACT,UAAS;WACA,OAAO,IAChB,UAAS;WACA,OAAO,OAAO,UAAU,GAAG;AACpC,UAAO,KAAK,MAAM,GAAG,GAAG;AACxB,gBAAa,KAAK,KAAK;AACvB,UAAO;;;AAIX,KAAI,SAAS,GACX,cAAa,KAAK,KAAK;AAGzB,KAAI,UAAU,EACZ,OAAM,IAAI,MAAM,yCAAyC;AAG3D,QAAO"}
1
+ {"version":3,"file":"abi-type.mjs","names":[],"sources":["../../../../packages/abi/src/abi-type.ts"],"sourcesContent":["import {\n Address,\n BOOL_FALSE_BYTE,\n BOOL_TRUE_BYTE,\n LENGTH_ENCODE_BYTE_SIZE,\n PUBLIC_KEY_BYTE_LENGTH,\n concatArrays,\n} from '@algorandfoundation/algokit-common'\nimport type { ABIStructValue, ABIValue } from './abi-value'\nimport { StructField } from './arc56-contract'\nimport { bigIntToBytes, bytesToBigInt } from './bigint'\nimport { getStructValueFromTupleValue, getTupleValueFromStructValue } from './utils'\n\nconst STATIC_ARRAY_REGEX = /^([a-z\\d[\\](),]+)\\[(0|[1-9][\\d]*)]$/\nconst UFIXED_REGEX = /^ufixed([1-9][\\d]*)x([1-9][\\d]*)$/\nconst MAX_LEN = 2 ** 16 - 1\n\n/**\n * Information about a single field in a struct\n */\nexport type ABIStructField = {\n /** The name of the struct field */\n name: string\n /** The type of the struct field's value */\n type: ABIType | ABIStructField[]\n}\n\ninterface Segment {\n left: number\n right: number\n}\n\n/**\n * Represents an Algorand ABI type for encoding and decoding values as defined in [ARC-0004](https://arc.algorand.foundation/ARCs/arc-0004#types).\n *\n * This is the abstract base class for all ABI types.\n */\nexport abstract class ABIType {\n /**\n * Returns the ARC-4 type name string representation.\n * @returns The ARC-4 type string\n */\n abstract get name(): string\n\n /**\n * Returns a user-friendly display name for this type.\n * @returns The display name for this type\n */\n get displayName(): string {\n return this.name\n }\n\n /**\n * Returns the ARC-4 type name string representation.\n * @returns The ARC-4 type string\n */\n toString(): string {\n return this.name\n }\n\n /**\n * Checks if this ABI type is equal to another.\n * @param other The other ABI type to compare with\n * @returns True if the types are equal, false otherwise\n */\n abstract equals(other: ABIType): boolean\n\n /**\n * Checks if this ABI type is dynamic (variable-length).\n * @returns True if the type is dynamic, false otherwise\n */\n abstract isDynamic(): boolean\n\n /**\n * Gets the byte length of the encoded type for static types.\n * @returns The number of bytes needed to encode this type\n * @throws Error if the type is dynamic\n */\n abstract byteLen(): number\n\n /**\n * Encodes a value according to this ABI type.\n * @param value The value to encode\n * @returns The encoded bytes\n */\n abstract encode(value: ABIValue): Uint8Array\n\n /**\n * Decodes bytes according to this ABI type.\n * @param bytes The bytes to decode\n * @returns The decoded value\n */\n abstract decode(bytes: Uint8Array): ABIValue\n\n /**\n * Creates an ABI type from an ARC-4 type string.\n * @param str The ARC-4 type string (e.g., \"uint256\", \"bool\", \"(uint8,address)\")\n * @returns The corresponding ABI type\n */\n static from(str: string): ABIType {\n if (str.endsWith('[]')) {\n const childType = ABIType.from(str.slice(0, str.length - 2))\n return new ABIArrayDynamicType(childType)\n }\n if (str.endsWith(']')) {\n const stringMatches = str.match(STATIC_ARRAY_REGEX)\n if (!stringMatches || stringMatches.length !== 3) {\n throw new Error(`Malformed static array string: ${str}`)\n }\n const arrayLengthStr = stringMatches[2]\n const arrayLength = parseInt(arrayLengthStr, 10)\n if (arrayLength > MAX_LEN) {\n throw new Error(`Array length exceeds limit ${MAX_LEN}`)\n }\n const childType = ABIType.from(stringMatches[1])\n return new ABIArrayStaticType(childType, arrayLength)\n }\n if (str.startsWith('uint')) {\n const digitsOnly = (s: string) => [...s].every((c) => '0123456789'.includes(c))\n const typeSizeStr = str.slice(4, str.length)\n if (!digitsOnly(typeSizeStr)) {\n throw new Error(`Malformed uint string: ${typeSizeStr}`)\n }\n const bitSize = parseInt(typeSizeStr, 10)\n if (bitSize > MAX_LEN) {\n throw new Error(`Malformed uint string: ${bitSize}`)\n }\n return new ABIUintType(bitSize)\n }\n if (str === 'byte') {\n return new ABIByteType()\n }\n if (str.startsWith('ufixed')) {\n const stringMatches = str.match(UFIXED_REGEX)\n if (!stringMatches || stringMatches.length !== 3) {\n throw new Error(`Malformed ufixed type: ${str}`)\n }\n const bitSize = parseInt(stringMatches[1], 10)\n const precision = parseInt(stringMatches[2], 10)\n return new ABIUfixedType(bitSize, precision)\n }\n if (str === 'bool') {\n return new ABIBoolType()\n }\n if (str === 'address') {\n return new ABIAddressType()\n }\n if (str === 'string') {\n return new ABIStringType()\n }\n if (str.length >= 2 && str[0] === '(' && str[str.length - 1] === ')') {\n const tupleContent = parseTupleContent(str.slice(1, str.length - 1))\n const childTypes: ABIType[] = []\n for (let i = 0; i < tupleContent.length; i++) {\n const ti = ABIType.from(tupleContent[i])\n childTypes.push(ti)\n }\n return new ABITupleType(childTypes)\n }\n throw new Error(`Cannot convert a string ${str} to an ABI type`)\n }\n}\n\n// ============================================================================\n// Primitive Types\n// ============================================================================\n\n/**\n * An unsigned integer ABI type of a specific bit size.\n */\nexport class ABIUintType extends ABIType {\n /**\n * Creates a new unsigned integer type.\n * @param bitSize The bit size (must be a multiple of 8, between 8 and 512)\n */\n constructor(public readonly bitSize: number) {\n super()\n if (bitSize % 8 !== 0 || bitSize < 8 || bitSize > 512) {\n throw new Error(`Unsupported uint type bitSize: ${bitSize}`)\n }\n }\n\n get name(): string {\n return `uint${this.bitSize}`\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIUintType && this.bitSize === other.bitSize\n }\n\n isDynamic(): boolean {\n return false\n }\n\n byteLen(): number {\n return this.bitSize / 8\n }\n\n encode(value: ABIValue): Uint8Array {\n if (typeof value !== 'bigint' && typeof value !== 'number') {\n throw new Error(`Cannot encode value as ${this.name}: ${value}`)\n }\n\n if (value >= BigInt(2 ** this.bitSize) || value < BigInt(0)) {\n throw new Error(`${value} is not a non-negative int or too big to fit in size ${this.name}`)\n }\n if (typeof value === 'number' && !Number.isSafeInteger(value)) {\n throw new Error(`${value} should be converted into a BigInt before it is encoded`)\n }\n return bigIntToBytes(value, this.bitSize / 8)\n }\n\n decode(bytes: Uint8Array): ABIValue {\n if (bytes.length !== this.bitSize / 8) {\n throw new Error(`Byte string must correspond to a ${this.name}`)\n }\n const value = bytesToBigInt(bytes)\n return this.bitSize < 53 ? Number(value) : value\n }\n}\n\n/**\n * A fixed-point number ABI type of a specific bit size and precision.\n */\nexport class ABIUfixedType extends ABIType {\n /**\n * Creates a new fixed-point type.\n * @param bitSize The bit size (must be a multiple of 8, between 8 and 512)\n * @param precision The decimal precision (must be between 1 and 160)\n */\n constructor(\n public readonly bitSize: number,\n public readonly precision: number,\n ) {\n super()\n if (bitSize % 8 !== 0 || bitSize < 8 || bitSize > 512) {\n throw new Error(`Unsupported ufixed type bitSize: ${bitSize}`)\n }\n if (precision > 160 || precision < 1) {\n throw new Error(`Unsupported ufixed type precision: ${precision}`)\n }\n }\n\n get name(): string {\n return `ufixed${this.bitSize}x${this.precision}`\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIUfixedType && this.bitSize === other.bitSize && this.precision === other.precision\n }\n\n isDynamic(): boolean {\n return false\n }\n\n byteLen(): number {\n return this.bitSize / 8\n }\n\n encode(value: ABIValue): Uint8Array {\n if (typeof value !== 'bigint' && typeof value !== 'number') {\n throw new Error(`Cannot encode value as ${this.name}: ${value}`)\n }\n if (value >= BigInt(2 ** this.bitSize) || value < BigInt(0)) {\n throw new Error(`${value} is not a non-negative int or too big to fit in size ${this.name}`)\n }\n if (typeof value === 'number' && !Number.isSafeInteger(value)) {\n throw new Error(`${value} should be converted into a BigInt before it is encoded`)\n }\n return bigIntToBytes(value, this.bitSize / 8)\n }\n\n decode(bytes: Uint8Array): ABIValue {\n if (bytes.length !== this.bitSize / 8) {\n throw new Error(`Byte string must correspond to a ${this.name}`)\n }\n const value = bytesToBigInt(bytes)\n return this.bitSize < 53 ? Number(value) : value\n }\n}\n\n/**\n * An Algorand address ABI type.\n */\nexport class ABIAddressType extends ABIType {\n get name(): string {\n return 'address'\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIAddressType\n }\n\n isDynamic(): boolean {\n return false\n }\n\n byteLen(): number {\n return PUBLIC_KEY_BYTE_LENGTH\n }\n\n encode(value: ABIValue): Uint8Array {\n if (typeof value === 'string') {\n return Address.fromString(value).publicKey\n }\n\n if (value instanceof Address) {\n return value.publicKey\n }\n\n if (value instanceof Uint8Array && value.length === 32) {\n return value\n }\n\n throw new Error(`Cannot encode value as address: ${value}`)\n }\n\n decode(bytes: Uint8Array): string {\n return new Address(bytes).toString()\n }\n}\n\n/**\n * A boolean ABI type.\n */\nexport class ABIBoolType extends ABIType {\n get name(): string {\n return 'bool'\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIBoolType\n }\n\n isDynamic(): boolean {\n return false\n }\n\n byteLen(): number {\n return 1\n }\n\n encode(value: ABIValue): Uint8Array {\n if (typeof value !== 'boolean') {\n throw new Error(`Cannot encode value as bool: ${value}`)\n }\n\n return value ? new Uint8Array([0x80]) : new Uint8Array([0x00])\n }\n\n decode(bytes: Uint8Array): ABIValue {\n if (bytes.length !== 1) {\n throw new Error(`Expected 1 byte for bool, got ${bytes.length}`)\n }\n\n return (bytes[0] & 0x80) !== 0\n }\n}\n\n/**\n * A single byte ABI type.\n */\nexport class ABIByteType extends ABIType {\n get name(): string {\n return 'byte'\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIByteType\n }\n\n isDynamic(): boolean {\n return false\n }\n\n byteLen(): number {\n return 1\n }\n\n encode(value: ABIValue): Uint8Array {\n if (typeof value !== 'number' && typeof value !== 'bigint') {\n throw new Error(`Cannot encode value as byte: ${value}`)\n }\n const numberValue = typeof value === 'bigint' ? Number(value) : value\n if (value < 0 || value > 255) {\n throw new Error(`Byte value must be between 0 and 255, got ${numberValue}`)\n }\n\n return new Uint8Array([numberValue])\n }\n\n decode(bytes: Uint8Array): ABIValue {\n if (bytes.length !== 1) {\n throw new Error(`Expected 1 byte for byte type, got ${bytes.length}`)\n }\n\n return bytes[0]\n }\n}\n\n/**\n * A dynamic-length string ABI type.\n */\nexport class ABIStringType extends ABIType {\n get name(): string {\n return 'string'\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIStringType\n }\n\n isDynamic(): boolean {\n return true\n }\n\n byteLen(): number {\n throw new Error(`Failed to get size, string is a dynamic type`)\n }\n\n encode(value: ABIValue): Uint8Array {\n if (typeof value !== 'string' && !(value instanceof Uint8Array)) {\n throw new Error(`Cannot encode value as string: ${value}`)\n }\n\n let encodedBytes: Uint8Array\n if (typeof value === 'string') {\n encodedBytes = new TextEncoder().encode(value)\n } else {\n encodedBytes = value\n }\n const encodedLength = bigIntToBytes(encodedBytes.length, LENGTH_ENCODE_BYTE_SIZE)\n const mergedBytes = new Uint8Array(encodedBytes.length + LENGTH_ENCODE_BYTE_SIZE)\n mergedBytes.set(encodedLength)\n mergedBytes.set(encodedBytes, LENGTH_ENCODE_BYTE_SIZE)\n return mergedBytes\n }\n\n decode(bytes: Uint8Array): ABIValue {\n if (bytes.length < LENGTH_ENCODE_BYTE_SIZE) {\n throw new Error(\n `Byte string is too short to be decoded. Actual length is ${bytes.length}, but expected at least ${LENGTH_ENCODE_BYTE_SIZE}`,\n )\n }\n const view = new DataView(bytes.buffer, bytes.byteOffset, LENGTH_ENCODE_BYTE_SIZE)\n const byteLength = view.getUint16(0)\n const byteValue = bytes.slice(LENGTH_ENCODE_BYTE_SIZE, bytes.length)\n if (byteLength !== byteValue.length) {\n throw new Error(`String length bytes do not match the actual length of string. Expected ${byteLength}, got ${byteValue.length}`)\n }\n return new TextDecoder('utf-8').decode(byteValue)\n }\n}\n\n// ============================================================================\n// Collection Types\n// ============================================================================\n\n/**\n * A tuple ABI type containing other ABI types.\n */\nexport class ABITupleType extends ABIType {\n /**\n * Creates a new tuple type.\n * @param childTypes The types of the tuple elements\n */\n constructor(public readonly childTypes: ABIType[]) {\n super()\n if (childTypes.length > MAX_LEN) {\n throw new Error(`Tuple has too many child types: ${childTypes.length}`)\n }\n }\n\n get name(): string {\n const typeStrings: string[] = []\n for (let i = 0; i < this.childTypes.length; i++) {\n typeStrings[i] = this.childTypes[i].name\n }\n return `(${typeStrings.join(',')})`\n }\n\n equals(other: ABIType): boolean {\n if (!(other instanceof ABITupleType)) return false\n if (this.childTypes.length !== other.childTypes.length) return false\n return this.childTypes.every((t, i) => t.equals(other.childTypes[i]))\n }\n\n isDynamic(): boolean {\n return this.childTypes.some((c) => c.isDynamic())\n }\n\n byteLen(): number {\n let size = 0\n let i = 0\n while (i < this.childTypes.length) {\n const childType = this.childTypes[i]\n if (childType instanceof ABIBoolType) {\n const sequenceEndIndex = findBoolSequenceEnd(this.childTypes, i)\n const boolCount = sequenceEndIndex - i + 1\n size += Math.ceil(boolCount / 8)\n i = sequenceEndIndex + 1\n } else {\n size += childType.byteLen()\n i++\n }\n }\n return size\n }\n\n encode(value: ABIValue): Uint8Array {\n if (!Array.isArray(value) && !(value instanceof Uint8Array)) {\n throw new Error(`Cannot encode value as ${this.toString()}: ${value}`)\n }\n\n const values = Array.from(value)\n\n if (this.childTypes.length !== values.length) {\n throw new Error('Mismatch lengths between the values and types')\n }\n\n const heads: Uint8Array[] = []\n const tails: Uint8Array[] = []\n const isDynamicIndex = new Map<number, boolean>()\n let abiTypesCursor = 0\n\n while (abiTypesCursor < this.childTypes.length) {\n const childType = this.childTypes[abiTypesCursor]\n\n if (childType.isDynamic()) {\n isDynamicIndex.set(heads.length, true)\n heads.push(new Uint8Array(2)) // Placeholder for dynamic offset\n tails.push(childType.encode(values[abiTypesCursor]))\n } else {\n if (childType instanceof ABIBoolType) {\n const boolSequenceEndIndex = findBoolSequenceEnd(this.childTypes, abiTypesCursor)\n const boolValues = values.slice(abiTypesCursor, boolSequenceEndIndex + 1)\n const compressedBool = compressBools(boolValues)\n heads.push(new Uint8Array([compressedBool]))\n abiTypesCursor = boolSequenceEndIndex\n } else {\n heads.push(childType.encode(values[abiTypesCursor]))\n }\n isDynamicIndex.set(abiTypesCursor, false)\n tails.push(new Uint8Array(0))\n }\n abiTypesCursor += 1\n }\n\n const headLength = heads.reduce((sum, head) => sum + head.length, 0)\n let tailLength = 0\n\n for (let i = 0; i < heads.length; i++) {\n if (isDynamicIndex.get(i)) {\n const headValue = headLength + tailLength\n if (headValue > 0xffff) {\n throw new Error(`Value ${headValue} cannot fit in u16`)\n }\n heads[i] = new Uint8Array([(headValue >> 8) & 0xff, headValue & 0xff])\n }\n tailLength += tails[i].length\n }\n\n const totalLength = heads.reduce((sum, head) => sum + head.length, 0) + tails.reduce((sum, tail) => sum + tail.length, 0)\n const result = new Uint8Array(totalLength)\n let offset = 0\n\n for (const head of heads) {\n result.set(head, offset)\n offset += head.length\n }\n\n for (const tail of tails) {\n result.set(tail, offset)\n offset += tail.length\n }\n\n return result\n }\n\n decode(bytes: Uint8Array): ABIValue[] {\n const valuePartitions = extractValues(this.childTypes, bytes)\n const values: ABIValue[] = []\n\n for (let i = 0; i < this.childTypes.length; i++) {\n const childType = this.childTypes[i]\n const valuePartition = valuePartitions[i]\n const childValue = childType.decode(valuePartition)\n values.push(childValue)\n }\n\n return values\n }\n}\n\n/**\n * A static-length array ABI type.\n */\nexport class ABIArrayStaticType extends ABIType {\n /**\n * Creates a new static array type.\n * @param childType The type of the array elements\n * @param length The fixed length of the array\n */\n constructor(\n public readonly childType: ABIType,\n public readonly length: number,\n ) {\n super()\n if (length < 0 || length > MAX_LEN) {\n throw new Error(`Invalid static array length: ${length}`)\n }\n }\n\n get name(): string {\n return `${this.childType.name}[${this.length}]`\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIArrayStaticType && this.childType.equals(other.childType) && this.length === other.length\n }\n\n isDynamic(): boolean {\n return this.childType.isDynamic()\n }\n\n byteLen(): number {\n if (this.childType instanceof ABIBoolType) {\n return Math.ceil(this.length / 8)\n }\n return this.childType.byteLen() * this.length\n }\n\n /**\n * Converts this static array type to an equivalent tuple type.\n * @returns The equivalent tuple type\n */\n toABITupleType(): ABITupleType {\n return new ABITupleType(Array(this.length).fill(this.childType))\n }\n\n encode(value: ABIValue): Uint8Array {\n if (!Array.isArray(value) && !(value instanceof Uint8Array)) {\n throw new Error(`Cannot encode value as ${this.name}: ${value}`)\n }\n if (value.length !== this.length) {\n throw new Error(`Value array does not match static array length. Expected ${this.length}, got ${value.length}`)\n }\n const convertedTuple = this.toABITupleType()\n return convertedTuple.encode(value)\n }\n\n decode(bytes: Uint8Array): ABIValue[] | Uint8Array {\n const convertedTuple = this.toABITupleType()\n const decoded = convertedTuple.decode(bytes)\n\n // Convert byte arrays to Uint8Array\n if (this.childType instanceof ABIByteType && Array.isArray(decoded)) {\n return new Uint8Array(decoded as number[])\n }\n\n return decoded\n }\n}\n\n/**\n * A dynamic-length array ABI type.\n */\nexport class ABIArrayDynamicType extends ABIType {\n /**\n * Creates a new dynamic array type.\n * @param childType The type of the array elements\n */\n constructor(public readonly childType: ABIType) {\n super()\n }\n\n get name(): string {\n return `${this.childType.name}[]`\n }\n\n equals(other: ABIType): boolean {\n return other instanceof ABIArrayDynamicType && this.childType.equals(other.childType)\n }\n\n isDynamic(): boolean {\n return true\n }\n\n byteLen(): number {\n throw new Error(`Failed to get size, dynamic array is a dynamic type`)\n }\n\n /**\n * Converts this dynamic array type to an equivalent tuple type of a given length.\n * @param length The number of elements\n * @returns The equivalent tuple type\n */\n toABITupleType(length: number): ABITupleType {\n return new ABITupleType(Array(length).fill(this.childType))\n }\n\n encode(value: ABIValue): Uint8Array {\n if (!Array.isArray(value) && !(value instanceof Uint8Array)) {\n throw new Error(`Cannot encode value as ${this.name}: ${value}`)\n }\n const convertedTuple = this.toABITupleType(value.length)\n const encodedTuple = convertedTuple.encode(value)\n const encodedLength = bigIntToBytes(convertedTuple.childTypes.length, LENGTH_ENCODE_BYTE_SIZE)\n return concatArrays(encodedLength, encodedTuple)\n }\n\n decode(bytes: Uint8Array): ABIValue[] | Uint8Array {\n const view = new DataView(bytes.buffer, 0, LENGTH_ENCODE_BYTE_SIZE)\n const byteLength = view.getUint16(0)\n const convertedTuple = this.toABITupleType(byteLength)\n const decoded = convertedTuple.decode(bytes.slice(LENGTH_ENCODE_BYTE_SIZE, bytes.length))\n\n // Convert byte arrays to Uint8Array\n if (this.childType instanceof ABIByteType && Array.isArray(decoded)) {\n return new Uint8Array(decoded as number[])\n }\n\n return decoded\n }\n}\n\n/**\n * A struct ABI type with named fields.\n */\nexport class ABIStructType extends ABIType {\n /**\n * Creates a new struct type.\n * @param structName The name of the struct\n * @param structFields The fields of the struct\n */\n constructor(\n public readonly structName: string,\n public readonly structFields: ABIStructField[],\n ) {\n super()\n }\n\n get name(): string {\n const tupleType = this.toABITupleType()\n return tupleType.name\n }\n\n get displayName(): string {\n return this.structName\n }\n\n equals(other: ABIType): boolean {\n if (!(other instanceof ABIStructType)) return false\n if (this.structName !== other.structName) return false\n if (this.structFields.length !== other.structFields.length) return false\n return this.structFields.every((f, i) => {\n const otherField = other.structFields[i]\n if (f.name !== otherField.name) return false\n if (Array.isArray(f.type) && Array.isArray(otherField.type)) {\n return JSON.stringify(f.type) === JSON.stringify(otherField.type)\n }\n if (f.type instanceof ABIType && otherField.type instanceof ABIType) {\n return f.type.equals(otherField.type)\n }\n return false\n })\n }\n\n isDynamic(): boolean {\n const tupleType = this.toABITupleType()\n return tupleType.isDynamic()\n }\n\n byteLen(): number {\n const tupleType = this.toABITupleType()\n return tupleType.byteLen()\n }\n\n /**\n * Converts this struct type to an equivalent tuple type.\n * @returns The equivalent tuple type\n */\n toABITupleType(): ABITupleType {\n const getABITupleTypeFromABIStructFields = (fields: ABIStructField[]): ABITupleType => {\n const childTypes = fields.map((field) =>\n Array.isArray(field.type)\n ? getABITupleTypeFromABIStructFields(field.type)\n : field.type instanceof ABIStructType\n ? field.type.toABITupleType()\n : field.type,\n )\n return new ABITupleType(childTypes)\n }\n\n return getABITupleTypeFromABIStructFields(this.structFields)\n }\n\n /**\n * Creates an ABIStructType from struct name and struct definitions.\n * @param structName The name of the struct\n * @param structs A record of struct definitions\n * @returns The struct type\n */\n static fromStruct(structName: string, structs: Record<string, StructField[]>): ABIStructType {\n const getStructFieldType = (structFieldType: string | StructField[]): ABIType | ABIStructField[] => {\n // When the input is an array of struct fields\n if (Array.isArray(structFieldType)) {\n return structFieldType.map((structField) => ({\n name: structField.name,\n type: getStructFieldType(structField.type),\n }))\n }\n\n // When the input is a name of another struct\n if (structs[structFieldType]) {\n return ABIStructType.fromStruct(structFieldType, structs)\n }\n\n // When the input in an ABI type name\n return ABIType.from(structFieldType)\n }\n\n if (!structs[structName]) throw new Error('Struct not found')\n\n const fields = structs[structName]\n return new ABIStructType(\n structName,\n fields.map((f) => ({\n name: f.name,\n type: getStructFieldType(f.type),\n })),\n )\n }\n\n encode(value: ABIValue): Uint8Array {\n if (value instanceof Uint8Array || value instanceof Address || typeof value !== 'object') {\n throw new Error(`Cannot encode value as ${this.name}: ${value}`)\n }\n\n const tupleType = this.toABITupleType()\n if (Array.isArray(value)) {\n return tupleType.encode(value)\n }\n\n const tupleValue = getTupleValueFromStructValue(this, value)\n return tupleType.encode(tupleValue)\n }\n\n decode(bytes: Uint8Array): ABIStructValue {\n const tupleType = this.toABITupleType()\n const tupleValue = tupleType.decode(bytes)\n return getStructValueFromTupleValue(this, tupleValue)\n }\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\nfunction compressBools(values: ABIValue[]): number {\n if (values.length > 8) {\n throw new Error(`Expected no more than 8 bool values, received ${values.length}`)\n }\n\n let result = 0\n for (let i = 0; i < values.length; i++) {\n if (typeof values[i] !== 'boolean') {\n throw new Error('Expected all values to be boolean')\n }\n if (values[i]) {\n result |= 1 << (7 - i)\n }\n }\n\n return result\n}\n\nfunction findBoolSequenceEnd(abiTypes: ABIType[], currentIndex: number): number {\n let cursor = currentIndex\n while (cursor < abiTypes.length) {\n if (abiTypes[cursor] instanceof ABIBoolType) {\n if (cursor - currentIndex + 1 === 8 || cursor === abiTypes.length - 1) {\n return cursor\n }\n cursor++\n } else {\n return cursor - 1\n }\n }\n return cursor - 1\n}\n\nfunction extractValues(abiTypes: ABIType[], bytes: Uint8Array): Uint8Array[] {\n const dynamicSegments: Segment[] = []\n const valuePartitions: (Uint8Array | null)[] = []\n let bytesCursor = 0\n let abiTypesCursor = 0\n\n while (abiTypesCursor < abiTypes.length) {\n const childType = abiTypes[abiTypesCursor]\n\n if (childType.isDynamic()) {\n if (bytes.length - bytesCursor < LENGTH_ENCODE_BYTE_SIZE) {\n throw new Error('Byte array is too short to be decoded')\n }\n\n const dynamicIndex = (bytes[bytesCursor] << 8) | bytes[bytesCursor + 1]\n\n if (dynamicSegments.length > 0) {\n const lastSegment = dynamicSegments[dynamicSegments.length - 1]\n if (dynamicIndex < lastSegment.left) {\n throw new Error('Dynamic index segment miscalculation: left is greater than right index')\n }\n lastSegment.right = dynamicIndex\n }\n\n dynamicSegments.push({ left: dynamicIndex, right: 0 })\n valuePartitions.push(null)\n bytesCursor += LENGTH_ENCODE_BYTE_SIZE\n } else {\n if (childType instanceof ABIBoolType) {\n const boolSequenceEndIndex = findBoolSequenceEnd(abiTypes, abiTypesCursor)\n for (let j = 0; j <= boolSequenceEndIndex - abiTypesCursor; j++) {\n const boolMask = BOOL_TRUE_BYTE >> j\n if ((bytes[bytesCursor] & boolMask) > 0) {\n valuePartitions.push(new Uint8Array([BOOL_TRUE_BYTE]))\n } else {\n valuePartitions.push(new Uint8Array([BOOL_FALSE_BYTE]))\n }\n }\n abiTypesCursor = boolSequenceEndIndex\n bytesCursor += 1\n } else {\n const childTypeSize = childType.byteLen()\n if (bytesCursor + childTypeSize > bytes.length) {\n throw new Error(\n `Index out of bounds, trying to access bytes[${bytesCursor}..${bytesCursor + childTypeSize}] but slice has length ${bytes.length}`,\n )\n }\n valuePartitions.push(bytes.slice(bytesCursor, bytesCursor + childTypeSize))\n bytesCursor += childTypeSize\n }\n }\n\n if (abiTypesCursor !== abiTypes.length - 1 && bytesCursor >= bytes.length) {\n throw new Error('Input bytes not enough to decode')\n }\n abiTypesCursor += 1\n }\n\n if (dynamicSegments.length > 0) {\n const lastSegment = dynamicSegments[dynamicSegments.length - 1]\n lastSegment.right = bytes.length\n } else if (bytesCursor < bytes.length) {\n throw new Error('Input bytes not fully consumed')\n }\n\n for (let i = 0; i < dynamicSegments.length; i++) {\n const segment = dynamicSegments[i]\n if (segment.left > segment.right) {\n throw new Error('Dynamic segment should display a [l, r] space with l <= r')\n }\n if (i !== dynamicSegments.length - 1 && segment.right !== dynamicSegments[i + 1].left) {\n throw new Error('Dynamic segments should be consecutive')\n }\n }\n\n let segmentIndex = 0\n for (let i = 0; i < abiTypes.length; i++) {\n const childType = abiTypes[i]\n if (childType.isDynamic()) {\n valuePartitions[i] = bytes.slice(dynamicSegments[segmentIndex].left, dynamicSegments[segmentIndex].right)\n segmentIndex += 1\n }\n }\n\n const result: Uint8Array[] = []\n for (let i = 0; i < valuePartitions.length; i++) {\n const partition = valuePartitions[i]\n if (partition === null) {\n throw new Error(`Value partition at index ${i} is None`)\n }\n result.push(partition)\n }\n\n return result\n}\n\nexport function parseTupleContent(content: string): string[] {\n if (content === '') {\n return []\n }\n\n if (content.startsWith(',')) {\n throw new Error('The content should not start with comma')\n }\n if (content.endsWith(',')) {\n throw new Error('The content should not end with comma')\n }\n if (content.includes(',,')) {\n throw new Error('The content should not have consecutive commas')\n }\n\n const tupleStrings: string[] = []\n let depth = 0\n let word = ''\n\n for (const ch of content) {\n word += ch\n if (ch === '(') {\n depth += 1\n } else if (ch === ')') {\n depth -= 1\n } else if (ch === ',' && depth === 0) {\n word = word.slice(0, -1) // Remove the comma\n tupleStrings.push(word)\n word = ''\n }\n }\n\n if (word !== '') {\n tupleStrings.push(word)\n }\n\n if (depth !== 0) {\n throw new Error('The content has mismatched parentheses')\n }\n\n return tupleStrings\n}\n"],"mappings":"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"}