algosdk 1.24.0 → 1.24.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 (901) hide show
  1. package/README.md +4 -4
  2. package/dist/browser/algosdk.min.js +1 -1
  3. package/dist/browser/algosdk.min.js.map +1 -1
  4. package/dist/cjs/{src/abi → abi}/abi_type.js +0 -0
  5. package/dist/cjs/abi/abi_type.js.map +1 -0
  6. package/dist/cjs/{src/abi → abi}/contract.js +0 -0
  7. package/dist/cjs/abi/contract.js.map +1 -0
  8. package/dist/cjs/{src/abi → abi}/index.js +0 -0
  9. package/dist/cjs/abi/index.js.map +1 -0
  10. package/dist/cjs/{src/abi → abi}/interface.js +0 -0
  11. package/dist/cjs/abi/interface.js.map +1 -0
  12. package/dist/cjs/{src/abi → abi}/method.js +0 -0
  13. package/dist/cjs/abi/method.js.map +1 -0
  14. package/dist/cjs/{src/abi → abi}/reference.js +0 -0
  15. package/dist/cjs/abi/reference.js.map +1 -0
  16. package/dist/cjs/{src/abi → abi}/transaction.js +0 -0
  17. package/dist/cjs/abi/transaction.js.map +1 -0
  18. package/dist/cjs/{src/account.js → account.js} +0 -0
  19. package/dist/cjs/account.js.map +1 -0
  20. package/dist/cjs/{src/bid.js → bid.js} +0 -0
  21. package/dist/cjs/bid.js.map +1 -0
  22. package/dist/cjs/{src/boxStorage.js → boxStorage.js} +0 -0
  23. package/dist/cjs/boxStorage.js.map +1 -0
  24. package/dist/cjs/{src/client → client}/algod.js +0 -0
  25. package/dist/cjs/client/algod.js.map +1 -0
  26. package/dist/cjs/{src/client → client}/baseHTTPClient.js +0 -0
  27. package/dist/cjs/client/baseHTTPClient.js.map +1 -0
  28. package/dist/cjs/{src/client → client}/client.js +0 -0
  29. package/dist/cjs/client/client.js.map +1 -0
  30. package/dist/cjs/{src/client → client}/kmd.js +0 -0
  31. package/dist/cjs/client/kmd.js.map +1 -0
  32. package/dist/cjs/{src/client → client}/urlTokenBaseHTTPClient.js +0 -0
  33. package/dist/cjs/client/urlTokenBaseHTTPClient.js.map +1 -0
  34. package/dist/cjs/{src/client → client}/v2/algod/accountApplicationInformation.js +0 -0
  35. package/dist/cjs/client/v2/algod/accountApplicationInformation.js.map +1 -0
  36. package/dist/cjs/{src/client → client}/v2/algod/accountAssetInformation.js +0 -0
  37. package/dist/cjs/client/v2/algod/accountAssetInformation.js.map +1 -0
  38. package/dist/cjs/{src/client → client}/v2/algod/accountInformation.js +0 -0
  39. package/dist/cjs/client/v2/algod/accountInformation.js.map +1 -0
  40. package/dist/cjs/{src/client → client}/v2/algod/algod.js +0 -0
  41. package/dist/cjs/client/v2/algod/algod.js.map +1 -0
  42. package/dist/cjs/{src/client → client}/v2/algod/block.js +0 -0
  43. package/dist/cjs/client/v2/algod/block.js.map +1 -0
  44. package/dist/cjs/{src/client → client}/v2/algod/compile.js +0 -0
  45. package/dist/cjs/client/v2/algod/compile.js.map +1 -0
  46. package/dist/cjs/{src/client → client}/v2/algod/dryrun.js +0 -0
  47. package/dist/cjs/client/v2/algod/dryrun.js.map +1 -0
  48. package/dist/cjs/{src/client → client}/v2/algod/genesis.js +0 -0
  49. package/dist/cjs/client/v2/algod/genesis.js.map +1 -0
  50. package/dist/cjs/{src/client → client}/v2/algod/getApplicationBoxByName.js +0 -0
  51. package/dist/cjs/client/v2/algod/getApplicationBoxByName.js.map +1 -0
  52. package/dist/cjs/{src/client → client}/v2/algod/getApplicationBoxes.js +0 -0
  53. package/dist/cjs/client/v2/algod/getApplicationBoxes.js.map +1 -0
  54. package/dist/cjs/{src/client → client}/v2/algod/getApplicationByID.js +0 -0
  55. package/dist/cjs/client/v2/algod/getApplicationByID.js.map +1 -0
  56. package/dist/cjs/{src/client → client}/v2/algod/getAssetByID.js +0 -0
  57. package/dist/cjs/client/v2/algod/getAssetByID.js.map +1 -0
  58. package/dist/cjs/{src/client → client}/v2/algod/getBlockHash.js +0 -0
  59. package/dist/cjs/client/v2/algod/getBlockHash.js.map +1 -0
  60. package/dist/cjs/{src/client → client}/v2/algod/getTransactionProof.js +0 -0
  61. package/dist/cjs/client/v2/algod/getTransactionProof.js.map +1 -0
  62. package/dist/cjs/{src/client → client}/v2/algod/healthCheck.js +0 -0
  63. package/dist/cjs/client/v2/algod/healthCheck.js.map +1 -0
  64. package/dist/cjs/{src/client → client}/v2/algod/lightBlockHeaderProof.js +0 -0
  65. package/dist/cjs/client/v2/algod/lightBlockHeaderProof.js.map +1 -0
  66. package/dist/cjs/{src/client → client}/v2/algod/models/types.js +0 -0
  67. package/dist/cjs/client/v2/algod/models/types.js.map +1 -0
  68. package/dist/cjs/{src/client → client}/v2/algod/pendingTransactionInformation.js +0 -0
  69. package/dist/cjs/client/v2/algod/pendingTransactionInformation.js.map +1 -0
  70. package/dist/cjs/{src/client → client}/v2/algod/pendingTransactions.js +0 -0
  71. package/dist/cjs/client/v2/algod/pendingTransactions.js.map +1 -0
  72. package/dist/cjs/{src/client → client}/v2/algod/pendingTransactionsByAddress.js +0 -0
  73. package/dist/cjs/client/v2/algod/pendingTransactionsByAddress.js.map +1 -0
  74. package/dist/cjs/{src/client → client}/v2/algod/sendRawTransaction.js +0 -0
  75. package/dist/cjs/client/v2/algod/sendRawTransaction.js.map +1 -0
  76. package/dist/cjs/{src/client → client}/v2/algod/stateproof.js +0 -0
  77. package/dist/cjs/client/v2/algod/stateproof.js.map +1 -0
  78. package/dist/cjs/{src/client → client}/v2/algod/status.js +0 -0
  79. package/dist/cjs/client/v2/algod/status.js.map +1 -0
  80. package/dist/cjs/{src/client → client}/v2/algod/statusAfterBlock.js +0 -0
  81. package/dist/cjs/client/v2/algod/statusAfterBlock.js.map +1 -0
  82. package/dist/cjs/{src/client → client}/v2/algod/suggestedParams.js +0 -0
  83. package/dist/cjs/client/v2/algod/suggestedParams.js.map +1 -0
  84. package/dist/cjs/{src/client → client}/v2/algod/supply.js +0 -0
  85. package/dist/cjs/client/v2/algod/supply.js.map +1 -0
  86. package/dist/cjs/{src/client → client}/v2/algod/versions.js +0 -0
  87. package/dist/cjs/client/v2/algod/versions.js.map +1 -0
  88. package/dist/cjs/{src/client → client}/v2/basemodel.js +0 -0
  89. package/dist/cjs/client/v2/basemodel.js.map +1 -0
  90. package/dist/cjs/{src/client → client}/v2/indexer/indexer.js +0 -0
  91. package/dist/cjs/client/v2/indexer/indexer.js.map +1 -0
  92. package/dist/cjs/{src/client → client}/v2/indexer/lookupAccountAppLocalStates.js +0 -0
  93. package/dist/cjs/client/v2/indexer/lookupAccountAppLocalStates.js.map +1 -0
  94. package/dist/cjs/{src/client → client}/v2/indexer/lookupAccountAssets.js +0 -0
  95. package/dist/cjs/client/v2/indexer/lookupAccountAssets.js.map +1 -0
  96. package/dist/cjs/{src/client → client}/v2/indexer/lookupAccountByID.js +0 -0
  97. package/dist/cjs/client/v2/indexer/lookupAccountByID.js.map +1 -0
  98. package/dist/cjs/{src/client → client}/v2/indexer/lookupAccountCreatedApplications.js +0 -0
  99. package/dist/cjs/client/v2/indexer/lookupAccountCreatedApplications.js.map +1 -0
  100. package/dist/cjs/{src/client → client}/v2/indexer/lookupAccountCreatedAssets.js +0 -0
  101. package/dist/cjs/client/v2/indexer/lookupAccountCreatedAssets.js.map +1 -0
  102. package/dist/cjs/{src/client → client}/v2/indexer/lookupAccountTransactions.js +0 -0
  103. package/dist/cjs/client/v2/indexer/lookupAccountTransactions.js.map +1 -0
  104. package/dist/cjs/{src/client → client}/v2/indexer/lookupApplicationBoxByIDandName.js +0 -0
  105. package/dist/cjs/client/v2/indexer/lookupApplicationBoxByIDandName.js.map +1 -0
  106. package/dist/cjs/{src/client → client}/v2/indexer/lookupApplicationLogs.js +0 -0
  107. package/dist/cjs/client/v2/indexer/lookupApplicationLogs.js.map +1 -0
  108. package/dist/cjs/{src/client → client}/v2/indexer/lookupApplications.js +0 -0
  109. package/dist/cjs/client/v2/indexer/lookupApplications.js.map +1 -0
  110. package/dist/cjs/{src/client → client}/v2/indexer/lookupAssetBalances.js +0 -0
  111. package/dist/cjs/client/v2/indexer/lookupAssetBalances.js.map +1 -0
  112. package/dist/cjs/{src/client → client}/v2/indexer/lookupAssetByID.js +0 -0
  113. package/dist/cjs/client/v2/indexer/lookupAssetByID.js.map +1 -0
  114. package/dist/cjs/{src/client → client}/v2/indexer/lookupAssetTransactions.js +0 -0
  115. package/dist/cjs/client/v2/indexer/lookupAssetTransactions.js.map +1 -0
  116. package/dist/cjs/{src/client → client}/v2/indexer/lookupBlock.js +0 -0
  117. package/dist/cjs/client/v2/indexer/lookupBlock.js.map +1 -0
  118. package/dist/cjs/{src/client → client}/v2/indexer/lookupTransactionByID.js +0 -0
  119. package/dist/cjs/client/v2/indexer/lookupTransactionByID.js.map +1 -0
  120. package/dist/cjs/{src/client → client}/v2/indexer/makeHealthCheck.js +0 -0
  121. package/dist/cjs/client/v2/indexer/makeHealthCheck.js.map +1 -0
  122. package/dist/cjs/{src/client → client}/v2/indexer/models/types.js +0 -0
  123. package/dist/cjs/client/v2/indexer/models/types.js.map +1 -0
  124. package/dist/cjs/{src/client → client}/v2/indexer/searchAccounts.js +0 -0
  125. package/dist/cjs/client/v2/indexer/searchAccounts.js.map +1 -0
  126. package/dist/cjs/{src/client → client}/v2/indexer/searchForApplicationBoxes.js +0 -0
  127. package/dist/cjs/client/v2/indexer/searchForApplicationBoxes.js.map +1 -0
  128. package/dist/cjs/{src/client → client}/v2/indexer/searchForApplications.js +0 -0
  129. package/dist/cjs/client/v2/indexer/searchForApplications.js.map +1 -0
  130. package/dist/cjs/{src/client → client}/v2/indexer/searchForAssets.js +0 -0
  131. package/dist/cjs/client/v2/indexer/searchForAssets.js.map +1 -0
  132. package/dist/cjs/{src/client → client}/v2/indexer/searchForTransactions.js +0 -0
  133. package/dist/cjs/client/v2/indexer/searchForTransactions.js.map +1 -0
  134. package/dist/cjs/{src/client → client}/v2/jsonrequest.js +0 -0
  135. package/dist/cjs/client/v2/jsonrequest.js.map +1 -0
  136. package/dist/cjs/{src/client → client}/v2/serviceClient.js +0 -0
  137. package/dist/cjs/client/v2/serviceClient.js.map +1 -0
  138. package/dist/cjs/{src/composer.js → composer.js} +0 -0
  139. package/dist/cjs/composer.js.map +1 -0
  140. package/dist/cjs/{src/convert.js → convert.js} +0 -0
  141. package/dist/cjs/convert.js.map +1 -0
  142. package/dist/cjs/{src/dryrun.js → dryrun.js} +0 -0
  143. package/dist/cjs/dryrun.js.map +1 -0
  144. package/dist/cjs/{src/encoding → encoding}/address.js +0 -0
  145. package/dist/cjs/encoding/address.js.map +1 -0
  146. package/dist/cjs/{src/encoding → encoding}/bigint.js +0 -0
  147. package/dist/cjs/encoding/bigint.js.map +1 -0
  148. package/dist/cjs/{src/encoding → encoding}/encoding.js +0 -0
  149. package/dist/cjs/encoding/encoding.js.map +1 -0
  150. package/dist/cjs/{src/encoding → encoding}/uint64.js +0 -0
  151. package/dist/cjs/encoding/uint64.js.map +1 -0
  152. package/dist/cjs/{src/group.js → group.js} +0 -0
  153. package/dist/cjs/group.js.map +1 -0
  154. package/dist/cjs/index.js +2 -2
  155. package/dist/cjs/index.js.map +1 -1
  156. package/dist/cjs/{src/logic → logic}/langspec.json +0 -0
  157. package/dist/cjs/{src/logic → logic}/logic.js +0 -0
  158. package/dist/cjs/logic/logic.js.map +1 -0
  159. package/dist/cjs/{src/logic → logic}/sourcemap.js +0 -0
  160. package/dist/cjs/logic/sourcemap.js.map +1 -0
  161. package/dist/cjs/{src/logicTemplates → logicTemplates}/dynamicfee.js +0 -0
  162. package/dist/cjs/logicTemplates/dynamicfee.js.map +1 -0
  163. package/dist/cjs/{src/logicTemplates → logicTemplates}/htlc.js +0 -0
  164. package/dist/cjs/logicTemplates/htlc.js.map +1 -0
  165. package/dist/cjs/{src/logicTemplates → logicTemplates}/index.js +0 -0
  166. package/dist/cjs/logicTemplates/index.js.map +1 -0
  167. package/dist/cjs/{src/logicTemplates → logicTemplates}/limitorder.js +0 -0
  168. package/dist/cjs/logicTemplates/limitorder.js.map +1 -0
  169. package/dist/cjs/{src/logicTemplates → logicTemplates}/periodicpayment.js +0 -0
  170. package/dist/cjs/logicTemplates/periodicpayment.js.map +1 -0
  171. package/dist/cjs/{src/logicTemplates → logicTemplates}/split.js +0 -0
  172. package/dist/cjs/logicTemplates/split.js.map +1 -0
  173. package/dist/cjs/{src/logicTemplates → logicTemplates}/templates.js +0 -0
  174. package/dist/cjs/logicTemplates/templates.js.map +1 -0
  175. package/dist/cjs/{src/logicsig.js → logicsig.js} +0 -0
  176. package/dist/cjs/logicsig.js.map +1 -0
  177. package/dist/cjs/{src/main.js → main.js} +0 -0
  178. package/dist/cjs/main.js.map +1 -0
  179. package/dist/cjs/{src/makeTxn.js → makeTxn.js} +0 -0
  180. package/dist/cjs/makeTxn.js.map +1 -0
  181. package/dist/cjs/{src/mnemonic → mnemonic}/mnemonic.js +0 -0
  182. package/dist/cjs/mnemonic/mnemonic.js.map +1 -0
  183. package/dist/cjs/{src/mnemonic → mnemonic}/wordlists/english.js +0 -0
  184. package/dist/cjs/mnemonic/wordlists/english.js.map +1 -0
  185. package/dist/cjs/{src/multisig.js → multisig.js} +0 -0
  186. package/dist/cjs/multisig.js.map +1 -0
  187. package/dist/cjs/{src/nacl → nacl}/naclWrappers.js +0 -0
  188. package/dist/cjs/nacl/naclWrappers.js.map +1 -0
  189. package/dist/cjs/{src/signer.js → signer.js} +0 -0
  190. package/dist/cjs/signer.js.map +1 -0
  191. package/dist/cjs/{src/transaction.js → transaction.js} +0 -0
  192. package/dist/cjs/transaction.js.map +1 -0
  193. package/dist/cjs/{src/types → types}/account.js +0 -0
  194. package/dist/cjs/types/account.js.map +1 -0
  195. package/dist/cjs/{src/types → types}/address.js +0 -0
  196. package/dist/cjs/types/address.js.map +1 -0
  197. package/dist/cjs/{src/types → types}/blockHeader.js +0 -0
  198. package/dist/cjs/types/blockHeader.js.map +1 -0
  199. package/dist/cjs/{src/types → types}/index.js +0 -0
  200. package/dist/cjs/types/index.js.map +1 -0
  201. package/dist/cjs/{src/types → types}/intDecoding.js +0 -0
  202. package/dist/cjs/types/intDecoding.js.map +1 -0
  203. package/dist/cjs/{src/types → types}/multisig.js +0 -0
  204. package/dist/cjs/types/multisig.js.map +1 -0
  205. package/dist/cjs/{src/types → types}/transactions/application.js +0 -0
  206. package/dist/cjs/types/transactions/application.js.map +1 -0
  207. package/dist/cjs/{src/types → types}/transactions/asset.js +0 -0
  208. package/dist/cjs/types/transactions/asset.js.map +1 -0
  209. package/dist/cjs/{src/types → types}/transactions/base.js +0 -0
  210. package/dist/cjs/types/transactions/base.js.map +1 -0
  211. package/dist/cjs/{src/types → types}/transactions/builder.js +0 -0
  212. package/dist/cjs/types/transactions/builder.js.map +1 -0
  213. package/dist/cjs/{src/types → types}/transactions/encoded.js +0 -0
  214. package/dist/cjs/types/transactions/encoded.js.map +1 -0
  215. package/dist/cjs/{src/types → types}/transactions/index.js +0 -0
  216. package/dist/cjs/types/transactions/index.js.map +1 -0
  217. package/dist/cjs/{src/types → types}/transactions/keyreg.js +0 -0
  218. package/dist/cjs/types/transactions/keyreg.js.map +1 -0
  219. package/dist/cjs/{src/types → types}/transactions/payment.js +0 -0
  220. package/dist/cjs/types/transactions/payment.js.map +1 -0
  221. package/dist/cjs/{src/types → types}/transactions/stateproof.js +0 -0
  222. package/dist/cjs/types/transactions/stateproof.js.map +1 -0
  223. package/dist/cjs/{src/types → types}/utils.js +0 -0
  224. package/dist/cjs/types/utils.js.map +1 -0
  225. package/dist/cjs/{src/utils → utils}/utils.js +0 -0
  226. package/dist/cjs/utils/utils.js.map +1 -0
  227. package/dist/cjs/{src/wait.js → wait.js} +0 -0
  228. package/dist/cjs/wait.js.map +1 -0
  229. package/dist/esm/{src/abi → abi}/abi_type.js +0 -0
  230. package/dist/esm/abi/abi_type.js.map +1 -0
  231. package/dist/esm/{src/abi → abi}/contract.js +0 -0
  232. package/dist/esm/abi/contract.js.map +1 -0
  233. package/dist/esm/{src/abi → abi}/index.js +0 -0
  234. package/dist/esm/abi/index.js.map +1 -0
  235. package/dist/esm/{src/abi → abi}/interface.js +0 -0
  236. package/dist/esm/abi/interface.js.map +1 -0
  237. package/dist/esm/{src/abi → abi}/method.js +0 -0
  238. package/dist/esm/abi/method.js.map +1 -0
  239. package/dist/esm/{src/abi → abi}/reference.js +0 -0
  240. package/dist/esm/abi/reference.js.map +1 -0
  241. package/dist/esm/{src/abi → abi}/transaction.js +0 -0
  242. package/dist/esm/abi/transaction.js.map +1 -0
  243. package/dist/esm/{src/account.js → account.js} +0 -0
  244. package/dist/esm/account.js.map +1 -0
  245. package/dist/esm/{src/bid.js → bid.js} +0 -0
  246. package/dist/esm/bid.js.map +1 -0
  247. package/dist/esm/{src/boxStorage.js → boxStorage.js} +0 -0
  248. package/dist/esm/boxStorage.js.map +1 -0
  249. package/dist/esm/{src/client → client}/algod.js +0 -0
  250. package/dist/esm/client/algod.js.map +1 -0
  251. package/dist/esm/{src/client → client}/baseHTTPClient.js +0 -0
  252. package/dist/esm/client/baseHTTPClient.js.map +1 -0
  253. package/dist/esm/{src/client → client}/client.js +0 -0
  254. package/dist/esm/client/client.js.map +1 -0
  255. package/dist/esm/{src/client → client}/kmd.js +0 -0
  256. package/dist/esm/client/kmd.js.map +1 -0
  257. package/dist/esm/{src/client → client}/urlTokenBaseHTTPClient.js +0 -0
  258. package/dist/esm/client/urlTokenBaseHTTPClient.js.map +1 -0
  259. package/dist/esm/{src/client → client}/v2/algod/accountApplicationInformation.js +0 -0
  260. package/dist/esm/client/v2/algod/accountApplicationInformation.js.map +1 -0
  261. package/dist/esm/{src/client → client}/v2/algod/accountAssetInformation.js +0 -0
  262. package/dist/esm/client/v2/algod/accountAssetInformation.js.map +1 -0
  263. package/dist/esm/{src/client → client}/v2/algod/accountInformation.js +0 -0
  264. package/dist/esm/client/v2/algod/accountInformation.js.map +1 -0
  265. package/dist/esm/{src/client → client}/v2/algod/algod.js +0 -0
  266. package/dist/esm/client/v2/algod/algod.js.map +1 -0
  267. package/dist/esm/{src/client → client}/v2/algod/block.js +0 -0
  268. package/dist/esm/client/v2/algod/block.js.map +1 -0
  269. package/dist/esm/{src/client → client}/v2/algod/compile.js +0 -0
  270. package/dist/esm/client/v2/algod/compile.js.map +1 -0
  271. package/dist/esm/{src/client → client}/v2/algod/dryrun.js +0 -0
  272. package/dist/esm/client/v2/algod/dryrun.js.map +1 -0
  273. package/dist/esm/{src/client → client}/v2/algod/genesis.js +0 -0
  274. package/dist/esm/client/v2/algod/genesis.js.map +1 -0
  275. package/dist/esm/{src/client → client}/v2/algod/getApplicationBoxByName.js +0 -0
  276. package/dist/esm/client/v2/algod/getApplicationBoxByName.js.map +1 -0
  277. package/dist/esm/{src/client → client}/v2/algod/getApplicationBoxes.js +0 -0
  278. package/dist/esm/client/v2/algod/getApplicationBoxes.js.map +1 -0
  279. package/dist/esm/{src/client → client}/v2/algod/getApplicationByID.js +0 -0
  280. package/dist/esm/client/v2/algod/getApplicationByID.js.map +1 -0
  281. package/dist/esm/{src/client → client}/v2/algod/getAssetByID.js +0 -0
  282. package/dist/esm/client/v2/algod/getAssetByID.js.map +1 -0
  283. package/dist/esm/{src/client → client}/v2/algod/getBlockHash.js +0 -0
  284. package/dist/esm/client/v2/algod/getBlockHash.js.map +1 -0
  285. package/dist/esm/{src/client → client}/v2/algod/getTransactionProof.js +0 -0
  286. package/dist/esm/client/v2/algod/getTransactionProof.js.map +1 -0
  287. package/dist/esm/{src/client → client}/v2/algod/healthCheck.js +0 -0
  288. package/dist/esm/client/v2/algod/healthCheck.js.map +1 -0
  289. package/dist/esm/{src/client → client}/v2/algod/lightBlockHeaderProof.js +0 -0
  290. package/dist/esm/client/v2/algod/lightBlockHeaderProof.js.map +1 -0
  291. package/dist/esm/{src/client → client}/v2/algod/models/types.js +0 -0
  292. package/dist/esm/client/v2/algod/models/types.js.map +1 -0
  293. package/dist/esm/{src/client → client}/v2/algod/pendingTransactionInformation.js +0 -0
  294. package/dist/esm/client/v2/algod/pendingTransactionInformation.js.map +1 -0
  295. package/dist/esm/{src/client → client}/v2/algod/pendingTransactions.js +0 -0
  296. package/dist/esm/client/v2/algod/pendingTransactions.js.map +1 -0
  297. package/dist/esm/{src/client → client}/v2/algod/pendingTransactionsByAddress.js +0 -0
  298. package/dist/esm/client/v2/algod/pendingTransactionsByAddress.js.map +1 -0
  299. package/dist/esm/{src/client → client}/v2/algod/sendRawTransaction.js +0 -0
  300. package/dist/esm/client/v2/algod/sendRawTransaction.js.map +1 -0
  301. package/dist/esm/{src/client → client}/v2/algod/stateproof.js +0 -0
  302. package/dist/esm/client/v2/algod/stateproof.js.map +1 -0
  303. package/dist/esm/{src/client → client}/v2/algod/status.js +0 -0
  304. package/dist/esm/client/v2/algod/status.js.map +1 -0
  305. package/dist/esm/{src/client → client}/v2/algod/statusAfterBlock.js +0 -0
  306. package/dist/esm/client/v2/algod/statusAfterBlock.js.map +1 -0
  307. package/dist/esm/{src/client → client}/v2/algod/suggestedParams.js +0 -0
  308. package/dist/esm/client/v2/algod/suggestedParams.js.map +1 -0
  309. package/dist/esm/{src/client → client}/v2/algod/supply.js +0 -0
  310. package/dist/esm/client/v2/algod/supply.js.map +1 -0
  311. package/dist/esm/{src/client → client}/v2/algod/versions.js +0 -0
  312. package/dist/esm/client/v2/algod/versions.js.map +1 -0
  313. package/dist/esm/{src/client → client}/v2/basemodel.js +0 -0
  314. package/dist/esm/client/v2/basemodel.js.map +1 -0
  315. package/dist/esm/{src/client → client}/v2/indexer/indexer.js +0 -0
  316. package/dist/esm/client/v2/indexer/indexer.js.map +1 -0
  317. package/dist/esm/{src/client → client}/v2/indexer/lookupAccountAppLocalStates.js +0 -0
  318. package/dist/esm/client/v2/indexer/lookupAccountAppLocalStates.js.map +1 -0
  319. package/dist/esm/{src/client → client}/v2/indexer/lookupAccountAssets.js +0 -0
  320. package/dist/esm/client/v2/indexer/lookupAccountAssets.js.map +1 -0
  321. package/dist/esm/{src/client → client}/v2/indexer/lookupAccountByID.js +0 -0
  322. package/dist/esm/client/v2/indexer/lookupAccountByID.js.map +1 -0
  323. package/dist/esm/{src/client → client}/v2/indexer/lookupAccountCreatedApplications.js +0 -0
  324. package/dist/esm/client/v2/indexer/lookupAccountCreatedApplications.js.map +1 -0
  325. package/dist/esm/{src/client → client}/v2/indexer/lookupAccountCreatedAssets.js +0 -0
  326. package/dist/esm/client/v2/indexer/lookupAccountCreatedAssets.js.map +1 -0
  327. package/dist/esm/{src/client → client}/v2/indexer/lookupAccountTransactions.js +0 -0
  328. package/dist/esm/client/v2/indexer/lookupAccountTransactions.js.map +1 -0
  329. package/dist/esm/{src/client → client}/v2/indexer/lookupApplicationBoxByIDandName.js +0 -0
  330. package/dist/esm/client/v2/indexer/lookupApplicationBoxByIDandName.js.map +1 -0
  331. package/dist/esm/{src/client → client}/v2/indexer/lookupApplicationLogs.js +0 -0
  332. package/dist/esm/client/v2/indexer/lookupApplicationLogs.js.map +1 -0
  333. package/dist/esm/{src/client → client}/v2/indexer/lookupApplications.js +0 -0
  334. package/dist/esm/client/v2/indexer/lookupApplications.js.map +1 -0
  335. package/dist/esm/{src/client → client}/v2/indexer/lookupAssetBalances.js +0 -0
  336. package/dist/esm/client/v2/indexer/lookupAssetBalances.js.map +1 -0
  337. package/dist/esm/{src/client → client}/v2/indexer/lookupAssetByID.js +0 -0
  338. package/dist/esm/client/v2/indexer/lookupAssetByID.js.map +1 -0
  339. package/dist/esm/{src/client → client}/v2/indexer/lookupAssetTransactions.js +0 -0
  340. package/dist/esm/client/v2/indexer/lookupAssetTransactions.js.map +1 -0
  341. package/dist/esm/{src/client → client}/v2/indexer/lookupBlock.js +0 -0
  342. package/dist/esm/client/v2/indexer/lookupBlock.js.map +1 -0
  343. package/dist/esm/{src/client → client}/v2/indexer/lookupTransactionByID.js +0 -0
  344. package/dist/esm/client/v2/indexer/lookupTransactionByID.js.map +1 -0
  345. package/dist/esm/{src/client → client}/v2/indexer/makeHealthCheck.js +0 -0
  346. package/dist/esm/client/v2/indexer/makeHealthCheck.js.map +1 -0
  347. package/dist/esm/{src/client → client}/v2/indexer/models/types.js +0 -0
  348. package/dist/esm/client/v2/indexer/models/types.js.map +1 -0
  349. package/dist/esm/{src/client → client}/v2/indexer/searchAccounts.js +0 -0
  350. package/dist/esm/client/v2/indexer/searchAccounts.js.map +1 -0
  351. package/dist/esm/{src/client → client}/v2/indexer/searchForApplicationBoxes.js +0 -0
  352. package/dist/esm/client/v2/indexer/searchForApplicationBoxes.js.map +1 -0
  353. package/dist/esm/{src/client → client}/v2/indexer/searchForApplications.js +0 -0
  354. package/dist/esm/client/v2/indexer/searchForApplications.js.map +1 -0
  355. package/dist/esm/{src/client → client}/v2/indexer/searchForAssets.js +0 -0
  356. package/dist/esm/client/v2/indexer/searchForAssets.js.map +1 -0
  357. package/dist/esm/{src/client → client}/v2/indexer/searchForTransactions.js +0 -0
  358. package/dist/esm/client/v2/indexer/searchForTransactions.js.map +1 -0
  359. package/dist/esm/{src/client → client}/v2/jsonrequest.js +0 -0
  360. package/dist/esm/client/v2/jsonrequest.js.map +1 -0
  361. package/dist/esm/{src/client → client}/v2/serviceClient.js +0 -0
  362. package/dist/esm/client/v2/serviceClient.js.map +1 -0
  363. package/dist/esm/{src/composer.js → composer.js} +0 -0
  364. package/dist/esm/composer.js.map +1 -0
  365. package/dist/esm/{src/convert.js → convert.js} +0 -0
  366. package/dist/esm/convert.js.map +1 -0
  367. package/dist/esm/{src/dryrun.js → dryrun.js} +0 -0
  368. package/dist/esm/dryrun.js.map +1 -0
  369. package/dist/esm/{src/encoding → encoding}/address.js +0 -0
  370. package/dist/esm/encoding/address.js.map +1 -0
  371. package/dist/esm/{src/encoding → encoding}/bigint.js +0 -0
  372. package/dist/esm/encoding/bigint.js.map +1 -0
  373. package/dist/esm/{src/encoding → encoding}/encoding.js +0 -0
  374. package/dist/esm/encoding/encoding.js.map +1 -0
  375. package/dist/esm/{src/encoding → encoding}/uint64.js +0 -0
  376. package/dist/esm/encoding/uint64.js.map +1 -0
  377. package/dist/esm/{src/group.js → group.js} +0 -0
  378. package/dist/esm/group.js.map +1 -0
  379. package/dist/esm/index.js +2 -2
  380. package/dist/esm/index.js.map +1 -1
  381. package/dist/esm/{src/logic → logic}/langspec.json +0 -0
  382. package/dist/esm/{src/logic → logic}/logic.js +0 -0
  383. package/dist/esm/logic/logic.js.map +1 -0
  384. package/dist/esm/{src/logic → logic}/sourcemap.js +0 -0
  385. package/dist/esm/logic/sourcemap.js.map +1 -0
  386. package/dist/esm/{src/logicTemplates → logicTemplates}/dynamicfee.js +0 -0
  387. package/dist/esm/logicTemplates/dynamicfee.js.map +1 -0
  388. package/dist/esm/{src/logicTemplates → logicTemplates}/htlc.js +0 -0
  389. package/dist/esm/logicTemplates/htlc.js.map +1 -0
  390. package/dist/esm/{src/logicTemplates → logicTemplates}/index.js +0 -0
  391. package/dist/esm/logicTemplates/index.js.map +1 -0
  392. package/dist/esm/{src/logicTemplates → logicTemplates}/limitorder.js +0 -0
  393. package/dist/esm/logicTemplates/limitorder.js.map +1 -0
  394. package/dist/esm/{src/logicTemplates → logicTemplates}/periodicpayment.js +0 -0
  395. package/dist/esm/logicTemplates/periodicpayment.js.map +1 -0
  396. package/dist/esm/{src/logicTemplates → logicTemplates}/split.js +0 -0
  397. package/dist/esm/logicTemplates/split.js.map +1 -0
  398. package/dist/esm/{src/logicTemplates → logicTemplates}/templates.js +0 -0
  399. package/dist/esm/logicTemplates/templates.js.map +1 -0
  400. package/dist/esm/{src/logicsig.js → logicsig.js} +0 -0
  401. package/dist/esm/logicsig.js.map +1 -0
  402. package/dist/esm/{src/main.js → main.js} +0 -0
  403. package/dist/esm/main.js.map +1 -0
  404. package/dist/esm/{src/makeTxn.js → makeTxn.js} +0 -0
  405. package/dist/esm/makeTxn.js.map +1 -0
  406. package/dist/esm/{src/mnemonic → mnemonic}/mnemonic.js +0 -0
  407. package/dist/esm/mnemonic/mnemonic.js.map +1 -0
  408. package/dist/esm/{src/mnemonic → mnemonic}/wordlists/english.js +0 -0
  409. package/dist/esm/mnemonic/wordlists/english.js.map +1 -0
  410. package/dist/esm/{src/multisig.js → multisig.js} +0 -0
  411. package/dist/esm/multisig.js.map +1 -0
  412. package/dist/esm/{src/nacl → nacl}/naclWrappers.js +0 -0
  413. package/dist/esm/nacl/naclWrappers.js.map +1 -0
  414. package/dist/esm/{src/signer.js → signer.js} +0 -0
  415. package/dist/esm/signer.js.map +1 -0
  416. package/dist/esm/{src/transaction.js → transaction.js} +0 -0
  417. package/dist/esm/transaction.js.map +1 -0
  418. package/dist/esm/{src/types → types}/account.js +0 -0
  419. package/dist/esm/types/account.js.map +1 -0
  420. package/dist/esm/{src/types → types}/address.js +0 -0
  421. package/dist/esm/types/address.js.map +1 -0
  422. package/dist/esm/{src/types → types}/blockHeader.js +0 -0
  423. package/dist/esm/types/blockHeader.js.map +1 -0
  424. package/dist/esm/{src/types → types}/index.js +0 -0
  425. package/dist/esm/types/index.js.map +1 -0
  426. package/dist/esm/{src/types → types}/intDecoding.js +0 -0
  427. package/dist/esm/types/intDecoding.js.map +1 -0
  428. package/dist/esm/{src/types → types}/multisig.js +0 -0
  429. package/dist/esm/types/multisig.js.map +1 -0
  430. package/dist/esm/{src/types → types}/transactions/application.js +0 -0
  431. package/dist/esm/types/transactions/application.js.map +1 -0
  432. package/dist/esm/{src/types → types}/transactions/asset.js +0 -0
  433. package/dist/esm/types/transactions/asset.js.map +1 -0
  434. package/dist/esm/{src/types → types}/transactions/base.js +0 -0
  435. package/dist/esm/types/transactions/base.js.map +1 -0
  436. package/dist/esm/{src/types → types}/transactions/builder.js +0 -0
  437. package/dist/esm/types/transactions/builder.js.map +1 -0
  438. package/dist/esm/{src/types → types}/transactions/encoded.js +0 -0
  439. package/dist/esm/types/transactions/encoded.js.map +1 -0
  440. package/dist/esm/{src/types → types}/transactions/index.js +0 -0
  441. package/dist/esm/types/transactions/index.js.map +1 -0
  442. package/dist/esm/{src/types → types}/transactions/keyreg.js +0 -0
  443. package/dist/esm/types/transactions/keyreg.js.map +1 -0
  444. package/dist/esm/{src/types → types}/transactions/payment.js +0 -0
  445. package/dist/esm/types/transactions/payment.js.map +1 -0
  446. package/dist/esm/{src/types → types}/transactions/stateproof.js +0 -0
  447. package/dist/esm/types/transactions/stateproof.js.map +1 -0
  448. package/dist/esm/{src/types → types}/utils.js +0 -0
  449. package/dist/esm/types/utils.js.map +1 -0
  450. package/dist/esm/{src/utils → utils}/utils.js +0 -0
  451. package/dist/esm/utils/utils.js.map +1 -0
  452. package/dist/esm/{src/wait.js → wait.js} +0 -0
  453. package/dist/esm/wait.js.map +1 -0
  454. package/dist/types/{src/abi → abi}/abi_type.d.ts +0 -0
  455. package/dist/types/{src/abi → abi}/contract.d.ts +0 -0
  456. package/dist/types/{src/abi → abi}/index.d.ts +0 -0
  457. package/dist/types/{src/abi → abi}/interface.d.ts +0 -0
  458. package/dist/types/{src/abi → abi}/method.d.ts +0 -0
  459. package/dist/types/{src/abi → abi}/reference.d.ts +0 -0
  460. package/dist/types/{src/abi → abi}/transaction.d.ts +0 -0
  461. package/dist/types/{src/account.d.ts → account.d.ts} +0 -0
  462. package/dist/types/{src/bid.d.ts → bid.d.ts} +0 -0
  463. package/dist/types/{src/boxStorage.d.ts → boxStorage.d.ts} +0 -0
  464. package/dist/types/{src/client → client}/algod.d.ts +0 -0
  465. package/dist/types/{src/client → client}/baseHTTPClient.d.ts +0 -0
  466. package/dist/types/{src/client → client}/client.d.ts +0 -0
  467. package/dist/types/{src/client → client}/kmd.d.ts +0 -0
  468. package/dist/types/{src/client → client}/urlTokenBaseHTTPClient.d.ts +0 -0
  469. package/dist/types/{src/client → client}/v2/algod/accountApplicationInformation.d.ts +0 -0
  470. package/dist/types/{src/client → client}/v2/algod/accountAssetInformation.d.ts +0 -0
  471. package/dist/types/{src/client → client}/v2/algod/accountInformation.d.ts +0 -0
  472. package/dist/types/{src/client → client}/v2/algod/algod.d.ts +0 -0
  473. package/dist/types/{src/client → client}/v2/algod/block.d.ts +0 -0
  474. package/dist/types/{src/client → client}/v2/algod/compile.d.ts +0 -0
  475. package/dist/types/{src/client → client}/v2/algod/dryrun.d.ts +0 -0
  476. package/dist/types/{src/client → client}/v2/algod/genesis.d.ts +0 -0
  477. package/dist/types/{src/client → client}/v2/algod/getApplicationBoxByName.d.ts +0 -0
  478. package/dist/types/{src/client → client}/v2/algod/getApplicationBoxes.d.ts +0 -0
  479. package/dist/types/{src/client → client}/v2/algod/getApplicationByID.d.ts +0 -0
  480. package/dist/types/{src/client → client}/v2/algod/getAssetByID.d.ts +0 -0
  481. package/dist/types/{src/client → client}/v2/algod/getBlockHash.d.ts +0 -0
  482. package/dist/types/{src/client → client}/v2/algod/getTransactionProof.d.ts +0 -0
  483. package/dist/types/{src/client → client}/v2/algod/healthCheck.d.ts +0 -0
  484. package/dist/types/{src/client → client}/v2/algod/lightBlockHeaderProof.d.ts +0 -0
  485. package/dist/types/{src/client → client}/v2/algod/models/types.d.ts +0 -0
  486. package/dist/types/{src/client → client}/v2/algod/pendingTransactionInformation.d.ts +0 -0
  487. package/dist/types/{src/client → client}/v2/algod/pendingTransactions.d.ts +0 -0
  488. package/dist/types/{src/client → client}/v2/algod/pendingTransactionsByAddress.d.ts +0 -0
  489. package/dist/types/{src/client → client}/v2/algod/sendRawTransaction.d.ts +0 -0
  490. package/dist/types/{src/client → client}/v2/algod/stateproof.d.ts +0 -0
  491. package/dist/types/{src/client → client}/v2/algod/status.d.ts +0 -0
  492. package/dist/types/{src/client → client}/v2/algod/statusAfterBlock.d.ts +0 -0
  493. package/dist/types/{src/client → client}/v2/algod/suggestedParams.d.ts +0 -0
  494. package/dist/types/{src/client → client}/v2/algod/supply.d.ts +0 -0
  495. package/dist/types/{src/client → client}/v2/algod/versions.d.ts +0 -0
  496. package/dist/types/{src/client → client}/v2/basemodel.d.ts +0 -0
  497. package/dist/types/{src/client → client}/v2/indexer/indexer.d.ts +0 -0
  498. package/dist/types/{src/client → client}/v2/indexer/lookupAccountAppLocalStates.d.ts +0 -0
  499. package/dist/types/{src/client → client}/v2/indexer/lookupAccountAssets.d.ts +0 -0
  500. package/dist/types/{src/client → client}/v2/indexer/lookupAccountByID.d.ts +0 -0
  501. package/dist/types/{src/client → client}/v2/indexer/lookupAccountCreatedApplications.d.ts +0 -0
  502. package/dist/types/{src/client → client}/v2/indexer/lookupAccountCreatedAssets.d.ts +0 -0
  503. package/dist/types/{src/client → client}/v2/indexer/lookupAccountTransactions.d.ts +0 -0
  504. package/dist/types/{src/client → client}/v2/indexer/lookupApplicationBoxByIDandName.d.ts +0 -0
  505. package/dist/types/{src/client → client}/v2/indexer/lookupApplicationLogs.d.ts +0 -0
  506. package/dist/types/{src/client → client}/v2/indexer/lookupApplications.d.ts +0 -0
  507. package/dist/types/{src/client → client}/v2/indexer/lookupAssetBalances.d.ts +0 -0
  508. package/dist/types/{src/client → client}/v2/indexer/lookupAssetByID.d.ts +0 -0
  509. package/dist/types/{src/client → client}/v2/indexer/lookupAssetTransactions.d.ts +0 -0
  510. package/dist/types/{src/client → client}/v2/indexer/lookupBlock.d.ts +0 -0
  511. package/dist/types/{src/client → client}/v2/indexer/lookupTransactionByID.d.ts +0 -0
  512. package/dist/types/{src/client → client}/v2/indexer/makeHealthCheck.d.ts +0 -0
  513. package/dist/types/{src/client → client}/v2/indexer/models/types.d.ts +0 -0
  514. package/dist/types/{src/client → client}/v2/indexer/searchAccounts.d.ts +0 -0
  515. package/dist/types/{src/client → client}/v2/indexer/searchForApplicationBoxes.d.ts +0 -0
  516. package/dist/types/{src/client → client}/v2/indexer/searchForApplications.d.ts +0 -0
  517. package/dist/types/{src/client → client}/v2/indexer/searchForAssets.d.ts +0 -0
  518. package/dist/types/{src/client → client}/v2/indexer/searchForTransactions.d.ts +0 -0
  519. package/dist/types/{src/client → client}/v2/jsonrequest.d.ts +0 -0
  520. package/dist/types/{src/client → client}/v2/serviceClient.d.ts +0 -0
  521. package/dist/types/{src/composer.d.ts → composer.d.ts} +0 -0
  522. package/dist/types/{src/convert.d.ts → convert.d.ts} +0 -0
  523. package/dist/types/{src/dryrun.d.ts → dryrun.d.ts} +0 -0
  524. package/dist/types/{src/encoding → encoding}/address.d.ts +0 -0
  525. package/dist/types/{src/encoding → encoding}/bigint.d.ts +0 -0
  526. package/dist/types/{src/encoding → encoding}/encoding.d.ts +0 -0
  527. package/dist/types/{src/encoding → encoding}/uint64.d.ts +0 -0
  528. package/dist/types/{src/group.d.ts → group.d.ts} +0 -0
  529. package/dist/types/index.d.ts +2 -2
  530. package/dist/types/{src/logic → logic}/logic.d.ts +0 -0
  531. package/dist/types/{src/logic → logic}/sourcemap.d.ts +0 -0
  532. package/dist/types/{src/logicTemplates → logicTemplates}/dynamicfee.d.ts +0 -0
  533. package/dist/types/{src/logicTemplates → logicTemplates}/htlc.d.ts +0 -0
  534. package/dist/types/{src/logicTemplates → logicTemplates}/index.d.ts +0 -0
  535. package/dist/types/{src/logicTemplates → logicTemplates}/limitorder.d.ts +0 -0
  536. package/dist/types/{src/logicTemplates → logicTemplates}/periodicpayment.d.ts +0 -0
  537. package/dist/types/{src/logicTemplates → logicTemplates}/split.d.ts +0 -0
  538. package/dist/types/{src/logicTemplates → logicTemplates}/templates.d.ts +0 -0
  539. package/dist/types/{src/logicsig.d.ts → logicsig.d.ts} +0 -0
  540. package/dist/types/{src/main.d.ts → main.d.ts} +0 -0
  541. package/dist/types/{src/makeTxn.d.ts → makeTxn.d.ts} +0 -0
  542. package/dist/types/{src/mnemonic → mnemonic}/mnemonic.d.ts +0 -0
  543. package/dist/types/{src/mnemonic → mnemonic}/wordlists/english.d.ts +0 -0
  544. package/dist/types/{src/multisig.d.ts → multisig.d.ts} +0 -0
  545. package/dist/types/{src/nacl → nacl}/naclWrappers.d.ts +0 -0
  546. package/dist/types/{src/signer.d.ts → signer.d.ts} +0 -0
  547. package/dist/types/{src/transaction.d.ts → transaction.d.ts} +0 -0
  548. package/dist/types/{src/types → types}/account.d.ts +0 -0
  549. package/dist/types/{src/types → types}/address.d.ts +0 -0
  550. package/dist/types/{src/types → types}/blockHeader.d.ts +0 -0
  551. package/dist/types/{src/types → types}/index.d.ts +0 -0
  552. package/dist/types/{src/types → types}/intDecoding.d.ts +0 -0
  553. package/dist/types/{src/types → types}/multisig.d.ts +0 -0
  554. package/dist/types/{src/types → types}/transactions/application.d.ts +0 -0
  555. package/dist/types/{src/types → types}/transactions/asset.d.ts +0 -0
  556. package/dist/types/{src/types → types}/transactions/base.d.ts +0 -0
  557. package/dist/types/{src/types → types}/transactions/builder.d.ts +0 -0
  558. package/dist/types/{src/types → types}/transactions/encoded.d.ts +0 -0
  559. package/dist/types/{src/types → types}/transactions/index.d.ts +0 -0
  560. package/dist/types/{src/types → types}/transactions/keyreg.d.ts +0 -0
  561. package/dist/types/{src/types → types}/transactions/payment.d.ts +0 -0
  562. package/dist/types/{src/types → types}/transactions/stateproof.d.ts +0 -0
  563. package/dist/types/{src/types → types}/utils.d.ts +0 -0
  564. package/dist/types/{src/utils → utils}/utils.d.ts +0 -0
  565. package/dist/types/{src/wait.d.ts → wait.d.ts} +0 -0
  566. package/package.json +10 -6
  567. package/src/abi/abi_type.ts +846 -0
  568. package/src/abi/contract.ts +51 -0
  569. package/src/abi/index.ts +6 -0
  570. package/src/abi/interface.ts +35 -0
  571. package/src/abi/method.ts +186 -0
  572. package/src/abi/reference.ts +24 -0
  573. package/src/abi/transaction.ts +61 -0
  574. package/src/account.ts +12 -0
  575. package/src/bid.ts +95 -0
  576. package/src/boxStorage.ts +42 -0
  577. package/src/client/algod.js +365 -0
  578. package/src/client/baseHTTPClient.ts +58 -0
  579. package/src/client/client.ts +306 -0
  580. package/src/client/kmd.ts +423 -0
  581. package/src/client/urlTokenBaseHTTPClient.ts +217 -0
  582. package/src/client/v2/algod/accountApplicationInformation.ts +20 -0
  583. package/src/client/v2/algod/accountAssetInformation.ts +20 -0
  584. package/src/client/v2/algod/accountInformation.ts +37 -0
  585. package/src/client/v2/algod/algod.ts +561 -0
  586. package/src/client/v2/algod/block.ts +30 -0
  587. package/src/client/v2/algod/compile.ts +50 -0
  588. package/src/client/v2/algod/dryrun.ts +33 -0
  589. package/src/client/v2/algod/genesis.ts +8 -0
  590. package/src/client/v2/algod/getApplicationBoxByName.ts +49 -0
  591. package/src/client/v2/algod/getApplicationBoxes.ts +61 -0
  592. package/src/client/v2/algod/getApplicationByID.ts +14 -0
  593. package/src/client/v2/algod/getAssetByID.ts +14 -0
  594. package/src/client/v2/algod/getBlockHash.ts +18 -0
  595. package/src/client/v2/algod/getTransactionProof.ts +43 -0
  596. package/src/client/v2/algod/healthCheck.ts +19 -0
  597. package/src/client/v2/algod/lightBlockHeaderProof.ts +15 -0
  598. package/src/client/v2/algod/models/types.ts +3662 -0
  599. package/src/client/v2/algod/pendingTransactionInformation.ts +32 -0
  600. package/src/client/v2/algod/pendingTransactions.ts +32 -0
  601. package/src/client/v2/algod/pendingTransactionsByAddress.ts +32 -0
  602. package/src/client/v2/algod/sendRawTransaction.ts +59 -0
  603. package/src/client/v2/algod/stateproof.ts +15 -0
  604. package/src/client/v2/algod/status.ts +8 -0
  605. package/src/client/v2/algod/statusAfterBlock.ts +15 -0
  606. package/src/client/v2/algod/suggestedParams.ts +24 -0
  607. package/src/client/v2/algod/supply.ts +8 -0
  608. package/src/client/v2/algod/versions.ts +11 -0
  609. package/src/client/v2/basemodel.ts +79 -0
  610. package/src/client/v2/indexer/indexer.ts +432 -0
  611. package/src/client/v2/indexer/lookupAccountAppLocalStates.ts +140 -0
  612. package/src/client/v2/indexer/lookupAccountAssets.ts +141 -0
  613. package/src/client/v2/indexer/lookupAccountByID.ts +109 -0
  614. package/src/client/v2/indexer/lookupAccountCreatedApplications.ts +141 -0
  615. package/src/client/v2/indexer/lookupAccountCreatedAssets.ts +142 -0
  616. package/src/client/v2/indexer/lookupAccountTransactions.ts +393 -0
  617. package/src/client/v2/indexer/lookupApplicationBoxByIDandName.ts +50 -0
  618. package/src/client/v2/indexer/lookupApplicationLogs.ts +156 -0
  619. package/src/client/v2/indexer/lookupApplications.ts +59 -0
  620. package/src/client/v2/indexer/lookupAssetBalances.ts +146 -0
  621. package/src/client/v2/indexer/lookupAssetByID.ts +58 -0
  622. package/src/client/v2/indexer/lookupAssetTransactions.ts +406 -0
  623. package/src/client/v2/indexer/lookupBlock.ts +39 -0
  624. package/src/client/v2/indexer/lookupTransactionByID.ts +30 -0
  625. package/src/client/v2/indexer/makeHealthCheck.ts +23 -0
  626. package/src/client/v2/indexer/models/types.ts +5667 -0
  627. package/src/client/v2/indexer/searchAccounts.ts +268 -0
  628. package/src/client/v2/indexer/searchForApplicationBoxes.ts +101 -0
  629. package/src/client/v2/indexer/searchForApplications.ts +134 -0
  630. package/src/client/v2/indexer/searchForAssets.ts +175 -0
  631. package/src/client/v2/indexer/searchForTransactions.ts +435 -0
  632. package/src/client/v2/jsonrequest.ts +103 -0
  633. package/src/client/v2/serviceClient.ts +86 -0
  634. package/src/composer.ts +688 -0
  635. package/src/convert.ts +25 -0
  636. package/src/dryrun.ts +468 -0
  637. package/src/encoding/address.ts +191 -0
  638. package/src/encoding/bigint.ts +33 -0
  639. package/src/encoding/encoding.ts +56 -0
  640. package/src/encoding/uint64.ts +84 -0
  641. package/src/group.ts +97 -0
  642. package/src/index.ts +4 -0
  643. package/src/logic/langspec.json +2014 -0
  644. package/src/logic/logic.ts +316 -0
  645. package/src/logic/sourcemap.ts +67 -0
  646. package/src/logicTemplates/dynamicfee.js +219 -0
  647. package/src/logicTemplates/htlc.js +165 -0
  648. package/src/logicTemplates/index.js +20 -0
  649. package/src/logicTemplates/limitorder.js +227 -0
  650. package/src/logicTemplates/periodicpayment.js +208 -0
  651. package/src/logicTemplates/split.js +208 -0
  652. package/src/logicTemplates/templates.js +78 -0
  653. package/src/logicsig.ts +523 -0
  654. package/src/main.ts +185 -0
  655. package/src/makeTxn.ts +1871 -0
  656. package/src/mnemonic/mnemonic.ts +181 -0
  657. package/src/mnemonic/wordlists/english.ts +2052 -0
  658. package/src/multisig.ts +495 -0
  659. package/src/nacl/naclWrappers.ts +49 -0
  660. package/src/signer.ts +105 -0
  661. package/src/transaction.ts +1363 -0
  662. package/src/types/account.ts +16 -0
  663. package/src/types/address.ts +7 -0
  664. package/src/types/blockHeader.ts +81 -0
  665. package/src/types/index.ts +3 -0
  666. package/src/types/intDecoding.ts +29 -0
  667. package/src/types/multisig.ts +22 -0
  668. package/src/types/transactions/application.ts +111 -0
  669. package/src/types/transactions/asset.ts +108 -0
  670. package/src/types/transactions/base.ts +428 -0
  671. package/src/types/transactions/builder.ts +69 -0
  672. package/src/types/transactions/encoded.ts +423 -0
  673. package/src/types/transactions/index.ts +72 -0
  674. package/src/types/transactions/keyreg.ts +23 -0
  675. package/src/types/transactions/payment.ts +14 -0
  676. package/src/types/transactions/stateproof.ts +17 -0
  677. package/src/types/utils.ts +63 -0
  678. package/src/utils/utils.ts +121 -0
  679. package/src/wait.ts +58 -0
  680. package/dist/cjs/src/abi/abi_type.js.map +0 -1
  681. package/dist/cjs/src/abi/contract.js.map +0 -1
  682. package/dist/cjs/src/abi/index.js.map +0 -1
  683. package/dist/cjs/src/abi/interface.js.map +0 -1
  684. package/dist/cjs/src/abi/method.js.map +0 -1
  685. package/dist/cjs/src/abi/reference.js.map +0 -1
  686. package/dist/cjs/src/abi/transaction.js.map +0 -1
  687. package/dist/cjs/src/account.js.map +0 -1
  688. package/dist/cjs/src/bid.js.map +0 -1
  689. package/dist/cjs/src/boxStorage.js.map +0 -1
  690. package/dist/cjs/src/client/algod.js.map +0 -1
  691. package/dist/cjs/src/client/baseHTTPClient.js.map +0 -1
  692. package/dist/cjs/src/client/client.js.map +0 -1
  693. package/dist/cjs/src/client/kmd.js.map +0 -1
  694. package/dist/cjs/src/client/urlTokenBaseHTTPClient.js.map +0 -1
  695. package/dist/cjs/src/client/v2/algod/accountApplicationInformation.js.map +0 -1
  696. package/dist/cjs/src/client/v2/algod/accountAssetInformation.js.map +0 -1
  697. package/dist/cjs/src/client/v2/algod/accountInformation.js.map +0 -1
  698. package/dist/cjs/src/client/v2/algod/algod.js.map +0 -1
  699. package/dist/cjs/src/client/v2/algod/block.js.map +0 -1
  700. package/dist/cjs/src/client/v2/algod/compile.js.map +0 -1
  701. package/dist/cjs/src/client/v2/algod/dryrun.js.map +0 -1
  702. package/dist/cjs/src/client/v2/algod/genesis.js.map +0 -1
  703. package/dist/cjs/src/client/v2/algod/getApplicationBoxByName.js.map +0 -1
  704. package/dist/cjs/src/client/v2/algod/getApplicationBoxes.js.map +0 -1
  705. package/dist/cjs/src/client/v2/algod/getApplicationByID.js.map +0 -1
  706. package/dist/cjs/src/client/v2/algod/getAssetByID.js.map +0 -1
  707. package/dist/cjs/src/client/v2/algod/getBlockHash.js.map +0 -1
  708. package/dist/cjs/src/client/v2/algod/getTransactionProof.js.map +0 -1
  709. package/dist/cjs/src/client/v2/algod/healthCheck.js.map +0 -1
  710. package/dist/cjs/src/client/v2/algod/lightBlockHeaderProof.js.map +0 -1
  711. package/dist/cjs/src/client/v2/algod/models/types.js.map +0 -1
  712. package/dist/cjs/src/client/v2/algod/pendingTransactionInformation.js.map +0 -1
  713. package/dist/cjs/src/client/v2/algod/pendingTransactions.js.map +0 -1
  714. package/dist/cjs/src/client/v2/algod/pendingTransactionsByAddress.js.map +0 -1
  715. package/dist/cjs/src/client/v2/algod/sendRawTransaction.js.map +0 -1
  716. package/dist/cjs/src/client/v2/algod/stateproof.js.map +0 -1
  717. package/dist/cjs/src/client/v2/algod/status.js.map +0 -1
  718. package/dist/cjs/src/client/v2/algod/statusAfterBlock.js.map +0 -1
  719. package/dist/cjs/src/client/v2/algod/suggestedParams.js.map +0 -1
  720. package/dist/cjs/src/client/v2/algod/supply.js.map +0 -1
  721. package/dist/cjs/src/client/v2/algod/versions.js.map +0 -1
  722. package/dist/cjs/src/client/v2/basemodel.js.map +0 -1
  723. package/dist/cjs/src/client/v2/indexer/indexer.js.map +0 -1
  724. package/dist/cjs/src/client/v2/indexer/lookupAccountAppLocalStates.js.map +0 -1
  725. package/dist/cjs/src/client/v2/indexer/lookupAccountAssets.js.map +0 -1
  726. package/dist/cjs/src/client/v2/indexer/lookupAccountByID.js.map +0 -1
  727. package/dist/cjs/src/client/v2/indexer/lookupAccountCreatedApplications.js.map +0 -1
  728. package/dist/cjs/src/client/v2/indexer/lookupAccountCreatedAssets.js.map +0 -1
  729. package/dist/cjs/src/client/v2/indexer/lookupAccountTransactions.js.map +0 -1
  730. package/dist/cjs/src/client/v2/indexer/lookupApplicationBoxByIDandName.js.map +0 -1
  731. package/dist/cjs/src/client/v2/indexer/lookupApplicationLogs.js.map +0 -1
  732. package/dist/cjs/src/client/v2/indexer/lookupApplications.js.map +0 -1
  733. package/dist/cjs/src/client/v2/indexer/lookupAssetBalances.js.map +0 -1
  734. package/dist/cjs/src/client/v2/indexer/lookupAssetByID.js.map +0 -1
  735. package/dist/cjs/src/client/v2/indexer/lookupAssetTransactions.js.map +0 -1
  736. package/dist/cjs/src/client/v2/indexer/lookupBlock.js.map +0 -1
  737. package/dist/cjs/src/client/v2/indexer/lookupTransactionByID.js.map +0 -1
  738. package/dist/cjs/src/client/v2/indexer/makeHealthCheck.js.map +0 -1
  739. package/dist/cjs/src/client/v2/indexer/models/types.js.map +0 -1
  740. package/dist/cjs/src/client/v2/indexer/searchAccounts.js.map +0 -1
  741. package/dist/cjs/src/client/v2/indexer/searchForApplicationBoxes.js.map +0 -1
  742. package/dist/cjs/src/client/v2/indexer/searchForApplications.js.map +0 -1
  743. package/dist/cjs/src/client/v2/indexer/searchForAssets.js.map +0 -1
  744. package/dist/cjs/src/client/v2/indexer/searchForTransactions.js.map +0 -1
  745. package/dist/cjs/src/client/v2/jsonrequest.js.map +0 -1
  746. package/dist/cjs/src/client/v2/serviceClient.js.map +0 -1
  747. package/dist/cjs/src/composer.js.map +0 -1
  748. package/dist/cjs/src/convert.js.map +0 -1
  749. package/dist/cjs/src/dryrun.js.map +0 -1
  750. package/dist/cjs/src/encoding/address.js.map +0 -1
  751. package/dist/cjs/src/encoding/bigint.js.map +0 -1
  752. package/dist/cjs/src/encoding/encoding.js.map +0 -1
  753. package/dist/cjs/src/encoding/uint64.js.map +0 -1
  754. package/dist/cjs/src/group.js.map +0 -1
  755. package/dist/cjs/src/logic/logic.js.map +0 -1
  756. package/dist/cjs/src/logic/sourcemap.js.map +0 -1
  757. package/dist/cjs/src/logicTemplates/dynamicfee.js.map +0 -1
  758. package/dist/cjs/src/logicTemplates/htlc.js.map +0 -1
  759. package/dist/cjs/src/logicTemplates/index.js.map +0 -1
  760. package/dist/cjs/src/logicTemplates/limitorder.js.map +0 -1
  761. package/dist/cjs/src/logicTemplates/periodicpayment.js.map +0 -1
  762. package/dist/cjs/src/logicTemplates/split.js.map +0 -1
  763. package/dist/cjs/src/logicTemplates/templates.js.map +0 -1
  764. package/dist/cjs/src/logicsig.js.map +0 -1
  765. package/dist/cjs/src/main.js.map +0 -1
  766. package/dist/cjs/src/makeTxn.js.map +0 -1
  767. package/dist/cjs/src/mnemonic/mnemonic.js.map +0 -1
  768. package/dist/cjs/src/mnemonic/wordlists/english.js.map +0 -1
  769. package/dist/cjs/src/multisig.js.map +0 -1
  770. package/dist/cjs/src/nacl/naclWrappers.js.map +0 -1
  771. package/dist/cjs/src/signer.js.map +0 -1
  772. package/dist/cjs/src/transaction.js.map +0 -1
  773. package/dist/cjs/src/types/account.js.map +0 -1
  774. package/dist/cjs/src/types/address.js.map +0 -1
  775. package/dist/cjs/src/types/blockHeader.js.map +0 -1
  776. package/dist/cjs/src/types/index.js.map +0 -1
  777. package/dist/cjs/src/types/intDecoding.js.map +0 -1
  778. package/dist/cjs/src/types/multisig.js.map +0 -1
  779. package/dist/cjs/src/types/transactions/application.js.map +0 -1
  780. package/dist/cjs/src/types/transactions/asset.js.map +0 -1
  781. package/dist/cjs/src/types/transactions/base.js.map +0 -1
  782. package/dist/cjs/src/types/transactions/builder.js.map +0 -1
  783. package/dist/cjs/src/types/transactions/encoded.js.map +0 -1
  784. package/dist/cjs/src/types/transactions/index.js.map +0 -1
  785. package/dist/cjs/src/types/transactions/keyreg.js.map +0 -1
  786. package/dist/cjs/src/types/transactions/payment.js.map +0 -1
  787. package/dist/cjs/src/types/transactions/stateproof.js.map +0 -1
  788. package/dist/cjs/src/types/utils.js.map +0 -1
  789. package/dist/cjs/src/utils/utils.js.map +0 -1
  790. package/dist/cjs/src/wait.js.map +0 -1
  791. package/dist/esm/src/abi/abi_type.js.map +0 -1
  792. package/dist/esm/src/abi/contract.js.map +0 -1
  793. package/dist/esm/src/abi/index.js.map +0 -1
  794. package/dist/esm/src/abi/interface.js.map +0 -1
  795. package/dist/esm/src/abi/method.js.map +0 -1
  796. package/dist/esm/src/abi/reference.js.map +0 -1
  797. package/dist/esm/src/abi/transaction.js.map +0 -1
  798. package/dist/esm/src/account.js.map +0 -1
  799. package/dist/esm/src/bid.js.map +0 -1
  800. package/dist/esm/src/boxStorage.js.map +0 -1
  801. package/dist/esm/src/client/algod.js.map +0 -1
  802. package/dist/esm/src/client/baseHTTPClient.js.map +0 -1
  803. package/dist/esm/src/client/client.js.map +0 -1
  804. package/dist/esm/src/client/kmd.js.map +0 -1
  805. package/dist/esm/src/client/urlTokenBaseHTTPClient.js.map +0 -1
  806. package/dist/esm/src/client/v2/algod/accountApplicationInformation.js.map +0 -1
  807. package/dist/esm/src/client/v2/algod/accountAssetInformation.js.map +0 -1
  808. package/dist/esm/src/client/v2/algod/accountInformation.js.map +0 -1
  809. package/dist/esm/src/client/v2/algod/algod.js.map +0 -1
  810. package/dist/esm/src/client/v2/algod/block.js.map +0 -1
  811. package/dist/esm/src/client/v2/algod/compile.js.map +0 -1
  812. package/dist/esm/src/client/v2/algod/dryrun.js.map +0 -1
  813. package/dist/esm/src/client/v2/algod/genesis.js.map +0 -1
  814. package/dist/esm/src/client/v2/algod/getApplicationBoxByName.js.map +0 -1
  815. package/dist/esm/src/client/v2/algod/getApplicationBoxes.js.map +0 -1
  816. package/dist/esm/src/client/v2/algod/getApplicationByID.js.map +0 -1
  817. package/dist/esm/src/client/v2/algod/getAssetByID.js.map +0 -1
  818. package/dist/esm/src/client/v2/algod/getBlockHash.js.map +0 -1
  819. package/dist/esm/src/client/v2/algod/getTransactionProof.js.map +0 -1
  820. package/dist/esm/src/client/v2/algod/healthCheck.js.map +0 -1
  821. package/dist/esm/src/client/v2/algod/lightBlockHeaderProof.js.map +0 -1
  822. package/dist/esm/src/client/v2/algod/models/types.js.map +0 -1
  823. package/dist/esm/src/client/v2/algod/pendingTransactionInformation.js.map +0 -1
  824. package/dist/esm/src/client/v2/algod/pendingTransactions.js.map +0 -1
  825. package/dist/esm/src/client/v2/algod/pendingTransactionsByAddress.js.map +0 -1
  826. package/dist/esm/src/client/v2/algod/sendRawTransaction.js.map +0 -1
  827. package/dist/esm/src/client/v2/algod/stateproof.js.map +0 -1
  828. package/dist/esm/src/client/v2/algod/status.js.map +0 -1
  829. package/dist/esm/src/client/v2/algod/statusAfterBlock.js.map +0 -1
  830. package/dist/esm/src/client/v2/algod/suggestedParams.js.map +0 -1
  831. package/dist/esm/src/client/v2/algod/supply.js.map +0 -1
  832. package/dist/esm/src/client/v2/algod/versions.js.map +0 -1
  833. package/dist/esm/src/client/v2/basemodel.js.map +0 -1
  834. package/dist/esm/src/client/v2/indexer/indexer.js.map +0 -1
  835. package/dist/esm/src/client/v2/indexer/lookupAccountAppLocalStates.js.map +0 -1
  836. package/dist/esm/src/client/v2/indexer/lookupAccountAssets.js.map +0 -1
  837. package/dist/esm/src/client/v2/indexer/lookupAccountByID.js.map +0 -1
  838. package/dist/esm/src/client/v2/indexer/lookupAccountCreatedApplications.js.map +0 -1
  839. package/dist/esm/src/client/v2/indexer/lookupAccountCreatedAssets.js.map +0 -1
  840. package/dist/esm/src/client/v2/indexer/lookupAccountTransactions.js.map +0 -1
  841. package/dist/esm/src/client/v2/indexer/lookupApplicationBoxByIDandName.js.map +0 -1
  842. package/dist/esm/src/client/v2/indexer/lookupApplicationLogs.js.map +0 -1
  843. package/dist/esm/src/client/v2/indexer/lookupApplications.js.map +0 -1
  844. package/dist/esm/src/client/v2/indexer/lookupAssetBalances.js.map +0 -1
  845. package/dist/esm/src/client/v2/indexer/lookupAssetByID.js.map +0 -1
  846. package/dist/esm/src/client/v2/indexer/lookupAssetTransactions.js.map +0 -1
  847. package/dist/esm/src/client/v2/indexer/lookupBlock.js.map +0 -1
  848. package/dist/esm/src/client/v2/indexer/lookupTransactionByID.js.map +0 -1
  849. package/dist/esm/src/client/v2/indexer/makeHealthCheck.js.map +0 -1
  850. package/dist/esm/src/client/v2/indexer/models/types.js.map +0 -1
  851. package/dist/esm/src/client/v2/indexer/searchAccounts.js.map +0 -1
  852. package/dist/esm/src/client/v2/indexer/searchForApplicationBoxes.js.map +0 -1
  853. package/dist/esm/src/client/v2/indexer/searchForApplications.js.map +0 -1
  854. package/dist/esm/src/client/v2/indexer/searchForAssets.js.map +0 -1
  855. package/dist/esm/src/client/v2/indexer/searchForTransactions.js.map +0 -1
  856. package/dist/esm/src/client/v2/jsonrequest.js.map +0 -1
  857. package/dist/esm/src/client/v2/serviceClient.js.map +0 -1
  858. package/dist/esm/src/composer.js.map +0 -1
  859. package/dist/esm/src/convert.js.map +0 -1
  860. package/dist/esm/src/dryrun.js.map +0 -1
  861. package/dist/esm/src/encoding/address.js.map +0 -1
  862. package/dist/esm/src/encoding/bigint.js.map +0 -1
  863. package/dist/esm/src/encoding/encoding.js.map +0 -1
  864. package/dist/esm/src/encoding/uint64.js.map +0 -1
  865. package/dist/esm/src/group.js.map +0 -1
  866. package/dist/esm/src/logic/logic.js.map +0 -1
  867. package/dist/esm/src/logic/sourcemap.js.map +0 -1
  868. package/dist/esm/src/logicTemplates/dynamicfee.js.map +0 -1
  869. package/dist/esm/src/logicTemplates/htlc.js.map +0 -1
  870. package/dist/esm/src/logicTemplates/index.js.map +0 -1
  871. package/dist/esm/src/logicTemplates/limitorder.js.map +0 -1
  872. package/dist/esm/src/logicTemplates/periodicpayment.js.map +0 -1
  873. package/dist/esm/src/logicTemplates/split.js.map +0 -1
  874. package/dist/esm/src/logicTemplates/templates.js.map +0 -1
  875. package/dist/esm/src/logicsig.js.map +0 -1
  876. package/dist/esm/src/main.js.map +0 -1
  877. package/dist/esm/src/makeTxn.js.map +0 -1
  878. package/dist/esm/src/mnemonic/mnemonic.js.map +0 -1
  879. package/dist/esm/src/mnemonic/wordlists/english.js.map +0 -1
  880. package/dist/esm/src/multisig.js.map +0 -1
  881. package/dist/esm/src/nacl/naclWrappers.js.map +0 -1
  882. package/dist/esm/src/signer.js.map +0 -1
  883. package/dist/esm/src/transaction.js.map +0 -1
  884. package/dist/esm/src/types/account.js.map +0 -1
  885. package/dist/esm/src/types/address.js.map +0 -1
  886. package/dist/esm/src/types/blockHeader.js.map +0 -1
  887. package/dist/esm/src/types/index.js.map +0 -1
  888. package/dist/esm/src/types/intDecoding.js.map +0 -1
  889. package/dist/esm/src/types/multisig.js.map +0 -1
  890. package/dist/esm/src/types/transactions/application.js.map +0 -1
  891. package/dist/esm/src/types/transactions/asset.js.map +0 -1
  892. package/dist/esm/src/types/transactions/base.js.map +0 -1
  893. package/dist/esm/src/types/transactions/builder.js.map +0 -1
  894. package/dist/esm/src/types/transactions/encoded.js.map +0 -1
  895. package/dist/esm/src/types/transactions/index.js.map +0 -1
  896. package/dist/esm/src/types/transactions/keyreg.js.map +0 -1
  897. package/dist/esm/src/types/transactions/payment.js.map +0 -1
  898. package/dist/esm/src/types/transactions/stateproof.js.map +0 -1
  899. package/dist/esm/src/types/utils.js.map +0 -1
  900. package/dist/esm/src/utils/utils.js.map +0 -1
  901. package/dist/esm/src/wait.js.map +0 -1
