@algorandfoundation/algokit-utils 10.0.0-alpha.7 → 10.0.0-alpha.9

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 (233) hide show
  1. package/_virtual/rolldown_runtime.js +20 -11
  2. package/_virtual/rolldown_runtime.mjs +10 -5
  3. package/algod-client/index.d.ts +2 -2
  4. package/package.json +1 -1
  5. package/packages/abi/src/abi-type.d.ts +1 -1
  6. package/packages/abi/src/abi-type.js +2 -1
  7. package/packages/abi/src/abi-type.js.map +1 -1
  8. package/packages/abi/src/abi-type.mjs +2 -1
  9. package/packages/abi/src/abi-type.mjs.map +1 -1
  10. package/packages/abi/src/arc56-contract.js +1 -0
  11. package/packages/abi/src/arc56-contract.js.map +1 -1
  12. package/packages/abi/src/arc56-contract.mjs +1 -0
  13. package/packages/abi/src/arc56-contract.mjs.map +1 -1
  14. package/packages/algod_client/src/apis/api-service.d.ts +44 -44
  15. package/packages/algod_client/src/apis/api-service.js +153 -153
  16. package/packages/algod_client/src/apis/api-service.js.map +1 -1
  17. package/packages/algod_client/src/apis/api-service.mjs +153 -153
  18. package/packages/algod_client/src/apis/api-service.mjs.map +1 -1
  19. package/packages/algod_client/src/core/api-error.js +3 -1
  20. package/packages/algod_client/src/core/api-error.js.map +1 -1
  21. package/packages/algod_client/src/core/api-error.mjs +3 -1
  22. package/packages/algod_client/src/core/api-error.mjs.map +1 -1
  23. package/packages/algod_client/src/core/model-runtime.js +4 -4
  24. package/packages/algod_client/src/core/model-runtime.js.map +1 -1
  25. package/packages/algod_client/src/core/model-runtime.mjs +6 -6
  26. package/packages/algod_client/src/core/model-runtime.mjs.map +1 -1
  27. package/packages/algod_client/src/models/account-participation.js +4 -4
  28. package/packages/algod_client/src/models/account-participation.js.map +1 -1
  29. package/packages/algod_client/src/models/account-participation.mjs +4 -4
  30. package/packages/algod_client/src/models/account-participation.mjs.map +1 -1
  31. package/packages/algod_client/src/models/asset-params.js +2 -1
  32. package/packages/algod_client/src/models/asset-params.js.map +1 -1
  33. package/packages/algod_client/src/models/asset-params.mjs +2 -1
  34. package/packages/algod_client/src/models/asset-params.mjs.map +1 -1
  35. package/packages/algod_client/src/models/block-response.js +1 -2
  36. package/packages/algod_client/src/models/block-response.js.map +1 -1
  37. package/packages/algod_client/src/models/block-response.mjs +2 -3
  38. package/packages/algod_client/src/models/block-response.mjs.map +1 -1
  39. package/packages/algod_client/src/models/block.d.ts +47 -27
  40. package/packages/algod_client/src/models/block.js +173 -97
  41. package/packages/algod_client/src/models/block.js.map +1 -1
  42. package/packages/algod_client/src/models/block.mjs +173 -97
  43. package/packages/algod_client/src/models/block.mjs.map +1 -1
  44. package/packages/algod_client/src/models/ledger-state-delta.js +1 -1
  45. package/packages/algod_client/src/models/ledger-state-delta.js.map +1 -1
  46. package/packages/algod_client/src/models/ledger-state-delta.mjs +2 -2
  47. package/packages/algod_client/src/models/ledger-state-delta.mjs.map +1 -1
  48. package/packages/algod_client/src/models/transaction-parameters-response.js +2 -2
  49. package/packages/algod_client/src/models/transaction-parameters-response.js.map +1 -1
  50. package/packages/algod_client/src/models/transaction-parameters-response.mjs +2 -2
  51. package/packages/algod_client/src/models/transaction-parameters-response.mjs.map +1 -1
  52. package/packages/common/src/codecs/composite/map.js +7 -4
  53. package/packages/common/src/codecs/composite/map.js.map +1 -1
  54. package/packages/common/src/codecs/composite/map.mjs +7 -4
  55. package/packages/common/src/codecs/composite/map.mjs.map +1 -1
  56. package/packages/common/src/codecs/composite/record.js +0 -1
  57. package/packages/common/src/codecs/composite/record.js.map +1 -1
  58. package/packages/common/src/codecs/primitives/address.js +0 -1
  59. package/packages/common/src/codecs/primitives/address.js.map +1 -1
  60. package/packages/common/src/codecs/primitives/bytes.js +0 -1
  61. package/packages/common/src/codecs/primitives/bytes.js.map +1 -1
  62. package/packages/common/src/codecs/primitives/fixed-bytes.js +0 -1
  63. package/packages/common/src/codecs/primitives/fixed-bytes.js.map +1 -1
  64. package/packages/common/src/codecs/wire.js +0 -1
  65. package/packages/common/src/codecs/wire.js.map +1 -1
  66. package/packages/common/src/msgpack.js +0 -1
  67. package/packages/common/src/msgpack.js.map +1 -1
  68. package/packages/indexer_client/src/apis/api-service.d.ts +1 -1
  69. package/packages/indexer_client/src/apis/api-service.js +12 -12
  70. package/packages/indexer_client/src/apis/api-service.js.map +1 -1
  71. package/packages/indexer_client/src/apis/api-service.mjs +12 -12
  72. package/packages/indexer_client/src/apis/api-service.mjs.map +1 -1
  73. package/packages/indexer_client/src/core/api-error.js +3 -1
  74. package/packages/indexer_client/src/core/api-error.js.map +1 -1
  75. package/packages/indexer_client/src/core/api-error.mjs +3 -1
  76. package/packages/indexer_client/src/core/api-error.mjs.map +1 -1
  77. package/packages/indexer_client/src/core/model-runtime.js +4 -4
  78. package/packages/indexer_client/src/core/model-runtime.js.map +1 -1
  79. package/packages/indexer_client/src/core/model-runtime.mjs +6 -6
  80. package/packages/indexer_client/src/core/model-runtime.mjs.map +1 -1
  81. package/packages/indexer_client/src/models/account-participation.js +4 -4
  82. package/packages/indexer_client/src/models/account-participation.js.map +1 -1
  83. package/packages/indexer_client/src/models/account-participation.mjs +4 -4
  84. package/packages/indexer_client/src/models/account-participation.mjs.map +1 -1
  85. package/packages/indexer_client/src/models/asset-params.js +2 -1
  86. package/packages/indexer_client/src/models/asset-params.js.map +1 -1
  87. package/packages/indexer_client/src/models/asset-params.mjs +2 -1
  88. package/packages/indexer_client/src/models/asset-params.mjs.map +1 -1
  89. package/packages/indexer_client/src/models/block.js +8 -8
  90. package/packages/indexer_client/src/models/block.js.map +1 -1
  91. package/packages/indexer_client/src/models/block.mjs +8 -8
  92. package/packages/indexer_client/src/models/block.mjs.map +1 -1
  93. package/packages/indexer_client/src/models/eval-delta-key-value.d.ts +1 -1
  94. package/packages/indexer_client/src/models/eval-delta-key-value.js +2 -2
  95. package/packages/indexer_client/src/models/eval-delta-key-value.js.map +1 -1
  96. package/packages/indexer_client/src/models/eval-delta-key-value.mjs +2 -2
  97. package/packages/indexer_client/src/models/eval-delta-key-value.mjs.map +1 -1
  98. package/packages/indexer_client/src/models/eval-delta.d.ts +1 -1
  99. package/packages/indexer_client/src/models/eval-delta.js +2 -2
  100. package/packages/indexer_client/src/models/eval-delta.js.map +1 -1
  101. package/packages/indexer_client/src/models/eval-delta.mjs +2 -2
  102. package/packages/indexer_client/src/models/eval-delta.mjs.map +1 -1
  103. package/packages/indexer_client/src/models/hb-proof-fields.js +6 -6
  104. package/packages/indexer_client/src/models/hb-proof-fields.js.map +1 -1
  105. package/packages/indexer_client/src/models/hb-proof-fields.mjs +6 -6
  106. package/packages/indexer_client/src/models/hb-proof-fields.mjs.map +1 -1
  107. package/packages/indexer_client/src/models/state-proof-verifier.js +2 -2
  108. package/packages/indexer_client/src/models/state-proof-verifier.js.map +1 -1
  109. package/packages/indexer_client/src/models/state-proof-verifier.mjs +2 -2
  110. package/packages/indexer_client/src/models/state-proof-verifier.mjs.map +1 -1
  111. package/packages/indexer_client/src/models/teal-key-value.d.ts +1 -1
  112. package/packages/indexer_client/src/models/teal-key-value.js +2 -2
  113. package/packages/indexer_client/src/models/teal-key-value.js.map +1 -1
  114. package/packages/indexer_client/src/models/teal-key-value.mjs +2 -2
  115. package/packages/indexer_client/src/models/teal-key-value.mjs.map +1 -1
  116. package/packages/indexer_client/src/models/transaction-heartbeat.js +2 -1
  117. package/packages/indexer_client/src/models/transaction-heartbeat.js.map +1 -1
  118. package/packages/indexer_client/src/models/transaction-heartbeat.mjs +2 -1
  119. package/packages/indexer_client/src/models/transaction-heartbeat.mjs.map +1 -1
  120. package/packages/indexer_client/src/models/transaction-keyreg.js +4 -4
  121. package/packages/indexer_client/src/models/transaction-keyreg.js.map +1 -1
  122. package/packages/indexer_client/src/models/transaction-keyreg.mjs +4 -4
  123. package/packages/indexer_client/src/models/transaction-keyreg.mjs.map +1 -1
  124. package/packages/indexer_client/src/models/transaction-signature-logicsig.js +2 -1
  125. package/packages/indexer_client/src/models/transaction-signature-logicsig.js.map +1 -1
  126. package/packages/indexer_client/src/models/transaction-signature-logicsig.mjs +2 -1
  127. package/packages/indexer_client/src/models/transaction-signature-logicsig.mjs.map +1 -1
  128. package/packages/indexer_client/src/models/transaction-signature-multisig-subsignature.js +3 -3
  129. package/packages/indexer_client/src/models/transaction-signature-multisig-subsignature.js.map +1 -1
  130. package/packages/indexer_client/src/models/transaction-signature-multisig-subsignature.mjs +3 -3
  131. package/packages/indexer_client/src/models/transaction-signature-multisig-subsignature.mjs.map +1 -1
  132. package/packages/indexer_client/src/models/transaction.js +4 -3
  133. package/packages/indexer_client/src/models/transaction.js.map +1 -1
  134. package/packages/indexer_client/src/models/transaction.mjs +4 -3
  135. package/packages/indexer_client/src/models/transaction.mjs.map +1 -1
  136. package/packages/kmd_client/src/apis/api-service.d.ts +5 -5
  137. package/packages/kmd_client/src/apis/api-service.js +32 -32
  138. package/packages/kmd_client/src/apis/api-service.js.map +1 -1
  139. package/packages/kmd_client/src/apis/api-service.mjs +32 -32
  140. package/packages/kmd_client/src/apis/api-service.mjs.map +1 -1
  141. package/packages/kmd_client/src/core/api-error.js +3 -1
  142. package/packages/kmd_client/src/core/api-error.js.map +1 -1
  143. package/packages/kmd_client/src/core/api-error.mjs +3 -1
  144. package/packages/kmd_client/src/core/api-error.mjs.map +1 -1
  145. package/packages/kmd_client/src/core/model-runtime.js +4 -4
  146. package/packages/kmd_client/src/core/model-runtime.js.map +1 -1
  147. package/packages/kmd_client/src/core/model-runtime.mjs +6 -6
  148. package/packages/kmd_client/src/core/model-runtime.mjs.map +1 -1
  149. package/packages/sdk/src/encoding/encoding.js +12 -2
  150. package/packages/sdk/src/encoding/encoding.js.map +1 -1
  151. package/packages/sdk/src/encoding/encoding.mjs +12 -1
  152. package/packages/sdk/src/encoding/encoding.mjs.map +1 -1
  153. package/packages/sdk/src/encoding/schema/map.js +0 -2
  154. package/packages/sdk/src/encoding/schema/map.js.map +1 -1
  155. package/packages/transact/src/logicsig.js +3 -3
  156. package/packages/transact/src/logicsig.js.map +1 -1
  157. package/packages/transact/src/logicsig.mjs +3 -3
  158. package/packages/transact/src/logicsig.mjs.map +1 -1
  159. package/packages/transact/src/multisig.js +24 -24
  160. package/packages/transact/src/multisig.js.map +1 -1
  161. package/packages/transact/src/multisig.mjs +24 -24
  162. package/packages/transact/src/multisig.mjs.map +1 -1
  163. package/packages/transact/src/transactions/app-call.d.ts +2 -2
  164. package/packages/transact/src/transactions/app-call.js.map +1 -1
  165. package/packages/transact/src/transactions/app-call.mjs.map +1 -1
  166. package/packages/transact/src/transactions/signed-transaction-meta.js +2 -2
  167. package/packages/transact/src/transactions/signed-transaction-meta.js.map +1 -1
  168. package/packages/transact/src/transactions/signed-transaction-meta.mjs +2 -2
  169. package/packages/transact/src/transactions/signed-transaction-meta.mjs.map +1 -1
  170. package/packages/transact/src/transactions/signed-transaction.d.ts +2 -2
  171. package/packages/transact/src/transactions/signed-transaction.js.map +1 -1
  172. package/packages/transact/src/transactions/signed-transaction.mjs.map +1 -1
  173. package/packages/transact/src/transactions/transaction-meta.js +7 -1
  174. package/packages/transact/src/transactions/transaction-meta.js.map +1 -1
  175. package/packages/transact/src/transactions/transaction-meta.mjs +7 -1
  176. package/packages/transact/src/transactions/transaction-meta.mjs.map +1 -1
  177. package/packages/transact/src/transactions/transaction.js +1 -0
  178. package/packages/transact/src/transactions/transaction.js.map +1 -1
  179. package/packages/transact/src/transactions/transaction.mjs +1 -0
  180. package/packages/transact/src/transactions/transaction.mjs.map +1 -1
  181. package/sdk/index.js +1 -1
  182. package/testing/fixtures/algorand-fixture.d.ts +3 -3
  183. package/testing/fixtures/algorand-fixture.js.map +1 -1
  184. package/testing/fixtures/algorand-fixture.mjs.map +1 -1
  185. package/transaction/transaction.js +2 -2
  186. package/transaction/transaction.js.map +1 -1
  187. package/transaction/transaction.mjs +2 -2
  188. package/transaction/transaction.mjs.map +1 -1
  189. package/transactions/app-call.d.ts +2 -1
  190. package/transactions/app-call.js.map +1 -1
  191. package/transactions/app-call.mjs.map +1 -1
  192. package/types/account-manager.js +1 -1
  193. package/types/account-manager.js.map +1 -1
  194. package/types/account-manager.mjs +1 -1
  195. package/types/account-manager.mjs.map +1 -1
  196. package/types/algorand-client-transaction-creator.d.ts +80 -66
  197. package/types/algorand-client-transaction-creator.js +8 -0
  198. package/types/algorand-client-transaction-creator.js.map +1 -1
  199. package/types/algorand-client-transaction-creator.mjs +8 -0
  200. package/types/algorand-client-transaction-creator.mjs.map +1 -1
  201. package/types/algorand-client-transaction-sender.d.ts +80 -66
  202. package/types/algorand-client-transaction-sender.js +8 -1
  203. package/types/algorand-client-transaction-sender.js.map +1 -1
  204. package/types/algorand-client-transaction-sender.mjs +8 -0
  205. package/types/algorand-client-transaction-sender.mjs.map +1 -1
  206. package/types/app-client.d.ts +83 -78
  207. package/types/app-client.js +0 -1
  208. package/types/app-client.js.map +1 -1
  209. package/types/app-deployer.js +1 -1
  210. package/types/app-deployer.js.map +1 -1
  211. package/types/app-deployer.mjs +1 -1
  212. package/types/app-deployer.mjs.map +1 -1
  213. package/types/app-factory.d.ts +42 -39
  214. package/types/app-manager.d.ts +2 -0
  215. package/types/app-manager.js +5 -4
  216. package/types/app-manager.js.map +1 -1
  217. package/types/app-manager.mjs +5 -4
  218. package/types/app-manager.mjs.map +1 -1
  219. package/types/asset-manager.js +1 -1
  220. package/types/asset-manager.js.map +1 -1
  221. package/types/asset-manager.mjs +1 -1
  222. package/types/asset-manager.mjs.map +1 -1
  223. package/types/composer.d.ts +8 -0
  224. package/types/composer.js +11 -4
  225. package/types/composer.js.map +1 -1
  226. package/types/composer.mjs +11 -3
  227. package/types/composer.mjs.map +1 -1
  228. package/types/kmd-account-manager.d.ts +1 -0
  229. package/types/kmd-account-manager.js +21 -10
  230. package/types/kmd-account-manager.js.map +1 -1
  231. package/types/kmd-account-manager.mjs +22 -11
  232. package/types/kmd-account-manager.mjs.map +1 -1
  233. package/types/testing.d.ts +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"account-manager.mjs","names":["acc: AddressWithTransactionSigner"],"sources":["../../src/types/account-manager.ts"],"sourcesContent":["import { seedFromMnemonic } from '@algorandfoundation/algokit-algo25'\nimport { SuggestedParams } from '@algorandfoundation/algokit-algod-client'\nimport { Address, ReadableAddress, getAddress, getOptionalAddress } from '@algorandfoundation/algokit-common'\nimport {\n AddressWithSigners,\n AddressWithTransactionSigner,\n LogicSigAccount,\n MultisigAccount,\n MultisigMetadata,\n TransactionSigner,\n generateAddressWithSigners,\n} from '@algorandfoundation/algokit-transact'\nimport nacl from 'tweetnacl'\nimport { Config } from '../config'\nimport { calculateFundAmount, memoize } from '../util'\nimport { AccountInformation, DISPENSER_ACCOUNT } from './account'\nimport { AlgoAmount } from './amount'\nimport { ClientManager } from './client-manager'\nimport { CommonTransactionParams, TransactionComposer } from './composer'\nimport { TestNetDispenserApiClient } from './dispenser-client'\nimport { KmdAccountManager } from './kmd-account-manager'\nimport { SendParams, SendSingleTransactionResult } from './transaction'\n\n/** Result from performing an ensureFunded call. */\nexport interface EnsureFundedResult {\n /** The transaction ID of the transaction that funded the account. */\n transactionId: string\n /** The amount that was sent to the account. */\n amountFunded: AlgoAmount\n}\n\n/**\n * Returns a `TransactionSigner` for the given account that can sign a transaction.\n * This function has memoization, so will return the same transaction signer for a given account.\n * @param account An account that can sign a transaction\n * @returns A transaction signer\n * @example\n * ```typescript\n * const signer = getAccountTransactionSigner(account)\n * ```\n */\nexport const getAccountTransactionSigner = memoize(function (\n account: AddressWithTransactionSigner | LogicSigAccount | MultisigAccount,\n): TransactionSigner {\n return account.signer\n})\n\n/** Creates and keeps track of signing accounts that can sign transactions for a sending address. */\nexport class AccountManager {\n private _clientManager: ClientManager\n private _kmdAccountManager: KmdAccountManager\n private _accounts: { [address: string]: AddressWithTransactionSigner } = {}\n private _defaultSigner?: TransactionSigner\n\n /**\n * Create a new account manager.\n * @param clientManager The ClientManager client to use for algod and kmd clients\n * @example Create a new account manager\n * ```typescript\n * const accountManager = new AccountManager(clientManager)\n * ```\n */\n constructor(clientManager: ClientManager) {\n this._clientManager = clientManager\n this._kmdAccountManager = new KmdAccountManager(clientManager)\n }\n\n private _getComposer(getSuggestedParams?: () => Promise<SuggestedParams>) {\n return new TransactionComposer({\n algod: this._clientManager.algod,\n getSigner: this.getSigner.bind(this),\n getSuggestedParams: getSuggestedParams ?? (() => this._clientManager.algod.suggestedParams()),\n })\n }\n\n /**\n * KMD account manager that allows you to easily get and create accounts using KMD.\n * @returns The `KmdAccountManager` instance.\n * @example\n * ```typescript\n * const kmdManager = accountManager.kmd;\n * ```\n */\n public get kmd() {\n return this._kmdAccountManager\n }\n\n /**\n * Sets the default signer to use if no other signer is specified.\n *\n * If this isn't set an a transaction needs signing for a given sender\n * then an error will be thrown from `getSigner` / `getAccount`.\n * @param signer The signer to use, either a `TransactionSigner` or a `AddressWithSigner`\n * @example\n * ```typescript\n * const signer = accountManager.random() // Can be anything that returns a `TransactionSigner` or `AddressWithSigner`\n * accountManager.setDefaultSigner(signer)\n *\n * // When signing a transaction, if there is no signer registered for the sender then the default signer will be used\n * const signer = accountManager.getSigner(\"SENDERADDRESS\")\n * ```\n * @returns The `AccountManager` so method calls can be chained\n */\n public setDefaultSigner(signer: TransactionSigner | AddressWithTransactionSigner): AccountManager {\n this._defaultSigner = 'signer' in signer ? signer.signer : signer\n return this\n }\n\n /**\n * Records the given account (that can sign) against the address of the provided account for later\n * retrieval and returns a `AddressWithSigner` along with the original account in an `account` property.\n */\n\n private signerAccount<T extends AddressWithTransactionSigner | LogicSigAccount | MultisigAccount>(\n account: T,\n ): Address &\n AddressWithTransactionSigner & {\n /* The underlying account that specified this address. */ account: T\n } {\n const signer = getAccountTransactionSigner(account)\n const acc: AddressWithTransactionSigner = {\n addr: account.addr,\n signer: signer,\n }\n this._accounts[acc.addr.toString()] = acc\n\n const addressWithAccount = Address.fromString(acc.addr.toString()) as Address & AddressWithTransactionSigner & { account: T }\n addressWithAccount.account = account\n addressWithAccount.addr = acc.addr\n addressWithAccount.signer = signer\n return addressWithAccount\n }\n\n /**\n * Tracks the given account for later signing.\n *\n * Note: If you are generating accounts via the various methods on `AccountManager`\n * (like `random`, `fromMnemonic`, `logicsig`, etc.) then they automatically get tracked.\n * @param account The account to register, which can be a `AddressWithSigner` or\n * a `algosdk.Account`, `algosdk.LogicSigAccount`, `SigningAccount` or `MultisigAccount`\n * @example\n * ```typescript\n * const accountManager = new AccountManager(clientManager)\n * .setSignerFromAccount(algosdk.generateAccount())\n * .setSignerFromAccount(new algosdk.LogicSigAccount(program, args))\n * .setSignerFromAccount(new SigningAccount(mnemonic, sender))\n * .setSignerFromAccount(new MultisigAccount({version: 1, threshold: 1, addrs: [\"ADDRESS1...\", \"ADDRESS2...\"]}, [account1, account2]))\n * .setSignerFromAccount({addr: \"SENDERADDRESS\", signer: transactionSigner})\n * ```\n * @returns The `AccountManager` instance for method chaining\n */\n public setSignerFromAccount(account: AddressWithTransactionSigner | LogicSigAccount | MultisigAccount) {\n this.signerAccount(account)\n return this\n }\n\n /**\n * Tracks the given `TransactionSigner` against the given sender address for later signing.\n * @param sender The sender address to use this signer for\n * @param signer The `TransactionSigner` to sign transactions with for the given sender\n * @example\n * ```typescript\n * const accountManager = new AccountManager(clientManager)\n * .setSigner(\"SENDERADDRESS\", transactionSigner)\n * ```\n * @returns The `AccountManager` instance for method chaining\n */\n public setSigner(sender: string | Address, signer: TransactionSigner) {\n this._accounts[getAddress(sender).toString()] = { addr: getAddress(sender), signer }\n return this\n }\n\n /**\n * Takes all registered signers from the given `AccountManager` and adds them to this `AccountManager`.\n *\n * This is useful for situations where you have multiple contexts you are building accounts in such as unit tests.\n * @param anotherAccountManager Another account manager with signers registered\n * @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)\n * @returns The `AccountManager` instance for method chaining\n * @example\n * ```typescript\n * accountManager2.setSigners(accountManager1);\n * ```\n */\n public setSigners(anotherAccountManager: AccountManager, overwriteExisting = true) {\n this._accounts = overwriteExisting\n ? { ...this._accounts, ...anotherAccountManager._accounts }\n : { ...anotherAccountManager._accounts, ...this._accounts }\n return this\n }\n\n /**\n * Returns the `TransactionSigner` for the given sender address, ready to sign a transaction for that sender.\n *\n * If no signer has been registered for that address then the default signer is used if registered and\n * if not then an error is thrown.\n *\n * @param sender The sender address\n * @example\n * ```typescript\n * const signer = accountManager.getSigner(\"SENDERADDRESS\")\n * ```\n * @returns The `TransactionSigner` or throws an error if not found and no default signer is set\n */\n public getSigner(sender: ReadableAddress): TransactionSigner {\n const signer = this._accounts[getAddress(sender).toString()]?.signer ?? this._defaultSigner\n if (!signer) throw new Error(`No signer found for address ${sender}`)\n return signer\n }\n\n /**\n * Returns the `AddressWithSigner` for the given sender address.\n *\n * If no signer has been registered for that address then an error is thrown.\n * @param sender The sender address\n * @example\n * ```typescript\n * const sender = accountManager.random()\n * // ...\n * // Returns the `AddressWithSigner` for `sender` that has previously been registered\n * const account = accountManager.getAccount(sender)\n * ```\n * @returns The `AddressWithSigner` or throws an error if not found\n */\n public getAccount(sender: ReadableAddress): AddressWithTransactionSigner {\n const account = this._accounts[getAddress(sender).toString()]\n if (!account) throw new Error(`No signer found for address ${sender}`)\n return account\n }\n\n /**\n * Returns the given sender account's current status, balance and spendable amounts.\n *\n * [Response data schema details](https://dev.algorand.co/reference/rest-apis/algod/#accountinformation)\n * @example\n * ```typescript\n * const address = \"XBYLS2E6YI6XXL5BWCAMOA4GTWHXWENZMX5UHXMRNWWUQ7BXCY5WC5TEPA\";\n * const accountInfo = await accountManager.getInformation(address);\n * ```\n *\n * @param sender The account / address to look up\n * @returns The account information\n */\n public async getInformation(sender: ReadableAddress): Promise<AccountInformation> {\n const senderAddress = getAddress(sender).toString()\n const {\n round,\n lastHeartbeat = undefined,\n lastProposed = undefined,\n address,\n ...account\n } = await this._clientManager.algod.accountInformation(senderAddress)\n\n return {\n ...account,\n authAddr: account.authAddr,\n address,\n balance: AlgoAmount.MicroAlgo(Number(account.amount)),\n amountWithoutPendingRewards: AlgoAmount.MicroAlgo(Number(account.amountWithoutPendingRewards)),\n minBalance: AlgoAmount.MicroAlgo(Number(account.minBalance)),\n pendingRewards: AlgoAmount.MicroAlgo(Number(account.pendingRewards)),\n rewards: AlgoAmount.MicroAlgo(Number(account.rewards)),\n validAsOfRound: BigInt(round),\n totalAppsOptedIn: Number(account.totalAppsOptedIn),\n totalAssetsOptedIn: Number(account.totalAssetsOptedIn),\n totalCreatedApps: Number(account.totalCreatedApps),\n totalCreatedAssets: Number(account.totalCreatedAssets),\n appsTotalExtraPages: account.appsTotalExtraPages !== undefined ? Number(account.appsTotalExtraPages) : undefined,\n rewardBase: account.rewardBase !== undefined ? Number(account.rewardBase) : undefined,\n totalBoxBytes: account.totalBoxBytes !== undefined ? Number(account.totalBoxBytes) : undefined,\n totalBoxes: account.totalBoxes !== undefined ? Number(account.totalBoxes) : undefined,\n lastHeartbeatRound: lastHeartbeat !== undefined ? BigInt(lastHeartbeat) : undefined,\n lastProposedRound: lastProposed !== undefined ? BigInt(lastProposed) : undefined,\n }\n }\n\n /**\n * Tracks and returns an Algorand account with secret key loaded (i.e. that can sign transactions) by taking the mnemonic secret.\n *\n * @example\n * ```typescript\n * const account = accountManager.fromMnemonic(\"mnemonic secret ...\")\n * const rekeyedAccount = accountManager.fromMnemonic(\"mnemonic secret ...\", \"SENDERADDRESS...\")\n * ```\n * @param mnemonicSecret The mnemonic secret representing the private key of an account; **Note: Be careful how the mnemonic is handled**,\n * never commit it into source control and ideally load it from the environment (ideally via a secret storage service) rather than the file system.\n * @param sender The optional sender address to use this signer for (aka a rekeyed account)\n * @returns The account\n */\n public fromMnemonic(mnemonicSecret: string, sender?: string | Address): AddressWithTransactionSigner {\n const seed = seedFromMnemonic(mnemonicSecret)\n\n const keypair = nacl.sign.keyPair.fromSeed(seed)\n\n const addrWithSigners = generateAddressWithSigners({\n ed25519Pubkey: keypair.publicKey,\n sendingAddress: getOptionalAddress(sender),\n rawEd25519Signer: async (bytesToSign: Uint8Array): Promise<Uint8Array> => {\n return nacl.sign.detached(bytesToSign, keypair.secretKey)\n },\n })\n\n return this.signerAccount(addrWithSigners)\n }\n\n /**\n * Tracks and returns an Algorand account that is a rekeyed version of the given account to a new sender.\n *\n * @example\n * ```typescript\n * const account = accountManager.fromMnemonic(\"mnemonic secret ...\")\n * const rekeyedAccount = accountManager.rekeyed(account, \"SENDERADDRESS...\")\n * ```\n * @param account The account to use as the signer for this new rekeyed account\n * @param sender The sender address to use as the new sender\n * @returns The account\n */\n public rekeyed(sender: string | Address, account: AddressWithTransactionSigner) {\n return this.signerAccount({ addr: getAddress(sender), signer: account.signer })\n }\n\n /**\n * Tracks and returns an Algorand account with private key loaded by convention from environment variables based on the given name identifier.\n *\n * Note: This function expects to run in a Node.js environment.\n *\n * ## Convention:\n * * **Non-LocalNet:** will load process.env['\\{NAME\\}_MNEMONIC'] as a mnemonic secret; **Note: Be careful how the mnemonic is handled**,\n * never commit it into source control and ideally load it via a secret storage service rather than the file system.\n * If process.env['\\{NAME\\}_SENDER'] is defined then it will use that for the sender address (i.e. to support rekeyed accounts)\n * * **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\n *\n * 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).\n *\n * @example Default\n *\n * 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:\n * ```typescript\n * const account = await accountManager.fromEnvironment('MY_ACCOUNT')\n * ```\n *\n * 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.\n * 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.\n *\n * @param name The name identifier of the account\n * @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\n * @returns The account\n */\n public async fromEnvironment(name: string, fundWith?: AlgoAmount) {\n if (!process || !process.env) {\n throw new Error('Attempt to get account with private key from a non Node.js context; this is not supported!')\n }\n\n const accountMnemonic = process.env[`${name.toUpperCase()}_MNEMONIC`]\n const sender = process.env[`${name.toUpperCase()}_SENDER`]\n\n if (accountMnemonic) {\n return this.fromMnemonic(accountMnemonic, sender)\n }\n\n if (await this._clientManager.isLocalNet()) {\n const account = await this._kmdAccountManager.getOrCreateWalletAccount(name, fundWith)\n return this.signerAccount(account)\n }\n\n throw new Error(`Missing environment variable ${name.toUpperCase()}_MNEMONIC when looking for account ${name}`)\n }\n\n /**\n * Tracks and returns an Algorand account with private key loaded from the given KMD wallet (identified by name).\n *\n * @param name 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 accountManager.fromKmd('unencrypted-default-wallet',\n * a => a.status !== 'Offline' && a.amount > 1_000_000_000\n * )\n * ```\n * @returns The account\n */\n public async fromKmd(\n name: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n predicate?: (account: Record<string, any>) => boolean,\n sender?: string | Address,\n ) {\n const account = await this._kmdAccountManager.getWalletAccount(name, predicate, sender)\n if (!account) throw new Error(`Unable to find KMD account ${name}${predicate ? ' with predicate' : ''}`)\n return this.signerAccount(account)\n }\n\n /**\n * Tracks and returns an account that supports partial or full multisig signing.\n *\n * @example\n * ```typescript\n * const account = accountManager.multisig({version: 1, threshold: 1, addrs: [\"ADDRESS1...\", \"ADDRESS2...\"]},\n * [(await accountManager.fromEnvironment('ACCOUNT1')).account])\n * ```\n * @param multisigParams The parameters that define the multisig account\n * @param subSigners The signers that are currently present\n * @returns A multisig account wrapper\n */\n public multisig(multisigParams: MultisigMetadata, subSigners: AddressWithSigners[]) {\n return this.signerAccount(new MultisigAccount(multisigParams, subSigners))\n }\n\n /**\n * Tracks and returns an account that represents a logic signature.\n *\n * @example\n * ```typescript\n * const account = accountManager.logicsig(program, [new Uint8Array(3, ...)])\n * ```\n * @param program The bytes that make up the compiled logic signature\n * @param args The (binary) arguments to pass into the logic signature\n * @returns A logic signature account wrapper\n */\n public logicsig(program: Uint8Array, args?: Array<Uint8Array>) {\n return this.signerAccount(new LogicSigAccount(program, args))\n }\n\n /**\n * Tracks and returns a new, random Algorand account with secret key loaded.\n *\n * @example\n * ```typescript\n * const account = accountManager.random()\n * ```\n * @returns The account\n */\n public random() {\n const keypair = nacl.sign.keyPair()\n const rawSigner = async (bytesToSign: Uint8Array): Promise<Uint8Array> => {\n return nacl.sign.detached(bytesToSign, keypair.secretKey)\n }\n\n return this.signerAccount(generateAddressWithSigners({ ed25519Pubkey: keypair.publicKey, rawEd25519Signer: rawSigner }))\n }\n\n /**\n * Returns an account (with private key loaded) that can act as a dispenser from\n * environment variables, or against default LocalNet if no environment variables present.\n *\n * Note: requires a Node.js environment to execute.\n *\n * If present, it will load the account mnemonic stored in process.env.DISPENSER_MNEMONIC and optionally\n * process.env.DISPENSER_SENDER if it's a rekeyed account.\n *\n * @example\n * ```typescript\n * const account = await accountManager.dispenserFromEnvironment()\n * ```\n *\n * @returns The account\n */\n public async dispenserFromEnvironment() {\n if (!process || !process.env) {\n throw new Error('Attempt to get dispenser from environment from a non Node.js context; this is not supported!')\n }\n\n return process.env[`${DISPENSER_ACCOUNT.toUpperCase()}_MNEMONIC`]\n ? await this.fromEnvironment(DISPENSER_ACCOUNT)\n : await this.localNetDispenser()\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 *\n * @example\n * ```typescript\n * const account = await accountManager.localNetDispenser()\n * ```\n * @returns The account\n */\n public async localNetDispenser() {\n const dispenser = await this._kmdAccountManager.getLocalNetDispenserAccount()\n return this.signerAccount(dispenser)\n }\n\n /**\n * Rekey an account to a new address.\n *\n * **Note:** Please be careful with this function and be sure to read the [official rekey guidance](https://dev.algorand.co/concepts/accounts/rekeying).\n *\n * @param account The account to rekey\n * @param rekeyTo The account address or signing account of the account that will be used to authorise transactions for the rekeyed account going forward.\n * If a signing account is provided that will now be tracked as the signer for `account` in this `AccountManager`\n * @param options Any parameters to control the transaction or execution of the transaction\n *\n * @example Basic example (with string addresses)\n * ```typescript\n * await accountManager.rekeyAccount({account: \"ACCOUNTADDRESS\", rekeyTo: \"NEWADDRESS\"})\n * ```\n * @example Basic example (with signer accounts)\n * ```typescript\n * await accountManager.rekeyAccount({account: account1, rekeyTo: newSignerAccount})\n * ```\n * @example Advanced example\n * ```typescript\n * await accountManager.rekeyAccount({\n * account: \"ACCOUNTADDRESS\",\n * rekeyTo: \"NEWADDRESS\",\n * lease: 'lease',\n * note: 'note',\n * firstValidRound: 1000n,\n * validityWindow: 10,\n * extraFee: (1000).microAlgo(),\n * staticFee: (1000).microAlgo(),\n * // Max fee doesn't make sense with extraFee AND staticFee\n * // already specified, but here for completeness\n * maxFee: (3000).microAlgo(),\n * maxRoundsToWaitForConfirmation: 5,\n * suppressLog: true,\n * })\n * ```\n * @returns The result of the transaction and the transaction that was sent\n */\n async rekeyAccount(\n account: string | Address,\n rekeyTo: string | Address | AddressWithTransactionSigner,\n options?: Omit<CommonTransactionParams, 'sender'> & SendParams,\n ): Promise<SendSingleTransactionResult> {\n const result = await this._getComposer()\n .addPayment({\n ...options,\n sender: getAddress(account),\n receiver: getAddress(account),\n amount: AlgoAmount.MicroAlgo(0),\n rekeyTo: getAddress(rekeyTo),\n })\n .send(options)\n\n // If the rekey is a signing account set it as the signer for this account\n if (typeof rekeyTo === 'object' && 'addr' in rekeyTo) {\n this.rekeyed(account, rekeyTo)\n }\n\n Config.getLogger(options?.suppressLog).info(`Rekeyed ${account} to ${rekeyTo} via transaction ${result.txIds.at(-1)}`)\n\n return { ...result, transaction: result.transactions.at(-1)!, confirmation: result.confirmations.at(-1)! }\n }\n\n private async _getEnsureFundedAmount(sender: Address, minSpendingBalance: AlgoAmount, minFundingIncrement?: AlgoAmount) {\n const accountInfo = await this.getInformation(sender)\n const currentSpendingBalance = accountInfo.balance.microAlgo - accountInfo.minBalance.microAlgo\n\n const amountFunded = calculateFundAmount(minSpendingBalance.microAlgo, currentSpendingBalance, minFundingIncrement?.microAlgo ?? 0n)\n\n return amountFunded === null ? undefined : AlgoAmount.MicroAlgo(amountFunded)\n }\n\n /**\n * Funds a given account using a dispenser account as a funding source such that\n * the given account has a certain amount of Algo free to spend (accounting for\n * Algo locked in minimum balance requirement).\n *\n * https://dev.algorand.co/concepts/smart-contracts/costs-constraints#mbr\n *\n * @param accountToFund The account to fund\n * @param dispenserAccount The account to use as a dispenser funding source\n * @param minSpendingBalance The minimum balance of Algo that the account should have available to spend (i.e. on top of minimum balance requirement)\n * @param options Optional parameters to control the funding increment, transaction or execution of the transaction\n * @example Example using AlgorandClient\n * ```typescript\n * // Basic example\n * await accountManager.ensureFunded(\"ACCOUNTADDRESS\", \"DISPENSERADDRESS\", algokit.algo(1))\n * // With configuration\n * await accountManager.ensureFunded(\"ACCOUNTADDRESS\", \"DISPENSERADDRESS\", algokit.algo(1),\n * { minFundingIncrement: algokit.algo(2), fee: (1000).microAlgo(), suppressLog: true }\n * )\n * ```\n * @returns\n * - The result of executing the dispensing transaction and the `amountFunded` if funds were needed.\n * - `undefined` if no funds were needed.\n */\n async ensureFunded(\n accountToFund: string | Address,\n dispenserAccount: string | Address,\n minSpendingBalance: AlgoAmount,\n options?: {\n minFundingIncrement?: AlgoAmount\n } & SendParams &\n Omit<CommonTransactionParams, 'sender'>,\n ): Promise<(SendSingleTransactionResult & EnsureFundedResult) | undefined> {\n const addressToFund = getAddress(accountToFund)\n\n const amountFunded = await this._getEnsureFundedAmount(addressToFund, minSpendingBalance, options?.minFundingIncrement)\n if (!amountFunded) return undefined\n\n const result = await this._getComposer()\n .addPayment({\n ...options,\n sender: getAddress(dispenserAccount),\n receiver: addressToFund,\n amount: amountFunded,\n })\n .send(options)\n\n return {\n ...result,\n transaction: result.transactions[0],\n confirmation: result.confirmations[0],\n transactionId: result.txIds[0],\n amountFunded: amountFunded,\n }\n }\n\n /**\n * Funds a given account using a dispenser account retrieved from the environment,\n * per the `dispenserFromEnvironment` method, as a funding source such that\n * the given account has a certain amount of Algo free to spend (accounting for\n * Algo locked in minimum balance requirement).\n *\n * **Note:** requires a Node.js environment to execute.\n *\n * The dispenser account is retrieved from the account mnemonic stored in\n * process.env.DISPENSER_MNEMONIC and optionally process.env.DISPENSER_SENDER\n * if it's a rekeyed account, or against default LocalNet if no environment variables present.\n *\n * https://dev.algorand.co/concepts/smart-contracts/costs-constraints#mbr\n *\n * @param accountToFund The account to fund\n * @param minSpendingBalance The minimum balance of Algo that the account should have available to spend (i.e. on top of minimum balance requirement)\n * @param options Optional parameters to control the funding increment, transaction or execution of the transaction\n * @example Example using AlgorandClient\n * ```typescript\n * // Basic example\n * await accountManager.ensureFundedFromEnvironment(\"ACCOUNTADDRESS\", algokit.algo(1))\n * // With configuration\n * await accountManager.ensureFundedFromEnvironment(\"ACCOUNTADDRESS\", algokit.algo(1),\n * { minFundingIncrement: algokit.algo(2), fee: (1000).microAlgo(), suppressLog: true }\n * )\n * ```\n * @returns\n * - The result of executing the dispensing transaction and the `amountFunded` if funds were needed.\n * - `undefined` if no funds were needed.\n */\n async ensureFundedFromEnvironment(\n accountToFund: string | Address,\n minSpendingBalance: AlgoAmount,\n options?: {\n minFundingIncrement?: AlgoAmount\n } & SendParams &\n Omit<CommonTransactionParams, 'sender'>,\n ): Promise<(SendSingleTransactionResult & EnsureFundedResult) | undefined> {\n const addressToFund = getAddress(accountToFund)\n const dispenserAccount = await this.dispenserFromEnvironment()\n\n const amountFunded = await this._getEnsureFundedAmount(addressToFund, minSpendingBalance, options?.minFundingIncrement)\n if (!amountFunded) return undefined\n\n const result = await this._getComposer()\n .addPayment({\n ...options,\n sender: dispenserAccount,\n receiver: addressToFund,\n amount: amountFunded,\n })\n .send(options)\n\n return {\n ...result,\n transaction: result.transactions[0],\n confirmation: result.confirmations[0],\n transactionId: result.txIds[0],\n amountFunded: amountFunded,\n }\n }\n\n /**\n * Funds a given account using the TestNet Dispenser API as a funding source such that\n * the account has a certain amount of Algo free to spend (accounting for Algo locked\n * in minimum balance requirement).\n *\n * https://dev.algorand.co/concepts/smart-contracts/costs-constraints#mbr\n *\n * @param accountToFund The account to fund\n * @param dispenserClient The TestNet dispenser funding client\n * @param minSpendingBalance The minimum balance of Algo that the account should have available to spend (i.e. on top of minimum balance requirement)\n * @param options Optional parameters to control the funding increment, transaction or execution of the transaction\n * @example Example using AlgorandClient\n * ```typescript\n * // Basic example\n * await accountManager.ensureFundedFromTestNetDispenserApi(\"ACCOUNTADDRESS\", algorand.client.getTestNetDispenserFromEnvironment(), algokit.algo(1))\n * // With configuration\n * await accountManager.ensureFundedFromTestNetDispenserApi(\"ACCOUNTADDRESS\", algorand.client.getTestNetDispenserFromEnvironment(), algokit.algo(1),\n * { minFundingIncrement: algokit.algo(2) }\n * )\n * ```\n * @returns\n * - The result of executing the dispensing transaction and the `amountFunded` if funds were needed.\n * - `undefined` if no funds were needed.\n */\n async ensureFundedFromTestNetDispenserApi(\n accountToFund: string | Address,\n dispenserClient: TestNetDispenserApiClient,\n minSpendingBalance: AlgoAmount,\n options?: {\n minFundingIncrement?: AlgoAmount\n },\n ): Promise<EnsureFundedResult | undefined> {\n if (!(await this._clientManager.isTestNet())) {\n throw new Error('Attempt to fund using TestNet dispenser API on non TestNet network.')\n }\n\n const addressToFund = getAddress(accountToFund)\n\n const amountFunded = await this._getEnsureFundedAmount(addressToFund, minSpendingBalance, options?.minFundingIncrement)\n if (!amountFunded) return undefined\n\n const result = await dispenserClient.fund(addressToFund, amountFunded.microAlgo)\n return {\n amountFunded: AlgoAmount.MicroAlgo(result.amount),\n transactionId: result.txId,\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"account-manager.mjs","names":["acc: AddressWithTransactionSigner"],"sources":["../../src/types/account-manager.ts"],"sourcesContent":["import { seedFromMnemonic } from '@algorandfoundation/algokit-algo25'\nimport { SuggestedParams } from '@algorandfoundation/algokit-algod-client'\nimport { Address, ReadableAddress, getAddress, getOptionalAddress } from '@algorandfoundation/algokit-common'\nimport {\n AddressWithSigners,\n AddressWithTransactionSigner,\n LogicSigAccount,\n MultisigAccount,\n MultisigMetadata,\n TransactionSigner,\n generateAddressWithSigners,\n} from '@algorandfoundation/algokit-transact'\nimport nacl from 'tweetnacl'\nimport { Config } from '../config'\nimport { calculateFundAmount, memoize } from '../util'\nimport { AccountInformation, DISPENSER_ACCOUNT } from './account'\nimport { AlgoAmount } from './amount'\nimport { ClientManager } from './client-manager'\nimport { CommonTransactionParams, TransactionComposer } from './composer'\nimport { TestNetDispenserApiClient } from './dispenser-client'\nimport { KmdAccountManager } from './kmd-account-manager'\nimport { SendParams, SendSingleTransactionResult } from './transaction'\n\n/** Result from performing an ensureFunded call. */\nexport interface EnsureFundedResult {\n /** The transaction ID of the transaction that funded the account. */\n transactionId: string\n /** The amount that was sent to the account. */\n amountFunded: AlgoAmount\n}\n\n/**\n * Returns a `TransactionSigner` for the given account that can sign a transaction.\n * This function has memoization, so will return the same transaction signer for a given account.\n * @param account An account that can sign a transaction\n * @returns A transaction signer\n * @example\n * ```typescript\n * const signer = getAccountTransactionSigner(account)\n * ```\n */\nexport const getAccountTransactionSigner = memoize(function (\n account: AddressWithTransactionSigner | LogicSigAccount | MultisigAccount,\n): TransactionSigner {\n return account.signer\n})\n\n/** Creates and keeps track of signing accounts that can sign transactions for a sending address. */\nexport class AccountManager {\n private _clientManager: ClientManager\n private _kmdAccountManager: KmdAccountManager\n private _accounts: { [address: string]: AddressWithTransactionSigner } = {}\n private _defaultSigner?: TransactionSigner\n\n /**\n * Create a new account manager.\n * @param clientManager The ClientManager client to use for algod and kmd clients\n * @example Create a new account manager\n * ```typescript\n * const accountManager = new AccountManager(clientManager)\n * ```\n */\n constructor(clientManager: ClientManager) {\n this._clientManager = clientManager\n this._kmdAccountManager = new KmdAccountManager(clientManager)\n }\n\n private _getComposer(getSuggestedParams?: () => Promise<SuggestedParams>) {\n return new TransactionComposer({\n algod: this._clientManager.algod,\n getSigner: this.getSigner.bind(this),\n getSuggestedParams: getSuggestedParams ?? (() => this._clientManager.algod.suggestedParams()),\n })\n }\n\n /**\n * KMD account manager that allows you to easily get and create accounts using KMD.\n * @returns The `KmdAccountManager` instance.\n * @example\n * ```typescript\n * const kmdManager = accountManager.kmd;\n * ```\n */\n public get kmd() {\n return this._kmdAccountManager\n }\n\n /**\n * Sets the default signer to use if no other signer is specified.\n *\n * If this isn't set an a transaction needs signing for a given sender\n * then an error will be thrown from `getSigner` / `getAccount`.\n * @param signer The signer to use, either a `TransactionSigner` or a `AddressWithSigner`\n * @example\n * ```typescript\n * const signer = accountManager.random() // Can be anything that returns a `TransactionSigner` or `AddressWithSigner`\n * accountManager.setDefaultSigner(signer)\n *\n * // When signing a transaction, if there is no signer registered for the sender then the default signer will be used\n * const signer = accountManager.getSigner(\"SENDERADDRESS\")\n * ```\n * @returns The `AccountManager` so method calls can be chained\n */\n public setDefaultSigner(signer: TransactionSigner | AddressWithTransactionSigner): AccountManager {\n this._defaultSigner = 'signer' in signer ? signer.signer : signer\n return this\n }\n\n /**\n * Records the given account (that can sign) against the address of the provided account for later\n * retrieval and returns a `AddressWithSigner` along with the original account in an `account` property.\n */\n\n private signerAccount<T extends AddressWithTransactionSigner | LogicSigAccount | MultisigAccount>(\n account: T,\n ): Address &\n AddressWithTransactionSigner & {\n /* The underlying account that specified this address. */ account: T\n } {\n const signer = getAccountTransactionSigner(account)\n const acc: AddressWithTransactionSigner = {\n addr: account.addr,\n signer: signer,\n }\n this._accounts[acc.addr.toString()] = acc\n\n const addressWithAccount = Address.fromString(acc.addr.toString()) as Address & AddressWithTransactionSigner & { account: T }\n addressWithAccount.account = account\n addressWithAccount.addr = acc.addr\n addressWithAccount.signer = signer\n return addressWithAccount\n }\n\n /**\n * Tracks the given account for later signing.\n *\n * Note: If you are generating accounts via the various methods on `AccountManager`\n * (like `random`, `fromMnemonic`, `logicsig`, etc.) then they automatically get tracked.\n * @param account The account to register, which can be a `AddressWithSigner` or\n * a `algosdk.Account`, `algosdk.LogicSigAccount`, `SigningAccount` or `MultisigAccount`\n * @example\n * ```typescript\n * const accountManager = new AccountManager(clientManager)\n * .setSignerFromAccount(algosdk.generateAccount())\n * .setSignerFromAccount(new algosdk.LogicSigAccount(program, args))\n * .setSignerFromAccount(new SigningAccount(mnemonic, sender))\n * .setSignerFromAccount(new MultisigAccount({version: 1, threshold: 1, addrs: [\"ADDRESS1...\", \"ADDRESS2...\"]}, [account1, account2]))\n * .setSignerFromAccount({addr: \"SENDERADDRESS\", signer: transactionSigner})\n * ```\n * @returns The `AccountManager` instance for method chaining\n */\n public setSignerFromAccount(account: AddressWithTransactionSigner | LogicSigAccount | MultisigAccount) {\n this.signerAccount(account)\n return this\n }\n\n /**\n * Tracks the given `TransactionSigner` against the given sender address for later signing.\n * @param sender The sender address to use this signer for\n * @param signer The `TransactionSigner` to sign transactions with for the given sender\n * @example\n * ```typescript\n * const accountManager = new AccountManager(clientManager)\n * .setSigner(\"SENDERADDRESS\", transactionSigner)\n * ```\n * @returns The `AccountManager` instance for method chaining\n */\n public setSigner(sender: string | Address, signer: TransactionSigner) {\n this._accounts[getAddress(sender).toString()] = { addr: getAddress(sender), signer }\n return this\n }\n\n /**\n * Takes all registered signers from the given `AccountManager` and adds them to this `AccountManager`.\n *\n * This is useful for situations where you have multiple contexts you are building accounts in such as unit tests.\n * @param anotherAccountManager Another account manager with signers registered\n * @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)\n * @returns The `AccountManager` instance for method chaining\n * @example\n * ```typescript\n * accountManager2.setSigners(accountManager1);\n * ```\n */\n public setSigners(anotherAccountManager: AccountManager, overwriteExisting = true) {\n this._accounts = overwriteExisting\n ? { ...this._accounts, ...anotherAccountManager._accounts }\n : { ...anotherAccountManager._accounts, ...this._accounts }\n return this\n }\n\n /**\n * Returns the `TransactionSigner` for the given sender address, ready to sign a transaction for that sender.\n *\n * If no signer has been registered for that address then the default signer is used if registered and\n * if not then an error is thrown.\n *\n * @param sender The sender address\n * @example\n * ```typescript\n * const signer = accountManager.getSigner(\"SENDERADDRESS\")\n * ```\n * @returns The `TransactionSigner` or throws an error if not found and no default signer is set\n */\n public getSigner(sender: ReadableAddress): TransactionSigner {\n const signer = this._accounts[getAddress(sender).toString()]?.signer ?? this._defaultSigner\n if (!signer) throw new Error(`No signer found for address ${sender}`)\n return signer\n }\n\n /**\n * Returns the `AddressWithSigner` for the given sender address.\n *\n * If no signer has been registered for that address then an error is thrown.\n * @param sender The sender address\n * @example\n * ```typescript\n * const sender = accountManager.random()\n * // ...\n * // Returns the `AddressWithSigner` for `sender` that has previously been registered\n * const account = accountManager.getAccount(sender)\n * ```\n * @returns The `AddressWithSigner` or throws an error if not found\n */\n public getAccount(sender: ReadableAddress): AddressWithTransactionSigner {\n const account = this._accounts[getAddress(sender).toString()]\n if (!account) throw new Error(`No signer found for address ${sender}`)\n return account\n }\n\n /**\n * Returns the given sender account's current status, balance and spendable amounts.\n *\n * [Response data schema details](https://dev.algorand.co/reference/rest-apis/algod/#accountinformation)\n * @example\n * ```typescript\n * const address = \"XBYLS2E6YI6XXL5BWCAMOA4GTWHXWENZMX5UHXMRNWWUQ7BXCY5WC5TEPA\";\n * const accountInfo = await accountManager.getInformation(address);\n * ```\n *\n * @param sender The account / address to look up\n * @returns The account information\n */\n public async getInformation(sender: ReadableAddress): Promise<AccountInformation> {\n const senderAddress = getAddress(sender).toString()\n const {\n round,\n lastHeartbeat = undefined,\n lastProposed = undefined,\n address,\n ...account\n } = await this._clientManager.algod.accountInformation(senderAddress)\n\n return {\n ...account,\n authAddr: account.authAddr,\n address,\n balance: AlgoAmount.MicroAlgo(Number(account.amount)),\n amountWithoutPendingRewards: AlgoAmount.MicroAlgo(Number(account.amountWithoutPendingRewards)),\n minBalance: AlgoAmount.MicroAlgo(Number(account.minBalance)),\n pendingRewards: AlgoAmount.MicroAlgo(Number(account.pendingRewards)),\n rewards: AlgoAmount.MicroAlgo(Number(account.rewards)),\n validAsOfRound: BigInt(round),\n totalAppsOptedIn: Number(account.totalAppsOptedIn),\n totalAssetsOptedIn: Number(account.totalAssetsOptedIn),\n totalCreatedApps: Number(account.totalCreatedApps),\n totalCreatedAssets: Number(account.totalCreatedAssets),\n appsTotalExtraPages: account.appsTotalExtraPages !== undefined ? Number(account.appsTotalExtraPages) : undefined,\n rewardBase: account.rewardBase !== undefined ? Number(account.rewardBase) : undefined,\n totalBoxBytes: account.totalBoxBytes !== undefined ? Number(account.totalBoxBytes) : undefined,\n totalBoxes: account.totalBoxes !== undefined ? Number(account.totalBoxes) : undefined,\n lastHeartbeatRound: lastHeartbeat !== undefined ? BigInt(lastHeartbeat) : undefined,\n lastProposedRound: lastProposed !== undefined ? BigInt(lastProposed) : undefined,\n }\n }\n\n /**\n * Tracks and returns an Algorand account with secret key loaded (i.e. that can sign transactions) by taking the mnemonic secret.\n *\n * @example\n * ```typescript\n * const account = accountManager.fromMnemonic(\"mnemonic secret ...\")\n * const rekeyedAccount = accountManager.fromMnemonic(\"mnemonic secret ...\", \"SENDERADDRESS...\")\n * ```\n * @param mnemonicSecret The mnemonic secret representing the private key of an account; **Note: Be careful how the mnemonic is handled**,\n * never commit it into source control and ideally load it from the environment (ideally via a secret storage service) rather than the file system.\n * @param sender The optional sender address to use this signer for (aka a rekeyed account)\n * @returns The account\n */\n public fromMnemonic(mnemonicSecret: string, sender?: string | Address): AddressWithTransactionSigner {\n const seed = seedFromMnemonic(mnemonicSecret)\n\n const keypair = nacl.sign.keyPair.fromSeed(seed)\n\n const addrWithSigners = generateAddressWithSigners({\n ed25519Pubkey: keypair.publicKey,\n sendingAddress: getOptionalAddress(sender),\n rawEd25519Signer: async (bytesToSign: Uint8Array): Promise<Uint8Array> => {\n return nacl.sign.detached(bytesToSign, keypair.secretKey)\n },\n })\n\n return this.signerAccount(addrWithSigners)\n }\n\n /**\n * Tracks and returns an Algorand account that is a rekeyed version of the given account to a new sender.\n *\n * @example\n * ```typescript\n * const account = accountManager.fromMnemonic(\"mnemonic secret ...\")\n * const rekeyedAccount = accountManager.rekeyed(account, \"SENDERADDRESS...\")\n * ```\n * @param account The account to use as the signer for this new rekeyed account\n * @param sender The sender address to use as the new sender\n * @returns The account\n */\n public rekeyed(sender: string | Address, account: AddressWithTransactionSigner) {\n return this.signerAccount({ addr: getAddress(sender), signer: account.signer })\n }\n\n /**\n * Tracks and returns an Algorand account with private key loaded by convention from environment variables based on the given name identifier.\n *\n * Note: This function expects to run in a Node.js environment.\n *\n * ## Convention:\n * * **Non-LocalNet:** will load process.env['\\{NAME\\}_MNEMONIC'] as a mnemonic secret; **Note: Be careful how the mnemonic is handled**,\n * never commit it into source control and ideally load it via a secret storage service rather than the file system.\n * If process.env['\\{NAME\\}_SENDER'] is defined then it will use that for the sender address (i.e. to support rekeyed accounts)\n * * **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\n *\n * 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).\n *\n * @example Default\n *\n * 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:\n * ```typescript\n * const account = await accountManager.fromEnvironment('MY_ACCOUNT')\n * ```\n *\n * 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.\n * 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.\n *\n * @param name The name identifier of the account\n * @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\n * @returns The account\n */\n public async fromEnvironment(name: string, fundWith?: AlgoAmount) {\n if (!process || !process.env) {\n throw new Error('Attempt to get account with private key from a non Node.js context; this is not supported!')\n }\n\n const accountMnemonic = process.env[`${name.toUpperCase()}_MNEMONIC`]\n const sender = process.env[`${name.toUpperCase()}_SENDER`]\n\n if (accountMnemonic) {\n return this.fromMnemonic(accountMnemonic, sender)\n }\n\n if (await this._clientManager.isLocalNet()) {\n const account = await this._kmdAccountManager.getOrCreateWalletAccount(name, fundWith)\n return this.signerAccount(account)\n }\n\n throw new Error(`Missing environment variable ${name.toUpperCase()}_MNEMONIC when looking for account ${name}`)\n }\n\n /**\n * Tracks and returns an Algorand account with private key loaded from the given KMD wallet (identified by name).\n *\n * @param name 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 accountManager.fromKmd('unencrypted-default-wallet',\n * a => a.status !== 'Offline' && a.amount > 1_000_000_000\n * )\n * ```\n * @returns The account\n */\n public async fromKmd(\n name: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n predicate?: (account: Record<string, any>) => boolean,\n sender?: string | Address,\n ) {\n const account = await this._kmdAccountManager.getWalletAccount(name, predicate, sender)\n if (!account) throw new Error(`Unable to find KMD account ${name}${predicate ? ' with predicate' : ''}`)\n return this.signerAccount(account)\n }\n\n /**\n * Tracks and returns an account that supports partial or full multisig signing.\n *\n * @example\n * ```typescript\n * const account = accountManager.multisig({version: 1, threshold: 1, addrs: [\"ADDRESS1...\", \"ADDRESS2...\"]},\n * [(await accountManager.fromEnvironment('ACCOUNT1')).account])\n * ```\n * @param multisigParams The parameters that define the multisig account\n * @param subSigners The signers that are currently present\n * @returns A multisig account wrapper\n */\n public multisig(multisigParams: MultisigMetadata, subSigners: AddressWithSigners[]) {\n return this.signerAccount(new MultisigAccount(multisigParams, subSigners))\n }\n\n /**\n * Tracks and returns an account that represents a logic signature.\n *\n * @example\n * ```typescript\n * const account = accountManager.logicsig(program, [new Uint8Array(3, ...)])\n * ```\n * @param program The bytes that make up the compiled logic signature\n * @param args The (binary) arguments to pass into the logic signature\n * @returns A logic signature account wrapper\n */\n public logicsig(program: Uint8Array, args?: Array<Uint8Array>) {\n return this.signerAccount(new LogicSigAccount(program, args))\n }\n\n /**\n * Tracks and returns a new, random Algorand account with secret key loaded.\n *\n * @example\n * ```typescript\n * const account = accountManager.random()\n * ```\n * @returns The account\n */\n public random() {\n const keypair = nacl.sign.keyPair()\n const rawSigner = async (bytesToSign: Uint8Array): Promise<Uint8Array> => {\n return nacl.sign.detached(bytesToSign, keypair.secretKey)\n }\n\n return this.signerAccount(generateAddressWithSigners({ ed25519Pubkey: keypair.publicKey, rawEd25519Signer: rawSigner }))\n }\n\n /**\n * Returns an account (with private key loaded) that can act as a dispenser from\n * environment variables, or against default LocalNet if no environment variables present.\n *\n * Note: requires a Node.js environment to execute.\n *\n * If present, it will load the account mnemonic stored in process.env.DISPENSER_MNEMONIC and optionally\n * process.env.DISPENSER_SENDER if it's a rekeyed account.\n *\n * @example\n * ```typescript\n * const account = await accountManager.dispenserFromEnvironment()\n * ```\n *\n * @returns The account\n */\n public async dispenserFromEnvironment() {\n if (!process || !process.env) {\n throw new Error('Attempt to get dispenser from environment from a non Node.js context; this is not supported!')\n }\n\n return process.env[`${DISPENSER_ACCOUNT.toUpperCase()}_MNEMONIC`]\n ? await this.fromEnvironment(DISPENSER_ACCOUNT)\n : await this.localNetDispenser()\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 *\n * @example\n * ```typescript\n * const account = await accountManager.localNetDispenser()\n * ```\n * @returns The account\n */\n public async localNetDispenser() {\n const dispenser = await this._kmdAccountManager.getLocalNetDispenserAccount()\n return this.signerAccount(dispenser)\n }\n\n /**\n * Rekey an account to a new address.\n *\n * **Note:** Please be careful with this function and be sure to read the [official rekey guidance](https://dev.algorand.co/concepts/accounts/rekeying).\n *\n * @param account The account to rekey\n * @param rekeyTo The account address or signing account of the account that will be used to authorise transactions for the rekeyed account going forward.\n * If a signing account is provided that will now be tracked as the signer for `account` in this `AccountManager`\n * @param options Any parameters to control the transaction or execution of the transaction\n *\n * @example Basic example (with string addresses)\n * ```typescript\n * await accountManager.rekeyAccount({account: \"ACCOUNTADDRESS\", rekeyTo: \"NEWADDRESS\"})\n * ```\n * @example Basic example (with signer accounts)\n * ```typescript\n * await accountManager.rekeyAccount({account: account1, rekeyTo: newSignerAccount})\n * ```\n * @example Advanced example\n * ```typescript\n * await accountManager.rekeyAccount({\n * account: \"ACCOUNTADDRESS\",\n * rekeyTo: \"NEWADDRESS\",\n * lease: 'lease',\n * note: 'note',\n * firstValidRound: 1000n,\n * validityWindow: 10,\n * extraFee: (1000).microAlgo(),\n * staticFee: (1000).microAlgo(),\n * // Max fee doesn't make sense with extraFee AND staticFee\n * // already specified, but here for completeness\n * maxFee: (3000).microAlgo(),\n * maxRoundsToWaitForConfirmation: 5,\n * suppressLog: true,\n * })\n * ```\n * @returns The result of the transaction and the transaction that was sent\n */\n async rekeyAccount(\n account: string | Address,\n rekeyTo: string | Address | AddressWithTransactionSigner,\n options?: Omit<CommonTransactionParams, 'sender'> & SendParams,\n ): Promise<SendSingleTransactionResult> {\n const result = await this._getComposer()\n .addPayment({\n ...options,\n sender: getAddress(account),\n receiver: getAddress(account),\n amount: AlgoAmount.MicroAlgo(0),\n rekeyTo: getAddress(rekeyTo),\n })\n .send(options)\n\n // If the rekey is a signing account set it as the signer for this account\n if (typeof rekeyTo === 'object' && 'addr' in rekeyTo) {\n this.rekeyed(account, rekeyTo)\n }\n\n Config.getLogger(options?.suppressLog).info(`Rekeyed ${account} to ${rekeyTo} via transaction ${result.txIds.at(-1)}`)\n\n return { ...result, transaction: result.transactions.at(-1)!, confirmation: result.confirmations.at(-1)! }\n }\n\n private async _getEnsureFundedAmount(sender: Address, minSpendingBalance: AlgoAmount, minFundingIncrement?: AlgoAmount) {\n const accountInfo = await this.getInformation(sender)\n const currentSpendingBalance = accountInfo.balance.microAlgo - accountInfo.minBalance.microAlgo\n\n const amountFunded = calculateFundAmount(minSpendingBalance.microAlgo, currentSpendingBalance, minFundingIncrement?.microAlgo ?? 0n)\n\n return amountFunded === null ? undefined : AlgoAmount.MicroAlgo(amountFunded)\n }\n\n /**\n * Funds a given account using a dispenser account as a funding source such that\n * the given account has a certain amount of Algo free to spend (accounting for\n * Algo locked in minimum balance requirement).\n *\n * https://dev.algorand.co/concepts/smart-contracts/costs-constraints#mbr\n *\n * @param accountToFund The account to fund\n * @param dispenserAccount The account to use as a dispenser funding source\n * @param minSpendingBalance The minimum balance of Algo that the account should have available to spend (i.e. on top of minimum balance requirement)\n * @param options Optional parameters to control the funding increment, transaction or execution of the transaction\n * @example Example using AlgorandClient\n * ```typescript\n * // Basic example\n * await accountManager.ensureFunded(\"ACCOUNTADDRESS\", \"DISPENSERADDRESS\", algokit.algo(1))\n * // With configuration\n * await accountManager.ensureFunded(\"ACCOUNTADDRESS\", \"DISPENSERADDRESS\", algokit.algo(1),\n * { minFundingIncrement: algokit.algo(2), fee: (1000).microAlgo(), suppressLog: true }\n * )\n * ```\n * @returns\n * - The result of executing the dispensing transaction and the `amountFunded` if funds were needed.\n * - `undefined` if no funds were needed.\n */\n async ensureFunded(\n accountToFund: string | Address,\n dispenserAccount: string | Address,\n minSpendingBalance: AlgoAmount,\n options?: {\n minFundingIncrement?: AlgoAmount\n } & SendParams &\n Omit<CommonTransactionParams, 'sender'>,\n ): Promise<(SendSingleTransactionResult & EnsureFundedResult) | undefined> {\n const addressToFund = getAddress(accountToFund)\n\n const amountFunded = await this._getEnsureFundedAmount(addressToFund, minSpendingBalance, options?.minFundingIncrement)\n if (!amountFunded) return undefined\n\n const result = await this._getComposer()\n .addPayment({\n ...options,\n sender: getAddress(dispenserAccount),\n receiver: addressToFund,\n amount: amountFunded,\n })\n .send(options)\n\n return {\n ...result,\n transaction: result.transactions[0],\n confirmation: result.confirmations[0],\n transactionId: result.txIds[0],\n amountFunded: amountFunded,\n }\n }\n\n /**\n * Funds a given account using a dispenser account retrieved from the environment,\n * per the `dispenserFromEnvironment` method, as a funding source such that\n * the given account has a certain amount of Algo free to spend (accounting for\n * Algo locked in minimum balance requirement).\n *\n * **Note:** requires a Node.js environment to execute.\n *\n * The dispenser account is retrieved from the account mnemonic stored in\n * process.env.DISPENSER_MNEMONIC and optionally process.env.DISPENSER_SENDER\n * if it's a rekeyed account, or against default LocalNet if no environment variables present.\n *\n * https://dev.algorand.co/concepts/smart-contracts/costs-constraints#mbr\n *\n * @param accountToFund The account to fund\n * @param minSpendingBalance The minimum balance of Algo that the account should have available to spend (i.e. on top of minimum balance requirement)\n * @param options Optional parameters to control the funding increment, transaction or execution of the transaction\n * @example Example using AlgorandClient\n * ```typescript\n * // Basic example\n * await accountManager.ensureFundedFromEnvironment(\"ACCOUNTADDRESS\", algokit.algo(1))\n * // With configuration\n * await accountManager.ensureFundedFromEnvironment(\"ACCOUNTADDRESS\", algokit.algo(1),\n * { minFundingIncrement: algokit.algo(2), fee: (1000).microAlgo(), suppressLog: true }\n * )\n * ```\n * @returns\n * - The result of executing the dispensing transaction and the `amountFunded` if funds were needed.\n * - `undefined` if no funds were needed.\n */\n async ensureFundedFromEnvironment(\n accountToFund: string | Address,\n minSpendingBalance: AlgoAmount,\n options?: {\n minFundingIncrement?: AlgoAmount\n } & SendParams &\n Omit<CommonTransactionParams, 'sender'>,\n ): Promise<(SendSingleTransactionResult & EnsureFundedResult) | undefined> {\n const addressToFund = getAddress(accountToFund)\n const dispenserAccount = await this.dispenserFromEnvironment()\n\n const amountFunded = await this._getEnsureFundedAmount(addressToFund, minSpendingBalance, options?.minFundingIncrement)\n if (!amountFunded) return undefined\n\n const result = await this._getComposer()\n .addPayment({\n ...options,\n sender: dispenserAccount,\n receiver: addressToFund,\n amount: amountFunded,\n })\n .send(options)\n\n return {\n ...result,\n transaction: result.transactions[0],\n confirmation: result.confirmations[0],\n transactionId: result.txIds[0],\n amountFunded: amountFunded,\n }\n }\n\n /**\n * Funds a given account using the TestNet Dispenser API as a funding source such that\n * the account has a certain amount of Algo free to spend (accounting for Algo locked\n * in minimum balance requirement).\n *\n * https://dev.algorand.co/concepts/smart-contracts/costs-constraints#mbr\n *\n * @param accountToFund The account to fund\n * @param dispenserClient The TestNet dispenser funding client\n * @param minSpendingBalance The minimum balance of Algo that the account should have available to spend (i.e. on top of minimum balance requirement)\n * @param options Optional parameters to control the funding increment, transaction or execution of the transaction\n * @example Example using AlgorandClient\n * ```typescript\n * // Basic example\n * await accountManager.ensureFundedFromTestNetDispenserApi(\"ACCOUNTADDRESS\", algorand.client.getTestNetDispenserFromEnvironment(), algokit.algo(1))\n * // With configuration\n * await accountManager.ensureFundedFromTestNetDispenserApi(\"ACCOUNTADDRESS\", algorand.client.getTestNetDispenserFromEnvironment(), algokit.algo(1),\n * { minFundingIncrement: algokit.algo(2) }\n * )\n * ```\n * @returns\n * - The result of executing the dispensing transaction and the `amountFunded` if funds were needed.\n * - `undefined` if no funds were needed.\n */\n async ensureFundedFromTestNetDispenserApi(\n accountToFund: string | Address,\n dispenserClient: TestNetDispenserApiClient,\n minSpendingBalance: AlgoAmount,\n options?: {\n minFundingIncrement?: AlgoAmount\n },\n ): Promise<EnsureFundedResult | undefined> {\n if (!(await this._clientManager.isTestNet())) {\n throw new Error('Attempt to fund using TestNet dispenser API on non TestNet network.')\n }\n\n const addressToFund = getAddress(accountToFund)\n\n const amountFunded = await this._getEnsureFundedAmount(addressToFund, minSpendingBalance, options?.minFundingIncrement)\n if (!amountFunded) return undefined\n\n const result = await dispenserClient.fund(addressToFund, amountFunded.microAlgo)\n return {\n amountFunded: AlgoAmount.MicroAlgo(result.amount),\n transactionId: result.txId,\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAyCA,MAAa,8BAA8B,QAAQ,SACjD,SACmB;AACnB,QAAO,QAAQ;EACf;;AAGF,IAAa,iBAAb,MAA4B;CAC1B,AAAQ;CACR,AAAQ;CACR,AAAQ,YAAiE,EAAE;CAC3E,AAAQ;;;;;;;;;CAUR,YAAY,eAA8B;AACxC,OAAK,iBAAiB;AACtB,OAAK,qBAAqB,IAAI,kBAAkB,cAAc;;CAGhE,AAAQ,aAAa,oBAAqD;AACxE,SAAO,IAAI,oBAAoB;GAC7B,OAAO,KAAK,eAAe;GAC3B,WAAW,KAAK,UAAU,KAAK,KAAK;GACpC,oBAAoB,6BAA6B,KAAK,eAAe,MAAM,iBAAiB;GAC7F,CAAC;;;;;;;;;;CAWJ,IAAW,MAAM;AACf,SAAO,KAAK;;;;;;;;;;;;;;;;;;CAmBd,AAAO,iBAAiB,QAA0E;AAChG,OAAK,iBAAiB,YAAY,SAAS,OAAO,SAAS;AAC3D,SAAO;;;;;;CAQT,AAAQ,cACN,SAIE;EACF,MAAM,SAAS,4BAA4B,QAAQ;EACnD,MAAMA,MAAoC;GACxC,MAAM,QAAQ;GACN;GACT;AACD,OAAK,UAAU,IAAI,KAAK,UAAU,IAAI;EAEtC,MAAM,qBAAqB,QAAQ,WAAW,IAAI,KAAK,UAAU,CAAC;AAClE,qBAAmB,UAAU;AAC7B,qBAAmB,OAAO,IAAI;AAC9B,qBAAmB,SAAS;AAC5B,SAAO;;;;;;;;;;;;;;;;;;;;CAqBT,AAAO,qBAAqB,SAA2E;AACrG,OAAK,cAAc,QAAQ;AAC3B,SAAO;;;;;;;;;;;;;CAcT,AAAO,UAAU,QAA0B,QAA2B;AACpE,OAAK,UAAU,WAAW,OAAO,CAAC,UAAU,IAAI;GAAE,MAAM,WAAW,OAAO;GAAE;GAAQ;AACpF,SAAO;;;;;;;;;;;;;;CAeT,AAAO,WAAW,uBAAuC,oBAAoB,MAAM;AACjF,OAAK,YAAY,oBACb;GAAE,GAAG,KAAK;GAAW,GAAG,sBAAsB;GAAW,GACzD;GAAE,GAAG,sBAAsB;GAAW,GAAG,KAAK;GAAW;AAC7D,SAAO;;;;;;;;;;;;;;;CAgBT,AAAO,UAAU,QAA4C;EAC3D,MAAM,SAAS,KAAK,UAAU,WAAW,OAAO,CAAC,UAAU,GAAG,UAAU,KAAK;AAC7E,MAAI,CAAC,OAAQ,OAAM,IAAI,MAAM,+BAA+B,SAAS;AACrE,SAAO;;;;;;;;;;;;;;;;CAiBT,AAAO,WAAW,QAAuD;EACvE,MAAM,UAAU,KAAK,UAAU,WAAW,OAAO,CAAC,UAAU;AAC5D,MAAI,CAAC,QAAS,OAAM,IAAI,MAAM,+BAA+B,SAAS;AACtE,SAAO;;;;;;;;;;;;;;;CAgBT,MAAa,eAAe,QAAsD;EAChF,MAAM,gBAAgB,WAAW,OAAO,CAAC,UAAU;EACnD,MAAM,EACJ,OACA,gBAAgB,QAChB,eAAe,QACf,SACA,GAAG,YACD,MAAM,KAAK,eAAe,MAAM,mBAAmB,cAAc;AAErE,SAAO;GACL,GAAG;GACH,UAAU,QAAQ;GAClB;GACA,SAAS,WAAW,UAAU,OAAO,QAAQ,OAAO,CAAC;GACrD,6BAA6B,WAAW,UAAU,OAAO,QAAQ,4BAA4B,CAAC;GAC9F,YAAY,WAAW,UAAU,OAAO,QAAQ,WAAW,CAAC;GAC5D,gBAAgB,WAAW,UAAU,OAAO,QAAQ,eAAe,CAAC;GACpE,SAAS,WAAW,UAAU,OAAO,QAAQ,QAAQ,CAAC;GACtD,gBAAgB,OAAO,MAAM;GAC7B,kBAAkB,OAAO,QAAQ,iBAAiB;GAClD,oBAAoB,OAAO,QAAQ,mBAAmB;GACtD,kBAAkB,OAAO,QAAQ,iBAAiB;GAClD,oBAAoB,OAAO,QAAQ,mBAAmB;GACtD,qBAAqB,QAAQ,wBAAwB,SAAY,OAAO,QAAQ,oBAAoB,GAAG;GACvG,YAAY,QAAQ,eAAe,SAAY,OAAO,QAAQ,WAAW,GAAG;GAC5E,eAAe,QAAQ,kBAAkB,SAAY,OAAO,QAAQ,cAAc,GAAG;GACrF,YAAY,QAAQ,eAAe,SAAY,OAAO,QAAQ,WAAW,GAAG;GAC5E,oBAAoB,kBAAkB,SAAY,OAAO,cAAc,GAAG;GAC1E,mBAAmB,iBAAiB,SAAY,OAAO,aAAa,GAAG;GACxE;;;;;;;;;;;;;;;CAgBH,AAAO,aAAa,gBAAwB,QAAyD;EACnG,MAAM,OAAO,iBAAiB,eAAe;EAE7C,MAAM,UAAU,KAAK,KAAK,QAAQ,SAAS,KAAK;EAEhD,MAAM,kBAAkB,2BAA2B;GACjD,eAAe,QAAQ;GACvB,gBAAgB,mBAAmB,OAAO;GAC1C,kBAAkB,OAAO,gBAAiD;AACxE,WAAO,KAAK,KAAK,SAAS,aAAa,QAAQ,UAAU;;GAE5D,CAAC;AAEF,SAAO,KAAK,cAAc,gBAAgB;;;;;;;;;;;;;;CAe5C,AAAO,QAAQ,QAA0B,SAAuC;AAC9E,SAAO,KAAK,cAAc;GAAE,MAAM,WAAW,OAAO;GAAE,QAAQ,QAAQ;GAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BjF,MAAa,gBAAgB,MAAc,UAAuB;AAChE,MAAI,CAAC,WAAW,CAAC,QAAQ,IACvB,OAAM,IAAI,MAAM,6FAA6F;EAG/G,MAAM,kBAAkB,QAAQ,IAAI,GAAG,KAAK,aAAa,CAAC;EAC1D,MAAM,SAAS,QAAQ,IAAI,GAAG,KAAK,aAAa,CAAC;AAEjD,MAAI,gBACF,QAAO,KAAK,aAAa,iBAAiB,OAAO;AAGnD,MAAI,MAAM,KAAK,eAAe,YAAY,EAAE;GAC1C,MAAM,UAAU,MAAM,KAAK,mBAAmB,yBAAyB,MAAM,SAAS;AACtF,UAAO,KAAK,cAAc,QAAQ;;AAGpC,QAAM,IAAI,MAAM,gCAAgC,KAAK,aAAa,CAAC,qCAAqC,OAAO;;;;;;;;;;;;;;;;;CAkBjH,MAAa,QACX,MAEA,WACA,QACA;EACA,MAAM,UAAU,MAAM,KAAK,mBAAmB,iBAAiB,MAAM,WAAW,OAAO;AACvF,MAAI,CAAC,QAAS,OAAM,IAAI,MAAM,8BAA8B,OAAO,YAAY,oBAAoB,KAAK;AACxG,SAAO,KAAK,cAAc,QAAQ;;;;;;;;;;;;;;CAepC,AAAO,SAAS,gBAAkC,YAAkC;AAClF,SAAO,KAAK,cAAc,IAAI,gBAAgB,gBAAgB,WAAW,CAAC;;;;;;;;;;;;;CAc5E,AAAO,SAAS,SAAqB,MAA0B;AAC7D,SAAO,KAAK,cAAc,IAAI,gBAAgB,SAAS,KAAK,CAAC;;;;;;;;;;;CAY/D,AAAO,SAAS;EACd,MAAM,UAAU,KAAK,KAAK,SAAS;EACnC,MAAM,YAAY,OAAO,gBAAiD;AACxE,UAAO,KAAK,KAAK,SAAS,aAAa,QAAQ,UAAU;;AAG3D,SAAO,KAAK,cAAc,2BAA2B;GAAE,eAAe,QAAQ;GAAW,kBAAkB;GAAW,CAAC,CAAC;;;;;;;;;;;;;;;;;;CAmB1H,MAAa,2BAA2B;AACtC,MAAI,CAAC,WAAW,CAAC,QAAQ,IACvB,OAAM,IAAI,MAAM,+FAA+F;AAGjH,SAAO,QAAQ,IAAI,GAAG,kBAAkB,aAAa,CAAC,cAClD,MAAM,KAAK,gBAAgB,kBAAkB,GAC7C,MAAM,KAAK,mBAAmB;;;;;;;;;;;CAYpC,MAAa,oBAAoB;EAC/B,MAAM,YAAY,MAAM,KAAK,mBAAmB,6BAA6B;AAC7E,SAAO,KAAK,cAAc,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCtC,MAAM,aACJ,SACA,SACA,SACsC;EACtC,MAAM,SAAS,MAAM,KAAK,cAAc,CACrC,WAAW;GACV,GAAG;GACH,QAAQ,WAAW,QAAQ;GAC3B,UAAU,WAAW,QAAQ;GAC7B,QAAQ,WAAW,UAAU,EAAE;GAC/B,SAAS,WAAW,QAAQ;GAC7B,CAAC,CACD,KAAK,QAAQ;AAGhB,MAAI,OAAO,YAAY,YAAY,UAAU,QAC3C,MAAK,QAAQ,SAAS,QAAQ;AAGhC,SAAO,UAAU,SAAS,YAAY,CAAC,KAAK,WAAW,QAAQ,MAAM,QAAQ,mBAAmB,OAAO,MAAM,GAAG,GAAG,GAAG;AAEtH,SAAO;GAAE,GAAG;GAAQ,aAAa,OAAO,aAAa,GAAG,GAAG;GAAG,cAAc,OAAO,cAAc,GAAG,GAAG;GAAG;;CAG5G,MAAc,uBAAuB,QAAiB,oBAAgC,qBAAkC;EACtH,MAAM,cAAc,MAAM,KAAK,eAAe,OAAO;EACrD,MAAM,yBAAyB,YAAY,QAAQ,YAAY,YAAY,WAAW;EAEtF,MAAM,eAAe,oBAAoB,mBAAmB,WAAW,wBAAwB,qBAAqB,aAAa,GAAG;AAEpI,SAAO,iBAAiB,OAAO,SAAY,WAAW,UAAU,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;CA2B/E,MAAM,aACJ,eACA,kBACA,oBACA,SAIyE;EACzE,MAAM,gBAAgB,WAAW,cAAc;EAE/C,MAAM,eAAe,MAAM,KAAK,uBAAuB,eAAe,oBAAoB,SAAS,oBAAoB;AACvH,MAAI,CAAC,aAAc,QAAO;EAE1B,MAAM,SAAS,MAAM,KAAK,cAAc,CACrC,WAAW;GACV,GAAG;GACH,QAAQ,WAAW,iBAAiB;GACpC,UAAU;GACV,QAAQ;GACT,CAAC,CACD,KAAK,QAAQ;AAEhB,SAAO;GACL,GAAG;GACH,aAAa,OAAO,aAAa;GACjC,cAAc,OAAO,cAAc;GACnC,eAAe,OAAO,MAAM;GACd;GACf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCH,MAAM,4BACJ,eACA,oBACA,SAIyE;EACzE,MAAM,gBAAgB,WAAW,cAAc;EAC/C,MAAM,mBAAmB,MAAM,KAAK,0BAA0B;EAE9D,MAAM,eAAe,MAAM,KAAK,uBAAuB,eAAe,oBAAoB,SAAS,oBAAoB;AACvH,MAAI,CAAC,aAAc,QAAO;EAE1B,MAAM,SAAS,MAAM,KAAK,cAAc,CACrC,WAAW;GACV,GAAG;GACH,QAAQ;GACR,UAAU;GACV,QAAQ;GACT,CAAC,CACD,KAAK,QAAQ;AAEhB,SAAO;GACL,GAAG;GACH,aAAa,OAAO,aAAa;GACjC,cAAc,OAAO,cAAc;GACnC,eAAe,OAAO,MAAM;GACd;GACf;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BH,MAAM,oCACJ,eACA,iBACA,oBACA,SAGyC;AACzC,MAAI,CAAE,MAAM,KAAK,eAAe,WAAW,CACzC,OAAM,IAAI,MAAM,sEAAsE;EAGxF,MAAM,gBAAgB,WAAW,cAAc;EAE/C,MAAM,eAAe,MAAM,KAAK,uBAAuB,eAAe,oBAAoB,SAAS,oBAAoB;AACvH,MAAI,CAAC,aAAc,QAAO;EAE1B,MAAM,SAAS,MAAM,gBAAgB,KAAK,eAAe,aAAa,UAAU;AAChF,SAAO;GACL,cAAc,WAAW,UAAU,OAAO,OAAO;GACjD,eAAe,OAAO;GACvB"}
@@ -342,13 +342,14 @@ declare class AlgorandClientTransactionCreator {
342
342
  * // Max fee doesn't make sense with extraFee AND staticFee
343
343
  * // already specified, but here for completeness
344
344
  * maxFee: (3000).microAlgo(),
345
+ * rejectVersion: 1,
345
346
  *})
346
347
  * ```
347
348
  * @returns The application create transaction
348
349
  */
349
350
  appCreate: (params: {
350
- signer?: AddressWithTransactionSigner | TransactionSigner | undefined;
351
351
  sender: SendingAddress;
352
+ signer?: AddressWithTransactionSigner | TransactionSigner | undefined;
352
353
  rekeyTo?: ReadableAddress | undefined;
353
354
  note?: string | Uint8Array | undefined;
354
355
  lease?: string | Uint8Array | undefined;
@@ -358,14 +359,15 @@ declare class AlgorandClientTransactionCreator {
358
359
  validityWindow?: number | bigint | undefined;
359
360
  firstValidRound?: bigint | undefined;
360
361
  lastValidRound?: bigint | undefined;
361
- args?: Uint8Array[] | undefined;
362
362
  onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
363
+ args?: Uint8Array[] | undefined;
363
364
  accountReferences?: ReadableAddress[] | undefined;
364
365
  appReferences?: bigint[] | undefined;
365
366
  assetReferences?: bigint[] | undefined;
366
367
  boxReferences?: (BoxReference | BoxIdentifier)[] | undefined;
367
368
  accessReferences?: ResourceReference[] | undefined;
368
369
  rejectVersion?: number | undefined;
370
+ appId?: 0 | undefined;
369
371
  approvalProgram: string | Uint8Array;
370
372
  clearStateProgram: string | Uint8Array;
371
373
  schema?: {
@@ -408,6 +410,7 @@ declare class AlgorandClientTransactionCreator {
408
410
  * // Max fee doesn't make sense with extraFee AND staticFee
409
411
  * // already specified, but here for completeness
410
412
  * maxFee: (3000).microAlgo(),
413
+ * rejectVersion: 1,
411
414
  *})
412
415
  * ```
413
416
  * @returns The application update transaction
@@ -466,6 +469,7 @@ declare class AlgorandClientTransactionCreator {
466
469
  * // Max fee doesn't make sense with extraFee AND staticFee
467
470
  * // already specified, but here for completeness
468
471
  * maxFee: (3000).microAlgo(),
472
+ * rejectVersion: 1,
469
473
  *})
470
474
  * ```
471
475
  * @returns The application delete transaction
@@ -501,6 +505,7 @@ declare class AlgorandClientTransactionCreator {
501
505
  * // Max fee doesn't make sense with extraFee AND staticFee
502
506
  * // already specified, but here for completeness
503
507
  * maxFee: (3000).microAlgo(),
508
+ * rejectVersion: 1,
504
509
  *})
505
510
  * ```
506
511
  * @returns The application call transaction
@@ -557,13 +562,15 @@ declare class AlgorandClientTransactionCreator {
557
562
  * // Max fee doesn't make sense with extraFee AND staticFee
558
563
  * // already specified, but here for completeness
559
564
  * maxFee: (3000).microAlgo(),
565
+ * rejectVersion: 1,
560
566
  *})
561
567
  * ```
562
568
  * @returns The application ABI method create transaction
563
569
  */
564
570
  appCreateMethodCall: (params: {
565
- signer?: AddressWithTransactionSigner | TransactionSigner | undefined;
571
+ appId?: 0 | undefined;
566
572
  sender: SendingAddress;
573
+ signer?: AddressWithTransactionSigner | TransactionSigner | undefined;
567
574
  rekeyTo?: ReadableAddress | undefined;
568
575
  note?: string | Uint8Array | undefined;
569
576
  lease?: string | Uint8Array | undefined;
@@ -573,9 +580,6 @@ declare class AlgorandClientTransactionCreator {
573
580
  validityWindow?: number | bigint | undefined;
574
581
  firstValidRound?: bigint | undefined;
575
582
  lastValidRound?: bigint | undefined;
576
- approvalProgram: string | Uint8Array;
577
- clearStateProgram: string | Uint8Array;
578
- extraProgramPages?: number | undefined;
579
583
  onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
580
584
  accountReferences?: ReadableAddress[] | undefined;
581
585
  appReferences?: bigint[] | undefined;
@@ -583,14 +587,17 @@ declare class AlgorandClientTransactionCreator {
583
587
  boxReferences?: (BoxReference | BoxIdentifier)[] | undefined;
584
588
  accessReferences?: ResourceReference[] | undefined;
585
589
  rejectVersion?: number | undefined;
590
+ approvalProgram: string | Uint8Array;
591
+ clearStateProgram: string | Uint8Array;
586
592
  schema?: {
587
593
  globalInts: number;
588
594
  globalByteSlices: number;
589
595
  localInts: number;
590
596
  localByteSlices: number;
591
597
  } | undefined;
598
+ extraProgramPages?: number | undefined;
592
599
  method: ABIMethod;
593
- args?: (Transaction | ABIValue | TransactionWithSigner | AppMethodCall<{
600
+ args?: (Transaction | Promise<Transaction> | ABIValue | TransactionWithSigner | AppMethodCall<{
594
601
  sender: SendingAddress;
595
602
  signer?: AddressWithTransactionSigner | TransactionSigner | undefined;
596
603
  rekeyTo?: ReadableAddress | undefined;
@@ -602,8 +609,7 @@ declare class AlgorandClientTransactionCreator {
602
609
  validityWindow?: number | bigint | undefined;
603
610
  firstValidRound?: bigint | undefined;
604
611
  lastValidRound?: bigint | undefined;
605
- appId: bigint;
606
- onComplete?: OnApplicationComplete.UpdateApplication | undefined;
612
+ onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
607
613
  args?: Uint8Array[] | undefined;
608
614
  accountReferences?: ReadableAddress[] | undefined;
609
615
  appReferences?: bigint[] | undefined;
@@ -611,11 +617,19 @@ declare class AlgorandClientTransactionCreator {
611
617
  boxReferences?: (BoxReference | BoxIdentifier)[] | undefined;
612
618
  accessReferences?: ResourceReference[] | undefined;
613
619
  rejectVersion?: number | undefined;
620
+ appId?: 0 | undefined;
614
621
  approvalProgram: string | Uint8Array;
615
622
  clearStateProgram: string | Uint8Array;
623
+ schema?: {
624
+ globalInts: number;
625
+ globalByteSlices: number;
626
+ localInts: number;
627
+ localByteSlices: number;
628
+ } | undefined;
629
+ extraProgramPages?: number | undefined;
616
630
  }> | AppMethodCall<{
617
- signer?: AddressWithTransactionSigner | TransactionSigner | undefined;
618
631
  sender: SendingAddress;
632
+ signer?: AddressWithTransactionSigner | TransactionSigner | undefined;
619
633
  rekeyTo?: ReadableAddress | undefined;
620
634
  note?: string | Uint8Array | undefined;
621
635
  lease?: string | Uint8Array | undefined;
@@ -625,8 +639,9 @@ declare class AlgorandClientTransactionCreator {
625
639
  validityWindow?: number | bigint | undefined;
626
640
  firstValidRound?: bigint | undefined;
627
641
  lastValidRound?: bigint | undefined;
642
+ appId: bigint;
643
+ onComplete?: OnApplicationComplete.UpdateApplication | undefined;
628
644
  args?: Uint8Array[] | undefined;
629
- onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
630
645
  accountReferences?: ReadableAddress[] | undefined;
631
646
  appReferences?: bigint[] | undefined;
632
647
  assetReferences?: bigint[] | undefined;
@@ -635,14 +650,7 @@ declare class AlgorandClientTransactionCreator {
635
650
  rejectVersion?: number | undefined;
636
651
  approvalProgram: string | Uint8Array;
637
652
  clearStateProgram: string | Uint8Array;
638
- schema?: {
639
- globalInts: number;
640
- globalByteSlices: number;
641
- localInts: number;
642
- localByteSlices: number;
643
- } | undefined;
644
- extraProgramPages?: number | undefined;
645
- }> | Promise<Transaction> | AppMethodCall<AppMethodCallParams> | undefined)[] | undefined;
653
+ }> | AppMethodCall<AppMethodCallParams> | undefined)[] | undefined;
646
654
  }) => Promise<Expand<BuiltTransactions>>;
647
655
  /** Create an application update call with ABI method call transaction.
648
656
  *
@@ -688,13 +696,15 @@ declare class AlgorandClientTransactionCreator {
688
696
  * // Max fee doesn't make sense with extraFee AND staticFee
689
697
  * // already specified, but here for completeness
690
698
  * maxFee: (3000).microAlgo(),
699
+ * rejectVersion: 1,
691
700
  *})
692
701
  * ```
693
702
  * @returns The application ABI method update transaction
694
703
  */
695
704
  appUpdateMethodCall: (params: {
696
- signer?: AddressWithTransactionSigner | TransactionSigner | undefined;
705
+ appId: bigint;
697
706
  sender: SendingAddress;
707
+ signer?: AddressWithTransactionSigner | TransactionSigner | undefined;
698
708
  rekeyTo?: ReadableAddress | undefined;
699
709
  note?: string | Uint8Array | undefined;
700
710
  lease?: string | Uint8Array | undefined;
@@ -704,9 +714,6 @@ declare class AlgorandClientTransactionCreator {
704
714
  validityWindow?: number | bigint | undefined;
705
715
  firstValidRound?: bigint | undefined;
706
716
  lastValidRound?: bigint | undefined;
707
- appId: bigint;
708
- approvalProgram: string | Uint8Array;
709
- clearStateProgram: string | Uint8Array;
710
717
  onComplete?: OnApplicationComplete.UpdateApplication | undefined;
711
718
  accountReferences?: ReadableAddress[] | undefined;
712
719
  appReferences?: bigint[] | undefined;
@@ -714,8 +721,10 @@ declare class AlgorandClientTransactionCreator {
714
721
  boxReferences?: (BoxReference | BoxIdentifier)[] | undefined;
715
722
  accessReferences?: ResourceReference[] | undefined;
716
723
  rejectVersion?: number | undefined;
724
+ approvalProgram: string | Uint8Array;
725
+ clearStateProgram: string | Uint8Array;
717
726
  method: ABIMethod;
718
- args?: (Transaction | ABIValue | TransactionWithSigner | AppMethodCall<{
727
+ args?: (Transaction | Promise<Transaction> | ABIValue | TransactionWithSigner | AppMethodCall<{
719
728
  sender: SendingAddress;
720
729
  signer?: AddressWithTransactionSigner | TransactionSigner | undefined;
721
730
  rekeyTo?: ReadableAddress | undefined;
@@ -727,8 +736,7 @@ declare class AlgorandClientTransactionCreator {
727
736
  validityWindow?: number | bigint | undefined;
728
737
  firstValidRound?: bigint | undefined;
729
738
  lastValidRound?: bigint | undefined;
730
- appId: bigint;
731
- onComplete?: OnApplicationComplete.UpdateApplication | undefined;
739
+ onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
732
740
  args?: Uint8Array[] | undefined;
733
741
  accountReferences?: ReadableAddress[] | undefined;
734
742
  appReferences?: bigint[] | undefined;
@@ -736,11 +744,19 @@ declare class AlgorandClientTransactionCreator {
736
744
  boxReferences?: (BoxReference | BoxIdentifier)[] | undefined;
737
745
  accessReferences?: ResourceReference[] | undefined;
738
746
  rejectVersion?: number | undefined;
747
+ appId?: 0 | undefined;
739
748
  approvalProgram: string | Uint8Array;
740
749
  clearStateProgram: string | Uint8Array;
750
+ schema?: {
751
+ globalInts: number;
752
+ globalByteSlices: number;
753
+ localInts: number;
754
+ localByteSlices: number;
755
+ } | undefined;
756
+ extraProgramPages?: number | undefined;
741
757
  }> | AppMethodCall<{
742
- signer?: AddressWithTransactionSigner | TransactionSigner | undefined;
743
758
  sender: SendingAddress;
759
+ signer?: AddressWithTransactionSigner | TransactionSigner | undefined;
744
760
  rekeyTo?: ReadableAddress | undefined;
745
761
  note?: string | Uint8Array | undefined;
746
762
  lease?: string | Uint8Array | undefined;
@@ -750,8 +766,9 @@ declare class AlgorandClientTransactionCreator {
750
766
  validityWindow?: number | bigint | undefined;
751
767
  firstValidRound?: bigint | undefined;
752
768
  lastValidRound?: bigint | undefined;
769
+ appId: bigint;
770
+ onComplete?: OnApplicationComplete.UpdateApplication | undefined;
753
771
  args?: Uint8Array[] | undefined;
754
- onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
755
772
  accountReferences?: ReadableAddress[] | undefined;
756
773
  appReferences?: bigint[] | undefined;
757
774
  assetReferences?: bigint[] | undefined;
@@ -760,14 +777,7 @@ declare class AlgorandClientTransactionCreator {
760
777
  rejectVersion?: number | undefined;
761
778
  approvalProgram: string | Uint8Array;
762
779
  clearStateProgram: string | Uint8Array;
763
- schema?: {
764
- globalInts: number;
765
- globalByteSlices: number;
766
- localInts: number;
767
- localByteSlices: number;
768
- } | undefined;
769
- extraProgramPages?: number | undefined;
770
- }> | Promise<Transaction> | AppMethodCall<AppMethodCallParams> | undefined)[] | undefined;
780
+ }> | AppMethodCall<AppMethodCallParams> | undefined)[] | undefined;
771
781
  }) => Promise<Expand<BuiltTransactions>>;
772
782
  /** Create an application delete call with ABI method call transaction.
773
783
  *
@@ -811,13 +821,15 @@ declare class AlgorandClientTransactionCreator {
811
821
  * // Max fee doesn't make sense with extraFee AND staticFee
812
822
  * // already specified, but here for completeness
813
823
  * maxFee: (3000).microAlgo(),
824
+ * rejectVersion: 1,
814
825
  *})
815
826
  * ```
816
827
  * @returns The application ABI method delete transaction
817
828
  */
818
829
  appDeleteMethodCall: (params: {
819
- signer?: AddressWithTransactionSigner | TransactionSigner | undefined;
830
+ appId: bigint;
820
831
  sender: SendingAddress;
832
+ signer?: AddressWithTransactionSigner | TransactionSigner | undefined;
821
833
  rekeyTo?: ReadableAddress | undefined;
822
834
  note?: string | Uint8Array | undefined;
823
835
  lease?: string | Uint8Array | undefined;
@@ -827,7 +839,6 @@ declare class AlgorandClientTransactionCreator {
827
839
  validityWindow?: number | bigint | undefined;
828
840
  firstValidRound?: bigint | undefined;
829
841
  lastValidRound?: bigint | undefined;
830
- appId: bigint;
831
842
  onComplete?: OnApplicationComplete.DeleteApplication | undefined;
832
843
  accountReferences?: ReadableAddress[] | undefined;
833
844
  appReferences?: bigint[] | undefined;
@@ -836,7 +847,7 @@ declare class AlgorandClientTransactionCreator {
836
847
  accessReferences?: ResourceReference[] | undefined;
837
848
  rejectVersion?: number | undefined;
838
849
  method: ABIMethod;
839
- args?: (Transaction | ABIValue | TransactionWithSigner | AppMethodCall<{
850
+ args?: (Transaction | Promise<Transaction> | ABIValue | TransactionWithSigner | AppMethodCall<{
840
851
  sender: SendingAddress;
841
852
  signer?: AddressWithTransactionSigner | TransactionSigner | undefined;
842
853
  rekeyTo?: ReadableAddress | undefined;
@@ -848,8 +859,7 @@ declare class AlgorandClientTransactionCreator {
848
859
  validityWindow?: number | bigint | undefined;
849
860
  firstValidRound?: bigint | undefined;
850
861
  lastValidRound?: bigint | undefined;
851
- appId: bigint;
852
- onComplete?: OnApplicationComplete.UpdateApplication | undefined;
862
+ onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
853
863
  args?: Uint8Array[] | undefined;
854
864
  accountReferences?: ReadableAddress[] | undefined;
855
865
  appReferences?: bigint[] | undefined;
@@ -857,11 +867,19 @@ declare class AlgorandClientTransactionCreator {
857
867
  boxReferences?: (BoxReference | BoxIdentifier)[] | undefined;
858
868
  accessReferences?: ResourceReference[] | undefined;
859
869
  rejectVersion?: number | undefined;
870
+ appId?: 0 | undefined;
860
871
  approvalProgram: string | Uint8Array;
861
872
  clearStateProgram: string | Uint8Array;
873
+ schema?: {
874
+ globalInts: number;
875
+ globalByteSlices: number;
876
+ localInts: number;
877
+ localByteSlices: number;
878
+ } | undefined;
879
+ extraProgramPages?: number | undefined;
862
880
  }> | AppMethodCall<{
863
- signer?: AddressWithTransactionSigner | TransactionSigner | undefined;
864
881
  sender: SendingAddress;
882
+ signer?: AddressWithTransactionSigner | TransactionSigner | undefined;
865
883
  rekeyTo?: ReadableAddress | undefined;
866
884
  note?: string | Uint8Array | undefined;
867
885
  lease?: string | Uint8Array | undefined;
@@ -871,8 +889,9 @@ declare class AlgorandClientTransactionCreator {
871
889
  validityWindow?: number | bigint | undefined;
872
890
  firstValidRound?: bigint | undefined;
873
891
  lastValidRound?: bigint | undefined;
892
+ appId: bigint;
893
+ onComplete?: OnApplicationComplete.UpdateApplication | undefined;
874
894
  args?: Uint8Array[] | undefined;
875
- onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
876
895
  accountReferences?: ReadableAddress[] | undefined;
877
896
  appReferences?: bigint[] | undefined;
878
897
  assetReferences?: bigint[] | undefined;
@@ -881,14 +900,7 @@ declare class AlgorandClientTransactionCreator {
881
900
  rejectVersion?: number | undefined;
882
901
  approvalProgram: string | Uint8Array;
883
902
  clearStateProgram: string | Uint8Array;
884
- schema?: {
885
- globalInts: number;
886
- globalByteSlices: number;
887
- localInts: number;
888
- localByteSlices: number;
889
- } | undefined;
890
- extraProgramPages?: number | undefined;
891
- }> | Promise<Transaction> | AppMethodCall<AppMethodCallParams> | undefined)[] | undefined;
903
+ }> | AppMethodCall<AppMethodCallParams> | undefined)[] | undefined;
892
904
  }) => Promise<Expand<BuiltTransactions>>;
893
905
  /** Create an application call with ABI method call transaction.
894
906
  *
@@ -932,13 +944,15 @@ declare class AlgorandClientTransactionCreator {
932
944
  * // Max fee doesn't make sense with extraFee AND staticFee
933
945
  * // already specified, but here for completeness
934
946
  * maxFee: (3000).microAlgo(),
947
+ * rejectVersion: 1,
935
948
  *})
936
949
  * ```
937
950
  * @returns The application ABI method call transaction
938
951
  */
939
952
  appCallMethodCall: (params: {
940
- signer?: AddressWithTransactionSigner | TransactionSigner | undefined;
953
+ appId: bigint;
941
954
  sender: SendingAddress;
955
+ signer?: AddressWithTransactionSigner | TransactionSigner | undefined;
942
956
  rekeyTo?: ReadableAddress | undefined;
943
957
  note?: string | Uint8Array | undefined;
944
958
  lease?: string | Uint8Array | undefined;
@@ -948,7 +962,6 @@ declare class AlgorandClientTransactionCreator {
948
962
  validityWindow?: number | bigint | undefined;
949
963
  firstValidRound?: bigint | undefined;
950
964
  lastValidRound?: bigint | undefined;
951
- appId: bigint;
952
965
  onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.DeleteApplication | undefined;
953
966
  accountReferences?: ReadableAddress[] | undefined;
954
967
  appReferences?: bigint[] | undefined;
@@ -957,7 +970,7 @@ declare class AlgorandClientTransactionCreator {
957
970
  accessReferences?: ResourceReference[] | undefined;
958
971
  rejectVersion?: number | undefined;
959
972
  method: ABIMethod;
960
- args?: (Transaction | ABIValue | TransactionWithSigner | AppMethodCall<{
973
+ args?: (Transaction | Promise<Transaction> | ABIValue | TransactionWithSigner | AppMethodCall<{
961
974
  sender: SendingAddress;
962
975
  signer?: AddressWithTransactionSigner | TransactionSigner | undefined;
963
976
  rekeyTo?: ReadableAddress | undefined;
@@ -969,8 +982,7 @@ declare class AlgorandClientTransactionCreator {
969
982
  validityWindow?: number | bigint | undefined;
970
983
  firstValidRound?: bigint | undefined;
971
984
  lastValidRound?: bigint | undefined;
972
- appId: bigint;
973
- onComplete?: OnApplicationComplete.UpdateApplication | undefined;
985
+ onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
974
986
  args?: Uint8Array[] | undefined;
975
987
  accountReferences?: ReadableAddress[] | undefined;
976
988
  appReferences?: bigint[] | undefined;
@@ -978,11 +990,19 @@ declare class AlgorandClientTransactionCreator {
978
990
  boxReferences?: (BoxReference | BoxIdentifier)[] | undefined;
979
991
  accessReferences?: ResourceReference[] | undefined;
980
992
  rejectVersion?: number | undefined;
993
+ appId?: 0 | undefined;
981
994
  approvalProgram: string | Uint8Array;
982
995
  clearStateProgram: string | Uint8Array;
996
+ schema?: {
997
+ globalInts: number;
998
+ globalByteSlices: number;
999
+ localInts: number;
1000
+ localByteSlices: number;
1001
+ } | undefined;
1002
+ extraProgramPages?: number | undefined;
983
1003
  }> | AppMethodCall<{
984
- signer?: AddressWithTransactionSigner | TransactionSigner | undefined;
985
1004
  sender: SendingAddress;
1005
+ signer?: AddressWithTransactionSigner | TransactionSigner | undefined;
986
1006
  rekeyTo?: ReadableAddress | undefined;
987
1007
  note?: string | Uint8Array | undefined;
988
1008
  lease?: string | Uint8Array | undefined;
@@ -992,8 +1012,9 @@ declare class AlgorandClientTransactionCreator {
992
1012
  validityWindow?: number | bigint | undefined;
993
1013
  firstValidRound?: bigint | undefined;
994
1014
  lastValidRound?: bigint | undefined;
1015
+ appId: bigint;
1016
+ onComplete?: OnApplicationComplete.UpdateApplication | undefined;
995
1017
  args?: Uint8Array[] | undefined;
996
- onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
997
1018
  accountReferences?: ReadableAddress[] | undefined;
998
1019
  appReferences?: bigint[] | undefined;
999
1020
  assetReferences?: bigint[] | undefined;
@@ -1002,14 +1023,7 @@ declare class AlgorandClientTransactionCreator {
1002
1023
  rejectVersion?: number | undefined;
1003
1024
  approvalProgram: string | Uint8Array;
1004
1025
  clearStateProgram: string | Uint8Array;
1005
- schema?: {
1006
- globalInts: number;
1007
- globalByteSlices: number;
1008
- localInts: number;
1009
- localByteSlices: number;
1010
- } | undefined;
1011
- extraProgramPages?: number | undefined;
1012
- }> | Promise<Transaction> | AppMethodCall<AppMethodCallParams> | undefined)[] | undefined;
1026
+ }> | AppMethodCall<AppMethodCallParams> | undefined)[] | undefined;
1013
1027
  }) => Promise<Expand<BuiltTransactions>>;
1014
1028
  /**
1015
1029
  * Create an online key registration transaction.