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
@@ -0,0 +1,359 @@
1
+ import * as nacl from './nacl/naclWrappers.js';
2
+ import { Address } from './encoding/address.js';
3
+ import * as encoding from './encoding/encoding.js';
4
+ import { Transaction } from './transaction.js';
5
+ import * as utils from './utils/utils.js';
6
+ import { EncodedMultisig } from './types/transactions/encoded.js';
7
+ import { SignedTransaction } from './signedTransaction.js';
8
+ import {
9
+ MultisigMetadata,
10
+ addressFromMultisigPreImg,
11
+ pksFromAddresses,
12
+ } from './multisig.js';
13
+
14
+ export const MULTISIG_MERGE_LESSTHANTWO_ERROR_MSG =
15
+ 'Not enough multisig transactions to merge. Need at least two';
16
+ export const MULTISIG_MERGE_MISMATCH_ERROR_MSG =
17
+ 'Cannot merge txs. txIDs differ';
18
+ export const MULTISIG_MERGE_MISMATCH_AUTH_ADDR_MSG =
19
+ 'Cannot merge txs. Auth addrs differ';
20
+ export const MULTISIG_MERGE_WRONG_PREIMAGE_ERROR_MSG =
21
+ 'Cannot merge txs. Multisig preimages differ';
22
+ export const MULTISIG_MERGE_SIG_MISMATCH_ERROR_MSG =
23
+ 'Cannot merge txs. subsigs are mismatched.';
24
+ export const MULTISIG_NO_MUTATE_ERROR_MSG =
25
+ 'Cannot mutate a multisig field as it would invalidate all existing signatures.';
26
+ export const MULTISIG_USE_PARTIAL_SIGN_ERROR_MSG =
27
+ 'Cannot sign a multisig transaction using `signTxn`. Use `partialSignTxn` instead.';
28
+ export const MULTISIG_SIGNATURE_LENGTH_ERROR_MSG =
29
+ 'Cannot add multisig signature. Signature is not of the correct length.';
30
+ const MULTISIG_KEY_NOT_EXIST_ERROR_MSG = 'Key does not exist';
31
+
32
+ /**
33
+ * createMultisigTransaction creates a raw, unsigned multisig transaction blob.
34
+ * @param txn - the actual transaction.
35
+ * @param version - multisig version
36
+ * @param threshold - multisig threshold
37
+ * @param pks - ordered list of public keys in this multisig
38
+ * @returns encoded multisig blob
39
+ */
40
+ export function createMultisigTransaction(
41
+ txn: Transaction,
42
+ { version, threshold, addrs }: MultisigMetadata
43
+ ) {
44
+ // construct the appendable multisigned transaction format
45
+ const pks = pksFromAddresses(addrs);
46
+ const subsigs = pks.map((pk) => ({ pk }));
47
+
48
+ const msig: EncodedMultisig = {
49
+ v: version,
50
+ thr: threshold,
51
+ subsig: subsigs,
52
+ };
53
+
54
+ // if the address of this multisig is different from the transaction sender,
55
+ // we need to add the auth-addr field
56
+ const msigAddr = addressFromMultisigPreImg({
57
+ version,
58
+ threshold,
59
+ pks,
60
+ });
61
+ let sgnr: Address | undefined;
62
+ if (!txn.sender.equals(msigAddr)) {
63
+ sgnr = msigAddr;
64
+ }
65
+
66
+ const signedTxn = new SignedTransaction({
67
+ txn,
68
+ msig,
69
+ sgnr,
70
+ });
71
+
72
+ return encoding.encodeMsgpack(signedTxn);
73
+ }
74
+
75
+ interface MultisigOptions {
76
+ rawSig: Uint8Array;
77
+ myPk: Uint8Array;
78
+ }
79
+
80
+ interface MultisigMetadataWithPks extends Omit<MultisigMetadata, 'addrs'> {
81
+ pks: Uint8Array[];
82
+ }
83
+
84
+ /**
85
+ * createMultisigTransactionWithSignature creates a multisig transaction blob with an included signature.
86
+ * @param txn - the actual transaction to sign.
87
+ * @param rawSig - a Uint8Array raw signature of that transaction
88
+ * @param myPk - a public key that corresponds with rawSig
89
+ * @param version - multisig version
90
+ * @param threshold - multisig threshold
91
+ * @param pks - ordered list of public keys in this multisig
92
+ * @returns encoded multisig blob
93
+ */
94
+ function createMultisigTransactionWithSignature(
95
+ txn: Transaction,
96
+ { rawSig, myPk }: MultisigOptions,
97
+ { version, threshold, pks }: MultisigMetadataWithPks
98
+ ): Uint8Array {
99
+ // Create an empty encoded multisig transaction
100
+ const encodedMsig = createMultisigTransaction(txn, {
101
+ version,
102
+ threshold,
103
+ addrs: pks.map((pk) => new Address(pk)),
104
+ });
105
+ // note: this is not signed yet, but will be shortly
106
+ const signedTxn = encoding.decodeMsgpack(encodedMsig, SignedTransaction);
107
+
108
+ let keyExist = false;
109
+ // append the multisig signature to the corresponding public key in the multisig blob
110
+ signedTxn.msig!.subsig.forEach((subsig, i) => {
111
+ if (nacl.bytesEqual(subsig.pk, myPk)) {
112
+ keyExist = true;
113
+ signedTxn.msig!.subsig[i].s = rawSig;
114
+ }
115
+ });
116
+ if (!keyExist) {
117
+ throw new Error(MULTISIG_KEY_NOT_EXIST_ERROR_MSG);
118
+ }
119
+
120
+ return encoding.encodeMsgpack(signedTxn);
121
+ }
122
+
123
+ /**
124
+ * partialSignTxn partially signs this transaction and returns a partially-signed multisig transaction,
125
+ * encoded with msgpack as a typed array.
126
+ * @param transaction - The transaction to sign
127
+ * @param version - multisig version
128
+ * @param threshold - multisig threshold
129
+ * @param pks - multisig public key list, order is important.
130
+ * @param sk - an Algorand secret key to sign with.
131
+ * @returns an encoded, partially signed multisig transaction.
132
+ */
133
+ function partialSignTxn(
134
+ transaction: Transaction,
135
+ { version, threshold, pks }: MultisigMetadataWithPks,
136
+ sk: Uint8Array
137
+ ) {
138
+ // get signature verifier
139
+ const myPk = nacl.keyPairFromSecretKey(sk).publicKey;
140
+ return createMultisigTransactionWithSignature(
141
+ transaction,
142
+ { rawSig: transaction.rawSignTxn(sk), myPk },
143
+ { version, threshold, pks }
144
+ );
145
+ }
146
+
147
+ /**
148
+ * partialSignWithMultisigSignature partially signs this transaction with an external raw multisig signature and returns
149
+ * a partially-signed multisig transaction, encoded with msgpack as a typed array.
150
+ * @param transaction - The transaction to sign
151
+ * @param metadata - multisig metadata
152
+ * @param signerAddr - address of the signer
153
+ * @param signature - raw multisig signature
154
+ * @returns an encoded, partially signed multisig transaction.
155
+ */
156
+ function partialSignWithMultisigSignature(
157
+ transaction: Transaction,
158
+ metadata: MultisigMetadataWithPks,
159
+ signerAddr: string | Address,
160
+ signature: Uint8Array
161
+ ) {
162
+ if (!nacl.isValidSignatureLength(signature.length)) {
163
+ throw new Error(MULTISIG_SIGNATURE_LENGTH_ERROR_MSG);
164
+ }
165
+ const signerAddressObj =
166
+ typeof signerAddr === 'string'
167
+ ? Address.fromString(signerAddr)
168
+ : signerAddr;
169
+ return createMultisigTransactionWithSignature(
170
+ transaction,
171
+ {
172
+ rawSig: signature,
173
+ myPk: signerAddressObj.publicKey,
174
+ },
175
+ metadata
176
+ );
177
+ }
178
+
179
+ /**
180
+ * mergeMultisigTransactions takes a list of multisig transaction blobs, and merges them.
181
+ * @param multisigTxnBlobs - a list of blobs representing encoded multisig txns
182
+ * @returns typed array msg-pack encoded multisig txn
183
+ */
184
+ export function mergeMultisigTransactions(multisigTxnBlobs: Uint8Array[]) {
185
+ if (multisigTxnBlobs.length < 2) {
186
+ throw new Error(MULTISIG_MERGE_LESSTHANTWO_ERROR_MSG);
187
+ }
188
+ const refSigTx = encoding.decodeMsgpack(
189
+ multisigTxnBlobs[0],
190
+ SignedTransaction
191
+ );
192
+ if (!refSigTx.msig) {
193
+ throw new Error(
194
+ 'Invalid multisig transaction, multisig structure missing at index 0'
195
+ );
196
+ }
197
+ const refTxID = refSigTx.txn.txID();
198
+ const refAuthAddr = refSigTx.sgnr ? refSigTx.sgnr.toString() : undefined;
199
+ const refPreImage = {
200
+ version: refSigTx.msig.v,
201
+ threshold: refSigTx.msig.thr,
202
+ pks: refSigTx.msig.subsig.map((subsig) => subsig.pk),
203
+ };
204
+ const refMsigAddr = addressFromMultisigPreImg(refPreImage);
205
+
206
+ const newSubsigs = refSigTx.msig.subsig.map((sig) => ({ ...sig }));
207
+ for (let i = 1; i < multisigTxnBlobs.length; i++) {
208
+ const unisig = encoding.decodeMsgpack(
209
+ multisigTxnBlobs[i],
210
+ SignedTransaction
211
+ );
212
+ if (!unisig.msig) {
213
+ throw new Error(
214
+ `Invalid multisig transaction, multisig structure missing at index ${i}`
215
+ );
216
+ }
217
+
218
+ if (unisig.txn.txID() !== refTxID) {
219
+ throw new Error(MULTISIG_MERGE_MISMATCH_ERROR_MSG);
220
+ }
221
+
222
+ const authAddr = unisig.sgnr ? unisig.sgnr.toString() : undefined;
223
+ if (refAuthAddr !== authAddr) {
224
+ throw new Error(MULTISIG_MERGE_MISMATCH_AUTH_ADDR_MSG);
225
+ }
226
+
227
+ // check multisig has same preimage as reference
228
+ if (unisig.msig.subsig.length !== refSigTx.msig.subsig.length) {
229
+ throw new Error(MULTISIG_MERGE_WRONG_PREIMAGE_ERROR_MSG);
230
+ }
231
+ const preimg: MultisigMetadataWithPks = {
232
+ version: unisig.msig.v,
233
+ threshold: unisig.msig.thr,
234
+ pks: unisig.msig.subsig.map((subsig) => subsig.pk),
235
+ };
236
+ const msgigAddr = addressFromMultisigPreImg(preimg);
237
+ if (!refMsigAddr.equals(msgigAddr)) {
238
+ throw new Error(MULTISIG_MERGE_WRONG_PREIMAGE_ERROR_MSG);
239
+ }
240
+
241
+ // now, we can merge
242
+ unisig.msig.subsig.forEach((uniSubsig, index) => {
243
+ if (!uniSubsig.s) return;
244
+ const current = newSubsigs[index];
245
+ if (current.s && !utils.arrayEqual(uniSubsig.s, current.s)) {
246
+ // mismatch
247
+ throw new Error(MULTISIG_MERGE_SIG_MISMATCH_ERROR_MSG);
248
+ }
249
+ current.s = uniSubsig.s;
250
+ });
251
+ }
252
+ const msig: EncodedMultisig = {
253
+ v: refSigTx.msig.v,
254
+ thr: refSigTx.msig.thr,
255
+ subsig: newSubsigs,
256
+ };
257
+ const refSgnr =
258
+ typeof refAuthAddr !== 'undefined' ? refSigTx.sgnr : undefined;
259
+ const signedTxn = new SignedTransaction({
260
+ msig,
261
+ txn: refSigTx.txn,
262
+ sgnr: refSgnr,
263
+ });
264
+ return encoding.encodeMsgpack(signedTxn);
265
+ }
266
+
267
+ /**
268
+ * signMultisigTransaction takes a raw transaction (see signTransaction), a multisig preimage, a secret key, and returns
269
+ * a multisig transaction, which is a blob representing a transaction and multisignature account preimage. The returned
270
+ * multisig txn can accumulate additional signatures through mergeMultisigTransactions or appendSignMultisigTransaction.
271
+ * @param txn - object with either payment or key registration fields
272
+ * @param version - multisig version
273
+ * @param threshold - multisig threshold
274
+ * @param addrs - a list of Algorand addresses representing possible signers for this multisig. Order is important.
275
+ * @param sk - Algorand secret key. The corresponding pk should be in the pre image.
276
+ * @returns object containing txID, and blob of partially signed multisig transaction (with multisig preimage information)
277
+ * If the final calculated fee is lower than the protocol minimum fee, the fee will be increased to match the minimum.
278
+ */
279
+ export function signMultisigTransaction(
280
+ txn: Transaction,
281
+ { version, threshold, addrs }: MultisigMetadata,
282
+ sk: Uint8Array
283
+ ) {
284
+ // build pks for partialSign
285
+ const pks = pksFromAddresses(addrs);
286
+ const blob = partialSignTxn(txn, { version, threshold, pks }, sk);
287
+ return {
288
+ txID: txn.txID(),
289
+ blob,
290
+ };
291
+ }
292
+
293
+ /**
294
+ * appendSignMultisigTransaction takes a multisig transaction blob, and appends our signature to it.
295
+ * While we could derive public key preimagery from the partially-signed multisig transaction,
296
+ * we ask the caller to pass it back in, to ensure they know what they are signing.
297
+ * @param multisigTxnBlob - an encoded multisig txn. Supports non-payment txn types.
298
+ * @param version - multisig version
299
+ * @param threshold - multisig threshold
300
+ * @param addrs - a list of Algorand addresses representing possible signers for this multisig. Order is important.
301
+ * @param sk - Algorand secret key
302
+ * @returns object containing txID, and blob representing encoded multisig txn
303
+ */
304
+ export function appendSignMultisigTransaction(
305
+ multisigTxnBlob: Uint8Array,
306
+ { version, threshold, addrs }: MultisigMetadata,
307
+ sk: Uint8Array
308
+ ) {
309
+ const pks = pksFromAddresses(addrs);
310
+ // obtain underlying txn, sign it, and merge it
311
+ const multisigTxObj = encoding.decodeMsgpack(
312
+ multisigTxnBlob,
313
+ SignedTransaction
314
+ );
315
+ const partialSignedBlob = partialSignTxn(
316
+ multisigTxObj.txn,
317
+ { version, threshold, pks },
318
+ sk
319
+ );
320
+ return {
321
+ txID: multisigTxObj.txn.txID(),
322
+ blob: mergeMultisigTransactions([multisigTxnBlob, partialSignedBlob]),
323
+ };
324
+ }
325
+
326
+ /**
327
+ * appendMultisigTransactionSignature takes a multisig transaction blob, and appends a given raw signature to it.
328
+ * This makes it possible to compile a multisig signature using only raw signatures from external methods.
329
+ * @param multisigTxnBlob - an encoded multisig txn. Supports non-payment txn types.
330
+ * @param version - multisig version
331
+ * @param threshold - multisig threshold
332
+ * @param addrs - a list of Algorand addresses representing possible signers for this multisig. Order is important.
333
+ * @param signerAddr - address of the signer
334
+ * @param signature - raw multisig signature
335
+ * @returns object containing txID, and blob representing encoded multisig txn
336
+ */
337
+ export function appendSignRawMultisigSignature(
338
+ multisigTxnBlob: Uint8Array,
339
+ { version, threshold, addrs }: MultisigMetadata,
340
+ signerAddr: string | Address,
341
+ signature: Uint8Array
342
+ ) {
343
+ const pks = pksFromAddresses(addrs);
344
+ // obtain underlying txn, sign it, and merge it
345
+ const multisigTxObj = encoding.decodeMsgpack(
346
+ multisigTxnBlob,
347
+ SignedTransaction
348
+ );
349
+ const partialSignedBlob = partialSignWithMultisigSignature(
350
+ multisigTxObj.txn,
351
+ { version, threshold, pks },
352
+ signerAddr,
353
+ signature
354
+ );
355
+ return {
356
+ txID: multisigTxObj.txn.txID(),
357
+ blob: mergeMultisigTransactions([multisigTxnBlob, partialSignedBlob]),
358
+ };
359
+ }
@@ -1,6 +1,6 @@
1
1
  import nacl from 'tweetnacl';