@@ -0,0 +1,1363 @@
1
+ import base32 from 'hi-base32';
2
+ import * as address from './encoding/address';
3
+ import * as encoding from './encoding/encoding';
4
+ import * as nacl from './nacl/naclWrappers';
5
+ import * as utils from './utils/utils';
6
+ import { translateBoxReferences } from './boxStorage';
7
+ import {
8
+ OnApplicationComplete,
9
+ TransactionParams,
10
+ TransactionType,
11
+ isTransactionType,
12
+ BoxReference,
13
+ } from './types/transactions/base';
14
+ import AnyTransaction, {
15
+ MustHaveSuggestedParams,
16
+ MustHaveSuggestedParamsInline,
17
+ EncodedTransaction,
18
+ EncodedSignedTransaction,
19
+ EncodedMultisig,
20
+ EncodedLogicSig,
21
+ } from './types/transactions';
22
+ import { Address } from './types/address';
23
+
24
+ const ALGORAND_TRANSACTION_LENGTH = 52;
25
+ export const ALGORAND_MIN_TX_FEE = 1000; // version v5
26
+ const ALGORAND_TRANSACTION_LEASE_LENGTH = 32;
27
+ const ALGORAND_MAX_ASSET_DECIMALS = 19;
28
+ const NUM_ADDL_BYTES_AFTER_SIGNING = 75; // NUM_ADDL_BYTES_AFTER_SIGNING is the number of bytes added to a txn after signing it
29
+ const ALGORAND_TRANSACTION_LEASE_LABEL_LENGTH = 5;
30
+ const ALGORAND_TRANSACTION_ADDRESS_LENGTH = 32;
31
+ const ALGORAND_TRANSACTION_REKEY_LABEL_LENGTH = 5;
32
+ const ASSET_METADATA_HASH_LENGTH = 32;
33
+ const KEYREG_VOTE_KEY_LENGTH = 32;
34
+ const KEYREG_SELECTION_KEY_LENGTH = 32;
35
+ const KEYREG_STATE_PROOF_KEY_LENGTH = 64;
36
+
37
+ type AnyTransactionWithParams = MustHaveSuggestedParams<AnyTransaction>;
38
+ type AnyTransactionWithParamsInline = MustHaveSuggestedParamsInline<AnyTransaction>;
39
+
40
+ /**
41
+ * A modified version of the transaction params. Represents the internal structure that the Transaction class uses
42
+ * to store inputted transaction objects.
43
+ */
44
+ // Omit allows overwriting properties
45
+ interface TransactionStorageStructure
46
+ extends Omit<
47
+ TransactionParams,
48
+ | 'from'
49
+ | 'to'
50
+ | 'genesisHash'
51
+ | 'closeRemainderTo'
52
+ | 'voteKey'
53
+ | 'selectionKey'
54
+ | 'stateProofKey'
55
+ | 'assetManager'
56
+ | 'assetReserve'
57
+ | 'assetFreeze'
58
+ | 'assetClawback'
59
+ | 'assetRevocationTarget'
60
+ | 'freezeAccount'
61
+ | 'appAccounts'
62
+ | 'suggestedParams'
63
+ | 'reKeyTo'
64
+ > {
65
+ from: string | Address;
66
+ to: string | Address;
67
+ fee: number;
68
+ amount: number | bigint;
69
+ firstRound: number;
70
+ lastRound: number;
71
+ note?: Uint8Array;
72
+ genesisID: string;
73
+ genesisHash: string | Buffer;
74
+ lease?: Uint8Array;
75
+ closeRemainderTo?: string | Address;
76
+ voteKey: string | Buffer;
77
+ selectionKey: string | Buffer;
78
+ stateProofKey: string | Buffer;
79
+ voteFirst: number;
80
+ voteLast: number;
81
+ voteKeyDilution: number;
82
+ assetIndex: number;
83
+ assetTotal: number | bigint;
84
+ assetDecimals: number;
85
+ assetDefaultFrozen: boolean;
86
+ assetManager: string | Address;
87
+ assetReserve: string | Address;
88
+ assetFreeze: string | Address;
89
+ assetClawback: string | Address;
90
+ assetUnitName: string;
91
+ assetName: string;
92
+ assetURL: string;
93
+ assetMetadataHash?: string | Uint8Array;
94
+ freezeAccount: string | Address;
95
+ freezeState: boolean;
96
+ assetRevocationTarget?: string | Address;
97
+ appIndex: number;
98
+ appOnComplete: OnApplicationComplete;
99
+ appLocalInts: number;
100
+ appLocalByteSlices: number;
101
+ appGlobalInts: number;
102
+ appGlobalByteSlices: number;
103
+ appApprovalProgram: Uint8Array;
104
+ appClearProgram: Uint8Array;
105
+ appArgs?: Uint8Array[];
106
+ appAccounts?: string[] | Address[];
107
+ appForeignApps?: number[];
108
+ appForeignAssets?: number[];
109
+ type?: TransactionType;
110
+ flatFee: boolean;
111
+ reKeyTo?: string | Address;
112
+ nonParticipation?: boolean;
113
+ group?: Buffer;
114
+ extraPages?: number;
115
+ boxes?: BoxReference[];
116
+ stateProofType?: number | bigint;
117
+ stateProof?: Uint8Array;
118
+ stateProofMessage?: Uint8Array;
119
+ }
120
+
121
+ function getKeyregKey(
122
+ input: undefined | string | Uint8Array | Buffer,
123
+ inputName: string,
124
+ length: number
125
+ ): Buffer | undefined {
126
+ if (input == null) {
127
+ return undefined;
128
+ }
129
+
130
+ let inputAsBuffer: Buffer | undefined;
131
+
132
+ if (typeof input === 'string') {
133
+ inputAsBuffer = Buffer.from(input, 'base64');
134
+ } else if (input.constructor === Uint8Array) {
135
+ inputAsBuffer = Buffer.from(input);
136
+ } else if (Buffer.isBuffer(input)) {
137
+ inputAsBuffer = input;
138
+ }
139
+
140
+ if (inputAsBuffer == null || inputAsBuffer.byteLength !== length) {
141
+ throw Error(
142
+ `${inputName} must be a ${length} byte Uint8Array or Buffer or base64 string.`
143
+ );
144
+ }
145
+
146
+ return inputAsBuffer;
147
+ }
148
+
149
+ /**
150
+ * Transaction enables construction of Algorand transactions
151
+ * */
152
+ export class Transaction implements TransactionStorageStructure {
153
+ name = 'Transaction';
154
+ tag = Buffer.from('TX');
155
+
156
+ // Implement transaction params
157
+ from: Address;
158
+ to: Address;
159
+ fee: number;
160
+ amount: number | bigint;
161
+ firstRound: number;
162
+ lastRound: number;
163
+ note?: Uint8Array;
164
+ genesisID: string;
165
+ genesisHash: Buffer;
166
+ lease?: Uint8Array;
167
+ closeRemainderTo?: Address;
168
+ voteKey: Buffer;
169
+ selectionKey: Buffer;
170
+ stateProofKey: Buffer;
171
+ voteFirst: number;
172
+ voteLast: number;
173
+ voteKeyDilution: number;
174
+ assetIndex: number;
175
+ assetTotal: number | bigint;
176
+ assetDecimals: number;
177
+ assetDefaultFrozen: boolean;
178
+ assetManager: Address;
179
+ assetReserve: Address;
180
+ assetFreeze: Address;
181
+ assetClawback: Address;
182
+ assetUnitName: string;
183
+ assetName: string;
184
+ assetURL: string;
185
+ assetMetadataHash?: Uint8Array;
186
+ freezeAccount: Address;
187
+ freezeState: boolean;
188
+ assetRevocationTarget?: Address;
189
+ appIndex: number;
190
+ appOnComplete: OnApplicationComplete;
191
+ appLocalInts: number;
192
+ appLocalByteSlices: number;
193
+ appGlobalInts: number;
194
+ appGlobalByteSlices: number;
195
+ appApprovalProgram: Uint8Array;
196
+ appClearProgram: Uint8Array;
197
+ appArgs?: Uint8Array[];
198
+ appAccounts?: Address[];
199
+ appForeignApps?: number[];
200
+ appForeignAssets?: number[];
201
+ boxes?: BoxReference[];
202
+ type?: TransactionType;
203
+ flatFee: boolean;
204
+ reKeyTo?: Address;
205
+ nonParticipation?: boolean;
206
+ group?: Buffer;
207
+ extraPages?: number;
208
+ stateProofType?: number | bigint;
209
+ stateProof?: Uint8Array;
210
+ stateProofMessage?: Uint8Array;
211
+
212
+ constructor({ ...transaction }: AnyTransaction) {
213
+ // Populate defaults
214
+ /* eslint-disable no-param-reassign */
215
+ const defaults: Partial<TransactionParams> = {
216
+ type: TransactionType.pay,
217
+ flatFee: false,
218
+ nonParticipation: false,
219
+ };
220
+ // Default type
221
+ if (typeof transaction.type === 'undefined') {
222
+ transaction.type = defaults.type;
223
+ }
224
+ // Default flatFee
225
+ if (
226
+ typeof (transaction as AnyTransactionWithParamsInline).flatFee ===
227
+ 'undefined'
228
+ ) {
229
+ (transaction as AnyTransactionWithParamsInline).flatFee =
230
+ defaults.flatFee;
231
+ }
232
+ // Default nonParticipation
233
+ if (
234
+ transaction.type === TransactionType.keyreg &&
235
+ typeof transaction.voteKey !== 'undefined' &&
236
+ typeof transaction.nonParticipation === 'undefined'
237
+ ) {
238
+ transaction.nonParticipation = defaults.nonParticipation;
239
+ }
240
+ /* eslint-enable no-param-reassign */
241
+
242
+ // Move suggested parameters from its object to inline
243
+ if (
244
+ (transaction as AnyTransactionWithParams).suggestedParams !== undefined
245
+ ) {
246
+ // Create a temporary reference to the transaction object that has params inline and also as a suggested params object
247
+ // - Helpful for moving params from named object to inline
248
+ const reference = transaction as AnyTransactionWithParams &
249
+ AnyTransactionWithParamsInline;
250
+ reference.genesisHash = reference.suggestedParams.genesisHash;
251
+ reference.fee = reference.suggestedParams.fee;
252
+ if (reference.suggestedParams.flatFee !== undefined)
253
+ reference.flatFee = reference.suggestedParams.flatFee;
254
+ reference.firstRound = reference.suggestedParams.firstRound;
255
+ reference.lastRound = reference.suggestedParams.lastRound;
256
+ reference.genesisID = reference.suggestedParams.genesisID;
257
+ }
258
+
259
+ // At this point all suggestedParams have been moved to be inline, so we can reassign the transaction object type
260
+ // to one which is more useful as we prepare properties for storing
261
+ const txn = transaction as TransactionStorageStructure;
262
+
263
+ txn.from = address.decodeAddress(txn.from as string);
264
+ if (txn.to !== undefined) txn.to = address.decodeAddress(txn.to as string);
265
+ if (txn.closeRemainderTo !== undefined)
266
+ txn.closeRemainderTo = address.decodeAddress(
267
+ txn.closeRemainderTo as string
268
+ );
269
+ if (txn.assetManager !== undefined)
270
+ txn.assetManager = address.decodeAddress(txn.assetManager as string);
271
+ if (txn.assetReserve !== undefined)
272
+ txn.assetReserve = address.decodeAddress(txn.assetReserve as string);
273
+ if (txn.assetFreeze !== undefined)
274
+ txn.assetFreeze = address.decodeAddress(txn.assetFreeze as string);
275
+ if (txn.assetClawback !== undefined)
276
+ txn.assetClawback = address.decodeAddress(txn.assetClawback as string);
277
+ if (txn.assetRevocationTarget !== undefined)
278
+ txn.assetRevocationTarget = address.decodeAddress(
279
+ txn.assetRevocationTarget as string
280
+ );
281
+ if (txn.freezeAccount !== undefined)
282
+ txn.freezeAccount = address.decodeAddress(txn.freezeAccount as string);
283
+ if (txn.reKeyTo !== undefined)
284
+ txn.reKeyTo = address.decodeAddress(txn.reKeyTo as string);
285
+ if (txn.genesisHash === undefined)
286
+ throw Error('genesis hash must be specified and in a base64 string.');
287
+
288
+ txn.genesisHash = Buffer.from(txn.genesisHash as string, 'base64');
289
+
290
+ if (
291
+ txn.amount !== undefined &&
292
+ (!(
293
+ Number.isSafeInteger(txn.amount) ||
294
+ (typeof txn.amount === 'bigint' &&
295
+ txn.amount <= BigInt('0xffffffffffffffff'))
296
+ ) ||
297
+ txn.amount < 0)
298
+ )
299
+ throw Error(
300
+ 'Amount must be a positive number and smaller than 2^64-1. If the number is larger than 2^53-1, use bigint.'
301
+ );
302
+ if (!Number.isSafeInteger(txn.fee) || txn.fee < 0)
303
+ throw Error('fee must be a positive number and smaller than 2^53-1');
304
+ if (!Number.isSafeInteger(txn.firstRound) || txn.firstRound < 0)
305
+ throw Error('firstRound must be a positive number');
306
+ if (!Number.isSafeInteger(txn.lastRound) || txn.lastRound < 0)
307
+ throw Error('lastRound must be a positive number');
308
+ if (
309
+ txn.extraPages !== undefined &&
310
+ (!Number.isInteger(txn.extraPages) ||
311
+ txn.extraPages < 0 ||
312
+ txn.extraPages > 3)
313
+ )
314
+ throw Error('extraPages must be an Integer between and including 0 to 3');
315
+ if (
316
+ txn.assetTotal !== undefined &&
317
+ (!(
318
+ Number.isSafeInteger(txn.assetTotal) ||
319
+ (typeof txn.assetTotal === 'bigint' &&
320
+ txn.assetTotal <= BigInt('0xffffffffffffffff'))
321
+ ) ||
322
+ txn.assetTotal < 0)
323
+ )
324
+ throw Error(
325
+ 'Total asset issuance must be a positive number and smaller than 2^64-1. If the number is larger than 2^53-1, use bigint.'
326
+ );
327
+ if (
328
+ txn.assetDecimals !== undefined &&
329
+ (!Number.isSafeInteger(txn.assetDecimals) ||
330
+ txn.assetDecimals < 0 ||
331
+ txn.assetDecimals > ALGORAND_MAX_ASSET_DECIMALS)
332
+ )
333
+ throw Error(
334
+ `assetDecimals must be a positive number and smaller than ${ALGORAND_MAX_ASSET_DECIMALS.toString()}`
335
+ );
336
+ if (
337
+ txn.assetIndex !== undefined &&
338
+ (!Number.isSafeInteger(txn.assetIndex) || txn.assetIndex < 0)
339
+ )
340
+ throw Error(
341
+ 'Asset index must be a positive number and smaller than 2^53-1'
342
+ );
343
+ if (
344
+ txn.appIndex !== undefined &&
345
+ (!Number.isSafeInteger(txn.appIndex) || txn.appIndex < 0)
346
+ )
347
+ throw Error(
348
+ 'Application index must be a positive number and smaller than 2^53-1'
349
+ );
350
+ if (
351
+ txn.appLocalInts !== undefined &&
352
+ (!Number.isSafeInteger(txn.appLocalInts) || txn.appLocalInts < 0)
353
+ )
354
+ throw Error(
355
+ 'Application local ints count must be a positive number and smaller than 2^53-1'
356
+ );
357
+ if (
358
+ txn.appLocalByteSlices !== undefined &&
359
+ (!Number.isSafeInteger(txn.appLocalByteSlices) ||
360
+ txn.appLocalByteSlices < 0)
361
+ )
362
+ throw Error(
363
+ 'Application local byte slices count must be a positive number and smaller than 2^53-1'
364
+ );
365
+ if (
366
+ txn.appGlobalInts !== undefined &&
367
+ (!Number.isSafeInteger(txn.appGlobalInts) || txn.appGlobalInts < 0)
368
+ )
369
+ throw Error(
370
+ 'Application global ints count must be a positive number and smaller than 2^53-1'
371
+ );
372
+ if (
373
+ txn.appGlobalByteSlices !== undefined &&
374
+ (!Number.isSafeInteger(txn.appGlobalByteSlices) ||
375
+ txn.appGlobalByteSlices < 0)
376
+ )
377
+ throw Error(
378
+ 'Application global byte slices count must be a positive number and smaller than 2^53-1'
379
+ );
380
+ if (txn.appApprovalProgram !== undefined) {
381
+ if (txn.appApprovalProgram.constructor !== Uint8Array)
382
+ throw Error('appApprovalProgram must be a Uint8Array.');
383
+ }
384
+ if (txn.appClearProgram !== undefined) {
385
+ if (txn.appClearProgram.constructor !== Uint8Array)
386
+ throw Error('appClearProgram must be a Uint8Array.');
387
+ }
388
+ if (txn.appArgs !== undefined) {
389
+ if (!Array.isArray(txn.appArgs))
390
+ throw Error('appArgs must be an Array of Uint8Array.');
391
+ txn.appArgs = txn.appArgs.slice();
392
+ txn.appArgs.forEach((arg) => {
393
+ if (arg.constructor !== Uint8Array)
394
+ throw Error('each element of AppArgs must be a Uint8Array.');
395
+ });
396
+ } else {
397
+ txn.appArgs = [];
398
+ }
399
+ if (txn.appAccounts !== undefined) {
400
+ if (!Array.isArray(txn.appAccounts))
401
+ throw Error('appAccounts must be an Array of addresses.');
402
+ txn.appAccounts = txn.appAccounts.map((addressAsString) =>
403
+ address.decodeAddress(addressAsString)
404
+ );
405
+ }
406
+ if (txn.appForeignApps !== undefined) {
407
+ if (!Array.isArray(txn.appForeignApps))
408
+ throw Error('appForeignApps must be an Array of integers.');
409
+ txn.appForeignApps = txn.appForeignApps.slice();
410
+ txn.appForeignApps.forEach((foreignAppIndex) => {
411
+ if (!Number.isSafeInteger(foreignAppIndex) || foreignAppIndex < 0)
412
+ throw Error(
413
+ 'each foreign application index must be a positive number and smaller than 2^53-1'
414
+ );
415
+ });
416
+ }
417
+ if (txn.appForeignAssets !== undefined) {
418
+ if (!Array.isArray(txn.appForeignAssets))
419
+ throw Error('appForeignAssets must be an Array of integers.');
420
+ txn.appForeignAssets = txn.appForeignAssets.slice();
421
+ txn.appForeignAssets.forEach((foreignAssetIndex) => {
422
+ if (!Number.isSafeInteger(foreignAssetIndex) || foreignAssetIndex < 0)
423
+ throw Error(
424
+ 'each foreign asset index must be a positive number and smaller than 2^53-1'
425
+ );
426
+ });
427
+ }
428
+ if (txn.boxes !== undefined) {
429
+ if (!Array.isArray(txn.boxes))
430
+ throw Error('boxes must be an Array of BoxReference.');
431
+ txn.boxes = txn.boxes.slice();
432
+ txn.boxes.forEach((box) => {
433
+ if (
434
+ !Number.isSafeInteger(box.appIndex) ||
435
+ box.name.constructor !== Uint8Array
436
+ )
437
+ throw Error(
438
+ 'box app index must be a number and name must be an Uint8Array.'
439
+ );
440
+ });
441
+ }
442
+ if (
443
+ txn.assetMetadataHash !== undefined &&
444
+ txn.assetMetadataHash.length !== 0
445
+ ) {
446
+ if (typeof txn.assetMetadataHash === 'string') {
447
+ txn.assetMetadataHash = new Uint8Array(
448
+ Buffer.from(txn.assetMetadataHash)
449
+ );
450
+ }
451
+
452
+ if (
453
+ txn.assetMetadataHash.constructor !== Uint8Array ||
454
+ txn.assetMetadataHash.byteLength !== ASSET_METADATA_HASH_LENGTH
455
+ ) {
456
+ throw Error(
457
+ `assetMetadataHash must be a ${ASSET_METADATA_HASH_LENGTH} byte Uint8Array or string.`
458
+ );
459
+ }
460
+
461
+ if (txn.assetMetadataHash.every((value) => value === 0)) {
462
+ // if hash contains all 0s, omit it
463
+ txn.assetMetadataHash = undefined;
464
+ }
465
+ } else {
466
+ txn.assetMetadataHash = undefined;
467
+ }
468
+ if (txn.note !== undefined) {
469
+ if (txn.note.constructor !== Uint8Array)
470
+ throw Error('note must be a Uint8Array.');
471
+ } else {
472
+ txn.note = new Uint8Array(0);
473
+ }
474
+ if (txn.lease !== undefined) {
475
+ if (txn.lease.constructor !== Uint8Array)
476
+ throw Error('lease must be a Uint8Array.');
477
+ if (txn.lease.length !== ALGORAND_TRANSACTION_LEASE_LENGTH)
478
+ throw Error(
479
+ `lease must be of length ${ALGORAND_TRANSACTION_LEASE_LENGTH.toString()}.`
480
+ );
481
+ if (txn.lease.every((value) => value === 0)) {
482
+ // if lease contains all 0s, omit it
483
+ txn.lease = new Uint8Array(0);
484
+ }
485
+ } else {
486
+ txn.lease = new Uint8Array(0);
487
+ }
488
+ txn.voteKey = getKeyregKey(txn.voteKey, 'voteKey', KEYREG_VOTE_KEY_LENGTH);
489
+ txn.selectionKey = getKeyregKey(
490
+ txn.selectionKey,
491
+ 'selectionKey',
492
+ KEYREG_SELECTION_KEY_LENGTH
493
+ );
494
+ txn.stateProofKey = getKeyregKey(
495
+ txn.stateProofKey,
496
+ 'stateProofKey',
497
+ KEYREG_STATE_PROOF_KEY_LENGTH
498
+ );
499
+ // Checking non-participation key registration
500
+ if (
501
+ txn.nonParticipation &&
502
+ (txn.voteKey ||
503
+ txn.selectionKey ||
504
+ txn.voteFirst ||
505
+ txn.stateProofKey ||
506
+ txn.voteLast ||
507
+ txn.voteKeyDilution)
508
+ ) {
509
+ throw new Error(
510
+ 'nonParticipation is true but participation params are present.'
511
+ );
512
+ }
513
+ // Checking online key registration
514
+ if (
515
+ !txn.nonParticipation &&
516
+ (txn.voteKey ||
517
+ txn.selectionKey ||
518
+ txn.stateProofKey ||
519
+ txn.voteFirst ||
520
+ txn.voteLast ||
521
+ txn.voteKeyDilution) &&
522
+ !(
523
+ txn.voteKey &&
524
+ txn.selectionKey &&
525
+ txn.voteFirst &&
526
+ txn.voteLast &&
527
+ txn.voteKeyDilution
528
+ )
529
+ // stateProofKey not included here for backwards compatibility
530
+ ) {
531
+ throw new Error(
532
+ 'online key registration missing at least one of the following fields: ' +
533
+ 'voteKey, selectionKey, voteFirst, voteLast, voteKeyDilution'
534
+ );
535
+ }
536
+ // The last option is an offline key registration where all the fields
537
+ // nonParticipation, voteKey, selectionKey, voteFirst, voteLast, voteKeyDilution
538
+ // are all undefined/false
539
+
540
+ // Remove unwanted properties and store transaction on instance
541
+ delete ((txn as unknown) as AnyTransactionWithParams).suggestedParams;
542
+ Object.assign(this, utils.removeUndefinedProperties(txn));
543
+
544
+ // Modify Fee
545
+ if (!txn.flatFee) {
546
+ this.fee *= this.estimateSize();
547
+ // If suggested fee too small and will be rejected, set to min tx fee
548
+ if (this.fee < ALGORAND_MIN_TX_FEE) {
549
+ this.fee = ALGORAND_MIN_TX_FEE;
550
+ }
551
+ }
552
+
553
+ // say we are aware of groups
554
+ this.group = undefined;
555
+
556
+ // stpf fields
557
+ if (
558
+ txn.stateProofType !== undefined &&
559
+ (!Number.isSafeInteger(txn.stateProofType) || txn.stateProofType < 0)
560
+ )
561
+ throw Error(
562
+ 'State Proof type must be a positive number and smaller than 2^53-1'
563
+ );
564
+ if (txn.stateProofMessage !== undefined) {
565
+ if (txn.stateProofMessage.constructor !== Uint8Array)
566
+ throw Error('stateProofMessage must be a Uint8Array.');
567
+ } else {
568
+ txn.stateProofMessage = new Uint8Array(0);
569
+ }
570
+ if (txn.stateProof !== undefined) {
571
+ if (txn.stateProof.constructor !== Uint8Array)
572
+ throw Error('stateProof must be a Uint8Array.');
573
+ } else {
574
+ txn.stateProof = new Uint8Array(0);
575
+ }
576
+ }
577
+
578
+ // eslint-disable-next-line camelcase
579
+ get_obj_for_encoding() {
580
+ if (this.type === 'pay') {
581
+ const txn: EncodedTransaction = {
582
+ amt: this.amount,
583
+ fee: this.fee,
584
+ fv: this.firstRound,
585
+ lv: this.lastRound,
586
+ note: Buffer.from(this.note),
587
+ snd: Buffer.from(this.from.publicKey),
588
+ type: 'pay',
589
+ gen: this.genesisID,
590
+ gh: this.genesisHash,
591
+ lx: Buffer.from(this.lease),
592
+ grp: this.group,
593
+ };
594
+
595
+ // parse close address
596
+ if (
597
+ this.closeRemainderTo !== undefined &&
598
+ address.encodeAddress(this.closeRemainderTo.publicKey) !==
599
+ address.ALGORAND_ZERO_ADDRESS_STRING
600
+ ) {
601
+ txn.close = Buffer.from(this.closeRemainderTo.publicKey);
602
+ }
603
+ if (this.reKeyTo !== undefined) {
604
+ txn.rekey = Buffer.from(this.reKeyTo.publicKey);
605
+ }
606
+ // allowed zero values
607
+ if (this.to !== undefined) txn.rcv = Buffer.from(this.to.publicKey);
608
+ if (!txn.note.length) delete txn.note;
609
+ if (!txn.amt) delete txn.amt;
610
+ if (!txn.fee) delete txn.fee;
611
+ if (!txn.fv) delete txn.fv;
612
+ if (!txn.gen) delete txn.gen;
613
+ if (txn.grp === undefined) delete txn.grp;
614
+ if (!txn.lx.length) delete txn.lx;
615
+ if (!txn.rekey) delete txn.rekey;
616
+ return txn;
617
+ }
618
+ if (this.type === 'keyreg') {
619
+ const txn: EncodedTransaction = {
620
+ fee: this.fee,
621
+ fv: this.firstRound,
622
+ lv: this.lastRound,
623
+ note: Buffer.from(this.note),
624
+ snd: Buffer.from(this.from.publicKey),
625
+ type: this.type,
626
+ gen: this.genesisID,
627
+ gh: this.genesisHash,
628
+ lx: Buffer.from(this.lease),
629
+ grp: this.group,
630
+ votekey: this.voteKey,
631
+ selkey: this.selectionKey,
632
+ sprfkey: this.stateProofKey,
633
+ votefst: this.voteFirst,
634
+ votelst: this.voteLast,
635
+ votekd: this.voteKeyDilution,
636
+ };
637
+ // allowed zero values
638
+ if (!txn.note.length) delete txn.note;
639
+ if (!txn.lx.length) delete txn.lx;
640
+ if (!txn.fee) delete txn.fee;
641
+ if (!txn.fv) delete txn.fv;
642
+ if (!txn.gen) delete txn.gen;
643
+ if (txn.grp === undefined) delete txn.grp;
644
+ if (this.reKeyTo !== undefined) {
645
+ txn.rekey = Buffer.from(this.reKeyTo.publicKey);
646
+ }
647
+ if (this.nonParticipation) {
648
+ txn.nonpart = true;
649
+ }
650
+ if (!txn.selkey) delete txn.selkey;
651
+ if (!txn.votekey) delete txn.votekey;
652
+ if (!txn.sprfkey) delete txn.sprfkey;
653
+ if (!txn.votefst) delete txn.votefst;
654
+ if (!txn.votelst) delete txn.votelst;
655
+ if (!txn.votekd) delete txn.votekd;
656
+ return txn;
657
+ }
658
+ if (this.type === 'acfg') {
659
+ // asset creation, or asset reconfigure, or asset destruction
660
+ const txn: EncodedTransaction = {
661
+ fee: this.fee,
662
+ fv: this.firstRound,
663
+ lv: this.lastRound,
664
+ note: Buffer.from(this.note),
665
+ snd: Buffer.from(this.from.publicKey),
666
+ type: this.type,
667
+ gen: this.genesisID,
668
+ gh: this.genesisHash,
669
+ lx: Buffer.from(this.lease),
670
+ grp: this.group,
671
+ caid: this.assetIndex,
672
+ apar: {
673
+ t: this.assetTotal,
674
+ df: this.assetDefaultFrozen,
675
+ dc: this.assetDecimals,
676
+ },
677
+ };
678
+ if (this.assetManager !== undefined)
679
+ txn.apar.m = Buffer.from(this.assetManager.publicKey);
680
+ if (this.assetReserve !== undefined)
681
+ txn.apar.r = Buffer.from(this.assetReserve.publicKey);
682
+ if (this.assetFreeze !== undefined)
683
+ txn.apar.f = Buffer.from(this.assetFreeze.publicKey);
684
+ if (this.assetClawback !== undefined)
685
+ txn.apar.c = Buffer.from(this.assetClawback.publicKey);
686
+ if (this.assetName !== undefined) txn.apar.an = this.assetName;
687
+ if (this.assetUnitName !== undefined) txn.apar.un = this.assetUnitName;
688
+ if (this.assetURL !== undefined) txn.apar.au = this.assetURL;
689
+ if (this.assetMetadataHash !== undefined)
690
+ txn.apar.am = Buffer.from(this.assetMetadataHash);
691
+
692
+ // allowed zero values
693
+ if (!txn.note.length) delete txn.note;
694
+ if (!txn.lx.length) delete txn.lx;
695
+ if (!txn.amt) delete txn.amt;
696
+ if (!txn.fee) delete txn.fee;
697
+ if (!txn.fv) delete txn.fv;
698
+ if (!txn.gen) delete txn.gen;
699
+ if (this.reKeyTo !== undefined) {
700
+ txn.rekey = Buffer.from(this.reKeyTo.publicKey);
701
+ }
702
+
703
+ if (!txn.caid) delete txn.caid;
704
+ if (
705
+ !txn.apar.t &&
706
+ !txn.apar.un &&
707
+ !txn.apar.an &&
708
+ !txn.apar.df &&
709
+ !txn.apar.m &&
710
+ !txn.apar.r &&
711
+ !txn.apar.f &&
712
+ !txn.apar.c &&
713
+ !txn.apar.au &&
714
+ !txn.apar.am &&
715
+ !txn.apar.dc
716
+ ) {
717
+ delete txn.apar;
718
+ } else {
719
+ if (!txn.apar.t) delete txn.apar.t;
720
+ if (!txn.apar.dc) delete txn.apar.dc;
721
+ if (!txn.apar.un) delete txn.apar.un;
722
+ if (!txn.apar.an) delete txn.apar.an;
723
+ if (!txn.apar.df) delete txn.apar.df;
724
+ if (!txn.apar.m) delete txn.apar.m;
725
+ if (!txn.apar.r) delete txn.apar.r;
726
+ if (!txn.apar.f) delete txn.apar.f;
727
+ if (!txn.apar.c) delete txn.apar.c;
728
+ if (!txn.apar.au) delete txn.apar.au;
729
+ if (!txn.apar.am) delete txn.apar.am;
730
+ }
731
+ if (txn.grp === undefined) delete txn.grp;
732
+
733
+ return txn;
734
+ }
735
+ if (this.type === 'axfer') {
736
+ // asset transfer, acceptance, revocation, mint, or burn
737
+ const txn: EncodedTransaction = {
738
+ aamt: this.amount,
739
+ fee: this.fee,
740
+ fv: this.firstRound,
741
+ lv: this.lastRound,
742
+ note: Buffer.from(this.note),
743
+ snd: Buffer.from(this.from.publicKey),
744
+ arcv: Buffer.from(this.to.publicKey),
745
+ type: this.type,
746
+ gen: this.genesisID,
747
+ gh: this.genesisHash,
748
+ lx: Buffer.from(this.lease),
749
+ grp: this.group,
750
+ xaid: this.assetIndex,
751
+ };
752
+ if (this.closeRemainderTo !== undefined)
753
+ txn.aclose = Buffer.from(this.closeRemainderTo.publicKey);
754
+ if (this.assetRevocationTarget !== undefined)
755
+ txn.asnd = Buffer.from(this.assetRevocationTarget.publicKey);
756
+ // allowed zero values
757
+ if (!txn.note.length) delete txn.note;
758
+ if (!txn.lx.length) delete txn.lx;
759
+ if (!txn.aamt) delete txn.aamt;
760
+ if (!txn.amt) delete txn.amt;
761
+ if (!txn.fee) delete txn.fee;
762
+ if (!txn.fv) delete txn.fv;
763
+ if (!txn.gen) delete txn.gen;
764
+ if (txn.grp === undefined) delete txn.grp;
765
+ if (!txn.aclose) delete txn.aclose;
766
+ if (!txn.asnd) delete txn.asnd;
767
+ if (!txn.rekey) delete txn.rekey;
768
+ if (this.reKeyTo !== undefined) {
769
+ txn.rekey = Buffer.from(this.reKeyTo.publicKey);
770
+ }
771
+ return txn;
772
+ }
773
+ if (this.type === 'afrz') {
774
+ // asset freeze or unfreeze
775
+ const txn: EncodedTransaction = {
776
+ fee: this.fee,
777
+ fv: this.firstRound,
778
+ lv: this.lastRound,
779
+ note: Buffer.from(this.note),
780
+ snd: Buffer.from(this.from.publicKey),
781
+ type: this.type,
782
+ gen: this.genesisID,
783
+ gh: this.genesisHash,
784
+ lx: Buffer.from(this.lease),
785
+ grp: this.group,
786
+ faid: this.assetIndex,
787
+ afrz: this.freezeState,
788
+ };
789
+ if (this.freezeAccount !== undefined)
790
+ txn.fadd = Buffer.from(this.freezeAccount.publicKey);
791
+ // allowed zero values
792
+ if (!txn.note.length) delete txn.note;
793
+ if (!txn.lx.length) delete txn.lx;
794
+ if (!txn.amt) delete txn.amt;
795
+ if (!txn.fee) delete txn.fee;
796
+ if (!txn.fv) delete txn.fv;
797
+ if (!txn.gen) delete txn.gen;
798
+ if (!txn.afrz) delete txn.afrz;
799
+ if (txn.grp === undefined) delete txn.grp;
800
+ if (this.reKeyTo !== undefined) {
801
+ txn.rekey = Buffer.from(this.reKeyTo.publicKey);
802
+ }
803
+ return txn;
804
+ }
805
+ if (this.type === 'appl') {
806
+ // application call of some kind
807
+ const txn: EncodedTransaction = {
808
+ fee: this.fee,
809
+ fv: this.firstRound,
810
+ lv: this.lastRound,
811
+ note: Buffer.from(this.note),
812
+ snd: Buffer.from(this.from.publicKey),
813
+ type: this.type,
814
+ gen: this.genesisID,
815
+ gh: this.genesisHash,
816
+ lx: Buffer.from(this.lease),
817
+ grp: this.group,
818
+ apid: this.appIndex,
819
+ apan: this.appOnComplete,
820
+ apls: {
821
+ nui: this.appLocalInts,
822
+ nbs: this.appLocalByteSlices,
823
+ },
824
+ apgs: {
825
+ nui: this.appGlobalInts,
826
+ nbs: this.appGlobalByteSlices,
827
+ },
828
+ apfa: this.appForeignApps,
829
+ apas: this.appForeignAssets,
830
+ apep: this.extraPages,
831
+ apbx: translateBoxReferences(
832
+ this.boxes,
833
+ this.appForeignApps,
834
+ this.appIndex
835
+ ),
836
+ };
837
+ if (this.reKeyTo !== undefined) {
838
+ txn.rekey = Buffer.from(this.reKeyTo.publicKey);
839
+ }
840
+ if (this.appApprovalProgram !== undefined) {
841
+ txn.apap = Buffer.from(this.appApprovalProgram);
842
+ }
843
+ if (this.appClearProgram !== undefined) {
844
+ txn.apsu = Buffer.from(this.appClearProgram);
845
+ }
846
+ if (this.appArgs !== undefined) {
847
+ txn.apaa = this.appArgs.map((arg) => Buffer.from(arg));
848
+ }
849
+ if (this.appAccounts !== undefined) {
850
+ txn.apat = this.appAccounts.map((decodedAddress) =>
851
+ Buffer.from(decodedAddress.publicKey)
852
+ );
853
+ }
854
+ // allowed zero values
855
+ if (!txn.note.length) delete txn.note;
856
+ if (!txn.lx.length) delete txn.lx;
857
+ if (!txn.amt) delete txn.amt;
858
+ if (!txn.fee) delete txn.fee;
859
+ if (!txn.fv) delete txn.fv;
860
+ if (!txn.gen) delete txn.gen;
861
+ if (!txn.apid) delete txn.apid;
862
+ if (!txn.apls.nui) delete txn.apls.nui;
863
+ if (!txn.apls.nbs) delete txn.apls.nbs;
864
+ if (!txn.apls.nui && !txn.apls.nbs) delete txn.apls;
865
+ if (!txn.apgs.nui) delete txn.apgs.nui;
866
+ if (!txn.apgs.nbs) delete txn.apgs.nbs;
867
+ if (!txn.apaa || !txn.apaa.length) delete txn.apaa;
868
+ if (!txn.apgs.nui && !txn.apgs.nbs) delete txn.apgs;
869
+ if (!txn.apap) delete txn.apap;
870
+ if (!txn.apsu) delete txn.apsu;
871
+ if (!txn.apan) delete txn.apan;
872
+ if (!txn.apfa || !txn.apfa.length) delete txn.apfa;
873
+ if (!txn.apas || !txn.apas.length) delete txn.apas;
874
+ for (const box of txn.apbx) {
875
+ if (!box.i) delete box.i;
876
+ if (!box.n || !box.n.length) delete box.n;
877
+ }
878
+ if (!txn.apbx || !txn.apbx.length) delete txn.apbx;
879
+ if (!txn.apat || !txn.apat.length) delete txn.apat;
880
+ if (!txn.apep) delete txn.apep;
881
+ if (txn.grp === undefined) delete txn.grp;
882
+ return txn;
883
+ }
884
+ if (this.type === 'stpf') {
885
+ // state proof txn
886
+ const txn: EncodedTransaction = {
887
+ fee: this.fee,
888
+ fv: this.firstRound,
889
+ lv: this.lastRound,
890
+ note: Buffer.from(this.note),
891
+ snd: Buffer.from(this.from.publicKey),
892
+ type: this.type,
893
+ gen: this.genesisID,
894
+ gh: this.genesisHash,
895
+ lx: Buffer.from(this.lease),
896
+ sptype: this.stateProofType,
897
+ spmsg: Buffer.from(this.stateProofMessage),
898
+ sp: Buffer.from(this.stateProof),
899
+ };
900
+ // allowed zero values
901
+ if (!txn.sptype) delete txn.sptype;
902
+ if (!txn.note.length) delete txn.note;
903
+ if (!txn.lx.length) delete txn.lx;
904
+ if (!txn.amt) delete txn.amt;
905
+ if (!txn.fee) delete txn.fee;
906
+ if (!txn.fv) delete txn.fv;
907
+ if (!txn.gen) delete txn.gen;
908
+ if (!txn.apid) delete txn.apid;
909
+ if (!txn.apaa || !txn.apaa.length) delete txn.apaa;
910
+ if (!txn.apap) delete txn.apap;
911
+ if (!txn.apsu) delete txn.apsu;
912
+ if (!txn.apan) delete txn.apan;
913
+ if (!txn.apfa || !txn.apfa.length) delete txn.apfa;
914
+ if (!txn.apas || !txn.apas.length) delete txn.apas;
915
+ if (!txn.apat || !txn.apat.length) delete txn.apat;
916
+ if (!txn.apep) delete txn.apep;
917
+ if (txn.grp === undefined) delete txn.grp;
918
+ return txn;
919
+ }
920
+
921
+ return undefined;
922
+ }
923
+
924
+ // eslint-disable-next-line camelcase
925
+ static from_obj_for_encoding(txnForEnc: EncodedTransaction): Transaction {
926
+ const txn = Object.create(this.prototype) as Transaction;
927
+ txn.name = 'Transaction';
928
+ txn.tag = Buffer.from('TX');
929
+
930
+ txn.genesisID = txnForEnc.gen;
931
+ txn.genesisHash = Buffer.from(txnForEnc.gh);
932
+ if (!isTransactionType(txnForEnc.type)) {
933
+ throw new Error(`Unrecognized transaction type: ${txnForEnc.type}`);
934
+ }
935
+ txn.type = txnForEnc.type;
936
+ txn.fee = txnForEnc.fee;
937
+ txn.firstRound = txnForEnc.fv;
938
+ txn.lastRound = txnForEnc.lv;
939
+ txn.note = new Uint8Array(txnForEnc.note);
940
+ txn.lease = new Uint8Array(txnForEnc.lx);
941
+ txn.from = address.decodeAddress(
942
+ address.encodeAddress(new Uint8Array(txnForEnc.snd))
943
+ );
944
+ if (txnForEnc.grp !== undefined) txn.group = Buffer.from(txnForEnc.grp);
945
+ if (txnForEnc.rekey !== undefined)
946
+ txn.reKeyTo = address.decodeAddress(
947
+ address.encodeAddress(new Uint8Array(txnForEnc.rekey))
948
+ );
949
+
950
+ if (txnForEnc.type === 'pay') {
951
+ txn.amount = txnForEnc.amt;
952
+ txn.to = address.decodeAddress(
953
+ address.encodeAddress(new Uint8Array(txnForEnc.rcv))
954
+ );
955
+ if (txnForEnc.close !== undefined)
956
+ txn.closeRemainderTo = address.decodeAddress(
957
+ address.encodeAddress(txnForEnc.close)
958
+ );
959
+ } else if (txnForEnc.type === 'keyreg') {
960
+ if (txnForEnc.votekey !== undefined) {
961
+ txn.voteKey = Buffer.from(txnForEnc.votekey);
962
+ }
963
+ if (txnForEnc.selkey !== undefined) {
964
+ txn.selectionKey = Buffer.from(txnForEnc.selkey);
965
+ }
966
+ if (txnForEnc.sprfkey !== undefined) {
967
+ txn.stateProofKey = Buffer.from(txnForEnc.sprfkey);
968
+ }
969
+ if (txnForEnc.votekd !== undefined) {
970
+ txn.voteKeyDilution = txnForEnc.votekd;
971
+ }
972
+ if (txnForEnc.votefst !== undefined) {
973
+ txn.voteFirst = txnForEnc.votefst;
974
+ }
975
+ if (txnForEnc.votelst !== undefined) {
976
+ txn.voteLast = txnForEnc.votelst;
977
+ }
978
+ if (txnForEnc.nonpart !== undefined) {
979
+ txn.nonParticipation = txnForEnc.nonpart;
980
+ }
981
+ } else if (txnForEnc.type === 'acfg') {
982
+ // asset creation, or asset reconfigure, or asset destruction
983
+ if (txnForEnc.caid !== undefined) {
984
+ txn.assetIndex = txnForEnc.caid;
985
+ }
986
+ if (txnForEnc.apar !== undefined) {
987
+ txn.assetTotal = txnForEnc.apar.t;
988
+ txn.assetDefaultFrozen = txnForEnc.apar.df;
989
+ if (txnForEnc.apar.dc !== undefined)
990
+ txn.assetDecimals = txnForEnc.apar.dc;
991
+ if (txnForEnc.apar.m !== undefined)
992
+ txn.assetManager = address.decodeAddress(
993
+ address.encodeAddress(new Uint8Array(txnForEnc.apar.m))
994
+ );
995
+ if (txnForEnc.apar.r !== undefined)
996
+ txn.assetReserve = address.decodeAddress(
997
+ address.encodeAddress(new Uint8Array(txnForEnc.apar.r))
998
+ );
999
+ if (txnForEnc.apar.f !== undefined)
1000
+ txn.assetFreeze = address.decodeAddress(
1001
+ address.encodeAddress(new Uint8Array(txnForEnc.apar.f))
1002
+ );
1003
+ if (txnForEnc.apar.c !== undefined)
1004
+ txn.assetClawback = address.decodeAddress(
1005
+ address.encodeAddress(new Uint8Array(txnForEnc.apar.c))
1006
+ );
1007
+ if (txnForEnc.apar.un !== undefined)
1008
+ txn.assetUnitName = txnForEnc.apar.un;
1009
+ if (txnForEnc.apar.an !== undefined) txn.assetName = txnForEnc.apar.an;
1010
+ if (txnForEnc.apar.au !== undefined) txn.assetURL = txnForEnc.apar.au;
1011
+ if (txnForEnc.apar.am !== undefined)
1012
+ txn.assetMetadataHash = txnForEnc.apar.am;
1013
+ }
1014
+ } else if (txnForEnc.type === 'axfer') {
1015
+ // asset transfer, acceptance, revocation, mint, or burn
1016
+ if (txnForEnc.xaid !== undefined) {
1017
+ txn.assetIndex = txnForEnc.xaid;
1018
+ }
1019
+ if (txnForEnc.aamt !== undefined) txn.amount = txnForEnc.aamt;
1020
+ if (txnForEnc.aclose !== undefined) {
1021
+ txn.closeRemainderTo = address.decodeAddress(
1022
+ address.encodeAddress(new Uint8Array(txnForEnc.aclose))
1023
+ );
1024
+ }
1025
+ if (txnForEnc.asnd !== undefined) {
1026
+ txn.assetRevocationTarget = address.decodeAddress(
1027
+ address.encodeAddress(new Uint8Array(txnForEnc.asnd))
1028
+ );
1029
+ }
1030
+ txn.to = address.decodeAddress(
1031
+ address.encodeAddress(new Uint8Array(txnForEnc.arcv))
1032
+ );
1033
+ } else if (txnForEnc.type === 'afrz') {
1034
+ if (txnForEnc.afrz !== undefined) {
1035
+ txn.freezeState = txnForEnc.afrz;
1036
+ }
1037
+ if (txnForEnc.faid !== undefined) {
1038
+ txn.assetIndex = txnForEnc.faid;
1039
+ }
1040
+ txn.freezeAccount = address.decodeAddress(
1041
+ address.encodeAddress(new Uint8Array(txnForEnc.fadd))
1042
+ );
1043
+ } else if (txnForEnc.type === 'appl') {
1044
+ if (txnForEnc.apid !== undefined) {
1045
+ txn.appIndex = txnForEnc.apid;
1046
+ }
1047
+ if (txnForEnc.apan !== undefined) {
1048
+ txn.appOnComplete = txnForEnc.apan;
1049
+ }
1050
+ if (txnForEnc.apls !== undefined) {
1051
+ if (txnForEnc.apls.nui !== undefined)
1052
+ txn.appLocalInts = txnForEnc.apls.nui;
1053
+ if (txnForEnc.apls.nbs !== undefined)
1054
+ txn.appLocalByteSlices = txnForEnc.apls.nbs;
1055
+ }
1056
+ if (txnForEnc.apgs !== undefined) {
1057
+ if (txnForEnc.apgs.nui !== undefined)
1058
+ txn.appGlobalInts = txnForEnc.apgs.nui;
1059
+ if (txnForEnc.apgs.nbs !== undefined)
1060
+ txn.appGlobalByteSlices = txnForEnc.apgs.nbs;
1061
+ }
1062
+ if (txnForEnc.apep !== undefined) {
1063
+ txn.extraPages = txnForEnc.apep;
1064
+ }
1065
+ if (txnForEnc.apap !== undefined) {
1066
+ txn.appApprovalProgram = new Uint8Array(txnForEnc.apap);
1067
+ }
1068
+ if (txnForEnc.apsu !== undefined) {
1069
+ txn.appClearProgram = new Uint8Array(txnForEnc.apsu);
1070
+ }
1071
+ if (txnForEnc.apaa !== undefined) {
1072
+ txn.appArgs = txnForEnc.apaa.map((arg) => new Uint8Array(arg));
1073
+ }
1074
+ if (txnForEnc.apat !== undefined) {
1075
+ txn.appAccounts = txnForEnc.apat.map((addressBytes) =>
1076
+ address.decodeAddress(
1077
+ address.encodeAddress(new Uint8Array(addressBytes))
1078
+ )
1079
+ );
1080
+ }
1081
+ if (txnForEnc.apfa !== undefined) {
1082
+ txn.appForeignApps = txnForEnc.apfa;
1083
+ }
1084
+ if (txnForEnc.apas !== undefined) {
1085
+ txn.appForeignAssets = txnForEnc.apas;
1086
+ }
1087
+ if (txnForEnc.apbx !== undefined) {
1088
+ txn.boxes = txnForEnc.apbx.map((box) => ({
1089
+ // We return 0 for the app ID so that it's guaranteed translateBoxReferences will
1090
+ // translate the app index back to 0. If we instead returned the called app ID,
1091
+ // translateBoxReferences would translate the app index to a nonzero value if the called
1092
+ // app is also in the foreign app array.
1093
+ appIndex: box.i ? txn.appForeignApps[box.i - 1] : 0,
1094
+ name: box.n,
1095
+ }));
1096
+ }
1097
+ } else if (txnForEnc.type === 'stpf') {
1098
+ if (txnForEnc.sptype !== undefined) {
1099
+ txn.stateProofType = txnForEnc.sptype;
1100
+ }
1101
+ if (txnForEnc.sp !== undefined) {
1102
+ txn.stateProof = txnForEnc.sp;
1103
+ }
1104
+ if (txnForEnc.spmsg !== undefined) {
1105
+ txn.stateProofMessage = txnForEnc.spmsg;
1106
+ }
1107
+ }
1108
+ return txn;
1109
+ }
1110
+
1111
+ estimateSize() {
1112
+ return this.toByte().length + NUM_ADDL_BYTES_AFTER_SIGNING;
1113
+ }
1114
+
1115
+ bytesToSign() {
1116
+ const encodedMsg = this.toByte();
1117
+ return Buffer.from(utils.concatArrays(this.tag, encodedMsg));
1118
+ }
1119
+
1120
+ toByte() {
1121
+ return encoding.encode(this.get_obj_for_encoding());
1122
+ }
1123
+
1124
+ // returns the raw signature
1125
+ rawSignTxn(sk: Uint8Array) {
1126
+ const toBeSigned = this.bytesToSign();
1127
+ const sig = nacl.sign(toBeSigned, sk);
1128
+ return Buffer.from(sig);
1129
+ }
1130
+
1131
+ signTxn(sk: Uint8Array) {
1132
+ // construct signed message
1133
+ const sTxn: EncodedSignedTransaction = {
1134
+ sig: this.rawSignTxn(sk),
1135
+ txn: this.get_obj_for_encoding(),
1136
+ };
1137
+ // add AuthAddr if signing with a different key than From indicates
1138
+ const keypair = nacl.keyPairFromSecretKey(sk);
1139
+ const pubKeyFromSk = keypair.publicKey;
1140
+ if (
1141
+ address.encodeAddress(pubKeyFromSk) !==
1142
+ address.encodeAddress(this.from.publicKey)
1143
+ ) {
1144
+ sTxn.sgnr = Buffer.from(pubKeyFromSk);
1145
+ }
1146
+ return new Uint8Array(encoding.encode(sTxn));
1147
+ }
1148
+
1149
+ attachSignature(signerAddr: string, signature: Uint8Array) {
1150
+ if (!nacl.isValidSignatureLength(signature.length)) {
1151
+ throw new Error('Invalid signature length');
1152
+ }
1153
+ const sTxn: EncodedSignedTransaction = {
1154
+ sig: Buffer.from(signature),
1155
+ txn: this.get_obj_for_encoding(),
1156
+ };
1157
+ // add AuthAddr if signing with a different key than From indicates
1158
+ if (signerAddr !== address.encodeAddress(this.from.publicKey)) {
1159
+ const signerPublicKey = address.decodeAddress(signerAddr).publicKey;
1160
+ sTxn.sgnr = Buffer.from(signerPublicKey);
1161
+ }
1162
+ return new Uint8Array(encoding.encode(sTxn));
1163
+ }
1164
+
1165
+ rawTxID() {
1166
+ const enMsg = this.toByte();
1167
+ const gh = Buffer.from(utils.concatArrays(this.tag, enMsg));
1168
+ return Buffer.from(nacl.genericHash(gh));
1169
+ }
1170
+
1171
+ txID() {
1172
+ const hash = this.rawTxID();
1173
+ return base32.encode(hash).slice(0, ALGORAND_TRANSACTION_LENGTH);
1174
+ }
1175
+
1176
+ // add a lease to a transaction not yet having
1177
+ // supply feePerByte to increment fee accordingly
1178
+ addLease(lease: Uint8Array, feePerByte = 0) {
1179
+ let mutableLease: Uint8Array;
1180
+
1181
+ if (lease !== undefined) {
1182
+ if (lease.constructor !== Uint8Array)
1183
+ throw Error('lease must be a Uint8Array.');
1184
+ if (lease.length !== ALGORAND_TRANSACTION_LEASE_LENGTH)
1185
+ throw Error(
1186
+ `lease must be of length ${ALGORAND_TRANSACTION_LEASE_LENGTH.toString()}.`
1187
+ );
1188
+
1189
+ mutableLease = new Uint8Array(lease);
1190
+ } else {
1191
+ mutableLease = new Uint8Array(0);
1192
+ }
1193
+ this.lease = mutableLease;
1194
+ if (feePerByte !== 0) {
1195
+ this.fee +=
1196
+ (ALGORAND_TRANSACTION_LEASE_LABEL_LENGTH +
1197
+ ALGORAND_TRANSACTION_LEASE_LENGTH) *
1198
+ feePerByte;
1199
+ }
1200
+ }
1201
+
1202
+ // add the rekey-to field to a transaction not yet having it
1203
+ // supply feePerByte to increment fee accordingly
1204
+ addRekey(reKeyTo: string, feePerByte = 0) {
1205
+ if (reKeyTo !== undefined) {
1206
+ this.reKeyTo = address.decodeAddress(reKeyTo);
1207
+ }
1208
+ if (feePerByte !== 0) {
1209
+ this.fee +=
1210
+ (ALGORAND_TRANSACTION_REKEY_LABEL_LENGTH +
1211
+ ALGORAND_TRANSACTION_ADDRESS_LENGTH) *
1212
+ feePerByte;
1213
+ }
1214
+ }
1215
+
1216
+ // build display dict for prettyPrint and toString
1217
+ // eslint-disable-next-line no-underscore-dangle
1218
+ _getDictForDisplay() {
1219
+ const forPrinting: TransactionStorageStructure & Record<string, any> = {
1220
+ ...this,
1221
+ };
1222
+ forPrinting.tag = forPrinting.tag.toString();
1223
+ forPrinting.from = address.encodeAddress(
1224
+ (forPrinting.from as Address).publicKey
1225
+ );
1226
+ if (forPrinting.to !== undefined)
1227
+ forPrinting.to = address.encodeAddress(
1228
+ (forPrinting.to as Address).publicKey
1229
+ );
1230
+ // things that need fixing:
1231
+ if (forPrinting.freezeAccount !== undefined)
1232
+ forPrinting.freezeAccount = address.encodeAddress(
1233
+ (forPrinting.freezeAccount as Address).publicKey
1234
+ );
1235
+ if (forPrinting.closeRemainderTo !== undefined)
1236
+ forPrinting.closeRemainderTo = address.encodeAddress(
1237
+ (forPrinting.closeRemainderTo as Address).publicKey
1238
+ );
1239
+ if (forPrinting.assetManager !== undefined)
1240
+ forPrinting.assetManager = address.encodeAddress(
1241
+ (forPrinting.assetManager as Address).publicKey
1242
+ );
1243
+ if (forPrinting.assetReserve !== undefined)
1244
+ forPrinting.assetReserve = address.encodeAddress(
1245
+ (forPrinting.assetReserve as Address).publicKey
1246
+ );
1247
+ if (forPrinting.assetFreeze !== undefined)
1248
+ forPrinting.assetFreeze = address.encodeAddress(
1249
+ (forPrinting.assetFreeze as Address).publicKey
1250
+ );
1251
+ if (forPrinting.assetClawback !== undefined)
1252
+ forPrinting.assetClawback = address.encodeAddress(
1253
+ (forPrinting.assetClawback as Address).publicKey
1254
+ );
1255
+ if (forPrinting.assetRevocationTarget !== undefined)
1256
+ forPrinting.assetRevocationTarget = address.encodeAddress(
1257
+ (forPrinting.assetRevocationTarget as Address).publicKey
1258
+ );
1259
+ if (forPrinting.reKeyTo !== undefined)
1260
+ forPrinting.reKeyTo = address.encodeAddress(
1261
+ (forPrinting.reKeyTo as Address).publicKey
1262
+ );
1263
+ forPrinting.genesisHash = forPrinting.genesisHash.toString('base64');
1264
+ return forPrinting;
1265
+ }
1266
+
1267
+ // pretty print the transaction to console
1268
+ prettyPrint() {
1269
+ // eslint-disable-next-line no-underscore-dangle,no-console
1270
+ console.log(this._getDictForDisplay());
1271
+ }
1272
+
1273
+ // get string representation
1274
+ toString() {
1275
+ // eslint-disable-next-line no-underscore-dangle
1276
+ return JSON.stringify(this._getDictForDisplay());
1277
+ }
1278
+ }
1279
+
1280
+ /**
1281
+ * encodeUnsignedTransaction takes a completed txnBuilder.Transaction object, such as from the makeFoo
1282
+ * family of transactions, and converts it to a Buffer
1283
+ * @param transactionObject - the completed Transaction object
1284
+ */
1285
+ export function encodeUnsignedTransaction(transactionObject: Transaction) {
1286
+ const objToEncode = transactionObject.get_obj_for_encoding();
1287
+ return encoding.encode(objToEncode);
1288
+ }
1289
+
1290
+ /**
1291
+ * decodeUnsignedTransaction takes a Buffer (as if from encodeUnsignedTransaction) and converts it to a txnBuilder.Transaction object
1292
+ * @param transactionBuffer - the Uint8Array containing a transaction
1293
+ */
1294
+ export function decodeUnsignedTransaction(
1295
+ transactionBuffer: ArrayLike<number>
1296
+ ) {
1297
+ const partlyDecodedObject = encoding.decode(
1298
+ transactionBuffer
1299
+ ) as EncodedTransaction;
1300
+ return Transaction.from_obj_for_encoding(partlyDecodedObject);
1301
+ }
1302
+
1303
+ /**
1304
+ * Object representing a transaction with a signature
1305
+ */
1306
+ export interface SignedTransaction {
1307
+ /**
1308
+ * Transaction signature
1309
+ */
1310
+ sig?: Buffer;
1311
+
1312
+ /**
1313
+ * The transaction that was signed
1314
+ */
1315
+ txn: Transaction;
1316
+
1317
+ /**
1318
+ * Multisig structure
1319
+ */
1320
+ msig?: EncodedMultisig;
1321
+
1322
+ /**
1323
+ * Logic signature
1324
+ */
1325
+ lsig?: EncodedLogicSig;
1326
+
1327
+ /**
1328
+ * The signer, if signing with a different key than the Transaction type `from` property indicates
1329
+ */
1330
+ sgnr?: Buffer;
1331
+ }
1332
+
1333
+ /**
1334
+ * decodeSignedTransaction takes a Buffer (from transaction.signTxn) and converts it to an object
1335
+ * containing the Transaction (txn), the signature (sig), and the auth-addr field if applicable (sgnr)
1336
+ * @param transactionBuffer - the Uint8Array containing a transaction
1337
+ * @returns containing a Transaction, the signature, and possibly an auth-addr field
1338
+ */
1339
+ export function decodeSignedTransaction(
1340
+ transactionBuffer: Uint8Array
1341
+ ): SignedTransaction {
1342
+ const stxnDecoded = encoding.decode(
1343
+ transactionBuffer
1344
+ ) as EncodedSignedTransaction;
1345
+ const stxn: SignedTransaction = {
1346
+ ...stxnDecoded,
1347
+ txn: Transaction.from_obj_for_encoding(stxnDecoded.txn),
1348
+ };
1349
+ return stxn;
1350
+ }
1351
+
1352
+ /**
1353
+ * Either a valid transaction object or an instance of the Transaction class
1354
+ */
1355
+ export type TransactionLike = AnyTransaction | Transaction;
1356
+
1357
+ export function instantiateTxnIfNeeded(transactionLike: TransactionLike) {
1358
+ return transactionLike instanceof Transaction
1359
+ ? transactionLike
1360
+ : new Transaction(transactionLike);
1361
+ }
1362
+
1363
+ export default Transaction;