@algorandfoundation/algokit-utils 9.2.0 → 9.2.1-beta.2

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 (340) hide show
  1. package/_virtual/_rolldown/runtime.js +33 -0
  2. package/_virtual/_rolldown/runtime.mjs +13 -0
  3. package/account/account.d.ts +25 -30
  4. package/account/account.js +151 -146
  5. package/account/account.js.map +1 -1
  6. package/account/account.mjs +149 -144
  7. package/account/account.mjs.map +1 -1
  8. package/account/get-account-config-from-environment.d.ts +7 -2
  9. package/account/get-account-config-from-environment.js +19 -21
  10. package/account/get-account-config-from-environment.js.map +1 -1
  11. package/account/get-account-config-from-environment.mjs +19 -19
  12. package/account/get-account-config-from-environment.mjs.map +1 -1
  13. package/account/get-account.d.ts +14 -12
  14. package/account/get-account.js +56 -59
  15. package/account/get-account.js.map +1 -1
  16. package/account/get-account.mjs +56 -57
  17. package/account/get-account.mjs.map +1 -1
  18. package/account/get-dispenser-account.d.ts +9 -5
  19. package/account/get-dispenser-account.js +20 -18
  20. package/account/get-dispenser-account.js.map +1 -1
  21. package/account/get-dispenser-account.mjs +20 -16
  22. package/account/get-dispenser-account.mjs.map +1 -1
  23. package/account/mnemonic-account.d.ts +7 -3
  24. package/account/mnemonic-account.js +17 -17
  25. package/account/mnemonic-account.js.map +1 -1
  26. package/account/mnemonic-account.mjs +15 -15
  27. package/account/mnemonic-account.mjs.map +1 -1
  28. package/amount.d.ts +40 -35
  29. package/amount.js +33 -34
  30. package/amount.js.map +1 -1
  31. package/amount.mjs +33 -32
  32. package/amount.mjs.map +1 -1
  33. package/app-client.d.ts +10 -6
  34. package/app-client.js +91 -86
  35. package/app-client.js.map +1 -1
  36. package/app-client.mjs +91 -84
  37. package/app-client.mjs.map +1 -1
  38. package/app-deploy.d.ts +26 -24
  39. package/app-deploy.js +235 -253
  40. package/app-deploy.js.map +1 -1
  41. package/app-deploy.mjs +233 -251
  42. package/app-deploy.mjs.map +1 -1
  43. package/app.d.ts +45 -46
  44. package/app.js +253 -271
  45. package/app.js.map +1 -1
  46. package/app.mjs +249 -267
  47. package/app.mjs.map +1 -1
  48. package/asset.d.ts +16 -12
  49. package/asset.js +116 -122
  50. package/asset.js.map +1 -1
  51. package/asset.mjs +116 -120
  52. package/asset.mjs.map +1 -1
  53. package/config.d.ts +7 -2
  54. package/config.js +5 -7
  55. package/config.js.map +1 -1
  56. package/config.mjs +5 -4
  57. package/config.mjs.map +1 -1
  58. package/debugging/debugging.d.ts +5 -1
  59. package/debugging/debugging.js +11 -11
  60. package/debugging/debugging.js.map +1 -1
  61. package/debugging/debugging.mjs +11 -9
  62. package/debugging/debugging.mjs.map +1 -1
  63. package/dispenser-client.d.ts +7 -2
  64. package/dispenser-client.js +23 -24
  65. package/dispenser-client.js.map +1 -1
  66. package/dispenser-client.mjs +23 -22
  67. package/dispenser-client.mjs.map +1 -1
  68. package/index.d.ts +27 -18
  69. package/index.js +140 -143
  70. package/index.mjs +27 -29
  71. package/indexer-lookup.d.ts +18 -11
  72. package/indexer-lookup.js +112 -120
  73. package/indexer-lookup.js.map +1 -1
  74. package/indexer-lookup.mjs +105 -118
  75. package/indexer-lookup.mjs.map +1 -1
  76. package/localnet/get-kmd-wallet-account.d.ts +9 -7
  77. package/localnet/get-kmd-wallet-account.js +28 -26
  78. package/localnet/get-kmd-wallet-account.js.map +1 -1
  79. package/localnet/get-kmd-wallet-account.mjs +28 -24
  80. package/localnet/get-kmd-wallet-account.mjs.map +1 -1
  81. package/localnet/get-localnet-dispenser-account.d.ts +7 -5
  82. package/localnet/get-localnet-dispenser-account.js +17 -15
  83. package/localnet/get-localnet-dispenser-account.js.map +1 -1
  84. package/localnet/get-localnet-dispenser-account.mjs +17 -13
  85. package/localnet/get-localnet-dispenser-account.mjs.map +1 -1
  86. package/localnet/get-or-create-kmd-wallet-account.d.ts +10 -8
  87. package/localnet/get-or-create-kmd-wallet-account.js +28 -26
  88. package/localnet/get-or-create-kmd-wallet-account.js.map +1 -1
  89. package/localnet/get-or-create-kmd-wallet-account.mjs +28 -24
  90. package/localnet/get-or-create-kmd-wallet-account.mjs.map +1 -1
  91. package/localnet/is-localnet.d.ts +7 -3
  92. package/localnet/is-localnet.js +9 -10
  93. package/localnet/is-localnet.js.map +1 -1
  94. package/localnet/is-localnet.mjs +9 -8
  95. package/localnet/is-localnet.mjs.map +1 -1
  96. package/network-client.d.ts +17 -15
  97. package/network-client.js +115 -116
  98. package/network-client.js.map +1 -1
  99. package/network-client.mjs +115 -114
  100. package/network-client.mjs.map +1 -1
  101. package/package.json +12 -3
  102. package/testing/account.d.ts +11 -9
  103. package/testing/account.js +31 -33
  104. package/testing/account.js.map +1 -1
  105. package/testing/account.mjs +29 -31
  106. package/testing/account.mjs.map +1 -1
  107. package/testing/fixtures/algokit-log-capture-fixture.d.ts +7 -2
  108. package/testing/fixtures/algokit-log-capture-fixture.js +36 -41
  109. package/testing/fixtures/algokit-log-capture-fixture.js.map +1 -1
  110. package/testing/fixtures/algokit-log-capture-fixture.mjs +36 -39
  111. package/testing/fixtures/algokit-log-capture-fixture.mjs.map +1 -1
  112. package/testing/fixtures/algorand-fixture.d.ts +9 -4
  113. package/testing/fixtures/algorand-fixture.js +67 -62
  114. package/testing/fixtures/algorand-fixture.js.map +1 -1
  115. package/testing/fixtures/algorand-fixture.mjs +66 -59
  116. package/testing/fixtures/algorand-fixture.mjs.map +1 -1
  117. package/testing/index.d.ts +7 -5
  118. package/testing/index.js +13 -18
  119. package/testing/index.mjs +7 -7
  120. package/testing/indexer.d.ts +5 -1
  121. package/testing/indexer.js +28 -37
  122. package/testing/indexer.js.map +1 -1
  123. package/testing/indexer.mjs +28 -35
  124. package/testing/indexer.mjs.map +1 -1
  125. package/testing/test-logger.d.ts +41 -36
  126. package/testing/test-logger.js +71 -76
  127. package/testing/test-logger.js.map +1 -1
  128. package/testing/test-logger.mjs +71 -74
  129. package/testing/test-logger.mjs.map +1 -1
  130. package/testing/transaction-logger.d.ts +30 -27
  131. package/testing/transaction-logger.js +77 -93
  132. package/testing/transaction-logger.js.map +1 -1
  133. package/testing/transaction-logger.mjs +74 -90
  134. package/testing/transaction-logger.mjs.map +1 -1
  135. package/transaction/legacy-bridge.js +100 -111
  136. package/transaction/legacy-bridge.js.map +1 -1
  137. package/transaction/legacy-bridge.mjs +97 -108
  138. package/transaction/legacy-bridge.mjs.map +1 -1
  139. package/transaction/perform-atomic-transaction-composer-simulate.d.ts +7 -5
  140. package/transaction/perform-atomic-transaction-composer-simulate.js +31 -36
  141. package/transaction/perform-atomic-transaction-composer-simulate.js.map +1 -1
  142. package/transaction/perform-atomic-transaction-composer-simulate.mjs +28 -33
  143. package/transaction/perform-atomic-transaction-composer-simulate.mjs.map +1 -1
  144. package/transaction/transaction.d.ts +34 -35
  145. package/transaction/transaction.js +716 -914
  146. package/transaction/transaction.js.map +1 -1
  147. package/transaction/transaction.mjs +713 -911
  148. package/transaction/transaction.mjs.map +1 -1
  149. package/transfer/transfer-algos.d.ts +9 -5
  150. package/transfer/transfer-algos.js +26 -27
  151. package/transfer/transfer-algos.js.map +1 -1
  152. package/transfer/transfer-algos.mjs +26 -25
  153. package/transfer/transfer-algos.mjs.map +1 -1
  154. package/transfer/transfer.d.ts +11 -8
  155. package/transfer/transfer.js +94 -100
  156. package/transfer/transfer.js.map +1 -1
  157. package/transfer/transfer.mjs +94 -98
  158. package/transfer/transfer.mjs.map +1 -1
  159. package/types/account-manager.d.ts +432 -429
  160. package/types/account-manager.js +591 -602
  161. package/types/account-manager.js.map +1 -1
  162. package/types/account-manager.mjs +587 -599
  163. package/types/account-manager.mjs.map +1 -1
  164. package/types/account.d.ts +192 -202
  165. package/types/account.js +91 -88
  166. package/types/account.js.map +1 -1
  167. package/types/account.mjs +88 -86
  168. package/types/account.mjs.map +1 -1
  169. package/types/algo-http-client-with-retry.d.ts +15 -10
  170. package/types/algo-http-client-with-retry.js +70 -92
  171. package/types/algo-http-client-with-retry.js.map +1 -1
  172. package/types/algo-http-client-with-retry.mjs +69 -90
  173. package/types/algo-http-client-with-retry.mjs.map +1 -1
  174. package/types/algorand-client-transaction-creator.d.ts +778 -771
  175. package/types/algorand-client-transaction-creator.js +733 -732
  176. package/types/algorand-client-transaction-creator.js.map +1 -1
  177. package/types/algorand-client-transaction-creator.mjs +732 -730
  178. package/types/algorand-client-transaction-creator.mjs.map +1 -1
  179. package/types/algorand-client-transaction-sender.d.ts +1090 -1360
  180. package/types/algorand-client-transaction-sender.js +930 -961
  181. package/types/algorand-client-transaction-sender.js.map +1 -1
  182. package/types/algorand-client-transaction-sender.mjs +927 -959
  183. package/types/algorand-client-transaction-sender.mjs.map +1 -1
  184. package/types/algorand-client.d.ts +239 -236
  185. package/types/algorand-client.js +322 -320
  186. package/types/algorand-client.js.map +1 -1
  187. package/types/algorand-client.mjs +321 -318
  188. package/types/algorand-client.mjs.map +1 -1
  189. package/types/amount.d.ts +47 -43
  190. package/types/amount.js +66 -70
  191. package/types/amount.js.map +1 -1
  192. package/types/amount.mjs +63 -68
  193. package/types/amount.mjs.map +1 -1
  194. package/types/app-arc56.d.ts +235 -272
  195. package/types/app-arc56.js +124 -170
  196. package/types/app-arc56.js.map +1 -1
  197. package/types/app-arc56.mjs +121 -168
  198. package/types/app-arc56.mjs.map +1 -1
  199. package/types/app-client.d.ts +1128 -2009
  200. package/types/app-client.js +1633 -1791
  201. package/types/app-client.js.map +1 -1
  202. package/types/app-client.mjs +1624 -1783
  203. package/types/app-client.mjs.map +1 -1
  204. package/types/app-deployer.d.ts +139 -141
  205. package/types/app-deployer.js +344 -384
  206. package/types/app-deployer.js.map +1 -1
  207. package/types/app-deployer.mjs +341 -382
  208. package/types/app-deployer.mjs.map +1 -1
  209. package/types/app-factory.d.ts +762 -932
  210. package/types/app-factory.js +496 -488
  211. package/types/app-factory.js.map +1 -1
  212. package/types/app-factory.mjs +491 -484
  213. package/types/app-factory.mjs.map +1 -1
  214. package/types/app-manager.d.ts +304 -310
  215. package/types/app-manager.js +422 -475
  216. package/types/app-manager.js.map +1 -1
  217. package/types/app-manager.mjs +419 -473
  218. package/types/app-manager.mjs.map +1 -1
  219. package/types/app-spec.d.ts +118 -117
  220. package/types/app-spec.js +125 -135
  221. package/types/app-spec.js.map +1 -1
  222. package/types/app-spec.mjs +121 -132
  223. package/types/app-spec.mjs.map +1 -1
  224. package/types/app.d.ts +229 -241
  225. package/types/app.js +36 -28
  226. package/types/app.js.map +1 -1
  227. package/types/app.mjs +33 -26
  228. package/types/app.mjs.map +1 -1
  229. package/types/asset-manager.d.ts +204 -199
  230. package/types/asset-manager.js +165 -174
  231. package/types/asset-manager.js.map +1 -1
  232. package/types/asset-manager.mjs +164 -172
  233. package/types/asset-manager.mjs.map +1 -1
  234. package/types/asset.d.ts +95 -91
  235. package/types/asset.js +0 -3
  236. package/types/asset.mjs +0 -2
  237. package/types/async-event-emitter.d.ts +18 -13
  238. package/types/async-event-emitter.js +37 -49
  239. package/types/async-event-emitter.js.map +1 -1
  240. package/types/async-event-emitter.mjs +36 -47
  241. package/types/async-event-emitter.mjs.map +1 -1
  242. package/types/client-manager.d.ts +453 -451
  243. package/types/client-manager.js +602 -598
  244. package/types/client-manager.js.map +1 -1
  245. package/types/client-manager.mjs +597 -594
  246. package/types/client-manager.mjs.map +1 -1
  247. package/types/composer.d.ts +1211 -1258
  248. package/types/composer.js +1436 -1498
  249. package/types/composer.js.map +1 -1
  250. package/types/composer.mjs +1430 -1493
  251. package/types/composer.mjs.map +1 -1
  252. package/types/config.d.ts +53 -48
  253. package/types/config.js +78 -77
  254. package/types/config.js.map +1 -1
  255. package/types/config.mjs +77 -75
  256. package/types/config.mjs.map +1 -1
  257. package/types/debugging.d.ts +25 -23
  258. package/types/debugging.js +9 -11
  259. package/types/debugging.js.map +1 -1
  260. package/types/debugging.mjs +8 -9
  261. package/types/debugging.mjs.map +1 -1
  262. package/types/dispenser-client.d.ts +57 -52
  263. package/types/dispenser-client.js +120 -141
  264. package/types/dispenser-client.js.map +1 -1
  265. package/types/dispenser-client.mjs +119 -139
  266. package/types/dispenser-client.mjs.map +1 -1
  267. package/types/expand.d.ts +5 -3
  268. package/types/expand.js +0 -3
  269. package/types/expand.mjs +0 -2
  270. package/types/indexer.d.ts +104 -100
  271. package/types/indexer.js +36 -31
  272. package/types/indexer.js.map +1 -1
  273. package/types/indexer.mjs +32 -30
  274. package/types/indexer.mjs.map +1 -1
  275. package/types/instance-of.d.ts +5 -3
  276. package/types/instance-of.js +0 -3
  277. package/types/instance-of.mjs +0 -2
  278. package/types/kmd-account-manager.d.ts +75 -70
  279. package/types/kmd-account-manager.js +150 -184
  280. package/types/kmd-account-manager.js.map +1 -1
  281. package/types/kmd-account-manager.mjs +147 -182
  282. package/types/kmd-account-manager.mjs.map +1 -1
  283. package/types/lifecycle-events.d.ts +13 -8
  284. package/types/lifecycle-events.js +10 -7
  285. package/types/lifecycle-events.js.map +1 -1
  286. package/types/lifecycle-events.mjs +9 -7
  287. package/types/lifecycle-events.mjs.map +1 -1
  288. package/types/logging.d.ts +15 -11
  289. package/types/logging.js +30 -31
  290. package/types/logging.js.map +1 -1
  291. package/types/logging.mjs +29 -29
  292. package/types/logging.mjs.map +1 -1
  293. package/types/logic-error.d.ts +33 -29
  294. package/types/logic-error.js +50 -49
  295. package/types/logic-error.js.map +1 -1
  296. package/types/logic-error.mjs +49 -47
  297. package/types/logic-error.mjs.map +1 -1
  298. package/types/network-client.d.ts +32 -27
  299. package/types/network-client.js +10 -9
  300. package/types/network-client.js.map +1 -1
  301. package/types/network-client.mjs +9 -7
  302. package/types/network-client.mjs.map +1 -1
  303. package/types/testing.d.ts +131 -132
  304. package/types/testing.js +0 -3
  305. package/types/testing.mjs +0 -2
  306. package/types/transaction.d.ts +110 -110
  307. package/types/transaction.js +0 -3
  308. package/types/transaction.mjs +0 -2
  309. package/types/transfer.d.ts +70 -66
  310. package/types/transfer.js +0 -3
  311. package/types/transfer.mjs +0 -2
  312. package/util.js +73 -118
  313. package/util.js.map +1 -1
  314. package/util.mjs +73 -116
  315. package/util.mjs.map +1 -1
  316. package/account/index.d.ts +0 -5
  317. package/debugging/index.d.ts +0 -1
  318. package/index.js.map +0 -1
  319. package/index.mjs.map +0 -1
  320. package/localnet/index.d.ts +0 -4
  321. package/testing/_asset.d.ts +0 -3
  322. package/testing/fixtures/index.d.ts +0 -2
  323. package/testing/index.js.map +0 -1
  324. package/testing/index.mjs.map +0 -1
  325. package/transaction/index.d.ts +0 -2
  326. package/transaction/legacy-bridge.d.ts +0 -35
  327. package/transfer/index.d.ts +0 -2
  328. package/types/asset.js.map +0 -1
  329. package/types/asset.mjs.map +0 -1
  330. package/types/expand.js.map +0 -1
  331. package/types/expand.mjs.map +0 -1
  332. package/types/instance-of.js.map +0 -1
  333. package/types/instance-of.mjs.map +0 -1
  334. package/types/testing.js.map +0 -1
  335. package/types/testing.mjs.map +0 -1
  336. package/types/transaction.js.map +0 -1
  337. package/types/transaction.mjs.map +0 -1
  338. package/types/transfer.js.map +0 -1
  339. package/types/transfer.mjs.map +0 -1
  340. package/util.d.ts +0 -48
