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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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,19 +1,19 @@
1
- import algosdk, { Address } from 'algosdk';
2
- import { AccountInformation, MultisigAccount, SigningAccount, TransactionSignerAccount } from './account';
3
- import { AlgoAmount } from './amount';
4
- import { ClientManager } from './client-manager';
5
- import { CommonTransactionParams } from './composer';
6
- import { TestNetDispenserApiClient } from './dispenser-client';
7
- import { KmdAccountManager } from './kmd-account-manager';
8
- import { SendParams, SendSingleTransactionResult } from './transaction';
9
- import LogicSigAccount = algosdk.LogicSigAccount;
10
- import Account = algosdk.Account;
1
+ import { AlgoAmount } from "./amount.js";
2
+ import { AccountInformation, MultisigAccount, SigningAccount, TransactionSignerAccount } from "./account.js";
3
+ import { SendParams, SendSingleTransactionResult } from "./transaction.js";
4
+ import { CommonTransactionParams } from "./composer.js";
5
+ import { TestNetDispenserApiClient } from "./dispenser-client.js";
6
+ import { ClientManager } from "./client-manager.js";
7
+ import { KmdAccountManager } from "./kmd-account-manager.js";
8
+ import algosdk, { Address } from "algosdk";
9
+
10
+ //#region src/types/account-manager.d.ts
11
11
  /** Result from performing an ensureFunded call. */
