@algorandfoundation/algokit-utils 10.0.0-beta.3 → 10.0.0-beta.4

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 (719) hide show
  1. package/account-manager.d.ts +72 -1
  2. package/account-manager.js +63 -1
  3. package/account-manager.js.map +1 -1
  4. package/account-manager.mjs +63 -1
  5. package/account-manager.mjs.map +1 -1
  6. package/algo25/index.d.ts +1 -1
  7. package/algo25/index.js +1 -1
  8. package/algo25/index.mjs +1 -1
  9. package/algorand-client-transaction-creator.js.map +1 -1
  10. package/algorand-client-transaction-creator.mjs.map +1 -1
  11. package/algorand-client-transaction-sender.js +0 -1
  12. package/algorand-client-transaction-sender.js.map +1 -1
  13. package/algorand-client-transaction-sender.mjs.map +1 -1
  14. package/algorand-client.js +5 -1
  15. package/algorand-client.js.map +1 -1
  16. package/algorand-client.mjs +5 -1
  17. package/algorand-client.mjs.map +1 -1
  18. package/amount.js.map +1 -1
  19. package/amount.mjs.map +1 -1
  20. package/app-client.js +173 -16
  21. package/app-client.js.map +1 -1
  22. package/app-client.mjs +173 -15
  23. package/app-client.mjs.map +1 -1
  24. package/app-deployer.js +8 -8
  25. package/app-deployer.js.map +1 -1
  26. package/app-deployer.mjs +9 -9
  27. package/app-deployer.mjs.map +1 -1
  28. package/app-factory.js +49 -9
  29. package/app-factory.js.map +1 -1
  30. package/app-factory.mjs +49 -9
  31. package/app-factory.mjs.map +1 -1
  32. package/app-manager.js.map +1 -1
  33. package/app-manager.mjs.map +1 -1
  34. package/app-spec.js.map +1 -1
  35. package/app-spec.mjs.map +1 -1
  36. package/app.js.map +1 -1
  37. package/app.mjs.map +1 -1
  38. package/asset-manager.js.map +1 -1
  39. package/asset-manager.mjs.map +1 -1
  40. package/async-event-emitter.js.map +1 -1
  41. package/async-event-emitter.mjs.map +1 -1
  42. package/client-manager.js.map +1 -1
  43. package/client-manager.mjs.map +1 -1
  44. package/composer.js +16 -17
  45. package/composer.js.map +1 -1
  46. package/composer.mjs +16 -16
  47. package/composer.mjs.map +1 -1
  48. package/config.js.map +1 -1
  49. package/config.mjs.map +1 -1
  50. package/crypto/index.d.ts +3 -3
  51. package/crypto/index.js +5 -2
  52. package/crypto/index.mjs +3 -3
  53. package/dispenser-client.js +4 -8
  54. package/dispenser-client.js.map +1 -1
  55. package/dispenser-client.mjs +4 -8
  56. package/dispenser-client.mjs.map +1 -1
  57. package/indexer-client/indexer-lookup.js.map +1 -1
  58. package/indexer-client/indexer-lookup.mjs.map +1 -1
  59. package/indexer.js.map +1 -1
  60. package/indexer.mjs.map +1 -1
  61. package/kmd-account-manager.js.map +1 -1
  62. package/kmd-account-manager.mjs.map +1 -1
  63. package/lifecycle-events.js.map +1 -1
  64. package/lifecycle-events.mjs.map +1 -1
  65. package/logging.js.map +1 -1
  66. package/logging.mjs.map +1 -1
  67. package/logic-error.js.map +1 -1
  68. package/logic-error.mjs.map +1 -1
  69. package/network-client.js.map +1 -1
  70. package/network-client.mjs.map +1 -1
  71. package/network-manager.js.map +1 -1
  72. package/network-manager.mjs.map +1 -1
  73. package/package.json +2 -1
  74. package/packages/abi/src/abi-method.js +6 -6
  75. package/packages/abi/src/abi-method.js.map +1 -1
  76. package/packages/abi/src/abi-method.mjs +6 -5
  77. package/packages/abi/src/abi-method.mjs.map +1 -1
  78. package/packages/abi/src/abi-type.js +9 -0
  79. package/packages/abi/src/abi-type.js.map +1 -1
  80. package/packages/abi/src/abi-type.mjs +9 -0
  81. package/packages/abi/src/abi-type.mjs.map +1 -1
  82. package/packages/abi/src/arc56-contract.js.map +1 -1
  83. package/packages/abi/src/arc56-contract.mjs.map +1 -1
  84. package/packages/abi/src/bigint.js.map +1 -1
  85. package/packages/abi/src/bigint.mjs.map +1 -1
  86. package/packages/abi/src/utils.js.map +1 -1
  87. package/packages/abi/src/utils.mjs.map +1 -1
  88. package/packages/algod_client/src/apis/api-service.js +3 -1
  89. package/packages/algod_client/src/apis/api-service.js.map +1 -1
  90. package/packages/algod_client/src/apis/api-service.mjs +3 -1
  91. package/packages/algod_client/src/apis/api-service.mjs.map +1 -1
  92. package/packages/algod_client/src/client.js.map +1 -1
  93. package/packages/algod_client/src/client.mjs.map +1 -1
  94. package/packages/algod_client/src/core/api-error.js.map +1 -1
  95. package/packages/algod_client/src/core/api-error.mjs.map +1 -1
  96. package/packages/algod_client/src/core/base-http-request.js +1 -0
  97. package/packages/algod_client/src/core/base-http-request.js.map +1 -1
  98. package/packages/algod_client/src/core/base-http-request.mjs +1 -0
  99. package/packages/algod_client/src/core/base-http-request.mjs.map +1 -1
  100. package/packages/algod_client/src/core/fetch-http-request.js.map +1 -1
  101. package/packages/algod_client/src/core/fetch-http-request.mjs.map +1 -1
  102. package/packages/algod_client/src/core/model-runtime.js.map +1 -1
  103. package/packages/algod_client/src/core/model-runtime.mjs.map +1 -1
  104. package/packages/algod_client/src/core/request.js.map +1 -1
  105. package/packages/algod_client/src/core/request.mjs.map +1 -1
  106. package/packages/algod_client/src/models/account-application-response.js.map +1 -1
  107. package/packages/algod_client/src/models/account-application-response.mjs.map +1 -1
  108. package/packages/algod_client/src/models/account-asset-response.js.map +1 -1
  109. package/packages/algod_client/src/models/account-asset-response.mjs.map +1 -1
  110. package/packages/algod_client/src/models/account-participation.js.map +1 -1
  111. package/packages/algod_client/src/models/account-participation.mjs.map +1 -1
  112. package/packages/algod_client/src/models/account-state-delta.js.map +1 -1
  113. package/packages/algod_client/src/models/account-state-delta.mjs.map +1 -1
  114. package/packages/algod_client/src/models/account.js.map +1 -1
  115. package/packages/algod_client/src/models/account.mjs.map +1 -1
  116. package/packages/algod_client/src/models/application-initial-states.js.map +1 -1
  117. package/packages/algod_client/src/models/application-initial-states.mjs.map +1 -1
  118. package/packages/algod_client/src/models/application-kv-storage.js.map +1 -1
  119. package/packages/algod_client/src/models/application-kv-storage.mjs.map +1 -1
  120. package/packages/algod_client/src/models/application-local-state.js.map +1 -1
  121. package/packages/algod_client/src/models/application-local-state.mjs.map +1 -1
  122. package/packages/algod_client/src/models/application-params.js.map +1 -1
  123. package/packages/algod_client/src/models/application-params.mjs.map +1 -1
  124. package/packages/algod_client/src/models/application-state-operation.js.map +1 -1
  125. package/packages/algod_client/src/models/application-state-operation.mjs.map +1 -1
  126. package/packages/algod_client/src/models/application-state-schema.js.map +1 -1
  127. package/packages/algod_client/src/models/application-state-schema.mjs.map +1 -1
  128. package/packages/algod_client/src/models/application.js.map +1 -1
  129. package/packages/algod_client/src/models/application.mjs.map +1 -1
  130. package/packages/algod_client/src/models/asset-holding.js.map +1 -1
  131. package/packages/algod_client/src/models/asset-holding.mjs.map +1 -1
  132. package/packages/algod_client/src/models/asset-params.js.map +1 -1
  133. package/packages/algod_client/src/models/asset-params.mjs.map +1 -1
  134. package/packages/algod_client/src/models/asset.js.map +1 -1
  135. package/packages/algod_client/src/models/asset.mjs.map +1 -1
  136. package/packages/algod_client/src/models/avm-key-value.js.map +1 -1
  137. package/packages/algod_client/src/models/avm-key-value.mjs.map +1 -1
  138. package/packages/algod_client/src/models/avm-value.js.map +1 -1
  139. package/packages/algod_client/src/models/avm-value.mjs.map +1 -1
  140. package/packages/algod_client/src/models/block-hash-response.js.map +1 -1
  141. package/packages/algod_client/src/models/block-hash-response.mjs.map +1 -1
  142. package/packages/algod_client/src/models/block-response.js.map +1 -1
  143. package/packages/algod_client/src/models/block-response.mjs.map +1 -1
  144. package/packages/algod_client/src/models/block-txids-response.js.map +1 -1
  145. package/packages/algod_client/src/models/block-txids-response.mjs.map +1 -1
  146. package/packages/algod_client/src/models/block.js.map +1 -1
  147. package/packages/algod_client/src/models/block.mjs.map +1 -1
  148. package/packages/algod_client/src/models/box-descriptor.js.map +1 -1
  149. package/packages/algod_client/src/models/box-descriptor.mjs.map +1 -1
  150. package/packages/algod_client/src/models/box.js.map +1 -1
  151. package/packages/algod_client/src/models/box.mjs.map +1 -1
  152. package/packages/algod_client/src/models/boxes-response.js.map +1 -1
  153. package/packages/algod_client/src/models/boxes-response.mjs.map +1 -1
  154. package/packages/algod_client/src/models/build-version.js.map +1 -1
  155. package/packages/algod_client/src/models/build-version.mjs.map +1 -1
  156. package/packages/algod_client/src/models/compile-response.js.map +1 -1
  157. package/packages/algod_client/src/models/compile-response.mjs.map +1 -1
  158. package/packages/algod_client/src/models/disassemble-response.js.map +1 -1
  159. package/packages/algod_client/src/models/disassemble-response.mjs.map +1 -1
  160. package/packages/algod_client/src/models/eval-delta-key-value.js.map +1 -1
  161. package/packages/algod_client/src/models/eval-delta-key-value.mjs.map +1 -1
  162. package/packages/algod_client/src/models/eval-delta.js.map +1 -1
  163. package/packages/algod_client/src/models/eval-delta.mjs.map +1 -1
  164. package/packages/algod_client/src/models/genesis-allocation.js.map +1 -1
  165. package/packages/algod_client/src/models/genesis-allocation.mjs.map +1 -1
  166. package/packages/algod_client/src/models/genesis.js.map +1 -1
  167. package/packages/algod_client/src/models/genesis.mjs.map +1 -1
  168. package/packages/algod_client/src/models/get-block-time-stamp-offset-response.js.map +1 -1
  169. package/packages/algod_client/src/models/get-block-time-stamp-offset-response.mjs.map +1 -1
  170. package/packages/algod_client/src/models/get-sync-round-response.js.map +1 -1
  171. package/packages/algod_client/src/models/get-sync-round-response.mjs.map +1 -1
  172. package/packages/algod_client/src/models/ledger-state-delta-for-transaction-group.js.map +1 -1
  173. package/packages/algod_client/src/models/ledger-state-delta-for-transaction-group.mjs.map +1 -1
  174. package/packages/algod_client/src/models/ledger-state-delta.js.map +1 -1
  175. package/packages/algod_client/src/models/ledger-state-delta.mjs.map +1 -1
  176. package/packages/algod_client/src/models/light-block-header-proof.js.map +1 -1
  177. package/packages/algod_client/src/models/light-block-header-proof.mjs.map +1 -1
  178. package/packages/algod_client/src/models/node-status-response.js.map +1 -1
  179. package/packages/algod_client/src/models/node-status-response.mjs.map +1 -1
  180. package/packages/algod_client/src/models/pending-transaction-response.js.map +1 -1
  181. package/packages/algod_client/src/models/pending-transaction-response.mjs.map +1 -1
  182. package/packages/algod_client/src/models/pending-transactions-response.js.map +1 -1
  183. package/packages/algod_client/src/models/pending-transactions-response.mjs.map +1 -1
  184. package/packages/algod_client/src/models/post-transactions-response.js.map +1 -1
  185. package/packages/algod_client/src/models/post-transactions-response.mjs.map +1 -1
  186. package/packages/algod_client/src/models/scratch-change.js.map +1 -1
  187. package/packages/algod_client/src/models/scratch-change.mjs.map +1 -1
  188. package/packages/algod_client/src/models/simulate-initial-states.js.map +1 -1
  189. package/packages/algod_client/src/models/simulate-initial-states.mjs.map +1 -1
  190. package/packages/algod_client/src/models/simulate-request-transaction-group.js.map +1 -1
  191. package/packages/algod_client/src/models/simulate-request-transaction-group.mjs.map +1 -1
  192. package/packages/algod_client/src/models/simulate-request.js.map +1 -1
  193. package/packages/algod_client/src/models/simulate-request.mjs.map +1 -1
  194. package/packages/algod_client/src/models/simulate-response.js.map +1 -1
  195. package/packages/algod_client/src/models/simulate-response.mjs.map +1 -1
  196. package/packages/algod_client/src/models/simulate-trace-config.js.map +1 -1
  197. package/packages/algod_client/src/models/simulate-trace-config.mjs.map +1 -1
  198. package/packages/algod_client/src/models/simulate-transaction-group-result.js.map +1 -1
  199. package/packages/algod_client/src/models/simulate-transaction-group-result.mjs.map +1 -1
  200. package/packages/algod_client/src/models/simulate-transaction-result.js.map +1 -1
  201. package/packages/algod_client/src/models/simulate-transaction-result.mjs.map +1 -1
  202. package/packages/algod_client/src/models/simulate-unnamed-resources-accessed.js.map +1 -1
  203. package/packages/algod_client/src/models/simulate-unnamed-resources-accessed.mjs.map +1 -1
  204. package/packages/algod_client/src/models/simulation-eval-overrides.js.map +1 -1
  205. package/packages/algod_client/src/models/simulation-eval-overrides.mjs.map +1 -1
  206. package/packages/algod_client/src/models/simulation-opcode-trace-unit.js.map +1 -1
  207. package/packages/algod_client/src/models/simulation-opcode-trace-unit.mjs.map +1 -1
  208. package/packages/algod_client/src/models/simulation-transaction-exec-trace.js.map +1 -1
  209. package/packages/algod_client/src/models/simulation-transaction-exec-trace.mjs.map +1 -1
  210. package/packages/algod_client/src/models/source-map.js.map +1 -1
  211. package/packages/algod_client/src/models/source-map.mjs.map +1 -1
  212. package/packages/algod_client/src/models/state-delta.js.map +1 -1
  213. package/packages/algod_client/src/models/state-delta.mjs.map +1 -1
  214. package/packages/algod_client/src/models/state-proof-message.js.map +1 -1
  215. package/packages/algod_client/src/models/state-proof-message.mjs.map +1 -1
  216. package/packages/algod_client/src/models/state-proof.js.map +1 -1
  217. package/packages/algod_client/src/models/state-proof.mjs.map +1 -1
  218. package/packages/algod_client/src/models/supply-response.js.map +1 -1
  219. package/packages/algod_client/src/models/supply-response.mjs.map +1 -1
  220. package/packages/algod_client/src/models/teal-key-value-store.js.map +1 -1
  221. package/packages/algod_client/src/models/teal-key-value-store.mjs.map +1 -1
  222. package/packages/algod_client/src/models/teal-key-value.js.map +1 -1
  223. package/packages/algod_client/src/models/teal-key-value.mjs.map +1 -1
  224. package/packages/algod_client/src/models/teal-value.js.map +1 -1
  225. package/packages/algod_client/src/models/teal-value.mjs.map +1 -1
  226. package/packages/algod_client/src/models/transaction-group-ledger-state-deltas-for-round-response.js.map +1 -1
  227. package/packages/algod_client/src/models/transaction-group-ledger-state-deltas-for-round-response.mjs.map +1 -1
  228. package/packages/algod_client/src/models/transaction-parameters-response.js.map +1 -1
  229. package/packages/algod_client/src/models/transaction-parameters-response.mjs.map +1 -1
  230. package/packages/algod_client/src/models/transaction-proof.js.map +1 -1
  231. package/packages/algod_client/src/models/transaction-proof.mjs.map +1 -1
  232. package/packages/algod_client/src/models/version.js.map +1 -1
  233. package/packages/algod_client/src/models/version.mjs.map +1 -1
  234. package/packages/common/src/address.js.map +1 -1
  235. package/packages/common/src/address.mjs.map +1 -1
  236. package/packages/common/src/array.js.map +1 -1
  237. package/packages/common/src/array.mjs.map +1 -1
  238. package/packages/common/src/codecs/codec.js.map +1 -1
  239. package/packages/common/src/codecs/codec.mjs.map +1 -1
  240. package/packages/common/src/codecs/composite/array.js +1 -0
  241. package/packages/common/src/codecs/composite/array.js.map +1 -1
  242. package/packages/common/src/codecs/composite/array.mjs +1 -0
  243. package/packages/common/src/codecs/composite/array.mjs.map +1 -1
  244. package/packages/common/src/codecs/composite/map.js +2 -0
  245. package/packages/common/src/codecs/composite/map.js.map +1 -1
  246. package/packages/common/src/codecs/composite/map.mjs +2 -0
  247. package/packages/common/src/codecs/composite/map.mjs.map +1 -1
  248. package/packages/common/src/codecs/composite/record.js +1 -1
  249. package/packages/common/src/codecs/composite/record.js.map +1 -1
  250. package/packages/common/src/codecs/composite/record.mjs +1 -0
  251. package/packages/common/src/codecs/composite/record.mjs.map +1 -1
  252. package/packages/common/src/codecs/models/array-model.js +1 -0
  253. package/packages/common/src/codecs/models/array-model.js.map +1 -1
  254. package/packages/common/src/codecs/models/array-model.mjs +1 -0
  255. package/packages/common/src/codecs/models/array-model.mjs.map +1 -1
  256. package/packages/common/src/codecs/models/object-model.js +3 -1
  257. package/packages/common/src/codecs/models/object-model.js.map +1 -1
  258. package/packages/common/src/codecs/models/object-model.mjs +3 -1
  259. package/packages/common/src/codecs/models/object-model.mjs.map +1 -1
  260. package/packages/common/src/codecs/models/primitive-model.js +1 -0
  261. package/packages/common/src/codecs/models/primitive-model.js.map +1 -1
  262. package/packages/common/src/codecs/models/primitive-model.mjs +1 -0
  263. package/packages/common/src/codecs/models/primitive-model.mjs.map +1 -1
  264. package/packages/common/src/codecs/primitives/address.js +0 -1
  265. package/packages/common/src/codecs/primitives/address.js.map +1 -1
  266. package/packages/common/src/codecs/primitives/address.mjs.map +1 -1
  267. package/packages/common/src/codecs/primitives/bigint.js.map +1 -1
  268. package/packages/common/src/codecs/primitives/bigint.mjs.map +1 -1
  269. package/packages/common/src/codecs/primitives/boolean.js.map +1 -1
  270. package/packages/common/src/codecs/primitives/boolean.mjs.map +1 -1
  271. package/packages/common/src/codecs/primitives/bytes-base64.js +0 -1
  272. package/packages/common/src/codecs/primitives/bytes-base64.js.map +1 -1
  273. package/packages/common/src/codecs/primitives/bytes-base64.mjs.map +1 -1
  274. package/packages/common/src/codecs/primitives/bytes.js +0 -1
  275. package/packages/common/src/codecs/primitives/bytes.js.map +1 -1
  276. package/packages/common/src/codecs/primitives/bytes.mjs.map +1 -1
  277. package/packages/common/src/codecs/primitives/fixed-bytes.js +1 -1
  278. package/packages/common/src/codecs/primitives/fixed-bytes.js.map +1 -1
  279. package/packages/common/src/codecs/primitives/fixed-bytes.mjs +1 -0
  280. package/packages/common/src/codecs/primitives/fixed-bytes.mjs.map +1 -1
  281. package/packages/common/src/codecs/primitives/number.js.map +1 -1
  282. package/packages/common/src/codecs/primitives/number.mjs.map +1 -1
  283. package/packages/common/src/codecs/primitives/string.js.map +1 -1
  284. package/packages/common/src/codecs/primitives/string.mjs.map +1 -1
  285. package/packages/common/src/codecs/primitives/unknown.js.map +1 -1
  286. package/packages/common/src/codecs/primitives/unknown.mjs.map +1 -1
  287. package/packages/common/src/codecs/wire.js +0 -1
  288. package/packages/common/src/codecs/wire.js.map +1 -1
  289. package/packages/common/src/codecs/wire.mjs.map +1 -1
  290. package/packages/common/src/constants.js.map +1 -1
  291. package/packages/common/src/constants.mjs.map +1 -1
  292. package/packages/common/src/encoding.js +0 -1
  293. package/packages/common/src/encoding.js.map +1 -1
  294. package/packages/common/src/encoding.mjs.map +1 -1
  295. package/packages/common/src/json.js.map +1 -1
  296. package/packages/common/src/json.mjs.map +1 -1
  297. package/packages/common/src/msgpack.js +0 -1
  298. package/packages/common/src/msgpack.js.map +1 -1
  299. package/packages/common/src/msgpack.mjs.map +1 -1
  300. package/packages/common/src/sourcemap.js.map +1 -1
  301. package/packages/common/src/sourcemap.mjs.map +1 -1
  302. package/packages/{algo25/src → crypto/src/algo25}/english.js +1 -1
  303. package/packages/crypto/src/algo25/english.js.map +1 -0
  304. package/packages/{algo25/src → crypto/src/algo25}/english.mjs +1 -1
  305. package/packages/crypto/src/algo25/english.mjs.map +1 -0
  306. package/packages/{algo25/src → crypto/src/algo25}/index.d.ts +1 -1
  307. package/packages/{algo25/src → crypto/src/algo25}/index.js +2 -2
  308. package/packages/crypto/src/algo25/index.js.map +1 -0
  309. package/packages/{algo25/src → crypto/src/algo25}/index.mjs +2 -2
  310. package/packages/crypto/src/algo25/index.mjs.map +1 -0
  311. package/packages/crypto/src/ed25519.d.ts +13 -3
  312. package/packages/crypto/src/ed25519.js.map +1 -1
  313. package/packages/crypto/src/ed25519.mjs.map +1 -1
  314. package/packages/crypto/src/hash.js +0 -1
  315. package/packages/crypto/src/hash.js.map +1 -1
  316. package/packages/crypto/src/hash.mjs.map +1 -1
  317. package/packages/crypto/src/hd.d.ts +17 -4
  318. package/packages/crypto/src/hd.js +13 -1
  319. package/packages/crypto/src/hd.js.map +1 -1
  320. package/packages/crypto/src/hd.mjs +11 -1
  321. package/packages/crypto/src/hd.mjs.map +1 -1
  322. package/packages/crypto/src/index.d.ts +12 -6
  323. package/packages/crypto/src/index.js +27 -18
  324. package/packages/crypto/src/index.js.map +1 -1
  325. package/packages/crypto/src/index.mjs +27 -18
  326. package/packages/crypto/src/index.mjs.map +1 -1
  327. package/packages/indexer_client/src/apis/api-service.js +1 -0
  328. package/packages/indexer_client/src/apis/api-service.js.map +1 -1
  329. package/packages/indexer_client/src/apis/api-service.mjs +1 -0
  330. package/packages/indexer_client/src/apis/api-service.mjs.map +1 -1
  331. package/packages/indexer_client/src/client.js.map +1 -1
  332. package/packages/indexer_client/src/client.mjs.map +1 -1
  333. package/packages/indexer_client/src/core/api-error.js.map +1 -1
  334. package/packages/indexer_client/src/core/api-error.mjs.map +1 -1
  335. package/packages/indexer_client/src/core/base-http-request.js +1 -0
  336. package/packages/indexer_client/src/core/base-http-request.js.map +1 -1
  337. package/packages/indexer_client/src/core/base-http-request.mjs +1 -0
  338. package/packages/indexer_client/src/core/base-http-request.mjs.map +1 -1
  339. package/packages/indexer_client/src/core/fetch-http-request.js.map +1 -1
  340. package/packages/indexer_client/src/core/fetch-http-request.mjs.map +1 -1
  341. package/packages/indexer_client/src/core/model-runtime.js.map +1 -1
  342. package/packages/indexer_client/src/core/model-runtime.mjs.map +1 -1
  343. package/packages/indexer_client/src/core/request.js.map +1 -1
  344. package/packages/indexer_client/src/core/request.mjs.map +1 -1
  345. package/packages/indexer_client/src/models/account-participation.js.map +1 -1
  346. package/packages/indexer_client/src/models/account-participation.mjs.map +1 -1
  347. package/packages/indexer_client/src/models/account-response.js.map +1 -1
  348. package/packages/indexer_client/src/models/account-response.mjs.map +1 -1
  349. package/packages/indexer_client/src/models/account-state-delta.js.map +1 -1
  350. package/packages/indexer_client/src/models/account-state-delta.mjs.map +1 -1
  351. package/packages/indexer_client/src/models/account.js.map +1 -1
  352. package/packages/indexer_client/src/models/account.mjs.map +1 -1
  353. package/packages/indexer_client/src/models/accounts-response.js.map +1 -1
  354. package/packages/indexer_client/src/models/accounts-response.mjs.map +1 -1
  355. package/packages/indexer_client/src/models/application-local-state.js.map +1 -1
  356. package/packages/indexer_client/src/models/application-local-state.mjs.map +1 -1
  357. package/packages/indexer_client/src/models/application-local-states-response.js.map +1 -1
  358. package/packages/indexer_client/src/models/application-local-states-response.mjs.map +1 -1
  359. package/packages/indexer_client/src/models/application-log-data.js.map +1 -1
  360. package/packages/indexer_client/src/models/application-log-data.mjs.map +1 -1
  361. package/packages/indexer_client/src/models/application-logs-response.js.map +1 -1
  362. package/packages/indexer_client/src/models/application-logs-response.mjs.map +1 -1
  363. package/packages/indexer_client/src/models/application-params.js.map +1 -1
  364. package/packages/indexer_client/src/models/application-params.mjs.map +1 -1
  365. package/packages/indexer_client/src/models/application-response.js.map +1 -1
  366. package/packages/indexer_client/src/models/application-response.mjs.map +1 -1
  367. package/packages/indexer_client/src/models/application-state-schema.js.map +1 -1
  368. package/packages/indexer_client/src/models/application-state-schema.mjs.map +1 -1
  369. package/packages/indexer_client/src/models/application.js.map +1 -1
  370. package/packages/indexer_client/src/models/application.mjs.map +1 -1
  371. package/packages/indexer_client/src/models/applications-response.js.map +1 -1
  372. package/packages/indexer_client/src/models/applications-response.mjs.map +1 -1
  373. package/packages/indexer_client/src/models/asset-balances-response.js.map +1 -1
  374. package/packages/indexer_client/src/models/asset-balances-response.mjs.map +1 -1
  375. package/packages/indexer_client/src/models/asset-holding.js.map +1 -1
  376. package/packages/indexer_client/src/models/asset-holding.mjs.map +1 -1
  377. package/packages/indexer_client/src/models/asset-holdings-response.js.map +1 -1
  378. package/packages/indexer_client/src/models/asset-holdings-response.mjs.map +1 -1
  379. package/packages/indexer_client/src/models/asset-params.js.map +1 -1
  380. package/packages/indexer_client/src/models/asset-params.mjs.map +1 -1
  381. package/packages/indexer_client/src/models/asset-response.js.map +1 -1
  382. package/packages/indexer_client/src/models/asset-response.mjs.map +1 -1
  383. package/packages/indexer_client/src/models/asset.js.map +1 -1
  384. package/packages/indexer_client/src/models/asset.mjs.map +1 -1
  385. package/packages/indexer_client/src/models/assets-response.js.map +1 -1
  386. package/packages/indexer_client/src/models/assets-response.mjs.map +1 -1
  387. package/packages/indexer_client/src/models/block-headers-response.js.map +1 -1
  388. package/packages/indexer_client/src/models/block-headers-response.mjs.map +1 -1
  389. package/packages/indexer_client/src/models/block-rewards.js.map +1 -1
  390. package/packages/indexer_client/src/models/block-rewards.mjs.map +1 -1
  391. package/packages/indexer_client/src/models/block-upgrade-state.js.map +1 -1
  392. package/packages/indexer_client/src/models/block-upgrade-state.mjs.map +1 -1
  393. package/packages/indexer_client/src/models/block-upgrade-vote.js.map +1 -1
  394. package/packages/indexer_client/src/models/block-upgrade-vote.mjs.map +1 -1
  395. package/packages/indexer_client/src/models/block.js.map +1 -1
  396. package/packages/indexer_client/src/models/block.mjs.map +1 -1
  397. package/packages/indexer_client/src/models/box-descriptor.js.map +1 -1
  398. package/packages/indexer_client/src/models/box-descriptor.mjs.map +1 -1
  399. package/packages/indexer_client/src/models/box-reference.js.map +1 -1
  400. package/packages/indexer_client/src/models/box-reference.mjs.map +1 -1
  401. package/packages/indexer_client/src/models/box.js.map +1 -1
  402. package/packages/indexer_client/src/models/box.mjs.map +1 -1
  403. package/packages/indexer_client/src/models/boxes-response.js.map +1 -1
  404. package/packages/indexer_client/src/models/boxes-response.mjs.map +1 -1
  405. package/packages/indexer_client/src/models/eval-delta-key-value.js.map +1 -1
  406. package/packages/indexer_client/src/models/eval-delta-key-value.mjs.map +1 -1
  407. package/packages/indexer_client/src/models/eval-delta.js.map +1 -1
  408. package/packages/indexer_client/src/models/eval-delta.mjs.map +1 -1
  409. package/packages/indexer_client/src/models/hash-factory.js.map +1 -1
  410. package/packages/indexer_client/src/models/hash-factory.mjs.map +1 -1
  411. package/packages/indexer_client/src/models/hb-proof-fields.js.map +1 -1
  412. package/packages/indexer_client/src/models/hb-proof-fields.mjs.map +1 -1
  413. package/packages/indexer_client/src/models/health-check.js.map +1 -1
  414. package/packages/indexer_client/src/models/health-check.mjs.map +1 -1
  415. package/packages/indexer_client/src/models/holding-ref.js.map +1 -1
  416. package/packages/indexer_client/src/models/holding-ref.mjs.map +1 -1
  417. package/packages/indexer_client/src/models/indexer-state-proof-message.js.map +1 -1
  418. package/packages/indexer_client/src/models/indexer-state-proof-message.mjs.map +1 -1
  419. package/packages/indexer_client/src/models/locals-ref.js.map +1 -1
  420. package/packages/indexer_client/src/models/locals-ref.mjs.map +1 -1
  421. package/packages/indexer_client/src/models/merkle-array-proof.js.map +1 -1
  422. package/packages/indexer_client/src/models/merkle-array-proof.mjs.map +1 -1
  423. package/packages/indexer_client/src/models/mini-asset-holding.js.map +1 -1
  424. package/packages/indexer_client/src/models/mini-asset-holding.mjs.map +1 -1
  425. package/packages/indexer_client/src/models/on-completion.js.map +1 -1
  426. package/packages/indexer_client/src/models/on-completion.mjs.map +1 -1
  427. package/packages/indexer_client/src/models/participation-updates.js.map +1 -1
  428. package/packages/indexer_client/src/models/participation-updates.mjs.map +1 -1
  429. package/packages/indexer_client/src/models/resource-ref.js.map +1 -1
  430. package/packages/indexer_client/src/models/resource-ref.mjs.map +1 -1
  431. package/packages/indexer_client/src/models/state-delta.js.map +1 -1
  432. package/packages/indexer_client/src/models/state-delta.mjs.map +1 -1
  433. package/packages/indexer_client/src/models/state-proof-fields.js.map +1 -1
  434. package/packages/indexer_client/src/models/state-proof-fields.mjs.map +1 -1
  435. package/packages/indexer_client/src/models/state-proof-participant.js.map +1 -1
  436. package/packages/indexer_client/src/models/state-proof-participant.mjs.map +1 -1
  437. package/packages/indexer_client/src/models/state-proof-reveal.js.map +1 -1
  438. package/packages/indexer_client/src/models/state-proof-reveal.mjs.map +1 -1
  439. package/packages/indexer_client/src/models/state-proof-sig-slot.js.map +1 -1
  440. package/packages/indexer_client/src/models/state-proof-sig-slot.mjs.map +1 -1
  441. package/packages/indexer_client/src/models/state-proof-signature.js.map +1 -1
  442. package/packages/indexer_client/src/models/state-proof-signature.mjs.map +1 -1
  443. package/packages/indexer_client/src/models/state-proof-tracking.js.map +1 -1
  444. package/packages/indexer_client/src/models/state-proof-tracking.mjs.map +1 -1
  445. package/packages/indexer_client/src/models/state-proof-verifier.js.map +1 -1
  446. package/packages/indexer_client/src/models/state-proof-verifier.mjs.map +1 -1
  447. package/packages/indexer_client/src/models/state-schema.js.map +1 -1
  448. package/packages/indexer_client/src/models/state-schema.mjs.map +1 -1
  449. package/packages/indexer_client/src/models/teal-key-value-store.js.map +1 -1
  450. package/packages/indexer_client/src/models/teal-key-value-store.mjs.map +1 -1
  451. package/packages/indexer_client/src/models/teal-key-value.js.map +1 -1
  452. package/packages/indexer_client/src/models/teal-key-value.mjs.map +1 -1
  453. package/packages/indexer_client/src/models/teal-value.js.map +1 -1
  454. package/packages/indexer_client/src/models/teal-value.mjs.map +1 -1
  455. package/packages/indexer_client/src/models/transaction-application.js.map +1 -1
  456. package/packages/indexer_client/src/models/transaction-application.mjs.map +1 -1
  457. package/packages/indexer_client/src/models/transaction-asset-config.js.map +1 -1
  458. package/packages/indexer_client/src/models/transaction-asset-config.mjs.map +1 -1
  459. package/packages/indexer_client/src/models/transaction-asset-freeze.js.map +1 -1
  460. package/packages/indexer_client/src/models/transaction-asset-freeze.mjs.map +1 -1
  461. package/packages/indexer_client/src/models/transaction-asset-transfer.js.map +1 -1
  462. package/packages/indexer_client/src/models/transaction-asset-transfer.mjs.map +1 -1
  463. package/packages/indexer_client/src/models/transaction-heartbeat.js.map +1 -1
  464. package/packages/indexer_client/src/models/transaction-heartbeat.mjs.map +1 -1
  465. package/packages/indexer_client/src/models/transaction-keyreg.js.map +1 -1
  466. package/packages/indexer_client/src/models/transaction-keyreg.mjs.map +1 -1
  467. package/packages/indexer_client/src/models/transaction-payment.js.map +1 -1
  468. package/packages/indexer_client/src/models/transaction-payment.mjs.map +1 -1
  469. package/packages/indexer_client/src/models/transaction-response.js.map +1 -1
  470. package/packages/indexer_client/src/models/transaction-response.mjs.map +1 -1
  471. package/packages/indexer_client/src/models/transaction-signature-logicsig.js.map +1 -1
  472. package/packages/indexer_client/src/models/transaction-signature-logicsig.mjs.map +1 -1
  473. package/packages/indexer_client/src/models/transaction-signature-multisig-subsignature.js.map +1 -1
  474. package/packages/indexer_client/src/models/transaction-signature-multisig-subsignature.mjs.map +1 -1
  475. package/packages/indexer_client/src/models/transaction-signature-multisig.js.map +1 -1
  476. package/packages/indexer_client/src/models/transaction-signature-multisig.mjs.map +1 -1
  477. package/packages/indexer_client/src/models/transaction-signature.js.map +1 -1
  478. package/packages/indexer_client/src/models/transaction-signature.mjs.map +1 -1
  479. package/packages/indexer_client/src/models/transaction-state-proof.js.map +1 -1
  480. package/packages/indexer_client/src/models/transaction-state-proof.mjs.map +1 -1
  481. package/packages/indexer_client/src/models/transaction.js.map +1 -1
  482. package/packages/indexer_client/src/models/transaction.mjs.map +1 -1
  483. package/packages/indexer_client/src/models/transactions-response.js.map +1 -1
  484. package/packages/indexer_client/src/models/transactions-response.mjs.map +1 -1
  485. package/packages/kmd_client/src/apis/api-service.js +4 -2
  486. package/packages/kmd_client/src/apis/api-service.js.map +1 -1
  487. package/packages/kmd_client/src/apis/api-service.mjs +4 -2
  488. package/packages/kmd_client/src/apis/api-service.mjs.map +1 -1
  489. package/packages/kmd_client/src/client.js.map +1 -1
  490. package/packages/kmd_client/src/client.mjs.map +1 -1
  491. package/packages/kmd_client/src/core/api-error.js.map +1 -1
  492. package/packages/kmd_client/src/core/api-error.mjs.map +1 -1
  493. package/packages/kmd_client/src/core/base-http-request.js +1 -0
  494. package/packages/kmd_client/src/core/base-http-request.js.map +1 -1
  495. package/packages/kmd_client/src/core/base-http-request.mjs +1 -0
  496. package/packages/kmd_client/src/core/base-http-request.mjs.map +1 -1
  497. package/packages/kmd_client/src/core/fetch-http-request.js.map +1 -1
  498. package/packages/kmd_client/src/core/fetch-http-request.mjs.map +1 -1
  499. package/packages/kmd_client/src/core/model-runtime.js.map +1 -1
  500. package/packages/kmd_client/src/core/model-runtime.mjs.map +1 -1
  501. package/packages/kmd_client/src/core/request.js.map +1 -1
  502. package/packages/kmd_client/src/core/request.mjs.map +1 -1
  503. package/packages/kmd_client/src/models/create-wallet-request.js.map +1 -1
  504. package/packages/kmd_client/src/models/create-wallet-request.mjs.map +1 -1
  505. package/packages/kmd_client/src/models/create-wallet-response.js.map +1 -1
  506. package/packages/kmd_client/src/models/create-wallet-response.mjs.map +1 -1
  507. package/packages/kmd_client/src/models/delete-key-request.js.map +1 -1
  508. package/packages/kmd_client/src/models/delete-key-request.mjs.map +1 -1
  509. package/packages/kmd_client/src/models/delete-multisig-request.js.map +1 -1
  510. package/packages/kmd_client/src/models/delete-multisig-request.mjs.map +1 -1
  511. package/packages/kmd_client/src/models/export-key-request.js.map +1 -1
  512. package/packages/kmd_client/src/models/export-key-request.mjs.map +1 -1
  513. package/packages/kmd_client/src/models/export-key-response.js.map +1 -1
  514. package/packages/kmd_client/src/models/export-key-response.mjs.map +1 -1
  515. package/packages/kmd_client/src/models/export-master-key-request.js.map +1 -1
  516. package/packages/kmd_client/src/models/export-master-key-request.mjs.map +1 -1
  517. package/packages/kmd_client/src/models/export-master-key-response.js.map +1 -1
  518. package/packages/kmd_client/src/models/export-master-key-response.mjs.map +1 -1
  519. package/packages/kmd_client/src/models/export-multisig-request.js.map +1 -1
  520. package/packages/kmd_client/src/models/export-multisig-request.mjs.map +1 -1
  521. package/packages/kmd_client/src/models/export-multisig-response.js.map +1 -1
  522. package/packages/kmd_client/src/models/export-multisig-response.mjs.map +1 -1
  523. package/packages/kmd_client/src/models/generate-key-request.js.map +1 -1
  524. package/packages/kmd_client/src/models/generate-key-request.mjs.map +1 -1
  525. package/packages/kmd_client/src/models/generate-key-response.js.map +1 -1
  526. package/packages/kmd_client/src/models/generate-key-response.mjs.map +1 -1
  527. package/packages/kmd_client/src/models/import-key-request.js.map +1 -1
  528. package/packages/kmd_client/src/models/import-key-request.mjs.map +1 -1
  529. package/packages/kmd_client/src/models/import-key-response.js.map +1 -1
  530. package/packages/kmd_client/src/models/import-key-response.mjs.map +1 -1
  531. package/packages/kmd_client/src/models/import-multisig-request.js.map +1 -1
  532. package/packages/kmd_client/src/models/import-multisig-request.mjs.map +1 -1
  533. package/packages/kmd_client/src/models/import-multisig-response.js.map +1 -1
  534. package/packages/kmd_client/src/models/import-multisig-response.mjs.map +1 -1
  535. package/packages/kmd_client/src/models/init-wallet-handle-token-request.js.map +1 -1
  536. package/packages/kmd_client/src/models/init-wallet-handle-token-request.mjs.map +1 -1
  537. package/packages/kmd_client/src/models/init-wallet-handle-token-response.js.map +1 -1
  538. package/packages/kmd_client/src/models/init-wallet-handle-token-response.mjs.map +1 -1
  539. package/packages/kmd_client/src/models/list-keys-request.js.map +1 -1
  540. package/packages/kmd_client/src/models/list-keys-request.mjs.map +1 -1
  541. package/packages/kmd_client/src/models/list-keys-response.js.map +1 -1
  542. package/packages/kmd_client/src/models/list-keys-response.mjs.map +1 -1
  543. package/packages/kmd_client/src/models/list-multisig-request.js.map +1 -1
  544. package/packages/kmd_client/src/models/list-multisig-request.mjs.map +1 -1
  545. package/packages/kmd_client/src/models/list-multisig-response.js.map +1 -1
  546. package/packages/kmd_client/src/models/list-multisig-response.mjs.map +1 -1
  547. package/packages/kmd_client/src/models/list-wallets-response.js.map +1 -1
  548. package/packages/kmd_client/src/models/list-wallets-response.mjs.map +1 -1
  549. package/packages/kmd_client/src/models/multisig-sig.js.map +1 -1
  550. package/packages/kmd_client/src/models/multisig-sig.mjs.map +1 -1
  551. package/packages/kmd_client/src/models/multisig-subsig.js.map +1 -1
  552. package/packages/kmd_client/src/models/multisig-subsig.mjs.map +1 -1
  553. package/packages/kmd_client/src/models/release-wallet-handle-token-request.js.map +1 -1
  554. package/packages/kmd_client/src/models/release-wallet-handle-token-request.mjs.map +1 -1
  555. package/packages/kmd_client/src/models/rename-wallet-request.js.map +1 -1
  556. package/packages/kmd_client/src/models/rename-wallet-request.mjs.map +1 -1
  557. package/packages/kmd_client/src/models/rename-wallet-response.js.map +1 -1
  558. package/packages/kmd_client/src/models/rename-wallet-response.mjs.map +1 -1
  559. package/packages/kmd_client/src/models/renew-wallet-handle-token-request.js.map +1 -1
  560. package/packages/kmd_client/src/models/renew-wallet-handle-token-request.mjs.map +1 -1
  561. package/packages/kmd_client/src/models/renew-wallet-handle-token-response.js.map +1 -1
  562. package/packages/kmd_client/src/models/renew-wallet-handle-token-response.mjs.map +1 -1
  563. package/packages/kmd_client/src/models/sign-multisig-response.js.map +1 -1
  564. package/packages/kmd_client/src/models/sign-multisig-response.mjs.map +1 -1
  565. package/packages/kmd_client/src/models/sign-multisig-txn-request.js.map +1 -1
  566. package/packages/kmd_client/src/models/sign-multisig-txn-request.mjs.map +1 -1
  567. package/packages/kmd_client/src/models/sign-program-multisig-request.js.map +1 -1
  568. package/packages/kmd_client/src/models/sign-program-multisig-request.mjs.map +1 -1
  569. package/packages/kmd_client/src/models/sign-program-multisig-response.js.map +1 -1
  570. package/packages/kmd_client/src/models/sign-program-multisig-response.mjs.map +1 -1
  571. package/packages/kmd_client/src/models/sign-program-request.js.map +1 -1
  572. package/packages/kmd_client/src/models/sign-program-request.mjs.map +1 -1
  573. package/packages/kmd_client/src/models/sign-program-response.js.map +1 -1
  574. package/packages/kmd_client/src/models/sign-program-response.mjs.map +1 -1
  575. package/packages/kmd_client/src/models/sign-transaction-response.js.map +1 -1
  576. package/packages/kmd_client/src/models/sign-transaction-response.mjs.map +1 -1
  577. package/packages/kmd_client/src/models/sign-txn-request.js.map +1 -1
  578. package/packages/kmd_client/src/models/sign-txn-request.mjs.map +1 -1
  579. package/packages/kmd_client/src/models/tx-type.js.map +1 -1
  580. package/packages/kmd_client/src/models/tx-type.mjs.map +1 -1
  581. package/packages/kmd_client/src/models/versions-response.js.map +1 -1
  582. package/packages/kmd_client/src/models/versions-response.mjs.map +1 -1
  583. package/packages/kmd_client/src/models/wallet-handle.js.map +1 -1
  584. package/packages/kmd_client/src/models/wallet-handle.mjs.map +1 -1
  585. package/packages/kmd_client/src/models/wallet-info-request.js.map +1 -1
  586. package/packages/kmd_client/src/models/wallet-info-request.mjs.map +1 -1
  587. package/packages/kmd_client/src/models/wallet-info-response.js.map +1 -1
  588. package/packages/kmd_client/src/models/wallet-info-response.mjs.map +1 -1
  589. package/packages/kmd_client/src/models/wallet.js.map +1 -1
  590. package/packages/kmd_client/src/models/wallet.mjs.map +1 -1
  591. package/packages/testing/src/globalSetup.js +0 -1
  592. package/packages/testing/src/globalSetup.js.map +1 -1
  593. package/packages/testing/src/globalSetup.mjs.map +1 -1
  594. package/packages/testing/src/mockServer.js.map +1 -1
  595. package/packages/testing/src/mockServer.mjs.map +1 -1
  596. package/packages/transact/src/logicsig.js +2 -1
  597. package/packages/transact/src/logicsig.js.map +1 -1
  598. package/packages/transact/src/logicsig.mjs +2 -1
  599. package/packages/transact/src/logicsig.mjs.map +1 -1
  600. package/packages/transact/src/multisig.js +0 -2
  601. package/packages/transact/src/multisig.js.map +1 -1
  602. package/packages/transact/src/multisig.mjs +0 -2
  603. package/packages/transact/src/multisig.mjs.map +1 -1
  604. package/packages/transact/src/signer.js.map +1 -1
  605. package/packages/transact/src/signer.mjs.map +1 -1
  606. package/packages/transact/src/transactions/app-call.js +22 -23
  607. package/packages/transact/src/transactions/app-call.js.map +1 -1
  608. package/packages/transact/src/transactions/app-call.mjs +22 -23
  609. package/packages/transact/src/transactions/app-call.mjs.map +1 -1
  610. package/packages/transact/src/transactions/asset-config.js +12 -13
  611. package/packages/transact/src/transactions/asset-config.js.map +1 -1
  612. package/packages/transact/src/transactions/asset-config.mjs +12 -13
  613. package/packages/transact/src/transactions/asset-config.mjs.map +1 -1
  614. package/packages/transact/src/transactions/asset-freeze.js +1 -2
  615. package/packages/transact/src/transactions/asset-freeze.js.map +1 -1
  616. package/packages/transact/src/transactions/asset-freeze.mjs +1 -2
  617. package/packages/transact/src/transactions/asset-freeze.mjs.map +1 -1
  618. package/packages/transact/src/transactions/asset-transfer.js +1 -2
  619. package/packages/transact/src/transactions/asset-transfer.js.map +1 -1
  620. package/packages/transact/src/transactions/asset-transfer.mjs +1 -2
  621. package/packages/transact/src/transactions/asset-transfer.mjs.map +1 -1
  622. package/packages/transact/src/transactions/common.js +5 -14
  623. package/packages/transact/src/transactions/common.js.map +1 -1
  624. package/packages/transact/src/transactions/common.mjs +6 -14
  625. package/packages/transact/src/transactions/common.mjs.map +1 -1
  626. package/packages/transact/src/transactions/key-registration.js +8 -9
  627. package/packages/transact/src/transactions/key-registration.js.map +1 -1
  628. package/packages/transact/src/transactions/key-registration.mjs +8 -9
  629. package/packages/transact/src/transactions/key-registration.mjs.map +1 -1
  630. package/packages/transact/src/transactions/reference-types-meta.js.map +1 -1
  631. package/packages/transact/src/transactions/reference-types-meta.mjs.map +1 -1
  632. package/packages/transact/src/transactions/signed-transaction-meta.js.map +1 -1
  633. package/packages/transact/src/transactions/signed-transaction-meta.mjs.map +1 -1
  634. package/packages/transact/src/transactions/signed-transaction.js.map +1 -1
  635. package/packages/transact/src/transactions/signed-transaction.mjs.map +1 -1
  636. package/packages/transact/src/transactions/transaction-meta.js +27 -26
  637. package/packages/transact/src/transactions/transaction-meta.js.map +1 -1
  638. package/packages/transact/src/transactions/transaction-meta.mjs +27 -26
  639. package/packages/transact/src/transactions/transaction-meta.mjs.map +1 -1
  640. package/packages/transact/src/transactions/transaction-type.js.map +1 -1
  641. package/packages/transact/src/transactions/transaction-type.mjs.map +1 -1
  642. package/packages/transact/src/transactions/transaction.js +2 -2
  643. package/packages/transact/src/transactions/transaction.js.map +1 -1
  644. package/packages/transact/src/transactions/transaction.mjs +2 -2
  645. package/packages/transact/src/transactions/transaction.mjs.map +1 -1
  646. package/testing/account.js.map +1 -1
  647. package/testing/account.mjs.map +1 -1
  648. package/testing/fixtures/algokit-log-capture-fixture.js.map +1 -1
  649. package/testing/fixtures/algokit-log-capture-fixture.mjs.map +1 -1
  650. package/testing/fixtures/algorand-fixture.js.map +1 -1
  651. package/testing/fixtures/algorand-fixture.mjs.map +1 -1
  652. package/testing/indexer.js.map +1 -1
  653. package/testing/indexer.mjs.map +1 -1
  654. package/testing/test-logger.js.map +1 -1
  655. package/testing/test-logger.mjs.map +1 -1
  656. package/testing/transaction-logger.js.map +1 -1
  657. package/testing/transaction-logger.mjs.map +1 -1
  658. package/transaction/perform-transaction-composer-simulate.js.map +1 -1
  659. package/transaction/perform-transaction-composer-simulate.mjs.map +1 -1
  660. package/transaction/transaction.js.map +1 -1
  661. package/transaction/transaction.mjs.map +1 -1
  662. package/transactions/app-call.js +33 -43
  663. package/transactions/app-call.js.map +1 -1
  664. package/transactions/app-call.mjs +33 -43
  665. package/transactions/app-call.mjs.map +1 -1
  666. package/transactions/asset-config.js +5 -5
  667. package/transactions/asset-config.js.map +1 -1
  668. package/transactions/asset-config.mjs +5 -5
  669. package/transactions/asset-config.mjs.map +1 -1
  670. package/transactions/asset-transfer.js +4 -4
  671. package/transactions/asset-transfer.js.map +1 -1
  672. package/transactions/asset-transfer.mjs +4 -4
  673. package/transactions/asset-transfer.mjs.map +1 -1
  674. package/transactions/common.js.map +1 -1
  675. package/transactions/common.mjs.map +1 -1
  676. package/transactions/fee-coverage.js +7 -10
  677. package/transactions/fee-coverage.js.map +1 -1
  678. package/transactions/fee-coverage.mjs +7 -10
  679. package/transactions/fee-coverage.mjs.map +1 -1
  680. package/transactions/key-registration.js +3 -3
  681. package/transactions/key-registration.js.map +1 -1
  682. package/transactions/key-registration.mjs +3 -3
  683. package/transactions/key-registration.mjs.map +1 -1
  684. package/transactions/method-call.js +8 -8
  685. package/transactions/method-call.js.map +1 -1
  686. package/transactions/method-call.mjs +8 -8
  687. package/transactions/method-call.mjs.map +1 -1
  688. package/transactions/payment.js +2 -2
  689. package/transactions/payment.js.map +1 -1
  690. package/transactions/payment.mjs +2 -2
  691. package/transactions/payment.mjs.map +1 -1
  692. package/types/account.js.map +1 -1
  693. package/types/algorand-client-transaction-creator.js.map +1 -1
  694. package/types/algorand-client-transaction-sender.js.map +1 -1
  695. package/types/algorand-client.js.map +1 -1
  696. package/types/amount.js.map +1 -1
  697. package/types/app-client.js.map +1 -1
  698. package/types/app-deployer.js.map +1 -1
  699. package/types/app-factory.js.map +1 -1
  700. package/types/app-manager.js.map +1 -1
  701. package/types/app-spec.js.map +1 -1
  702. package/types/asset-manager.js.map +1 -1
  703. package/types/async-event-emitter.js.map +1 -1
  704. package/types/client-manager.js.map +1 -1
  705. package/types/composer.js.map +1 -1
  706. package/types/config.js.map +1 -1
  707. package/types/dispenser-client.js.map +1 -1
  708. package/types/kmd-account-manager.js.map +1 -1
  709. package/types/lifecycle-events.js.map +1 -1
  710. package/types/logic-error.js.map +1 -1
  711. package/types/network-client.js.map +1 -1
  712. package/updatable-config.js.map +1 -1
  713. package/updatable-config.mjs.map +1 -1
  714. package/util.js.map +1 -1
  715. package/util.mjs.map +1 -1
  716. package/packages/algo25/src/english.js.map +0 -1
  717. package/packages/algo25/src/english.mjs.map +0 -1
  718. package/packages/algo25/src/index.js.map +0 -1
  719. package/packages/algo25/src/index.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"signer.mjs","names":[],"sources":["../../../../packages/transact/src/signer.ts"],"sourcesContent":["import { Address, Addressable, concatArrays, Expand, ReadableAddress } from '@algorandfoundation/algokit-common'\nimport { DelegatedLsigSigner, LogicSig, ProgramDataSigner } from './logicsig'\nimport { encodeSignedTransaction, SignedTransaction, validateSignedTransaction } from './transactions/signed-transaction'\nimport { encodeTransaction, Transaction } from './transactions/transaction'\nimport type { RawEd25519Signer } from '@algorandfoundation/algokit-crypto'\nimport { MultisigAccount } from './multisig'\n\n/** Function for signing a group of transactions */\nexport type TransactionSigner = (txnGroup: Transaction[], indexesToSign: number[]) => Promise<Uint8Array[]>\n\n/** A transaction signer attached to an address */\nexport interface AddressWithTransactionSigner extends Addressable {\n signer: TransactionSigner\n}\n\n/** An address that can be used to send transactions that may or may not have a signer */\nexport type SendingAddress = ReadableAddress | AddressWithTransactionSigner\n\n/** A delegated logic signature signer attached to an address */\nexport interface AddressWithDelegatedLsigSigner extends Addressable {\n lsigSigner: DelegatedLsigSigner\n}\n\nexport interface AddressWithProgramDataSigner extends Addressable {\n programDataSigner: ProgramDataSigner\n}\n\nexport type MxBytesSigner = (bytesToSign: Uint8Array) => Promise<Uint8Array>\n\nexport interface AddressWithMxBytesSigner extends Addressable {\n mxBytesSigner: MxBytesSigner\n}\n\nexport type AddressWithSigners = Expand<\n Addressable & AddressWithTransactionSigner & AddressWithDelegatedLsigSigner & AddressWithProgramDataSigner & AddressWithMxBytesSigner\n>\n\nconst SIGN_BYTES_PREFIX = Uint8Array.from([77, 88]) // \"MX\"\n\n/**\n * Generate type-safe domain-separated signer callbacks given an ed25519 pubkey and a signing callback\n * @param args - The arguments for generating signers\n * @param args.ed25519Pubkey - The ed25519 public key used for signing\n * @param args.sendingAddress - The address that will be used as the sender of transactions. If not provided, defaults to the address derived from the ed25519 public key. This is useful when signing for a rekeyed account where the sending address differs from the auth address.\n * @param args.rawEd25519Signer - A callback function that signs raw bytes using the ed25519 private key\n * @returns An object containing the sending address and various signer functions\n */\nexport function generateAddressWithSigners(args: {\n ed25519Pubkey: Uint8Array\n sendingAddress?: Address\n rawEd25519Signer: RawEd25519Signer\n}): AddressWithSigners {\n const { ed25519Pubkey, rawEd25519Signer } = args\n const authAddr = new Address(ed25519Pubkey)\n const sendingAddress = args.sendingAddress ?? authAddr\n\n const signer: TransactionSigner = async (txnGroup: Transaction[], indexesToSign: number[]) => {\n const stxns: SignedTransaction[] = []\n for (const index of indexesToSign) {\n const txn = txnGroup[index]\n const bytesToSign = encodeTransaction(txn)\n const signature = await rawEd25519Signer(bytesToSign)\n const stxn: SignedTransaction = {\n txn,\n sig: signature,\n }\n\n if (!txn.sender.equals(sendingAddress)) {\n stxn.authAddress = authAddr\n }\n\n stxns.push(stxn)\n }\n\n return stxns.map((stxn) => {\n validateSignedTransaction(stxn)\n return encodeSignedTransaction(stxn)\n })\n }\n\n const lsigSigner: DelegatedLsigSigner = async (lsig, msig) => {\n const bytesToSign = lsig.bytesToSignForDelegation(msig)\n const sig = await rawEd25519Signer(bytesToSign)\n return { sig, addr: sendingAddress }\n }\n\n const programDataSigner: ProgramDataSigner = async (data, lsig) => {\n const bytesToSign = lsig.programDataToSign(data)\n return await rawEd25519Signer(bytesToSign)\n }\n\n const mxBytesSigner: MxBytesSigner = async (bytes: Uint8Array) => {\n const bytesToSign = concatArrays(SIGN_BYTES_PREFIX, bytes)\n return await rawEd25519Signer(bytesToSign)\n }\n\n return { addr: sendingAddress, signer, lsigSigner, programDataSigner, mxBytesSigner }\n}\n\n/**\n * Create a makeEmptyTransactionSigner that does not specify any signer or\n * signing capabilities. This should only be used to simulate transactions.\n */\nexport function makeEmptyTransactionSigner(): TransactionSigner {\n return (txnGroup: Transaction[], indexesToSign: number[]) => {\n const unsigned: Uint8Array[] = []\n\n for (const index of indexesToSign) {\n const stxn: SignedTransaction = {\n txn: txnGroup[index],\n sig: new Uint8Array(64).fill(0),\n }\n validateSignedTransaction(stxn)\n unsigned.push(encodeSignedTransaction(stxn))\n }\n\n return Promise.resolve(unsigned)\n }\n}\n\nexport const bytesForSigning = {\n transaction(txn: Transaction): Uint8Array {\n return encodeTransaction(txn)\n },\n mxBytes(bytes: Uint8Array): Uint8Array {\n return concatArrays(SIGN_BYTES_PREFIX, bytes)\n },\n lsigForDelegation(lsig: LogicSig, msig?: MultisigAccount): Uint8Array {\n return lsig.bytesToSignForDelegation(msig)\n },\n programData(lsig: LogicSig, data: Uint8Array): Uint8Array {\n return lsig.programDataToSign(data)\n },\n}\n"],"mappings":";;;;;AAqCA,MAAM,oBAAoB,WAAW,KAAK,CAAC,IAAI,GAAG,CAAC;;;;;;;;;AAUnD,SAAgB,2BAA2B,MAIpB;CACrB,MAAM,EAAE,eAAe,qBAAqB;CAC5C,MAAM,WAAW,IAAI,QAAQ,cAAc;CAC3C,MAAM,iBAAiB,KAAK,kBAAkB;CAE9C,MAAM,SAA4B,OAAO,UAAyB,kBAA4B;EAC5F,MAAM,QAA6B,EAAE;AACrC,OAAK,MAAM,SAAS,eAAe;GACjC,MAAM,MAAM,SAAS;GAGrB,MAAM,OAA0B;IAC9B;IACA,KAHgB,MAAM,iBADJ,kBAAkB,IAAI,CACW;IAIpD;AAED,OAAI,CAAC,IAAI,OAAO,OAAO,eAAe,CACpC,MAAK,cAAc;AAGrB,SAAM,KAAK,KAAK;;AAGlB,SAAO,MAAM,KAAK,SAAS;AACzB,6BAA0B,KAAK;AAC/B,UAAO,wBAAwB,KAAK;IACpC;;CAGJ,MAAM,aAAkC,OAAO,MAAM,SAAS;AAG5D,SAAO;GAAE,KADG,MAAM,iBADE,KAAK,yBAAyB,KAAK,CACR;GACjC,MAAM;GAAgB;;CAGtC,MAAM,oBAAuC,OAAO,MAAM,SAAS;AAEjE,SAAO,MAAM,iBADO,KAAK,kBAAkB,KAAK,CACN;;CAG5C,MAAM,gBAA+B,OAAO,UAAsB;AAEhE,SAAO,MAAM,iBADO,aAAa,mBAAmB,MAAM,CAChB;;AAG5C,QAAO;EAAE,MAAM;EAAgB;EAAQ;EAAY;EAAmB;EAAe;;;;;;AAOvF,SAAgB,6BAAgD;AAC9D,SAAQ,UAAyB,kBAA4B;EAC3D,MAAM,WAAyB,EAAE;AAEjC,OAAK,MAAM,SAAS,eAAe;GACjC,MAAM,OAA0B;IAC9B,KAAK,SAAS;IACd,KAAK,IAAI,WAAW,GAAG,CAAC,KAAK,EAAE;IAChC;AACD,6BAA0B,KAAK;AAC/B,YAAS,KAAK,wBAAwB,KAAK,CAAC;;AAG9C,SAAO,QAAQ,QAAQ,SAAS;;;AAIpC,MAAa,kBAAkB;CAC7B,YAAY,KAA8B;AACxC,SAAO,kBAAkB,IAAI;;CAE/B,QAAQ,OAA+B;AACrC,SAAO,aAAa,mBAAmB,MAAM;;CAE/C,kBAAkB,MAAgB,MAAoC;AACpE,SAAO,KAAK,yBAAyB,KAAK;;CAE5C,YAAY,MAAgB,MAA8B;AACxD,SAAO,KAAK,kBAAkB,KAAK;;CAEtC"}
