algosdk 2.9.0 → 3.0.0-beta.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 (805) hide show
  1. package/README.md +8 -4
  2. package/dist/browser/algosdk.min.js +1 -1
  3. package/dist/browser/algosdk.min.js.LICENSE.txt +0 -9
  4. package/dist/browser/algosdk.min.js.map +1 -1
  5. package/dist/cjs/abi/abi_type.js +34 -27
  6. package/dist/cjs/abi/abi_type.js.map +1 -1
  7. package/dist/cjs/abi/contract.js +3 -3
  8. package/dist/cjs/abi/contract.js.map +1 -1
  9. package/dist/cjs/abi/index.js +6 -6
  10. package/dist/cjs/abi/index.js.map +1 -1
  11. package/dist/cjs/abi/interface.js +3 -3
  12. package/dist/cjs/abi/interface.js.map +1 -1
  13. package/dist/cjs/abi/method.js +10 -10
  14. package/dist/cjs/abi/method.js.map +1 -1
  15. package/dist/cjs/abi/reference.js +1 -1
  16. package/dist/cjs/abi/reference.js.map +1 -1
  17. package/dist/cjs/abi/transaction.js +2 -2
  18. package/dist/cjs/abi/transaction.js.map +1 -1
  19. package/dist/cjs/account.js +4 -4
  20. package/dist/cjs/account.js.map +1 -1
  21. package/dist/cjs/boxStorage.js +17 -17
  22. package/dist/cjs/boxStorage.js.map +1 -1
  23. package/dist/cjs/client/client.js +77 -41
  24. package/dist/cjs/client/client.js.map +1 -1
  25. package/dist/cjs/client/index.js +29 -0
  26. package/dist/cjs/client/index.js.map +1 -0
  27. package/dist/cjs/client/kmd.js +69 -86
  28. package/dist/cjs/client/kmd.js.map +1 -1
  29. package/dist/cjs/client/urlTokenBaseHTTPClient.js +16 -11
  30. package/dist/cjs/client/urlTokenBaseHTTPClient.js.map +1 -1
  31. package/dist/cjs/client/v2/algod/accountApplicationInformation.js +11 -7
  32. package/dist/cjs/client/v2/algod/accountApplicationInformation.js.map +1 -1
  33. package/dist/cjs/client/v2/algod/accountAssetInformation.js +11 -7
  34. package/dist/cjs/client/v2/algod/accountAssetInformation.js.map +1 -1
  35. package/dist/cjs/client/v2/algod/accountInformation.js +11 -6
  36. package/dist/cjs/client/v2/algod/accountInformation.js.map +1 -1
  37. package/dist/cjs/client/v2/algod/algod.js +85 -83
  38. package/dist/cjs/client/v2/algod/algod.js.map +1 -1
  39. package/dist/cjs/client/v2/algod/block.js +6 -33
  40. package/dist/cjs/client/v2/algod/block.js.map +1 -1
  41. package/dist/cjs/client/v2/algod/compile.js +17 -11
  42. package/dist/cjs/client/v2/algod/compile.js.map +1 -1
  43. package/dist/cjs/client/v2/algod/disassemble.js +17 -11
  44. package/dist/cjs/client/v2/algod/disassemble.js.map +1 -1
  45. package/dist/cjs/client/v2/algod/dryrun.js +18 -37
  46. package/dist/cjs/client/v2/algod/dryrun.js.map +1 -1
  47. package/dist/cjs/client/v2/algod/genesis.js +6 -2
  48. package/dist/cjs/client/v2/algod/genesis.js.map +1 -1
  49. package/dist/cjs/client/v2/algod/getApplicationBoxByName.js +10 -10
  50. package/dist/cjs/client/v2/algod/getApplicationBoxByName.js.map +1 -1
  51. package/dist/cjs/client/v2/algod/getApplicationBoxes.js +8 -8
  52. package/dist/cjs/client/v2/algod/getApplicationBoxes.js.map +1 -1
  53. package/dist/cjs/client/v2/algod/getApplicationByID.js +10 -5
  54. package/dist/cjs/client/v2/algod/getApplicationByID.js.map +1 -1
  55. package/dist/cjs/client/v2/algod/getAssetByID.js +10 -5
  56. package/dist/cjs/client/v2/algod/getAssetByID.js.map +1 -1
  57. package/dist/cjs/client/v2/algod/getBlockHash.js +10 -6
  58. package/dist/cjs/client/v2/algod/getBlockHash.js.map +1 -1
  59. package/dist/cjs/client/v2/algod/getBlockOffsetTimestamp.js +6 -5
  60. package/dist/cjs/client/v2/algod/getBlockOffsetTimestamp.js.map +1 -1
  61. package/dist/cjs/client/v2/algod/getBlockTxids.js +10 -4
  62. package/dist/cjs/client/v2/algod/getBlockTxids.js.map +1 -1
  63. package/dist/cjs/client/v2/algod/getLedgerStateDelta.js +11 -6
  64. package/dist/cjs/client/v2/algod/getLedgerStateDelta.js.map +1 -1
  65. package/dist/cjs/client/v2/algod/getLedgerStateDeltaForTransactionGroup.js +11 -6
  66. package/dist/cjs/client/v2/algod/getLedgerStateDeltaForTransactionGroup.js.map +1 -1
  67. package/dist/cjs/client/v2/algod/getSyncRound.js +6 -5
  68. package/dist/cjs/client/v2/algod/getSyncRound.js.map +1 -1
  69. package/dist/cjs/client/v2/algod/getTransactionGroupLedgerStateDeltasForRound.js +9 -9
  70. package/dist/cjs/client/v2/algod/getTransactionGroupLedgerStateDeltasForRound.js.map +1 -1
  71. package/dist/cjs/client/v2/algod/getTransactionProof.js +10 -6
  72. package/dist/cjs/client/v2/algod/getTransactionProof.js.map +1 -1
  73. package/dist/cjs/client/v2/algod/healthCheck.js +4 -9
  74. package/dist/cjs/client/v2/algod/healthCheck.js.map +1 -1
  75. package/dist/cjs/{types → client/v2/algod}/index.js +5 -3
  76. package/dist/cjs/client/v2/algod/index.js.map +1 -0
  77. package/dist/cjs/client/v2/algod/lightBlockHeaderProof.js +10 -5
  78. package/dist/cjs/client/v2/algod/lightBlockHeaderProof.js.map +1 -1
  79. package/dist/cjs/client/v2/algod/models/types.js +3701 -1828
  80. package/dist/cjs/client/v2/algod/models/types.js.map +1 -1
  81. package/dist/cjs/client/v2/algod/pendingTransactionInformation.js +6 -32
  82. package/dist/cjs/client/v2/algod/pendingTransactionInformation.js.map +1 -1
  83. package/dist/cjs/client/v2/algod/pendingTransactions.js +6 -31
  84. package/dist/cjs/client/v2/algod/pendingTransactions.js.map +1 -1
  85. package/dist/cjs/client/v2/algod/pendingTransactionsByAddress.js +7 -33
  86. package/dist/cjs/client/v2/algod/pendingTransactionsByAddress.js.map +1 -1
  87. package/dist/cjs/client/v2/algod/ready.js +4 -2
  88. package/dist/cjs/client/v2/algod/ready.js.map +1 -1
  89. package/dist/cjs/client/v2/algod/sendRawTransaction.js +17 -8
  90. package/dist/cjs/client/v2/algod/sendRawTransaction.js.map +1 -1
  91. package/dist/cjs/client/v2/algod/setBlockOffsetTimestamp.js +13 -8
  92. package/dist/cjs/client/v2/algod/setBlockOffsetTimestamp.js.map +1 -1
  93. package/dist/cjs/client/v2/algod/setSyncRound.js +13 -8
  94. package/dist/cjs/client/v2/algod/setSyncRound.js.map +1 -1
  95. package/dist/cjs/client/v2/algod/simulateTransaction.js +15 -35
  96. package/dist/cjs/client/v2/algod/simulateTransaction.js.map +1 -1
  97. package/dist/cjs/client/v2/algod/stateproof.js +10 -5
  98. package/dist/cjs/client/v2/algod/stateproof.js.map +1 -1
  99. package/dist/cjs/client/v2/algod/status.js +8 -2
  100. package/dist/cjs/client/v2/algod/status.js.map +1 -1
  101. package/dist/cjs/client/v2/algod/statusAfterBlock.js +10 -5
  102. package/dist/cjs/client/v2/algod/statusAfterBlock.js.map +1 -1
  103. package/dist/cjs/client/v2/algod/suggestedParams.js +13 -9
  104. package/dist/cjs/client/v2/algod/suggestedParams.js.map +1 -1
  105. package/dist/cjs/client/v2/algod/supply.js +8 -2
  106. package/dist/cjs/client/v2/algod/supply.js.map +1 -1
  107. package/dist/cjs/client/v2/algod/unsetSyncRound.js +11 -5
  108. package/dist/cjs/client/v2/algod/unsetSyncRound.js.map +1 -1
  109. package/dist/cjs/client/v2/algod/versions.js +8 -2
  110. package/dist/cjs/client/v2/algod/versions.js.map +1 -1
  111. package/dist/cjs/client/v2/indexer/index.js +22 -0
  112. package/dist/cjs/client/v2/indexer/index.js.map +1 -0
  113. package/dist/cjs/client/v2/indexer/indexer.js +44 -43
  114. package/dist/cjs/client/v2/indexer/indexer.js.map +1 -1
  115. package/dist/cjs/client/v2/indexer/lookupAccountAppLocalStates.js +11 -6
  116. package/dist/cjs/client/v2/indexer/lookupAccountAppLocalStates.js.map +1 -1
  117. package/dist/cjs/client/v2/indexer/lookupAccountAssets.js +11 -6
  118. package/dist/cjs/client/v2/indexer/lookupAccountAssets.js.map +1 -1
  119. package/dist/cjs/client/v2/indexer/lookupAccountByID.js +11 -6
  120. package/dist/cjs/client/v2/indexer/lookupAccountByID.js.map +1 -1
  121. package/dist/cjs/client/v2/indexer/lookupAccountCreatedApplications.js +11 -6
  122. package/dist/cjs/client/v2/indexer/lookupAccountCreatedApplications.js.map +1 -1
  123. package/dist/cjs/client/v2/indexer/lookupAccountCreatedAssets.js +11 -6
  124. package/dist/cjs/client/v2/indexer/lookupAccountCreatedAssets.js.map +1 -1
  125. package/dist/cjs/client/v2/indexer/lookupAccountTransactions.js +19 -12
  126. package/dist/cjs/client/v2/indexer/lookupAccountTransactions.js.map +1 -1
  127. package/dist/cjs/client/v2/indexer/lookupApplicationBoxByIDandName.js +10 -10
  128. package/dist/cjs/client/v2/indexer/lookupApplicationBoxByIDandName.js.map +1 -1
  129. package/dist/cjs/client/v2/indexer/lookupApplicationLogs.js +10 -5
  130. package/dist/cjs/client/v2/indexer/lookupApplicationLogs.js.map +1 -1
  131. package/dist/cjs/client/v2/indexer/lookupApplications.js +10 -5
  132. package/dist/cjs/client/v2/indexer/lookupApplications.js.map +1 -1
  133. package/dist/cjs/client/v2/indexer/lookupAssetBalances.js +10 -5
  134. package/dist/cjs/client/v2/indexer/lookupAssetBalances.js.map +1 -1
  135. package/dist/cjs/client/v2/indexer/lookupAssetByID.js +10 -5
  136. package/dist/cjs/client/v2/indexer/lookupAssetByID.js.map +1 -1
  137. package/dist/cjs/client/v2/indexer/lookupAssetTransactions.js +19 -12
  138. package/dist/cjs/client/v2/indexer/lookupAssetTransactions.js.map +1 -1
  139. package/dist/cjs/client/v2/indexer/lookupBlock.js +10 -5
  140. package/dist/cjs/client/v2/indexer/lookupBlock.js.map +1 -1
  141. package/dist/cjs/client/v2/indexer/lookupTransactionByID.js +10 -5
  142. package/dist/cjs/client/v2/indexer/lookupTransactionByID.js.map +1 -1
  143. package/dist/cjs/client/v2/indexer/makeHealthCheck.js +8 -2
  144. package/dist/cjs/client/v2/indexer/makeHealthCheck.js.map +1 -1
  145. package/dist/cjs/client/v2/indexer/models/types.js +3591 -1651
  146. package/dist/cjs/client/v2/indexer/models/types.js.map +1 -1
  147. package/dist/cjs/client/v2/indexer/searchAccounts.js +9 -3
  148. package/dist/cjs/client/v2/indexer/searchAccounts.js.map +1 -1
  149. package/dist/cjs/client/v2/indexer/searchForApplicationBoxes.js +8 -8
  150. package/dist/cjs/client/v2/indexer/searchForApplicationBoxes.js.map +1 -1
  151. package/dist/cjs/client/v2/indexer/searchForApplications.js +9 -3
  152. package/dist/cjs/client/v2/indexer/searchForApplications.js.map +1 -1
  153. package/dist/cjs/client/v2/indexer/searchForAssets.js +9 -3
  154. package/dist/cjs/client/v2/indexer/searchForAssets.js.map +1 -1
  155. package/dist/cjs/client/v2/indexer/searchForTransactions.js +17 -9
  156. package/dist/cjs/client/v2/indexer/searchForTransactions.js.map +1 -1
  157. package/dist/cjs/client/v2/jsonrequest.js +22 -54
  158. package/dist/cjs/client/v2/jsonrequest.js.map +1 -1
  159. package/dist/cjs/client/v2/serviceClient.js +5 -25
  160. package/dist/cjs/client/v2/serviceClient.js.map +1 -1
  161. package/dist/cjs/client/v2/untypedmodel.js +22 -0
  162. package/dist/cjs/client/v2/untypedmodel.js.map +1 -0
  163. package/dist/cjs/composer.js +64 -58
  164. package/dist/cjs/composer.js.map +1 -1
  165. package/dist/cjs/convert.js.map +1 -1
  166. package/dist/cjs/dryrun.js +107 -203
  167. package/dist/cjs/dryrun.js.map +1 -1
  168. package/dist/cjs/encoding/address.js +88 -104
  169. package/dist/cjs/encoding/address.js.map +1 -1
  170. package/dist/cjs/encoding/bigint.js +2 -3
  171. package/dist/cjs/encoding/bigint.js.map +1 -1
  172. package/dist/cjs/encoding/binarydata.js +82 -0
  173. package/dist/cjs/encoding/binarydata.js.map +1 -0
  174. package/dist/cjs/encoding/encoding.js +353 -38
  175. package/dist/cjs/encoding/encoding.js.map +1 -1
  176. package/dist/cjs/encoding/schema/address.js +41 -0
  177. package/dist/cjs/encoding/schema/address.js.map +1 -0
  178. package/dist/cjs/encoding/schema/array.js +43 -0
  179. package/dist/cjs/encoding/schema/array.js.map +1 -0
  180. package/dist/cjs/encoding/schema/binarystring.js +55 -0
  181. package/dist/cjs/encoding/schema/binarystring.js.map +1 -0
  182. package/dist/cjs/encoding/schema/blockhash.js +67 -0
  183. package/dist/cjs/encoding/schema/blockhash.js.map +1 -0
  184. package/dist/cjs/encoding/schema/boolean.js +42 -0
  185. package/dist/cjs/encoding/schema/boolean.js.map +1 -0
  186. package/dist/cjs/encoding/schema/bytearray.js +98 -0
  187. package/dist/cjs/encoding/schema/bytearray.js.map +1 -0
  188. package/dist/cjs/encoding/schema/index.js +34 -0
  189. package/dist/cjs/encoding/schema/index.js.map +1 -0
  190. package/dist/cjs/encoding/schema/map.js +528 -0
  191. package/dist/cjs/encoding/schema/map.js.map +1 -0
  192. package/dist/cjs/encoding/schema/optional.js +58 -0
  193. package/dist/cjs/encoding/schema/optional.js.map +1 -0
  194. package/dist/cjs/encoding/schema/string.js +43 -0
  195. package/dist/cjs/encoding/schema/string.js.map +1 -0
  196. package/dist/cjs/encoding/schema/uint64.js +36 -0
  197. package/dist/cjs/encoding/schema/uint64.js.map +1 -0
  198. package/dist/cjs/encoding/schema/untyped.js +33 -0
  199. package/dist/cjs/encoding/schema/untyped.js.map +1 -0
  200. package/dist/cjs/encoding/uint64.js +2 -2
  201. package/dist/cjs/encoding/uint64.js.map +1 -1
  202. package/dist/cjs/group.js +23 -60
  203. package/dist/cjs/group.js.map +1 -1
  204. package/dist/cjs/index.js +2 -2
  205. package/dist/cjs/index.js.map +1 -1
  206. package/dist/cjs/logic/sourcemap.js +56 -25
  207. package/dist/cjs/logic/sourcemap.js.map +1 -1
  208. package/dist/cjs/logicsig.js +113 -146
  209. package/dist/cjs/logicsig.js.map +1 -1
  210. package/dist/cjs/main.js +113 -122
  211. package/dist/cjs/main.js.map +1 -1
  212. package/dist/cjs/makeTxn.js +310 -570
  213. package/dist/cjs/makeTxn.js.map +1 -1
  214. package/dist/cjs/mnemonic/mnemonic.js +8 -8
  215. package/dist/cjs/mnemonic/mnemonic.js.map +1 -1
  216. package/dist/cjs/multisig.js +60 -312
  217. package/dist/cjs/multisig.js.map +1 -1
  218. package/dist/cjs/multisigSigning.js +285 -0
  219. package/dist/cjs/multisigSigning.js.map +1 -0
  220. package/dist/cjs/nacl/naclWrappers.js +2 -2
  221. package/dist/cjs/nacl/naclWrappers.js.map +1 -1
  222. package/dist/cjs/signedTransaction.js +106 -0
  223. package/dist/cjs/signedTransaction.js.map +1 -0
  224. package/dist/cjs/signer.js +7 -7
  225. package/dist/cjs/signer.js.map +1 -1
  226. package/dist/cjs/signing.js +105 -0
  227. package/dist/cjs/signing.js.map +1 -0
  228. package/dist/cjs/stateproof.js +421 -0
  229. package/dist/cjs/stateproof.js.map +1 -0
  230. package/dist/cjs/transaction.js +724 -1009
  231. package/dist/cjs/transaction.js.map +1 -1
  232. package/dist/cjs/types/block.js +813 -0
  233. package/dist/cjs/types/block.js.map +1 -0
  234. package/dist/cjs/types/intDecoding.js +1 -1
  235. package/dist/cjs/types/intDecoding.js.map +1 -1
  236. package/dist/cjs/types/statedelta.js +1155 -0
  237. package/dist/cjs/types/statedelta.js.map +1 -0
  238. package/dist/cjs/types/transactions/base.js +22 -5
  239. package/dist/cjs/types/transactions/base.js.map +1 -1
  240. package/dist/cjs/types/transactions/encoded.js +67 -0
  241. package/dist/cjs/types/transactions/encoded.js.map +1 -1
  242. package/dist/cjs/types/transactions/index.js +2 -5
  243. package/dist/cjs/types/transactions/index.js.map +1 -1
  244. package/dist/cjs/utils/utils.js +86 -22
  245. package/dist/cjs/utils/utils.js.map +1 -1
  246. package/dist/cjs/wait.js +4 -4
  247. package/dist/cjs/wait.js.map +1 -1
  248. package/dist/esm/abi/abi_type.js +22 -15
  249. package/dist/esm/abi/abi_type.js.map +1 -1
  250. package/dist/esm/abi/contract.js +1 -1
  251. package/dist/esm/abi/contract.js.map +1 -1
  252. package/dist/esm/abi/index.js +6 -6
  253. package/dist/esm/abi/index.js.map +1 -1
  254. package/dist/esm/abi/interface.js +1 -1
  255. package/dist/esm/abi/interface.js.map +1 -1
  256. package/dist/esm/abi/method.js +4 -4
  257. package/dist/esm/abi/method.js.map +1 -1
  258. package/dist/esm/abi/transaction.js +1 -1
  259. package/dist/esm/abi/transaction.js.map +1 -1
  260. package/dist/esm/account.js +4 -4
  261. package/dist/esm/account.js.map +1 -1
  262. package/dist/esm/boxStorage.js +15 -15
  263. package/dist/esm/boxStorage.js.map +1 -1
  264. package/dist/esm/client/client.js +74 -40
  265. package/dist/esm/client/client.js.map +1 -1
  266. package/dist/esm/client/index.js +7 -0
  267. package/dist/esm/client/index.js.map +1 -0
  268. package/dist/esm/client/kmd.js +67 -62
  269. package/dist/esm/client/kmd.js.map +1 -1
  270. package/dist/esm/client/urlTokenBaseHTTPClient.js +16 -11
  271. package/dist/esm/client/urlTokenBaseHTTPClient.js.map +1 -1
  272. package/dist/esm/client/v2/algod/accountApplicationInformation.js +10 -6
  273. package/dist/esm/client/v2/algod/accountApplicationInformation.js.map +1 -1
  274. package/dist/esm/client/v2/algod/accountAssetInformation.js +10 -6
  275. package/dist/esm/client/v2/algod/accountAssetInformation.js.map +1 -1
  276. package/dist/esm/client/v2/algod/accountInformation.js +10 -5
  277. package/dist/esm/client/v2/algod/accountInformation.js.map +1 -1
  278. package/dist/esm/client/v2/algod/algod.js +71 -70
  279. package/dist/esm/client/v2/algod/algod.js.map +1 -1
  280. package/dist/esm/client/v2/algod/block.js +5 -9
  281. package/dist/esm/client/v2/algod/block.js.map +1 -1
  282. package/dist/esm/client/v2/algod/compile.js +16 -10
  283. package/dist/esm/client/v2/algod/compile.js.map +1 -1
  284. package/dist/esm/client/v2/algod/disassemble.js +16 -10
  285. package/dist/esm/client/v2/algod/disassemble.js.map +1 -1
  286. package/dist/esm/client/v2/algod/dryrun.js +16 -12
  287. package/dist/esm/client/v2/algod/dryrun.js.map +1 -1
  288. package/dist/esm/client/v2/algod/genesis.js +5 -1
  289. package/dist/esm/client/v2/algod/genesis.js.map +1 -1
  290. package/dist/esm/client/v2/algod/getApplicationBoxByName.js +9 -9
  291. package/dist/esm/client/v2/algod/getApplicationBoxByName.js.map +1 -1
  292. package/dist/esm/client/v2/algod/getApplicationBoxes.js +7 -7
  293. package/dist/esm/client/v2/algod/getApplicationBoxes.js.map +1 -1
  294. package/dist/esm/client/v2/algod/getApplicationByID.js +9 -4
  295. package/dist/esm/client/v2/algod/getApplicationByID.js.map +1 -1
  296. package/dist/esm/client/v2/algod/getAssetByID.js +9 -4
  297. package/dist/esm/client/v2/algod/getAssetByID.js.map +1 -1
  298. package/dist/esm/client/v2/algod/getBlockHash.js +9 -5
  299. package/dist/esm/client/v2/algod/getBlockHash.js.map +1 -1
  300. package/dist/esm/client/v2/algod/getBlockOffsetTimestamp.js +5 -4
  301. package/dist/esm/client/v2/algod/getBlockOffsetTimestamp.js.map +1 -1
  302. package/dist/esm/client/v2/algod/getBlockTxids.js +9 -3
  303. package/dist/esm/client/v2/algod/getBlockTxids.js.map +1 -1
  304. package/dist/esm/client/v2/algod/getLedgerStateDelta.js +10 -5
  305. package/dist/esm/client/v2/algod/getLedgerStateDelta.js.map +1 -1
  306. package/dist/esm/client/v2/algod/getLedgerStateDeltaForTransactionGroup.js +10 -5
  307. package/dist/esm/client/v2/algod/getLedgerStateDeltaForTransactionGroup.js.map +1 -1
  308. package/dist/esm/client/v2/algod/getSyncRound.js +5 -4
  309. package/dist/esm/client/v2/algod/getSyncRound.js.map +1 -1
  310. package/dist/esm/client/v2/algod/getTransactionGroupLedgerStateDeltasForRound.js +8 -8
  311. package/dist/esm/client/v2/algod/getTransactionGroupLedgerStateDeltasForRound.js.map +1 -1
  312. package/dist/esm/client/v2/algod/getTransactionProof.js +9 -5
  313. package/dist/esm/client/v2/algod/getTransactionProof.js.map +1 -1
  314. package/dist/esm/client/v2/algod/healthCheck.js +3 -8
  315. package/dist/esm/client/v2/algod/healthCheck.js.map +1 -1
  316. package/dist/esm/client/v2/algod/index.js +4 -0
  317. package/dist/esm/client/v2/algod/index.js.map +1 -0
  318. package/dist/esm/client/v2/algod/lightBlockHeaderProof.js +9 -4
  319. package/dist/esm/client/v2/algod/lightBlockHeaderProof.js.map +1 -1
  320. package/dist/esm/client/v2/algod/models/types.js +3701 -1825
  321. package/dist/esm/client/v2/algod/models/types.js.map +1 -1
  322. package/dist/esm/client/v2/algod/pendingTransactionInformation.js +5 -8
  323. package/dist/esm/client/v2/algod/pendingTransactionInformation.js.map +1 -1
  324. package/dist/esm/client/v2/algod/pendingTransactions.js +5 -7
  325. package/dist/esm/client/v2/algod/pendingTransactions.js.map +1 -1
  326. package/dist/esm/client/v2/algod/pendingTransactionsByAddress.js +6 -9
  327. package/dist/esm/client/v2/algod/pendingTransactionsByAddress.js.map +1 -1
  328. package/dist/esm/client/v2/algod/ready.js +3 -1
  329. package/dist/esm/client/v2/algod/ready.js.map +1 -1
  330. package/dist/esm/client/v2/algod/sendRawTransaction.js +15 -6
  331. package/dist/esm/client/v2/algod/sendRawTransaction.js.map +1 -1
  332. package/dist/esm/client/v2/algod/setBlockOffsetTimestamp.js +12 -7
  333. package/dist/esm/client/v2/algod/setBlockOffsetTimestamp.js.map +1 -1
  334. package/dist/esm/client/v2/algod/setSyncRound.js +12 -7
  335. package/dist/esm/client/v2/algod/setSyncRound.js.map +1 -1
  336. package/dist/esm/client/v2/algod/simulateTransaction.js +14 -11
  337. package/dist/esm/client/v2/algod/simulateTransaction.js.map +1 -1
  338. package/dist/esm/client/v2/algod/stateproof.js +9 -4
  339. package/dist/esm/client/v2/algod/stateproof.js.map +1 -1
  340. package/dist/esm/client/v2/algod/status.js +7 -1
  341. package/dist/esm/client/v2/algod/status.js.map +1 -1
  342. package/dist/esm/client/v2/algod/statusAfterBlock.js +9 -4
  343. package/dist/esm/client/v2/algod/statusAfterBlock.js.map +1 -1
  344. package/dist/esm/client/v2/algod/suggestedParams.js +12 -8
  345. package/dist/esm/client/v2/algod/suggestedParams.js.map +1 -1
  346. package/dist/esm/client/v2/algod/supply.js +7 -1
  347. package/dist/esm/client/v2/algod/supply.js.map +1 -1
  348. package/dist/esm/client/v2/algod/unsetSyncRound.js +10 -4
  349. package/dist/esm/client/v2/algod/unsetSyncRound.js.map +1 -1
  350. package/dist/esm/client/v2/algod/versions.js +7 -1
  351. package/dist/esm/client/v2/algod/versions.js.map +1 -1
  352. package/dist/esm/client/v2/indexer/index.js +4 -0
  353. package/dist/esm/client/v2/indexer/index.js.map +1 -0
  354. package/dist/esm/client/v2/indexer/indexer.js +42 -42
  355. package/dist/esm/client/v2/indexer/indexer.js.map +1 -1
  356. package/dist/esm/client/v2/indexer/lookupAccountAppLocalStates.js +10 -5
  357. package/dist/esm/client/v2/indexer/lookupAccountAppLocalStates.js.map +1 -1
  358. package/dist/esm/client/v2/indexer/lookupAccountAssets.js +10 -5
  359. package/dist/esm/client/v2/indexer/lookupAccountAssets.js.map +1 -1
  360. package/dist/esm/client/v2/indexer/lookupAccountByID.js +10 -5
  361. package/dist/esm/client/v2/indexer/lookupAccountByID.js.map +1 -1
  362. package/dist/esm/client/v2/indexer/lookupAccountCreatedApplications.js +10 -5
  363. package/dist/esm/client/v2/indexer/lookupAccountCreatedApplications.js.map +1 -1
  364. package/dist/esm/client/v2/indexer/lookupAccountCreatedAssets.js +10 -5
  365. package/dist/esm/client/v2/indexer/lookupAccountCreatedAssets.js.map +1 -1
  366. package/dist/esm/client/v2/indexer/lookupAccountTransactions.js +18 -11
  367. package/dist/esm/client/v2/indexer/lookupAccountTransactions.js.map +1 -1
  368. package/dist/esm/client/v2/indexer/lookupApplicationBoxByIDandName.js +9 -9
  369. package/dist/esm/client/v2/indexer/lookupApplicationBoxByIDandName.js.map +1 -1
  370. package/dist/esm/client/v2/indexer/lookupApplicationLogs.js +9 -4
  371. package/dist/esm/client/v2/indexer/lookupApplicationLogs.js.map +1 -1
  372. package/dist/esm/client/v2/indexer/lookupApplications.js +9 -4
  373. package/dist/esm/client/v2/indexer/lookupApplications.js.map +1 -1
  374. package/dist/esm/client/v2/indexer/lookupAssetBalances.js +9 -4
  375. package/dist/esm/client/v2/indexer/lookupAssetBalances.js.map +1 -1
  376. package/dist/esm/client/v2/indexer/lookupAssetByID.js +9 -4
  377. package/dist/esm/client/v2/indexer/lookupAssetByID.js.map +1 -1
  378. package/dist/esm/client/v2/indexer/lookupAssetTransactions.js +17 -10
  379. package/dist/esm/client/v2/indexer/lookupAssetTransactions.js.map +1 -1
  380. package/dist/esm/client/v2/indexer/lookupBlock.js +9 -4
  381. package/dist/esm/client/v2/indexer/lookupBlock.js.map +1 -1
  382. package/dist/esm/client/v2/indexer/lookupTransactionByID.js +9 -4
  383. package/dist/esm/client/v2/indexer/lookupTransactionByID.js.map +1 -1
  384. package/dist/esm/client/v2/indexer/makeHealthCheck.js +7 -1
  385. package/dist/esm/client/v2/indexer/makeHealthCheck.js.map +1 -1
  386. package/dist/esm/client/v2/indexer/models/types.js +3591 -1648
  387. package/dist/esm/client/v2/indexer/models/types.js.map +1 -1
  388. package/dist/esm/client/v2/indexer/searchAccounts.js +8 -2
  389. package/dist/esm/client/v2/indexer/searchAccounts.js.map +1 -1
  390. package/dist/esm/client/v2/indexer/searchForApplicationBoxes.js +7 -7
  391. package/dist/esm/client/v2/indexer/searchForApplicationBoxes.js.map +1 -1
  392. package/dist/esm/client/v2/indexer/searchForApplications.js +8 -2
  393. package/dist/esm/client/v2/indexer/searchForApplications.js.map +1 -1
  394. package/dist/esm/client/v2/indexer/searchForAssets.js +8 -2
  395. package/dist/esm/client/v2/indexer/searchForAssets.js.map +1 -1
  396. package/dist/esm/client/v2/indexer/searchForTransactions.js +15 -7
  397. package/dist/esm/client/v2/indexer/searchForTransactions.js.map +1 -1
  398. package/dist/esm/client/v2/jsonrequest.js +22 -51
  399. package/dist/esm/client/v2/jsonrequest.js.map +1 -1
  400. package/dist/esm/client/v2/serviceClient.js +3 -20
  401. package/dist/esm/client/v2/serviceClient.js.map +1 -1
  402. package/dist/esm/client/v2/untypedmodel.js +18 -0
  403. package/dist/esm/client/v2/untypedmodel.js.map +1 -0
  404. package/dist/esm/composer.js +43 -37
  405. package/dist/esm/composer.js.map +1 -1
  406. package/dist/esm/convert.js.map +1 -1
  407. package/dist/esm/dryrun.js +98 -195
  408. package/dist/esm/dryrun.js.map +1 -1
  409. package/dist/esm/encoding/address.js +85 -100
  410. package/dist/esm/encoding/address.js.map +1 -1
  411. package/dist/esm/encoding/bigint.js +2 -3
  412. package/dist/esm/encoding/bigint.js.map +1 -1
  413. package/dist/esm/encoding/binarydata.js +73 -0
  414. package/dist/esm/encoding/binarydata.js.map +1 -0
  415. package/dist/esm/encoding/encoding.js +337 -12
  416. package/dist/esm/encoding/encoding.js.map +1 -1
  417. package/dist/esm/encoding/schema/address.js +37 -0
  418. package/dist/esm/encoding/schema/address.js.map +1 -0
  419. package/dist/esm/encoding/schema/array.js +39 -0
  420. package/dist/esm/encoding/schema/array.js.map +1 -0
  421. package/dist/esm/encoding/schema/binarystring.js +51 -0
  422. package/dist/esm/encoding/schema/binarystring.js.map +1 -0
  423. package/dist/esm/encoding/schema/blockhash.js +60 -0
  424. package/dist/esm/encoding/schema/blockhash.js.map +1 -0
  425. package/dist/esm/encoding/schema/boolean.js +38 -0
  426. package/dist/esm/encoding/schema/boolean.js.map +1 -0
  427. package/dist/esm/encoding/schema/bytearray.js +93 -0
  428. package/dist/esm/encoding/schema/bytearray.js.map +1 -0
  429. package/dist/esm/encoding/schema/index.js +12 -0
  430. package/dist/esm/encoding/schema/index.js.map +1 -0
  431. package/dist/esm/encoding/schema/map.js +517 -0
  432. package/dist/esm/encoding/schema/map.js.map +1 -0
  433. package/dist/esm/encoding/schema/optional.js +54 -0
  434. package/dist/esm/encoding/schema/optional.js.map +1 -0
  435. package/dist/esm/encoding/schema/string.js +39 -0
  436. package/dist/esm/encoding/schema/string.js.map +1 -0
  437. package/dist/esm/encoding/schema/uint64.js +32 -0
  438. package/dist/esm/encoding/schema/uint64.js.map +1 -0
  439. package/dist/esm/encoding/schema/untyped.js +29 -0
  440. package/dist/esm/encoding/schema/untyped.js.map +1 -0
  441. package/dist/esm/encoding/uint64.js +1 -1
  442. package/dist/esm/encoding/uint64.js.map +1 -1
  443. package/dist/esm/group.js +22 -58
  444. package/dist/esm/group.js.map +1 -1
  445. package/dist/esm/index.js +2 -2
  446. package/dist/esm/index.js.map +1 -1
  447. package/dist/esm/logic/sourcemap.js +54 -23
  448. package/dist/esm/logic/sourcemap.js.map +1 -1
  449. package/dist/esm/logicsig.js +110 -141
  450. package/dist/esm/logicsig.js.map +1 -1
  451. package/dist/esm/main.js +47 -76
  452. package/dist/esm/main.js.map +1 -1
  453. package/dist/esm/makeTxn.js +304 -529
  454. package/dist/esm/makeTxn.js.map +1 -1
  455. package/dist/esm/mnemonic/mnemonic.js +5 -5
  456. package/dist/esm/mnemonic/mnemonic.js.map +1 -1
  457. package/dist/esm/multisig.js +56 -305
  458. package/dist/esm/multisig.js.map +1 -1
  459. package/dist/esm/multisigSigning.js +254 -0
  460. package/dist/esm/multisigSigning.js.map +1 -0
  461. package/dist/esm/nacl/naclWrappers.js +1 -1
  462. package/dist/esm/nacl/naclWrappers.js.map +1 -1
  463. package/dist/esm/package.json +1 -0
  464. package/dist/esm/signedTransaction.js +100 -0
  465. package/dist/esm/signedTransaction.js.map +1 -0
  466. package/dist/esm/signer.js +3 -3
  467. package/dist/esm/signer.js.map +1 -1
  468. package/dist/esm/signing.js +77 -0
  469. package/dist/esm/signing.js.map +1 -0
  470. package/dist/esm/stateproof.js +408 -0
  471. package/dist/esm/stateproof.js.map +1 -0
  472. package/dist/esm/transaction.js +723 -1005
  473. package/dist/esm/transaction.js.map +1 -1
  474. package/dist/esm/types/block.js +797 -0
  475. package/dist/esm/types/block.js.map +1 -0
  476. package/dist/esm/types/intDecoding.js +1 -1
  477. package/dist/esm/types/intDecoding.js.map +1 -1
  478. package/dist/esm/types/statedelta.js +1129 -0
  479. package/dist/esm/types/statedelta.js.map +1 -0
  480. package/dist/esm/types/transactions/base.js +18 -2
  481. package/dist/esm/types/transactions/base.js.map +1 -1
  482. package/dist/esm/types/transactions/encoded.js +62 -1
  483. package/dist/esm/types/transactions/encoded.js.map +1 -1
  484. package/dist/esm/types/transactions/index.js +2 -3
  485. package/dist/esm/types/transactions/index.js.map +1 -1
  486. package/dist/esm/utils/utils.js +80 -21
  487. package/dist/esm/utils/utils.js.map +1 -1
  488. package/dist/esm/wait.js +4 -4
  489. package/dist/esm/wait.js.map +1 -1
  490. package/dist/types/abi/abi_type.d.ts +1 -1
  491. package/dist/types/abi/contract.d.ts +2 -2
  492. package/dist/types/abi/index.d.ts +6 -6
  493. package/dist/types/abi/interface.d.ts +1 -1
  494. package/dist/types/abi/method.d.ts +6 -6
  495. package/dist/types/abi/transaction.d.ts +1 -1
  496. package/dist/types/account.d.ts +1 -1
  497. package/dist/types/boxStorage.d.ts +4 -5
  498. package/dist/types/client/baseHTTPClient.d.ts +9 -6
  499. package/dist/types/client/client.d.ts +59 -18
  500. package/dist/types/client/index.d.ts +5 -0
  501. package/dist/types/client/kmd.d.ts +12 -10
  502. package/dist/types/client/urlTokenBaseHTTPClient.d.ts +8 -5
  503. package/dist/types/client/v2/algod/accountApplicationInformation.d.ts +8 -6
  504. package/dist/types/client/v2/algod/accountAssetInformation.d.ts +8 -6
  505. package/dist/types/client/v2/algod/accountInformation.d.ts +7 -5
  506. package/dist/types/client/v2/algod/algod.d.ts +53 -52
  507. package/dist/types/client/v2/algod/block.d.ts +5 -4
  508. package/dist/types/client/v2/algod/compile.d.ts +7 -9
  509. package/dist/types/client/v2/algod/disassemble.d.ts +7 -9
  510. package/dist/types/client/v2/algod/dryrun.d.ts +7 -9
  511. package/dist/types/client/v2/algod/genesis.d.ts +4 -2
  512. package/dist/types/client/v2/algod/getApplicationBoxByName.d.ts +6 -7
  513. package/dist/types/client/v2/algod/getApplicationBoxes.d.ts +6 -7
  514. package/dist/types/client/v2/algod/getApplicationByID.d.ts +6 -5
  515. package/dist/types/client/v2/algod/getAssetByID.d.ts +6 -5
  516. package/dist/types/client/v2/algod/getBlockHash.d.ts +7 -6
  517. package/dist/types/client/v2/algod/getBlockOffsetTimestamp.d.ts +5 -4
  518. package/dist/types/client/v2/algod/getBlockTxids.d.ts +6 -5
  519. package/dist/types/client/v2/algod/getLedgerStateDelta.d.ts +6 -5
  520. package/dist/types/client/v2/algod/getLedgerStateDeltaForTransactionGroup.d.ts +6 -5
  521. package/dist/types/client/v2/algod/getSyncRound.d.ts +5 -4
  522. package/dist/types/client/v2/algod/getTransactionGroupLedgerStateDeltasForRound.d.ts +6 -7
  523. package/dist/types/client/v2/algod/getTransactionProof.d.ts +6 -5
  524. package/dist/types/client/v2/algod/healthCheck.d.ts +4 -3
  525. package/dist/types/client/v2/algod/index.d.ts +2 -0
  526. package/dist/types/client/v2/algod/lightBlockHeaderProof.d.ts +6 -5
  527. package/dist/types/client/v2/algod/models/types.d.ts +604 -317
  528. package/dist/types/client/v2/algod/pendingTransactionInformation.d.ts +5 -4
  529. package/dist/types/client/v2/algod/pendingTransactions.d.ts +5 -4
  530. package/dist/types/client/v2/algod/pendingTransactionsByAddress.d.ts +7 -5
  531. package/dist/types/client/v2/algod/ready.d.ts +4 -2
  532. package/dist/types/client/v2/algod/sendRawTransaction.d.ts +7 -5
  533. package/dist/types/client/v2/algod/setBlockOffsetTimestamp.d.ts +6 -6
  534. package/dist/types/client/v2/algod/setSyncRound.d.ts +6 -6
  535. package/dist/types/client/v2/algod/simulateTransaction.d.ts +7 -7
  536. package/dist/types/client/v2/algod/stateproof.d.ts +6 -5
  537. package/dist/types/client/v2/algod/status.d.ts +5 -2
  538. package/dist/types/client/v2/algod/statusAfterBlock.d.ts +6 -5
  539. package/dist/types/client/v2/algod/suggestedParams.d.ts +25 -4
  540. package/dist/types/client/v2/algod/supply.d.ts +5 -2
  541. package/dist/types/client/v2/algod/unsetSyncRound.d.ts +5 -3
  542. package/dist/types/client/v2/algod/versions.d.ts +5 -2
  543. package/dist/types/client/v2/indexer/index.d.ts +2 -0
  544. package/dist/types/client/v2/indexer/indexer.d.ts +31 -30
  545. package/dist/types/client/v2/indexer/lookupAccountAppLocalStates.d.ts +7 -5
  546. package/dist/types/client/v2/indexer/lookupAccountAssets.d.ts +7 -5
  547. package/dist/types/client/v2/indexer/lookupAccountByID.d.ts +7 -5
  548. package/dist/types/client/v2/indexer/lookupAccountCreatedApplications.d.ts +7 -5
  549. package/dist/types/client/v2/indexer/lookupAccountCreatedAssets.d.ts +7 -5
  550. package/dist/types/client/v2/indexer/lookupAccountTransactions.d.ts +11 -9
  551. package/dist/types/client/v2/indexer/lookupApplicationBoxByIDandName.d.ts +6 -7
  552. package/dist/types/client/v2/indexer/lookupApplicationLogs.d.ts +6 -5
  553. package/dist/types/client/v2/indexer/lookupApplications.d.ts +6 -5
  554. package/dist/types/client/v2/indexer/lookupAssetBalances.d.ts +6 -5
  555. package/dist/types/client/v2/indexer/lookupAssetByID.d.ts +6 -5
  556. package/dist/types/client/v2/indexer/lookupAssetTransactions.d.ts +12 -10
  557. package/dist/types/client/v2/indexer/lookupBlock.d.ts +6 -5
  558. package/dist/types/client/v2/indexer/lookupTransactionByID.d.ts +6 -5
  559. package/dist/types/client/v2/indexer/makeHealthCheck.d.ts +5 -2
  560. package/dist/types/client/v2/indexer/models/types.d.ts +513 -267
  561. package/dist/types/client/v2/indexer/searchAccounts.d.ts +7 -3
  562. package/dist/types/client/v2/indexer/searchForApplicationBoxes.d.ts +6 -7
  563. package/dist/types/client/v2/indexer/searchForApplications.d.ts +7 -3
  564. package/dist/types/client/v2/indexer/searchForAssets.d.ts +7 -3
  565. package/dist/types/client/v2/indexer/searchForTransactions.d.ts +11 -7
  566. package/dist/types/client/v2/jsonrequest.d.ts +20 -33
  567. package/dist/types/client/v2/serviceClient.d.ts +4 -18
  568. package/dist/types/client/v2/untypedmodel.d.ts +10 -0
  569. package/dist/types/composer.d.ts +18 -17
  570. package/dist/types/dryrun.d.ts +8 -80
  571. package/dist/types/encoding/address.d.ts +40 -31
  572. package/dist/types/encoding/binarydata.d.ts +30 -0
  573. package/dist/types/encoding/encoding.d.ts +219 -7
  574. package/dist/types/encoding/schema/address.d.ts +10 -0
  575. package/dist/types/encoding/schema/array.d.ts +11 -0
  576. package/dist/types/encoding/schema/binarystring.d.ts +18 -0
  577. package/dist/types/encoding/schema/blockhash.d.ts +16 -0
  578. package/dist/types/encoding/schema/boolean.d.ts +10 -0
  579. package/dist/types/encoding/schema/bytearray.d.ts +19 -0
  580. package/dist/types/encoding/schema/index.d.ts +11 -0
  581. package/dist/types/encoding/schema/map.d.ts +125 -0
  582. package/dist/types/encoding/schema/optional.d.ts +24 -0
  583. package/dist/types/encoding/schema/string.d.ts +9 -0
  584. package/dist/types/encoding/schema/uint64.d.ts +9 -0
  585. package/dist/types/encoding/schema/untyped.d.ts +9 -0
  586. package/dist/types/encoding/uint64.d.ts +1 -0
  587. package/dist/types/group.d.ts +6 -25
  588. package/dist/types/index.d.ts +2 -2
  589. package/dist/types/logic/sourcemap.d.ts +39 -13
  590. package/dist/types/logicsig.d.ts +27 -57
  591. package/dist/types/main.d.ts +43 -54
  592. package/dist/types/makeTxn.d.ts +117 -404
  593. package/dist/types/mnemonic/mnemonic.d.ts +1 -1
  594. package/dist/types/multisig.d.ts +28 -99
  595. package/dist/types/multisigSigning.d.ts +72 -0
  596. package/dist/types/signedTransaction.d.ts +55 -0
  597. package/dist/types/signer.d.ts +5 -5
  598. package/dist/types/signing.d.ts +29 -0
  599. package/dist/types/stateproof.d.ts +194 -0
  600. package/dist/types/transaction.d.ts +103 -182
  601. package/dist/types/types/account.d.ts +2 -1
  602. package/dist/types/types/block.d.ts +407 -0
  603. package/dist/types/types/intDecoding.d.ts +1 -1
  604. package/dist/types/types/statedelta.d.ts +575 -0
  605. package/dist/types/types/transactions/base.d.ts +206 -118
  606. package/dist/types/types/transactions/encoded.d.ts +7 -301
  607. package/dist/types/types/transactions/index.d.ts +2 -15
  608. package/dist/types/types/utils.d.ts +7 -7
  609. package/dist/types/utils/utils.d.ts +21 -16
  610. package/dist/types/wait.d.ts +3 -2
  611. package/package.json +48 -20
  612. package/src/abi/abi_type.ts +28 -18
  613. package/src/abi/contract.ts +2 -2
  614. package/src/abi/index.ts +6 -6
  615. package/src/abi/interface.ts +1 -1
  616. package/src/abi/method.ts +11 -9
  617. package/src/abi/transaction.ts +2 -2
  618. package/src/account.ts +5 -5
  619. package/src/boxStorage.ts +25 -23
  620. package/src/client/baseHTTPClient.ts +12 -6
  621. package/src/client/client.ts +147 -75
  622. package/src/client/index.ts +6 -0
  623. package/src/client/kmd.ts +79 -72
  624. package/src/client/urlTokenBaseHTTPClient.ts +25 -14
  625. package/src/client/v2/algod/accountApplicationInformation.ts +16 -9
  626. package/src/client/v2/algod/accountAssetInformation.ts +16 -9
  627. package/src/client/v2/algod/accountInformation.ts +16 -11
  628. package/src/client/v2/algod/algod.ts +83 -105
  629. package/src/client/v2/algod/block.ts +7 -11
  630. package/src/client/v2/algod/compile.ts +27 -19
  631. package/src/client/v2/algod/disassemble.ts +27 -19
  632. package/src/client/v2/algod/dryrun.ts +23 -19
  633. package/src/client/v2/algod/genesis.ts +8 -2
  634. package/src/client/v2/algod/getApplicationBoxByName.ts +10 -15
  635. package/src/client/v2/algod/getApplicationBoxes.ts +12 -13
  636. package/src/client/v2/algod/getApplicationByID.ts +15 -7
  637. package/src/client/v2/algod/getAssetByID.ts +15 -7
  638. package/src/client/v2/algod/getBlockHash.ts +13 -9
  639. package/src/client/v2/algod/getBlockOffsetTimestamp.ts +7 -8
  640. package/src/client/v2/algod/getBlockTxids.ts +12 -6
  641. package/src/client/v2/algod/getLedgerStateDelta.ts +16 -8
  642. package/src/client/v2/algod/getLedgerStateDeltaForTransactionGroup.ts +16 -8
  643. package/src/client/v2/algod/getSyncRound.ts +7 -8
  644. package/src/client/v2/algod/getTransactionGroupLedgerStateDeltasForRound.ts +15 -15
  645. package/src/client/v2/algod/getTransactionProof.ts +11 -9
  646. package/src/client/v2/algod/healthCheck.ts +5 -9
  647. package/src/client/v2/algod/index.ts +3 -0
  648. package/src/client/v2/algod/lightBlockHeaderProof.ts +15 -8
  649. package/src/client/v2/algod/models/types.ts +4699 -2263
  650. package/src/client/v2/algod/pendingTransactionInformation.ts +11 -11
  651. package/src/client/v2/algod/pendingTransactions.ts +7 -9
  652. package/src/client/v2/algod/pendingTransactionsByAddress.ts +12 -11
  653. package/src/client/v2/algod/ready.ts +6 -2
  654. package/src/client/v2/algod/sendRawTransaction.ts +24 -13
  655. package/src/client/v2/algod/setBlockOffsetTimestamp.ts +21 -11
  656. package/src/client/v2/algod/setSyncRound.ts +21 -11
  657. package/src/client/v2/algod/simulateTransaction.ts +22 -23
  658. package/src/client/v2/algod/stateproof.ts +15 -8
  659. package/src/client/v2/algod/status.ts +10 -2
  660. package/src/client/v2/algod/statusAfterBlock.ts +15 -7
  661. package/src/client/v2/algod/suggestedParams.ts +40 -10
  662. package/src/client/v2/algod/supply.ts +10 -2
  663. package/src/client/v2/algod/unsetSyncRound.ts +16 -5
  664. package/src/client/v2/algod/versions.ts +10 -2
  665. package/src/client/v2/indexer/index.ts +3 -0
  666. package/src/client/v2/indexer/indexer.ts +51 -59
  667. package/src/client/v2/indexer/lookupAccountAppLocalStates.ts +16 -11
  668. package/src/client/v2/indexer/lookupAccountAssets.ts +16 -11
  669. package/src/client/v2/indexer/lookupAccountByID.ts +16 -11
  670. package/src/client/v2/indexer/lookupAccountCreatedApplications.ts +16 -11
  671. package/src/client/v2/indexer/lookupAccountCreatedAssets.ts +16 -11
  672. package/src/client/v2/indexer/lookupAccountTransactions.ts +26 -19
  673. package/src/client/v2/indexer/lookupApplicationBoxByIDandName.ts +10 -15
  674. package/src/client/v2/indexer/lookupApplicationLogs.ts +15 -7
  675. package/src/client/v2/indexer/lookupApplications.ts +15 -7
  676. package/src/client/v2/indexer/lookupAssetBalances.ts +15 -7
  677. package/src/client/v2/indexer/lookupAssetByID.ts +15 -7
  678. package/src/client/v2/indexer/lookupAssetTransactions.ts +27 -16
  679. package/src/client/v2/indexer/lookupBlock.ts +15 -7
  680. package/src/client/v2/indexer/lookupTransactionByID.ts +15 -7
  681. package/src/client/v2/indexer/makeHealthCheck.ts +10 -2
  682. package/src/client/v2/indexer/models/types.ts +4454 -1988
  683. package/src/client/v2/indexer/searchAccounts.ts +13 -4
  684. package/src/client/v2/indexer/searchForApplicationBoxes.ts +12 -13
  685. package/src/client/v2/indexer/searchForApplications.ts +13 -4
  686. package/src/client/v2/indexer/searchForAssets.ts +13 -4
  687. package/src/client/v2/indexer/searchForTransactions.ts +22 -11
  688. package/src/client/v2/jsonrequest.ts +39 -57
  689. package/src/client/v2/serviceClient.ts +9 -31
  690. package/src/client/v2/untypedmodel.ts +25 -0
  691. package/src/composer.ts +83 -60
  692. package/src/dryrun.ts +129 -306
  693. package/src/encoding/address.ts +134 -146
  694. package/src/encoding/bigint.ts +2 -4
  695. package/src/encoding/binarydata.ts +80 -0
  696. package/src/encoding/encoding.ts +558 -13
  697. package/src/encoding/schema/address.ts +53 -0
  698. package/src/encoding/schema/array.ts +66 -0
  699. package/src/encoding/schema/binarystring.ts +73 -0
  700. package/src/encoding/schema/blockhash.ts +84 -0
  701. package/src/encoding/schema/boolean.ts +54 -0
  702. package/src/encoding/schema/bytearray.ts +127 -0
  703. package/src/encoding/schema/index.ts +26 -0
  704. package/src/encoding/schema/map.ts +713 -0
  705. package/src/encoding/schema/optional.ts +72 -0
  706. package/src/encoding/schema/string.ts +55 -0
  707. package/src/encoding/schema/uint64.ts +46 -0
  708. package/src/encoding/schema/untyped.ts +47 -0
  709. package/src/encoding/uint64.ts +2 -1
  710. package/src/group.ts +27 -75
  711. package/src/index.ts +2 -2
  712. package/src/logic/sourcemap.ts +94 -29
  713. package/src/logicsig.ts +154 -202
  714. package/src/main.ts +91 -94
  715. package/src/makeTxn.ts +660 -1338
  716. package/src/mnemonic/mnemonic.ts +14 -14
  717. package/src/multisig.ts +89 -403
  718. package/src/multisigSigning.ts +359 -0
  719. package/src/nacl/naclWrappers.ts +1 -1
  720. package/src/signedTransaction.ts +163 -0
  721. package/src/signer.ts +10 -5
  722. package/src/signing.ts +95 -0
  723. package/src/stateproof.ts +595 -0
  724. package/src/transaction.ts +986 -1242
  725. package/src/types/account.ts +3 -1
  726. package/src/types/block.ts +1278 -0
  727. package/src/types/intDecoding.ts +1 -1
  728. package/src/types/statedelta.ts +1717 -0
  729. package/src/types/transactions/base.ts +230 -122
  730. package/src/types/transactions/encoded.ts +81 -371
  731. package/src/types/transactions/index.ts +2 -72
  732. package/src/types/utils.ts +3 -3
  733. package/src/utils/utils.ts +96 -25
  734. package/src/wait.ts +8 -7
  735. package/dist/cjs/bid.js +0 -83
  736. package/dist/cjs/bid.js.map +0 -1
  737. package/dist/cjs/client/v2/basemodel.js +0 -67
  738. package/dist/cjs/client/v2/basemodel.js.map +0 -1
  739. package/dist/cjs/types/address.js +0 -3
  740. package/dist/cjs/types/address.js.map +0 -1
  741. package/dist/cjs/types/blockHeader.js +0 -3
  742. package/dist/cjs/types/blockHeader.js.map +0 -1
  743. package/dist/cjs/types/index.js.map +0 -1
  744. package/dist/cjs/types/multisig.js +0 -3
  745. package/dist/cjs/types/multisig.js.map +0 -1
  746. package/dist/cjs/types/transactions/application.js +0 -3
  747. package/dist/cjs/types/transactions/application.js.map +0 -1
  748. package/dist/cjs/types/transactions/asset.js +0 -3
  749. package/dist/cjs/types/transactions/asset.js.map +0 -1
  750. package/dist/cjs/types/transactions/builder.js +0 -3
  751. package/dist/cjs/types/transactions/builder.js.map +0 -1
  752. package/dist/cjs/types/transactions/keyreg.js +0 -3
  753. package/dist/cjs/types/transactions/keyreg.js.map +0 -1
  754. package/dist/cjs/types/transactions/payment.js +0 -3
  755. package/dist/cjs/types/transactions/payment.js.map +0 -1
  756. package/dist/cjs/types/transactions/stateproof.js +0 -3
  757. package/dist/cjs/types/transactions/stateproof.js.map +0 -1
  758. package/dist/esm/bid.js +0 -57
  759. package/dist/esm/bid.js.map +0 -1
  760. package/dist/esm/client/v2/basemodel.js +0 -64
  761. package/dist/esm/client/v2/basemodel.js.map +0 -1
  762. package/dist/esm/types/address.js +0 -2
  763. package/dist/esm/types/address.js.map +0 -1
  764. package/dist/esm/types/blockHeader.js +0 -2
  765. package/dist/esm/types/blockHeader.js.map +0 -1
  766. package/dist/esm/types/index.js +0 -4
  767. package/dist/esm/types/index.js.map +0 -1
  768. package/dist/esm/types/multisig.js +0 -2
  769. package/dist/esm/types/multisig.js.map +0 -1
  770. package/dist/esm/types/transactions/application.js +0 -2
  771. package/dist/esm/types/transactions/application.js.map +0 -1
  772. package/dist/esm/types/transactions/asset.js +0 -2
  773. package/dist/esm/types/transactions/asset.js.map +0 -1
  774. package/dist/esm/types/transactions/builder.js +0 -2
  775. package/dist/esm/types/transactions/builder.js.map +0 -1
  776. package/dist/esm/types/transactions/keyreg.js +0 -2
  777. package/dist/esm/types/transactions/keyreg.js.map +0 -1
  778. package/dist/esm/types/transactions/payment.js +0 -2
  779. package/dist/esm/types/transactions/payment.js.map +0 -1
  780. package/dist/esm/types/transactions/stateproof.js +0 -2
  781. package/dist/esm/types/transactions/stateproof.js.map +0 -1
  782. package/dist/types/bid.d.ts +0 -38
  783. package/dist/types/client/v2/basemodel.d.ts +0 -11
  784. package/dist/types/types/address.d.ts +0 -7
  785. package/dist/types/types/blockHeader.d.ts +0 -67
  786. package/dist/types/types/index.d.ts +0 -3
  787. package/dist/types/types/multisig.d.ts +0 -20
  788. package/dist/types/types/transactions/application.d.ts +0 -22
  789. package/dist/types/types/transactions/asset.d.ts +0 -28
  790. package/dist/types/types/transactions/builder.d.ts +0 -36
  791. package/dist/types/types/transactions/keyreg.d.ts +0 -8
  792. package/dist/types/types/transactions/payment.d.ts +0 -8
  793. package/dist/types/types/transactions/stateproof.d.ts +0 -8
  794. package/src/bid.ts +0 -96
  795. package/src/client/v2/basemodel.ts +0 -81
  796. package/src/types/address.ts +0 -7
  797. package/src/types/blockHeader.ts +0 -81
  798. package/src/types/index.ts +0 -3
  799. package/src/types/multisig.ts +0 -22
  800. package/src/types/transactions/application.ts +0 -111
  801. package/src/types/transactions/asset.ts +0 -108
  802. package/src/types/transactions/builder.ts +0 -69
  803. package/src/types/transactions/keyreg.ts +0 -23
  804. package/src/types/transactions/payment.ts +0 -14
  805. package/src/types/transactions/stateproof.ts +0 -17