2
2
  import sha512 from 'js-sha512';
3
- import { isReactNative } from '../utils/utils';
3
+ import { isReactNative } from '../utils/utils.js';
4
4
 
5
5
  export function genericHash(arr: sha512.Message) {
6
6
  return sha512.sha512_256.array(arr);
@@ -0,0 +1,163 @@
1
+ import {
2
+ Encodable,
3
+ encodeMsgpack,
4
+ decodeMsgpack,
5
+ } from './encoding/encoding.js';
6
+ import { Address } from './encoding/address.js';
7
+ import { Transaction } from './transaction.js';
8
+ import { LogicSig } from './logicsig.js';
9
+ import {
10
+ EncodedMultisig,
11
+ encodedMultiSigToEncodingData,
12
+ encodedMultiSigFromEncodingData,
13
+ ENCODED_MULTISIG_SCHEMA,
14
+ } from './types/transactions/index.js';
15
+ import {
16
+ AddressSchema,
17
+ FixedLengthByteArraySchema,
18
+ OptionalSchema,
19
+ NamedMapSchema,
20
+ allOmitEmpty,
21
+ } from './encoding/schema/index.js';
22
+
23
+ export class SignedTransaction implements Encodable {
24
+ static readonly encodingSchema = new NamedMapSchema(
25
+ allOmitEmpty([
26
+ {
27
+ key: 'txn',
28
+ valueSchema: Transaction.encodingSchema,
29
+ },
30
+ {
31
+ key: 'sig',
32
+ valueSchema: new OptionalSchema(new FixedLengthByteArraySchema(64)),
33
+ },
34
+ {
35
+ key: 'msig',
36
+ valueSchema: new OptionalSchema(ENCODED_MULTISIG_SCHEMA),
37
+ },
38
+ {
39
+ key: 'lsig',
40
+ valueSchema: new OptionalSchema(LogicSig.encodingSchema),
41
+ },
42
+ {
43
+ key: 'sgnr',
44
+ valueSchema: new OptionalSchema(new AddressSchema()),
45
+ },
46
+ ])
47
+ );
48
+
49
+ /**
50
+ * The transaction that was signed
51
+ */
52
+ public readonly txn: Transaction;
53
+
54
+ /**
55
+ * Transaction signature
56
+ */
57
+ public readonly sig?: Uint8Array;
58
+
59
+ /**
60
+ * Multisig structure
61
+ */
62
+ public readonly msig?: EncodedMultisig;
63
+
64
+ /**
65
+ * Logic signature
66
+ */
67
+ public readonly lsig?: LogicSig;
68
+
69
+ /**
70
+ * The signer, if signing with a different key than the Transaction type `sender` property indicates
71
+ */
72
+ public readonly sgnr?: Address;
73
+
74
+ constructor({
75
+ txn,
76
+ sig,
77
+ msig,
78
+ lsig,
79
+ sgnr,
80
+ }: {
81
+ txn: Transaction;
82
+ sig?: Uint8Array;
83
+ msig?: EncodedMultisig;
84
+ lsig?: LogicSig;
85
+ sgnr?: Address;
86
+ }) {
87
+ this.txn = txn;
88
+ this.sig = sig;
89
+ this.msig = msig;
90
+ this.lsig = lsig;
91
+ this.sgnr = sgnr;
92
+
93
+ let numberOfSigs = 0;
94
+ if (sig) numberOfSigs += 1;
95
+ if (msig) numberOfSigs += 1;
96
+ if (lsig) numberOfSigs += 1;
97
+ if (numberOfSigs > 1) {
98
+ throw new Error(
99
+ `SignedTransaction must not have more than 1 signature. Got ${numberOfSigs}`
100
+ );
101
+ }
102
+ }
103
+
104
+ // eslint-disable-next-line class-methods-use-this
105
+ public getEncodingSchema() {
106
+ return SignedTransaction.encodingSchema;
107
+ }
108
+
109
+ public toEncodingData(): Map<string, unknown> {
110
+ return new Map<string, unknown>([
111
+ ['txn', this.txn.toEncodingData()],
112
+ ['sig', this.sig],
113
+ [
114
+ 'msig',
115
+ this.msig ? encodedMultiSigToEncodingData(this.msig) : undefined,
116
+ ],
117
+ ['lsig', this.lsig ? this.lsig.toEncodingData() : undefined],
118
+ ['sgnr', this.sgnr],
119
+ ]);
120
+ }
121
+
122
+ public static fromEncodingData(data: unknown): SignedTransaction {
123
+ if (!(data instanceof Map)) {
124
+ throw new Error(`Invalid decoded SignedTransaction: ${data}`);
125
+ }
126
+ return new SignedTransaction({
127
+ txn: Transaction.fromEncodingData(data.get('txn')),
128
+ sig: data.get('sig'),
129
+ msig: data.get('msig')
130
+ ? encodedMultiSigFromEncodingData(data.get('msig'))
131
+ : undefined,
132
+ lsig: data.get('lsig')
133
+ ? LogicSig.fromEncodingData(data.get('lsig'))
134
+ : undefined,
135
+ sgnr: data.get('sgnr'),
136
+ });
137
+ }
138
+ }
139
+
140
+ /**
141
+ * decodeSignedTransaction takes a Uint8Array (from transaction.signTxn) and converts it to an object
142
+ * containing the Transaction (txn), the signature (sig), and the auth-addr field if applicable (sgnr)
143
+ * @param transactionBuffer - the Uint8Array containing a transaction
144
+ * @returns containing a Transaction, the signature, and possibly an auth-addr field
145
+ */
146
+ export function decodeSignedTransaction(
147
+ transactionBuffer: Uint8Array
148
+ ): SignedTransaction {
149
+ return decodeMsgpack(transactionBuffer, SignedTransaction);
150
+ }
151
+
152
+ /**
153
+ * encodeUnsignedSimulateTransaction takes a txnBuilder.Transaction object,
154
+ * converts it into a SignedTransaction-like object, and converts it to a Buffer.
155
+ *
156
+ * Note: this function should only be used to simulate unsigned transactions.
157
+ *
158
+ * @param txn - Transaction object to simulate.
159
+ */
160
+ export function encodeUnsignedSimulateTransaction(txn: Transaction) {
161
+ const stxn = new SignedTransaction({ txn });
162
+ return encodeMsgpack(stxn);
163
+ }
package/src/signer.ts CHANGED
@@ -1,8 +1,13 @@
1
- import { encodeUnsignedSimulateTransaction, Transaction } from './transaction';
2
- import Account from './types/account';
3
- import { LogicSigAccount, signLogicSigTransactionObject } from './logicsig';
4
- import { MultisigMetadata } from './types/multisig';
5
- import { signMultisigTransaction, mergeMultisigTransactions } from './multisig';
1
+ import Account from './types/account.js';
2
+ import { Transaction } from './transaction.js';
3
+ import { encodeUnsignedSimulateTransaction } from './signedTransaction.js';
4
+ import { LogicSigAccount } from './logicsig.js';
5
+ import { signLogicSigTransactionObject } from './signing.js';
6
+ import { MultisigMetadata } from './multisig.js';
7
+ import {
8
+ signMultisigTransaction,
9
+ mergeMultisigTransactions,
10
+ } from './multisigSigning.js';
6
11
 
7
12
  /**
8
13
  * This type represents a function which can sign transactions from an atomic transaction group.
package/src/signing.ts ADDED
@@ -0,0 +1,95 @@
1
+ import * as nacl from './nacl/naclWrappers.js';
2
+ import { Address } from './encoding/address.js';
3
+ import * as encoding from './encoding/encoding.js';
4
+ import { SignedTransaction } from './signedTransaction.js';
5
+ import { Transaction } from './transaction.js';
6
+ import { LogicSig, LogicSigAccount } from './logicsig.js';
7
+ import { addressFromMultisigPreImg } from './multisig.js';
8
+
9
+ function signLogicSigTransactionWithAddress(
10
+ txn: Transaction,
11
+ lsig: LogicSig,
12
+ lsigAddress: Address
13
+ ) {
14
+ if (!lsig.verify(lsigAddress.publicKey)) {
15
+ throw new Error(
16
+ 'Logic signature verification failed. Ensure the program and signature are valid.'
17
+ );
18
+ }
19
+
20
+ let sgnr: Address | undefined;
21
+ if (!nacl.bytesEqual(lsigAddress.publicKey, txn.sender.publicKey)) {
22
+ sgnr = lsigAddress;
23
+ }
24
+
25
+ const signedTxn = new SignedTransaction({
26
+ lsig,
27
+ txn,
28
+ sgnr,
29
+ });
30
+
31
+ return {
32
+ txID: txn.txID(),
33
+ blob: encoding.encodeMsgpack(signedTxn),
34
+ };
35
+ }
36
+
37
+ /**
38
+ * signLogicSigTransactionObject takes a transaction and a LogicSig object and
39
+ * returns a signed transaction.
40
+ *
41
+ * @param txn - The transaction to sign.
42
+ * @param lsigObject - The LogicSig object that will sign the transaction.
43
+ *
44
+ * @returns Object containing txID and blob representing signed transaction.
45
+ */
46
+ export function signLogicSigTransactionObject(
47
+ txn: Transaction,
48
+ lsigObject: LogicSig | LogicSigAccount
49
+ ) {
50
+ let lsig: LogicSig;
51
+ let lsigAddress: Address;
52
+
53
+ if (lsigObject instanceof LogicSigAccount) {
54
+ lsig = lsigObject.lsig;
55
+ lsigAddress = lsigObject.address();
56
+ } else {
57
+ lsig = lsigObject;
58
+
59
+ if (lsig.sig) {
60
+ // For a LogicSig with a non-multisig delegating account, we cannot derive
61
+ // the address of that account from only its signature, so assume the
62
+ // delegating account is the sender. If that's not the case, the signing
63
+ // will fail.
64
+ lsigAddress = new Address(txn.sender.publicKey);
65
+ } else if (lsig.msig) {
66
+ const msigMetadata = {
67
+ version: lsig.msig.v,
68
+ threshold: lsig.msig.thr,
69
+ pks: lsig.msig.subsig.map((subsig) => subsig.pk),
70
+ };
71
+ lsigAddress = addressFromMultisigPreImg(msigMetadata);
72
+ } else {
73
+ lsigAddress = lsig.address();
74
+ }
75
+ }
76
+
77
+ return signLogicSigTransactionWithAddress(txn, lsig, lsigAddress);
78
+ }
79
+
80
+ /**
81
+ * signLogicSigTransaction takes a transaction and a LogicSig object and returns
82
+ * a signed transaction.
83
+ *
84
+ * @param txn - The transaction to sign.
85
+ * @param lsigObject - The LogicSig object that will sign the transaction.
86
+ *
87
+ * @returns Object containing txID and blob representing signed transaction.
88
+ * @throws error on failure
89
+ */
90
+ export function signLogicSigTransaction(
91
+ txn: Transaction,
92
+ lsigObject: LogicSig | LogicSigAccount
93
+ ) {
94
+ return signLogicSigTransactionObject(txn, lsigObject);
95
+ }