1
+ {"version":3,"file":"signer.mjs","names":[],"sources":["../../../../packages/transact/src/signer.ts"],"sourcesContent":["import { Address, Addressable, concatArrays, Expand, ReadableAddress } from '@algorandfoundation/algokit-common'\nimport { DelegatedLsigSigner, LogicSig, ProgramDataSigner } from './logicsig'\nimport { encodeSignedTransaction, SignedTransaction, validateSignedTransaction } from './transactions/signed-transaction'\nimport { encodeTransaction, Transaction } from './transactions/transaction'\nimport type { RawEd25519Signer } from '@algorandfoundation/algokit-crypto'\nimport { MultisigAccount } from './multisig'\n\n/** Function for signing a group of transactions */\nexport type TransactionSigner = (txnGroup: Transaction[], indexesToSign: number[]) => Promise<Uint8Array[]>\n\n/** A transaction signer attached to an address */\nexport interface AddressWithTransactionSigner extends Addressable {\n signer: TransactionSigner\n}\n\n/** An address that can be used to send transactions that may or may not have a signer */\nexport type SendingAddress = ReadableAddress | AddressWithTransactionSigner\n\n/** A delegated logic signature signer attached to an address */\nexport interface AddressWithDelegatedLsigSigner extends Addressable {\n lsigSigner: DelegatedLsigSigner\n}\n\nexport interface AddressWithProgramDataSigner extends Addressable {\n programDataSigner: ProgramDataSigner\n}\n\nexport type MxBytesSigner = (bytesToSign: Uint8Array) => Promise<Uint8Array>\n\nexport interface AddressWithMxBytesSigner extends Addressable {\n mxBytesSigner: MxBytesSigner\n}\n\nexport type AddressWithSigners = Expand<\n Addressable & AddressWithTransactionSigner & AddressWithDelegatedLsigSigner & AddressWithProgramDataSigner & AddressWithMxBytesSigner\n>\n\nconst SIGN_BYTES_PREFIX = Uint8Array.from([77, 88]) // \"MX\"\n\n/**\n * Generate type-safe domain-separated signer callbacks given an ed25519 pubkey and a signing callback\n * @param args - The arguments for generating signers\n * @param args.ed25519Pubkey - The ed25519 public key used for signing\n * @param args.sendingAddress - The address that will be used as the sender of transactions. If not provided, defaults to the address derived from the ed25519 public key. This is useful when signing for a rekeyed account where the sending address differs from the auth address.\n * @param args.rawEd25519Signer - A callback function that signs raw bytes using the ed25519 private key\n * @returns An object containing the sending address and various signer functions\n */\nexport function generateAddressWithSigners(args: {\n ed25519Pubkey: Uint8Array\n sendingAddress?: Address\n rawEd25519Signer: RawEd25519Signer\n}): AddressWithSigners {\n const { ed25519Pubkey, rawEd25519Signer } = args\n const authAddr = new Address(ed25519Pubkey)\n const sendingAddress = args.sendingAddress ?? authAddr\n\n const signer: TransactionSigner = async (txnGroup: Transaction[], indexesToSign: number[]) => {\n const stxns: SignedTransaction[] = []\n for (const index of indexesToSign) {\n const txn = txnGroup[index]\n const bytesToSign = encodeTransaction(txn)\n const signature = await rawEd25519Signer(bytesToSign)\n const stxn: SignedTransaction = {\n txn,\n sig: signature,\n }\n\n if (!txn.sender.equals(sendingAddress)) {\n stxn.authAddress = authAddr\n }\n\n stxns.push(stxn)\n }\n\n return stxns.map((stxn) => {\n validateSignedTransaction(stxn)\n return encodeSignedTransaction(stxn)\n })\n }\n\n const lsigSigner: DelegatedLsigSigner = async (lsig, msig) => {\n const bytesToSign = lsig.bytesToSignForDelegation(msig)\n const sig = await rawEd25519Signer(bytesToSign)\n return { sig, addr: sendingAddress }\n }\n\n const programDataSigner: ProgramDataSigner = async (data, lsig) => {\n const bytesToSign = lsig.programDataToSign(data)\n return await rawEd25519Signer(bytesToSign)\n }\n\n const mxBytesSigner: MxBytesSigner = async (bytes: Uint8Array) => {\n const bytesToSign = concatArrays(SIGN_BYTES_PREFIX, bytes)\n return await rawEd25519Signer(bytesToSign)\n }\n\n return { addr: sendingAddress, signer, lsigSigner, programDataSigner, mxBytesSigner }\n}\n\n/**\n * Create a makeEmptyTransactionSigner that does not specify any signer or\n * signing capabilities. This should only be used to simulate transactions.\n */\nexport function makeEmptyTransactionSigner(): TransactionSigner {\n return (txnGroup: Transaction[], indexesToSign: number[]) => {\n const unsigned: Uint8Array[] = []\n\n for (const index of indexesToSign) {\n const stxn: SignedTransaction = {\n txn: txnGroup[index],\n sig: new Uint8Array(64).fill(0),\n }\n validateSignedTransaction(stxn)\n unsigned.push(encodeSignedTransaction(stxn))\n }\n\n return Promise.resolve(unsigned)\n }\n}\n\nexport const bytesForSigning = {\n transaction(txn: Transaction): Uint8Array {\n return encodeTransaction(txn)\n },\n mxBytes(bytes: Uint8Array): Uint8Array {\n return concatArrays(SIGN_BYTES_PREFIX, bytes)\n },\n lsigForDelegation(lsig: LogicSig, msig?: MultisigAccount): Uint8Array {\n return lsig.bytesToSignForDelegation(msig)\n },\n programData(lsig: LogicSig, data: Uint8Array): Uint8Array {\n return lsig.programDataToSign(data)\n },\n}\n"],"mappings":";;;;;AAqCA,MAAM,oBAAoB,WAAW,KAAK,CAAC,IAAI,EAAE,CAAC;;;;;;;;;AAUlD,SAAgB,2BAA2B,MAIpB;CACrB,MAAM,EAAE,eAAe,qBAAqB;CAC5C,MAAM,WAAW,IAAI,QAAQ,aAAa;CAC1C,MAAM,iBAAiB,KAAK,kBAAkB;CAE9C,MAAM,SAA4B,OAAO,UAAyB,kBAA4B;EAC5F,MAAM,QAA6B,CAAC;EACpC,KAAK,MAAM,SAAS,eAAe;GACjC,MAAM,MAAM,SAAS;GAGrB,MAAM,OAA0B;IAC9B;IACA,KAAK,MAHiB,iBADJ,kBAAkB,GACa,CAAC;GAIpD;GAEA,IAAI,CAAC,IAAI,OAAO,OAAO,cAAc,GACnC,KAAK,cAAc;GAGrB,MAAM,KAAK,IAAI;EACjB;EAEA,OAAO,MAAM,KAAK,SAAS;GACzB,0BAA0B,IAAI;GAC9B,OAAO,wBAAwB,IAAI;EACrC,CAAC;CACH;CAEA,MAAM,aAAkC,OAAO,MAAM,SAAS;EAG5D,OAAO;GAAE,KAAA,MADS,iBADE,KAAK,yBAAyB,IACL,CAAC;GAChC,MAAM;EAAe;CACrC;CAEA,MAAM,oBAAuC,OAAO,MAAM,SAAS;EAEjE,OAAO,MAAM,iBADO,KAAK,kBAAkB,IACH,CAAC;CAC3C;CAEA,MAAM,gBAA+B,OAAO,UAAsB;EAEhE,OAAO,MAAM,iBADO,aAAa,mBAAmB,KACZ,CAAC;CAC3C;CAEA,OAAO;EAAE,MAAM;EAAgB;EAAQ;EAAY;EAAmB;CAAc;AACtF;;;;;AAMA,SAAgB,6BAAgD;CAC9D,QAAQ,UAAyB,kBAA4B;EAC3D,MAAM,WAAyB,CAAC;EAEhC,KAAK,MAAM,SAAS,eAAe;GACjC,MAAM,OAA0B;IAC9B,KAAK,SAAS;IACd,KAAK,IAAI,WAAW,EAAE,EAAE,KAAK,CAAC;GAChC;GACA,0BAA0B,IAAI;GAC9B,SAAS,KAAK,wBAAwB,IAAI,CAAC;EAC7C;EAEA,OAAO,QAAQ,QAAQ,QAAQ;CACjC;AACF;AAEA,MAAa,kBAAkB;CAC7B,YAAY,KAA8B;EACxC,OAAO,kBAAkB,GAAG;CAC9B;CACA,QAAQ,OAA+B;EACrC,OAAO,aAAa,mBAAmB,KAAK;CAC9C;CACA,kBAAkB,MAAgB,MAAoC;EACpE,OAAO,KAAK,yBAAyB,IAAI;CAC3C;CACA,YAAY,MAAgB,MAA8B;EACxD,OAAO,KAAK,kBAAkB,IAAI;CACpC;AACF"}
@@ -1,5 +1,4 @@
1
1
  const require_constants = require("../../../common/src/constants.js");
