@algorandfoundation/algokit-utils 6.3.0-beta.1 → 7.0.0-alpha.1

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 (463) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +22 -26
  3. package/account/account.d.ts +12 -10
  4. package/account/get-account-config-from-environment.d.ts +0 -1
  5. package/account/get-account.d.ts +2 -3
  6. package/account/get-dispenser-account.d.ts +2 -3
  7. package/account/index.d.ts +0 -1
  8. package/account/mnemonic-account.d.ts +1 -2
  9. package/amount.d.ts +15 -5
  10. package/app-client.d.ts +19 -5
  11. package/app-deploy.d.ts +18 -2
  12. package/app.d.ts +39 -3
  13. package/asset.d.ts +5 -6
  14. package/config.d.ts +0 -1
  15. package/debugging/debugging.d.ts +3 -5
  16. package/debugging/index.d.ts +0 -2
  17. package/dispenser-client.d.ts +0 -1
  18. package/index.d.ts +5 -4
  19. package/index.js +56 -46
  20. package/index.js.map +1 -1
  21. package/index.mjs +26 -25
  22. package/index.mjs.map +1 -1
  23. package/indexer-lookup.d.ts +10 -9
  24. package/localnet/get-kmd-wallet-account.d.ts +1 -2
  25. package/localnet/get-localnet-dispenser-account.d.ts +1 -2
  26. package/localnet/get-or-create-kmd-wallet-account.d.ts +1 -2
  27. package/localnet/index.d.ts +0 -1
  28. package/localnet/is-localnet.d.ts +1 -2
  29. package/network-client.d.ts +3 -10
  30. package/package.json +3 -4
  31. package/{account → src/account}/account.js +21 -18
  32. package/src/account/account.js.map +1 -0
  33. package/{account → src/account}/account.mjs +22 -19
  34. package/src/account/account.mjs.map +1 -0
  35. package/src/account/get-account-config-from-environment.js.map +1 -0
  36. package/src/account/get-account-config-from-environment.mjs.map +1 -0
  37. package/{account → src/account}/get-account.js +3 -3
  38. package/src/account/get-account.js.map +1 -0
  39. package/{account → src/account}/get-account.mjs +3 -3
  40. package/src/account/get-account.mjs.map +1 -0
  41. package/{account → src/account}/get-dispenser-account.js +3 -3
  42. package/src/account/get-dispenser-account.js.map +1 -0
  43. package/{account → src/account}/get-dispenser-account.mjs +3 -3
  44. package/src/account/get-dispenser-account.mjs.map +1 -0
  45. package/{account → src/account}/mnemonic-account.js +1 -1
  46. package/src/account/mnemonic-account.js.map +1 -0
  47. package/{account → src/account}/mnemonic-account.mjs +1 -1
  48. package/src/account/mnemonic-account.mjs.map +1 -0
  49. package/{amount.js → src/amount.js} +10 -3
  50. package/src/amount.js.map +1 -0
  51. package/{amount.mjs → src/amount.mjs} +10 -4
  52. package/src/amount.mjs.map +1 -0
  53. package/{app-client.js → src/app-client.js} +20 -5
  54. package/src/app-client.js.map +1 -0
  55. package/{app-client.mjs → src/app-client.mjs} +20 -5
  56. package/src/app-client.mjs.map +1 -0
  57. package/src/app-deploy.js +285 -0
  58. package/src/app-deploy.js.map +1 -0
  59. package/src/app-deploy.mjs +276 -0
  60. package/src/app-deploy.mjs.map +1 -0
  61. package/src/app.js +349 -0
  62. package/src/app.js.map +1 -0
  63. package/src/app.mjs +329 -0
  64. package/src/app.mjs.map +1 -0
  65. package/{asset.js → src/asset.js} +6 -9
  66. package/src/asset.js.map +1 -0
  67. package/{asset.mjs → src/asset.mjs} +6 -9
  68. package/src/asset.mjs.map +1 -0
  69. package/{config.js → src/config.js} +1 -1
  70. package/src/config.js.map +1 -0
  71. package/{config.mjs → src/config.mjs} +1 -1
  72. package/src/config.mjs.map +1 -0
  73. package/src/debugging/debugging.js +15 -0
  74. package/src/debugging/debugging.js.map +1 -0
  75. package/src/debugging/debugging.mjs +13 -0
  76. package/src/debugging/debugging.mjs.map +1 -0
  77. package/{dispenser-client.js → src/dispenser-client.js} +1 -1
  78. package/src/dispenser-client.js.map +1 -0
  79. package/{dispenser-client.mjs → src/dispenser-client.mjs} +1 -1
  80. package/src/dispenser-client.mjs.map +1 -0
  81. package/{indexer-lookup.js → src/indexer-lookup.js} +14 -10
  82. package/src/indexer-lookup.js.map +1 -0
  83. package/{indexer-lookup.mjs → src/indexer-lookup.mjs} +14 -10
  84. package/src/indexer-lookup.mjs.map +1 -0
  85. package/{localnet → src/localnet}/get-kmd-wallet-account.js +3 -3
  86. package/src/localnet/get-kmd-wallet-account.js.map +1 -0
  87. package/{localnet → src/localnet}/get-kmd-wallet-account.mjs +3 -3
  88. package/src/localnet/get-kmd-wallet-account.mjs.map +1 -0
  89. package/{localnet → src/localnet}/get-localnet-dispenser-account.js +3 -3
  90. package/src/localnet/get-localnet-dispenser-account.js.map +1 -0
  91. package/{localnet → src/localnet}/get-localnet-dispenser-account.mjs +3 -3
  92. package/src/localnet/get-localnet-dispenser-account.mjs.map +1 -0
  93. package/{localnet → src/localnet}/get-or-create-kmd-wallet-account.js +3 -3
  94. package/src/localnet/get-or-create-kmd-wallet-account.js.map +1 -0
  95. package/{localnet → src/localnet}/get-or-create-kmd-wallet-account.mjs +3 -3
  96. package/src/localnet/get-or-create-kmd-wallet-account.mjs.map +1 -0
  97. package/{localnet → src/localnet}/is-localnet.js +2 -2
  98. package/src/localnet/is-localnet.js.map +1 -0
  99. package/{localnet → src/localnet}/is-localnet.mjs +2 -2
  100. package/src/localnet/is-localnet.mjs.map +1 -0
  101. package/{network-client.js → src/network-client.js} +5 -12
  102. package/src/network-client.js.map +1 -0
  103. package/{network-client.mjs → src/network-client.mjs} +5 -12
  104. package/src/network-client.mjs.map +1 -0
  105. package/{testing → src/testing}/account.js +9 -3
  106. package/src/testing/account.js.map +1 -0
  107. package/{testing → src/testing}/account.mjs +10 -4
  108. package/src/testing/account.mjs.map +1 -0
  109. package/src/testing/fixtures/algokit-log-capture-fixture.js.map +1 -0
  110. package/src/testing/fixtures/algokit-log-capture-fixture.mjs.map +1 -0
  111. package/{testing → src/testing}/fixtures/algorand-fixture.js +15 -16
  112. package/src/testing/fixtures/algorand-fixture.js.map +1 -0
  113. package/{testing → src/testing}/fixtures/algorand-fixture.mjs +15 -16
  114. package/src/testing/fixtures/algorand-fixture.mjs.map +1 -0
  115. package/src/testing/indexer.js.map +1 -0
  116. package/src/testing/indexer.mjs.map +1 -0
  117. package/{testing → src/testing}/test-logger.js +7 -3
  118. package/src/testing/test-logger.js.map +1 -0
  119. package/{testing → src/testing}/test-logger.mjs +7 -3
  120. package/src/testing/test-logger.mjs.map +1 -0
  121. package/src/testing/transaction-logger.js.map +1 -0
  122. package/src/testing/transaction-logger.mjs.map +1 -0
  123. package/src/transaction/legacy-bridge.js +129 -0
  124. package/src/transaction/legacy-bridge.js.map +1 -0
  125. package/src/transaction/legacy-bridge.mjs +124 -0
  126. package/src/transaction/legacy-bridge.mjs.map +1 -0
  127. package/{transaction → src/transaction}/perform-atomic-transaction-composer-simulate.js +14 -9
  128. package/src/transaction/perform-atomic-transaction-composer-simulate.js.map +1 -0
  129. package/{transaction → src/transaction}/perform-atomic-transaction-composer-simulate.mjs +15 -10
  130. package/src/transaction/perform-atomic-transaction-composer-simulate.mjs.map +1 -0
  131. package/{transaction → src/transaction}/transaction.js +217 -137
  132. package/src/transaction/transaction.js.map +1 -0
  133. package/{transaction → src/transaction}/transaction.mjs +218 -138
  134. package/src/transaction/transaction.mjs.map +1 -0
  135. package/{transfer → src/transfer}/transfer-algos.js +1 -1
  136. package/src/transfer/transfer-algos.js.map +1 -0
  137. package/{transfer → src/transfer}/transfer-algos.mjs +1 -1
  138. package/src/transfer/transfer-algos.mjs.map +1 -0
  139. package/{transfer → src/transfer}/transfer.js +8 -6
  140. package/src/transfer/transfer.js.map +1 -0
  141. package/{transfer → src/transfer}/transfer.mjs +8 -6
  142. package/src/transfer/transfer.mjs.map +1 -0
  143. package/{util.js → src/util.js} +11 -10
  144. package/src/util.js.map +1 -0
  145. package/{util.mjs → src/util.mjs} +11 -10
  146. package/src/util.mjs.map +1 -0
  147. package/testing/_asset.d.ts +2 -2
  148. package/testing/account.d.ts +4 -4
  149. package/testing/fixtures/algokit-log-capture-fixture.d.ts +0 -1
  150. package/testing/fixtures/algorand-fixture.d.ts +0 -1
  151. package/testing/fixtures/index.d.ts +0 -1
  152. package/testing/index.d.ts +0 -1
  153. package/testing/index.js +6 -6
  154. package/testing/index.mjs +6 -6
  155. package/testing/indexer.d.ts +0 -1
  156. package/testing/test-logger.d.ts +0 -1
  157. package/testing/transaction-logger.d.ts +0 -1
  158. package/transaction/index.d.ts +0 -1
  159. package/transaction/legacy-bridge.d.ts +31 -6
  160. package/transaction/perform-atomic-transaction-composer-simulate.d.ts +4 -2
  161. package/transaction/transaction.d.ts +38 -19
  162. package/transfer/index.d.ts +0 -1
  163. package/transfer/transfer-algos.d.ts +1 -2
  164. package/transfer/transfer.d.ts +1 -2
  165. package/types/account-manager.d.ts +33 -25
  166. package/types/account-manager.js +56 -33
  167. package/types/account-manager.js.map +1 -1
  168. package/types/account-manager.mjs +58 -35
  169. package/types/account-manager.mjs.map +1 -1
  170. package/types/account.d.ts +17 -9
  171. package/types/account.js +2 -2
  172. package/types/account.js.map +1 -1
  173. package/types/account.mjs +3 -3
  174. package/types/account.mjs.map +1 -1
  175. package/types/algo-http-client-with-retry.d.ts +1 -3
  176. package/types/algo-http-client-with-retry.js +34 -4
  177. package/types/algo-http-client-with-retry.js.map +1 -1
  178. package/types/algo-http-client-with-retry.mjs +33 -3
  179. package/types/algo-http-client-with-retry.mjs.map +1 -1
  180. package/types/algorand-client-interface.d.ts +28 -0
  181. package/types/algorand-client-interface.js +3 -0
  182. package/types/algorand-client-interface.js.map +1 -0
  183. package/types/algorand-client-interface.mjs +2 -0
  184. package/types/algorand-client-interface.mjs.map +1 -0
  185. package/types/algorand-client-transaction-creator.d.ts +452 -23
  186. package/types/algorand-client-transaction-creator.js +407 -23
  187. package/types/algorand-client-transaction-creator.js.map +1 -1
  188. package/types/algorand-client-transaction-creator.mjs +407 -23
  189. package/types/algorand-client-transaction-creator.mjs.map +1 -1
  190. package/types/algorand-client-transaction-sender.d.ts +772 -47
  191. package/types/algorand-client-transaction-sender.js +446 -16
  192. package/types/algorand-client-transaction-sender.js.map +1 -1
  193. package/types/algorand-client-transaction-sender.mjs +446 -16
  194. package/types/algorand-client-transaction-sender.mjs.map +1 -1
  195. package/types/algorand-client.d.ts +24 -17
  196. package/types/algorand-client.js +26 -16
  197. package/types/algorand-client.js.map +1 -1
  198. package/types/algorand-client.mjs +28 -15
  199. package/types/algorand-client.mjs.map +1 -1
  200. package/types/amount.d.ts +10 -11
  201. package/types/amount.js +7 -7
  202. package/types/amount.js.map +1 -1
  203. package/types/amount.mjs +7 -7
  204. package/types/amount.mjs.map +1 -1
  205. package/types/app-arc56.d.ts +359 -0
  206. package/types/app-arc56.js +184 -0
  207. package/types/app-arc56.js.map +1 -0
  208. package/types/app-arc56.mjs +175 -0
  209. package/types/app-arc56.mjs.map +1 -0
  210. package/types/app-client.d.ts +1508 -12
  211. package/types/app-client.js +1023 -34
  212. package/types/app-client.js.map +1 -1
  213. package/types/app-client.mjs +1024 -36
  214. package/types/app-client.mjs.map +1 -1
  215. package/types/app-deployer.d.ts +126 -0
  216. package/types/app-deployer.js +353 -0
  217. package/types/app-deployer.js.map +1 -0
  218. package/types/app-deployer.mjs +351 -0
  219. package/types/app-deployer.mjs.map +1 -0
  220. package/types/app-factory.d.ts +846 -0
  221. package/types/app-factory.js +410 -0
  222. package/types/app-factory.js.map +1 -0
  223. package/types/app-factory.mjs +408 -0
  224. package/types/app-factory.mjs.map +1 -0
  225. package/types/app-manager.d.ts +244 -0
  226. package/types/app-manager.js +423 -0
  227. package/types/app-manager.js.map +1 -0
  228. package/types/app-manager.mjs +421 -0
  229. package/types/app-manager.mjs.map +1 -0
  230. package/types/app-spec.d.ts +2 -1
  231. package/types/app-spec.js +127 -0
  232. package/types/app-spec.js.map +1 -1
  233. package/types/app-spec.mjs +126 -0
  234. package/types/app-spec.mjs.map +1 -1
  235. package/types/app.d.ts +57 -18
  236. package/types/app.js +1 -1
  237. package/types/app.js.map +1 -1
  238. package/types/app.mjs +1 -1
  239. package/types/app.mjs.map +1 -1
  240. package/types/asset-manager.d.ts +10 -10
  241. package/types/asset-manager.js +15 -19
  242. package/types/asset-manager.js.map +1 -1
  243. package/types/asset-manager.mjs +15 -19
  244. package/types/asset-manager.mjs.map +1 -1
  245. package/types/asset.d.ts +0 -1
  246. package/types/async-event-emitter.d.ts +14 -0
  247. package/types/async-event-emitter.js +50 -0
  248. package/types/async-event-emitter.js.map +1 -0
  249. package/types/async-event-emitter.mjs +48 -0
  250. package/types/async-event-emitter.mjs.map +1 -0
  251. package/types/client-manager.d.ts +135 -60
  252. package/types/client-manager.js +158 -44
  253. package/types/client-manager.js.map +1 -1
  254. package/types/client-manager.mjs +159 -45
  255. package/types/client-manager.mjs.map +1 -1
  256. package/types/composer.d.ts +271 -87
  257. package/types/composer.js +406 -126
  258. package/types/composer.js.map +1 -1
  259. package/types/composer.mjs +407 -125
  260. package/types/composer.mjs.map +1 -1
  261. package/types/config.d.ts +3 -6
  262. package/types/config.js +5 -44
  263. package/types/config.js.map +1 -1
  264. package/types/config.mjs +5 -27
  265. package/types/config.mjs.map +1 -1
  266. package/types/debugging.d.ts +29 -101
  267. package/types/debugging.js +16 -109
  268. package/types/debugging.js.map +1 -1
  269. package/types/debugging.mjs +12 -107
  270. package/types/debugging.mjs.map +1 -1
  271. package/types/dispenser-client.d.ts +2 -2
  272. package/types/dispenser-client.js +10 -5
  273. package/types/dispenser-client.js.map +1 -1
  274. package/types/dispenser-client.mjs +10 -5
  275. package/types/dispenser-client.mjs.map +1 -1
  276. package/types/expand.d.ts +7 -0
  277. package/types/expand.js +3 -0
  278. package/types/expand.js.map +1 -0
  279. package/types/expand.mjs +2 -0
  280. package/types/expand.mjs.map +1 -0
  281. package/types/indexer.d.ts +74 -756
  282. package/types/indexer.js.map +1 -1
  283. package/types/indexer.mjs.map +1 -1
  284. package/types/kmd-account-manager.d.ts +2 -3
  285. package/types/kmd-account-manager.js +4 -4
  286. package/types/kmd-account-manager.js.map +1 -1
  287. package/types/kmd-account-manager.mjs +5 -5
  288. package/types/kmd-account-manager.mjs.map +1 -1
  289. package/types/lifecycle-events.d.ts +10 -0
  290. package/types/lifecycle-events.js +8 -0
  291. package/types/lifecycle-events.js.map +1 -0
  292. package/types/lifecycle-events.mjs +8 -0
  293. package/types/lifecycle-events.mjs.map +1 -0
  294. package/types/logging.d.ts +0 -1
  295. package/types/logging.js.map +1 -1
  296. package/types/logging.mjs.map +1 -1
  297. package/types/logic-error.d.ts +2 -4
  298. package/types/logic-error.js +3 -3
  299. package/types/logic-error.js.map +1 -1
  300. package/types/logic-error.mjs +3 -3
  301. package/types/logic-error.mjs.map +1 -1
  302. package/types/network-client.d.ts +14 -2
  303. package/types/network-client.js.map +1 -1
  304. package/types/network-client.mjs.map +1 -1
  305. package/types/testing.d.ts +8 -10
  306. package/types/transaction.d.ts +17 -4
  307. package/types/transfer.d.ts +0 -1
  308. package/util.d.ts +2 -2
  309. package/account/account.d.ts.map +0 -1
  310. package/account/account.js.map +0 -1
  311. package/account/account.mjs.map +0 -1
  312. package/account/get-account-config-from-environment.d.ts.map +0 -1
  313. package/account/get-account-config-from-environment.js.map +0 -1
  314. package/account/get-account-config-from-environment.mjs.map +0 -1
  315. package/account/get-account.d.ts.map +0 -1
  316. package/account/get-account.js.map +0 -1
  317. package/account/get-account.mjs.map +0 -1
  318. package/account/get-dispenser-account.d.ts.map +0 -1
  319. package/account/get-dispenser-account.js.map +0 -1
  320. package/account/get-dispenser-account.mjs.map +0 -1
  321. package/account/index.d.ts.map +0 -1
  322. package/account/mnemonic-account.d.ts.map +0 -1
  323. package/account/mnemonic-account.js.map +0 -1
  324. package/account/mnemonic-account.mjs.map +0 -1
  325. package/amount.d.ts.map +0 -1
  326. package/amount.js.map +0 -1
  327. package/amount.mjs.map +0 -1
  328. package/app-client.d.ts.map +0 -1
  329. package/app-client.js.map +0 -1
  330. package/app-client.mjs.map +0 -1
  331. package/app-deploy.d.ts.map +0 -1
  332. package/app-deploy.js +0 -468
  333. package/app-deploy.js.map +0 -1
  334. package/app-deploy.mjs +0 -459
  335. package/app-deploy.mjs.map +0 -1
  336. package/app.d.ts.map +0 -1
  337. package/app.js +0 -599
  338. package/app.js.map +0 -1
  339. package/app.mjs +0 -579
  340. package/app.mjs.map +0 -1
  341. package/asset.d.ts.map +0 -1
  342. package/asset.js.map +0 -1
  343. package/asset.mjs.map +0 -1
  344. package/config.d.ts.map +0 -1
  345. package/config.js.map +0 -1
  346. package/config.mjs.map +0 -1
  347. package/debugging/debugging.d.ts.map +0 -1
  348. package/debugging/debugging.js +0 -139
  349. package/debugging/debugging.js.map +0 -1
  350. package/debugging/debugging.mjs +0 -118
  351. package/debugging/debugging.mjs.map +0 -1
  352. package/debugging/index.d.ts.map +0 -1
  353. package/debugging/simulate-and-persist-response.d.ts +0 -20
  354. package/debugging/simulate-and-persist-response.d.ts.map +0 -1
  355. package/debugging/simulate-and-persist-response.js +0 -108
  356. package/debugging/simulate-and-persist-response.js.map +0 -1
  357. package/debugging/simulate-and-persist-response.mjs +0 -89
  358. package/debugging/simulate-and-persist-response.mjs.map +0 -1
  359. package/dispenser-client.d.ts.map +0 -1
  360. package/dispenser-client.js.map +0 -1
  361. package/dispenser-client.mjs.map +0 -1
  362. package/index.d.ts.map +0 -1
  363. package/indexer-lookup.d.ts.map +0 -1
  364. package/indexer-lookup.js.map +0 -1
  365. package/indexer-lookup.mjs.map +0 -1
  366. package/localnet/get-kmd-wallet-account.d.ts.map +0 -1
  367. package/localnet/get-kmd-wallet-account.js.map +0 -1
  368. package/localnet/get-kmd-wallet-account.mjs.map +0 -1
  369. package/localnet/get-localnet-dispenser-account.d.ts.map +0 -1
  370. package/localnet/get-localnet-dispenser-account.js.map +0 -1
  371. package/localnet/get-localnet-dispenser-account.mjs.map +0 -1
  372. package/localnet/get-or-create-kmd-wallet-account.d.ts.map +0 -1
  373. package/localnet/get-or-create-kmd-wallet-account.js.map +0 -1
  374. package/localnet/get-or-create-kmd-wallet-account.mjs.map +0 -1
  375. package/localnet/index.d.ts.map +0 -1
  376. package/localnet/is-localnet.d.ts.map +0 -1
  377. package/localnet/is-localnet.js.map +0 -1
  378. package/localnet/is-localnet.mjs.map +0 -1
  379. package/network-client.d.ts.map +0 -1
  380. package/network-client.js.map +0 -1
  381. package/network-client.mjs.map +0 -1
  382. package/testing/_asset.d.ts.map +0 -1
  383. package/testing/account.d.ts.map +0 -1
  384. package/testing/account.js.map +0 -1
  385. package/testing/account.mjs.map +0 -1
  386. package/testing/fixtures/algokit-log-capture-fixture.d.ts.map +0 -1
  387. package/testing/fixtures/algokit-log-capture-fixture.js.map +0 -1
  388. package/testing/fixtures/algokit-log-capture-fixture.mjs.map +0 -1
  389. package/testing/fixtures/algorand-fixture.d.ts.map +0 -1
  390. package/testing/fixtures/algorand-fixture.js.map +0 -1
  391. package/testing/fixtures/algorand-fixture.mjs.map +0 -1
  392. package/testing/fixtures/index.d.ts.map +0 -1
  393. package/testing/index.d.ts.map +0 -1
  394. package/testing/indexer.d.ts.map +0 -1
  395. package/testing/indexer.js.map +0 -1
  396. package/testing/indexer.mjs.map +0 -1
  397. package/testing/test-logger.d.ts.map +0 -1
  398. package/testing/test-logger.js.map +0 -1
  399. package/testing/test-logger.mjs.map +0 -1
  400. package/testing/transaction-logger.d.ts.map +0 -1
  401. package/testing/transaction-logger.js.map +0 -1
  402. package/testing/transaction-logger.mjs.map +0 -1
  403. package/transaction/index.d.ts.map +0 -1
  404. package/transaction/legacy-bridge.d.ts.map +0 -1
  405. package/transaction/legacy-bridge.js +0 -35
  406. package/transaction/legacy-bridge.js.map +0 -1
  407. package/transaction/legacy-bridge.mjs +0 -33
  408. package/transaction/legacy-bridge.mjs.map +0 -1
  409. package/transaction/perform-atomic-transaction-composer-simulate.d.ts.map +0 -1
  410. package/transaction/perform-atomic-transaction-composer-simulate.js.map +0 -1
  411. package/transaction/perform-atomic-transaction-composer-simulate.mjs.map +0 -1
  412. package/transaction/transaction.d.ts.map +0 -1
  413. package/transaction/transaction.js.map +0 -1
  414. package/transaction/transaction.mjs.map +0 -1
  415. package/transfer/index.d.ts.map +0 -1
  416. package/transfer/transfer-algos.d.ts.map +0 -1
  417. package/transfer/transfer-algos.js.map +0 -1
  418. package/transfer/transfer-algos.mjs.map +0 -1
  419. package/transfer/transfer.d.ts.map +0 -1
  420. package/transfer/transfer.js.map +0 -1
  421. package/transfer/transfer.mjs.map +0 -1
  422. package/types/account-manager.d.ts.map +0 -1
  423. package/types/account.d.ts.map +0 -1
  424. package/types/algo-http-client-with-retry.d.ts.map +0 -1
  425. package/types/algorand-client-transaction-creator.d.ts.map +0 -1
  426. package/types/algorand-client-transaction-sender.d.ts.map +0 -1
  427. package/types/algorand-client.d.ts.map +0 -1
  428. package/types/amount.d.ts.map +0 -1
  429. package/types/app-client.d.ts.map +0 -1
  430. package/types/app-spec.d.ts.map +0 -1
  431. package/types/app.d.ts.map +0 -1
  432. package/types/asset-manager.d.ts.map +0 -1
  433. package/types/asset.d.ts.map +0 -1
  434. package/types/client-manager.d.ts.map +0 -1
  435. package/types/composer.d.ts.map +0 -1
  436. package/types/config.d.ts.map +0 -1
  437. package/types/debugging.d.ts.map +0 -1
  438. package/types/dispenser-client.d.ts.map +0 -1
  439. package/types/indexer.d.ts.map +0 -1
  440. package/types/kmd-account-manager.d.ts.map +0 -1
  441. package/types/logging.d.ts.map +0 -1
  442. package/types/logic-error.d.ts.map +0 -1
  443. package/types/network-client.d.ts.map +0 -1
  444. package/types/testing.d.ts.map +0 -1
  445. package/types/transaction.d.ts.map +0 -1
  446. package/types/transfer.d.ts.map +0 -1
  447. package/types/urlTokenBaseHTTPClient.d.ts +0 -41
  448. package/types/urlTokenBaseHTTPClient.d.ts.map +0 -1
  449. package/types/urlTokenBaseHTTPClient.js +0 -153
  450. package/types/urlTokenBaseHTTPClient.js.map +0 -1
  451. package/types/urlTokenBaseHTTPClient.mjs +0 -151
  452. package/types/urlTokenBaseHTTPClient.mjs.map +0 -1
  453. package/util.d.ts.map +0 -1
  454. package/util.js.map +0 -1
  455. package/util.mjs.map +0 -1
  456. /package/{account → src/account}/get-account-config-from-environment.js +0 -0
  457. /package/{account → src/account}/get-account-config-from-environment.mjs +0 -0
  458. /package/{testing → src/testing}/fixtures/algokit-log-capture-fixture.js +0 -0
  459. /package/{testing → src/testing}/fixtures/algokit-log-capture-fixture.mjs +0 -0
  460. /package/{testing → src/testing}/indexer.js +0 -0
  461. /package/{testing → src/testing}/indexer.mjs +0 -0
  462. /package/{testing → src/testing}/transaction-logger.js +0 -0
  463. /package/{testing → src/testing}/transaction-logger.mjs +0 -0
