@algorandfoundation/algokit-utils 10.0.0-alpha.1 → 10.0.0-alpha.10

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 (316) hide show
  1. package/README.md +27 -5
  2. package/_virtual/rolldown_runtime.js +20 -11
  3. package/_virtual/rolldown_runtime.mjs +10 -5
  4. package/algo25/index.d.ts +2 -0
  5. package/algo25/index.js +9 -0
  6. package/algo25/index.mjs +3 -0
  7. package/algod-client/index.d.ts +2 -5
  8. package/package.json +1 -1
  9. package/packages/abi/src/abi-method.d.ts +1 -1
  10. package/packages/abi/src/abi-method.js.map +1 -1
  11. package/packages/abi/src/abi-method.mjs.map +1 -1
  12. package/packages/abi/src/abi-type.d.ts +1 -1
  13. package/packages/abi/src/abi-type.js +2 -1
  14. package/packages/abi/src/abi-type.js.map +1 -1
  15. package/packages/abi/src/abi-type.mjs +2 -1
  16. package/packages/abi/src/abi-type.mjs.map +1 -1
  17. package/packages/abi/src/arc56-contract.js +1 -0
  18. package/packages/abi/src/arc56-contract.js.map +1 -1
  19. package/packages/abi/src/arc56-contract.mjs +1 -0
  20. package/packages/abi/src/arc56-contract.mjs.map +1 -1
  21. package/packages/algo25/src/english.js.map +1 -1
  22. package/packages/algo25/src/english.mjs.map +1 -1
  23. package/packages/algo25/src/index.d.ts +40 -0
  24. package/packages/algo25/src/index.js +44 -0
  25. package/packages/algo25/src/index.js.map +1 -1
  26. package/packages/algo25/src/index.mjs +39 -1
  27. package/packages/algo25/src/index.mjs.map +1 -1
  28. package/packages/algod_client/src/apis/api-service.d.ts +44 -44
  29. package/packages/algod_client/src/apis/api-service.js +153 -153
  30. package/packages/algod_client/src/apis/api-service.js.map +1 -1
  31. package/packages/algod_client/src/apis/api-service.mjs +153 -153
  32. package/packages/algod_client/src/apis/api-service.mjs.map +1 -1
  33. package/packages/algod_client/src/core/api-error.js +3 -1
  34. package/packages/algod_client/src/core/api-error.js.map +1 -1
  35. package/packages/algod_client/src/core/api-error.mjs +3 -1
  36. package/packages/algod_client/src/core/api-error.mjs.map +1 -1
  37. package/packages/algod_client/src/core/model-runtime.js +4 -4
  38. package/packages/algod_client/src/core/model-runtime.js.map +1 -1
  39. package/packages/algod_client/src/core/model-runtime.mjs +6 -6
  40. package/packages/algod_client/src/core/model-runtime.mjs.map +1 -1
  41. package/packages/algod_client/src/models/account-participation.js +4 -4
  42. package/packages/algod_client/src/models/account-participation.js.map +1 -1
  43. package/packages/algod_client/src/models/account-participation.mjs +4 -4
  44. package/packages/algod_client/src/models/account-participation.mjs.map +1 -1
  45. package/packages/algod_client/src/models/application-state-schema.d.ts +2 -2
  46. package/packages/algod_client/src/models/application-state-schema.js +2 -2
  47. package/packages/algod_client/src/models/application-state-schema.js.map +1 -1
  48. package/packages/algod_client/src/models/application-state-schema.mjs +2 -2
  49. package/packages/algod_client/src/models/application-state-schema.mjs.map +1 -1
  50. package/packages/algod_client/src/models/asset-params.js +2 -1
  51. package/packages/algod_client/src/models/asset-params.js.map +1 -1
  52. package/packages/algod_client/src/models/asset-params.mjs +2 -1
  53. package/packages/algod_client/src/models/asset-params.mjs.map +1 -1
  54. package/packages/algod_client/src/models/block-response.js +1 -2
  55. package/packages/algod_client/src/models/block-response.js.map +1 -1
  56. package/packages/algod_client/src/models/block-response.mjs +2 -3
  57. package/packages/algod_client/src/models/block-response.mjs.map +1 -1
  58. package/packages/algod_client/src/models/block.d.ts +49 -29
  59. package/packages/algod_client/src/models/block.js +174 -98
  60. package/packages/algod_client/src/models/block.js.map +1 -1
  61. package/packages/algod_client/src/models/block.mjs +174 -98
  62. package/packages/algod_client/src/models/block.mjs.map +1 -1
  63. package/packages/algod_client/src/models/ledger-state-delta.js +1 -1
  64. package/packages/algod_client/src/models/ledger-state-delta.js.map +1 -1
  65. package/packages/algod_client/src/models/ledger-state-delta.mjs +2 -2
  66. package/packages/algod_client/src/models/ledger-state-delta.mjs.map +1 -1
  67. package/packages/algod_client/src/models/simulate-unnamed-resources-accessed.d.ts +3 -5
  68. package/packages/algod_client/src/models/simulate-unnamed-resources-accessed.js +4 -6
  69. package/packages/algod_client/src/models/simulate-unnamed-resources-accessed.js.map +1 -1
  70. package/packages/algod_client/src/models/simulate-unnamed-resources-accessed.mjs +3 -5
  71. package/packages/algod_client/src/models/simulate-unnamed-resources-accessed.mjs.map +1 -1
  72. package/packages/algod_client/src/models/transaction-parameters-response.js +2 -2
  73. package/packages/algod_client/src/models/transaction-parameters-response.js.map +1 -1
  74. package/packages/algod_client/src/models/transaction-parameters-response.mjs +2 -2
  75. package/packages/algod_client/src/models/transaction-parameters-response.mjs.map +1 -1
  76. package/packages/common/src/address.js +0 -14
  77. package/packages/common/src/address.js.map +1 -1
  78. package/packages/common/src/address.mjs +1 -14
  79. package/packages/common/src/address.mjs.map +1 -1
  80. package/packages/common/src/codecs/composite/map.js +7 -4
  81. package/packages/common/src/codecs/composite/map.js.map +1 -1
  82. package/packages/common/src/codecs/composite/map.mjs +7 -4
  83. package/packages/common/src/codecs/composite/map.mjs.map +1 -1
  84. package/packages/common/src/codecs/composite/record.js +0 -1
  85. package/packages/common/src/codecs/composite/record.js.map +1 -1
  86. package/packages/common/src/codecs/primitives/address.js +0 -1
  87. package/packages/common/src/codecs/primitives/address.js.map +1 -1
  88. package/packages/common/src/codecs/primitives/bytes.js +0 -1
  89. package/packages/common/src/codecs/primitives/bytes.js.map +1 -1
  90. package/packages/common/src/codecs/primitives/fixed-bytes.js +0 -1
  91. package/packages/common/src/codecs/primitives/fixed-bytes.js.map +1 -1
  92. package/packages/common/src/codecs/wire.js +0 -1
  93. package/packages/common/src/codecs/wire.js.map +1 -1
  94. package/packages/common/src/json.mjs +2 -2
  95. package/packages/common/src/json.mjs.map +1 -1
  96. package/packages/common/src/msgpack.js +0 -1
  97. package/packages/common/src/msgpack.js.map +1 -1
  98. package/packages/indexer_client/src/apis/api-service.d.ts +1 -1
  99. package/packages/indexer_client/src/apis/api-service.js +12 -12
  100. package/packages/indexer_client/src/apis/api-service.js.map +1 -1
  101. package/packages/indexer_client/src/apis/api-service.mjs +12 -12
  102. package/packages/indexer_client/src/apis/api-service.mjs.map +1 -1
  103. package/packages/indexer_client/src/core/api-error.js +3 -1
  104. package/packages/indexer_client/src/core/api-error.js.map +1 -1
  105. package/packages/indexer_client/src/core/api-error.mjs +3 -1
  106. package/packages/indexer_client/src/core/api-error.mjs.map +1 -1
  107. package/packages/indexer_client/src/core/model-runtime.js +4 -4
  108. package/packages/indexer_client/src/core/model-runtime.js.map +1 -1
  109. package/packages/indexer_client/src/core/model-runtime.mjs +6 -6
  110. package/packages/indexer_client/src/core/model-runtime.mjs.map +1 -1
  111. package/packages/indexer_client/src/models/account-participation.js +4 -4
  112. package/packages/indexer_client/src/models/account-participation.js.map +1 -1
  113. package/packages/indexer_client/src/models/account-participation.mjs +4 -4
  114. package/packages/indexer_client/src/models/account-participation.mjs.map +1 -1
  115. package/packages/indexer_client/src/models/application-state-schema.d.ts +2 -2
  116. package/packages/indexer_client/src/models/application-state-schema.js +2 -2
  117. package/packages/indexer_client/src/models/application-state-schema.js.map +1 -1
  118. package/packages/indexer_client/src/models/application-state-schema.mjs +2 -2
  119. package/packages/indexer_client/src/models/application-state-schema.mjs.map +1 -1
  120. package/packages/indexer_client/src/models/asset-params.js +2 -1
  121. package/packages/indexer_client/src/models/asset-params.js.map +1 -1
  122. package/packages/indexer_client/src/models/asset-params.mjs +2 -1
  123. package/packages/indexer_client/src/models/asset-params.mjs.map +1 -1
  124. package/packages/indexer_client/src/models/block.js +8 -8
  125. package/packages/indexer_client/src/models/block.js.map +1 -1
  126. package/packages/indexer_client/src/models/block.mjs +8 -8
  127. package/packages/indexer_client/src/models/block.mjs.map +1 -1
  128. package/packages/indexer_client/src/models/eval-delta-key-value.d.ts +1 -1
  129. package/packages/indexer_client/src/models/eval-delta-key-value.js +2 -2
  130. package/packages/indexer_client/src/models/eval-delta-key-value.js.map +1 -1
  131. package/packages/indexer_client/src/models/eval-delta-key-value.mjs +2 -2
  132. package/packages/indexer_client/src/models/eval-delta-key-value.mjs.map +1 -1
  133. package/packages/indexer_client/src/models/eval-delta.d.ts +1 -1
  134. package/packages/indexer_client/src/models/eval-delta.js +2 -2
  135. package/packages/indexer_client/src/models/eval-delta.js.map +1 -1
  136. package/packages/indexer_client/src/models/eval-delta.mjs +2 -2
  137. package/packages/indexer_client/src/models/eval-delta.mjs.map +1 -1
  138. package/packages/indexer_client/src/models/hb-proof-fields.js +6 -6
  139. package/packages/indexer_client/src/models/hb-proof-fields.js.map +1 -1
  140. package/packages/indexer_client/src/models/hb-proof-fields.mjs +6 -6
  141. package/packages/indexer_client/src/models/hb-proof-fields.mjs.map +1 -1
  142. package/packages/indexer_client/src/models/state-proof-verifier.js +2 -2
  143. package/packages/indexer_client/src/models/state-proof-verifier.js.map +1 -1
  144. package/packages/indexer_client/src/models/state-proof-verifier.mjs +2 -2
  145. package/packages/indexer_client/src/models/state-proof-verifier.mjs.map +1 -1
  146. package/packages/indexer_client/src/models/state-schema.d.ts +2 -2
  147. package/packages/indexer_client/src/models/state-schema.js +2 -2
  148. package/packages/indexer_client/src/models/state-schema.js.map +1 -1
  149. package/packages/indexer_client/src/models/state-schema.mjs +2 -2
  150. package/packages/indexer_client/src/models/state-schema.mjs.map +1 -1
  151. package/packages/indexer_client/src/models/teal-key-value.d.ts +1 -1
  152. package/packages/indexer_client/src/models/teal-key-value.js +2 -2
  153. package/packages/indexer_client/src/models/teal-key-value.js.map +1 -1
  154. package/packages/indexer_client/src/models/teal-key-value.mjs +2 -2
  155. package/packages/indexer_client/src/models/teal-key-value.mjs.map +1 -1
  156. package/packages/indexer_client/src/models/transaction-heartbeat.js +2 -1
  157. package/packages/indexer_client/src/models/transaction-heartbeat.js.map +1 -1
  158. package/packages/indexer_client/src/models/transaction-heartbeat.mjs +2 -1
  159. package/packages/indexer_client/src/models/transaction-heartbeat.mjs.map +1 -1
  160. package/packages/indexer_client/src/models/transaction-keyreg.js +4 -4
  161. package/packages/indexer_client/src/models/transaction-keyreg.js.map +1 -1
  162. package/packages/indexer_client/src/models/transaction-keyreg.mjs +4 -4
  163. package/packages/indexer_client/src/models/transaction-keyreg.mjs.map +1 -1
  164. package/packages/indexer_client/src/models/transaction-signature-logicsig.js +2 -1
  165. package/packages/indexer_client/src/models/transaction-signature-logicsig.js.map +1 -1
  166. package/packages/indexer_client/src/models/transaction-signature-logicsig.mjs +2 -1
  167. package/packages/indexer_client/src/models/transaction-signature-logicsig.mjs.map +1 -1
  168. package/packages/indexer_client/src/models/transaction-signature-multisig-subsignature.js +3 -3
  169. package/packages/indexer_client/src/models/transaction-signature-multisig-subsignature.js.map +1 -1
  170. package/packages/indexer_client/src/models/transaction-signature-multisig-subsignature.mjs +3 -3
  171. package/packages/indexer_client/src/models/transaction-signature-multisig-subsignature.mjs.map +1 -1
  172. package/packages/indexer_client/src/models/transaction.d.ts +2 -2
  173. package/packages/indexer_client/src/models/transaction.js +6 -5
  174. package/packages/indexer_client/src/models/transaction.js.map +1 -1
  175. package/packages/indexer_client/src/models/transaction.mjs +6 -5
  176. package/packages/indexer_client/src/models/transaction.mjs.map +1 -1
  177. package/packages/kmd_client/src/apis/api-service.d.ts +5 -5
  178. package/packages/kmd_client/src/apis/api-service.js +32 -32
  179. package/packages/kmd_client/src/apis/api-service.js.map +1 -1
  180. package/packages/kmd_client/src/apis/api-service.mjs +32 -32
  181. package/packages/kmd_client/src/apis/api-service.mjs.map +1 -1
  182. package/packages/kmd_client/src/core/api-error.js +3 -1
  183. package/packages/kmd_client/src/core/api-error.js.map +1 -1
  184. package/packages/kmd_client/src/core/api-error.mjs +3 -1
  185. package/packages/kmd_client/src/core/api-error.mjs.map +1 -1
  186. package/packages/kmd_client/src/core/model-runtime.js +4 -4
  187. package/packages/kmd_client/src/core/model-runtime.js.map +1 -1
  188. package/packages/kmd_client/src/core/model-runtime.mjs +6 -6
  189. package/packages/kmd_client/src/core/model-runtime.mjs.map +1 -1
  190. package/packages/sdk/src/encoding/encoding.js +12 -2
  191. package/packages/sdk/src/encoding/encoding.js.map +1 -1
  192. package/packages/sdk/src/encoding/encoding.mjs +12 -1
  193. package/packages/sdk/src/encoding/encoding.mjs.map +1 -1
  194. package/packages/sdk/src/encoding/schema/map.js +0 -2
  195. package/packages/sdk/src/encoding/schema/map.js.map +1 -1
  196. package/packages/sdk/src/utils/utils.mjs +2 -2
  197. package/packages/sdk/src/utils/utils.mjs.map +1 -1
  198. package/packages/transact/src/logicsig.d.ts +3 -15
  199. package/packages/transact/src/logicsig.js +16 -36
  200. package/packages/transact/src/logicsig.js.map +1 -1
  201. package/packages/transact/src/logicsig.mjs +18 -36
  202. package/packages/transact/src/logicsig.mjs.map +1 -1
  203. package/packages/transact/src/multisig.d.ts +7 -115
  204. package/packages/transact/src/multisig.js +86 -136
  205. package/packages/transact/src/multisig.js.map +1 -1
  206. package/packages/transact/src/multisig.mjs +87 -117
  207. package/packages/transact/src/multisig.mjs.map +1 -1
  208. package/packages/transact/src/transactions/app-call.d.ts +10 -10
  209. package/packages/transact/src/transactions/app-call.js.map +1 -1
  210. package/packages/transact/src/transactions/app-call.mjs.map +1 -1
  211. package/packages/transact/src/transactions/reference-types-meta.d.ts +26 -0
  212. package/packages/transact/src/transactions/reference-types-meta.js +71 -0
  213. package/packages/transact/src/transactions/reference-types-meta.js.map +1 -0
  214. package/packages/transact/src/transactions/reference-types-meta.mjs +69 -0
  215. package/packages/transact/src/transactions/reference-types-meta.mjs.map +1 -0
  216. package/packages/transact/src/transactions/signed-transaction-meta.js +2 -3
  217. package/packages/transact/src/transactions/signed-transaction-meta.js.map +1 -1
  218. package/packages/transact/src/transactions/signed-transaction-meta.mjs +3 -3
  219. package/packages/transact/src/transactions/signed-transaction-meta.mjs.map +1 -1
  220. package/packages/transact/src/transactions/signed-transaction.d.ts +2 -2
  221. package/packages/transact/src/transactions/signed-transaction.js.map +1 -1
  222. package/packages/transact/src/transactions/signed-transaction.mjs.map +1 -1
  223. package/packages/transact/src/transactions/transaction-meta.js +29 -23
  224. package/packages/transact/src/transactions/transaction-meta.js.map +1 -1
  225. package/packages/transact/src/transactions/transaction-meta.mjs +29 -23
  226. package/packages/transact/src/transactions/transaction-meta.mjs.map +1 -1
  227. package/packages/transact/src/transactions/transaction.js +1 -0
  228. package/packages/transact/src/transactions/transaction.js.map +1 -1
  229. package/packages/transact/src/transactions/transaction.mjs +1 -0
  230. package/packages/transact/src/transactions/transaction.mjs.map +1 -1
  231. package/sdk/index.js +1 -1
  232. package/testing/fixtures/algorand-fixture.d.ts +3 -3
  233. package/testing/fixtures/algorand-fixture.js.map +1 -1
  234. package/testing/fixtures/algorand-fixture.mjs.map +1 -1
  235. package/transact/index.d.ts +5 -4
  236. package/transact/index.js +4 -22
  237. package/transact/index.mjs +4 -3
  238. package/transaction/transaction.js +2 -2
  239. package/transaction/transaction.js.map +1 -1
  240. package/transaction/transaction.mjs +2 -2
  241. package/transaction/transaction.mjs.map +1 -1
  242. package/transactions/app-call.d.ts +4 -3
  243. package/transactions/app-call.js +15 -15
  244. package/transactions/app-call.js.map +1 -1
  245. package/transactions/app-call.mjs +15 -15
  246. package/transactions/app-call.mjs.map +1 -1
  247. package/transactions/asset-config.d.ts +1 -1
  248. package/transactions/asset-config.js +1 -1
  249. package/transactions/asset-config.js.map +1 -1
  250. package/transactions/asset-config.mjs +1 -1
  251. package/transactions/asset-config.mjs.map +1 -1
  252. package/transactions/method-call.js +12 -12
  253. package/transactions/method-call.js.map +1 -1
  254. package/transactions/method-call.mjs +12 -12
  255. package/transactions/method-call.mjs.map +1 -1
  256. package/types/account-manager.js +2 -2
  257. package/types/account-manager.js.map +1 -1
  258. package/types/account-manager.mjs +2 -2
  259. package/types/account-manager.mjs.map +1 -1
  260. package/types/algorand-client-transaction-creator.d.ts +97 -83
  261. package/types/algorand-client-transaction-creator.js +8 -0
  262. package/types/algorand-client-transaction-creator.js.map +1 -1
  263. package/types/algorand-client-transaction-creator.mjs +8 -0
  264. package/types/algorand-client-transaction-creator.mjs.map +1 -1
  265. package/types/algorand-client-transaction-sender.d.ts +100 -86
  266. package/types/algorand-client-transaction-sender.js +8 -1
  267. package/types/algorand-client-transaction-sender.js.map +1 -1
  268. package/types/algorand-client-transaction-sender.mjs +8 -0
  269. package/types/algorand-client-transaction-sender.mjs.map +1 -1
  270. package/types/app-client.d.ts +265 -260
  271. package/types/app-client.js +0 -1
  272. package/types/app-client.js.map +1 -1
  273. package/types/app-deployer.js +1 -1
  274. package/types/app-deployer.js.map +1 -1
  275. package/types/app-deployer.mjs +1 -1
  276. package/types/app-deployer.mjs.map +1 -1
  277. package/types/app-factory.d.ts +91 -88
  278. package/types/app-manager.d.ts +3 -1
  279. package/types/app-manager.js +16 -10
  280. package/types/app-manager.js.map +1 -1
  281. package/types/app-manager.mjs +16 -10
  282. package/types/app-manager.mjs.map +1 -1
  283. package/types/app-spec.js +12 -5
  284. package/types/app-spec.js.map +1 -1
  285. package/types/app-spec.mjs +12 -5
  286. package/types/app-spec.mjs.map +1 -1
  287. package/types/asset-manager.js +1 -1
  288. package/types/asset-manager.js.map +1 -1
  289. package/types/asset-manager.mjs +1 -1
  290. package/types/asset-manager.mjs.map +1 -1
  291. package/types/composer.d.ts +9 -0
  292. package/types/composer.js +28 -13
  293. package/types/composer.js.map +1 -1
  294. package/types/composer.mjs +28 -12
  295. package/types/composer.mjs.map +1 -1
  296. package/types/kmd-account-manager.d.ts +1 -0
  297. package/types/kmd-account-manager.js +21 -10
  298. package/types/kmd-account-manager.js.map +1 -1
  299. package/types/kmd-account-manager.mjs +22 -11
  300. package/types/kmd-account-manager.mjs.map +1 -1
  301. package/types/testing.d.ts +2 -2
  302. package/packages/algod_client/src/models/application-local-reference.d.ts +0 -20
  303. package/packages/algod_client/src/models/application-local-reference.js +0 -23
  304. package/packages/algod_client/src/models/application-local-reference.js.map +0 -1
  305. package/packages/algod_client/src/models/application-local-reference.mjs +0 -23
  306. package/packages/algod_client/src/models/application-local-reference.mjs.map +0 -1
  307. package/packages/algod_client/src/models/asset-holding-reference.d.ts +0 -20
  308. package/packages/algod_client/src/models/asset-holding-reference.js +0 -23
  309. package/packages/algod_client/src/models/asset-holding-reference.js.map +0 -1
  310. package/packages/algod_client/src/models/asset-holding-reference.mjs +0 -23
  311. package/packages/algod_client/src/models/asset-holding-reference.mjs.map +0 -1
  312. package/packages/algod_client/src/models/box-reference.d.ts +0 -17
  313. package/packages/algod_client/src/models/box-reference.js +0 -23
  314. package/packages/algod_client/src/models/box-reference.js.map +0 -1
  315. package/packages/algod_client/src/models/box-reference.mjs +0 -23
  316. package/packages/algod_client/src/models/box-reference.mjs.map +0 -1