2
- const require_common = require("./common.js");
3
2
  //#region packages/transact/src/transactions/app-call.ts
4
3
  /**
5
4
  * On-completion actions for application transactions.
@@ -63,16 +62,16 @@ function validateAppCallTransaction(appCall) {
63
62
  function validateAppCreation(appCall) {
64
63
  const errors = new Array();
65
64
  if (!appCall.approvalProgram || appCall.approvalProgram.length === 0) errors.push({
66
- type: require_common.TransactionValidationErrorType.RequiredField,
65
+ type: 0,
67
66
  data: FIELD_APPROVAL_PROGRAM
68
67
  });
69
68
  if (!appCall.clearStateProgram || appCall.clearStateProgram.length === 0) errors.push({
70
- type: require_common.TransactionValidationErrorType.RequiredField,
69
+ type: 0,
71
70
  data: FIELD_CLEAR_STATE_PROGRAM
72
71
  });
73
72
  const extraPages = appCall.extraProgramPages ?? 0;
74
73
  if (extraPages > 3) errors.push({
75
- type: require_common.TransactionValidationErrorType.FieldTooLong,
74
+ type: 1,
76
75
  data: {
77
76
  field: FIELD_EXTRA_PROGRAM_PAGES,
78
77
  actual: extraPages,
@@ -82,7 +81,7 @@ function validateAppCreation(appCall) {
82
81
  });
83
82
  const maxProgramSize = require_constants.PROGRAM_PAGE_SIZE + extraPages * require_constants.PROGRAM_PAGE_SIZE;
84
83
  if (appCall.approvalProgram && appCall.approvalProgram.length > maxProgramSize) errors.push({
85
- type: require_common.TransactionValidationErrorType.FieldTooLong,
84
+ type: 1,
86
85
  data: {
87
86
  field: FIELD_APPROVAL_PROGRAM,
88
87
  actual: appCall.approvalProgram.length,
@@ -91,7 +90,7 @@ function validateAppCreation(appCall) {
91
90
  }
92
91
  });
93
92
  if (appCall.clearStateProgram && appCall.clearStateProgram.length > maxProgramSize) errors.push({
94
- type: require_common.TransactionValidationErrorType.FieldTooLong,
93
+ type: 1,
95
94
  data: {
96
95
  field: FIELD_CLEAR_STATE_PROGRAM,
97
96
  actual: appCall.clearStateProgram.length,
@@ -101,7 +100,7 @@ function validateAppCreation(appCall) {
101
100
  });
102
101
  const totalProgramSize = (appCall.approvalProgram?.length ?? 0) + (appCall.clearStateProgram?.length ?? 0);
103
102
  if (totalProgramSize > maxProgramSize) errors.push({
104
- type: require_common.TransactionValidationErrorType.FieldTooLong,
103
+ type: 1,
105
104
  data: {
106
105
  field: "Combined approval and clear state programs",
107
106
  actual: totalProgramSize,
@@ -111,7 +110,7 @@ function validateAppCreation(appCall) {
111
110
  });
112
111
  if (appCall.globalStateSchema) {
113
112
  if (appCall.globalStateSchema.numUints + appCall.globalStateSchema.numByteSlices > 64) errors.push({
114
- type: require_common.TransactionValidationErrorType.FieldTooLong,
113
+ type: 1,
115
114
  data: {
116
115
  field: FIELD_GLOBAL_STATE_SCHEMA,
117
116
  actual: appCall.globalStateSchema.numUints + appCall.globalStateSchema.numByteSlices,
@@ -122,7 +121,7 @@ function validateAppCreation(appCall) {
122
121
  }
123
122
  if (appCall.localStateSchema) {
124
123
  if (appCall.localStateSchema.numUints + appCall.localStateSchema.numByteSlices > 16) errors.push({
125
- type: require_common.TransactionValidationErrorType.FieldTooLong,
124
+ type: 1,
126
125
  data: {
127
126
  field: FIELD_LOCAL_STATE_SCHEMA,
128
127
  actual: appCall.localStateSchema.numUints + appCall.localStateSchema.numByteSlices,
@@ -138,26 +137,26 @@ function validateAppCreation(appCall) {
138
137
  */