@@ -1,19 +1,19 @@
1
1
  /* eslint-disable no-bitwise */
2
- import english from './wordlists/english';
3
- import * as nacl from '../nacl/naclWrappers';
4
- import * as address from '../encoding/address';
5
- import Account from '../types/account';
2
+ import english from './wordlists/english.js';
3
+ import * as nacl from '../nacl/naclWrappers.js';
4
+ import { Address } from '../encoding/address.js';
5
+ import Account from '../types/account.js';
6
6
 
7
7
  export const FAIL_TO_DECODE_MNEMONIC_ERROR_MSG = 'failed to decode mnemonic';
8
8
  export const NOT_IN_WORDS_LIST_ERROR_MSG =
9
9
  'the mnemonic contains a word that is not in the wordlist';
10
10
 
11
11
  // https://stackoverflow.com/a/51452614
12
- function toUint11Array(buffer8: Uint8Array | number[]) {
13
- const buffer11 = [];
12
+ function toUint11Array(buffer8: Uint8Array | number[]): number[] {
13
+ const buffer11: number[] = [];
14
14
  let acc = 0;
15
15
  let accBits = 0;
16
- function add(octet) {
16
+ function add(octet: number) {
17
17
  acc |= octet << accBits;
18
18
  accBits += 8;
19
19
  if (accBits >= 11) {
@@ -33,11 +33,11 @@ function toUint11Array(buffer8: Uint8Array | number[]) {
33
33
  return buffer11;
34
34
  }
35
35
 
36
- function applyWords(nums: number[]) {
36
+ function applyWords(nums: number[]): string[] {
37
37
  return nums.map((n) => english[n]);
38
38
  }
39
39
 
40
- function computeChecksum(seed: Uint8Array) {
40
+ function computeChecksum(seed: Uint8Array): string {
41
41
  const hashBuffer = nacl.genericHash(seed);
42
42
  const uint11Hash = toUint11Array(hashBuffer);
43
43
  const words = applyWords(uint11Hash);
@@ -66,11 +66,11 @@ export function mnemonicFromSeed(seed: Uint8Array) {
66
66
 
67
67
  // from Uint11Array
68
68
  // https://stackoverflow.com/a/51452614
69
- function toUint8Array(buffer11: number[]) {
70
- const buffer8 = [];
69
+ function toUint8Array(buffer11: number[]): Uint8Array {
70
+ const buffer8: number[] = [];
71
71
  let acc = 0;
72
72
  let accBits = 0;
73
- function add(ui11) {
73
+ function add(ui11: number) {
74
74
  acc |= ui11 << accBits;
75
75
  accBits += 11;
76
76
  while (accBits >= 8) {
@@ -146,8 +146,8 @@ export function seedFromMnemonic(mnemonic: string) {
146
146
  export function mnemonicToSecretKey(mn: string): Account {
147
147
  const seed = seedFromMnemonic(mn);
148
148
  const keys = nacl.keyPairFromSeed(seed);
149
- const encodedPk = address.encodeAddress(keys.publicKey);
150
- return { addr: encodedPk, sk: keys.secretKey };
149
+ const addr = new Address(keys.publicKey);
150
+ return { addr, sk: keys.secretKey };
151
151
  }
152
152
 
153
153
  /**
package/src/multisig.ts CHANGED
@@ -1,317 +1,119 @@
1
- import { Buffer } from 'buffer';
2
- import * as nacl from './nacl/naclWrappers';
3
- import * as address from './encoding/address';
4
- import * as encoding from './encoding/encoding';
5
- import * as txnBuilder from './transaction';
6
- import * as utils from './utils/utils';
7
- import AnyTransaction, { EncodedTransaction } from './types/transactions';
8
- import { MultisigMetadata } from './types/multisig';
1
+ import * as nacl from './nacl/naclWrappers.js';
9
2
  import {
10
- EncodedMultisig,
11
- EncodedSignedTransaction,
12
- } from './types/transactions/encoded';
3
+ Address,
4
+ ALGORAND_ADDRESS_BYTE_LENGTH,
5
+ ALGORAND_CHECKSUM_BYTE_LENGTH,
6
+ } from './encoding/address.js';
7
+ import * as utils from './utils/utils.js';
8
+ import { EncodedMultisig } from './types/transactions/encoded.js';
13
9
 
14
10
  /**
15
11
  Utilities for manipulating multisig transaction blobs.
16
12
  */
17
13
 
18
- export const MULTISIG_MERGE_LESSTHANTWO_ERROR_MSG =
19
- 'Not enough multisig transactions to merge. Need at least two';
20
- export const MULTISIG_MERGE_MISMATCH_ERROR_MSG =
21
- 'Cannot merge txs. txIDs differ';
22
- export const MULTISIG_MERGE_MISMATCH_AUTH_ADDR_MSG =
23
- 'Cannot merge txs. Auth addrs differ';
24
- export const MULTISIG_MERGE_WRONG_PREIMAGE_ERROR_MSG =
25
- 'Cannot merge txs. Multisig preimages differ';
26
- export const MULTISIG_MERGE_SIG_MISMATCH_ERROR_MSG =
27
- 'Cannot merge txs. subsigs are mismatched.';
28
- const MULTISIG_KEY_NOT_EXIST_ERROR_MSG = 'Key does not exist';
29
- export const MULTISIG_NO_MUTATE_ERROR_MSG =
30
- 'Cannot mutate a multisig field as it would invalidate all existing signatures.';
31
- export const MULTISIG_USE_PARTIAL_SIGN_ERROR_MSG =
32
- 'Cannot sign a multisig transaction using `signTxn`. Use `partialSignTxn` instead.';
33
- export const MULTISIG_SIGNATURE_LENGTH_ERROR_MSG =
34
- 'Cannot add multisig signature. Signature is not of the correct length.';
14
+ /**
15
+ * Required options for creating a multisignature
16
+ *
17
+ * Documentation available at: https://developer.algorand.org/docs/get-details/transactions/signatures/#multisignatures
18
+ */
19
+ export interface MultisigMetadata {
20
+ /**
21
+ * Multisig version
22
+ */
23
+ version: number;
35
24
 
36
- interface MultisigOptions {
37
- rawSig: Uint8Array;
38
- myPk: Uint8Array;
39
- }
25
+ /**
26
+ * Multisig threshold value. Authorization requires a subset of signatures,
27
+ * equal to or greater than the threshold value.
28
+ */
29
+ threshold: number;
40
30
 
41
- interface MultisigMetadataWithPks extends Omit<MultisigMetadata, 'addrs'> {
42
- pks: Uint8Array[];
31
+ /**
32
+ * A list of Algorand addresses representing possible signers for this multisig. Order is important.
33
+ */
34
+ addrs: Array<string | Address>;
43
35
  }
44
36
 
45
- /**
46
- * createMultisigTransaction creates a raw, unsigned multisig transaction blob.
47
- * @param txn - the actual transaction.
48
- * @param version - multisig version
49
- * @param threshold - multisig threshold
50
- * @param pks - ordered list of public keys in this multisig
51
- * @returns encoded multisig blob
52
- */
53
- export function createMultisigTransaction(
54
- txn: txnBuilder.Transaction,
55
- { version, threshold, addrs }: MultisigMetadata
56
- ) {
57
- // construct the appendable multisigned transaction format
58
- const pks = addrs.map((addr) => address.decodeAddress(addr).publicKey);
59
- const subsigs = pks.map((pk) => ({ pk: Buffer.from(pk) }));
37
+ // Convert "MultisigAddr" UTF-8 to byte array
38
+ const MULTISIG_PREIMG2ADDR_PREFIX = new Uint8Array([
39
+ 77, 117, 108, 116, 105, 115, 105, 103, 65, 100, 100, 114,
40
+ ]);
60
41
 
61
- const msig: EncodedMultisig = {
62
- v: version,
63
- thr: threshold,
64
- subsig: subsigs,
65
- };
66
- const txnForEncoding = txn.get_obj_for_encoding();
67
- const signedTxn: EncodedSignedTransaction = {
68
- msig,
69
- txn: txnForEncoding,
70
- };
42
+ const INVALID_MSIG_VERSION_ERROR_MSG = 'invalid multisig version';
43
+ const INVALID_MSIG_THRESHOLD_ERROR_MSG = 'bad multisig threshold';
44
+ const INVALID_MSIG_PK_ERROR_MSG = 'bad multisig public key - wrong length';
45
+ const UNEXPECTED_PK_LEN_ERROR_MSG = 'nacl public key length is not 32 bytes';
71
46
 
72
- // if the address of this multisig is different from the transaction sender,
73
- // we need to add the auth-addr field
74
- const msigAddr = address.fromMultisigPreImg({
75
- version,
76
- threshold,
77
- pks,
47
+ export function pksFromAddresses(addrs: Array<string | Address>): Uint8Array[] {
48
+ return addrs.map((addr) => {
49
+ if (typeof addr === 'string') {
50
+ return Address.fromString(addr).publicKey;
51
+ }
52
+ return addr.publicKey;
78
53
  });
79
- if (
80
- address.encodeAddress(txnForEncoding.snd) !==
81
- address.encodeAddress(msigAddr)
82
- ) {
83
- signedTxn.sgnr = Buffer.from(msigAddr);
84
- }
85
-
86
- return new Uint8Array(encoding.encode(signedTxn));
87
54
  }
88
55
 
89
56
  /**
90
- * createMultisigTransactionWithSignature creates a multisig transaction blob with an included signature.
91
- * @param txn - the actual transaction to sign.
92
- * @param rawSig - a Buffer raw signature of that transaction
93
- * @param myPk - a public key that corresponds with rawSig
57
+ * fromMultisigPreImg takes multisig parameters and returns a 32 byte typed array public key,
58
+ * representing an address that identifies the "exact group, version, and public keys" that are required for signing.
59
+ * Hash("MultisigAddr" || version uint8 || threshold uint8 || PK1 || PK2 || ...)
60
+ * Encoding this output yields a human readable address.
94
61
  * @param version - multisig version
95
62
  * @param threshold - multisig threshold
96
- * @param pks - ordered list of public keys in this multisig
97
- * @returns encoded multisig blob
63
+ * @param pks - array of typed array public keys
98
64
  */
99
- function createMultisigTransactionWithSignature(
100
- txn: txnBuilder.Transaction,
101
- { rawSig, myPk }: MultisigOptions,
102
- { version, threshold, pks }: MultisigMetadataWithPks
103
- ) {
104
- // Create an empty encoded multisig transaction
105
- const encodedMsig = createMultisigTransaction(txn, {
106
- version,
107
- threshold,
108
- addrs: pks.map((pk) => address.encodeAddress(pk)),
109
- });
110
- // note: this is not signed yet, but will be shortly
111
- const signedTxn = encoding.decode(encodedMsig) as EncodedSignedTransaction;
112
-
113
- let keyExist = false;
114
- // append the multisig signature to the corresponding public key in the multisig blob
115
- signedTxn.msig.subsig.forEach((subsig, i) => {
116
- if (nacl.bytesEqual(subsig.pk, myPk)) {
117
- keyExist = true;
118
- signedTxn.msig.subsig[i].s = rawSig;
119
- }
120
- });
121
- if (keyExist === false) {
122
- throw new Error(MULTISIG_KEY_NOT_EXIST_ERROR_MSG);
65
+ export function addressFromMultisigPreImg({
66
+ version,
67
+ threshold,
68
+ pks,
69
+ }: Omit<MultisigMetadata, 'addrs'> & {
70
+ pks: Uint8Array[];
71
+ }): Address {
72
+ if (version !== 1 || version > 255 || version < 0) {
73
+ // ^ a tad redundant, but in case in the future version != 1, still check for uint8
74
+ throw new Error(INVALID_MSIG_VERSION_ERROR_MSG);
123
75
  }
124
-
125
- // if the address of this multisig is different from the transaction sender,
126
- // we need to add the auth-addr field
127
- const msigAddr = address.fromMultisigPreImg({
128
- version,
129
- threshold,
130
- pks,
131
- });
132
76
  if (
133
- address.encodeAddress(signedTxn.txn.snd) !== address.encodeAddress(msigAddr)
77
+ threshold === 0 ||
78
+ pks.length === 0 ||
79
+ threshold > pks.length ||
80
+ threshold > 255
134
81
  ) {
135
- signedTxn.sgnr = Buffer.from(msigAddr);
82
+ throw new Error(INVALID_MSIG_THRESHOLD_ERROR_MSG);
136
83
  }
137
-
138
- return new Uint8Array(encoding.encode(signedTxn));
139
- }
140
-
141
- /**
142
- * MultisigTransaction is a Transaction that also supports creating partially-signed multisig transactions.
143
- */
144
- export class MultisigTransaction extends txnBuilder.Transaction {
145
- /* eslint-disable class-methods-use-this,@typescript-eslint/no-unused-vars,no-dupe-class-members */
146
- /**
147
- * Override inherited method to throw an error, as mutating transactions are prohibited in this context
148
- */
149
- addLease() {
150
- throw new Error(MULTISIG_NO_MUTATE_ERROR_MSG);
84
+ const pkLen = ALGORAND_ADDRESS_BYTE_LENGTH - ALGORAND_CHECKSUM_BYTE_LENGTH;
85
+ if (pkLen !== nacl.PUBLIC_KEY_LENGTH) {
86
+ throw new Error(UNEXPECTED_PK_LEN_ERROR_MSG);
151
87
  }
152
-
153
- /**
154
- * Override inherited method to throw an error, as mutating transactions are prohibited in this context
155
- */
156
- addRekey() {
157
- throw new Error(MULTISIG_NO_MUTATE_ERROR_MSG);
158
- }
159
-
160
- /**
161
- * Override inherited method to throw an error, as traditional signing is not allowed
162
- */
163
- signTxn(sk: Uint8Array): Uint8Array; // This overload ensures that the override has a compatible type definition with the parent method
164
- signTxn(sk: any): any {
165
- throw new Error(MULTISIG_USE_PARTIAL_SIGN_ERROR_MSG);
166
- }
167
- /* eslint-enable class-methods-use-this,@typescript-eslint/no-unused-vars,no-dupe-class-members */
168
-
169
- /**
170
- * partialSignTxn partially signs this transaction and returns a partially-signed multisig transaction,
171
- * encoded with msgpack as a typed array.
172
- * @param version - multisig version
173
- * @param threshold - multisig threshold
174
- * @param pks - multisig public key list, order is important.
175
- * @param sk - an Algorand secret key to sign with.
176
- * @returns an encoded, partially signed multisig transaction.
177
- */
178
- partialSignTxn(
179
- { version, threshold, pks }: MultisigMetadataWithPks,
180
- sk: Uint8Array
181
- ) {
182
- // get signature verifier
183
- const myPk = nacl.keyPairFromSecretKey(sk).publicKey;
184
- return createMultisigTransactionWithSignature(
185
- this,
186
- { rawSig: this.rawSignTxn(sk), myPk },
187
- { version, threshold, pks }
188
- );
189
- }
190
-
191
- /**
192
- * partialSignWithMultisigSignature partially signs this transaction with an external raw multisig signature and returns
193
- * a partially-signed multisig transaction, encoded with msgpack as a typed array.
194
- * @param metadata - multisig metadata
195
- * @param signerAddr - address of the signer
196
- * @param signature - raw multisig signature
197
- * @returns an encoded, partially signed multisig transaction.
198
- */
199
- partialSignWithMultisigSignature(
200
- metadata: MultisigMetadataWithPks,
201
- signerAddr: string,
202
- signature: Uint8Array
203
- ) {
204
- if (!nacl.isValidSignatureLength(signature.length)) {
205
- throw new Error(MULTISIG_SIGNATURE_LENGTH_ERROR_MSG);
88
+ const merged = new Uint8Array(
89
+ MULTISIG_PREIMG2ADDR_PREFIX.length + 2 + pkLen * pks.length
90
+ );
91
+ merged.set(MULTISIG_PREIMG2ADDR_PREFIX, 0);
92
+ merged.set([version], MULTISIG_PREIMG2ADDR_PREFIX.length);
93
+ merged.set([threshold], MULTISIG_PREIMG2ADDR_PREFIX.length + 1);
94
+ for (let i = 0; i < pks.length; i++) {
95
+ if (pks[i].length !== pkLen) {
96
+ throw new Error(INVALID_MSIG_PK_ERROR_MSG);
206
97
  }
207
- return createMultisigTransactionWithSignature(
208
- this,
209
- {
210
- rawSig: signature,
211
- myPk: address.decodeAddress(signerAddr).publicKey,
212
- },
213
- metadata
214
- );
215
- }
216
-
217
- // eslint-disable-next-line camelcase
218
- static from_obj_for_encoding(
219
- txnForEnc: EncodedTransaction
220
- ): MultisigTransaction {
221
- return super.from_obj_for_encoding(txnForEnc) as MultisigTransaction;
98
+ merged.set(pks[i], MULTISIG_PREIMG2ADDR_PREFIX.length + 2 + i * pkLen);
222
99
  }
100
+ return new Address(Uint8Array.from(nacl.genericHash(merged)));
223
101
  }
224
102
 
225
103
  /**
226
- * mergeMultisigTransactions takes a list of multisig transaction blobs, and merges them.
227
- * @param multisigTxnBlobs - a list of blobs representing encoded multisig txns
228
- * @returns typed array msg-pack encoded multisig txn
104
+ * fromMultisigPreImgAddrs takes multisig parameters and returns a human readable Algorand address.
105
+ * This is equivalent to fromMultisigPreImg, but interfaces with encoded addresses.
106
+ * @param version - multisig version
107
+ * @param threshold - multisig threshold
108
+ * @param addrs - array of encoded addresses
229
109
  */
230
- export function mergeMultisigTransactions(multisigTxnBlobs: Uint8Array[]) {
231
- if (multisigTxnBlobs.length < 2) {
232
- throw new Error(MULTISIG_MERGE_LESSTHANTWO_ERROR_MSG);
233
- }
234
- const refSigTx = encoding.decode(
235
- multisigTxnBlobs[0]
236
- ) as EncodedSignedTransaction;
237
- const refTxID = MultisigTransaction.from_obj_for_encoding(
238
- refSigTx.txn
239
- ).txID();
240
- const refAuthAddr = refSigTx.sgnr
241
- ? address.encodeAddress(refSigTx.sgnr)
242
- : undefined;
243
- const refPreImage = {
244
- version: refSigTx.msig.v,
245
- threshold: refSigTx.msig.thr,
246
- pks: refSigTx.msig.subsig.map((subsig) => subsig.pk),
247
- };
248
- const refMsigAddr = address.encodeAddress(
249
- address.fromMultisigPreImg(refPreImage)
250
- );
251
-
252
- const newSubsigs = refSigTx.msig.subsig.map((sig) => ({ ...sig }));
253
- for (let i = 1; i < multisigTxnBlobs.length; i++) {
254
- const unisig = encoding.decode(
255
- multisigTxnBlobs[i]
256
- ) as EncodedSignedTransaction;
257
-
258
- const unisigAlgoTxn = MultisigTransaction.from_obj_for_encoding(unisig.txn);
259
- if (unisigAlgoTxn.txID() !== refTxID) {
260
- throw new Error(MULTISIG_MERGE_MISMATCH_ERROR_MSG);
261
- }
262
-
263
- const authAddr = unisig.sgnr
264
- ? address.encodeAddress(unisig.sgnr)
265
- : undefined;
266
- if (refAuthAddr !== authAddr) {
267
- throw new Error(MULTISIG_MERGE_MISMATCH_AUTH_ADDR_MSG);
268
- }
269
-
270
- // check multisig has same preimage as reference
271
- if (unisig.msig.subsig.length !== refSigTx.msig.subsig.length) {
272
- throw new Error(MULTISIG_MERGE_WRONG_PREIMAGE_ERROR_MSG);
273
- }
274
- const preimg: MultisigMetadataWithPks = {
275
- version: unisig.msig.v,
276
- threshold: unisig.msig.thr,
277
- pks: unisig.msig.subsig.map((subsig) => subsig.pk),
278
- };
279
- const msgigAddr = address.encodeAddress(address.fromMultisigPreImg(preimg));
280
- if (refMsigAddr !== msgigAddr) {
281
- throw new Error(MULTISIG_MERGE_WRONG_PREIMAGE_ERROR_MSG);
282
- }
283
-
284
- // now, we can merge
285
- unisig.msig.subsig.forEach((uniSubsig, index) => {
286
- if (!uniSubsig.s) return;
287
- const current = newSubsigs[index];
288
- // we convert the Uint8Arrays uniSubsig.s and current.s to Buffers here because (as
289
- // of Dec 2020) React overrides the buffer package with an older version that does
290
- // not support Uint8Arrays in the comparison function. See this thread for more
291
- // info: https://github.com/algorand/js-algorand-sdk/issues/252
292
- if (
293
- current.s &&
294
- Buffer.compare(Buffer.from(uniSubsig.s), Buffer.from(current.s)) !== 0
295
- ) {
296
- // mismatch
297
- throw new Error(MULTISIG_MERGE_SIG_MISMATCH_ERROR_MSG);
298
- }
299
- current.s = uniSubsig.s;
300
- });
301
- }
302
- const msig: EncodedMultisig = {
303
- v: refSigTx.msig.v,
304
- thr: refSigTx.msig.thr,
305
- subsig: newSubsigs,
306
- };
307
- const signedTxn: EncodedSignedTransaction = {
308
- msig,
309
- txn: refSigTx.txn,
310
- };
311
- if (typeof refAuthAddr !== 'undefined') {
312
- signedTxn.sgnr = Buffer.from(address.decodeAddress(refAuthAddr).publicKey);
313
- }
314
- return new Uint8Array(encoding.encode(signedTxn));
110
+ export function addressFromMultisigPreImgAddrs({
111
+ version,
112
+ threshold,
113
+ addrs,
114
+ }: MultisigMetadata): Address {
115
+ const pks = pksFromAddresses(addrs);
116
+ return addressFromMultisigPreImg({ version, threshold, pks });
315
117
  }
316
118
 
317
119
  export function verifyMultisig(
@@ -330,7 +132,7 @@ export function verifyMultisig(
330
132
 
331
133
  let pk: Uint8Array;
332
134
  try {
333
- pk = address.fromMultisigPreImg({ version, threshold, pks });
135
+ pk = addressFromMultisigPreImg({ version, threshold, pks }).publicKey;
334
136
  } catch (e) {
335
137
  return false;
336
138
  }
@@ -365,122 +167,6 @@ export function verifyMultisig(
365
167
  return true;
366
168
  }
367
169
 
368
- /**
369
- * signMultisigTransaction takes a raw transaction (see signTransaction), a multisig preimage, a secret key, and returns
370
- * a multisig transaction, which is a blob representing a transaction and multisignature account preimage. The returned
371
- * multisig txn can accumulate additional signatures through mergeMultisigTransactions or appendSignMultisigTransaction.
372
- * @param txn - object with either payment or key registration fields
373
- * @param version - multisig version
374
- * @param threshold - multisig threshold
375
- * @param addrs - a list of Algorand addresses representing possible signers for this multisig. Order is important.
376
- * @param sk - Algorand secret key. The corresponding pk should be in the pre image.
377
- * @returns object containing txID, and blob of partially signed multisig transaction (with multisig preimage information)
378
- * If the final calculated fee is lower than the protocol minimum fee, the fee will be increased to match the minimum.
379
- */
380
- export function signMultisigTransaction(
381
- txn: txnBuilder.TransactionLike,
382
- { version, threshold, addrs }: MultisigMetadata,
383
- sk: Uint8Array
384
- ) {
385
- // check that the from field matches the mSigPreImage. If from field is not populated, fill it in.
386
- const expectedFromRaw = address.fromMultisigPreImgAddrs({
387
- version,
388
- threshold,
389
- addrs,
390
- });
391
- if (!Object.prototype.hasOwnProperty.call(txn, 'from')) {
392
- // eslint-disable-next-line no-param-reassign
393
- txn.from = expectedFromRaw;
394
- }
395
- // build pks for partialSign
396
- const pks = addrs.map((addr) => address.decodeAddress(addr).publicKey);
397
- // `txn` needs to be handled differently if it's a constructed `Transaction` vs a dict of constructor args
398
- const txnAlreadyBuilt = txn instanceof txnBuilder.Transaction;
399
- let algoTxn: MultisigTransaction;
400
- let blob: Uint8Array;
401
- if (txnAlreadyBuilt) {
402
- algoTxn = (txn as unknown) as MultisigTransaction;
403
- blob = MultisigTransaction.prototype.partialSignTxn.call(
404
- algoTxn,
405
- { version, threshold, pks },
406
- sk
407
- );
408
- } else {
409
- algoTxn = new MultisigTransaction(txn as AnyTransaction);
410
- blob = algoTxn.partialSignTxn({ version, threshold, pks }, sk);
411
- }
412
- return {
413
- txID: algoTxn.txID().toString(),
414
- blob,
415
- };
416
- }
417
-
418
- /**
419
- * appendSignMultisigTransaction takes a multisig transaction blob, and appends our signature to it.
420
- * While we could derive public key preimagery from the partially-signed multisig transaction,
421
- * we ask the caller to pass it back in, to ensure they know what they are signing.
422
- * @param multisigTxnBlob - an encoded multisig txn. Supports non-payment txn types.
423
- * @param version - multisig version
424
- * @param threshold - multisig threshold
425
- * @param addrs - a list of Algorand addresses representing possible signers for this multisig. Order is important.
426
- * @param sk - Algorand secret key
427
- * @returns object containing txID, and blob representing encoded multisig txn
428
- */
429
- export function appendSignMultisigTransaction(
430
- multisigTxnBlob: Uint8Array,
431
- { version, threshold, addrs }: MultisigMetadata,
432
- sk: Uint8Array
433
- ) {
434
- const pks = addrs.map((addr) => address.decodeAddress(addr).publicKey);
435
- // obtain underlying txn, sign it, and merge it
436
- const multisigTxObj = encoding.decode(
437
- multisigTxnBlob
438
- ) as EncodedSignedTransaction;
439
- const msigTxn = MultisigTransaction.from_obj_for_encoding(multisigTxObj.txn);
440
- const partialSignedBlob = msigTxn.partialSignTxn(
441
- { version, threshold, pks },
442
- sk
443
- );
444
- return {
445
- txID: msigTxn.txID().toString(),
446
- blob: mergeMultisigTransactions([multisigTxnBlob, partialSignedBlob]),
447
- };
448
- }
449
-
450
- /**
451
- * appendMultisigTransactionSignature takes a multisig transaction blob, and appends a given raw signature to it.
452
- * This makes it possible to compile a multisig signature using only raw signatures from external methods.
453
- * @param multisigTxnBlob - an encoded multisig txn. Supports non-payment txn types.
454
- * @param version - multisig version
455
- * @param threshold - multisig threshold
456
- * @param addrs - a list of Algorand addresses representing possible signers for this multisig. Order is important.
457
- * @param signerAddr - address of the signer
458
- * @param signature - raw multisig signature
459
- * @returns object containing txID, and blob representing encoded multisig txn
460
- */
461
- export function appendSignRawMultisigSignature(
462
- multisigTxnBlob: Uint8Array,
463
- { version, threshold, addrs }: MultisigMetadata,
464
- signerAddr: string,
465
- signature: Uint8Array
466
- ) {
467
- const pks = addrs.map((addr) => address.decodeAddress(addr).publicKey);
468
- // obtain underlying txn, sign it, and merge it
469
- const multisigTxObj = encoding.decode(
470
- multisigTxnBlob
471
- ) as EncodedSignedTransaction;
472
- const msigTxn = MultisigTransaction.from_obj_for_encoding(multisigTxObj.txn);
473
- const partialSignedBlob = msigTxn.partialSignWithMultisigSignature(
474
- { version, threshold, pks },
475
- signerAddr,
476
- signature
477
- );
478
- return {
479
- txID: msigTxn.txID().toString(),
480
- blob: mergeMultisigTransactions([multisigTxnBlob, partialSignedBlob]),
481
- };
482
- }
483
-
484
170
  /**
485
171
  * multisigAddress takes multisig metadata (preimage) and returns the corresponding human readable Algorand address.
486
172
  * @param version - multisig version
@@ -491,6 +177,6 @@ export function multisigAddress({
491
177
  version,
492
178
  threshold,
493
179
  addrs,
494
- }: MultisigMetadata) {
495
- return address.fromMultisigPreImgAddrs({ version, threshold, addrs });
180
+ }: MultisigMetadata): Address {
181
+ return addressFromMultisigPreImgAddrs({ version, threshold, addrs });
496
182
  }