@@ -6,39 +6,31 @@ const require_signed_transaction_meta = require('./transactions/signed-transacti
6
6
  const require_signed_transaction = require('./transactions/signed-transaction.js');
7
7
 
8
8
  //#region packages/transact/src/logicsig.ts
9
- const base64regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;
10
- /** sanityCheckProgram performs heuristic program validation:
11
- * check if passed in bytes are Algorand address or is B64 encoded, rather than Teal bytes
12
- *
13
- * @param program - Program bytes to check
14
- */
15
- function sanityCheckProgram(program) {
16
- if (!program || program.length === 0) throw new Error("empty program");
17
- const lineBreakOrd = "\n".charCodeAt(0);
18
- const blankSpaceOrd = " ".charCodeAt(0);
19
- const tildeOrd = "~".charCodeAt(0);
20
- const isPrintable = (x) => blankSpaceOrd <= x && x <= tildeOrd;
21
- if (program.every((x) => x === lineBreakOrd || isPrintable(x))) {
22
- const programStr = new TextDecoder().decode(program);
23
- if (require_address.isValidAddress(programStr)) throw new Error("requesting program bytes, get Algorand address");
24
- if (base64regex.test(programStr)) throw new Error("program should not be b64 encoded");
25
- throw new Error("program bytes are all ASCII printable characters, not looking like Teal byte code");
26
- }
27
- }
28
9
  const PROGRAM_TAG = new TextEncoder().encode("Program");
29
10
  const MSIG_PROGRAM_TAG = new TextEncoder().encode("MsigProgram");
30
11
  const SIGN_PROGRAM_DATA_PREFIX = new TextEncoder().encode("ProgData");
31
- var LogicSigAccount = class {
12
+ var LogicSigAccount = class LogicSigAccount {
32
13
  logic;
33
14
  args;
34
15
  sig;
35
16
  msig;
36
17
  lmsig;
18
+ static fromSignature(signature) {
19
+ const lsigAccount = new LogicSigAccount(signature.logic, signature.args || []);
20
+ lsigAccount.sig = signature.sig;
21
+ lsigAccount.msig = signature.msig;
22
+ lsigAccount.lmsig = signature.lmsig;
23
+ return lsigAccount;
24
+ }
25
+ static fromBytes(encodedLsig) {
26
+ const decoded = require_msgpack.decodeMsgpack(encodedLsig);
27
+ const lsigSignature = require_signed_transaction_meta.logicSignatureCodec.decode(decoded, "msgpack");
28
+ return LogicSigAccount.fromSignature(lsigSignature);
29
+ }
37
30
  constructor(program, programArgs) {
38
31
  if (programArgs && (!Array.isArray(programArgs) || !programArgs.every((arg) => arg.constructor === Uint8Array))) throw new TypeError("Invalid arguments");
39
32
  let args = [];
40
33
  if (programArgs != null) args = programArgs.map((arg) => new Uint8Array(arg));
41
- sanityCheckProgram(program);
42
34
  this.logic = program;
43
35
  this.args = args;
44
36
  }
@@ -76,16 +68,16 @@ var LogicSigAccount = class {
76
68
  }
77
69
  async delegateMultisig(msig) {
78
70
  if (this.lmsig == void 0) this.lmsig = {
79
- subsignatures: [],
71
+ subsigs: [],
80
72
  version: msig.params.version,
81
73
  threshold: msig.params.threshold
82
74
  };
83
75
  for (const addrWithSigner of msig.subSigners) {
84
76
  const { lsigSigner, addr } = addrWithSigner;
85
77
  const signature = await lsigSigner(this, msig);
86
- this.lmsig.subsignatures.push({
78
+ this.lmsig.subsigs.push({
87
79
  publicKey: addr.publicKey,
88
- signature
80
+ sig: signature
89
81
  });
90
82
  }
91
83
  }
@@ -100,19 +92,7 @@ var LogicSigAccount = class {
100
92
  return require_array.concatArrays(SIGN_PROGRAM_DATA_PREFIX, this.address().publicKey, data);
101
93
  }
102
94
  };
103
- /**
104
- * Decodes MsgPack bytes into a logic signature.
105
- *
106
- * @param encodedLogicSignature - The MsgPack encoded logic signature
107
- * @returns The decoded LogicSignature or an error if decoding fails.
108
- */
109
- function decodeLogicSignature(encodedLogicSignature) {
110
- const decodedData = require_msgpack.decodeMsgpack(encodedLogicSignature);
111
- return require_signed_transaction_meta.logicSignatureCodec.decode(decodedData, "msgpack");
112
- }
113
95
 
114
96
  //#endregion
115
97
  exports.LogicSigAccount = LogicSigAccount;
116
- exports.decodeLogicSignature = decodeLogicSignature;
117
- exports.sanityCheckProgram = sanityCheckProgram;
118
98
  //# sourceMappingURL=logicsig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logicsig.js","names":["isValidAddress","args: Uint8Array[]","signedTxns: Uint8Array[]","stxn: SignedTransaction","encodeSignedTransaction","Address","hash","concatArrays","decodeMsgpack","logicSignatureCodec"],"sources":["../../../../packages/transact/src/logicsig.ts"],"sourcesContent":["import { Address, concatArrays, decodeMsgpack, hash, isValidAddress } from '@algorandfoundation/algokit-common'\nimport { MultisigAccount } from './multisig'\nimport { TransactionSigner } from './signer'\nimport { LogicSignature, MultisigSignature, SignedTransaction, encodeSignedTransaction } from './transactions/signed-transaction'\nimport { logicSignatureCodec } from './transactions/signed-transaction-meta'\nimport { Transaction } from './transactions/transaction'\n\n// base64regex is the regex to test for base64 strings\nconst base64regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/\n\n/** sanityCheckProgram performs heuristic program validation:\n * check if passed in bytes are Algorand address or is B64 encoded, rather than Teal bytes\n *\n * @param program - Program bytes to check\n */\nexport function sanityCheckProgram(program: Uint8Array) {\n if (!program || program.length === 0) throw new Error('empty program')\n\n const lineBreakOrd = '\\n'.charCodeAt(0)\n const blankSpaceOrd = ' '.charCodeAt(0)\n const tildeOrd = '~'.charCodeAt(0)\n\n const isPrintable = (x: number) => blankSpaceOrd <= x && x <= tildeOrd\n const isAsciiPrintable = program.every((x: number) => x === lineBreakOrd || isPrintable(x))\n\n if (isAsciiPrintable) {\n const programStr = new TextDecoder().decode(program)\n\n if (isValidAddress(programStr)) throw new Error('requesting program bytes, get Algorand address')\n\n if (base64regex.test(programStr)) throw new Error('program should not be b64 encoded')\n\n throw new Error('program bytes are all ASCII printable characters, not looking like Teal byte code')\n }\n}\n\nconst PROGRAM_TAG = new TextEncoder().encode('Program')\nconst MSIG_PROGRAM_TAG = new TextEncoder().encode('MsigProgram')\nconst SIGN_PROGRAM_DATA_PREFIX = new TextEncoder().encode('ProgData')\n\n/** Function for signing logic signatures for delegation */\nexport type DelegatedLsigSigner = (lsig: LogicSigAccount, msig?: MultisigAccount) => Promise<Uint8Array>\n\n/** Function for signing program data for a logic signature */\nexport type ProgramDataSigner = (data: Uint8Array, lsig: LogicSigAccount) => Promise<Uint8Array>\n\nexport class LogicSigAccount {\n logic: Uint8Array\n args: Uint8Array[]\n sig?: Uint8Array\n msig?: MultisigSignature\n lmsig?: MultisigSignature\n\n constructor(program: Uint8Array, programArgs?: Array<Uint8Array> | null) {\n if (programArgs && (!Array.isArray(programArgs) || !programArgs.every((arg) => arg.constructor === Uint8Array))) {\n throw new TypeError('Invalid arguments')\n }\n\n let args: Uint8Array[] = []\n if (programArgs != null) args = programArgs.map((arg) => new Uint8Array(arg))\n\n sanityCheckProgram(program)\n\n this.logic = program\n this.args = args\n }\n\n get signer(): TransactionSigner {\n return async (txns: Transaction[], indexes: number[]) => {\n const signedTxns: Uint8Array[] = []\n for (const index of indexes) {\n const txn = txns[index]\n\n const stxn: SignedTransaction = {\n txn,\n lsig: { logic: this.logic, args: this.args, msig: this.msig, lmsig: this.lmsig, sig: this.sig },\n }\n\n signedTxns.push(encodeSignedTransaction(stxn))\n }\n\n return signedTxns\n }\n }\n\n get addr(): Address {\n return this.address()\n }\n\n /**\n * Compute hash of the logic sig program (that is the same as escrow account address) as string address\n * @returns String representation of the address\n */\n address(): Address {\n const toBeSigned = concatArrays(PROGRAM_TAG, this.logic)\n const h = hash(toBeSigned)\n return new Address(h)\n }\n\n async delegate(signer: DelegatedLsigSigner) {\n this.sig = await signer(this)\n }\n\n async delegateMultisig(msig: MultisigAccount) {\n if (this.lmsig == undefined) {\n this.lmsig = {\n subsignatures: [],\n version: msig.params.version,\n threshold: msig.params.threshold,\n }\n }\n for (const addrWithSigner of msig.subSigners) {\n const { lsigSigner, addr } = addrWithSigner\n const signature = await lsigSigner(this, msig)\n\n this.lmsig.subsignatures.push({ publicKey: addr.publicKey, signature })\n }\n }\n\n bytesToSignForDelegation(msig?: MultisigAccount): Uint8Array {\n if (msig) {\n return concatArrays(MSIG_PROGRAM_TAG, msig.addr.publicKey, this.logic)\n } else {\n return concatArrays(PROGRAM_TAG, this.logic)\n }\n }\n\n signProgramData(data: Uint8Array, signer: ProgramDataSigner): Promise<Uint8Array> {\n return signer(data, this)\n }\n\n programDataToSign(data: Uint8Array): Uint8Array {\n return concatArrays(SIGN_PROGRAM_DATA_PREFIX, this.address().publicKey, data)\n }\n}\n\n/**\n * Decodes MsgPack bytes into a logic signature.\n *\n * @param encodedLogicSignature - The MsgPack encoded logic signature\n * @returns The decoded LogicSignature or an error if decoding fails.\n */\nexport function decodeLogicSignature(encodedLogicSignature: Uint8Array): LogicSignature {\n const decodedData = decodeMsgpack(encodedLogicSignature)\n return logicSignatureCodec.decode(decodedData, 'msgpack')\n}\n"],"mappings":";;;;;;;;AAQA,MAAM,cAAc;;;;;;AAOpB,SAAgB,mBAAmB,SAAqB;AACtD,KAAI,CAAC,WAAW,QAAQ,WAAW,EAAG,OAAM,IAAI,MAAM,gBAAgB;CAEtE,MAAM,eAAe,KAAK,WAAW,EAAE;CACvC,MAAM,gBAAgB,IAAI,WAAW,EAAE;CACvC,MAAM,WAAW,IAAI,WAAW,EAAE;CAElC,MAAM,eAAe,MAAc,iBAAiB,KAAK,KAAK;AAG9D,KAFyB,QAAQ,OAAO,MAAc,MAAM,gBAAgB,YAAY,EAAE,CAAC,EAErE;EACpB,MAAM,aAAa,IAAI,aAAa,CAAC,OAAO,QAAQ;AAEpD,MAAIA,+BAAe,WAAW,CAAE,OAAM,IAAI,MAAM,iDAAiD;AAEjG,MAAI,YAAY,KAAK,WAAW,CAAE,OAAM,IAAI,MAAM,oCAAoC;AAEtF,QAAM,IAAI,MAAM,oFAAoF;;;AAIxG,MAAM,cAAc,IAAI,aAAa,CAAC,OAAO,UAAU;AACvD,MAAM,mBAAmB,IAAI,aAAa,CAAC,OAAO,cAAc;AAChE,MAAM,2BAA2B,IAAI,aAAa,CAAC,OAAO,WAAW;AAQrE,IAAa,kBAAb,MAA6B;CAC3B;CACA;CACA;CACA;CACA;CAEA,YAAY,SAAqB,aAAwC;AACvE,MAAI,gBAAgB,CAAC,MAAM,QAAQ,YAAY,IAAI,CAAC,YAAY,OAAO,QAAQ,IAAI,gBAAgB,WAAW,EAC5G,OAAM,IAAI,UAAU,oBAAoB;EAG1C,IAAIC,OAAqB,EAAE;AAC3B,MAAI,eAAe,KAAM,QAAO,YAAY,KAAK,QAAQ,IAAI,WAAW,IAAI,CAAC;AAE7E,qBAAmB,QAAQ;AAE3B,OAAK,QAAQ;AACb,OAAK,OAAO;;CAGd,IAAI,SAA4B;AAC9B,SAAO,OAAO,MAAqB,YAAsB;GACvD,MAAMC,aAA2B,EAAE;AACnC,QAAK,MAAM,SAAS,SAAS;IAG3B,MAAMC,OAA0B;KAC9B,KAHU,KAAK;KAIf,MAAM;MAAE,OAAO,KAAK;MAAO,MAAM,KAAK;MAAM,MAAM,KAAK;MAAM,OAAO,KAAK;MAAO,KAAK,KAAK;MAAK;KAChG;AAED,eAAW,KAAKC,mDAAwB,KAAK,CAAC;;AAGhD,UAAO;;;CAIX,IAAI,OAAgB;AAClB,SAAO,KAAK,SAAS;;;;;;CAOvB,UAAmB;AAGjB,SAAO,IAAIC,wBADDC,oBADSC,2BAAa,aAAa,KAAK,MAAM,CAC9B,CACL;;CAGvB,MAAM,SAAS,QAA6B;AAC1C,OAAK,MAAM,MAAM,OAAO,KAAK;;CAG/B,MAAM,iBAAiB,MAAuB;AAC5C,MAAI,KAAK,SAAS,OAChB,MAAK,QAAQ;GACX,eAAe,EAAE;GACjB,SAAS,KAAK,OAAO;GACrB,WAAW,KAAK,OAAO;GACxB;AAEH,OAAK,MAAM,kBAAkB,KAAK,YAAY;GAC5C,MAAM,EAAE,YAAY,SAAS;GAC7B,MAAM,YAAY,MAAM,WAAW,MAAM,KAAK;AAE9C,QAAK,MAAM,cAAc,KAAK;IAAE,WAAW,KAAK;IAAW;IAAW,CAAC;;;CAI3E,yBAAyB,MAAoC;AAC3D,MAAI,KACF,QAAOA,2BAAa,kBAAkB,KAAK,KAAK,WAAW,KAAK,MAAM;MAEtE,QAAOA,2BAAa,aAAa,KAAK,MAAM;;CAIhD,gBAAgB,MAAkB,QAAgD;AAChF,SAAO,OAAO,MAAM,KAAK;;CAG3B,kBAAkB,MAA8B;AAC9C,SAAOA,2BAAa,0BAA0B,KAAK,SAAS,CAAC,WAAW,KAAK;;;;;;;;;AAUjF,SAAgB,qBAAqB,uBAAmD;CACtF,MAAM,cAAcC,8BAAc,sBAAsB;AACxD,QAAOC,oDAAoB,OAAO,aAAa,UAAU"}
1
+ {"version":3,"file":"logicsig.js","names":["decodeMsgpack","logicSignatureCodec","args: Uint8Array[]","signedTxns: Uint8Array[]","stxn: SignedTransaction","encodeSignedTransaction","Address","hash","concatArrays"],"sources":["../../../../packages/transact/src/logicsig.ts"],"sourcesContent":["import { Address, concatArrays, decodeMsgpack, hash } from '@algorandfoundation/algokit-common'\nimport { MultisigAccount } from './multisig'\nimport { TransactionSigner } from './signer'\nimport { LogicSignature, MultisigSignature, SignedTransaction, encodeSignedTransaction } from './transactions/signed-transaction'\nimport { Transaction } from './transactions/transaction'\nimport { logicSignatureCodec } from './transactions/signed-transaction-meta'\n\nconst PROGRAM_TAG = new TextEncoder().encode('Program')\nconst MSIG_PROGRAM_TAG = new TextEncoder().encode('MsigProgram')\nconst SIGN_PROGRAM_DATA_PREFIX = new TextEncoder().encode('ProgData')\n\n/** Function for signing logic signatures for delegation */\nexport type DelegatedLsigSigner = (lsig: LogicSigAccount, msig?: MultisigAccount) => Promise<Uint8Array>\n\n/** Function for signing program data for a logic signature */\nexport type ProgramDataSigner = (data: Uint8Array, lsig: LogicSigAccount) => Promise<Uint8Array>\n\nexport class LogicSigAccount {\n logic: Uint8Array\n args: Uint8Array[]\n sig?: Uint8Array\n msig?: MultisigSignature\n lmsig?: MultisigSignature\n\n static fromSignature(signature: LogicSignature): LogicSigAccount {\n const lsigAccount = new LogicSigAccount(signature.logic, signature.args || [])\n lsigAccount.sig = signature.sig\n lsigAccount.msig = signature.msig\n lsigAccount.lmsig = signature.lmsig\n return lsigAccount\n }\n\n static fromBytes(encodedLsig: Uint8Array): LogicSigAccount {\n const decoded = decodeMsgpack(encodedLsig)\n const lsigSignature = logicSignatureCodec.decode(decoded, 'msgpack')\n return LogicSigAccount.fromSignature(lsigSignature)\n }\n\n constructor(program: Uint8Array, programArgs?: Array<Uint8Array> | null) {\n if (programArgs && (!Array.isArray(programArgs) || !programArgs.every((arg) => arg.constructor === Uint8Array))) {\n throw new TypeError('Invalid arguments')\n }\n\n let args: Uint8Array[] = []\n if (programArgs != null) args = programArgs.map((arg) => new Uint8Array(arg))\n\n this.logic = program\n this.args = args\n }\n\n get signer(): TransactionSigner {\n return async (txns: Transaction[], indexes: number[]) => {\n const signedTxns: Uint8Array[] = []\n for (const index of indexes) {\n const txn = txns[index]\n\n const stxn: SignedTransaction = {\n txn,\n lsig: { logic: this.logic, args: this.args, msig: this.msig, lmsig: this.lmsig, sig: this.sig },\n }\n\n signedTxns.push(encodeSignedTransaction(stxn))\n }\n\n return signedTxns\n }\n }\n\n get addr(): Address {\n return this.address()\n }\n\n /**\n * Compute hash of the logic sig program (that is the same as escrow account address) as string address\n * @returns String representation of the address\n */\n address(): Address {\n const toBeSigned = concatArrays(PROGRAM_TAG, this.logic)\n const h = hash(toBeSigned)\n return new Address(h)\n }\n\n async delegate(signer: DelegatedLsigSigner) {\n this.sig = await signer(this)\n }\n\n async delegateMultisig(msig: MultisigAccount) {\n if (this.lmsig == undefined) {\n this.lmsig = {\n subsigs: [],\n version: msig.params.version,\n threshold: msig.params.threshold,\n }\n }\n for (const addrWithSigner of msig.subSigners) {\n const { lsigSigner, addr } = addrWithSigner\n const signature = await lsigSigner(this, msig)\n\n this.lmsig.subsigs.push({ publicKey: addr.publicKey, sig: signature })\n }\n }\n\n bytesToSignForDelegation(msig?: MultisigAccount): Uint8Array {\n if (msig) {\n return concatArrays(MSIG_PROGRAM_TAG, msig.addr.publicKey, this.logic)\n } else {\n return concatArrays(PROGRAM_TAG, this.logic)\n }\n }\n\n signProgramData(data: Uint8Array, signer: ProgramDataSigner): Promise<Uint8Array> {\n return signer(data, this)\n }\n\n programDataToSign(data: Uint8Array): Uint8Array {\n return concatArrays(SIGN_PROGRAM_DATA_PREFIX, this.address().publicKey, data)\n }\n}\n"],"mappings":";;;;;;;;AAOA,MAAM,cAAc,IAAI,aAAa,CAAC,OAAO,UAAU;AACvD,MAAM,mBAAmB,IAAI,aAAa,CAAC,OAAO,cAAc;AAChE,MAAM,2BAA2B,IAAI,aAAa,CAAC,OAAO,WAAW;AAQrE,IAAa,kBAAb,MAAa,gBAAgB;CAC3B;CACA;CACA;CACA;CACA;CAEA,OAAO,cAAc,WAA4C;EAC/D,MAAM,cAAc,IAAI,gBAAgB,UAAU,OAAO,UAAU,QAAQ,EAAE,CAAC;AAC9E,cAAY,MAAM,UAAU;AAC5B,cAAY,OAAO,UAAU;AAC7B,cAAY,QAAQ,UAAU;AAC9B,SAAO;;CAGT,OAAO,UAAU,aAA0C;EACzD,MAAM,UAAUA,8BAAc,YAAY;EAC1C,MAAM,gBAAgBC,oDAAoB,OAAO,SAAS,UAAU;AACpE,SAAO,gBAAgB,cAAc,cAAc;;CAGrD,YAAY,SAAqB,aAAwC;AACvE,MAAI,gBAAgB,CAAC,MAAM,QAAQ,YAAY,IAAI,CAAC,YAAY,OAAO,QAAQ,IAAI,gBAAgB,WAAW,EAC5G,OAAM,IAAI,UAAU,oBAAoB;EAG1C,IAAIC,OAAqB,EAAE;AAC3B,MAAI,eAAe,KAAM,QAAO,YAAY,KAAK,QAAQ,IAAI,WAAW,IAAI,CAAC;AAE7E,OAAK,QAAQ;AACb,OAAK,OAAO;;CAGd,IAAI,SAA4B;AAC9B,SAAO,OAAO,MAAqB,YAAsB;GACvD,MAAMC,aAA2B,EAAE;AACnC,QAAK,MAAM,SAAS,SAAS;IAG3B,MAAMC,OAA0B;KAC9B,KAHU,KAAK;KAIf,MAAM;MAAE,OAAO,KAAK;MAAO,MAAM,KAAK;MAAM,MAAM,KAAK;MAAM,OAAO,KAAK;MAAO,KAAK,KAAK;MAAK;KAChG;AAED,eAAW,KAAKC,mDAAwB,KAAK,CAAC;;AAGhD,UAAO;;;CAIX,IAAI,OAAgB;AAClB,SAAO,KAAK,SAAS;;;;;;CAOvB,UAAmB;AAGjB,SAAO,IAAIC,wBADDC,oBADSC,2BAAa,aAAa,KAAK,MAAM,CAC9B,CACL;;CAGvB,MAAM,SAAS,QAA6B;AAC1C,OAAK,MAAM,MAAM,OAAO,KAAK;;CAG/B,MAAM,iBAAiB,MAAuB;AAC5C,MAAI,KAAK,SAAS,OAChB,MAAK,QAAQ;GACX,SAAS,EAAE;GACX,SAAS,KAAK,OAAO;GACrB,WAAW,KAAK,OAAO;GACxB;AAEH,OAAK,MAAM,kBAAkB,KAAK,YAAY;GAC5C,MAAM,EAAE,YAAY,SAAS;GAC7B,MAAM,YAAY,MAAM,WAAW,MAAM,KAAK;AAE9C,QAAK,MAAM,QAAQ,KAAK;IAAE,WAAW,KAAK;IAAW,KAAK;IAAW,CAAC;;;CAI1E,yBAAyB,MAAoC;AAC3D,MAAI,KACF,QAAOA,2BAAa,kBAAkB,KAAK,KAAK,WAAW,KAAK,MAAM;MAEtE,QAAOA,2BAAa,aAAa,KAAK,MAAM;;CAIhD,gBAAgB,MAAkB,QAAgD;AAChF,SAAO,OAAO,MAAM,KAAK;;CAG3B,kBAAkB,MAA8B;AAC9C,SAAOA,2BAAa,0BAA0B,KAAK,SAAS,CAAC,WAAW,KAAK"}
@@ -1,44 +1,36 @@
1
1
  import { concatArrays } from "../../common/src/array.mjs";
2
- import { Address, isValidAddress } from "../../common/src/address.mjs";
2
+ import { Address } from "../../common/src/address.mjs";
3
3
  import { hash } from "../../common/src/crypto.mjs";
4
4
  import { decodeMsgpack } from "../../common/src/msgpack.mjs";
5
5
  import { logicSignatureCodec } from "./transactions/signed-transaction-meta.mjs";
6
6
  import { encodeSignedTransaction } from "./transactions/signed-transaction.mjs";
7
7
 
8
8
  //#region packages/transact/src/logicsig.ts
9
- const base64regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;
10
- /** sanityCheckProgram performs heuristic program validation:
11
- * check if passed in bytes are Algorand address or is B64 encoded, rather than Teal bytes
12
- *
13
- * @param program - Program bytes to check
14
- */
15
- function sanityCheckProgram(program) {
16
- if (!program || program.length === 0) throw new Error("empty program");
17
- const lineBreakOrd = "\n".charCodeAt(0);
18
- const blankSpaceOrd = " ".charCodeAt(0);
19
- const tildeOrd = "~".charCodeAt(0);
20
- const isPrintable = (x) => blankSpaceOrd <= x && x <= tildeOrd;
21
- if (program.every((x) => x === lineBreakOrd || isPrintable(x))) {
22
- const programStr = new TextDecoder().decode(program);
23
- if (isValidAddress(programStr)) throw new Error("requesting program bytes, get Algorand address");
24
- if (base64regex.test(programStr)) throw new Error("program should not be b64 encoded");
25
- throw new Error("program bytes are all ASCII printable characters, not looking like Teal byte code");
26
- }
27
- }
28
9
  const PROGRAM_TAG = new TextEncoder().encode("Program");
29
10
  const MSIG_PROGRAM_TAG = new TextEncoder().encode("MsigProgram");
30
11
  const SIGN_PROGRAM_DATA_PREFIX = new TextEncoder().encode("ProgData");
31
- var LogicSigAccount = class {
12
+ var LogicSigAccount = class LogicSigAccount {
32
13
  logic;
33
14
  args;
34
15
  sig;
35
16
  msig;
36
17
  lmsig;
18
+ static fromSignature(signature) {
19
+ const lsigAccount = new LogicSigAccount(signature.logic, signature.args || []);
20
+ lsigAccount.sig = signature.sig;
21
+ lsigAccount.msig = signature.msig;
22
+ lsigAccount.lmsig = signature.lmsig;
23
+ return lsigAccount;
24
+ }
25
+ static fromBytes(encodedLsig) {
26
+ const decoded = decodeMsgpack(encodedLsig);
27
+ const lsigSignature = logicSignatureCodec.decode(decoded, "msgpack");
28
+ return LogicSigAccount.fromSignature(lsigSignature);
29
+ }
37
30
  constructor(program, programArgs) {
38
31
  if (programArgs && (!Array.isArray(programArgs) || !programArgs.every((arg) => arg.constructor === Uint8Array))) throw new TypeError("Invalid arguments");
39
32
  let args = [];
40
33
  if (programArgs != null) args = programArgs.map((arg) => new Uint8Array(arg));
41
- sanityCheckProgram(program);
42
34
  this.logic = program;
43
35
  this.args = args;
44
36
  }
@@ -76,16 +68,16 @@ var LogicSigAccount = class {
76
68
  }
77
69
  async delegateMultisig(msig) {
78
70
  if (this.lmsig == void 0) this.lmsig = {
79
- subsignatures: [],
71
+ subsigs: [],
80
72
  version: msig.params.version,
81
73
  threshold: msig.params.threshold
82
74
  };
83
75
  for (const addrWithSigner of msig.subSigners) {
84
76
  const { lsigSigner, addr } = addrWithSigner;
85
77
  const signature = await lsigSigner(this, msig);
86
- this.lmsig.subsignatures.push({
78
+ this.lmsig.subsigs.push({
87
79
  publicKey: addr.publicKey,
88
- signature
80
+ sig: signature
89
81
  });
90
82
  }
91
83
  }
@@ -100,17 +92,7 @@ var LogicSigAccount = class {
100
92
  return concatArrays(SIGN_PROGRAM_DATA_PREFIX, this.address().publicKey, data);
101
93
  }
102
94
  };
103
- /**
104
- * Decodes MsgPack bytes into a logic signature.
105
- *
106
- * @param encodedLogicSignature - The MsgPack encoded logic signature
107
- * @returns The decoded LogicSignature or an error if decoding fails.
108
- */
109
- function decodeLogicSignature(encodedLogicSignature) {
110
- const decodedData = decodeMsgpack(encodedLogicSignature);
111
- return logicSignatureCodec.decode(decodedData, "msgpack");
112
- }
113
95
 
114
96
  //#endregion
115
- export { LogicSigAccount, decodeLogicSignature, sanityCheckProgram };
97
+ export { LogicSigAccount };
116
98
  //# sourceMappingURL=logicsig.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"logicsig.mjs","names":["args: Uint8Array[]","signedTxns: Uint8Array[]","stxn: SignedTransaction"],"sources":["../../../../packages/transact/src/logicsig.ts"],"sourcesContent":["import { Address, concatArrays, decodeMsgpack, hash, isValidAddress } from '@algorandfoundation/algokit-common'\nimport { MultisigAccount } from './multisig'\nimport { TransactionSigner } from './signer'\nimport { LogicSignature, MultisigSignature, SignedTransaction, encodeSignedTransaction } from './transactions/signed-transaction'\nimport { logicSignatureCodec } from './transactions/signed-transaction-meta'\nimport { Transaction } from './transactions/transaction'\n\n// base64regex is the regex to test for base64 strings\nconst base64regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/\n\n/** sanityCheckProgram performs heuristic program validation:\n * check if passed in bytes are Algorand address or is B64 encoded, rather than Teal bytes\n *\n * @param program - Program bytes to check\n */\nexport function sanityCheckProgram(program: Uint8Array) {\n if (!program || program.length === 0) throw new Error('empty program')\n\n const lineBreakOrd = '\\n'.charCodeAt(0)\n const blankSpaceOrd = ' '.charCodeAt(0)\n const tildeOrd = '~'.charCodeAt(0)\n\n const isPrintable = (x: number) => blankSpaceOrd <= x && x <= tildeOrd\n const isAsciiPrintable = program.every((x: number) => x === lineBreakOrd || isPrintable(x))\n\n if (isAsciiPrintable) {\n const programStr = new TextDecoder().decode(program)\n\n if (isValidAddress(programStr)) throw new Error('requesting program bytes, get Algorand address')\n\n if (base64regex.test(programStr)) throw new Error('program should not be b64 encoded')\n\n throw new Error('program bytes are all ASCII printable characters, not looking like Teal byte code')\n }\n}\n\nconst PROGRAM_TAG = new TextEncoder().encode('Program')\nconst MSIG_PROGRAM_TAG = new TextEncoder().encode('MsigProgram')\nconst SIGN_PROGRAM_DATA_PREFIX = new TextEncoder().encode('ProgData')\n\n/** Function for signing logic signatures for delegation */\nexport type DelegatedLsigSigner = (lsig: LogicSigAccount, msig?: MultisigAccount) => Promise<Uint8Array>\n\n/** Function for signing program data for a logic signature */\nexport type ProgramDataSigner = (data: Uint8Array, lsig: LogicSigAccount) => Promise<Uint8Array>\n\nexport class LogicSigAccount {\n logic: Uint8Array\n args: Uint8Array[]\n sig?: Uint8Array\n msig?: MultisigSignature\n lmsig?: MultisigSignature\n\n constructor(program: Uint8Array, programArgs?: Array<Uint8Array> | null) {\n if (programArgs && (!Array.isArray(programArgs) || !programArgs.every((arg) => arg.constructor === Uint8Array))) {\n throw new TypeError('Invalid arguments')\n }\n\n let args: Uint8Array[] = []\n if (programArgs != null) args = programArgs.map((arg) => new Uint8Array(arg))\n\n sanityCheckProgram(program)\n\n this.logic = program\n this.args = args\n }\n\n get signer(): TransactionSigner {\n return async (txns: Transaction[], indexes: number[]) => {\n const signedTxns: Uint8Array[] = []\n for (const index of indexes) {\n const txn = txns[index]\n\n const stxn: SignedTransaction = {\n txn,\n lsig: { logic: this.logic, args: this.args, msig: this.msig, lmsig: this.lmsig, sig: this.sig },\n }\n\n signedTxns.push(encodeSignedTransaction(stxn))\n }\n\n return signedTxns\n }\n }\n\n get addr(): Address {\n return this.address()\n }\n\n /**\n * Compute hash of the logic sig program (that is the same as escrow account address) as string address\n * @returns String representation of the address\n */\n address(): Address {\n const toBeSigned = concatArrays(PROGRAM_TAG, this.logic)\n const h = hash(toBeSigned)\n return new Address(h)\n }\n\n async delegate(signer: DelegatedLsigSigner) {\n this.sig = await signer(this)\n }\n\n async delegateMultisig(msig: MultisigAccount) {\n if (this.lmsig == undefined) {\n this.lmsig = {\n subsignatures: [],\n version: msig.params.version,\n threshold: msig.params.threshold,\n }\n }\n for (const addrWithSigner of msig.subSigners) {\n const { lsigSigner, addr } = addrWithSigner\n const signature = await lsigSigner(this, msig)\n\n this.lmsig.subsignatures.push({ publicKey: addr.publicKey, signature })\n }\n }\n\n bytesToSignForDelegation(msig?: MultisigAccount): Uint8Array {\n if (msig) {\n return concatArrays(MSIG_PROGRAM_TAG, msig.addr.publicKey, this.logic)\n } else {\n return concatArrays(PROGRAM_TAG, this.logic)\n }\n }\n\n signProgramData(data: Uint8Array, signer: ProgramDataSigner): Promise<Uint8Array> {\n return signer(data, this)\n }\n\n programDataToSign(data: Uint8Array): Uint8Array {\n return concatArrays(SIGN_PROGRAM_DATA_PREFIX, this.address().publicKey, data)\n }\n}\n\n/**\n * Decodes MsgPack bytes into a logic signature.\n *\n * @param encodedLogicSignature - The MsgPack encoded logic signature\n * @returns The decoded LogicSignature or an error if decoding fails.\n */\nexport function decodeLogicSignature(encodedLogicSignature: Uint8Array): LogicSignature {\n const decodedData = decodeMsgpack(encodedLogicSignature)\n return logicSignatureCodec.decode(decodedData, 'msgpack')\n}\n"],"mappings":";;;;;;;;AAQA,MAAM,cAAc;;;;;;AAOpB,SAAgB,mBAAmB,SAAqB;AACtD,KAAI,CAAC,WAAW,QAAQ,WAAW,EAAG,OAAM,IAAI,MAAM,gBAAgB;CAEtE,MAAM,eAAe,KAAK,WAAW,EAAE;CACvC,MAAM,gBAAgB,IAAI,WAAW,EAAE;CACvC,MAAM,WAAW,IAAI,WAAW,EAAE;CAElC,MAAM,eAAe,MAAc,iBAAiB,KAAK,KAAK;AAG9D,KAFyB,QAAQ,OAAO,MAAc,MAAM,gBAAgB,YAAY,EAAE,CAAC,EAErE;EACpB,MAAM,aAAa,IAAI,aAAa,CAAC,OAAO,QAAQ;AAEpD,MAAI,eAAe,WAAW,CAAE,OAAM,IAAI,MAAM,iDAAiD;AAEjG,MAAI,YAAY,KAAK,WAAW,CAAE,OAAM,IAAI,MAAM,oCAAoC;AAEtF,QAAM,IAAI,MAAM,oFAAoF;;;AAIxG,MAAM,cAAc,IAAI,aAAa,CAAC,OAAO,UAAU;AACvD,MAAM,mBAAmB,IAAI,aAAa,CAAC,OAAO,cAAc;AAChE,MAAM,2BAA2B,IAAI,aAAa,CAAC,OAAO,WAAW;AAQrE,IAAa,kBAAb,MAA6B;CAC3B;CACA;CACA;CACA;CACA;CAEA,YAAY,SAAqB,aAAwC;AACvE,MAAI,gBAAgB,CAAC,MAAM,QAAQ,YAAY,IAAI,CAAC,YAAY,OAAO,QAAQ,IAAI,gBAAgB,WAAW,EAC5G,OAAM,IAAI,UAAU,oBAAoB;EAG1C,IAAIA,OAAqB,EAAE;AAC3B,MAAI,eAAe,KAAM,QAAO,YAAY,KAAK,QAAQ,IAAI,WAAW,IAAI,CAAC;AAE7E,qBAAmB,QAAQ;AAE3B,OAAK,QAAQ;AACb,OAAK,OAAO;;CAGd,IAAI,SAA4B;AAC9B,SAAO,OAAO,MAAqB,YAAsB;GACvD,MAAMC,aAA2B,EAAE;AACnC,QAAK,MAAM,SAAS,SAAS;IAG3B,MAAMC,OAA0B;KAC9B,KAHU,KAAK;KAIf,MAAM;MAAE,OAAO,KAAK;MAAO,MAAM,KAAK;MAAM,MAAM,KAAK;MAAM,OAAO,KAAK;MAAO,KAAK,KAAK;MAAK;KAChG;AAED,eAAW,KAAK,wBAAwB,KAAK,CAAC;;AAGhD,UAAO;;;CAIX,IAAI,OAAgB;AAClB,SAAO,KAAK,SAAS;;;;;;CAOvB,UAAmB;AAGjB,SAAO,IAAI,QADD,KADS,aAAa,aAAa,KAAK,MAAM,CAC9B,CACL;;CAGvB,MAAM,SAAS,QAA6B;AAC1C,OAAK,MAAM,MAAM,OAAO,KAAK;;CAG/B,MAAM,iBAAiB,MAAuB;AAC5C,MAAI,KAAK,SAAS,OAChB,MAAK,QAAQ;GACX,eAAe,EAAE;GACjB,SAAS,KAAK,OAAO;GACrB,WAAW,KAAK,OAAO;GACxB;AAEH,OAAK,MAAM,kBAAkB,KAAK,YAAY;GAC5C,MAAM,EAAE,YAAY,SAAS;GAC7B,MAAM,YAAY,MAAM,WAAW,MAAM,KAAK;AAE9C,QAAK,MAAM,cAAc,KAAK;IAAE,WAAW,KAAK;IAAW;IAAW,CAAC;;;CAI3E,yBAAyB,MAAoC;AAC3D,MAAI,KACF,QAAO,aAAa,kBAAkB,KAAK,KAAK,WAAW,KAAK,MAAM;MAEtE,QAAO,aAAa,aAAa,KAAK,MAAM;;CAIhD,gBAAgB,MAAkB,QAAgD;AAChF,SAAO,OAAO,MAAM,KAAK;;CAG3B,kBAAkB,MAA8B;AAC9C,SAAO,aAAa,0BAA0B,KAAK,SAAS,CAAC,WAAW,KAAK;;;;;;;;;AAUjF,SAAgB,qBAAqB,uBAAmD;CACtF,MAAM,cAAc,cAAc,sBAAsB;AACxD,QAAO,oBAAoB,OAAO,aAAa,UAAU"}
1
+ {"version":3,"file":"logicsig.mjs","names":["args: Uint8Array[]","signedTxns: Uint8Array[]","stxn: SignedTransaction"],"sources":["../../../../packages/transact/src/logicsig.ts"],"sourcesContent":["import { Address, concatArrays, decodeMsgpack, hash } from '@algorandfoundation/algokit-common'\nimport { MultisigAccount } from './multisig'\nimport { TransactionSigner } from './signer'\nimport { LogicSignature, MultisigSignature, SignedTransaction, encodeSignedTransaction } from './transactions/signed-transaction'\nimport { Transaction } from './transactions/transaction'\nimport { logicSignatureCodec } from './transactions/signed-transaction-meta'\n\nconst PROGRAM_TAG = new TextEncoder().encode('Program')\nconst MSIG_PROGRAM_TAG = new TextEncoder().encode('MsigProgram')\nconst SIGN_PROGRAM_DATA_PREFIX = new TextEncoder().encode('ProgData')\n\n/** Function for signing logic signatures for delegation */\nexport type DelegatedLsigSigner = (lsig: LogicSigAccount, msig?: MultisigAccount) => Promise<Uint8Array>\n\n/** Function for signing program data for a logic signature */\nexport type ProgramDataSigner = (data: Uint8Array, lsig: LogicSigAccount) => Promise<Uint8Array>\n\nexport class LogicSigAccount {\n logic: Uint8Array\n args: Uint8Array[]\n sig?: Uint8Array\n msig?: MultisigSignature\n lmsig?: MultisigSignature\n\n static fromSignature(signature: LogicSignature): LogicSigAccount {\n const lsigAccount = new LogicSigAccount(signature.logic, signature.args || [])\n lsigAccount.sig = signature.sig\n lsigAccount.msig = signature.msig\n lsigAccount.lmsig = signature.lmsig\n return lsigAccount\n }\n\n static fromBytes(encodedLsig: Uint8Array): LogicSigAccount {\n const decoded = decodeMsgpack(encodedLsig)\n const lsigSignature = logicSignatureCodec.decode(decoded, 'msgpack')\n return LogicSigAccount.fromSignature(lsigSignature)\n }\n\n constructor(program: Uint8Array, programArgs?: Array<Uint8Array> | null) {\n if (programArgs && (!Array.isArray(programArgs) || !programArgs.every((arg) => arg.constructor === Uint8Array))) {\n throw new TypeError('Invalid arguments')\n }\n\n let args: Uint8Array[] = []\n if (programArgs != null) args = programArgs.map((arg) => new Uint8Array(arg))\n\n this.logic = program\n this.args = args\n }\n\n get signer(): TransactionSigner {\n return async (txns: Transaction[], indexes: number[]) => {\n const signedTxns: Uint8Array[] = []\n for (const index of indexes) {\n const txn = txns[index]\n\n const stxn: SignedTransaction = {\n txn,\n lsig: { logic: this.logic, args: this.args, msig: this.msig, lmsig: this.lmsig, sig: this.sig },\n }\n\n signedTxns.push(encodeSignedTransaction(stxn))\n }\n\n return signedTxns\n }\n }\n\n get addr(): Address {\n return this.address()\n }\n\n /**\n * Compute hash of the logic sig program (that is the same as escrow account address) as string address\n * @returns String representation of the address\n */\n address(): Address {\n const toBeSigned = concatArrays(PROGRAM_TAG, this.logic)\n const h = hash(toBeSigned)\n return new Address(h)\n }\n\n async delegate(signer: DelegatedLsigSigner) {\n this.sig = await signer(this)\n }\n\n async delegateMultisig(msig: MultisigAccount) {\n if (this.lmsig == undefined) {\n this.lmsig = {\n subsigs: [],\n version: msig.params.version,\n threshold: msig.params.threshold,\n }\n }\n for (const addrWithSigner of msig.subSigners) {\n const { lsigSigner, addr } = addrWithSigner\n const signature = await lsigSigner(this, msig)\n\n this.lmsig.subsigs.push({ publicKey: addr.publicKey, sig: signature })\n }\n }\n\n bytesToSignForDelegation(msig?: MultisigAccount): Uint8Array {\n if (msig) {\n return concatArrays(MSIG_PROGRAM_TAG, msig.addr.publicKey, this.logic)\n } else {\n return concatArrays(PROGRAM_TAG, this.logic)\n }\n }\n\n signProgramData(data: Uint8Array, signer: ProgramDataSigner): Promise<Uint8Array> {\n return signer(data, this)\n }\n\n programDataToSign(data: Uint8Array): Uint8Array {\n return concatArrays(SIGN_PROGRAM_DATA_PREFIX, this.address().publicKey, data)\n }\n}\n"],"mappings":";;;;;;;;AAOA,MAAM,cAAc,IAAI,aAAa,CAAC,OAAO,UAAU;AACvD,MAAM,mBAAmB,IAAI,aAAa,CAAC,OAAO,cAAc;AAChE,MAAM,2BAA2B,IAAI,aAAa,CAAC,OAAO,WAAW;AAQrE,IAAa,kBAAb,MAAa,gBAAgB;CAC3B;CACA;CACA;CACA;CACA;CAEA,OAAO,cAAc,WAA4C;EAC/D,MAAM,cAAc,IAAI,gBAAgB,UAAU,OAAO,UAAU,QAAQ,EAAE,CAAC;AAC9E,cAAY,MAAM,UAAU;AAC5B,cAAY,OAAO,UAAU;AAC7B,cAAY,QAAQ,UAAU;AAC9B,SAAO;;CAGT,OAAO,UAAU,aAA0C;EACzD,MAAM,UAAU,cAAc,YAAY;EAC1C,MAAM,gBAAgB,oBAAoB,OAAO,SAAS,UAAU;AACpE,SAAO,gBAAgB,cAAc,cAAc;;CAGrD,YAAY,SAAqB,aAAwC;AACvE,MAAI,gBAAgB,CAAC,MAAM,QAAQ,YAAY,IAAI,CAAC,YAAY,OAAO,QAAQ,IAAI,gBAAgB,WAAW,EAC5G,OAAM,IAAI,UAAU,oBAAoB;EAG1C,IAAIA,OAAqB,EAAE;AAC3B,MAAI,eAAe,KAAM,QAAO,YAAY,KAAK,QAAQ,IAAI,WAAW,IAAI,CAAC;AAE7E,OAAK,QAAQ;AACb,OAAK,OAAO;;CAGd,IAAI,SAA4B;AAC9B,SAAO,OAAO,MAAqB,YAAsB;GACvD,MAAMC,aAA2B,EAAE;AACnC,QAAK,MAAM,SAAS,SAAS;IAG3B,MAAMC,OAA0B;KAC9B,KAHU,KAAK;KAIf,MAAM;MAAE,OAAO,KAAK;MAAO,MAAM,KAAK;MAAM,MAAM,KAAK;MAAM,OAAO,KAAK;MAAO,KAAK,KAAK;MAAK;KAChG;AAED,eAAW,KAAK,wBAAwB,KAAK,CAAC;;AAGhD,UAAO;;;CAIX,IAAI,OAAgB;AAClB,SAAO,KAAK,SAAS;;;;;;CAOvB,UAAmB;AAGjB,SAAO,IAAI,QADD,KADS,aAAa,aAAa,KAAK,MAAM,CAC9B,CACL;;CAGvB,MAAM,SAAS,QAA6B;AAC1C,OAAK,MAAM,MAAM,OAAO,KAAK;;CAG/B,MAAM,iBAAiB,MAAuB;AAC5C,MAAI,KAAK,SAAS,OAChB,MAAK,QAAQ;GACX,SAAS,EAAE;GACX,SAAS,KAAK,OAAO;GACrB,WAAW,KAAK,OAAO;GACxB;AAEH,OAAK,MAAM,kBAAkB,KAAK,YAAY;GAC5C,MAAM,EAAE,YAAY,SAAS;GAC7B,MAAM,YAAY,MAAM,WAAW,MAAM,KAAK;AAE9C,QAAK,MAAM,QAAQ,KAAK;IAAE,WAAW,KAAK;IAAW,KAAK;IAAW,CAAC;;;CAI1E,yBAAyB,MAAoC;AAC3D,MAAI,KACF,QAAO,aAAa,kBAAkB,KAAK,KAAK,WAAW,KAAK,MAAM;MAEtE,QAAO,aAAa,aAAa,KAAK,MAAM;;CAIhD,gBAAgB,MAAkB,QAAgD;AAChF,SAAO,OAAO,MAAM,KAAK;;CAG3B,kBAAkB,MAA8B;AAC9C,SAAO,aAAa,0BAA0B,KAAK,SAAS,CAAC,WAAW,KAAK"}
@@ -1,115 +1,9 @@
1
1
  import { Address } from "../../common/src/address.js";
2
2
  import { Transaction } from "./transactions/transaction.js";
3
- import { MultisigSignature } from "./transactions/signed-transaction.js";
3
+ import { MultisigSignature, SignedTransaction } from "./transactions/signed-transaction.js";
4
4
  import { AddressWithDelegatedLsigSigner, AddressWithTransactionSigner, TransactionSigner } from "./signer.js";
5
5
 
6
6
  //#region packages/transact/src/multisig.d.ts
7
-
8
- /**
9
- * Creates an empty multisignature signature from a list of participant public keys.
10
- */
11
- declare function newMultisigSignature(version: number, threshold: number, participants: Uint8Array[]): MultisigSignature;
12
- /**
13
- * Returns the list of participant public keys from a multisignature signature.
14
- */
15
- declare function participantsFromMultisigSignature(multisigSignature: MultisigSignature): Uint8Array[];
16
- /**
17
- * Returns the address of the multisignature account.
18
- */
19
- declare function addressFromMultisigSignature(multisigSignature: MultisigSignature): Address;
20
- /**
21
- * Applies a subsignature for a participant to a multisignature signature, replacing any existing signature.
22
- *
23
- * This method applies the signature to ALL instances of the given public key (to support weighted multisig).
24
- * Since ed25519 signatures are deterministic, there's only one valid signature for a given message and public key.
25
- */
26
- declare function applyMultisigSubsignature(multisigSignature: MultisigSignature, participant: Uint8Array, signature: Uint8Array): MultisigSignature;
27
- /**
28
- * Merges two multisignature signatures, replacing signatures in the first with those from the second where present.
29
- * For each participant, the resulting signature will be taken from the second multisig if present, otherwise from the first.
30
- */
31
- declare function mergeMultisignatures(multisigSignatureA: MultisigSignature, multisigSignatureB: MultisigSignature): MultisigSignature;
32
- declare const MULTISIG_MERGE_LESSTHANTWO_ERROR_MSG = "Not enough multisig transactions to merge. Need at least two";
33
- declare const MULTISIG_MERGE_MISMATCH_ERROR_MSG = "Cannot merge txs. txIDs differ";
34
- declare const MULTISIG_MERGE_MISMATCH_AUTH_ADDR_MSG = "Cannot merge txs. Auth addrs differ";
35
- declare const MULTISIG_MERGE_WRONG_PREIMAGE_ERROR_MSG = "Cannot merge txs. Multisig preimages differ";
36
- declare const MULTISIG_MERGE_SIG_MISMATCH_ERROR_MSG = "Cannot merge txs. subsigs are mismatched.";
37
- declare const MULTISIG_NO_MUTATE_ERROR_MSG = "Cannot mutate a multisig field as it would invalidate all existing signatures.";
38
- declare const MULTISIG_USE_PARTIAL_SIGN_ERROR_MSG = "Cannot sign a multisig transaction using `signTxn`. Use `partialSignTxn` instead.";
39
- declare const MULTISIG_SIGNATURE_LENGTH_ERROR_MSG = "Cannot add multisig signature. Signature is not of the correct length.";
40
- /**
41
- * creates a raw, multisig transaction blob without any signatures.
42
- * @param txn - the actual transaction.
43
- * @param version - multisig version
44
- * @param threshold - multisig threshold
45
- * @param pks - ordered list of public keys in this multisig
46
- * @returns encoded multisig blob
47
- */
48
- declare function createMultisigTransaction(txn: Transaction, {
49
- version,
50
- threshold,
51
- addrs
52
- }: MultisigMetadata): Uint8Array;
53
- /**
54
- * takes a list of multisig transaction blobs, and merges them.
55
- * @param multisigTxnBlobs - a list of blobs representing encoded multisig txns
56
- * @returns typed array msg-pack encoded multisig txn
57
- */
58
- declare function mergeMultisigTransactions(multisigTxnBlobs: Uint8Array[]): Uint8Array;
59
- /**
60
- * Takes a multisig transaction blob, and appends a given raw signature to it.
61
- * This makes it possible to compile a multisig signature using only raw signatures from external methods.
62
- * @param multisigTxnBlob - an encoded multisig txn. Supports non-payment txn types.
63
- * @param version - multisig version
64
- * @param threshold - multisig threshold
65
- * @param addrs - a list of Algorand addresses representing possible signers for this multisig. Order is important.
66
- * @param signerAddr - address of the signer
67
- * @param signature - raw multisig signature
68
- * @returns object containing txID, and blob representing encoded multisig txn
69
- */
70
- declare function appendSignRawMultisigSignature(multisigTxnBlob: Uint8Array, {
71
- version,
72
- threshold,
73
- addrs
74
- }: MultisigMetadata, signerAddr: string | Address, signature: Uint8Array): {
75
- txID: string;
76
- blob: Uint8Array;
77
- };
78
- /**
79
- * Takes multisig parameters and returns a 32 byte typed array public key,
80
- * representing an address that identifies the "exact group, version, and public keys" that are required for signing.
81
- * Hash("MultisigAddr" || version uint8 || threshold uint8 || PK1 || PK2 || ...)
82
- * Encoding this output yields a human readable address.
83
- * @param version - multisig version
84
- * @param threshold - multisig threshold
85
- * @param pks - array of typed array public keys
86
- */
87
- declare function addressFromMultisigPreImg({
88
- version,
89
- threshold,
90
- pks
91
- }: Omit<MultisigMetadata, 'addrs'> & {
92
- pks: Uint8Array[];
93
- }): Address;
94
- /**
95
- * Takes multisig parameters and returns a human readable Algorand address.
96
- * This is equivalent to fromMultisigPreImg, but interfaces with encoded addresses.
97
- * @param version - multisig version
98
- * @param threshold - multisig threshold
99
- * @param addrs - array of encoded addresses
100
- */
101
- declare function addressFromMultisigPreImgAddrs({
102
- version,
103
- threshold,
104
- addrs
105
- }: MultisigMetadata): Address;
106
- /**
107
- * Takes multisig metadata (preimage) and returns the corresponding human readable Algorand address.
108
- * @param version - multisig version
109
- * @param threshold - multisig threshold
110
- * @param addrs - list of Algorand addresses
111
- */
112
- declare const multisigAddress: typeof addressFromMultisigPreImgAddrs;
113
7
  interface MultisigMetadata {
114
8
  /**
115
9
  * Multisig version
@@ -139,15 +33,13 @@ declare class MultisigAccount implements AddressWithTransactionSigner {
139
33
  get addr(): Readonly<Address>;
140
34
  /** The transaction signer for the multisig account */
141
35
  get signer(): TransactionSigner;
36
+ static fromSignature(signature: MultisigSignature): MultisigAccount;
142
37
  constructor(multisigParams: MultisigMetadata, subSigners: (AddressWithTransactionSigner & AddressWithDelegatedLsigSigner)[]);
38
+ createMultisigTransaction(txn: Transaction): SignedTransaction;
39
+ createMultisigSignature(): MultisigSignature;
40
+ applySignatureToTxn(txn: SignedTransaction, pubkey: Uint8Array, signature: Uint8Array): void;
41
+ applySignature(msigSignature: MultisigSignature, pubkey: Uint8Array, signature: Uint8Array): MultisigSignature;
143
42
  }
144
- /**
145
- * Decodes MsgPack bytes into a multi signature.
146
- *
147
- * @param encodedMultiSignature - The MsgPack encoded multi signature
148
- * @returns The decoded MultisigSignature or an error if decoding fails.
149
- */
150
- declare function decodeMultiSignature(encodedMultiSignature: Uint8Array): MultisigSignature;
151
43
  //#endregion
152
- export { MULTISIG_MERGE_LESSTHANTWO_ERROR_MSG, MULTISIG_MERGE_MISMATCH_AUTH_ADDR_MSG, MULTISIG_MERGE_MISMATCH_ERROR_MSG, MULTISIG_MERGE_SIG_MISMATCH_ERROR_MSG, MULTISIG_MERGE_WRONG_PREIMAGE_ERROR_MSG, MULTISIG_NO_MUTATE_ERROR_MSG, MULTISIG_SIGNATURE_LENGTH_ERROR_MSG, MULTISIG_USE_PARTIAL_SIGN_ERROR_MSG, MultisigAccount, MultisigMetadata, addressFromMultisigPreImg, addressFromMultisigPreImgAddrs, addressFromMultisigSignature, appendSignRawMultisigSignature, applyMultisigSubsignature, createMultisigTransaction, decodeMultiSignature, mergeMultisigTransactions, mergeMultisignatures, multisigAddress, newMultisigSignature, participantsFromMultisigSignature };
44
+ export { MultisigAccount, MultisigMetadata };
153
45
  //# sourceMappingURL=multisig.d.ts.map