@@ -1,184 +1,149 @@
1
- import algosdk from 'algosdk';
2
- import { Config } from '../config.mjs';
3
- import { SigningAccount } from './account.mjs';
4
- import { AlgoAmount } from './amount.mjs';
5
- import { ClientManager } from './client-manager.mjs';
6
- import { TransactionComposer } from './composer.mjs';
7
-
1
+ import { Config } from "../config.mjs";
2
+ import { SigningAccount } from "./account.mjs";
3
+ import { AlgoAmount } from "./amount.mjs";
4
+ import { TransactionComposer } from "./composer.mjs";
5
+ import { ClientManager } from "./client-manager.mjs";
6
+ import algosdk from "algosdk";
7
+ //#region src/types/kmd-account-manager.ts
8
8
  /** Provides abstractions over a [KMD](https://github.com/algorand/go-algorand/blob/master/daemon/kmd/README.md) instance
9
- * that makes it easier to get and manage accounts using KMD. */
10
- class KmdAccountManager {
11
- /**
12
- * Create a new KMD manager.
13
- * @param clientManager A ClientManager client to use for algod and kmd clients
14
- */
15
- constructor(clientManager) {
16
- this._clientManager = clientManager;
17
- try {
18
- this._kmd = clientManager.kmd;
19
- }
20
- catch {
21
- this._kmd = undefined;
22
- }
23
- }
24
- async kmd() {
25
- if (this._kmd === undefined) {
26
- if (await this._clientManager.isLocalNet()) {
27
- const { kmdConfig } = ClientManager.getConfigFromEnvironmentOrLocalNet();
28
- if (kmdConfig) {
29
- this._kmd = ClientManager.getKmdClient(kmdConfig);
30
- return this._kmd;
31
- }
32
- }
33
- this._kmd = null;
34
- }
35
- if (!this._kmd) {
36
- throw new Error('Attempt to use Kmd client in AlgoKit instance with no Kmd configured');
37
- }
38
- return this._kmd;
39
- }
40
- /**
41
- * Returns an Algorand signing account with private key loaded from the given KMD wallet (identified by name).
42
- *
43
- * @param walletName The name of the wallet to retrieve an account from
44
- * @param predicate An optional filter to use to find the account (otherwise it will return a random account from the wallet)
45
- * @param sender The optional sender address to use this signer for (aka a rekeyed account)
46
- * @example Get default funded account in a LocalNet
47
- *
48
- * ```typescript
49
- * const defaultDispenserAccount = await kmdAccountManager.getWalletAccount(
50
- * 'unencrypted-default-wallet',
51
- * a => a.status !== 'Offline' && a.amount > 1_000_000_000
52
- * )
53
- * ```
54
- * @returns The signing account (with private key loaded) or undefined if no matching wallet or account was found
55
- */
56
- async getWalletAccount(walletName,
57
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
58
- predicate, sender) {
59
- return this.findWalletAccount(walletName, predicate, sender);
60
- }
61
- async findWalletAccount(walletName,
62
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
63
- predicateOrAddress, sender) {
64
- const kmd = await this.kmd();
65
- const walletsResponse = await kmd.listWallets();
66
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
67
- const wallet = walletsResponse.wallets.filter((w) => w.name === walletName);
68
- if (wallet.length === 0) {
69
- return undefined;
70
- }
71
- const walletId = wallet[0].id;
72
- const walletHandle = (await kmd.initWalletHandle(walletId, '')).wallet_handle_token;
73
- let matchedAddress = undefined;
74
- if (predicateOrAddress && typeof predicateOrAddress === 'string') {
75
- matchedAddress = predicateOrAddress;
76
- }
77
- else {
78
- const addresses = (await kmd.listKeys(walletHandle)).addresses;
79
- if (addresses.length > 0) {
80
- if (predicateOrAddress && typeof predicateOrAddress === 'function') {
81
- for (let i = 0; i < addresses.length; i++) {
82
- const account = await this._clientManager.algod.accountInformation(addresses[i]).do();
83
- if (predicateOrAddress(account)) {
84
- matchedAddress = addresses[i];
85
- break;
86
- }
87
- }
88
- }
89
- else {
90
- matchedAddress = addresses[0];
91
- }
92
- }
93
- }
94
- if (!matchedAddress) {
95
- return undefined;
96
- }
97
- const accountKey = (await kmd.exportKey(walletHandle, '', matchedAddress)).private_key;
98
- const accountMnemonic = algosdk.secretKeyToMnemonic(accountKey);
99
- const account = algosdk.mnemonicToSecretKey(accountMnemonic);
100
- const signingAccount = new SigningAccount(account, sender);
101
- return {
102
- account: signingAccount,
103
- addr: signingAccount.addr,
104
- signer: signingAccount.signer,
105
- };
106
- }
107
- /**
108
- * Gets an account with private key loaded from a KMD wallet of the given name, or alternatively creates one with funds in it via a KMD wallet of the given name.
109
- *
110
- * This is useful to get idempotent accounts from LocalNet without having to specify the private key (which will change when resetting the LocalNet).
111
- *
112
- * This significantly speeds up local dev time and improves experience since you can write code that *just works* first go without manual config in a fresh LocalNet.
113
- *
114
- * If this is used via `mnemonicAccountFromEnvironment`, then you can even use the same code that runs on production without changes for local development!
115
- *
116
- * @param name The name of the wallet to retrieve / create
117
- * @param fundWith The number of Algo to fund the account with when it gets created, if not specified then 1000 ALGO will be funded from the dispenser account
118
- *
119
- * @example
120
- * ```typescript
121
- * // Idempotently get (if exists) or create (if it doesn't exist yet) an account by name using KMD
122
- * // if creating it then fund it with 2 ALGO from the default dispenser account
123
- * const newAccount = await kmdAccountManager.getOrCreateWalletAccount('account1', (2).algo())
124
- * // This will return the same account as above since the name matches
125
- * const existingAccount = await kmdAccountManager.getOrCreateWalletAccount('account1')
126
- * ```
127
- *
128
- * @returns An Algorand account with private key loaded - either one that already existed in the given KMD wallet, or a new one that is funded for you
129
- */
130
- async getOrCreateWalletAccount(name, fundWith) {
131
- // Get an existing account from the KMD wallet
132
- const existing = await this.getWalletAccount(name);
133
- if (existing) {
134
- return existing;
135
- }
136
- const kmd = await this.kmd();
137
- // None existed: create the KMD wallet instead
138
- const walletId = (await kmd.createWallet(name, '')).wallet.id;
139
- const walletHandle = (await kmd.initWalletHandle(walletId, '')).wallet_handle_token;
140
- await kmd.generateKey(walletHandle);
141
- // Get the account from the new KMD wallet
142
- const account = (await this.getWalletAccount(name));
143
- Config.logger.info(`LocalNet account '${name}' doesn't yet exist; created account ${account.addr} with keys stored in KMD and funding with ${fundWith?.algo ?? 1000} ALGO`);
144
- // Fund the account from the dispenser
145
- const dispenser = await this.getLocalNetDispenserAccount();
146
- await new TransactionComposer({
147
- algod: this._clientManager.algod,
148
- getSigner: () => dispenser.signer,
149
- getSuggestedParams: () => this._clientManager.algod.getTransactionParams().do(),
150
- })
151
- .addPayment({
152
- amount: fundWith ?? AlgoAmount.Algo(1000),
153
- receiver: account.addr,
154
- sender: dispenser.addr,
155
- })
156
- .send();
157
- return account;
158
- }
159
- /**
160
- * Returns an Algorand account with private key loaded for the default LocalNet dispenser account (that can be used to fund other accounts).
161
- * @example
162
- * ```typescript
163
- * const dispenser = await kmdAccountManager.getLocalNetDispenserAccount()
164
- * ```
165
- * @returns The default LocalNet dispenser account
166
- */
167
- async getLocalNetDispenserAccount() {
168
- if (!(await this._clientManager.isLocalNet())) {
169
- throw new Error("Can't get LocalNet dispenser account from non LocalNet network");
170
- }
171
- const genesisResponse = JSON.parse(await this._clientManager.algod.genesis().do());
172
- const dispenserAddresses = genesisResponse.alloc.filter((a) => a.comment === 'Wallet1').map((a) => a.addr);
173
- if (dispenserAddresses.length > 0) {
174
- const dispenser = await this.findWalletAccount('unencrypted-default-wallet', dispenserAddresses[0]);
175
- if (dispenser) {
176
- return dispenser;
177
- }
178
- }
179
- throw new Error("Error retrieving LocalNet dispenser account; couldn't find the default account in KMD");
180
- }
181
- }
182
-
9
+ * that makes it easier to get and manage accounts using KMD. */
10
+ var KmdAccountManager = class {
11
+ _clientManager;
12
+ _kmd;
13
+ /**
14
+ * Create a new KMD manager.
15
+ * @param clientManager A ClientManager client to use for algod and kmd clients
16
+ */
17
+ constructor(clientManager) {
18
+ this._clientManager = clientManager;
19
+ try {
20
+ this._kmd = clientManager.kmd;
21
+ } catch {
22
+ this._kmd = void 0;
23
+ }
24
+ }
25
+ async kmd() {
26
+ if (this._kmd === void 0) {
27
+ if (await this._clientManager.isLocalNet()) {
28
+ const { kmdConfig } = ClientManager.getConfigFromEnvironmentOrLocalNet();
29
+ if (kmdConfig) {
30
+ this._kmd = ClientManager.getKmdClient(kmdConfig);
31
+ return this._kmd;
32
+ }
33
+ }
34
+ this._kmd = null;
35
+ }
36
+ if (!this._kmd) throw new Error("Attempt to use Kmd client in AlgoKit instance with no Kmd configured");
37
+ return this._kmd;
38
+ }
39
+ /**
40
+ * Returns an Algorand signing account with private key loaded from the given KMD wallet (identified by name).
41
+ *
42
+ * @param walletName The name of the wallet to retrieve an account from
43
+ * @param predicate An optional filter to use to find the account (otherwise it will return a random account from the wallet)
44
+ * @param sender The optional sender address to use this signer for (aka a rekeyed account)
45
+ * @example Get default funded account in a LocalNet
46
+ *
47
+ * ```typescript
48
+ * const defaultDispenserAccount = await kmdAccountManager.getWalletAccount(
49
+ * 'unencrypted-default-wallet',
50
+ * a => a.status !== 'Offline' && a.amount > 1_000_000_000
51
+ * )
52
+ * ```
53
+ * @returns The signing account (with private key loaded) or undefined if no matching wallet or account was found
54
+ */
55
+ async getWalletAccount(walletName, predicate, sender) {
56
+ return this.findWalletAccount(walletName, predicate, sender);
57
+ }
58
+ async findWalletAccount(walletName, predicateOrAddress, sender) {
59
+ const kmd = await this.kmd();
60
+ const wallet = (await kmd.listWallets()).wallets.filter((w) => w.name === walletName);
61
+ if (wallet.length === 0) return;
62
+ const walletHandle = (await kmd.initWalletHandle(wallet[0].id, "")).wallet_handle_token;
63
+ let matchedAddress = void 0;
64
+ if (predicateOrAddress && typeof predicateOrAddress === "string") matchedAddress = predicateOrAddress;
65
+ else {
66
+ const addresses = (await kmd.listKeys(walletHandle)).addresses;
67
+ if (addresses.length > 0) if (predicateOrAddress && typeof predicateOrAddress === "function") {
68
+ for (let i = 0; i < addresses.length; i++) if (predicateOrAddress(await this._clientManager.algod.accountInformation(addresses[i]).do())) {
69
+ matchedAddress = addresses[i];
70
+ break;
71
+ }
72
+ } else matchedAddress = addresses[0];
73
+ }
74
+ if (!matchedAddress) return;
75
+ const accountKey = (await kmd.exportKey(walletHandle, "", matchedAddress)).private_key;
76
+ const accountMnemonic = algosdk.secretKeyToMnemonic(accountKey);
77
+ const signingAccount = new SigningAccount(algosdk.mnemonicToSecretKey(accountMnemonic), sender);
78
+ return {
79
+ account: signingAccount,
80
+ addr: signingAccount.addr,
81
+ signer: signingAccount.signer
82
+ };
83
+ }
84
+ /**
85
+ * Gets an account with private key loaded from a KMD wallet of the given name, or alternatively creates one with funds in it via a KMD wallet of the given name.
86
+ *
87
+ * This is useful to get idempotent accounts from LocalNet without having to specify the private key (which will change when resetting the LocalNet).
88
+ *
89
+ * This significantly speeds up local dev time and improves experience since you can write code that *just works* first go without manual config in a fresh LocalNet.
90
+ *
91
+ * If this is used via `mnemonicAccountFromEnvironment`, then you can even use the same code that runs on production without changes for local development!
92
+ *
93
+ * @param name The name of the wallet to retrieve / create
94
+ * @param fundWith The number of Algo to fund the account with when it gets created, if not specified then 1000 ALGO will be funded from the dispenser account
95
+ *
96
+ * @example
97
+ * ```typescript
98
+ * // Idempotently get (if exists) or create (if it doesn't exist yet) an account by name using KMD
99
+ * // if creating it then fund it with 2 ALGO from the default dispenser account
100
+ * const newAccount = await kmdAccountManager.getOrCreateWalletAccount('account1', (2).algo())
101
+ * // This will return the same account as above since the name matches
102
+ * const existingAccount = await kmdAccountManager.getOrCreateWalletAccount('account1')
103
+ * ```
104
+ *
105
+ * @returns An Algorand account with private key loaded - either one that already existed in the given KMD wallet, or a new one that is funded for you
106
+ */
107
+ async getOrCreateWalletAccount(name, fundWith) {
108
+ const existing = await this.getWalletAccount(name);
109
+ if (existing) return existing;
110
+ const kmd = await this.kmd();
111
+ const walletId = (await kmd.createWallet(name, "")).wallet.id;
112
+ const walletHandle = (await kmd.initWalletHandle(walletId, "")).wallet_handle_token;
113
+ await kmd.generateKey(walletHandle);
114
+ const account = await this.getWalletAccount(name);
115
+ Config.logger.info(`LocalNet account '${name}' doesn't yet exist; created account ${account.addr} with keys stored in KMD and funding with ${fundWith?.algo ?? 1e3} ALGO`);
116
+ const dispenser = await this.getLocalNetDispenserAccount();
117
+ await new TransactionComposer({
118
+ algod: this._clientManager.algod,
119
+ getSigner: () => dispenser.signer,
120
+ getSuggestedParams: () => this._clientManager.algod.getTransactionParams().do()
121
+ }).addPayment({
122
+ amount: fundWith ?? AlgoAmount.Algo(1e3),
123
+ receiver: account.addr,
124
+ sender: dispenser.addr
125
+ }).send();
126
+ return account;
127
+ }
128
+ /**
129
+ * Returns an Algorand account with private key loaded for the default LocalNet dispenser account (that can be used to fund other accounts).
130
+ * @example
131
+ * ```typescript
132
+ * const dispenser = await kmdAccountManager.getLocalNetDispenserAccount()
133
+ * ```
134
+ * @returns The default LocalNet dispenser account
135
+ */
136
+ async getLocalNetDispenserAccount() {
137
+ if (!await this._clientManager.isLocalNet()) throw new Error("Can't get LocalNet dispenser account from non LocalNet network");
138
+ const dispenserAddresses = JSON.parse(await this._clientManager.algod.genesis().do()).alloc.filter((a) => a.comment === "Wallet1").map((a) => a.addr);
139
+ if (dispenserAddresses.length > 0) {
140
+ const dispenser = await this.findWalletAccount("unencrypted-default-wallet", dispenserAddresses[0]);
141
+ if (dispenser) return dispenser;
142
+ }
143
+ throw new Error("Error retrieving LocalNet dispenser account; couldn't find the default account in KMD");
144
+ }
145
+ };
146
+ //#endregion
183
147
  export { KmdAccountManager };