package/types/composer.js CHANGED
@@ -1,18 +1,24 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
3
  var algosdk = require('algosdk');
6
- var transaction = require('../transaction/transaction.js');
4
+ var config = require('../src/config.js');
5
+ var transaction = require('../src/transaction/transaction.js');
6
+ var types_app = require('./app.js');
7
+ var types_appManager = require('./app-manager.js');
8
+ var types_lifecycleEvents = require('./lifecycle-events.js');
7
9
  var types_networkClient = require('./network-client.js');
8
10
 
11
+ var AtomicTransactionComposer = algosdk.AtomicTransactionComposer;
9
12
  var isTransactionWithSigner = algosdk.isTransactionWithSigner;
10
- var encodeAddress = algosdk.encodeAddress;
13
+ var modelsv2 = algosdk.modelsv2;
14
+ const address = (address) => {
15
+ return typeof address === 'string' ? algosdk.Address.fromString(address) : address;
16
+ };
11
17
  const MAX_TRANSACTION_GROUP_SIZE = 16;
12
- /** AlgoKit Composer helps you compose and execute transactions as a transaction group. */
13
- class AlgoKitComposer {
18
+ /** TransactionComposer helps you compose and execute transactions as a transaction group. */
19
+ class TransactionComposer {
14
20
  /**
15
- * Create an `AlgoKitComposer`.
21
+ * Create a `TransactionComposer`.
16
22
  * @param params The configuration for this composer
17
23
  */
18
24
  constructor(params) {
@@ -23,7 +29,7 @@ class AlgoKitComposer {
23
29
  /** Transactions that have not yet been composed */
24
30
  this.txns = [];
25
31
  /** The default transaction validity window */
26
- this.defaultValidityWindow = 10;
32
+ this.defaultValidityWindow = 10n;
27
33
  /** Whether the validity window was explicitly set on construction */
28
34
  this.defaultValidityWindowIsExplicit = false;
29
35
  this.algod = params.algod;
@@ -32,6 +38,21 @@ class AlgoKitComposer {
32
38
  this.getSigner = params.getSigner;
33
39
  this.defaultValidityWindow = params.defaultValidityWindow ?? this.defaultValidityWindow;
34
40
  this.defaultValidityWindowIsExplicit = params.defaultValidityWindow !== undefined;
41
+ this.appManager = params.appManager ?? new types_appManager.AppManager(params.algod);
42
+ }
43
+ /**
44
+ * Add a pre-built transaction to the transaction group.
45
+ * @param transaction The pre-built transaction
46
+ * @param signer Optional signer override for the transaction
47
+ * @returns The composer so you can chain method calls
48
+ */
49
+ addTransaction(transaction, signer) {
50
+ this.txns.push({
51
+ txn: transaction,
52
+ signer: signer ?? this.getSigner(transaction.sender),
53
+ type: 'txnWithSigner',
54
+ });
55
+ return this;
35
56
  }
36
57
  /**
37
58
  * Add a payment transaction to the transaction group.
@@ -105,9 +126,44 @@ class AlgoKitComposer {
105
126
  this.txns.push({ ...params, type: 'assetOptOut' });
106
127
  return this;
107
128
  }
129
+ /**
130
+ * Add an application create transaction to the transaction group.
131
+ *
132
+ * Note: we recommend using app clients to make it easier to make app calls.
133
+ * @param params The application create transaction parameters
134
+ * @returns The composer so you can chain method calls
135
+ */
136
+ addAppCreate(params) {
137
+ this.txns.push({ ...params, type: 'appCall' });
138
+ return this;
139
+ }
140
+ /**
141
+ * Add an application update transaction to the transaction group.
142
+ *
143
+ * Note: we recommend using app clients to make it easier to make app calls.
144
+ * @param params The application update transaction parameters
145
+ * @returns The composer so you can chain method calls
146
+ */
147
+ addAppUpdate(params) {
148
+ this.txns.push({ ...params, type: 'appCall', onComplete: algosdk.OnApplicationComplete.UpdateApplicationOC });
149
+ return this;
150
+ }
151
+ /**
152
+ * Add an application delete transaction to the transaction group.
153
+ *
154
+ * Note: we recommend using app clients to make it easier to make app calls.
155
+ * @param params The application delete transaction parameters
156
+ * @returns The composer so you can chain method calls
157
+ */
158
+ addAppDelete(params) {
159
+ this.txns.push({ ...params, type: 'appCall', onComplete: algosdk.OnApplicationComplete.DeleteApplicationOC });
160
+ return this;
161
+ }
108
162
  /**
109
163
  * Add an application call transaction to the transaction group.
110
164
  *
165
+ * If you want to create or update an app use `addAppCreate` or `addAppUpdate`.
166
+ *
111
167
  * Note: we recommend using app clients to make it easier to make app calls.
112
168
  * @param params The application call transaction parameters
113
169
  * @returns The composer so you can chain method calls
@@ -117,13 +173,46 @@ class AlgoKitComposer {
117
173
  return this;
118
174
  }
119
175
  /**
120
- * Add an ABI method application call transaction to the transaction group.
176
+ * Add an ABI method create application call transaction to the transaction group.
177
+ *
178
+ * Note: we recommend using app clients to make it easier to make app calls.
179
+ * @param params The ABI create method application call transaction parameters
180
+ * @returns The composer so you can chain method calls
181
+ */
182
+ addAppCreateMethodCall(params) {
183
+ this.txns.push({ ...params, type: 'methodCall' });
184
+ return this;
185
+ }
186
+ /**
187
+ * Add an ABI method update application call transaction to the transaction group.
188
+ *
189
+ * Note: we recommend using app clients to make it easier to make app calls.
190
+ * @param params The ABI update method application call transaction parameters
191
+ * @returns The composer so you can chain method calls
192
+ */
193
+ addAppUpdateMethodCall(params) {
194
+ this.txns.push({ ...params, type: 'methodCall', onComplete: algosdk.OnApplicationComplete.UpdateApplicationOC });
195
+ return this;
196
+ }
197
+ /**
198
+ * Add an ABI method delete application call transaction to the transaction group.
199
+ *
200
+ * Note: we recommend using app clients to make it easier to make app calls.
201
+ * @param params The ABI delete method application call transaction parameters
202
+ * @returns The composer so you can chain method calls
203
+ */
204
+ addAppDeleteMethodCall(params) {
205
+ this.txns.push({ ...params, type: 'methodCall', onComplete: algosdk.OnApplicationComplete.DeleteApplicationOC });
206
+ return this;
207
+ }
208
+ /**
209
+ * Add a non-create/non-update ABI method application call transaction to the transaction group.
121
210
  *
122
211
  * Note: we recommend using app clients to make it easier to make app calls.
123
212
  * @param params The ABI method application call transaction parameters
124
213
  * @returns The composer so you can chain method calls
125
214
  */
126
- addMethodCall(params) {
215
+ addAppCallMethodCall(params) {
127
216
  this.txns.push({ ...params, type: 'methodCall' });
128
217
  return this;
129
218
  }
@@ -145,73 +234,105 @@ class AlgoKitComposer {
145
234
  this.txns.push({ atc, type: 'atc' });
146
235
  return this;
147
236
  }
237
+ /** Build an ATC and return transactions ready to be incorporated into a broader set of transactions this composer is composing */
148
238
  buildAtc(atc) {
149
239
  const group = atc.buildGroup();
150
- const txnWithSigners = group.map((ts) => {
240
+ const txnWithSigners = group.map((ts, idx) => {
241
+ // Remove underlying group ID from the transaction since it will be re-grouped when this TransactionComposer is built
151
242
  ts.txn.group = undefined;
243
+ // If this was a method call stash the ABIMethod for later
244
+ if (atc['methodCalls'].get(idx)) {
245
+ this.txnMethodMap.set(ts.txn.txID(), atc['methodCalls'].get(idx));
246
+ }
152
247
  return ts;
153
248
  });
154
- const method = atc['methodCalls'].get(group.length - 1);
155
- if (method)
156
- this.txnMethodMap.set(txnWithSigners.at(-1).txn.txID(), method);
157
249
  return txnWithSigners;
158
250
  }
159
- commonTxnBuildStep(params, txn, suggestedParams) {
251
+ commonTxnBuildStep(buildTxn, params, txnParams) {
252
+ // We are going to mutate suggested params, let's create a clone first
253
+ txnParams.suggestedParams = { ...txnParams.suggestedParams };
160
254
  if (params.lease)
161
- txn.addLease(transaction.encodeLease(params.lease));
255
+ txnParams.lease = transaction.encodeLease(params.lease);
162
256
  if (params.rekeyTo)
163
- txn.addRekey(params.rekeyTo);
257
+ txnParams.rekeyTo = address(params.rekeyTo);
258
+ const encoder = new TextEncoder();
164
259
  if (params.note)
165
- txn.note = transaction.encodeTransactionNote(params.note);
260
+ txnParams.note = (typeof params.note === 'string' ? encoder.encode(params.note) : params.note);
166
261
  if (params.firstValidRound) {
167
- txn.firstRound = Number(params.firstValidRound);
262
+ txnParams.suggestedParams.firstValid = params.firstValidRound;
168
263
  }
169
264
  if (params.lastValidRound) {
170
- txn.lastRound = Number(params.lastValidRound);
265
+ txnParams.suggestedParams.lastValid = params.lastValidRound;
171
266
  }
172
267
  else {
173
268
  // If the validity window isn't set in this transaction or by default and we are pointing at
174
269
  // LocalNet set a bigger window to avoid dead transactions
175
- const window = params.validityWindow ??
176
- (!this.defaultValidityWindowIsExplicit && types_networkClient.genesisIdIsLocalNet(suggestedParams.genesisID) ? 1000 : this.defaultValidityWindow);
177
- txn.lastRound = txn.firstRound + window;
270
+ const window = params.validityWindow
271
+ ? BigInt(params.validityWindow)
272
+ : !this.defaultValidityWindowIsExplicit && types_networkClient.genesisIdIsLocalNet(txnParams.suggestedParams.genesisID ?? 'unknown')
273
+ ? 1000n
274
+ : this.defaultValidityWindow;
275
+ txnParams.suggestedParams.lastValid = BigInt(txnParams.suggestedParams.firstValid) + window;
178
276
  }
179
277
  if (params.staticFee !== undefined && params.extraFee !== undefined) {
180
278
  throw Error('Cannot set both staticFee and extraFee');
181
279
  }
182
280
  if (params.staticFee !== undefined) {
183
- txn.fee = params.staticFee.microAlgo;
184
- }
185
- else {
186
- txn.fee = txn.estimateSize() * suggestedParams.fee || algosdk.ALGORAND_MIN_TX_FEE;
187
- if (params.extraFee)
188
- txn.fee += params.extraFee.microAlgo;
281
+ txnParams.suggestedParams.fee = params.staticFee.microAlgo;
282
+ txnParams.suggestedParams.flatFee = true;
189
283
  }
190
- txn.flatFee = true;
284
+ const txn = buildTxn(txnParams);
285
+ if (params.extraFee)
286
+ txn.fee += params.extraFee.microAlgo;
191
287
  if (params.maxFee !== undefined && txn.fee > params.maxFee.microAlgo) {
192
- throw Error(`Transaction fee ${txn.fee} is greater than maxFee ${params.maxFee}`);
288
+ throw Error(`Transaction fee ${txn.fee} µALGO is greater than maxFee ${params.maxFee}`);
193
289
  }
194
290
  return txn;
195
291
  }
292
+ /**
293
+ * Builds an ABI method call transaction and any other associated transactions represented in the ABI args.
294
+ * @param includeSigner Whether to include the actual signer for the transactions.
295
+ * If you are just building transactions without signers yet then set this to `false`.
296
+ */
196
297
  async buildMethodCall(params, suggestedParams, includeSigner) {
197
298
  const methodArgs = [];
299
+ const transactionsForGroup = [];
198
300
  const isAbiValue = (x) => {
199
301
  if (Array.isArray(x))
200
302
  return x.length == 0 || x.every(isAbiValue);
201
- return ['boolean', 'number', 'bigint', 'string', 'Uint8Array'].includes(typeof x);
303
+ return typeof x === 'bigint' || typeof x === 'boolean' || typeof x === 'number' || typeof x === 'string' || x instanceof Uint8Array;
202
304
  };
203
- for (const arg of params.args ?? []) {
305
+ for (let i = (params.args ?? []).length - 1; i >= 0; i--) {
306
+ const arg = params.args[i];
307
+ if (arg === undefined) {
308
+ // An undefined transaction argument signals that the value will be supplied by a method call argument
309
+ if (algosdk.abiTypeIsTransaction(params.method.args[i].type) && transactionsForGroup.length > 0) {
310
+ // Move the last transaction from the group to the method call arguments to appease algosdk
311
+ const placeholderTransaction = transactionsForGroup.splice(-1, 1)[0];
312
+ methodArgs.push(placeholderTransaction);
313
+ continue;
314
+ }
315
+ throw Error(`No value provided for argument ${i + 1} within call to ${params.method.name}`);
316
+ }
204
317
  if (isAbiValue(arg)) {
205
318
  methodArgs.push(arg);
206
319
  continue;
207
320
  }
321
+ // Underlying ATC only supports addresses as strings
322
+ if (arg instanceof algosdk.Address) {
323
+ methodArgs.push(arg.toString());
324
+ continue;
325
+ }
208
326
  if (isTransactionWithSigner(arg)) {
209
327
  methodArgs.push(arg);
210
328
  continue;
211
329
  }
212
330
  if ('method' in arg) {
213
331
  const tempTxnWithSigners = await this.buildMethodCall(arg, suggestedParams, includeSigner);
214
- methodArgs.push(...tempTxnWithSigners);
332
+ // If there is any transaction args, add to the atc
333
+ // Everything else should be added as method args
334
+ methodArgs.push(...tempTxnWithSigners.slice(-1)); // Add the method call itself as a method arg
335
+ transactionsForGroup.push(...tempTxnWithSigners.slice(0, -1).reverse()); // Add any transaction arguments to the atc
215
336
  continue;
216
337
  }
217
338
  const txn = await arg;
@@ -222,73 +343,97 @@ class AlgoKitComposer {
222
343
  ? 'signer' in params.signer
223
344
  ? params.signer.signer
224
345
  : params.signer
225
- : this.getSigner(encodeAddress(txn.from.publicKey))
226
- : algosdk.makeEmptyTransactionSigner(),
346
+ : this.getSigner(txn.sender)
347
+ : TransactionComposer.NULL_SIGNER,
227
348
  });
228
349
  }
229
350
  const methodAtc = new algosdk.AtomicTransactionComposer();
230
- const appID = Number(params.appId || 0);
231
- methodAtc.addMethodCall({
232
- appID,
351
+ transactionsForGroup.reverse().forEach((txn) => methodAtc.addTransaction(txn));
352
+ const appId = Number('appId' in params ? params.appId : 0n);
353
+ const approvalProgram = 'approvalProgram' in params
354
+ ? typeof params.approvalProgram === 'string'
355
+ ? (await this.appManager.compileTeal(params.approvalProgram)).compiledBase64ToBytes
356
+ : params.approvalProgram
357
+ : undefined;
358
+ const clearStateProgram = 'clearStateProgram' in params
359
+ ? typeof params.clearStateProgram === 'string'
360
+ ? (await this.appManager.compileTeal(params.clearStateProgram)).compiledBase64ToBytes
361
+ : params.clearStateProgram
362
+ : undefined;
363
+ const txnParams = {
364
+ appID: appId,
233
365
  sender: params.sender,
234
366
  suggestedParams,
235
- onComplete: params.onComplete,
367
+ onComplete: params.onComplete ?? algosdk.OnApplicationComplete.NoOpOC,
236
368
  appAccounts: params.accountReferences,
237
369
  appForeignApps: params.appReferences?.map((x) => Number(x)),
238
370
  appForeignAssets: params.assetReferences?.map((x) => Number(x)),
239
- approvalProgram: params.approvalProgram,
240
- clearProgram: params.clearProgram,
241
- extraPages: params.extraPages,
242
- numLocalInts: params.schema?.localUints || (appID === 0 ? 0 : undefined),
243
- numLocalByteSlices: params.schema?.localByteSlices || (appID === 0 ? 0 : undefined),
244
- numGlobalInts: params.schema?.globalUints || (appID === 0 ? 0 : undefined),
245
- numGlobalByteSlices: params.schema?.globalByteSlices || (appID === 0 ? 0 : undefined),
371
+ boxes: params.boxReferences?.map(types_appManager.AppManager.getBoxReference),
372
+ approvalProgram,
373
+ clearProgram: clearStateProgram,
374
+ extraPages: appId === 0
375
+ ? 'extraProgramPages' in params && params.extraProgramPages !== undefined
376
+ ? params.extraProgramPages
377
+ : approvalProgram
378
+ ? Math.floor((approvalProgram.length + (clearStateProgram?.length ?? 0)) / types_app.APP_PAGE_MAX_SIZE)
379
+ : 0
380
+ : undefined,
381
+ numLocalInts: appId === 0 ? ('schema' in params ? (params.schema?.localInts ?? 0) : 0) : undefined,
382
+ numLocalByteSlices: appId === 0 ? ('schema' in params ? (params.schema?.localByteSlices ?? 0) : 0) : undefined,
383
+ numGlobalInts: appId === 0 ? ('schema' in params ? (params.schema?.globalInts ?? 0) : 0) : undefined,
384
+ numGlobalByteSlices: appId === 0 ? ('schema' in params ? (params.schema?.globalByteSlices ?? 0) : 0) : undefined,
246
385
  method: params.method,
247
- signer: params.signer ? ('signer' in params.signer ? params.signer.signer : params.signer) : this.getSigner(params.sender),
248
- methodArgs: methodArgs,
386
+ signer: includeSigner
387
+ ? params.signer
388
+ ? 'signer' in params.signer
389
+ ? params.signer.signer
390
+ : params.signer
391
+ : this.getSigner(params.sender)
392
+ : TransactionComposer.NULL_SIGNER,
393
+ methodArgs: methodArgs.reverse(),
249
394
  // note, lease, and rekeyTo are set in the common build step
250
395
  note: undefined,
251
396
  lease: undefined,
252
397
  rekeyTo: undefined,
253
- });
254
- // Run the actual method call txn through the common build step to set fees and validity rounds
255
- const group = methodAtc.buildGroup();
256
- const methodIdx = group.length - 1;
257
- group[methodIdx].txn = this.commonTxnBuildStep(params, group[methodIdx].txn, suggestedParams);
398
+ };
399
+ // Build the transaction
400
+ this.commonTxnBuildStep((txnParams) => {
401
+ methodAtc.addMethodCall(txnParams);
402
+ return methodAtc.buildGroup()[methodAtc.count() - 1].txn;
403
+ }, params, txnParams);
404
+ // Process the ATC to get a set of transactions ready for broader grouping
258
405
  return this.buildAtc(methodAtc);
259
406
  }
260
407
  buildPayment(params, suggestedParams) {
261
- const txn = algosdk.makePaymentTxnWithSuggestedParamsFromObject({
262
- from: params.sender,
263
- to: params.receiver,
408
+ return this.commonTxnBuildStep(algosdk.makePaymentTxnWithSuggestedParamsFromObject, params, {
409
+ sender: params.sender,
410
+ receiver: params.receiver,
264
411
  amount: params.amount.microAlgo,
265
412
  closeRemainderTo: params.closeRemainderTo,
266
413
  suggestedParams,
267
414
  });
268
- return this.commonTxnBuildStep(params, txn, suggestedParams);
269
415
  }
270
416
  buildAssetCreate(params, suggestedParams) {
271
- const txn = algosdk.makeAssetCreateTxnWithSuggestedParamsFromObject({
272
- from: params.sender,
417
+ return this.commonTxnBuildStep(algosdk.makeAssetCreateTxnWithSuggestedParamsFromObject, params, {
418
+ sender: params.sender,
273
419
  total: params.total,
274
420
  decimals: params.decimals ?? 0,
275
421
  assetName: params.assetName,
276
422
  unitName: params.unitName,
277
423
  assetURL: params.url,
278
424
  defaultFrozen: params.defaultFrozen ?? false,
279
- assetMetadataHash: params.metadataHash,
425
+ assetMetadataHash: typeof params.metadataHash === 'string' ? Buffer.from(params.metadataHash, 'utf-8') : params.metadataHash,
280
426
  manager: params.manager,
281
427
  reserve: params.reserve,
282
428
  freeze: params.freeze,
283
429
  clawback: params.clawback,
284
430
  suggestedParams,
285
431
  });
286
- return this.commonTxnBuildStep(params, txn, suggestedParams);
287
432
  }
288
433
  buildAssetConfig(params, suggestedParams) {
289
- const txn = algosdk.makeAssetConfigTxnWithSuggestedParamsFromObject({
290
- from: params.sender,
291
- assetIndex: Number(params.assetId),
434
+ return this.commonTxnBuildStep(algosdk.makeAssetConfigTxnWithSuggestedParamsFromObject, params, {
435
+ sender: params.sender,
436
+ assetIndex: params.assetId,
292
437
  suggestedParams,
293
438
  manager: params.manager,
294
439
  reserve: params.reserve,
@@ -296,89 +441,101 @@ class AlgoKitComposer {
296
441
  clawback: params.clawback,
297
442
  strictEmptyAddressChecking: false,
298
443
  });
299
- return this.commonTxnBuildStep(params, txn, suggestedParams);
300
444
  }
301
445
  buildAssetDestroy(params, suggestedParams) {
302
- const txn = algosdk.makeAssetDestroyTxnWithSuggestedParamsFromObject({
303
- from: params.sender,
304
- assetIndex: Number(params.assetId),
446
+ return this.commonTxnBuildStep(algosdk.makeAssetDestroyTxnWithSuggestedParamsFromObject, params, {
447
+ sender: params.sender,
448
+ assetIndex: params.assetId,
305
449
  suggestedParams,
306
450
  });
307
- return this.commonTxnBuildStep(params, txn, suggestedParams);
308
451
  }
309
452
  buildAssetFreeze(params, suggestedParams) {
310
- const txn = algosdk.makeAssetFreezeTxnWithSuggestedParamsFromObject({
311
- from: params.sender,
312
- assetIndex: Number(params.assetId),
453
+ return this.commonTxnBuildStep(algosdk.makeAssetFreezeTxnWithSuggestedParamsFromObject, params, {
454
+ sender: params.sender,
455
+ assetIndex: params.assetId,
313
456
  freezeTarget: params.account,
314
- freezeState: params.frozen,
457
+ frozen: params.frozen,
315
458
  suggestedParams,
316
459
  });
317
- return this.commonTxnBuildStep(params, txn, suggestedParams);
318
460
  }
319
461
  buildAssetTransfer(params, suggestedParams) {
320
- const txn = algosdk.makeAssetTransferTxnWithSuggestedParamsFromObject({
321
- from: params.sender,
322
- to: params.receiver,
323
- assetIndex: Number(params.assetId),
462
+ return this.commonTxnBuildStep(algosdk.makeAssetTransferTxnWithSuggestedParamsFromObject, params, {
463
+ sender: params.sender,
464
+ receiver: params.receiver,
465
+ assetIndex: params.assetId,
324
466
  amount: params.amount,
325
467
  suggestedParams,
326
468
  closeRemainderTo: params.closeAssetTo,
327
- revocationTarget: params.clawbackTarget,
469
+ assetSender: params.clawbackTarget,
328
470
  });
329
- return this.commonTxnBuildStep(params, txn, suggestedParams);
330
471
  }
331
- buildAppCall(params, suggestedParams) {
472
+ async buildAppCall(params, suggestedParams) {
473
+ const appId = 'appId' in params ? params.appId : 0n;
474
+ const approvalProgram = 'approvalProgram' in params
475
+ ? typeof params.approvalProgram === 'string'
476
+ ? (await this.appManager.compileTeal(params.approvalProgram)).compiledBase64ToBytes
477
+ : params.approvalProgram
478
+ : undefined;
479
+ const clearStateProgram = 'clearStateProgram' in params
480
+ ? typeof params.clearStateProgram === 'string'
481
+ ? (await this.appManager.compileTeal(params.clearStateProgram)).compiledBase64ToBytes
482
+ : params.clearStateProgram
483
+ : undefined;
332
484
  const sdkParams = {
333
- from: params.sender,
485
+ sender: params.sender,
334
486
  suggestedParams,
335
- onComplete: params.onComplete,
336
- approvalProgram: params.approvalProgram,
337
- clearProgram: params.clearProgram,
338
487
  appArgs: params.args,
488
+ onComplete: params.onComplete ?? algosdk.OnApplicationComplete.NoOpOC,
339
489
  accounts: params.accountReferences,
340
490
  foreignApps: params.appReferences?.map((x) => Number(x)),
341
491
  foreignAssets: params.assetReferences?.map((x) => Number(x)),
342
- extraPages: params.extraPages,
343
- numLocalInts: params.schema?.localUints || 0,
344
- numLocalByteSlices: params.schema?.localByteSlices || 0,
345
- numGlobalInts: params.schema?.globalUints || 0,
346
- numGlobalByteSlices: params.schema?.globalByteSlices || 0,
492
+ boxes: params.boxReferences?.map(types_appManager.AppManager.getBoxReference),
493
+ approvalProgram,
494
+ clearProgram: clearStateProgram,
347
495
  };
348
- let txn;
349
- const onComplete = params.onComplete || algosdk.OnApplicationComplete.NoOpOC;
350
- if (!params.appId) {
351
- if (params.approvalProgram === undefined || params.clearProgram === undefined) {
352
- throw new Error('approvalProgram and clearProgram are required for application creation');
496
+ if (appId === 0n) {
497
+ if (sdkParams.approvalProgram === undefined || sdkParams.clearProgram === undefined) {
498
+ throw new Error('approvalProgram and clearStateProgram are required for application creation');
353
499
  }
354
- txn = algosdk.makeApplicationCreateTxnFromObject({
500
+ return this.commonTxnBuildStep(algosdk.makeApplicationCreateTxnFromObject, params, {
355
501
  ...sdkParams,
356
- onComplete,
357
- approvalProgram: params.approvalProgram,
358
- clearProgram: params.clearProgram,
502
+ extraPages: 'extraProgramPages' in params
503
+ ? (params.extraProgramPages ?? Math.floor((approvalProgram.length + clearStateProgram.length) / types_app.APP_PAGE_MAX_SIZE))
504
+ : 0,
505
+ numLocalInts: 'schema' in params ? (params.schema?.localInts ?? 0) : 0,
506
+ numLocalByteSlices: 'schema' in params ? (params.schema?.localByteSlices ?? 0) : 0,
507
+ numGlobalInts: 'schema' in params ? (params.schema?.globalInts ?? 0) : 0,
508
+ numGlobalByteSlices: 'schema' in params ? (params.schema?.globalByteSlices ?? 0) : 0,
509
+ approvalProgram: approvalProgram,
510
+ clearProgram: clearStateProgram,
359
511
  });
360
512
  }
361
- txn = algosdk.makeApplicationCallTxnFromObject({ ...sdkParams, onComplete, appIndex: Number(params.appId || 0) });
362
- return this.commonTxnBuildStep(params, txn, suggestedParams);
513
+ else {
514
+ return this.commonTxnBuildStep(algosdk.makeApplicationCallTxnFromObject, params, { ...sdkParams, appIndex: appId });
515
+ }
363
516
  }
364
517
  buildKeyReg(params, suggestedParams) {
365
- const txn = algosdk.makeKeyRegistrationTxnWithSuggestedParams(params.sender, undefined, params.voteKey, params.selectionKey, Number(params.voteFirst), Number(params.voteLast), Number(params.voteKeyDilution), suggestedParams, undefined, false, params.stateProofKey);
366
- return this.commonTxnBuildStep(params, txn, suggestedParams);
518
+ return this.commonTxnBuildStep(algosdk.makeKeyRegistrationTxnWithSuggestedParamsFromObject, params, {
519
+ sender: params.sender,
520
+ voteKey: params.voteKey,
521
+ selectionKey: params.selectionKey,
522
+ voteFirst: params.voteFirst,
523
+ voteLast: params.voteLast,
524
+ voteKeyDilution: params.voteKeyDilution,
525
+ stateProofKey: params.stateProofKey,
526
+ nonParticipation: false,
527
+ suggestedParams,
528
+ });
367
529
  }
530
+ /** Builds all transaction types apart from `txnWithSigner`, `atc` and `methodCall` since those ones can have custom signers that need to be retrieved. */
368
531
  async buildTxn(txn, suggestedParams) {
369
532
  switch (txn.type) {
370
- case 'txnWithSigner':
371
- return [txn.txn];
372
- case 'atc':
373
- return txn.atc.buildGroup().map((ts) => ts.txn);
374
- case 'methodCall':
375
- return (await this.buildMethodCall(txn, suggestedParams, false)).map((ts) => ts.txn);
376
533
  case 'pay':
377
534
  return [this.buildPayment(txn, suggestedParams)];
378
535
  case 'assetCreate':
379
536
  return [this.buildAssetCreate(txn, suggestedParams)];
380
537
  case 'appCall':
381
- return [this.buildAppCall(txn, suggestedParams)];
538
+ return [await this.buildAppCall(txn, suggestedParams)];
382
539
  case 'assetConfig':
383
540
  return [this.buildAssetConfig(txn, suggestedParams)];
384
541
  case 'assetDestroy':
@@ -411,43 +568,77 @@ class AlgoKitComposer {
411
568
  return (await this.buildTxn(txn, suggestedParams)).map((txn) => ({ txn, signer }));
412
569
  }
413
570
  /**
414
- * Compose all of the transactions without signers and return the transaction objects directly.
571
+ * Compose all of the transactions without signers and return the transaction objects directly along with any ABI method calls.
415
572
  *
416
- * @returns The array of built transactions
573
+ * @returns The array of built transactions and any corresponding method calls
417
574
  */
418
575
  async buildTransactions() {
419
576
  const suggestedParams = await this.getSuggestedParams();
420
577
  const transactions = [];
578
+ const methodCalls = new Map();
579
+ const signers = new Map();
421
580
  for (const txn of this.txns) {
422
- transactions.push(...(await this.buildTxn(txn, suggestedParams)));
581
+ if (!['txnWithSigner', 'atc', 'methodCall'].includes(txn.type)) {
582
+ transactions.push(...(await this.buildTxn(txn, suggestedParams)));
583
+ }
584
+ else {
585
+ const transactionsWithSigner = txn.type === 'txnWithSigner'
586
+ ? [txn]
587
+ : txn.type === 'atc'
588
+ ? this.buildAtc(txn.atc)
589
+ : txn.type === 'methodCall'
590
+ ? await this.buildMethodCall(txn, suggestedParams, false)
591
+ : [];
592
+ transactions.push(...transactionsWithSigner.map((ts) => ts.txn));
593
+ transactionsWithSigner.forEach((ts, idx) => {
594
+ if (ts.signer && ts.signer !== TransactionComposer.NULL_SIGNER) {
595
+ signers.set(idx, ts.signer);
596
+ }
597
+ });
598
+ }
423
599
  }
424
- return transactions;
600
+ for (let i = 0; i < transactions.length; i++) {
601
+ const method = this.txnMethodMap.get(transactions[i].txID());
602
+ if (method)
603
+ methodCalls.set(i, method);
604
+ }
605
+ return { transactions, methodCalls, signers };
606
+ }
607
+ /**
608
+ * Get the number of transactions currently added to this composer.
609
+ */
610
+ async count() {
611
+ return (await this.buildTransactions()).transactions.length;
425
612
  }
426
613
  /**
427
614
  * Compose all of the transactions in a single atomic transaction group and an atomic transaction composer.
428
615
  *
429
616
  * You can then use the transactions standalone, or use the composer to execute or simulate the transactions.
617
+ *
618
+ * Once this method is called, no further transactions will be able to be added.
619
+ * You can safely call this method multiple times to get the same result.
430
620
  * @returns The built atomic transaction composer and the transactions
431
621
  */
432
622
  async build() {
433
623
  if (this.atc.getStatus() === algosdk.AtomicTransactionComposerStatus.BUILDING) {
434
624
  const suggestedParams = await this.getSuggestedParams();
625
+ // Build all of the transactions
435
626
  const txnWithSigners = [];
436
627
  for (const txn of this.txns) {
437
628
  txnWithSigners.push(...(await this.buildTxnWithSigner(txn, suggestedParams)));
438
629
  }
439
- txnWithSigners.forEach((ts) => {
440
- this.atc.addTransaction(ts);
441
- });
630
+ // Add all of the transactions to the underlying ATC
442
631
  const methodCalls = new Map();
443
632
  txnWithSigners.forEach((ts, idx) => {
633
+ this.atc.addTransaction(ts);
634
+ // Populate consolidated set of all ABI method calls
444
635
  const method = this.txnMethodMap.get(ts.txn.txID());
445
636
  if (method)
446
637
  methodCalls.set(idx, method);
447
638
  });
448
639
  this.atc['methodCalls'] = methodCalls;
449
640
  }
450
- return { atc: this.atc, transactions: this.atc.buildGroup() };
641
+ return { atc: this.atc, transactions: this.atc.buildGroup(), methodCalls: this.atc['methodCalls'] };
451
642
  }
452
643
  /**
453
644
  * Rebuild the group, discarding any previously built transactions.
@@ -459,25 +650,114 @@ class AlgoKitComposer {
459
650
  return await this.build();
460
651
  }
461
652
  /**
462
- * Compose the atomic transaction group and send it to the network
653
+ * Compose the atomic transaction group and send it to the network.
463
654
  * @param params The parameters to control execution with
464
655
  * @returns The execution result
465
656
  */
466
- async execute(params) {
657
+ async send(params) {
467
658
  const group = (await this.build()).transactions;
468
659
  let waitRounds = params?.maxRoundsToWaitForConfirmation;
469
660
  if (waitRounds === undefined) {
470
- const lastRound = group.reduce((max, txn) => Math.max(txn.txn.lastRound, max), 0);
471
- const { firstRound } = await this.getSuggestedParams();
472
- waitRounds = lastRound - firstRound + 1;
661
+ const lastRound = group.reduce((max, txn) => (txn.txn.lastValid > max ? txn.txn.lastValid : BigInt(max)), 0n);
662
+ const { firstValid: firstRound } = await this.getSuggestedParams();
663
+ waitRounds = Number(BigInt(lastRound) - BigInt(firstRound)) + 1;
473
664
  }
474
665
  return await transaction.sendAtomicTransactionComposer({
475
666
  atc: this.atc,
476
- sendParams: { suppressLog: params?.suppressLog, maxRoundsToWaitForConfirmation: waitRounds },
667
+ suppressLog: params?.suppressLog,
668
+ maxRoundsToWaitForConfirmation: waitRounds,
669
+ populateAppCallResources: params?.populateAppCallResources,
477
670
  }, this.algod);
478
671
  }
672
+ /**
673
+ * @deprecated Use `send` instead.
674
+ *
675
+ * Compose the atomic transaction group and send it to the network
676
+ *
677
+ * An alias for `composer.send(params)`.
678
+ * @param params The parameters to control execution with
679
+ * @returns The execution result
680
+ */
681
+ async execute(params) {
682
+ return this.send(params);
683
+ }
684
+ /**
685
+ * Compose the atomic transaction group and simulate sending it to the network
686
+ * @returns The simulation result
687
+ */
688
+ async simulate(options) {
689
+ const atc = options?.skipSignatures ? new AtomicTransactionComposer() : this.atc;
690
+ // Build the transactions
691
+ if (options?.skipSignatures) {
692
+ options.allowEmptySignatures = true;
693
+ options.fixSigners = true;
694
+ // Build transactions uses empty signers
695
+ const transactions = await this.buildTransactions();
696
+ for (const txn of transactions.transactions) {
697
+ atc.addTransaction({ txn, signer: TransactionComposer.NULL_SIGNER });
698
+ }
699
+ atc['methodCalls'] = transactions.methodCalls;
700
+ }
701
+ else {
702
+ // Build creates real signatures
703
+ await this.build();
704
+ }
705
+ const { methodResults, simulateResponse } = await atc.simulate(this.algod, new modelsv2.SimulateRequest({
706
+ txnGroups: [],
707
+ ...options,
708
+ ...(config.Config.debug
709
+ ? {
710
+ allowEmptySignatures: true,
711
+ fixSigners: true,
712
+ allowMoreLogging: true,
713
+ execTraceConfig: new modelsv2.SimulateTraceConfig({
714
+ enable: true,
715
+ scratchChange: true,
716
+ stackChange: true,
717
+ stateChange: true,
718
+ }),
719
+ }
720
+ : undefined),
721
+ }));
722
+ const failedGroup = simulateResponse?.txnGroups[0];
723
+ if (failedGroup?.failureMessage) {
724
+ const errorMessage = `Transaction failed at transaction(s) ${failedGroup.failedAt?.join(', ') || 'unknown'} in the group. ${failedGroup.failureMessage}`;
725
+ const error = new Error(errorMessage);
726
+ if (config.Config.debug) {
727
+ await config.Config.events.emitAsync(types_lifecycleEvents.EventType.TxnGroupSimulated, { simulateResponse });
728
+ }
729
+ error.simulateResponse = simulateResponse;
730
+ throw error;
731
+ }
732
+ if (config.Config.debug && config.Config.traceAll) {
733
+ await config.Config.events.emitAsync(types_lifecycleEvents.EventType.TxnGroupSimulated, { simulateResponse });
734
+ }
735
+ const transactions = atc.buildGroup().map((t) => t.txn);
736
+ return {
737
+ confirmations: simulateResponse.txnGroups[0].txnResults.map((t) => t.txnResult),
738
+ transactions: transactions,
739
+ txIds: transactions.map((t) => t.txID()),
740
+ groupId: Buffer.from(transactions[0].group ?? new Uint8Array()).toString('base64'),
741
+ simulateResponse,
742
+ returns: methodResults.map(transaction.getABIReturnValue),
743
+ };
744
+ }
745
+ /**
746
+ * Create an encoded transaction note that follows the ARC-2 spec.
747
+ *
748
+ * https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0002.md
749
+ * @param note The ARC-2 transaction note data
750
+ * @returns The binary encoded transaction note
751
+ */
752
+ static arc2Note(note) {
753
+ const arc2Payload = `${note.dAppName}:${note.format}${typeof note.data === 'string' ? note.data : JSON.stringify(note.data)}`;
754
+ const encoder = new TextEncoder();
755
+ return encoder.encode(arc2Payload);
756
+ }
479
757
  }
758
+ /** Signer used to represent a lack of signer */
759
+ TransactionComposer.NULL_SIGNER = algosdk.makeEmptyTransactionSigner();
480
760
 
481
761
  exports.MAX_TRANSACTION_GROUP_SIZE = MAX_TRANSACTION_GROUP_SIZE;
482
- exports.default = AlgoKitComposer;
762
+ exports.TransactionComposer = TransactionComposer;
483
763
  //# sourceMappingURL=composer.js.map