12
- export interface EnsureFundedResult {
13
- /** The transaction ID of the transaction that funded the account. */
14
- transactionId: string;
15
- /** The amount that was sent to the account. */
16
- amountFunded: AlgoAmount;
12
+ interface EnsureFundedResult {
13
+ /** The transaction ID of the transaction that funded the account. */
14
+ transactionId: string;
15
+ /** The amount that was sent to the account. */
16
+ amountFunded: AlgoAmount;
17
17
  }
18
18
  /**
19
19
  * Returns a `TransactionSigner` for the given account that can sign a transaction.
@@ -25,420 +25,423 @@ export interface EnsureFundedResult {
25
25
  * const signer = getAccountTransactionSigner(account)
26
26
  * ```
27
27
  */
28
- export declare const getAccountTransactionSigner: (val: MultisigAccount | algosdk.Account | SigningAccount | TransactionSignerAccount | algosdk.LogicSigAccount) => algosdk.TransactionSigner;
28
+ declare const getAccountTransactionSigner: (val: TransactionSignerAccount | algosdk.Account | SigningAccount | algosdk.LogicSigAccount | MultisigAccount) => algosdk.TransactionSigner;
29
29
  /** Creates and keeps track of signing accounts that can sign transactions for a sending address. */
30
- export declare class AccountManager {
31
- private _clientManager;
32
- private _kmdAccountManager;
33
- private _accounts;
34
- private _defaultSigner?;
35
- /**
36
- * Create a new account manager.
37
- * @param clientManager The ClientManager client to use for algod and kmd clients
38
- * @example Create a new account manager
39
- * ```typescript
40
- * const accountManager = new AccountManager(clientManager)
41
- * ```
42
- */
43
- constructor(clientManager: ClientManager);
44
- private _getComposer;
45
- /**
46
- * KMD account manager that allows you to easily get and create accounts using KMD.
47
- * @returns The `KmdAccountManager` instance.
48
- * @example
49
- * ```typescript
50
- * const kmdManager = accountManager.kmd;
51
- * ```
52
- */
53
- get kmd(): KmdAccountManager;
54
- /**
55
- * Sets the default signer to use if no other signer is specified.
56
- *
57
- * If this isn't set an a transaction needs signing for a given sender
58
- * then an error will be thrown from `getSigner` / `getAccount`.
59
- * @param signer The signer to use, either a `TransactionSigner` or a `TransactionSignerAccount`
60
- * @example
61
- * ```typescript
62
- * const signer = accountManager.random() // Can be anything that returns a `algosdk.TransactionSigner` or `TransactionSignerAccount`
63
- * accountManager.setDefaultSigner(signer)
64
- *
65
- * // When signing a transaction, if there is no signer registered for the sender then the default signer will be used
66
- * const signer = accountManager.getSigner("SENDERADDRESS")
67
- * ```
68
- * @returns The `AccountManager` so method calls can be chained
69
- */
70
- setDefaultSigner(signer: algosdk.TransactionSigner | TransactionSignerAccount): AccountManager;
71
- /**
72
- * Records the given account (that can sign) against the address of the provided account for later
73
- * retrieval and returns a `TransactionSignerAccount` along with the original account in an `account` property.
74
- */
75
- private signerAccount;
76
- /**
77
- * Tracks the given account for later signing.
78
- *
79
- * Note: If you are generating accounts via the various methods on `AccountManager`
80
- * (like `random`, `fromMnemonic`, `logicsig`, etc.) then they automatically get tracked.
81
- * @param account The account to register, which can be a `TransactionSignerAccount` or
82
- * a `algosdk.Account`, `algosdk.LogicSigAccount`, `SigningAccount` or `MultisigAccount`
83
- * @example
84
- * ```typescript
85
- * const accountManager = new AccountManager(clientManager)
86
- * .setSignerFromAccount(algosdk.generateAccount())
87
- * .setSignerFromAccount(new algosdk.LogicSigAccount(program, args))
88
- * .setSignerFromAccount(new SigningAccount(mnemonic, sender))
89
- * .setSignerFromAccount(new MultisigAccount({version: 1, threshold: 1, addrs: ["ADDRESS1...", "ADDRESS2..."]}, [account1, account2]))
90
- * .setSignerFromAccount({addr: "SENDERADDRESS", signer: transactionSigner})
91
- * ```
92
- * @returns The `AccountManager` instance for method chaining
93
- */
94
- setSignerFromAccount(account: TransactionSignerAccount | Account | LogicSigAccount | SigningAccount | MultisigAccount): this;
95
- /**
96
- * Tracks the given `algosdk.TransactionSigner` against the given sender address for later signing.
97
- * @param sender The sender address to use this signer for
98
- * @param signer The `algosdk.TransactionSigner` to sign transactions with for the given sender
99
- * @example
100
- * ```typescript
101
- * const accountManager = new AccountManager(clientManager)
102
- * .setSigner("SENDERADDRESS", transactionSigner)
103
- * ```
104
- * @returns The `AccountManager` instance for method chaining
105
- */
106
- setSigner(sender: string | Address, signer: algosdk.TransactionSigner): this;
107
- /**
108
- * Takes all registered signers from the given `AccountManager` and adds them to this `AccountManager`.
109
- *
110
- * This is useful for situations where you have multiple contexts you are building accounts in such as unit tests.
111
- * @param anotherAccountManager Another account manager with signers registered
112
- * @param overwriteExisting Whether or not to overwrite any signers that have the same sender address with the ones in the other account manager or not (default: true)
113
- * @returns The `AccountManager` instance for method chaining
114
- * @example
115
- * ```typescript
116
- * accountManager2.setSigners(accountManager1);
117
- * ```
118
- */
119
- setSigners(anotherAccountManager: AccountManager, overwriteExisting?: boolean): this;
120
- /**
121
- * Returns the `TransactionSigner` for the given sender address, ready to sign a transaction for that sender.
122
- *
123
- * If no signer has been registered for that address then the default signer is used if registered and
124
- * if not then an error is thrown.
125
- *
126
- * @param sender The sender address
127
- * @example
128
- * ```typescript
129
- * const signer = accountManager.getSigner("SENDERADDRESS")
130
- * ```
131
- * @returns The `TransactionSigner` or throws an error if not found and no default signer is set
132
- */
133
- getSigner(sender: string | Address): algosdk.TransactionSigner;
134
- /**
135
- * Returns the `TransactionSignerAccount` for the given sender address.
136
- *
137
- * If no signer has been registered for that address then an error is thrown.
138
- * @param sender The sender address
139
- * @example
140
- * ```typescript
141
- * const sender = accountManager.random()
142
- * // ...
143
- * // Returns the `TransactionSignerAccount` for `sender` that has previously been registered
144
- * const account = accountManager.getAccount(sender)
145
- * ```
146
- * @returns The `TransactionSignerAccount` or throws an error if not found
147
- */
148
- getAccount(sender: string | Address): TransactionSignerAccount;
149
- /**
150
- * Returns the given sender account's current status, balance and spendable amounts.
151
- *
152
- * [Response data schema details](https://dev.algorand.co/reference/rest-apis/algod/#accountinformation)
153
- * @example
154
- * ```typescript
155
- * const address = "XBYLS2E6YI6XXL5BWCAMOA4GTWHXWENZMX5UHXMRNWWUQ7BXCY5WC5TEPA";
156
- * const accountInfo = await accountManager.getInformation(address);
157
- * ```
158
- *
159
- * @param sender The account / address to look up
160
- * @returns The account information
161
- */
162
- getInformation(sender: string | Address): Promise<AccountInformation>;
163
- /**
164
- * Tracks and returns an Algorand account with secret key loaded (i.e. that can sign transactions) by taking the mnemonic secret.
165
- *
166
- * @example
167
- * ```typescript
168
- * const account = accountManager.fromMnemonic("mnemonic secret ...")
169
- * const rekeyedAccount = accountManager.fromMnemonic("mnemonic secret ...", "SENDERADDRESS...")
170
- * ```
171
- * @param mnemonicSecret The mnemonic secret representing the private key of an account; **Note: Be careful how the mnemonic is handled**,
172
- * never commit it into source control and ideally load it from the environment (ideally via a secret storage service) rather than the file system.
173
- * @param sender The optional sender address to use this signer for (aka a rekeyed account)
174
- * @returns The account
175
- */
176
- fromMnemonic(mnemonicSecret: string, sender?: string | Address): algosdk.Address & TransactionSignerAccount & {
177
- account: SigningAccount;
30
+ declare class AccountManager {
31
+ private _clientManager;
32
+ private _kmdAccountManager;
33
+ private _accounts;
34
+ private _defaultSigner?;
35
+ /**
36
+ * Create a new account manager.
37
+ * @param clientManager The ClientManager client to use for algod and kmd clients
38
+ * @example Create a new account manager
39
+ * ```typescript
40
+ * const accountManager = new AccountManager(clientManager)
41
+ * ```
42
+ */
43
+ constructor(clientManager: ClientManager);
44
+ private _getComposer;
45
+ /**
46
+ * KMD account manager that allows you to easily get and create accounts using KMD.
47
+ * @returns The `KmdAccountManager` instance.
48
+ * @example
49
+ * ```typescript
50
+ * const kmdManager = accountManager.kmd;
51
+ * ```
52
+ */
53
+ get kmd(): KmdAccountManager;
54
+ /**
55
+ * Sets the default signer to use if no other signer is specified.
56
+ *
57
+ * If this isn't set an a transaction needs signing for a given sender
58
+ * then an error will be thrown from `getSigner` / `getAccount`.
59
+ * @param signer The signer to use, either a `TransactionSigner` or a `TransactionSignerAccount`
60
+ * @example
61
+ * ```typescript
62
+ * const signer = accountManager.random() // Can be anything that returns a `algosdk.TransactionSigner` or `TransactionSignerAccount`
63
+ * accountManager.setDefaultSigner(signer)
64
+ *
65
+ * // When signing a transaction, if there is no signer registered for the sender then the default signer will be used
66
+ * const signer = accountManager.getSigner("SENDERADDRESS")
67
+ * ```
68
+ * @returns The `AccountManager` so method calls can be chained
69
+ */
70
+ setDefaultSigner(signer: algosdk.TransactionSigner | TransactionSignerAccount): AccountManager;
71
+ /**
72
+ * Records the given account (that can sign) against the address of the provided account for later
73
+ * retrieval and returns a `TransactionSignerAccount` along with the original account in an `account` property.
74
+ */
75
+ private signerAccount;
76
+ /**
77
+ * Tracks the given account for later signing.
78
+ *
79
+ * Note: If you are generating accounts via the various methods on `AccountManager`
80
+ * (like `random`, `fromMnemonic`, `logicsig`, etc.) then they automatically get tracked.
81
+ * @param account The account to register, which can be a `TransactionSignerAccount` or
82
+ * a `algosdk.Account`, `algosdk.LogicSigAccount`, `SigningAccount` or `MultisigAccount`
83
+ * @example
84
+ * ```typescript
85
+ * const accountManager = new AccountManager(clientManager)
86
+ * .setSignerFromAccount(algosdk.generateAccount())
87
+ * .setSignerFromAccount(new algosdk.LogicSigAccount(program, args))
88
+ * .setSignerFromAccount(new SigningAccount(mnemonic, sender))
89
+ * .setSignerFromAccount(new MultisigAccount({version: 1, threshold: 1, addrs: ["ADDRESS1...", "ADDRESS2..."]}, [account1, account2]))
90
+ * .setSignerFromAccount({addr: "SENDERADDRESS", signer: transactionSigner})
91
+ * ```
92
+ * @returns The `AccountManager` instance for method chaining
93
+ */
94
+ setSignerFromAccount(account: TransactionSignerAccount | Account | LogicSigAccount | SigningAccount | MultisigAccount): this;
95
+ /**
96
+ * Tracks the given `algosdk.TransactionSigner` against the given sender address for later signing.
97
+ * @param sender The sender address to use this signer for
98
+ * @param signer The `algosdk.TransactionSigner` to sign transactions with for the given sender
99
+ * @example
100
+ * ```typescript
101
+ * const accountManager = new AccountManager(clientManager)
102
+ * .setSigner("SENDERADDRESS", transactionSigner)
103
+ * ```
104
+ * @returns The `AccountManager` instance for method chaining
105
+ */
106
+ setSigner(sender: string | Address, signer: algosdk.TransactionSigner): this;
107
+ /**
108
+ * Takes all registered signers from the given `AccountManager` and adds them to this `AccountManager`.
109
+ *
110
+ * This is useful for situations where you have multiple contexts you are building accounts in such as unit tests.
111
+ * @param anotherAccountManager Another account manager with signers registered
112
+ * @param overwriteExisting Whether or not to overwrite any signers that have the same sender address with the ones in the other account manager or not (default: true)
113
+ * @returns The `AccountManager` instance for method chaining
114
+ * @example
115
+ * ```typescript
116
+ * accountManager2.setSigners(accountManager1);
117
+ * ```
118
+ */
119
+ setSigners(anotherAccountManager: AccountManager, overwriteExisting?: boolean): this;
120
+ /**
121
+ * Returns the `TransactionSigner` for the given sender address, ready to sign a transaction for that sender.
122
+ *
123
+ * If no signer has been registered for that address then the default signer is used if registered and
124
+ * if not then an error is thrown.
125
+ *
126
+ * @param sender The sender address
127
+ * @example
128
+ * ```typescript
129
+ * const signer = accountManager.getSigner("SENDERADDRESS")
130
+ * ```
131
+ * @returns The `TransactionSigner` or throws an error if not found and no default signer is set
132
+ */
133
+ getSigner(sender: string | Address): algosdk.TransactionSigner;
134
+ /**
135
+ * Returns the `TransactionSignerAccount` for the given sender address.
136
+ *
137
+ * If no signer has been registered for that address then an error is thrown.
138
+ * @param sender The sender address
139
+ * @example
140
+ * ```typescript
141
+ * const sender = accountManager.random()
142
+ * // ...
143
+ * // Returns the `TransactionSignerAccount` for `sender` that has previously been registered
144
+ * const account = accountManager.getAccount(sender)
145
+ * ```
146
+ * @returns The `TransactionSignerAccount` or throws an error if not found
147
+ */
148
+ getAccount(sender: string | Address): TransactionSignerAccount;
149
+ /**
150
+ * Returns the given sender account's current status, balance and spendable amounts.
151
+ *
152
+ * [Response data schema details](https://dev.algorand.co/reference/rest-api/algod/operations/accountinformation/)
153
+ * @example
154
+ * ```typescript
155
+ * const address = "XBYLS2E6YI6XXL5BWCAMOA4GTWHXWENZMX5UHXMRNWWUQ7BXCY5WC5TEPA";
156
+ * const accountInfo = await accountManager.getInformation(address);
157
+ * ```
158
+ *
159
+ * @param sender The account / address to look up
160
+ * @returns The account information
161
+ */
162
+ getInformation(sender: string | Address): Promise<AccountInformation>;
163
+ /**
164
+ * Tracks and returns an Algorand account with secret key loaded (i.e. that can sign transactions) by taking the mnemonic secret.
165
+ *
166
+ * @example
167
+ * ```typescript
168
+ * const account = accountManager.fromMnemonic("mnemonic secret ...")
169
+ * const rekeyedAccount = accountManager.fromMnemonic("mnemonic secret ...", "SENDERADDRESS...")
170
+ * ```
171
+ * @param mnemonicSecret The mnemonic secret representing the private key of an account; **Note: Be careful how the mnemonic is handled**,
172
+ * never commit it into source control and ideally load it from the environment (ideally via a secret storage service) rather than the file system.
173
+ * @param sender The optional sender address to use this signer for (aka a rekeyed account)
174
+ * @returns The account
175
+ */
176
+ fromMnemonic(mnemonicSecret: string, sender?: string | Address): algosdk.Address & TransactionSignerAccount & {
177
+ account: SigningAccount;
178
+ };
179
+ /**
180
+ * Tracks and returns an Algorand account that is a rekeyed version of the given account to a new sender.
181
+ *
182
+ * @example
183
+ * ```typescript
184
+ * const account = accountManager.fromMnemonic("mnemonic secret ...")
185
+ * const rekeyedAccount = accountManager.rekeyed(account, "SENDERADDRESS...")
186
+ * ```
187
+ * @param account The account to use as the signer for this new rekeyed account
188
+ * @param sender The sender address to use as the new sender
189
+ * @returns The account
190
+ */
191
+ rekeyed(sender: string | Address, account: TransactionSignerAccount): algosdk.Address & TransactionSignerAccount & {
192
+ account: {
193
+ addr: algosdk.Address;
194
+ signer: algosdk.TransactionSigner;
178
195
  };
179
- /**
180
- * Tracks and returns an Algorand account that is a rekeyed version of the given account to a new sender.
181
- *
182
- * @example
183
- * ```typescript
184
- * const account = accountManager.fromMnemonic("mnemonic secret ...")
185
- * const rekeyedAccount = accountManager.rekeyed(account, "SENDERADDRESS...")
186
- * ```
187
- * @param account The account to use as the signer for this new rekeyed account
188
- * @param sender The sender address to use as the new sender
189
- * @returns The account
190
- */
191
- rekeyed(sender: string | Address, account: TransactionSignerAccount): algosdk.Address & TransactionSignerAccount & {
192
- account: {
193
- addr: algosdk.Address;
194
- signer: algosdk.TransactionSigner;
195
- };
196
- };
197
- /**
198
- * Tracks and returns an Algorand account with private key loaded by convention from environment variables based on the given name identifier.
199
- *
200
- * Note: This function expects to run in a Node.js environment.
201
- *
202
- * ## Convention:
203
- * * **Non-LocalNet:** will load process.env['\{NAME\}_MNEMONIC'] as a mnemonic secret; **Note: Be careful how the mnemonic is handled**,
204
- * never commit it into source control and ideally load it via a secret storage service rather than the file system.
205
- * If process.env['\{NAME\}_SENDER'] is defined then it will use that for the sender address (i.e. to support rekeyed accounts)
206
- * * **LocalNet:** will load the account from a KMD wallet called \{NAME\} and if that wallet doesn't exist it will create it and fund the account for you
207
- *
208
- * This allows you to write code that will work seamlessly in production and local development (LocalNet) without manual config locally (including when you reset the LocalNet).
209
- *
210
- * @example Default
211
- *
212
- * If you have a mnemonic secret loaded into `process.env.MY_ACCOUNT_MNEMONIC` then you can call the following to get that private key loaded into an account object:
213
- * ```typescript
214
- * const account = await accountManager.fromEnvironment('MY_ACCOUNT')
215
- * ```
216
- *
217
- * If that code runs against LocalNet then a wallet called `MY_ACCOUNT` will automatically be created with an account that is automatically funded with 1000 (default) ALGO from the default LocalNet dispenser.
218
- * If not running against LocalNet then it will use proces.env.MY_ACCOUNT_MNEMONIC as the private key and (if present) process.env.MY_ACCOUNT_SENDER as the sender address.
219
- *
220
- * @param name The name identifier of the account
221
- * @param fundWith The optional amount to fund the account with when it gets created (when targeting LocalNet), if not specified then 1000 ALGO will be funded from the dispenser account
222
- * @returns The account
223
- */
224
- fromEnvironment(name: string, fundWith?: AlgoAmount): Promise<algosdk.Address & TransactionSignerAccount & {
225
- account: SigningAccount;
226
- }>;
227
- /**
228
- * Tracks and returns an Algorand account with private key loaded from the given KMD wallet (identified by name).
229
- *
230
- * @param name The name of the wallet to retrieve an account from
231
- * @param predicate An optional filter to use to find the account (otherwise it will return a random account from the wallet)
232
- * @param sender The optional sender address to use this signer for (aka a rekeyed account)
233
- * @example Get default funded account in a LocalNet
234
- *
235
- * ```typescript
236
- * const defaultDispenserAccount = await accountManager.fromKmd('unencrypted-default-wallet',
237
- * a => a.status !== 'Offline' && a.amount > 1_000_000_000
238
- * )
239
- * ```
240
- * @returns The account
241
- */
242
- fromKmd(name: string, predicate?: (account: Record<string, any>) => boolean, sender?: string | Address): Promise<algosdk.Address & TransactionSignerAccount & {
243
- account: SigningAccount;
244
- }>;
245
- /**
246
- * Tracks and returns an account that supports partial or full multisig signing.
247
- *
248
- * @example
249
- * ```typescript
250
- * const account = accountManager.multisig({version: 1, threshold: 1, addrs: ["ADDRESS1...", "ADDRESS2..."]},
251
- * [(await accountManager.fromEnvironment('ACCOUNT1')).account])
252
- * ```
253
- * @param multisigParams The parameters that define the multisig account
254
- * @param signingAccounts The signers that are currently present
255
- * @returns A multisig account wrapper
256
- */
257
- multisig(multisigParams: algosdk.MultisigMetadata, signingAccounts: (algosdk.Account | SigningAccount)[]): algosdk.Address & TransactionSignerAccount & {
258
- account: MultisigAccount;
259
- };
260
- /**
261
- * Tracks and returns an account that represents a logic signature.
262
- *
263
- * @example
264
- * ```typescript
265
- * const account = accountManager.logicsig(program, [new Uint8Array(3, ...)])
266
- * ```
267
- * @param program The bytes that make up the compiled logic signature
268
- * @param args The (binary) arguments to pass into the logic signature
269
- * @returns A logic signature account wrapper
270
- */
271
- logicsig(program: Uint8Array, args?: Array<Uint8Array>): algosdk.Address & TransactionSignerAccount & {
272
- account: algosdk.LogicSigAccount;
273
- };
274
- /**
275
- * Tracks and returns a new, random Algorand account with secret key loaded.
276
- *
277
- * @example
278
- * ```typescript
279
- * const account = accountManager.random()
280
- * ```
281
- * @returns The account
282
- */
283
- random(): algosdk.Address & TransactionSignerAccount & {
284
- account: algosdk.Account;
285
- };
286
- /**
287
- * Returns an account (with private key loaded) that can act as a dispenser from
288
- * environment variables, or against default LocalNet if no environment variables present.
289
- *
290
- * Note: requires a Node.js environment to execute.
291
- *
292
- * If present, it will load the account mnemonic stored in process.env.DISPENSER_MNEMONIC and optionally
293
- * process.env.DISPENSER_SENDER if it's a rekeyed account.
294
- *
295
- * @example
296
- * ```typescript
297
- * const account = await accountManager.dispenserFromEnvironment()
298
- * ```
299
- *
300
- * @returns The account
301
- */
302
- dispenserFromEnvironment(): Promise<algosdk.Address & TransactionSignerAccount & {
303
- account: SigningAccount;
304
- }>;
305
- /**
306
- * Returns an Algorand account with private key loaded for the default LocalNet dispenser account (that can be used to fund other accounts).
307
- *
308
- * @example
309
- * ```typescript
310
- * const account = await accountManager.localNetDispenser()
311
- * ```
312
- * @returns The account
313
- */
314
- localNetDispenser(): Promise<algosdk.Address & TransactionSignerAccount & {
315
- account: SigningAccount;
316
- }>;
317
- /**
318
- * Rekey an account to a new address.
319
- *
320
- * **Note:** Please be careful with this function and be sure to read the [official rekey guidance](https://dev.algorand.co/concepts/accounts/rekeying).
321
- *
322
- * @param account The account to rekey
323
- * @param rekeyTo The account address or signing account of the account that will be used to authorise transactions for the rekeyed account going forward.
324
- * If a signing account is provided that will now be tracked as the signer for `account` in this `AccountManager`
325
- * @param options Any parameters to control the transaction or execution of the transaction
326
- *
327
- * @example Basic example (with string addresses)
328
- * ```typescript
329
- * await accountManager.rekeyAccount({account: "ACCOUNTADDRESS", rekeyTo: "NEWADDRESS"})
330
- * ```
331
- * @example Basic example (with signer accounts)
332
- * ```typescript
333
- * await accountManager.rekeyAccount({account: account1, rekeyTo: newSignerAccount})
334
- * ```
335
- * @example Advanced example
336
- * ```typescript
337
- * await accountManager.rekeyAccount({
338
- * account: "ACCOUNTADDRESS",
339
- * rekeyTo: "NEWADDRESS",
340
- * lease: 'lease',
341
- * note: 'note',
342
- * firstValidRound: 1000n,
343
- * validityWindow: 10,
344
- * extraFee: (1000).microAlgo(),
345
- * staticFee: (1000).microAlgo(),
346
- * // Max fee doesn't make sense with extraFee AND staticFee
347
- * // already specified, but here for completeness
348
- * maxFee: (3000).microAlgo(),
349
- * maxRoundsToWaitForConfirmation: 5,
350
- * suppressLog: true,
351
- * })
352
- * ```
353
- * @returns The result of the transaction and the transaction that was sent
354
- */
355
- rekeyAccount(account: string | Address, rekeyTo: string | Address | TransactionSignerAccount, options?: Omit<CommonTransactionParams, 'sender'> & SendParams): Promise<SendSingleTransactionResult>;
356
- private _getEnsureFundedAmount;
357
- /**
358
- * Funds a given account using a dispenser account as a funding source such that
359
- * the given account has a certain amount of Algo free to spend (accounting for
360
- * Algo locked in minimum balance requirement).
361
- *
362
- * https://dev.algorand.co/concepts/smart-contracts/costs-constraints#mbr
363
- *
364
- * @param accountToFund The account to fund
365
- * @param dispenserAccount The account to use as a dispenser funding source
366
- * @param minSpendingBalance The minimum balance of Algo that the account should have available to spend (i.e. on top of minimum balance requirement)
367
- * @param options Optional parameters to control the funding increment, transaction or execution of the transaction
368
- * @example Example using AlgorandClient
369
- * ```typescript
370
- * // Basic example
371
- * await accountManager.ensureFunded("ACCOUNTADDRESS", "DISPENSERADDRESS", algokit.algo(1))
372
- * // With configuration
373
- * await accountManager.ensureFunded("ACCOUNTADDRESS", "DISPENSERADDRESS", algokit.algo(1),
374
- * { minFundingIncrement: algokit.algo(2), fee: (1000).microAlgo(), suppressLog: true }
375
- * )
376
- * ```
377
- * @returns
378
- * - The result of executing the dispensing transaction and the `amountFunded` if funds were needed.
379
- * - `undefined` if no funds were needed.
380
- */
381
- ensureFunded(accountToFund: string | Address, dispenserAccount: string | Address, minSpendingBalance: AlgoAmount, options?: {
382
- minFundingIncrement?: AlgoAmount;
383
- } & SendParams & Omit<CommonTransactionParams, 'sender'>): Promise<(SendSingleTransactionResult & EnsureFundedResult) | undefined>;
384
- /**
385
- * Funds a given account using a dispenser account retrieved from the environment,
386
- * per the `dispenserFromEnvironment` method, as a funding source such that
387
- * the given account has a certain amount of Algo free to spend (accounting for
388
- * Algo locked in minimum balance requirement).
389
- *
390
- * **Note:** requires a Node.js environment to execute.
391
- *
392
- * The dispenser account is retrieved from the account mnemonic stored in
393
- * process.env.DISPENSER_MNEMONIC and optionally process.env.DISPENSER_SENDER
394
- * if it's a rekeyed account, or against default LocalNet if no environment variables present.
395
- *
396
- * https://dev.algorand.co/concepts/smart-contracts/costs-constraints#mbr
397
- *
398
- * @param accountToFund The account to fund
399
- * @param minSpendingBalance The minimum balance of Algo that the account should have available to spend (i.e. on top of minimum balance requirement)
400
- * @param options Optional parameters to control the funding increment, transaction or execution of the transaction
401
- * @example Example using AlgorandClient
402
- * ```typescript
403
- * // Basic example
404
- * await accountManager.ensureFundedFromEnvironment("ACCOUNTADDRESS", algokit.algo(1))
405
- * // With configuration
406
- * await accountManager.ensureFundedFromEnvironment("ACCOUNTADDRESS", algokit.algo(1),
407
- * { minFundingIncrement: algokit.algo(2), fee: (1000).microAlgo(), suppressLog: true }
408
- * )
409
- * ```
410
- * @returns
411
- * - The result of executing the dispensing transaction and the `amountFunded` if funds were needed.
412
- * - `undefined` if no funds were needed.
413
- */
414
- ensureFundedFromEnvironment(accountToFund: string | Address, minSpendingBalance: AlgoAmount, options?: {
415
- minFundingIncrement?: AlgoAmount;
416
- } & SendParams & Omit<CommonTransactionParams, 'sender'>): Promise<(SendSingleTransactionResult & EnsureFundedResult) | undefined>;
417
- /**
418
- * Funds a given account using the TestNet Dispenser API as a funding source such that
419
- * the account has a certain amount of Algo free to spend (accounting for Algo locked
420
- * in minimum balance requirement).
421
- *
422
- * https://dev.algorand.co/concepts/smart-contracts/costs-constraints#mbr
423
- *
424
- * @param accountToFund The account to fund
425
- * @param dispenserClient The TestNet dispenser funding client
426
- * @param minSpendingBalance The minimum balance of Algo that the account should have available to spend (i.e. on top of minimum balance requirement)
427
- * @param options Optional parameters to control the funding increment, transaction or execution of the transaction
428
- * @example Example using AlgorandClient
429
- * ```typescript
430
- * // Basic example
431
- * await accountManager.ensureFundedFromTestNetDispenserApi("ACCOUNTADDRESS", algorand.client.getTestNetDispenserFromEnvironment(), algokit.algo(1))
432
- * // With configuration
433
- * await accountManager.ensureFundedFromTestNetDispenserApi("ACCOUNTADDRESS", algorand.client.getTestNetDispenserFromEnvironment(), algokit.algo(1),
434
- * { minFundingIncrement: algokit.algo(2) }
435
- * )
436
- * ```
437
- * @returns
438
- * - The result of executing the dispensing transaction and the `amountFunded` if funds were needed.
439
- * - `undefined` if no funds were needed.
440
- */
441
- ensureFundedFromTestNetDispenserApi(accountToFund: string | Address, dispenserClient: TestNetDispenserApiClient, minSpendingBalance: AlgoAmount, options?: {
442
- minFundingIncrement?: AlgoAmount;
443
- }): Promise<EnsureFundedResult | undefined>;
196
+ };
197
+ /**
198
+ * Tracks and returns an Algorand account with private key loaded by convention from environment variables based on the given name identifier.
199
+ *
200
+ * Note: This function expects to run in a Node.js environment.
201
+ *
202
+ * ## Convention:
203
+ * * **Non-LocalNet:** will load process.env['\{NAME\}_MNEMONIC'] as a mnemonic secret; **Note: Be careful how the mnemonic is handled**,
204
+ * never commit it into source control and ideally load it via a secret storage service rather than the file system.
205
+ * If process.env['\{NAME\}_SENDER'] is defined then it will use that for the sender address (i.e. to support rekeyed accounts)
206
+ * * **LocalNet:** will load the account from a KMD wallet called \{NAME\} and if that wallet doesn't exist it will create it and fund the account for you
207
+ *
208
+ * This allows you to write code that will work seamlessly in production and local development (LocalNet) without manual config locally (including when you reset the LocalNet).
209
+ *
210
+ * @example Default
211
+ *
212
+ * If you have a mnemonic secret loaded into `process.env.MY_ACCOUNT_MNEMONIC` then you can call the following to get that private key loaded into an account object:
213
+ * ```typescript
214
+ * const account = await accountManager.fromEnvironment('MY_ACCOUNT')
215
+ * ```
216
+ *
217
+ * If that code runs against LocalNet then a wallet called `MY_ACCOUNT` will automatically be created with an account that is automatically funded with 1000 (default) ALGO from the default LocalNet dispenser.
218
+ * If not running against LocalNet then it will use proces.env.MY_ACCOUNT_MNEMONIC as the private key and (if present) process.env.MY_ACCOUNT_SENDER as the sender address.
219
+ *
220
+ * @param name The name identifier of the account
221
+ * @param fundWith The optional amount to fund the account with when it gets created (when targeting LocalNet), if not specified then 1000 ALGO will be funded from the dispenser account
222
+ * @returns The account
223
+ */
224
+ fromEnvironment(name: string, fundWith?: AlgoAmount): Promise<algosdk.Address & TransactionSignerAccount & {
225
+ account: SigningAccount;
226
+ }>;
227
+ /**
228
+ * Tracks and returns an Algorand account with private key loaded from the given KMD wallet (identified by name).
229
+ *
230
+ * @param name The name of the wallet to retrieve an account from
231
+ * @param predicate An optional filter to use to find the account (otherwise it will return a random account from the wallet)
232
+ * @param sender The optional sender address to use this signer for (aka a rekeyed account)
233
+ * @example Get default funded account in a LocalNet
234
+ *
235
+ * ```typescript
236
+ * const defaultDispenserAccount = await accountManager.fromKmd('unencrypted-default-wallet',
237
+ * a => a.status !== 'Offline' && a.amount > 1_000_000_000
238
+ * )
239
+ * ```
240
+ * @returns The account
241
+ */
242
+ fromKmd(name: string, predicate?: (account: Record<string, any>) => boolean, sender?: string | Address): Promise<algosdk.Address & TransactionSignerAccount & {
243
+ account: SigningAccount;
244
+ }>;
245
+ /**
246
+ * Tracks and returns an account that supports partial or full multisig signing.
247
+ *
248
+ * @example
249
+ * ```typescript
250
+ * const account = accountManager.multisig({version: 1, threshold: 1, addrs: ["ADDRESS1...", "ADDRESS2..."]},
251
+ * [(await accountManager.fromEnvironment('ACCOUNT1')).account])
252
+ * ```
253
+ * @param multisigParams The parameters that define the multisig account
254
+ * @param signingAccounts The signers that are currently present
255
+ * @returns A multisig account wrapper
256
+ */
257
+ multisig(multisigParams: algosdk.MultisigMetadata, signingAccounts: (algosdk.Account | SigningAccount)[]): algosdk.Address & TransactionSignerAccount & {
258
+ account: MultisigAccount;
259
+ };
260
+ /**
261
+ * Tracks and returns an account that represents a logic signature.
262
+ *
263
+ * @example
264
+ * ```typescript
265
+ * const account = accountManager.logicsig(program, [new Uint8Array(3, ...)])
266
+ * ```
267
+ * @param program The bytes that make up the compiled logic signature
268
+ * @param args The (binary) arguments to pass into the logic signature
269
+ * @returns A logic signature account wrapper
270
+ */
271
+ logicsig(program: Uint8Array, args?: Array<Uint8Array>): algosdk.Address & TransactionSignerAccount & {
272
+ account: algosdk.LogicSigAccount;
273
+ };
274
+ /**
275
+ * Tracks and returns a new, random Algorand account with secret key loaded.
276
+ *
277
+ * @example
278
+ * ```typescript
279
+ * const account = accountManager.random()
280
+ * ```
281
+ * @returns The account
282
+ */
283
+ random(): algosdk.Address & TransactionSignerAccount & {
284
+ account: algosdk.Account;
285
+ };
286
+ /**
287
+ * Returns an account (with private key loaded) that can act as a dispenser from
288
+ * environment variables, or against default LocalNet if no environment variables present.
289
+ *
290
+ * Note: requires a Node.js environment to execute.
291
+ *
292
+ * If present, it will load the account mnemonic stored in process.env.DISPENSER_MNEMONIC and optionally
293
+ * process.env.DISPENSER_SENDER if it's a rekeyed account.
294
+ *
295
+ * @example
296
+ * ```typescript
297
+ * const account = await accountManager.dispenserFromEnvironment()
298
+ * ```
299
+ *
300
+ * @returns The account
301
+ */
302
+ dispenserFromEnvironment(): Promise<algosdk.Address & TransactionSignerAccount & {
303
+ account: SigningAccount;
304
+ }>;
305
+ /**
306
+ * Returns an Algorand account with private key loaded for the default LocalNet dispenser account (that can be used to fund other accounts).
307
+ *
308
+ * @example
309
+ * ```typescript
310
+ * const account = await accountManager.localNetDispenser()
311
+ * ```
312
+ * @returns The account
313
+ */
314
+ localNetDispenser(): Promise<algosdk.Address & TransactionSignerAccount & {
315
+ account: SigningAccount;
316
+ }>;
317
+ /**
318
+ * Rekey an account to a new address.
319
+ *
320
+ * **Note:** Please be careful with this function and be sure to read the [official rekey guidance](https://dev.algorand.co/concepts/accounts/rekeying).
321
+ *
322
+ * @param account The account to rekey
323
+ * @param rekeyTo The account address or signing account of the account that will be used to authorise transactions for the rekeyed account going forward.
324
+ * If a signing account is provided that will now be tracked as the signer for `account` in this `AccountManager`
325
+ * @param options Any parameters to control the transaction or execution of the transaction
326
+ *
327
+ * @example Basic example (with string addresses)
328
+ * ```typescript
329
+ * await accountManager.rekeyAccount({account: "ACCOUNTADDRESS", rekeyTo: "NEWADDRESS"})
330
+ * ```
331
+ * @example Basic example (with signer accounts)
332
+ * ```typescript
333
+ * await accountManager.rekeyAccount({account: account1, rekeyTo: newSignerAccount})
334
+ * ```
335
+ * @example Advanced example
336
+ * ```typescript
337
+ * await accountManager.rekeyAccount({
338
+ * account: "ACCOUNTADDRESS",
339
+ * rekeyTo: "NEWADDRESS",
340
+ * lease: 'lease',
341
+ * note: 'note',
342
+ * firstValidRound: 1000n,
343
+ * validityWindow: 10,
344
+ * extraFee: (1000).microAlgo(),
345
+ * staticFee: (1000).microAlgo(),
346
+ * // Max fee doesn't make sense with extraFee AND staticFee
347
+ * // already specified, but here for completeness
348
+ * maxFee: (3000).microAlgo(),
349
+ * maxRoundsToWaitForConfirmation: 5,
350
+ * suppressLog: true,
351
+ * })
352
+ * ```
353
+ * @returns The result of the transaction and the transaction that was sent
354
+ */
355
+ rekeyAccount(account: string | Address, rekeyTo: string | Address | TransactionSignerAccount, options?: Omit<CommonTransactionParams, 'sender'> & SendParams): Promise<SendSingleTransactionResult>;
356
+ private _getEnsureFundedAmount;
357
+ /**
358
+ * Funds a given account using a dispenser account as a funding source such that
359
+ * the given account has a certain amount of Algo free to spend (accounting for
360
+ * Algo locked in minimum balance requirement).
361
+ *
362
+ * https://dev.algorand.co/concepts/smart-contracts/costs-constraints#mbr
363
+ *
364
+ * @param accountToFund The account to fund
365
+ * @param dispenserAccount The account to use as a dispenser funding source
366
+ * @param minSpendingBalance The minimum balance of Algo that the account should have available to spend (i.e. on top of minimum balance requirement)
367
+ * @param options Optional parameters to control the funding increment, transaction or execution of the transaction
368
+ * @example Example using AlgorandClient
369
+ * ```typescript
370
+ * // Basic example
371
+ * await accountManager.ensureFunded("ACCOUNTADDRESS", "DISPENSERADDRESS", algokit.algo(1))
372
+ * // With configuration
373
+ * await accountManager.ensureFunded("ACCOUNTADDRESS", "DISPENSERADDRESS", algokit.algo(1),
374
+ * { minFundingIncrement: algokit.algo(2), fee: (1000).microAlgo(), suppressLog: true }
375
+ * )
376
+ * ```
377
+ * @returns
378
+ * - The result of executing the dispensing transaction and the `amountFunded` if funds were needed.
379
+ * - `undefined` if no funds were needed.
380
+ */
381
+ ensureFunded(accountToFund: string | Address, dispenserAccount: string | Address, minSpendingBalance: AlgoAmount, options?: {
382
+ minFundingIncrement?: AlgoAmount;
383
+ } & SendParams & Omit<CommonTransactionParams, 'sender'>): Promise<(SendSingleTransactionResult & EnsureFundedResult) | undefined>;
384
+ /**
385
+ * Funds a given account using a dispenser account retrieved from the environment,
386
+ * per the `dispenserFromEnvironment` method, as a funding source such that
387
+ * the given account has a certain amount of Algo free to spend (accounting for
388
+ * Algo locked in minimum balance requirement).
389
+ *
390
+ * **Note:** requires a Node.js environment to execute.
391
+ *
392
+ * The dispenser account is retrieved from the account mnemonic stored in
393
+ * process.env.DISPENSER_MNEMONIC and optionally process.env.DISPENSER_SENDER
394
+ * if it's a rekeyed account, or against default LocalNet if no environment variables present.
395
+ *
396
+ * https://dev.algorand.co/concepts/smart-contracts/costs-constraints#mbr
397
+ *
398
+ * @param accountToFund The account to fund
399
+ * @param minSpendingBalance The minimum balance of Algo that the account should have available to spend (i.e. on top of minimum balance requirement)
400
+ * @param options Optional parameters to control the funding increment, transaction or execution of the transaction
401
+ * @example Example using AlgorandClient
402
+ * ```typescript
403
+ * // Basic example
404
+ * await accountManager.ensureFundedFromEnvironment("ACCOUNTADDRESS", algokit.algo(1))
405
+ * // With configuration
406
+ * await accountManager.ensureFundedFromEnvironment("ACCOUNTADDRESS", algokit.algo(1),
407
+ * { minFundingIncrement: algokit.algo(2), fee: (1000).microAlgo(), suppressLog: true }
408
+ * )
409
+ * ```
410
+ * @returns
411
+ * - The result of executing the dispensing transaction and the `amountFunded` if funds were needed.
412
+ * - `undefined` if no funds were needed.
413
+ */
414
+ ensureFundedFromEnvironment(accountToFund: string | Address, minSpendingBalance: AlgoAmount, options?: {
415
+ minFundingIncrement?: AlgoAmount;
416
+ } & SendParams & Omit<CommonTransactionParams, 'sender'>): Promise<(SendSingleTransactionResult & EnsureFundedResult) | undefined>;
417
+ /**
418
+ * Funds a given account using the TestNet Dispenser API as a funding source such that
419
+ * the account has a certain amount of Algo free to spend (accounting for Algo locked
420
+ * in minimum balance requirement).
421
+ *
422
+ * https://dev.algorand.co/concepts/smart-contracts/costs-constraints#mbr
423
+ *
424
+ * @param accountToFund The account to fund
425
+ * @param dispenserClient The TestNet dispenser funding client
426
+ * @param minSpendingBalance The minimum balance of Algo that the account should have available to spend (i.e. on top of minimum balance requirement)
427
+ * @param options Optional parameters to control the funding increment, transaction or execution of the transaction
428
+ * @example Example using AlgorandClient
429
+ * ```typescript
430
+ * // Basic example
431
+ * await accountManager.ensureFundedFromTestNetDispenserApi("ACCOUNTADDRESS", algorand.client.getTestNetDispenserFromEnvironment(), algokit.algo(1))
432
+ * // With configuration
433
+ * await accountManager.ensureFundedFromTestNetDispenserApi("ACCOUNTADDRESS", algorand.client.getTestNetDispenserFromEnvironment(), algokit.algo(1),
434
+ * { minFundingIncrement: algokit.algo(2) }
435
+ * )
436
+ * ```
437
+ * @returns
438
+ * - The result of executing the dispensing transaction and the `amountFunded` if funds were needed.
439
+ * - `undefined` if no funds were needed.
440
+ */
441
+ ensureFundedFromTestNetDispenserApi(accountToFund: string | Address, dispenserClient: TestNetDispenserApiClient, minSpendingBalance: AlgoAmount, options?: {
442
+ minFundingIncrement?: AlgoAmount;
443
+ }): Promise<EnsureFundedResult | undefined>;
444
444
  }
445
+ //#endregion
446
+ export { AccountManager, EnsureFundedResult, getAccountTransactionSigner };
447
+ //# sourceMappingURL=account-manager.d.ts.map