184
- //# sourceMappingURL=kmd-account-manager.mjs.map
148
+
149
+ //# sourceMappingURL=kmd-account-manager.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"kmd-account-manager.mjs","sources":["../../src/types/kmd-account-manager.ts"],"sourcesContent":["import algosdk, { Address } from 'algosdk'\nimport { Config } from '../config'\nimport { SigningAccount, TransactionSignerAccount } from './account'\nimport { AlgoAmount } from './amount'\nimport { ClientManager } from './client-manager'\nimport { TransactionComposer } from './composer'\n\n/** Provides abstractions over a [KMD](https://github.com/algorand/go-algorand/blob/master/daemon/kmd/README.md) instance\n * that makes it easier to get and manage accounts using KMD. */\nexport class KmdAccountManager {\n private _clientManager: Omit<ClientManager, 'kmd'>\n private _kmd?: algosdk.Kmd | null\n\n /**\n * Create a new KMD manager.\n * @param clientManager A ClientManager client to use for algod and kmd clients\n */\n constructor(clientManager: ClientManager) {\n this._clientManager = clientManager\n try {\n this._kmd = clientManager.kmd\n } catch {\n this._kmd = undefined\n }\n }\n\n async kmd(): Promise<algosdk.Kmd> {\n if (this._kmd === undefined) {\n if (await this._clientManager.isLocalNet()) {\n const { kmdConfig } = ClientManager.getConfigFromEnvironmentOrLocalNet()\n if (kmdConfig) {\n this._kmd = ClientManager.getKmdClient(kmdConfig)\n return this._kmd\n }\n }\n this._kmd = null\n }\n\n if (!this._kmd) {\n throw new Error('Attempt to use Kmd client in AlgoKit instance with no Kmd configured')\n }\n\n return this._kmd\n }\n\n /**\n * Returns an Algorand signing account with private key loaded from the given KMD wallet (identified by name).\n *\n * @param walletName The name of the wallet to retrieve an account from\n * @param predicate An optional filter to use to find the account (otherwise it will return a random account from the wallet)\n * @param sender The optional sender address to use this signer for (aka a rekeyed account)\n * @example Get default funded account in a LocalNet\n *\n * ```typescript\n * const defaultDispenserAccount = await kmdAccountManager.getWalletAccount(\n * 'unencrypted-default-wallet',\n * a => a.status !== 'Offline' && a.amount > 1_000_000_000\n * )\n * ```\n * @returns The signing account (with private key loaded) or undefined if no matching wallet or account was found\n */\n public async getWalletAccount(\n walletName: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n predicate?: (account: Record<string, any>) => boolean,\n sender?: string | Address,\n ): Promise<(TransactionSignerAccount & { account: SigningAccount }) | undefined> {\n return this.findWalletAccount(walletName, predicate, sender)\n }\n\n private async findWalletAccount(\n walletName: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n predicateOrAddress?: ((account: Record<string, any>) => boolean) | string,\n sender?: string | Address,\n ): Promise<(TransactionSignerAccount & { account: SigningAccount }) | undefined> {\n const kmd = await this.kmd()\n const walletsResponse = await kmd.listWallets()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const wallet = walletsResponse.wallets.filter((w: any) => w.name === walletName)\n if (wallet.length === 0) {\n return undefined\n }\n const walletId = wallet[0].id\n const walletHandle = (await kmd.initWalletHandle(walletId, '')).wallet_handle_token\n\n let matchedAddress: string | undefined = undefined\n if (predicateOrAddress && typeof predicateOrAddress === 'string') {\n matchedAddress = predicateOrAddress\n } else {\n const addresses = (await kmd.listKeys(walletHandle)).addresses\n if (addresses.length > 0) {\n if (predicateOrAddress && typeof predicateOrAddress === 'function') {\n for (let i = 0; i < addresses.length; i++) {\n const account = await this._clientManager.algod.accountInformation(addresses[i]).do()\n if (predicateOrAddress(account)) {\n matchedAddress = addresses[i]\n break\n }\n }\n } else {\n matchedAddress = addresses[0]\n }\n }\n }\n\n if (!matchedAddress) {\n return undefined\n }\n\n const accountKey = (await kmd.exportKey(walletHandle, '', matchedAddress)).private_key\n const accountMnemonic = algosdk.secretKeyToMnemonic(accountKey)\n const account = algosdk.mnemonicToSecretKey(accountMnemonic)\n const signingAccount = new SigningAccount(account, sender)\n\n return {\n account: signingAccount,\n addr: signingAccount.addr,\n signer: signingAccount.signer,\n }\n }\n\n /**\n * Gets an account with private key loaded from a KMD wallet of the given name, or alternatively creates one with funds in it via a KMD wallet of the given name.\n *\n * This is useful to get idempotent accounts from LocalNet without having to specify the private key (which will change when resetting the LocalNet).\n *\n * This significantly speeds up local dev time and improves experience since you can write code that *just works* first go without manual config in a fresh LocalNet.\n *\n * If this is used via `mnemonicAccountFromEnvironment`, then you can even use the same code that runs on production without changes for local development!\n *\n * @param name The name of the wallet to retrieve / create\n * @param fundWith The number of Algo to fund the account with when it gets created, if not specified then 1000 ALGO will be funded from the dispenser account\n *\n * @example\n * ```typescript\n * // Idempotently get (if exists) or create (if it doesn't exist yet) an account by name using KMD\n * // if creating it then fund it with 2 ALGO from the default dispenser account\n * const newAccount = await kmdAccountManager.getOrCreateWalletAccount('account1', (2).algo())\n * // This will return the same account as above since the name matches\n * const existingAccount = await kmdAccountManager.getOrCreateWalletAccount('account1')\n * ```\n *\n * @returns An Algorand account with private key loaded - either one that already existed in the given KMD wallet, or a new one that is funded for you\n */\n public async getOrCreateWalletAccount(\n name: string,\n fundWith?: AlgoAmount,\n ): Promise<TransactionSignerAccount & { account: SigningAccount }> {\n // Get an existing account from the KMD wallet\n const existing = await this.getWalletAccount(name)\n if (existing) {\n return existing\n }\n\n const kmd = await this.kmd()\n\n // None existed: create the KMD wallet instead\n const walletId = (await kmd.createWallet(name, '')).wallet.id\n const walletHandle = (await kmd.initWalletHandle(walletId, '')).wallet_handle_token\n await kmd.generateKey(walletHandle)\n\n // Get the account from the new KMD wallet\n const account = (await this.getWalletAccount(name))!\n\n Config.logger.info(\n `LocalNet account '${name}' doesn't yet exist; created account ${account.addr} with keys stored in KMD and funding with ${\n fundWith?.algo ?? 1000\n } ALGO`,\n )\n\n // Fund the account from the dispenser\n const dispenser = await this.getLocalNetDispenserAccount()\n await new TransactionComposer({\n algod: this._clientManager.algod,\n getSigner: () => dispenser.signer,\n getSuggestedParams: () => this._clientManager.algod.getTransactionParams().do(),\n })\n .addPayment({\n amount: fundWith ?? AlgoAmount.Algo(1000),\n receiver: account.addr,\n sender: dispenser.addr,\n })\n .send()\n\n return account\n }\n\n /**\n * Returns an Algorand account with private key loaded for the default LocalNet dispenser account (that can be used to fund other accounts).\n * @example\n * ```typescript\n * const dispenser = await kmdAccountManager.getLocalNetDispenserAccount()\n * ```\n * @returns The default LocalNet dispenser account\n */\n public async getLocalNetDispenserAccount() {\n if (!(await this._clientManager.isLocalNet())) {\n throw new Error(\"Can't get LocalNet dispenser account from non LocalNet network\")\n }\n const genesisResponse = JSON.parse(await this._clientManager.algod.genesis().do()) as {\n alloc: Array<{ addr: string; comment: string }>\n }\n const dispenserAddresses = genesisResponse.alloc.filter((a) => a.comment === 'Wallet1').map((a) => a.addr)\n if (dispenserAddresses.length > 0) {\n const dispenser = await this.findWalletAccount('unencrypted-default-wallet', dispenserAddresses[0])\n if (dispenser) {\n return dispenser\n }\n }\n\n throw new Error(\"Error retrieving LocalNet dispenser account; couldn't find the default account in KMD\")\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kmd-account-manager.mjs","names":[],"sources":["../../src/types/kmd-account-manager.ts"],"sourcesContent":["import algosdk, { Address } from 'algosdk'\nimport { Config } from '../config'\nimport { SigningAccount, TransactionSignerAccount } from './account'\nimport { AlgoAmount } from './amount'\nimport { ClientManager } from './client-manager'\nimport { TransactionComposer } from './composer'\n\n/** Provides abstractions over a [KMD](https://github.com/algorand/go-algorand/blob/master/daemon/kmd/README.md) instance\n * that makes it easier to get and manage accounts using KMD. */\nexport class KmdAccountManager {\n private _clientManager: Omit<ClientManager, 'kmd'>\n private _kmd?: algosdk.Kmd | null\n\n /**\n * Create a new KMD manager.\n * @param clientManager A ClientManager client to use for algod and kmd clients\n */\n constructor(clientManager: ClientManager) {\n this._clientManager = clientManager\n try {\n this._kmd = clientManager.kmd\n } catch {\n this._kmd = undefined\n }\n }\n\n async kmd(): Promise<algosdk.Kmd> {\n if (this._kmd === undefined) {\n if (await this._clientManager.isLocalNet()) {\n const { kmdConfig } = ClientManager.getConfigFromEnvironmentOrLocalNet()\n if (kmdConfig) {\n this._kmd = ClientManager.getKmdClient(kmdConfig)\n return this._kmd\n }\n }\n this._kmd = null\n }\n\n if (!this._kmd) {\n throw new Error('Attempt to use Kmd client in AlgoKit instance with no Kmd configured')\n }\n\n return this._kmd\n }\n\n /**\n * Returns an Algorand signing account with private key loaded from the given KMD wallet (identified by name).\n *\n * @param walletName The name of the wallet to retrieve an account from\n * @param predicate An optional filter to use to find the account (otherwise it will return a random account from the wallet)\n * @param sender The optional sender address to use this signer for (aka a rekeyed account)\n * @example Get default funded account in a LocalNet\n *\n * ```typescript\n * const defaultDispenserAccount = await kmdAccountManager.getWalletAccount(\n * 'unencrypted-default-wallet',\n * a => a.status !== 'Offline' && a.amount > 1_000_000_000\n * )\n * ```\n * @returns The signing account (with private key loaded) or undefined if no matching wallet or account was found\n */\n public async getWalletAccount(\n walletName: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n predicate?: (account: Record<string, any>) => boolean,\n sender?: string | Address,\n ): Promise<(TransactionSignerAccount & { account: SigningAccount }) | undefined> {\n return this.findWalletAccount(walletName, predicate, sender)\n }\n\n private async findWalletAccount(\n walletName: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n predicateOrAddress?: ((account: Record<string, any>) => boolean) | string,\n sender?: string | Address,\n ): Promise<(TransactionSignerAccount & { account: SigningAccount }) | undefined> {\n const kmd = await this.kmd()\n const walletsResponse = await kmd.listWallets()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const wallet = walletsResponse.wallets.filter((w: any) => w.name === walletName)\n if (wallet.length === 0) {\n return undefined\n }\n const walletId = wallet[0].id\n const walletHandle = (await kmd.initWalletHandle(walletId, '')).wallet_handle_token\n\n let matchedAddress: string | undefined = undefined\n if (predicateOrAddress && typeof predicateOrAddress === 'string') {\n matchedAddress = predicateOrAddress\n } else {\n const addresses = (await kmd.listKeys(walletHandle)).addresses\n if (addresses.length > 0) {\n if (predicateOrAddress && typeof predicateOrAddress === 'function') {\n for (let i = 0; i < addresses.length; i++) {\n const account = await this._clientManager.algod.accountInformation(addresses[i]).do()\n if (predicateOrAddress(account)) {\n matchedAddress = addresses[i]\n break\n }\n }\n } else {\n matchedAddress = addresses[0]\n }\n }\n }\n\n if (!matchedAddress) {\n return undefined\n }\n\n const accountKey = (await kmd.exportKey(walletHandle, '', matchedAddress)).private_key\n const accountMnemonic = algosdk.secretKeyToMnemonic(accountKey)\n const account = algosdk.mnemonicToSecretKey(accountMnemonic)\n const signingAccount = new SigningAccount(account, sender)\n\n return {\n account: signingAccount,\n addr: signingAccount.addr,\n signer: signingAccount.signer,\n }\n }\n\n /**\n * Gets an account with private key loaded from a KMD wallet of the given name, or alternatively creates one with funds in it via a KMD wallet of the given name.\n *\n * This is useful to get idempotent accounts from LocalNet without having to specify the private key (which will change when resetting the LocalNet).\n *\n * This significantly speeds up local dev time and improves experience since you can write code that *just works* first go without manual config in a fresh LocalNet.\n *\n * If this is used via `mnemonicAccountFromEnvironment`, then you can even use the same code that runs on production without changes for local development!\n *\n * @param name The name of the wallet to retrieve / create\n * @param fundWith The number of Algo to fund the account with when it gets created, if not specified then 1000 ALGO will be funded from the dispenser account\n *\n * @example\n * ```typescript\n * // Idempotently get (if exists) or create (if it doesn't exist yet) an account by name using KMD\n * // if creating it then fund it with 2 ALGO from the default dispenser account\n * const newAccount = await kmdAccountManager.getOrCreateWalletAccount('account1', (2).algo())\n * // This will return the same account as above since the name matches\n * const existingAccount = await kmdAccountManager.getOrCreateWalletAccount('account1')\n * ```\n *\n * @returns An Algorand account with private key loaded - either one that already existed in the given KMD wallet, or a new one that is funded for you\n */\n public async getOrCreateWalletAccount(\n name: string,\n fundWith?: AlgoAmount,\n ): Promise<TransactionSignerAccount & { account: SigningAccount }> {\n // Get an existing account from the KMD wallet\n const existing = await this.getWalletAccount(name)\n if (existing) {\n return existing\n }\n\n const kmd = await this.kmd()\n\n // None existed: create the KMD wallet instead\n const walletId = (await kmd.createWallet(name, '')).wallet.id\n const walletHandle = (await kmd.initWalletHandle(walletId, '')).wallet_handle_token\n await kmd.generateKey(walletHandle)\n\n // Get the account from the new KMD wallet\n const account = (await this.getWalletAccount(name))!\n\n Config.logger.info(\n `LocalNet account '${name}' doesn't yet exist; created account ${account.addr} with keys stored in KMD and funding with ${\n fundWith?.algo ?? 1000\n } ALGO`,\n )\n\n // Fund the account from the dispenser\n const dispenser = await this.getLocalNetDispenserAccount()\n await new TransactionComposer({\n algod: this._clientManager.algod,\n getSigner: () => dispenser.signer,\n getSuggestedParams: () => this._clientManager.algod.getTransactionParams().do(),\n })\n .addPayment({\n amount: fundWith ?? AlgoAmount.Algo(1000),\n receiver: account.addr,\n sender: dispenser.addr,\n })\n .send()\n\n return account\n }\n\n /**\n * Returns an Algorand account with private key loaded for the default LocalNet dispenser account (that can be used to fund other accounts).\n * @example\n * ```typescript\n * const dispenser = await kmdAccountManager.getLocalNetDispenserAccount()\n * ```\n * @returns The default LocalNet dispenser account\n */\n public async getLocalNetDispenserAccount() {\n if (!(await this._clientManager.isLocalNet())) {\n throw new Error(\"Can't get LocalNet dispenser account from non LocalNet network\")\n }\n const genesisResponse = JSON.parse(await this._clientManager.algod.genesis().do()) as {\n alloc: Array<{ addr: string; comment: string }>\n }\n const dispenserAddresses = genesisResponse.alloc.filter((a) => a.comment === 'Wallet1').map((a) => a.addr)\n if (dispenserAddresses.length > 0) {\n const dispenser = await this.findWalletAccount('unencrypted-default-wallet', dispenserAddresses[0])\n if (dispenser) {\n return dispenser\n }\n }\n\n throw new Error(\"Error retrieving LocalNet dispenser account; couldn't find the default account in KMD\")\n }\n}\n"],"mappings":"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"}
@@ -1,10 +1,15 @@
1
- import { AVMTracesEventData, TealSourcesDebugEventData } from './debugging';
2
- export declare enum EventType {
3
- TxnGroupSimulated = "TxnGroupSimulated",
4
- AppCompiled = "AppCompiled"
1
+ import { AVMTracesEventData, TealSourcesDebugEventData } from "./debugging.js";
2
+
3
+ //#region src/types/lifecycle-events.d.ts
4
+ declare enum EventType {
5
+ TxnGroupSimulated = "TxnGroupSimulated",
6
+ AppCompiled = "AppCompiled"
5
7
  }
6
- export type EventDataMap = {
7
- [EventType.TxnGroupSimulated]: AVMTracesEventData;
8
- [EventType.AppCompiled]: TealSourcesDebugEventData;
9
- [key: string]: unknown;
8
+ type EventDataMap = {
9
+ [EventType.TxnGroupSimulated]: AVMTracesEventData;
10
+ [EventType.AppCompiled]: TealSourcesDebugEventData;
11
+ [key: string]: unknown;
10
12
  };
13
+ //#endregion
14
+ export { EventDataMap, EventType };
15
+ //# sourceMappingURL=lifecycle-events.d.ts.map
@@ -1,8 +1,11 @@
1
- 'use strict';
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ //#region src/types/lifecycle-events.ts
3
+ let EventType = /* @__PURE__ */ function(EventType) {
4
+ EventType["TxnGroupSimulated"] = "TxnGroupSimulated";
5
+ EventType["AppCompiled"] = "AppCompiled";
6
+ return EventType;
7
+ }({});
8
+ //#endregion
9
+ exports.EventType = EventType;
2
10
 
3
- exports.EventType = void 0;
4
- (function (EventType) {
5
- EventType["TxnGroupSimulated"] = "TxnGroupSimulated";
6
- EventType["AppCompiled"] = "AppCompiled";
7
- })(exports.EventType || (exports.EventType = {}));
8
- //# sourceMappingURL=lifecycle-events.js.map
11
+ //# sourceMappingURL=lifecycle-events.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle-events.js","sources":["../../src/types/lifecycle-events.ts"],"sourcesContent":["import { AVMTracesEventData, TealSourcesDebugEventData } from './debugging'\n\nexport enum EventType {\n TxnGroupSimulated = 'TxnGroupSimulated',\n AppCompiled = 'AppCompiled',\n}\n\nexport type EventDataMap = {\n [EventType.TxnGroupSimulated]: AVMTracesEventData\n [EventType.AppCompiled]: TealSourcesDebugEventData\n [key: string]: unknown\n}\n"],"names":["EventType"],"mappings":";;AAEYA;AAAZ,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC;AACvC,IAAA,SAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC7B,CAAC,EAHWA,iBAAS,KAATA,iBAAS,GAGpB,EAAA,CAAA,CAAA;;"}
1
+ {"version":3,"file":"lifecycle-events.js","names":[],"sources":["../../src/types/lifecycle-events.ts"],"sourcesContent":["import { AVMTracesEventData, TealSourcesDebugEventData } from './debugging'\n\nexport enum EventType {\n TxnGroupSimulated = 'TxnGroupSimulated',\n AppCompiled = 'AppCompiled',\n}\n\nexport type EventDataMap = {\n [EventType.TxnGroupSimulated]: AVMTracesEventData\n [EventType.AppCompiled]: TealSourcesDebugEventData\n [key: string]: unknown\n}\n"],"mappings":";;AAEA,IAAY,YAAL,yBAAA,WAAA;CACL,UAAA,uBAAA;CACA,UAAA,iBAAA;;AACF,EAAA,CAAA,CAAA"}
@@ -1,8 +1,10 @@
1
- var EventType;
2
- (function (EventType) {
3
- EventType["TxnGroupSimulated"] = "TxnGroupSimulated";
4
- EventType["AppCompiled"] = "AppCompiled";
5
- })(EventType || (EventType = {}));
6
-
1
+ //#region src/types/lifecycle-events.ts
2
+ let EventType = /* @__PURE__ */ function(EventType) {
3
+ EventType["TxnGroupSimulated"] = "TxnGroupSimulated";
4
+ EventType["AppCompiled"] = "AppCompiled";
5
+ return EventType;
6
+ }({});
7
+ //#endregion
7
8
  export { EventType };
8
- //# sourceMappingURL=lifecycle-events.mjs.map
9
+
10
+ //# sourceMappingURL=lifecycle-events.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle-events.mjs","sources":["../../src/types/lifecycle-events.ts"],"sourcesContent":["import { AVMTracesEventData, TealSourcesDebugEventData } from './debugging'\n\nexport enum EventType {\n TxnGroupSimulated = 'TxnGroupSimulated',\n AppCompiled = 'AppCompiled',\n}\n\nexport type EventDataMap = {\n [EventType.TxnGroupSimulated]: AVMTracesEventData\n [EventType.AppCompiled]: TealSourcesDebugEventData\n [key: string]: unknown\n}\n"],"names":[],"mappings":"IAEY;AAAZ,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC;AACvC,IAAA,SAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC7B,CAAC,EAHW,SAAS,KAAT,SAAS,GAGpB,EAAA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"lifecycle-events.mjs","names":[],"sources":["../../src/types/lifecycle-events.ts"],"sourcesContent":["import { AVMTracesEventData, TealSourcesDebugEventData } from './debugging'\n\nexport enum EventType {\n TxnGroupSimulated = 'TxnGroupSimulated',\n AppCompiled = 'AppCompiled',\n}\n\nexport type EventDataMap = {\n [EventType.TxnGroupSimulated]: AVMTracesEventData\n [EventType.AppCompiled]: TealSourcesDebugEventData\n [key: string]: unknown\n}\n"],"mappings":";AAEA,IAAY,YAAL,yBAAA,WAAA;CACL,UAAA,uBAAA;CACA,UAAA,iBAAA;;AACF,EAAA,CAAA,CAAA"}
@@ -1,15 +1,19 @@
1
+ //#region src/types/logging.d.ts
1
2
  /** General purpose logger type, compatible with Winston and others. */
2
- export type Logger = {
3
- error(message: string, ...optionalParams: unknown[]): void;
4
- warn(message: string, ...optionalParams: unknown[]): void;
5
- info(message: string, ...optionalParams: unknown[]): void;
6
- verbose(message: string, ...optionalParams: unknown[]): void;
7
- debug(message: string, ...optionalParams: unknown[]): void;
3
+ type Logger = {
4
+ error(message: string, ...optionalParams: unknown[]): void;
5
+ warn(message: string, ...optionalParams: unknown[]): void;
6
+ info(message: string, ...optionalParams: unknown[]): void;
7
+ verbose(message: string, ...optionalParams: unknown[]): void;
8
+ debug(message: string, ...optionalParams: unknown[]): void;
8
9
  };
9
10
  /** A logger implementation that writes to console */
10
- export declare const consoleLogger: Logger;
11
- export declare const infoConsoleLogger: Logger;
12
- export declare const verboseConsoleLogger: Logger;
13
- export declare const warningConsoleLogger: Logger;
11
+ declare const consoleLogger: Logger;
12
+ declare const infoConsoleLogger: Logger;
13
+ declare const verboseConsoleLogger: Logger;
14
+ declare const warningConsoleLogger: Logger;
14
15
  /** A logger implementation that does nothing */
15
- export declare const nullLogger: Logger;
16
+ declare const nullLogger: Logger;
17
+ //#endregion
18
+ export { Logger, consoleLogger, infoConsoleLogger, nullLogger, verboseConsoleLogger, warningConsoleLogger };
19
+ //# sourceMappingURL=logging.d.ts.map
package/types/logging.js CHANGED
@@ -1,48 +1,47 @@
1
- 'use strict';
2
-
3
- /* eslint-disable @typescript-eslint/no-unused-vars */
4
- /* eslint-disable no-console */
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ //#region src/types/logging.ts
5
3
  /** A logger implementation that writes to console */
6
4
  const consoleLogger = {
7
- error: console.error,
8
- warn: console.warn,
9
- info: console.info,
10
- verbose: () => { },
11
- debug: console.debug,
5
+ error: console.error,
6
+ warn: console.warn,
7
+ info: console.info,
8
+ verbose: () => {},
9
+ debug: console.debug
12
10
  };
13
11
  const infoConsoleLogger = {
14
- error: console.error,
15
- warn: console.warn,
16
- info: console.info,
17
- verbose: () => { },
18
- debug: () => { },
12
+ error: console.error,
13
+ warn: console.warn,
14
+ info: console.info,
15
+ verbose: () => {},
16
+ debug: () => {}
19
17
  };
20
18
  const verboseConsoleLogger = {
21
- error: console.error,
22
- warn: console.warn,
23
- info: console.info,
24
- verbose: console.trace,
25
- debug: console.debug,
19
+ error: console.error,
20
+ warn: console.warn,
21
+ info: console.info,
22
+ verbose: console.trace,
23
+ debug: console.debug
26
24
  };
27
25
  const warningConsoleLogger = {
28
- error: console.error,
29
- warn: console.warn,
30
- info: () => { },
31
- verbose: () => { },
32
- debug: () => { },
26
+ error: console.error,
27
+ warn: console.warn,
28
+ info: () => {},
29
+ verbose: () => {},
30
+ debug: () => {}
33
31
  };
34
32
  /** A logger implementation that does nothing */
35
33
  const nullLogger = {
36
- error: function (message, ...optionalParams) { },
37
- warn: function (message, ...optionalParams) { },
38
- info: function (message, ...optionalParams) { },
39
- verbose: function (message, ...optionalParams) { },
40
- debug: function (message, ...optionalParams) { },
34
+ error: function(message, ...optionalParams) {},
35
+ warn: function(message, ...optionalParams) {},
36
+ info: function(message, ...optionalParams) {},
37
+ verbose: function(message, ...optionalParams) {},
38
+ debug: function(message, ...optionalParams) {}
41
39
  };
42
-
40
+ //#endregion
43
41
  exports.consoleLogger = consoleLogger;
44
42
  exports.infoConsoleLogger = infoConsoleLogger;
45
43
  exports.nullLogger = nullLogger;
46
44
  exports.verboseConsoleLogger = verboseConsoleLogger;
47
45
  exports.warningConsoleLogger = warningConsoleLogger;
48
- //# sourceMappingURL=logging.js.map
46
+
47
+ //# sourceMappingURL=logging.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logging.js","sources":["../../src/types/logging.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable no-console */\n\n/** General purpose logger type, compatible with Winston and others. */\nexport type Logger = {\n error(message: string, ...optionalParams: unknown[]): void\n warn(message: string, ...optionalParams: unknown[]): void\n info(message: string, ...optionalParams: unknown[]): void\n verbose(message: string, ...optionalParams: unknown[]): void\n debug(message: string, ...optionalParams: unknown[]): void\n}\n\n/** A logger implementation that writes to console */\nexport const consoleLogger: Logger = {\n error: console.error,\n warn: console.warn,\n info: console.info,\n verbose: () => {},\n debug: console.debug,\n}\n\nexport const infoConsoleLogger: Logger = {\n error: console.error,\n warn: console.warn,\n info: console.info,\n verbose: () => {},\n debug: () => {},\n}\n\nexport const verboseConsoleLogger: Logger = {\n error: console.error,\n warn: console.warn,\n info: console.info,\n verbose: console.trace,\n debug: console.debug,\n}\n\nexport const warningConsoleLogger: Logger = {\n error: console.error,\n warn: console.warn,\n info: () => {},\n verbose: () => {},\n debug: () => {},\n}\n\n/** A logger implementation that does nothing */\nexport const nullLogger: Logger = {\n error: function (message: string, ...optionalParams: unknown[]): void {},\n warn: function (message: string, ...optionalParams: unknown[]): void {},\n info: function (message: string, ...optionalParams: unknown[]): void {},\n verbose: function (message: string, ...optionalParams: unknown[]): void {},\n debug: function (message: string, ...optionalParams: unknown[]): void {},\n}\n"],"names":[],"mappings":";;AAAA;AACA;AAWA;AACa,MAAA,aAAa,GAAW;IACnC,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,IAAI,EAAE,OAAO,CAAC,IAAI;IAClB,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,IAAA,OAAO,EAAE,MAAK,GAAG;IACjB,KAAK,EAAE,OAAO,CAAC,KAAK;;AAGT,MAAA,iBAAiB,GAAW;IACvC,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,IAAI,EAAE,OAAO,CAAC,IAAI;IAClB,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,IAAA,OAAO,EAAE,MAAK,GAAG;AACjB,IAAA,KAAK,EAAE,MAAK,GAAG;;AAGJ,MAAA,oBAAoB,GAAW;IAC1C,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,IAAI,EAAE,OAAO,CAAC,IAAI;IAClB,IAAI,EAAE,OAAO,CAAC,IAAI;IAClB,OAAO,EAAE,OAAO,CAAC,KAAK;IACtB,KAAK,EAAE,OAAO,CAAC,KAAK;;AAGT,MAAA,oBAAoB,GAAW;IAC1C,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,IAAA,IAAI,EAAE,MAAK,GAAG;AACd,IAAA,OAAO,EAAE,MAAK,GAAG;AACjB,IAAA,KAAK,EAAE,MAAK,GAAG;;AAGjB;AACa,MAAA,UAAU,GAAW;AAChC,IAAA,KAAK,EAAE,UAAU,OAAe,EAAE,GAAG,cAAyB,KAAU;AACxE,IAAA,IAAI,EAAE,UAAU,OAAe,EAAE,GAAG,cAAyB,KAAU;AACvE,IAAA,IAAI,EAAE,UAAU,OAAe,EAAE,GAAG,cAAyB,KAAU;AACvE,IAAA,OAAO,EAAE,UAAU,OAAe,EAAE,GAAG,cAAyB,KAAU;AAC1E,IAAA,KAAK,EAAE,UAAU,OAAe,EAAE,GAAG,cAAyB,KAAU;;;;;;;;;"}
1
+ {"version":3,"file":"logging.js","names":[],"sources":["../../src/types/logging.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable no-console */\n\n/** General purpose logger type, compatible with Winston and others. */\nexport type Logger = {\n error(message: string, ...optionalParams: unknown[]): void\n warn(message: string, ...optionalParams: unknown[]): void\n info(message: string, ...optionalParams: unknown[]): void\n verbose(message: string, ...optionalParams: unknown[]): void\n debug(message: string, ...optionalParams: unknown[]): void\n}\n\n/** A logger implementation that writes to console */\nexport const consoleLogger: Logger = {\n error: console.error,\n warn: console.warn,\n info: console.info,\n verbose: () => {},\n debug: console.debug,\n}\n\nexport const infoConsoleLogger: Logger = {\n error: console.error,\n warn: console.warn,\n info: console.info,\n verbose: () => {},\n debug: () => {},\n}\n\nexport const verboseConsoleLogger: Logger = {\n error: console.error,\n warn: console.warn,\n info: console.info,\n verbose: console.trace,\n debug: console.debug,\n}\n\nexport const warningConsoleLogger: Logger = {\n error: console.error,\n warn: console.warn,\n info: () => {},\n verbose: () => {},\n debug: () => {},\n}\n\n/** A logger implementation that does nothing */\nexport const nullLogger: Logger = {\n error: function (message: string, ...optionalParams: unknown[]): void {},\n warn: function (message: string, ...optionalParams: unknown[]): void {},\n info: function (message: string, ...optionalParams: unknown[]): void {},\n verbose: function (message: string, ...optionalParams: unknown[]): void {},\n debug: function (message: string, ...optionalParams: unknown[]): void {},\n}\n"],"mappings":";;;AAaA,MAAa,gBAAwB;CACnC,OAAO,QAAQ;CACf,MAAM,QAAQ;CACd,MAAM,QAAQ;CACd,eAAe,CAAC;CAChB,OAAO,QAAQ;AACjB;AAEA,MAAa,oBAA4B;CACvC,OAAO,QAAQ;CACf,MAAM,QAAQ;CACd,MAAM,QAAQ;CACd,eAAe,CAAC;CAChB,aAAa,CAAC;AAChB;AAEA,MAAa,uBAA+B;CAC1C,OAAO,QAAQ;CACf,MAAM,QAAQ;CACd,MAAM,QAAQ;CACd,SAAS,QAAQ;CACjB,OAAO,QAAQ;AACjB;AAEA,MAAa,uBAA+B;CAC1C,OAAO,QAAQ;CACf,MAAM,QAAQ;CACd,YAAY,CAAC;CACb,eAAe,CAAC;CAChB,aAAa,CAAC;AAChB;;AAGA,MAAa,aAAqB;CAChC,OAAO,SAAU,SAAiB,GAAG,gBAAiC,CAAC;CACvE,MAAM,SAAU,SAAiB,GAAG,gBAAiC,CAAC;CACtE,MAAM,SAAU,SAAiB,GAAG,gBAAiC,CAAC;CACtE,SAAS,SAAU,SAAiB,GAAG,gBAAiC,CAAC;CACzE,OAAO,SAAU,SAAiB,GAAG,gBAAiC,CAAC;AACzE"}