139
138
  function validateAppOperation(appCall) {
140
139
  const errors = new Array();
141
- if (appCall.onComplete === OnApplicationComplete.UpdateApplication) {
140
+ if (appCall.onComplete === 4) {
142
141
  if (!appCall.approvalProgram || appCall.approvalProgram.length === 0) errors.push({
143
- type: require_common.TransactionValidationErrorType.RequiredField,
142
+ type: 0,
144
143
  data: FIELD_APPROVAL_PROGRAM
145
144
  });
146
145
  if (!appCall.clearStateProgram || appCall.clearStateProgram.length === 0) errors.push({
147
- type: require_common.TransactionValidationErrorType.RequiredField,
146
+ type: 0,
148
147
  data: FIELD_CLEAR_STATE_PROGRAM
149
148
  });
150
149
  }
151
150
  if (appCall.globalStateSchema !== void 0) errors.push({
152
- type: require_common.TransactionValidationErrorType.ImmutableField,
151
+ type: 2,
153
152
  data: FIELD_GLOBAL_STATE_SCHEMA
154
153
  });
155
154
  if (appCall.localStateSchema !== void 0) errors.push({
156
- type: require_common.TransactionValidationErrorType.ImmutableField,
155
+ type: 2,
157
156
  data: FIELD_LOCAL_STATE_SCHEMA
158
157
  });
159
158
  if (appCall.extraProgramPages !== void 0) errors.push({
160
- type: require_common.TransactionValidationErrorType.ImmutableField,
159
+ type: 2,
161
160
  data: FIELD_EXTRA_PROGRAM_PAGES
162
161
  });
163
162
  return errors;
@@ -169,7 +168,7 @@ function validateAppCommonFields(appCall) {
169
168
  const errors = new Array();
170
169
  if (appCall.args) {
171
170
  if (appCall.args.length > 16) errors.push({
172
- type: require_common.TransactionValidationErrorType.FieldTooLong,
171
+ type: 1,
173
172
  data: {
174
173
  field: FIELD_ARGS,
175
174
  actual: appCall.args.length,
@@ -179,7 +178,7 @@ function validateAppCommonFields(appCall) {
179
178
  });
180
179
  const totalArgsSize = appCall.args.reduce((sum, arg) => sum + arg.length, 0);
181
180
  if (totalArgsSize > 2048) errors.push({
182
- type: require_common.TransactionValidationErrorType.FieldTooLong,
181
+ type: 1,
183
182
  data: {
184
183
  field: "Args total size",
185
184
  actual: totalArgsSize,
@@ -189,7 +188,7 @@ function validateAppCommonFields(appCall) {
189
188
  });
190
189
  }
191
190
  if (appCall.accountReferences && appCall.accountReferences.length > 8) errors.push({
192
- type: require_common.TransactionValidationErrorType.FieldTooLong,
191
+ type: 1,
193
192
  data: {
194
193
  field: "Account references",
195
194
  actual: appCall.accountReferences.length,
@@ -198,7 +197,7 @@ function validateAppCommonFields(appCall) {
198
197
  }
199
198
  });
200
199
  if (appCall.appReferences && appCall.appReferences.length > 8) errors.push({
201
- type: require_common.TransactionValidationErrorType.FieldTooLong,
200
+ type: 1,
202
201
  data: {
203
202
  field: "App references",
204
203
  actual: appCall.appReferences.length,
@@ -207,7 +206,7 @@ function validateAppCommonFields(appCall) {
207
206
  }
208
207
  });
209
208
  if (appCall.assetReferences && appCall.assetReferences.length > 8) errors.push({
210
- type: require_common.TransactionValidationErrorType.FieldTooLong,
209
+ type: 1,
211
210
  data: {
212
211
  field: "Asset references",
213
212
  actual: appCall.assetReferences.length,
@@ -217,7 +216,7 @@ function validateAppCommonFields(appCall) {
217
216
  });
218
217
  if (appCall.boxReferences) {
219
218
  if (appCall.boxReferences.length > 8) errors.push({
220
- type: require_common.TransactionValidationErrorType.FieldTooLong,
219
+ type: 1,
221
220
  data: {
222
221
  field: "Box references",
223
222
  actual: appCall.boxReferences.length,
@@ -227,13 +226,13 @@ function validateAppCommonFields(appCall) {
227
226
  });
228
227
  const appRefs = appCall.appReferences || [];
229
228
  for (const boxRef of appCall.boxReferences) if (boxRef.appId !== 0n && boxRef.appId !== appCall.appId && !appRefs.includes(boxRef.appId)) errors.push({
230
- type: require_common.TransactionValidationErrorType.ArbitraryConstraint,
229
+ type: 4,
231
230
  data: `Box reference for app ID ${boxRef.appId} must be in app references`
232
231
  });
233
232
  }
234
233
  const totalReferences = (appCall.accountReferences?.length || 0) + (appCall.appReferences?.length || 0) + (appCall.assetReferences?.length || 0) + (appCall.boxReferences?.length || 0);
235
234
  if (totalReferences > 8) errors.push({
236
- type: require_common.TransactionValidationErrorType.FieldTooLong,
235
+ type: 1,
237
236
  data: {
238
237
  field: "Total references",
239
238
  actual: totalReferences,
@@ -1 +1 @@
1
- {"version":3,"file":"app-call.js","names":["TransactionValidationErrorType","PROGRAM_PAGE_SIZE","MAX_ARGS_SIZE"],"sources":["../../../../../packages/transact/src/transactions/app-call.ts"],"sourcesContent":["import {\n Address,\n MAX_ACCOUNT_REFERENCES,\n MAX_APP_ARGS,\n MAX_APP_REFERENCES,\n MAX_ARGS_SIZE,\n MAX_ASSET_REFERENCES,\n MAX_BOX_REFERENCES,\n MAX_EXTRA_PROGRAM_PAGES,\n MAX_GLOBAL_STATE_KEYS,\n MAX_LOCAL_STATE_KEYS,\n MAX_OVERALL_REFERENCES,\n PROGRAM_PAGE_SIZE,\n} from '@algorandfoundation/algokit-common'\nimport { TransactionValidationError, TransactionValidationErrorType } from './common'\n\n/**\n * Represents an app call transaction that interacts with Algorand Smart Contracts.\n *\n * App call transactions are used to create, update, delete, opt-in to,\n * close out of, or clear state from Algorand apps (smart contracts).\n */\nexport type AppCallTransactionFields = {\n /**\n * ID of the app being called.\n *\n * Set this to 0 to indicate an app creation call.\n */\n appId: bigint\n\n /**\n * Defines what additional actions occur with the transaction.\n */\n onComplete: OnApplicationComplete\n\n /**\n * Logic executed for every app call transaction, except when\n * on-completion is set to \"clear\".\n *\n * Approval programs may reject the transaction.\n * Only required for app creation and update transactions.\n */\n approvalProgram?: Uint8Array\n\n /**\n * Logic executed for app call transactions with on-completion set to \"clear\".\n *\n * Clear state programs cannot reject the transaction.\n * Only required for app creation and update transactions.\n */\n clearStateProgram?: Uint8Array\n\n /**\n * Holds the maximum number of global state values.\n *\n * Only required for app creation transactions.\n * This cannot be changed after creation.\n */\n globalStateSchema?: StateSchema\n\n /**\n * Holds the maximum number of local state values.\n *\n * Only required for app creation transactions.\n * This cannot be changed after creation.\n */\n localStateSchema?: StateSchema\n\n /**\n * Number of additional pages allocated to the app's approval\n * and clear state programs.\n *\n * Each extra program page is 2048 bytes. The sum of approval program\n * and clear state program may not exceed 2048*(1+extra_program_pages) bytes.\n * Currently, the maximum value is 3.\n * This cannot be changed after creation.\n */\n extraProgramPages?: number\n\n /**\n * Transaction specific arguments available in the app's\n * approval program and clear state program.\n */\n args?: Uint8Array[]\n\n /**\n * List of accounts in addition to the sender that may be accessed\n * from the app's approval program and clear state program.\n */\n accountReferences?: Address[]\n\n /**\n * List of apps in addition to the current app that may be called\n * from the app's approval program and clear state program.\n */\n appReferences?: bigint[]\n\n /**\n * Lists the assets whose parameters may be accessed by this app's\n * approval program and clear state program.\n *\n * The access is read-only.\n */\n assetReferences?: bigint[]\n\n /**\n * The boxes that should be made available for the runtime of the program.\n */\n boxReferences?: BoxReference[]\n\n /**\n * Resources accessed by the application\n */\n accessReferences?: ResourceReference[]\n\n /**\n * If set, the transaction will be rejected when the app's version is greater than or equal to this value. This can be used to prevent calling an app after it has been updated. Set to 0 or leave undefined to skip the version check.\n * */\n rejectVersion?: number\n}\n\n/**\n * On-completion actions for application transactions.\n *\n * These values define what additional actions occur with the transaction.\n */\nexport enum OnApplicationComplete {\n /**\n * NoOp indicates that an app transaction will simply call its\n * approval program without any additional action.\n */\n NoOp,\n /**\n * OptIn indicates that an app transaction will allocate some\n * local state for the app in the sender's account.\n */\n OptIn,\n /**\n * CloseOut indicates that an app transaction will deallocate\n * some local state for the app from the user's account.\n */\n CloseOut,\n /**\n * ClearState is similar to CloseOut, but may never fail. This\n * allows users to reclaim their minimum balance from an app\n * they no longer wish to opt in to.\n */\n ClearState,\n /**\n * UpdateApplication indicates that an app transaction will\n * update the approval program and clear state program for the app.\n */\n UpdateApplication,\n /**\n * DeleteApplication indicates that an app transaction will\n * delete the app parameters for the app from the creator's\n * balance record.\n */\n DeleteApplication,\n}\n\n/**\n * Schema for app state storage.\n *\n * Defines the maximum number of values that may be stored in app\n * key/value storage for both global and local state.\n */\nexport type StateSchema = {\n /**\n * Maximum number of integer values that may be stored.\n */\n numUints: number\n\n /**\n * Maximum number of byte slice values that may be stored.\n */\n numByteSlices: number\n}\n\n/**\n * Box reference for app call transactions.\n *\n * References a specific box that should be made available for the runtime\n * of the program.\n */\nexport type BoxReference = {\n /**\n * App ID that owns the box.\n * A value of 0 indicates the current app.\n */\n appId: bigint\n\n /**\n * Name of the box.\n */\n name: Uint8Array\n}\n\n/**\n * Names a single resource reference. Only one of the fields should be set.\n */\nexport type ResourceReference = {\n /** Any account addresses whose balance record is accessible by the executing ApprovalProgram or ClearStateProgram. */\n address?: Address\n /** Application ID whose GlobalState may be read by the executing ApprovalProgram or ClearStateProgram. */\n appId?: bigint\n /** Asset ID whose AssetParams may be read by the executing ApprovalProgram or ClearStateProgram. */\n assetId?: bigint\n /** Defines a holding by referring to an Address and Asset it belongs to. */\n holding?: HoldingReference\n /** Defines a local state by referring to an Address and App it belongs to. */\n locals?: LocalsReference\n /** Defines a box by its name and the application ID it belongs to. */\n box?: BoxReference\n}\n\n/**\n * A grouping of the asset index and address of the account\n */\nexport type HoldingReference = {\n /** The asset index of the holding */\n assetId: bigint\n\n /** The address of the account holding the asset */\n address: Address\n}\n\n/** A grouping of the application index and address of the account\n */\nexport type LocalsReference = {\n /** The application index of the local state */\n appId: bigint\n\n /** The address of the account holding the local state */\n address: Address\n}\n\nconst FIELD_ARGS = 'Args'\nconst FIELD_APPROVAL_PROGRAM = 'Approval program'\nconst FIELD_CLEAR_STATE_PROGRAM = 'Clear state program'\nconst FIELD_GLOBAL_STATE_SCHEMA = 'Global state schema'\nconst FIELD_LOCAL_STATE_SCHEMA = 'Local state schema'\nconst FIELD_EXTRA_PROGRAM_PAGES = 'Extra program pages'\n\n/**\n * Validate app call transaction fields\n */\nexport function validateAppCallTransaction(appCall: AppCallTransactionFields): TransactionValidationError[] {\n const errors = new Array<TransactionValidationError>()\n\n if (appCall.appId === 0n) {\n // App creation\n errors.push(...validateAppCreation(appCall))\n } else {\n // App call, update, or delete\n errors.push(...validateAppOperation(appCall))\n }\n\n // Common validations for all app operations\n errors.push(...validateAppCommonFields(appCall))\n\n return errors\n}\n\n/**\n * Validate app creation fields\n */\nfunction validateAppCreation(appCall: AppCallTransactionFields): TransactionValidationError[] {\n const errors = new Array<TransactionValidationError>()\n\n if (!appCall.approvalProgram || appCall.approvalProgram.length === 0) {\n errors.push({ type: TransactionValidationErrorType.RequiredField, data: FIELD_APPROVAL_PROGRAM })\n }\n\n if (!appCall.clearStateProgram || appCall.clearStateProgram.length === 0) {\n errors.push({ type: TransactionValidationErrorType.RequiredField, data: FIELD_CLEAR_STATE_PROGRAM })\n }\n\n const extraPages = appCall.extraProgramPages ?? 0\n if (extraPages > MAX_EXTRA_PROGRAM_PAGES) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: FIELD_EXTRA_PROGRAM_PAGES, actual: extraPages, max: MAX_EXTRA_PROGRAM_PAGES, unit: 'pages' },\n })\n }\n\n const maxProgramSize = PROGRAM_PAGE_SIZE + extraPages * PROGRAM_PAGE_SIZE\n\n if (appCall.approvalProgram && appCall.approvalProgram.length > maxProgramSize) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: FIELD_APPROVAL_PROGRAM, actual: appCall.approvalProgram.length, max: maxProgramSize, unit: 'bytes' },\n })\n }\n\n if (appCall.clearStateProgram && appCall.clearStateProgram.length > maxProgramSize) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: FIELD_CLEAR_STATE_PROGRAM, actual: appCall.clearStateProgram.length, max: maxProgramSize, unit: 'bytes' },\n })\n }\n\n const totalProgramSize = (appCall.approvalProgram?.length ?? 0) + (appCall.clearStateProgram?.length ?? 0)\n if (totalProgramSize > maxProgramSize) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'Combined approval and clear state programs', actual: totalProgramSize, max: maxProgramSize, unit: 'bytes' },\n })\n }\n\n if (appCall.globalStateSchema) {\n const totalKeys = appCall.globalStateSchema.numUints + appCall.globalStateSchema.numByteSlices\n if (totalKeys > MAX_GLOBAL_STATE_KEYS) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: {\n field: FIELD_GLOBAL_STATE_SCHEMA,\n actual: appCall.globalStateSchema.numUints + appCall.globalStateSchema.numByteSlices,\n max: MAX_GLOBAL_STATE_KEYS,\n unit: 'keys',\n },\n })\n }\n }\n\n if (appCall.localStateSchema) {\n const totalKeys = appCall.localStateSchema.numUints + appCall.localStateSchema.numByteSlices\n if (totalKeys > MAX_LOCAL_STATE_KEYS) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: {\n field: FIELD_LOCAL_STATE_SCHEMA,\n actual: appCall.localStateSchema.numUints + appCall.localStateSchema.numByteSlices,\n max: MAX_LOCAL_STATE_KEYS,\n unit: 'keys',\n },\n })\n }\n }\n\n return errors\n}\n\n/**\n * Validate app operation (update, delete, call) fields\n */\nfunction validateAppOperation(appCall: AppCallTransactionFields): TransactionValidationError[] {\n const errors = new Array<TransactionValidationError>()\n\n if (appCall.onComplete === OnApplicationComplete.UpdateApplication) {\n if (!appCall.approvalProgram || appCall.approvalProgram.length === 0) {\n errors.push({ type: TransactionValidationErrorType.RequiredField, data: FIELD_APPROVAL_PROGRAM })\n }\n if (!appCall.clearStateProgram || appCall.clearStateProgram.length === 0) {\n errors.push({ type: TransactionValidationErrorType.RequiredField, data: FIELD_CLEAR_STATE_PROGRAM })\n }\n }\n\n // These fields are immutable and cannot be set for existing apps\n if (appCall.globalStateSchema !== undefined) {\n errors.push({ type: TransactionValidationErrorType.ImmutableField, data: FIELD_GLOBAL_STATE_SCHEMA })\n }\n if (appCall.localStateSchema !== undefined) {\n errors.push({ type: TransactionValidationErrorType.ImmutableField, data: FIELD_LOCAL_STATE_SCHEMA })\n }\n if (appCall.extraProgramPages !== undefined) {\n errors.push({ type: TransactionValidationErrorType.ImmutableField, data: FIELD_EXTRA_PROGRAM_PAGES })\n }\n\n return errors\n}\n\n/**\n * Validate common app call fields\n */\nfunction validateAppCommonFields(appCall: AppCallTransactionFields): TransactionValidationError[] {\n const errors = new Array<TransactionValidationError>()\n\n if (appCall.args) {\n if (appCall.args.length > MAX_APP_ARGS) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: FIELD_ARGS, actual: appCall.args.length, max: MAX_APP_ARGS, unit: 'arguments' },\n })\n }\n\n const totalArgsSize = appCall.args.reduce((sum, arg) => sum + arg.length, 0)\n if (totalArgsSize > MAX_ARGS_SIZE) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'Args total size', actual: totalArgsSize, max: MAX_ARGS_SIZE, unit: 'bytes' },\n })\n }\n }\n\n if (appCall.accountReferences && appCall.accountReferences.length > MAX_ACCOUNT_REFERENCES) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'Account references', actual: appCall.accountReferences.length, max: MAX_ACCOUNT_REFERENCES, unit: 'refs' },\n })\n }\n\n if (appCall.appReferences && appCall.appReferences.length > MAX_APP_REFERENCES) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'App references', actual: appCall.appReferences.length, max: MAX_APP_REFERENCES, unit: 'refs' },\n })\n }\n\n if (appCall.assetReferences && appCall.assetReferences.length > MAX_ASSET_REFERENCES) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'Asset references', actual: appCall.assetReferences.length, max: MAX_ASSET_REFERENCES, unit: 'refs' },\n })\n }\n\n // Validate box references\n if (appCall.boxReferences) {\n if (appCall.boxReferences.length > MAX_BOX_REFERENCES) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'Box references', actual: appCall.boxReferences.length, max: MAX_BOX_REFERENCES, unit: 'refs' },\n })\n }\n\n // Validate that box reference app IDs are in app references\n const appRefs = appCall.appReferences || []\n for (const boxRef of appCall.boxReferences) {\n if (boxRef.appId !== 0n && boxRef.appId !== appCall.appId && !appRefs.includes(boxRef.appId)) {\n errors.push({\n type: TransactionValidationErrorType.ArbitraryConstraint,\n data: `Box reference for app ID ${boxRef.appId} must be in app references`,\n })\n }\n }\n }\n\n // Validate overall reference count\n const totalReferences =\n (appCall.accountReferences?.length || 0) +\n (appCall.appReferences?.length || 0) +\n (appCall.assetReferences?.length || 0) +\n (appCall.boxReferences?.length || 0)\n\n if (totalReferences > MAX_OVERALL_REFERENCES) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'Total references', actual: totalReferences, max: MAX_OVERALL_REFERENCES, unit: 'refs' },\n })\n }\n\n return errors\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"app-call.js","names":["PROGRAM_PAGE_SIZE","MAX_ARGS_SIZE"],"sources":["../../../../../packages/transact/src/transactions/app-call.ts"],"sourcesContent":["import {\n Address,\n MAX_ACCOUNT_REFERENCES,\n MAX_APP_ARGS,\n MAX_APP_REFERENCES,\n MAX_ARGS_SIZE,\n MAX_ASSET_REFERENCES,\n MAX_BOX_REFERENCES,\n MAX_EXTRA_PROGRAM_PAGES,\n MAX_GLOBAL_STATE_KEYS,\n MAX_LOCAL_STATE_KEYS,\n MAX_OVERALL_REFERENCES,\n PROGRAM_PAGE_SIZE,\n} from '@algorandfoundation/algokit-common'\nimport { TransactionValidationError, TransactionValidationErrorType } from './common'\n\n/**\n * Represents an app call transaction that interacts with Algorand Smart Contracts.\n *\n * App call transactions are used to create, update, delete, opt-in to,\n * close out of, or clear state from Algorand apps (smart contracts).\n */\nexport type AppCallTransactionFields = {\n /**\n * ID of the app being called.\n *\n * Set this to 0 to indicate an app creation call.\n */\n appId: bigint\n\n /**\n * Defines what additional actions occur with the transaction.\n */\n onComplete: OnApplicationComplete\n\n /**\n * Logic executed for every app call transaction, except when\n * on-completion is set to \"clear\".\n *\n * Approval programs may reject the transaction.\n * Only required for app creation and update transactions.\n */\n approvalProgram?: Uint8Array\n\n /**\n * Logic executed for app call transactions with on-completion set to \"clear\".\n *\n * Clear state programs cannot reject the transaction.\n * Only required for app creation and update transactions.\n */\n clearStateProgram?: Uint8Array\n\n /**\n * Holds the maximum number of global state values.\n *\n * Only required for app creation transactions.\n * This cannot be changed after creation.\n */\n globalStateSchema?: StateSchema\n\n /**\n * Holds the maximum number of local state values.\n *\n * Only required for app creation transactions.\n * This cannot be changed after creation.\n */\n localStateSchema?: StateSchema\n\n /**\n * Number of additional pages allocated to the app's approval\n * and clear state programs.\n *\n * Each extra program page is 2048 bytes. The sum of approval program\n * and clear state program may not exceed 2048*(1+extra_program_pages) bytes.\n * Currently, the maximum value is 3.\n * This cannot be changed after creation.\n */\n extraProgramPages?: number\n\n /**\n * Transaction specific arguments available in the app's\n * approval program and clear state program.\n */\n args?: Uint8Array[]\n\n /**\n * List of accounts in addition to the sender that may be accessed\n * from the app's approval program and clear state program.\n */\n accountReferences?: Address[]\n\n /**\n * List of apps in addition to the current app that may be called\n * from the app's approval program and clear state program.\n */\n appReferences?: bigint[]\n\n /**\n * Lists the assets whose parameters may be accessed by this app's\n * approval program and clear state program.\n *\n * The access is read-only.\n */\n assetReferences?: bigint[]\n\n /**\n * The boxes that should be made available for the runtime of the program.\n */\n boxReferences?: BoxReference[]\n\n /**\n * Resources accessed by the application\n */\n accessReferences?: ResourceReference[]\n\n /**\n * If set, the transaction will be rejected when the app's version is greater than or equal to this value. This can be used to prevent calling an app after it has been updated. Set to 0 or leave undefined to skip the version check.\n * */\n rejectVersion?: number\n}\n\n/**\n * On-completion actions for application transactions.\n *\n * These values define what additional actions occur with the transaction.\n */\nexport enum OnApplicationComplete {\n /**\n * NoOp indicates that an app transaction will simply call its\n * approval program without any additional action.\n */\n NoOp,\n /**\n * OptIn indicates that an app transaction will allocate some\n * local state for the app in the sender's account.\n */\n OptIn,\n /**\n * CloseOut indicates that an app transaction will deallocate\n * some local state for the app from the user's account.\n */\n CloseOut,\n /**\n * ClearState is similar to CloseOut, but may never fail. This\n * allows users to reclaim their minimum balance from an app\n * they no longer wish to opt in to.\n */\n ClearState,\n /**\n * UpdateApplication indicates that an app transaction will\n * update the approval program and clear state program for the app.\n */\n UpdateApplication,\n /**\n * DeleteApplication indicates that an app transaction will\n * delete the app parameters for the app from the creator's\n * balance record.\n */\n DeleteApplication,\n}\n\n/**\n * Schema for app state storage.\n *\n * Defines the maximum number of values that may be stored in app\n * key/value storage for both global and local state.\n */\nexport type StateSchema = {\n /**\n * Maximum number of integer values that may be stored.\n */\n numUints: number\n\n /**\n * Maximum number of byte slice values that may be stored.\n */\n numByteSlices: number\n}\n\n/**\n * Box reference for app call transactions.\n *\n * References a specific box that should be made available for the runtime\n * of the program.\n */\nexport type BoxReference = {\n /**\n * App ID that owns the box.\n * A value of 0 indicates the current app.\n */\n appId: bigint\n\n /**\n * Name of the box.\n */\n name: Uint8Array\n}\n\n/**\n * Names a single resource reference. Only one of the fields should be set.\n */\nexport type ResourceReference = {\n /** Any account addresses whose balance record is accessible by the executing ApprovalProgram or ClearStateProgram. */\n address?: Address\n /** Application ID whose GlobalState may be read by the executing ApprovalProgram or ClearStateProgram. */\n appId?: bigint\n /** Asset ID whose AssetParams may be read by the executing ApprovalProgram or ClearStateProgram. */\n assetId?: bigint\n /** Defines a holding by referring to an Address and Asset it belongs to. */\n holding?: HoldingReference\n /** Defines a local state by referring to an Address and App it belongs to. */\n locals?: LocalsReference\n /** Defines a box by its name and the application ID it belongs to. */\n box?: BoxReference\n}\n\n/**\n * A grouping of the asset index and address of the account\n */\nexport type HoldingReference = {\n /** The asset index of the holding */\n assetId: bigint\n\n /** The address of the account holding the asset */\n address: Address\n}\n\n/** A grouping of the application index and address of the account\n */\nexport type LocalsReference = {\n /** The application index of the local state */\n appId: bigint\n\n /** The address of the account holding the local state */\n address: Address\n}\n\nconst FIELD_ARGS = 'Args'\nconst FIELD_APPROVAL_PROGRAM = 'Approval program'\nconst FIELD_CLEAR_STATE_PROGRAM = 'Clear state program'\nconst FIELD_GLOBAL_STATE_SCHEMA = 'Global state schema'\nconst FIELD_LOCAL_STATE_SCHEMA = 'Local state schema'\nconst FIELD_EXTRA_PROGRAM_PAGES = 'Extra program pages'\n\n/**\n * Validate app call transaction fields\n */\nexport function validateAppCallTransaction(appCall: AppCallTransactionFields): TransactionValidationError[] {\n const errors = new Array<TransactionValidationError>()\n\n if (appCall.appId === 0n) {\n // App creation\n errors.push(...validateAppCreation(appCall))\n } else {\n // App call, update, or delete\n errors.push(...validateAppOperation(appCall))\n }\n\n // Common validations for all app operations\n errors.push(...validateAppCommonFields(appCall))\n\n return errors\n}\n\n/**\n * Validate app creation fields\n */\nfunction validateAppCreation(appCall: AppCallTransactionFields): TransactionValidationError[] {\n const errors = new Array<TransactionValidationError>()\n\n if (!appCall.approvalProgram || appCall.approvalProgram.length === 0) {\n errors.push({ type: TransactionValidationErrorType.RequiredField, data: FIELD_APPROVAL_PROGRAM })\n }\n\n if (!appCall.clearStateProgram || appCall.clearStateProgram.length === 0) {\n errors.push({ type: TransactionValidationErrorType.RequiredField, data: FIELD_CLEAR_STATE_PROGRAM })\n }\n\n const extraPages = appCall.extraProgramPages ?? 0\n if (extraPages > MAX_EXTRA_PROGRAM_PAGES) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: FIELD_EXTRA_PROGRAM_PAGES, actual: extraPages, max: MAX_EXTRA_PROGRAM_PAGES, unit: 'pages' },\n })\n }\n\n const maxProgramSize = PROGRAM_PAGE_SIZE + extraPages * PROGRAM_PAGE_SIZE\n\n if (appCall.approvalProgram && appCall.approvalProgram.length > maxProgramSize) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: FIELD_APPROVAL_PROGRAM, actual: appCall.approvalProgram.length, max: maxProgramSize, unit: 'bytes' },\n })\n }\n\n if (appCall.clearStateProgram && appCall.clearStateProgram.length > maxProgramSize) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: FIELD_CLEAR_STATE_PROGRAM, actual: appCall.clearStateProgram.length, max: maxProgramSize, unit: 'bytes' },\n })\n }\n\n const totalProgramSize = (appCall.approvalProgram?.length ?? 0) + (appCall.clearStateProgram?.length ?? 0)\n if (totalProgramSize > maxProgramSize) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'Combined approval and clear state programs', actual: totalProgramSize, max: maxProgramSize, unit: 'bytes' },\n })\n }\n\n if (appCall.globalStateSchema) {\n const totalKeys = appCall.globalStateSchema.numUints + appCall.globalStateSchema.numByteSlices\n if (totalKeys > MAX_GLOBAL_STATE_KEYS) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: {\n field: FIELD_GLOBAL_STATE_SCHEMA,\n actual: appCall.globalStateSchema.numUints + appCall.globalStateSchema.numByteSlices,\n max: MAX_GLOBAL_STATE_KEYS,\n unit: 'keys',\n },\n })\n }\n }\n\n if (appCall.localStateSchema) {\n const totalKeys = appCall.localStateSchema.numUints + appCall.localStateSchema.numByteSlices\n if (totalKeys > MAX_LOCAL_STATE_KEYS) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: {\n field: FIELD_LOCAL_STATE_SCHEMA,\n actual: appCall.localStateSchema.numUints + appCall.localStateSchema.numByteSlices,\n max: MAX_LOCAL_STATE_KEYS,\n unit: 'keys',\n },\n })\n }\n }\n\n return errors\n}\n\n/**\n * Validate app operation (update, delete, call) fields\n */\nfunction validateAppOperation(appCall: AppCallTransactionFields): TransactionValidationError[] {\n const errors = new Array<TransactionValidationError>()\n\n if (appCall.onComplete === OnApplicationComplete.UpdateApplication) {\n if (!appCall.approvalProgram || appCall.approvalProgram.length === 0) {\n errors.push({ type: TransactionValidationErrorType.RequiredField, data: FIELD_APPROVAL_PROGRAM })\n }\n if (!appCall.clearStateProgram || appCall.clearStateProgram.length === 0) {\n errors.push({ type: TransactionValidationErrorType.RequiredField, data: FIELD_CLEAR_STATE_PROGRAM })\n }\n }\n\n // These fields are immutable and cannot be set for existing apps\n if (appCall.globalStateSchema !== undefined) {\n errors.push({ type: TransactionValidationErrorType.ImmutableField, data: FIELD_GLOBAL_STATE_SCHEMA })\n }\n if (appCall.localStateSchema !== undefined) {\n errors.push({ type: TransactionValidationErrorType.ImmutableField, data: FIELD_LOCAL_STATE_SCHEMA })\n }\n if (appCall.extraProgramPages !== undefined) {\n errors.push({ type: TransactionValidationErrorType.ImmutableField, data: FIELD_EXTRA_PROGRAM_PAGES })\n }\n\n return errors\n}\n\n/**\n * Validate common app call fields\n */\nfunction validateAppCommonFields(appCall: AppCallTransactionFields): TransactionValidationError[] {\n const errors = new Array<TransactionValidationError>()\n\n if (appCall.args) {\n if (appCall.args.length > MAX_APP_ARGS) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: FIELD_ARGS, actual: appCall.args.length, max: MAX_APP_ARGS, unit: 'arguments' },\n })\n }\n\n const totalArgsSize = appCall.args.reduce((sum, arg) => sum + arg.length, 0)\n if (totalArgsSize > MAX_ARGS_SIZE) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'Args total size', actual: totalArgsSize, max: MAX_ARGS_SIZE, unit: 'bytes' },\n })\n }\n }\n\n if (appCall.accountReferences && appCall.accountReferences.length > MAX_ACCOUNT_REFERENCES) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'Account references', actual: appCall.accountReferences.length, max: MAX_ACCOUNT_REFERENCES, unit: 'refs' },\n })\n }\n\n if (appCall.appReferences && appCall.appReferences.length > MAX_APP_REFERENCES) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'App references', actual: appCall.appReferences.length, max: MAX_APP_REFERENCES, unit: 'refs' },\n })\n }\n\n if (appCall.assetReferences && appCall.assetReferences.length > MAX_ASSET_REFERENCES) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'Asset references', actual: appCall.assetReferences.length, max: MAX_ASSET_REFERENCES, unit: 'refs' },\n })\n }\n\n // Validate box references\n if (appCall.boxReferences) {\n if (appCall.boxReferences.length > MAX_BOX_REFERENCES) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'Box references', actual: appCall.boxReferences.length, max: MAX_BOX_REFERENCES, unit: 'refs' },\n })\n }\n\n // Validate that box reference app IDs are in app references\n const appRefs = appCall.appReferences || []\n for (const boxRef of appCall.boxReferences) {\n if (boxRef.appId !== 0n && boxRef.appId !== appCall.appId && !appRefs.includes(boxRef.appId)) {\n errors.push({\n type: TransactionValidationErrorType.ArbitraryConstraint,\n data: `Box reference for app ID ${boxRef.appId} must be in app references`,\n })\n }\n }\n }\n\n // Validate overall reference count\n const totalReferences =\n (appCall.accountReferences?.length || 0) +\n (appCall.appReferences?.length || 0) +\n (appCall.assetReferences?.length || 0) +\n (appCall.boxReferences?.length || 0)\n\n if (totalReferences > MAX_OVERALL_REFERENCES) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'Total references', actual: totalReferences, max: MAX_OVERALL_REFERENCES, unit: 'refs' },\n })\n }\n\n return errors\n}\n"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import { MAX_ARGS_SIZE, PROGRAM_PAGE_SIZE } from "../../../common/src/constants.mjs";
2
- import { TransactionValidationErrorType } from "./common.mjs";
3
2
  //#region packages/transact/src/transactions/app-call.ts
4
3
  /**
5
4
  * On-completion actions for application transactions.
@@ -63,16 +62,16 @@ function validateAppCallTransaction(appCall) {
63
62
  function validateAppCreation(appCall) {
64
63
  const errors = new Array();
65
64
  if (!appCall.approvalProgram || appCall.approvalProgram.length === 0) errors.push({
66
- type: TransactionValidationErrorType.RequiredField,
65
+ type: 0,
67
66
  data: FIELD_APPROVAL_PROGRAM
68
67
  });
69
68
  if (!appCall.clearStateProgram || appCall.clearStateProgram.length === 0) errors.push({
70
- type: TransactionValidationErrorType.RequiredField,
69
+ type: 0,
71
70
  data: FIELD_CLEAR_STATE_PROGRAM
72
71
  });
73
72
  const extraPages = appCall.extraProgramPages ?? 0;
74
73
  if (extraPages > 3) errors.push({
75
- type: TransactionValidationErrorType.FieldTooLong,
74
+ type: 1,
76
75
  data: {
77
76
  field: FIELD_EXTRA_PROGRAM_PAGES,
78
77
  actual: extraPages,
@@ -82,7 +81,7 @@ function validateAppCreation(appCall) {
82
81
  });
83
82
  const maxProgramSize = PROGRAM_PAGE_SIZE + extraPages * PROGRAM_PAGE_SIZE;
84
83
  if (appCall.approvalProgram && appCall.approvalProgram.length > maxProgramSize) errors.push({
85
- type: TransactionValidationErrorType.FieldTooLong,
84
+ type: 1,
86
85
  data: {
87
86
  field: FIELD_APPROVAL_PROGRAM,
88
87
  actual: appCall.approvalProgram.length,
@@ -91,7 +90,7 @@ function validateAppCreation(appCall) {
91
90
  }
92
91
  });
93
92
  if (appCall.clearStateProgram && appCall.clearStateProgram.length > maxProgramSize) errors.push({
94
- type: TransactionValidationErrorType.FieldTooLong,
93
+ type: 1,
95
94
  data: {
96
95
  field: FIELD_CLEAR_STATE_PROGRAM,
97
96
  actual: appCall.clearStateProgram.length,
@@ -101,7 +100,7 @@ function validateAppCreation(appCall) {
101
100
  });
102
101
  const totalProgramSize = (appCall.approvalProgram?.length ?? 0) + (appCall.clearStateProgram?.length ?? 0);
103
102
  if (totalProgramSize > maxProgramSize) errors.push({
104
- type: TransactionValidationErrorType.FieldTooLong,
103
+ type: 1,
105
104
  data: {
106
105
  field: "Combined approval and clear state programs",
107
106
  actual: totalProgramSize,
@@ -111,7 +110,7 @@ function validateAppCreation(appCall) {
111
110
  });
112
111
  if (appCall.globalStateSchema) {
113
112
  if (appCall.globalStateSchema.numUints + appCall.globalStateSchema.numByteSlices > 64) errors.push({
114
- type: TransactionValidationErrorType.FieldTooLong,
113
+ type: 1,
115
114
  data: {
116
115
  field: FIELD_GLOBAL_STATE_SCHEMA,
117
116
  actual: appCall.globalStateSchema.numUints + appCall.globalStateSchema.numByteSlices,
@@ -122,7 +121,7 @@ function validateAppCreation(appCall) {
122
121
  }
123
122
  if (appCall.localStateSchema) {
124
123
  if (appCall.localStateSchema.numUints + appCall.localStateSchema.numByteSlices > 16) errors.push({
125
- type: TransactionValidationErrorType.FieldTooLong,
124
+ type: 1,
126
125
  data: {
127
126
  field: FIELD_LOCAL_STATE_SCHEMA,
128
127
  actual: appCall.localStateSchema.numUints + appCall.localStateSchema.numByteSlices,
@@ -138,26 +137,26 @@ function validateAppCreation(appCall) {
138
137
  */
139
138
  function validateAppOperation(appCall) {
140
139
  const errors = new Array();
141
- if (appCall.onComplete === OnApplicationComplete.UpdateApplication) {
140
+ if (appCall.onComplete === 4) {
142
141
  if (!appCall.approvalProgram || appCall.approvalProgram.length === 0) errors.push({
143
- type: TransactionValidationErrorType.RequiredField,
142
+ type: 0,
144
143
  data: FIELD_APPROVAL_PROGRAM
145
144
  });
146
145
  if (!appCall.clearStateProgram || appCall.clearStateProgram.length === 0) errors.push({
147
- type: TransactionValidationErrorType.RequiredField,
146
+ type: 0,
148
147
  data: FIELD_CLEAR_STATE_PROGRAM
149
148
  });
150
149
  }
151
150
  if (appCall.globalStateSchema !== void 0) errors.push({
152
- type: TransactionValidationErrorType.ImmutableField,
151
+ type: 2,
153
152
  data: FIELD_GLOBAL_STATE_SCHEMA
154
153
  });
155
154
  if (appCall.localStateSchema !== void 0) errors.push({
156
- type: TransactionValidationErrorType.ImmutableField,
155
+ type: 2,
157
156
  data: FIELD_LOCAL_STATE_SCHEMA
158
157
  });
159
158
  if (appCall.extraProgramPages !== void 0) errors.push({
160
- type: TransactionValidationErrorType.ImmutableField,
159
+ type: 2,
161
160
  data: FIELD_EXTRA_PROGRAM_PAGES
162
161
  });
163
162
  return errors;
@@ -169,7 +168,7 @@ function validateAppCommonFields(appCall) {
169
168
  const errors = new Array();
170
169
  if (appCall.args) {
171
170
  if (appCall.args.length > 16) errors.push({
172
- type: TransactionValidationErrorType.FieldTooLong,
171
+ type: 1,
173
172
  data: {
174
173
  field: FIELD_ARGS,
175
174
  actual: appCall.args.length,
@@ -179,7 +178,7 @@ function validateAppCommonFields(appCall) {
179
178
  });
180
179
  const totalArgsSize = appCall.args.reduce((sum, arg) => sum + arg.length, 0);
181
180
  if (totalArgsSize > 2048) errors.push({
182
- type: TransactionValidationErrorType.FieldTooLong,
181
+ type: 1,
183
182
  data: {
184
183
  field: "Args total size",
185
184
  actual: totalArgsSize,
@@ -189,7 +188,7 @@ function validateAppCommonFields(appCall) {
189
188
  });
190
189
  }
191
190
  if (appCall.accountReferences && appCall.accountReferences.length > 8) errors.push({
192
- type: TransactionValidationErrorType.FieldTooLong,
191
+ type: 1,
193
192
  data: {
194
193
  field: "Account references",
195
194
  actual: appCall.accountReferences.length,
@@ -198,7 +197,7 @@ function validateAppCommonFields(appCall) {
198
197
  }
199
198
  });
200
199
  if (appCall.appReferences && appCall.appReferences.length > 8) errors.push({
201
- type: TransactionValidationErrorType.FieldTooLong,
200
+ type: 1,
202
201
  data: {
203
202
  field: "App references",
204
203
  actual: appCall.appReferences.length,
@@ -207,7 +206,7 @@ function validateAppCommonFields(appCall) {
207
206
  }
208
207
  });
209
208
  if (appCall.assetReferences && appCall.assetReferences.length > 8) errors.push({
210
- type: TransactionValidationErrorType.FieldTooLong,
209
+ type: 1,
211
210
  data: {
212
211
  field: "Asset references",
213
212
  actual: appCall.assetReferences.length,
@@ -217,7 +216,7 @@ function validateAppCommonFields(appCall) {
217
216
  });
218
217
  if (appCall.boxReferences) {
219
218
  if (appCall.boxReferences.length > 8) errors.push({
220
- type: TransactionValidationErrorType.FieldTooLong,
219
+ type: 1,
221
220
  data: {
222
221
  field: "Box references",
223
222
  actual: appCall.boxReferences.length,
@@ -227,13 +226,13 @@ function validateAppCommonFields(appCall) {
227
226
  });
228
227
  const appRefs = appCall.appReferences || [];
229
228
  for (const boxRef of appCall.boxReferences) if (boxRef.appId !== 0n && boxRef.appId !== appCall.appId && !appRefs.includes(boxRef.appId)) errors.push({
230
- type: TransactionValidationErrorType.ArbitraryConstraint,
229
+ type: 4,
231
230
  data: `Box reference for app ID ${boxRef.appId} must be in app references`
232
231
  });
233
232
  }
234
233
  const totalReferences = (appCall.accountReferences?.length || 0) + (appCall.appReferences?.length || 0) + (appCall.assetReferences?.length || 0) + (appCall.boxReferences?.length || 0);
235
234
  if (totalReferences > 8) errors.push({
236
- type: TransactionValidationErrorType.FieldTooLong,
235
+ type: 1,
237
236
  data: {
238
237
  field: "Total references",
239
238
  actual: totalReferences,
@@ -1 +1 @@
1
- {"version":3,"file":"app-call.mjs","names":[],"sources":["../../../../../packages/transact/src/transactions/app-call.ts"],"sourcesContent":["import {\n Address,\n MAX_ACCOUNT_REFERENCES,\n MAX_APP_ARGS,\n MAX_APP_REFERENCES,\n MAX_ARGS_SIZE,\n MAX_ASSET_REFERENCES,\n MAX_BOX_REFERENCES,\n MAX_EXTRA_PROGRAM_PAGES,\n MAX_GLOBAL_STATE_KEYS,\n MAX_LOCAL_STATE_KEYS,\n MAX_OVERALL_REFERENCES,\n PROGRAM_PAGE_SIZE,\n} from '@algorandfoundation/algokit-common'\nimport { TransactionValidationError, TransactionValidationErrorType } from './common'\n\n/**\n * Represents an app call transaction that interacts with Algorand Smart Contracts.\n *\n * App call transactions are used to create, update, delete, opt-in to,\n * close out of, or clear state from Algorand apps (smart contracts).\n */\nexport type AppCallTransactionFields = {\n /**\n * ID of the app being called.\n *\n * Set this to 0 to indicate an app creation call.\n */\n appId: bigint\n\n /**\n * Defines what additional actions occur with the transaction.\n */\n onComplete: OnApplicationComplete\n\n /**\n * Logic executed for every app call transaction, except when\n * on-completion is set to \"clear\".\n *\n * Approval programs may reject the transaction.\n * Only required for app creation and update transactions.\n */\n approvalProgram?: Uint8Array\n\n /**\n * Logic executed for app call transactions with on-completion set to \"clear\".\n *\n * Clear state programs cannot reject the transaction.\n * Only required for app creation and update transactions.\n */\n clearStateProgram?: Uint8Array\n\n /**\n * Holds the maximum number of global state values.\n *\n * Only required for app creation transactions.\n * This cannot be changed after creation.\n */\n globalStateSchema?: StateSchema\n\n /**\n * Holds the maximum number of local state values.\n *\n * Only required for app creation transactions.\n * This cannot be changed after creation.\n */\n localStateSchema?: StateSchema\n\n /**\n * Number of additional pages allocated to the app's approval\n * and clear state programs.\n *\n * Each extra program page is 2048 bytes. The sum of approval program\n * and clear state program may not exceed 2048*(1+extra_program_pages) bytes.\n * Currently, the maximum value is 3.\n * This cannot be changed after creation.\n */\n extraProgramPages?: number\n\n /**\n * Transaction specific arguments available in the app's\n * approval program and clear state program.\n */\n args?: Uint8Array[]\n\n /**\n * List of accounts in addition to the sender that may be accessed\n * from the app's approval program and clear state program.\n */\n accountReferences?: Address[]\n\n /**\n * List of apps in addition to the current app that may be called\n * from the app's approval program and clear state program.\n */\n appReferences?: bigint[]\n\n /**\n * Lists the assets whose parameters may be accessed by this app's\n * approval program and clear state program.\n *\n * The access is read-only.\n */\n assetReferences?: bigint[]\n\n /**\n * The boxes that should be made available for the runtime of the program.\n */\n boxReferences?: BoxReference[]\n\n /**\n * Resources accessed by the application\n */\n accessReferences?: ResourceReference[]\n\n /**\n * If set, the transaction will be rejected when the app's version is greater than or equal to this value. This can be used to prevent calling an app after it has been updated. Set to 0 or leave undefined to skip the version check.\n * */\n rejectVersion?: number\n}\n\n/**\n * On-completion actions for application transactions.\n *\n * These values define what additional actions occur with the transaction.\n */\nexport enum OnApplicationComplete {\n /**\n * NoOp indicates that an app transaction will simply call its\n * approval program without any additional action.\n */\n NoOp,\n /**\n * OptIn indicates that an app transaction will allocate some\n * local state for the app in the sender's account.\n */\n OptIn,\n /**\n * CloseOut indicates that an app transaction will deallocate\n * some local state for the app from the user's account.\n */\n CloseOut,\n /**\n * ClearState is similar to CloseOut, but may never fail. This\n * allows users to reclaim their minimum balance from an app\n * they no longer wish to opt in to.\n */\n ClearState,\n /**\n * UpdateApplication indicates that an app transaction will\n * update the approval program and clear state program for the app.\n */\n UpdateApplication,\n /**\n * DeleteApplication indicates that an app transaction will\n * delete the app parameters for the app from the creator's\n * balance record.\n */\n DeleteApplication,\n}\n\n/**\n * Schema for app state storage.\n *\n * Defines the maximum number of values that may be stored in app\n * key/value storage for both global and local state.\n */\nexport type StateSchema = {\n /**\n * Maximum number of integer values that may be stored.\n */\n numUints: number\n\n /**\n * Maximum number of byte slice values that may be stored.\n */\n numByteSlices: number\n}\n\n/**\n * Box reference for app call transactions.\n *\n * References a specific box that should be made available for the runtime\n * of the program.\n */\nexport type BoxReference = {\n /**\n * App ID that owns the box.\n * A value of 0 indicates the current app.\n */\n appId: bigint\n\n /**\n * Name of the box.\n */\n name: Uint8Array\n}\n\n/**\n * Names a single resource reference. Only one of the fields should be set.\n */\nexport type ResourceReference = {\n /** Any account addresses whose balance record is accessible by the executing ApprovalProgram or ClearStateProgram. */\n address?: Address\n /** Application ID whose GlobalState may be read by the executing ApprovalProgram or ClearStateProgram. */\n appId?: bigint\n /** Asset ID whose AssetParams may be read by the executing ApprovalProgram or ClearStateProgram. */\n assetId?: bigint\n /** Defines a holding by referring to an Address and Asset it belongs to. */\n holding?: HoldingReference\n /** Defines a local state by referring to an Address and App it belongs to. */\n locals?: LocalsReference\n /** Defines a box by its name and the application ID it belongs to. */\n box?: BoxReference\n}\n\n/**\n * A grouping of the asset index and address of the account\n */\nexport type HoldingReference = {\n /** The asset index of the holding */\n assetId: bigint\n\n /** The address of the account holding the asset */\n address: Address\n}\n\n/** A grouping of the application index and address of the account\n */\nexport type LocalsReference = {\n /** The application index of the local state */\n appId: bigint\n\n /** The address of the account holding the local state */\n address: Address\n}\n\nconst FIELD_ARGS = 'Args'\nconst FIELD_APPROVAL_PROGRAM = 'Approval program'\nconst FIELD_CLEAR_STATE_PROGRAM = 'Clear state program'\nconst FIELD_GLOBAL_STATE_SCHEMA = 'Global state schema'\nconst FIELD_LOCAL_STATE_SCHEMA = 'Local state schema'\nconst FIELD_EXTRA_PROGRAM_PAGES = 'Extra program pages'\n\n/**\n * Validate app call transaction fields\n */\nexport function validateAppCallTransaction(appCall: AppCallTransactionFields): TransactionValidationError[] {\n const errors = new Array<TransactionValidationError>()\n\n if (appCall.appId === 0n) {\n // App creation\n errors.push(...validateAppCreation(appCall))\n } else {\n // App call, update, or delete\n errors.push(...validateAppOperation(appCall))\n }\n\n // Common validations for all app operations\n errors.push(...validateAppCommonFields(appCall))\n\n return errors\n}\n\n/**\n * Validate app creation fields\n */\nfunction validateAppCreation(appCall: AppCallTransactionFields): TransactionValidationError[] {\n const errors = new Array<TransactionValidationError>()\n\n if (!appCall.approvalProgram || appCall.approvalProgram.length === 0) {\n errors.push({ type: TransactionValidationErrorType.RequiredField, data: FIELD_APPROVAL_PROGRAM })\n }\n\n if (!appCall.clearStateProgram || appCall.clearStateProgram.length === 0) {\n errors.push({ type: TransactionValidationErrorType.RequiredField, data: FIELD_CLEAR_STATE_PROGRAM })\n }\n\n const extraPages = appCall.extraProgramPages ?? 0\n if (extraPages > MAX_EXTRA_PROGRAM_PAGES) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: FIELD_EXTRA_PROGRAM_PAGES, actual: extraPages, max: MAX_EXTRA_PROGRAM_PAGES, unit: 'pages' },\n })\n }\n\n const maxProgramSize = PROGRAM_PAGE_SIZE + extraPages * PROGRAM_PAGE_SIZE\n\n if (appCall.approvalProgram && appCall.approvalProgram.length > maxProgramSize) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: FIELD_APPROVAL_PROGRAM, actual: appCall.approvalProgram.length, max: maxProgramSize, unit: 'bytes' },\n })\n }\n\n if (appCall.clearStateProgram && appCall.clearStateProgram.length > maxProgramSize) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: FIELD_CLEAR_STATE_PROGRAM, actual: appCall.clearStateProgram.length, max: maxProgramSize, unit: 'bytes' },\n })\n }\n\n const totalProgramSize = (appCall.approvalProgram?.length ?? 0) + (appCall.clearStateProgram?.length ?? 0)\n if (totalProgramSize > maxProgramSize) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'Combined approval and clear state programs', actual: totalProgramSize, max: maxProgramSize, unit: 'bytes' },\n })\n }\n\n if (appCall.globalStateSchema) {\n const totalKeys = appCall.globalStateSchema.numUints + appCall.globalStateSchema.numByteSlices\n if (totalKeys > MAX_GLOBAL_STATE_KEYS) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: {\n field: FIELD_GLOBAL_STATE_SCHEMA,\n actual: appCall.globalStateSchema.numUints + appCall.globalStateSchema.numByteSlices,\n max: MAX_GLOBAL_STATE_KEYS,\n unit: 'keys',\n },\n })\n }\n }\n\n if (appCall.localStateSchema) {\n const totalKeys = appCall.localStateSchema.numUints + appCall.localStateSchema.numByteSlices\n if (totalKeys > MAX_LOCAL_STATE_KEYS) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: {\n field: FIELD_LOCAL_STATE_SCHEMA,\n actual: appCall.localStateSchema.numUints + appCall.localStateSchema.numByteSlices,\n max: MAX_LOCAL_STATE_KEYS,\n unit: 'keys',\n },\n })\n }\n }\n\n return errors\n}\n\n/**\n * Validate app operation (update, delete, call) fields\n */\nfunction validateAppOperation(appCall: AppCallTransactionFields): TransactionValidationError[] {\n const errors = new Array<TransactionValidationError>()\n\n if (appCall.onComplete === OnApplicationComplete.UpdateApplication) {\n if (!appCall.approvalProgram || appCall.approvalProgram.length === 0) {\n errors.push({ type: TransactionValidationErrorType.RequiredField, data: FIELD_APPROVAL_PROGRAM })\n }\n if (!appCall.clearStateProgram || appCall.clearStateProgram.length === 0) {\n errors.push({ type: TransactionValidationErrorType.RequiredField, data: FIELD_CLEAR_STATE_PROGRAM })\n }\n }\n\n // These fields are immutable and cannot be set for existing apps\n if (appCall.globalStateSchema !== undefined) {\n errors.push({ type: TransactionValidationErrorType.ImmutableField, data: FIELD_GLOBAL_STATE_SCHEMA })\n }\n if (appCall.localStateSchema !== undefined) {\n errors.push({ type: TransactionValidationErrorType.ImmutableField, data: FIELD_LOCAL_STATE_SCHEMA })\n }\n if (appCall.extraProgramPages !== undefined) {\n errors.push({ type: TransactionValidationErrorType.ImmutableField, data: FIELD_EXTRA_PROGRAM_PAGES })\n }\n\n return errors\n}\n\n/**\n * Validate common app call fields\n */\nfunction validateAppCommonFields(appCall: AppCallTransactionFields): TransactionValidationError[] {\n const errors = new Array<TransactionValidationError>()\n\n if (appCall.args) {\n if (appCall.args.length > MAX_APP_ARGS) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: FIELD_ARGS, actual: appCall.args.length, max: MAX_APP_ARGS, unit: 'arguments' },\n })\n }\n\n const totalArgsSize = appCall.args.reduce((sum, arg) => sum + arg.length, 0)\n if (totalArgsSize > MAX_ARGS_SIZE) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'Args total size', actual: totalArgsSize, max: MAX_ARGS_SIZE, unit: 'bytes' },\n })\n }\n }\n\n if (appCall.accountReferences && appCall.accountReferences.length > MAX_ACCOUNT_REFERENCES) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'Account references', actual: appCall.accountReferences.length, max: MAX_ACCOUNT_REFERENCES, unit: 'refs' },\n })\n }\n\n if (appCall.appReferences && appCall.appReferences.length > MAX_APP_REFERENCES) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'App references', actual: appCall.appReferences.length, max: MAX_APP_REFERENCES, unit: 'refs' },\n })\n }\n\n if (appCall.assetReferences && appCall.assetReferences.length > MAX_ASSET_REFERENCES) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'Asset references', actual: appCall.assetReferences.length, max: MAX_ASSET_REFERENCES, unit: 'refs' },\n })\n }\n\n // Validate box references\n if (appCall.boxReferences) {\n if (appCall.boxReferences.length > MAX_BOX_REFERENCES) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'Box references', actual: appCall.boxReferences.length, max: MAX_BOX_REFERENCES, unit: 'refs' },\n })\n }\n\n // Validate that box reference app IDs are in app references\n const appRefs = appCall.appReferences || []\n for (const boxRef of appCall.boxReferences) {\n if (boxRef.appId !== 0n && boxRef.appId !== appCall.appId && !appRefs.includes(boxRef.appId)) {\n errors.push({\n type: TransactionValidationErrorType.ArbitraryConstraint,\n data: `Box reference for app ID ${boxRef.appId} must be in app references`,\n })\n }\n }\n }\n\n // Validate overall reference count\n const totalReferences =\n (appCall.accountReferences?.length || 0) +\n (appCall.appReferences?.length || 0) +\n (appCall.assetReferences?.length || 0) +\n (appCall.boxReferences?.length || 0)\n\n if (totalReferences > MAX_OVERALL_REFERENCES) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'Total references', actual: totalReferences, max: MAX_OVERALL_REFERENCES, unit: 'refs' },\n })\n }\n\n return errors\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"app-call.mjs","names":[],"sources":["../../../../../packages/transact/src/transactions/app-call.ts"],"sourcesContent":["import {\n Address,\n MAX_ACCOUNT_REFERENCES,\n MAX_APP_ARGS,\n MAX_APP_REFERENCES,\n MAX_ARGS_SIZE,\n MAX_ASSET_REFERENCES,\n MAX_BOX_REFERENCES,\n MAX_EXTRA_PROGRAM_PAGES,\n MAX_GLOBAL_STATE_KEYS,\n MAX_LOCAL_STATE_KEYS,\n MAX_OVERALL_REFERENCES,\n PROGRAM_PAGE_SIZE,\n} from '@algorandfoundation/algokit-common'\nimport { TransactionValidationError, TransactionValidationErrorType } from './common'\n\n/**\n * Represents an app call transaction that interacts with Algorand Smart Contracts.\n *\n * App call transactions are used to create, update, delete, opt-in to,\n * close out of, or clear state from Algorand apps (smart contracts).\n */\nexport type AppCallTransactionFields = {\n /**\n * ID of the app being called.\n *\n * Set this to 0 to indicate an app creation call.\n */\n appId: bigint\n\n /**\n * Defines what additional actions occur with the transaction.\n */\n onComplete: OnApplicationComplete\n\n /**\n * Logic executed for every app call transaction, except when\n * on-completion is set to \"clear\".\n *\n * Approval programs may reject the transaction.\n * Only required for app creation and update transactions.\n */\n approvalProgram?: Uint8Array\n\n /**\n * Logic executed for app call transactions with on-completion set to \"clear\".\n *\n * Clear state programs cannot reject the transaction.\n * Only required for app creation and update transactions.\n */\n clearStateProgram?: Uint8Array\n\n /**\n * Holds the maximum number of global state values.\n *\n * Only required for app creation transactions.\n * This cannot be changed after creation.\n */\n globalStateSchema?: StateSchema\n\n /**\n * Holds the maximum number of local state values.\n *\n * Only required for app creation transactions.\n * This cannot be changed after creation.\n */\n localStateSchema?: StateSchema\n\n /**\n * Number of additional pages allocated to the app's approval\n * and clear state programs.\n *\n * Each extra program page is 2048 bytes. The sum of approval program\n * and clear state program may not exceed 2048*(1+extra_program_pages) bytes.\n * Currently, the maximum value is 3.\n * This cannot be changed after creation.\n */\n extraProgramPages?: number\n\n /**\n * Transaction specific arguments available in the app's\n * approval program and clear state program.\n */\n args?: Uint8Array[]\n\n /**\n * List of accounts in addition to the sender that may be accessed\n * from the app's approval program and clear state program.\n */\n accountReferences?: Address[]\n\n /**\n * List of apps in addition to the current app that may be called\n * from the app's approval program and clear state program.\n */\n appReferences?: bigint[]\n\n /**\n * Lists the assets whose parameters may be accessed by this app's\n * approval program and clear state program.\n *\n * The access is read-only.\n */\n assetReferences?: bigint[]\n\n /**\n * The boxes that should be made available for the runtime of the program.\n */\n boxReferences?: BoxReference[]\n\n /**\n * Resources accessed by the application\n */\n accessReferences?: ResourceReference[]\n\n /**\n * If set, the transaction will be rejected when the app's version is greater than or equal to this value. This can be used to prevent calling an app after it has been updated. Set to 0 or leave undefined to skip the version check.\n * */\n rejectVersion?: number\n}\n\n/**\n * On-completion actions for application transactions.\n *\n * These values define what additional actions occur with the transaction.\n */\nexport enum OnApplicationComplete {\n /**\n * NoOp indicates that an app transaction will simply call its\n * approval program without any additional action.\n */\n NoOp,\n /**\n * OptIn indicates that an app transaction will allocate some\n * local state for the app in the sender's account.\n */\n OptIn,\n /**\n * CloseOut indicates that an app transaction will deallocate\n * some local state for the app from the user's account.\n */\n CloseOut,\n /**\n * ClearState is similar to CloseOut, but may never fail. This\n * allows users to reclaim their minimum balance from an app\n * they no longer wish to opt in to.\n */\n ClearState,\n /**\n * UpdateApplication indicates that an app transaction will\n * update the approval program and clear state program for the app.\n */\n UpdateApplication,\n /**\n * DeleteApplication indicates that an app transaction will\n * delete the app parameters for the app from the creator's\n * balance record.\n */\n DeleteApplication,\n}\n\n/**\n * Schema for app state storage.\n *\n * Defines the maximum number of values that may be stored in app\n * key/value storage for both global and local state.\n */\nexport type StateSchema = {\n /**\n * Maximum number of integer values that may be stored.\n */\n numUints: number\n\n /**\n * Maximum number of byte slice values that may be stored.\n */\n numByteSlices: number\n}\n\n/**\n * Box reference for app call transactions.\n *\n * References a specific box that should be made available for the runtime\n * of the program.\n */\nexport type BoxReference = {\n /**\n * App ID that owns the box.\n * A value of 0 indicates the current app.\n */\n appId: bigint\n\n /**\n * Name of the box.\n */\n name: Uint8Array\n}\n\n/**\n * Names a single resource reference. Only one of the fields should be set.\n */\nexport type ResourceReference = {\n /** Any account addresses whose balance record is accessible by the executing ApprovalProgram or ClearStateProgram. */\n address?: Address\n /** Application ID whose GlobalState may be read by the executing ApprovalProgram or ClearStateProgram. */\n appId?: bigint\n /** Asset ID whose AssetParams may be read by the executing ApprovalProgram or ClearStateProgram. */\n assetId?: bigint\n /** Defines a holding by referring to an Address and Asset it belongs to. */\n holding?: HoldingReference\n /** Defines a local state by referring to an Address and App it belongs to. */\n locals?: LocalsReference\n /** Defines a box by its name and the application ID it belongs to. */\n box?: BoxReference\n}\n\n/**\n * A grouping of the asset index and address of the account\n */\nexport type HoldingReference = {\n /** The asset index of the holding */\n assetId: bigint\n\n /** The address of the account holding the asset */\n address: Address\n}\n\n/** A grouping of the application index and address of the account\n */\nexport type LocalsReference = {\n /** The application index of the local state */\n appId: bigint\n\n /** The address of the account holding the local state */\n address: Address\n}\n\nconst FIELD_ARGS = 'Args'\nconst FIELD_APPROVAL_PROGRAM = 'Approval program'\nconst FIELD_CLEAR_STATE_PROGRAM = 'Clear state program'\nconst FIELD_GLOBAL_STATE_SCHEMA = 'Global state schema'\nconst FIELD_LOCAL_STATE_SCHEMA = 'Local state schema'\nconst FIELD_EXTRA_PROGRAM_PAGES = 'Extra program pages'\n\n/**\n * Validate app call transaction fields\n */\nexport function validateAppCallTransaction(appCall: AppCallTransactionFields): TransactionValidationError[] {\n const errors = new Array<TransactionValidationError>()\n\n if (appCall.appId === 0n) {\n // App creation\n errors.push(...validateAppCreation(appCall))\n } else {\n // App call, update, or delete\n errors.push(...validateAppOperation(appCall))\n }\n\n // Common validations for all app operations\n errors.push(...validateAppCommonFields(appCall))\n\n return errors\n}\n\n/**\n * Validate app creation fields\n */\nfunction validateAppCreation(appCall: AppCallTransactionFields): TransactionValidationError[] {\n const errors = new Array<TransactionValidationError>()\n\n if (!appCall.approvalProgram || appCall.approvalProgram.length === 0) {\n errors.push({ type: TransactionValidationErrorType.RequiredField, data: FIELD_APPROVAL_PROGRAM })\n }\n\n if (!appCall.clearStateProgram || appCall.clearStateProgram.length === 0) {\n errors.push({ type: TransactionValidationErrorType.RequiredField, data: FIELD_CLEAR_STATE_PROGRAM })\n }\n\n const extraPages = appCall.extraProgramPages ?? 0\n if (extraPages > MAX_EXTRA_PROGRAM_PAGES) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: FIELD_EXTRA_PROGRAM_PAGES, actual: extraPages, max: MAX_EXTRA_PROGRAM_PAGES, unit: 'pages' },\n })\n }\n\n const maxProgramSize = PROGRAM_PAGE_SIZE + extraPages * PROGRAM_PAGE_SIZE\n\n if (appCall.approvalProgram && appCall.approvalProgram.length > maxProgramSize) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: FIELD_APPROVAL_PROGRAM, actual: appCall.approvalProgram.length, max: maxProgramSize, unit: 'bytes' },\n })\n }\n\n if (appCall.clearStateProgram && appCall.clearStateProgram.length > maxProgramSize) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: FIELD_CLEAR_STATE_PROGRAM, actual: appCall.clearStateProgram.length, max: maxProgramSize, unit: 'bytes' },\n })\n }\n\n const totalProgramSize = (appCall.approvalProgram?.length ?? 0) + (appCall.clearStateProgram?.length ?? 0)\n if (totalProgramSize > maxProgramSize) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'Combined approval and clear state programs', actual: totalProgramSize, max: maxProgramSize, unit: 'bytes' },\n })\n }\n\n if (appCall.globalStateSchema) {\n const totalKeys = appCall.globalStateSchema.numUints + appCall.globalStateSchema.numByteSlices\n if (totalKeys > MAX_GLOBAL_STATE_KEYS) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: {\n field: FIELD_GLOBAL_STATE_SCHEMA,\n actual: appCall.globalStateSchema.numUints + appCall.globalStateSchema.numByteSlices,\n max: MAX_GLOBAL_STATE_KEYS,\n unit: 'keys',\n },\n })\n }\n }\n\n if (appCall.localStateSchema) {\n const totalKeys = appCall.localStateSchema.numUints + appCall.localStateSchema.numByteSlices\n if (totalKeys > MAX_LOCAL_STATE_KEYS) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: {\n field: FIELD_LOCAL_STATE_SCHEMA,\n actual: appCall.localStateSchema.numUints + appCall.localStateSchema.numByteSlices,\n max: MAX_LOCAL_STATE_KEYS,\n unit: 'keys',\n },\n })\n }\n }\n\n return errors\n}\n\n/**\n * Validate app operation (update, delete, call) fields\n */\nfunction validateAppOperation(appCall: AppCallTransactionFields): TransactionValidationError[] {\n const errors = new Array<TransactionValidationError>()\n\n if (appCall.onComplete === OnApplicationComplete.UpdateApplication) {\n if (!appCall.approvalProgram || appCall.approvalProgram.length === 0) {\n errors.push({ type: TransactionValidationErrorType.RequiredField, data: FIELD_APPROVAL_PROGRAM })\n }\n if (!appCall.clearStateProgram || appCall.clearStateProgram.length === 0) {\n errors.push({ type: TransactionValidationErrorType.RequiredField, data: FIELD_CLEAR_STATE_PROGRAM })\n }\n }\n\n // These fields are immutable and cannot be set for existing apps\n if (appCall.globalStateSchema !== undefined) {\n errors.push({ type: TransactionValidationErrorType.ImmutableField, data: FIELD_GLOBAL_STATE_SCHEMA })\n }\n if (appCall.localStateSchema !== undefined) {\n errors.push({ type: TransactionValidationErrorType.ImmutableField, data: FIELD_LOCAL_STATE_SCHEMA })\n }\n if (appCall.extraProgramPages !== undefined) {\n errors.push({ type: TransactionValidationErrorType.ImmutableField, data: FIELD_EXTRA_PROGRAM_PAGES })\n }\n\n return errors\n}\n\n/**\n * Validate common app call fields\n */\nfunction validateAppCommonFields(appCall: AppCallTransactionFields): TransactionValidationError[] {\n const errors = new Array<TransactionValidationError>()\n\n if (appCall.args) {\n if (appCall.args.length > MAX_APP_ARGS) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: FIELD_ARGS, actual: appCall.args.length, max: MAX_APP_ARGS, unit: 'arguments' },\n })\n }\n\n const totalArgsSize = appCall.args.reduce((sum, arg) => sum + arg.length, 0)\n if (totalArgsSize > MAX_ARGS_SIZE) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'Args total size', actual: totalArgsSize, max: MAX_ARGS_SIZE, unit: 'bytes' },\n })\n }\n }\n\n if (appCall.accountReferences && appCall.accountReferences.length > MAX_ACCOUNT_REFERENCES) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'Account references', actual: appCall.accountReferences.length, max: MAX_ACCOUNT_REFERENCES, unit: 'refs' },\n })\n }\n\n if (appCall.appReferences && appCall.appReferences.length > MAX_APP_REFERENCES) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'App references', actual: appCall.appReferences.length, max: MAX_APP_REFERENCES, unit: 'refs' },\n })\n }\n\n if (appCall.assetReferences && appCall.assetReferences.length > MAX_ASSET_REFERENCES) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'Asset references', actual: appCall.assetReferences.length, max: MAX_ASSET_REFERENCES, unit: 'refs' },\n })\n }\n\n // Validate box references\n if (appCall.boxReferences) {\n if (appCall.boxReferences.length > MAX_BOX_REFERENCES) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'Box references', actual: appCall.boxReferences.length, max: MAX_BOX_REFERENCES, unit: 'refs' },\n })\n }\n\n // Validate that box reference app IDs are in app references\n const appRefs = appCall.appReferences || []\n for (const boxRef of appCall.boxReferences) {\n if (boxRef.appId !== 0n && boxRef.appId !== appCall.appId && !appRefs.includes(boxRef.appId)) {\n errors.push({\n type: TransactionValidationErrorType.ArbitraryConstraint,\n data: `Box reference for app ID ${boxRef.appId} must be in app references`,\n })\n }\n }\n }\n\n // Validate overall reference count\n const totalReferences =\n (appCall.accountReferences?.length || 0) +\n (appCall.appReferences?.length || 0) +\n (appCall.assetReferences?.length || 0) +\n (appCall.boxReferences?.length || 0)\n\n if (totalReferences > MAX_OVERALL_REFERENCES) {\n errors.push({\n type: TransactionValidationErrorType.FieldTooLong,\n data: { field: 'Total references', actual: totalReferences, max: MAX_OVERALL_REFERENCES, unit: 'refs' },\n })\n }\n\n return errors\n}\n"],"mappings":"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"}