From 597c188f6a8573cc28749259b85039906555e42b Mon Sep 17 00:00:00 2001 From: "Ryan R. Fox" Date: Tue, 26 Sep 2023 16:01:20 -0400 Subject: [PATCH] add libraries content with highlevel navigation --- docs/get-details/algokit/.pages | 1 + docs/get-details/algokit/libraries/.pages | 5 + docs/get-details/algokit/libraries/py/.pages | 3 + .../algokit/libraries/py/algokit-utils/.pages | 3 + .../py/algokit-utils/capabilities/account.md | 31 + .../algokit-utils/capabilities/app-client.md | 149 ++ .../algokit-utils/capabilities/app-deploy.md | 119 + .../py/algokit-utils/capabilities/client.md | 30 + .../py/algokit-utils/capabilities/transfer.md | 39 + .../py/algokit-utils/images/lifecycle.jpg | Bin 0 -> 124635 bytes .../libraries/py/algokit-utils/index.md | 95 + .../algokit/libraries/py/client-generator.md | 100 + docs/get-details/algokit/libraries/ts/.pages | 3 + .../algokit/libraries/ts/algokit-utils/.pages | 3 + .../ts/algokit-utils/capabilities/account.md | 40 + .../ts/algokit-utils/capabilities/amount.md | 43 + .../algokit-utils/capabilities/app-client.md | 217 ++ .../algokit-utils/capabilities/app-deploy.md | 160 ++ .../ts/algokit-utils/capabilities/app.md | 158 ++ .../ts/algokit-utils/capabilities/client.md | 43 + .../ts/algokit-utils/capabilities/indexer.md | 72 + .../ts/algokit-utils/capabilities/testing.md | 204 ++ .../algokit-utils/capabilities/transaction.md | 95 + .../ts/algokit-utils/capabilities/transfer.md | 37 + .../libraries/ts/algokit-utils/code/README.md | 27 + .../code/classes/testing.TestLogger.md | 269 ++ .../code/classes/testing.TransactionLogger.md | 145 + .../classes/types_account.MultisigAccount.md | 174 ++ .../classes/types_account.SigningAccount.md | 149 ++ ...ient_with_retry.AlgoHttpClientWithRetry.md | 196 ++ .../code/classes/types_amount.AlgoAmount.md | 163 ++ .../types_app_client.ApplicationClient.md | 796 ++++++ .../classes/types_config.UpdatableConfig.md | 156 ++ .../classes/types_logic_error.LogicError.md | 242 ++ ...enBaseHTTPClient.URLTokenBaseHTTPClient.md | 255 ++ .../code/enums/types_app.OnSchemaBreak.md | 51 + .../code/enums/types_app.OnUpdate.md | 64 + .../code/enums/types_indexer.AccountStatus.md | 51 + .../types_indexer.ApplicationOnComplete.md | 78 + .../code/enums/types_indexer.SignatureType.md | 51 + .../interfaces/types_account.AccountConfig.md | 66 + .../types_account.TransactionSignerAccount.md | 34 + .../interfaces/types_app.AppCallParams.md | 216 ++ .../types_app.AppCallTransactionResult.md | 104 + ...ypes_app.AppCallTransactionResultOfType.md | 110 + .../types_app.AppCompilationResult.md | 38 + .../interfaces/types_app.AppDeployMetadata.md | 70 + .../types_app.AppDeploymentParams.md | 288 ++ .../code/interfaces/types_app.AppLookup.md | 34 + .../code/interfaces/types_app.AppMetadata.md | 174 ++ .../code/interfaces/types_app.AppReference.md | 44 + .../code/interfaces/types_app.AppState.md | 11 + .../interfaces/types_app.AppStorageSchema.md | 77 + .../code/interfaces/types_app.BoxName.md | 51 + .../code/interfaces/types_app.BoxReference.md | 38 + .../types_app.BoxValueRequestParams.md | 51 + .../types_app.BoxValuesRequestParams.md | 51 + .../code/interfaces/types_app.CompiledTeal.md | 77 + .../interfaces/types_app.CoreAppCallArgs.md | 83 + .../interfaces/types_app.CreateAppParams.md | 266 ++ .../interfaces/types_app.RawAppCallArgs.md | 131 + .../types_app.TealTemplateParams.md | 13 + .../interfaces/types_app.UpdateAppParams.md | 253 ++ .../types_app_client.AppClientCallABIArgs.md | 131 + ...ypes_app_client.AppClientCallCoreParams.md | 51 + .../types_app_client.AppClientCallRawArgs.md | 137 + ...s_app_client.AppClientCompilationParams.md | 45 + ...ient.AppClientDeployCallInterfaceParams.md | 83 + ...es_app_client.AppClientDeployCoreParams.md | 111 + .../types_app_client.AppClientDeployParams.md | 226 ++ .../types_app_client.AppSourceMaps.md | 38 + .../types_app_client.FundAppAccountParams.md | 62 + .../types_app_client.ResolveAppById.md | 65 + .../types_app_client.ResolveAppByIdBase.md | 44 + .../types_app_client.SourceMapExport.md | 54 + .../interfaces/types_app_spec.AppSources.md | 38 + .../code/interfaces/types_app_spec.AppSpec.md | 90 + .../interfaces/types_app_spec.CallConfig.md | 77 + .../types_app_spec.DeclaredSchemaValueSpec.md | 64 + .../code/interfaces/types_app_spec.Hint.md | 58 + .../types_app_spec.ReservedSchemaValueSpec.md | 51 + .../code/interfaces/types_app_spec.Schema.md | 38 + .../interfaces/types_app_spec.SchemaSpec.md | 38 + .../types_app_spec.StateSchemaSpec.md | 38 + .../code/interfaces/types_app_spec.Struct.md | 38 + .../code/interfaces/types_config.Config.md | 38 + .../types_indexer.AccountLookupResult.md | 38 + .../types_indexer.AccountParticipation.md | 96 + .../interfaces/types_indexer.AccountResult.md | 370 +++ .../interfaces/types_indexer.AppLocalState.md | 90 + ..._indexer.ApplicationCreatedLookupResult.md | 51 + .../types_indexer.ApplicationLookupResult.md | 38 + .../types_indexer.ApplicationParams.md | 115 + .../types_indexer.ApplicationResult.md | 67 + ...es_indexer.ApplicationTransactionResult.md | 193 ++ ...es_indexer.AssetConfigTransactionResult.md | 41 + ...es_indexer.AssetFreezeTransactionResult.md | 51 + .../interfaces/types_indexer.AssetHolding.md | 90 + .../types_indexer.AssetLookupResult.md | 38 + .../interfaces/types_indexer.AssetParams.md | 218 ++ .../interfaces/types_indexer.AssetResult.md | 77 + ..._indexer.AssetTransferTransactionResult.md | 90 + ...types_indexer.AssetsCreatedLookupResult.md | 51 + .../types_indexer.AssetsLookupResult.md | 51 + .../interfaces/types_indexer.EvalDelta.md | 51 + ...ndexer.KeyRegistrationTransactionResult.md | 109 + ...types_indexer.LogicTransactionSignature.md | 74 + ...es_indexer.MultisigTransactionSignature.md | 51 + ...indexer.MultisigTransactionSubSignature.md | 42 + .../types_indexer.PaymentTransactionResult.md | 64 + .../interfaces/types_indexer.StateSchema.md | 43 + .../types_indexer.TransactionLookupResult.md | 38 + .../types_indexer.TransactionResult.md | 467 ++++ .../types_indexer.TransactionSearchResults.md | 51 + .../types_indexer.TransactionSignature.md | 53 + .../types_logic_error.LogicErrorDetails.md | 77 + .../types_network_client.AlgoClientConfig.md | 51 + .../types_network_client.AlgoConfig.md | 51 + .../types_testing.AlgoKitLogCaptureFixture.md | 72 + .../types_testing.AlgorandFixture.md | 62 + .../types_testing.AlgorandFixtureConfig.md | 64 + ...s_testing.AlgorandTestAutomationContext.md | 152 ++ .../types_testing.GetTestAccountParams.md | 38 + .../types_testing.LogSnapshotConfig.md | 53 + ...saction.AtomicTransactionComposerToSend.md | 38 + ..._transaction.ConfirmedTransactionResult.md | 52 + ...transaction.ConfirmedTransactionResults.md | 88 + ...on.SendAtomicTransactionComposerResults.md | 92 + ...types_transaction.SendTransactionParams.md | 114 + ...types_transaction.SendTransactionResult.md | 48 + ...ypes_transaction.SendTransactionResults.md | 49 + ...ypes_transaction.TransactionGroupToSend.md | 54 + .../types_transaction.TransactionToSign.md | 38 + .../types_transfer.AlgoTransferParams.md | 203 ++ .../types_transfer.EnsureFundedParams.md | 216 ++ ...urlTokenBaseHTTPClient.AlgodTokenHeader.md | 21 + ...rlTokenBaseHTTPClient.CustomTokenHeader.md | 9 + ...lTokenBaseHTTPClient.IndexerTokenHeader.md | 21 + ...s_urlTokenBaseHTTPClient.KMDTokenHeader.md | 21 + .../ts/algokit-utils/code/modules/index.md | 2322 +++++++++++++++++ .../ts/algokit-utils/code/modules/testing.md | 194 ++ .../code/modules/types_account.md | 31 + .../types_algo_http_client_with_retry.md | 9 + .../code/modules/types_amount.md | 9 + .../code/modules/types_amount_spec.md | 3 + .../algokit-utils/code/modules/types_app.md | 197 ++ .../code/modules/types_app_client.md | 237 ++ .../code/modules/types_app_client_spec.md | 3 + .../code/modules/types_app_spec.md | 136 + .../code/modules/types_config.md | 13 + .../code/modules/types_indexer.md | 43 + .../code/modules/types_logging.md | 60 + .../code/modules/types_logic_error.md | 13 + .../code/modules/types_network_client.md | 10 + .../code/modules/types_testing.md | 14 + .../code/modules/types_transaction.md | 76 + .../code/modules/types_transfer.md | 10 + .../modules/types_urlTokenBaseHTTPClient.md | 30 + .../libraries/ts/algokit-utils/index.md | 148 ++ .../algokit/libraries/ts/client-generator.md | 81 + scripts/algokit-libraries.sh | 49 + 161 files changed, 16592 insertions(+) create mode 100644 docs/get-details/algokit/libraries/.pages create mode 100644 docs/get-details/algokit/libraries/py/.pages create mode 100644 docs/get-details/algokit/libraries/py/algokit-utils/.pages create mode 100644 docs/get-details/algokit/libraries/py/algokit-utils/capabilities/account.md create mode 100644 docs/get-details/algokit/libraries/py/algokit-utils/capabilities/app-client.md create mode 100644 docs/get-details/algokit/libraries/py/algokit-utils/capabilities/app-deploy.md create mode 100644 docs/get-details/algokit/libraries/py/algokit-utils/capabilities/client.md create mode 100644 docs/get-details/algokit/libraries/py/algokit-utils/capabilities/transfer.md create mode 100644 docs/get-details/algokit/libraries/py/algokit-utils/images/lifecycle.jpg create mode 100644 docs/get-details/algokit/libraries/py/algokit-utils/index.md create mode 100644 docs/get-details/algokit/libraries/py/client-generator.md create mode 100644 docs/get-details/algokit/libraries/ts/.pages create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/.pages create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/account.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/amount.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/app-client.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/app-deploy.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/app.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/client.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/indexer.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/testing.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/transaction.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/transfer.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/README.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/testing.TestLogger.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/testing.TransactionLogger.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_account.MultisigAccount.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_account.SigningAccount.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_amount.AlgoAmount.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_app_client.ApplicationClient.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_config.UpdatableConfig.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_logic_error.LogicError.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_urlTokenBaseHTTPClient.URLTokenBaseHTTPClient.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/enums/types_app.OnSchemaBreak.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/enums/types_app.OnUpdate.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/enums/types_indexer.AccountStatus.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/enums/types_indexer.ApplicationOnComplete.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/enums/types_indexer.SignatureType.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_account.AccountConfig.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_account.TransactionSignerAccount.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppCallParams.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppCallTransactionResult.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppCallTransactionResultOfType.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppCompilationResult.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppDeployMetadata.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppDeploymentParams.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppLookup.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppMetadata.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppReference.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppState.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppStorageSchema.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.BoxName.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.BoxReference.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.BoxValueRequestParams.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.BoxValuesRequestParams.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.CompiledTeal.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.CoreAppCallArgs.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.CreateAppParams.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.RawAppCallArgs.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.TealTemplateParams.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.UpdateAppParams.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientCallABIArgs.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientCallCoreParams.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientCallRawArgs.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientCompilationParams.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientDeployCallInterfaceParams.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientDeployCoreParams.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientDeployParams.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppSourceMaps.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.FundAppAccountParams.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.ResolveAppById.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.ResolveAppByIdBase.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.SourceMapExport.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.AppSources.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.AppSpec.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.CallConfig.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.DeclaredSchemaValueSpec.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.Hint.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.ReservedSchemaValueSpec.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.Schema.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.SchemaSpec.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.StateSchemaSpec.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.Struct.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_config.Config.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AccountLookupResult.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AccountParticipation.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AccountResult.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AppLocalState.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.ApplicationCreatedLookupResult.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.ApplicationLookupResult.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.ApplicationParams.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.ApplicationResult.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.ApplicationTransactionResult.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetConfigTransactionResult.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetFreezeTransactionResult.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetHolding.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetLookupResult.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetParams.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetResult.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetTransferTransactionResult.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetsCreatedLookupResult.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetsLookupResult.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.EvalDelta.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.KeyRegistrationTransactionResult.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.LogicTransactionSignature.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.MultisigTransactionSignature.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.MultisigTransactionSubSignature.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.PaymentTransactionResult.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.StateSchema.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.TransactionLookupResult.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.TransactionResult.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.TransactionSearchResults.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.TransactionSignature.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_logic_error.LogicErrorDetails.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_network_client.AlgoClientConfig.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_network_client.AlgoConfig.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_testing.AlgoKitLogCaptureFixture.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_testing.AlgorandFixture.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_testing.AlgorandFixtureConfig.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_testing.AlgorandTestAutomationContext.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_testing.GetTestAccountParams.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_testing.LogSnapshotConfig.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.AtomicTransactionComposerToSend.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.ConfirmedTransactionResult.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.ConfirmedTransactionResults.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.SendAtomicTransactionComposerResults.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.SendTransactionParams.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.SendTransactionResult.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.SendTransactionResults.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.TransactionGroupToSend.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.TransactionToSign.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transfer.AlgoTransferParams.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transfer.EnsureFundedParams.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_urlTokenBaseHTTPClient.AlgodTokenHeader.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_urlTokenBaseHTTPClient.CustomTokenHeader.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_urlTokenBaseHTTPClient.IndexerTokenHeader.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_urlTokenBaseHTTPClient.KMDTokenHeader.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/index.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/testing.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_account.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_algo_http_client_with_retry.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_amount.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_amount_spec.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_app.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_app_client.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_app_client_spec.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_app_spec.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_config.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_indexer.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_logging.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_logic_error.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_network_client.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_testing.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_transaction.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_transfer.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_urlTokenBaseHTTPClient.md create mode 100644 docs/get-details/algokit/libraries/ts/algokit-utils/index.md create mode 100644 docs/get-details/algokit/libraries/ts/client-generator.md create mode 100644 scripts/algokit-libraries.sh diff --git a/docs/get-details/algokit/.pages b/docs/get-details/algokit/.pages index e4ee6efda..fe5531c86 100644 --- a/docs/get-details/algokit/.pages +++ b/docs/get-details/algokit/.pages @@ -3,6 +3,7 @@ title: AlgoKit arrange: - index.md - features +- libraries - cli-reference.md - tutorials - architecture-decisions diff --git a/docs/get-details/algokit/libraries/.pages b/docs/get-details/algokit/libraries/.pages new file mode 100644 index 000000000..f2fac13ba --- /dev/null +++ b/docs/get-details/algokit/libraries/.pages @@ -0,0 +1,5 @@ +title: Libraries + +arrange: +- ts +- py diff --git a/docs/get-details/algokit/libraries/py/.pages b/docs/get-details/algokit/libraries/py/.pages new file mode 100644 index 000000000..0648ab091 --- /dev/null +++ b/docs/get-details/algokit/libraries/py/.pages @@ -0,0 +1,3 @@ +title: for Python + + diff --git a/docs/get-details/algokit/libraries/py/algokit-utils/.pages b/docs/get-details/algokit/libraries/py/algokit-utils/.pages new file mode 100644 index 000000000..417abbda2 --- /dev/null +++ b/docs/get-details/algokit/libraries/py/algokit-utils/.pages @@ -0,0 +1,3 @@ +title: algokit-utils + + diff --git a/docs/get-details/algokit/libraries/py/algokit-utils/capabilities/account.md b/docs/get-details/algokit/libraries/py/algokit-utils/capabilities/account.md new file mode 100644 index 000000000..d0c2b42fa --- /dev/null +++ b/docs/get-details/algokit/libraries/py/algokit-utils/capabilities/account.md @@ -0,0 +1,31 @@ +# Account management + +Account management is one of the core capabilities provided by AlgoKit Utils. It allows you to create mnemonic, idempotent KMD and environment variable injected accounts +that can be used to sign transactions as well as representing a sender address at the same time. + +(account)= +## `Account` + +Encapsulates a private key with convenience properties for `address`, `signer` and `public_key`. + +There are various methods of obtaining an `Account` instance + +* `get_account`: Returns an `Account` instance with the private key loaded by convention based on the given name identifier: + * from an environment variable containing a mnemonic `{NAME}_MNEMONIC` OR + * loading the account from KMD ny name if it exists (LocalNet only) OR + * creating the account in KMD with associated name (LocalNet only) + + This allows you to have powerful code that will automatically create and fund an account by name locally and when deployed against + TestNet/MainNet will automatically resolve from environment variables + +* `Account.new_account`: Returns a new `Account` using `algosdk.account.generate_account()` +* `Account(private_key)`: Load an existing account from a private key +* `Account(private_key, address)`: Load an existing account from a private key and address, useful for re-keyed accounts +* `get_account_from_mnemonic`: Load an existing account from a mnemonic +* `get_dispenser_account`: Gets a dispenser account that is funded by either: + * Using the LocalNet default account (LocalNet only) OR + * Loading an account from `DISPENSER_MNEMONIC` + +If working with a LocalNet instance, there are some additional functions that rely on a KMD service being exposed: +* `create_kmd_wallet_account`, `get_kmd_wallet_account` or `get_or_create_kmd_wallet_account`: These functions allow retrieving a KMD wallet account by name, +* `get_localnet_default_account`: Gets default localnet account that is funded with algos diff --git a/docs/get-details/algokit/libraries/py/algokit-utils/capabilities/app-client.md b/docs/get-details/algokit/libraries/py/algokit-utils/capabilities/app-client.md new file mode 100644 index 000000000..6db51d972 --- /dev/null +++ b/docs/get-details/algokit/libraries/py/algokit-utils/capabilities/app-client.md @@ -0,0 +1,149 @@ +# App client + +Application client that works with ARC-0032 application spec defined smart contracts (e.g. via Beaker). + +App client is a high productivity application client that works with ARC-0032 application spec defined smart contracts, which you can use to create, update, delete, deploy and call a smart contract and access state data for it. + +To see some usage examples check out the [automated tests](https://github.com/algorandfoundation/algokit-utils-py/blob/main/tests/test_app_client_call.py). + +## Design + +The design for the app client is based on a wrapper for parsing an [ARC-0032](https://github.com/algorandfoundation/ARCs/pull/150) application spec and wrapping the [App deployment](./app-deploy.md) functionality and corresponding [design](./app-deploy.md#design). + +## Creating an application client + +There are two key ways of instantiating an ApplicationClient: + +1. By app ID - When needing to call an existing app by app ID or unconditionally create a new app. +The signature `ApplicationClient(algod_client, app_spec, app_id=..., ...)` requires: + * `algod_client`: An `AlgodClient` + * `app_spec`: An `ApplicationSpecification` + * `app_id`: The app_id of an existing application, or 0 if creating a new app + +2. By creator and app name - When needing to deploy or find an app associated with a specific creator account and app name. +The signature `ApplicationClient(algod_client, app_spec, creator=..., indexer=..., app_lookup)` requires: + * `algod_client`: An `AlgodClient` + * `app_spec`: An `ApplicationSpecification` + * `creator`: The address or `Account` of the creator of the app for which to search for the deployed app under + * `indexer`: + * `app_lookup`: Optional if an indexer is provided, + * `app_name`: An overridden name to identify the contract with, otherwise `contract.name` is used from the app spec + +Both approaches also allow specifying the following parameters that will be used as defaults for all application calls: +* `signer`: `TransactionSigner` to sign transactions with. +* `sender`: Address to use for transaction signing, will be derived from the signer if not provided. +* `suggested_params`: Default `SuggestedParams` to use, will use current network suggested params by default + +Both approaches also allow specifying a mapping of template values via the `template_values` parameter, this will be used before compiling the application to replace any +`TMPL_` variables that may be in the TEAL. The `TMPL_UPDATABLE` and `TMPL_DELETABLE` variables used in some AlgoKit templates are handled by the `deploy` method, but should be included if +using `create` or `update` directly. + +## Calling methods on the app + +There are various methods available on `ApplicationClient` that can be used to call an app: + +* `call`: Used to call methods with an on complete action of `no_op` +* `create`: Used to create an instance of the app, by using an `app_id` of 0, includes the approval and clear programs in the call +* `update`: Used to update an existing app, includes the approval and clear programs in the call, and is called with an on complete action of `update_application` +* `delete`: Used to remove an existing app, is called with an on complete action of `delete_application` +* `opt_in`: Used to opt in to an existing app, is called with an on complete action of `opt_in` +* `close_out`: Used to close out of an existing app, is called with an on complete action of `opt_in` +* `clear_state`: Used to unconditionally close out from an app, calls the clear program of an app + +### Specifying which method + +All methods for calling an app that support ABI methods (everything except `clear_state`) take a parameter `call_abi_method` which can be used to specify which method to call. +The method selected can be specified explicitly, or allow the client to infer the method where possible, supported values are: + +* `None`: The default value, when `None` is passed the client will attempt to find any ABI method or bare method that is compatible with the provided arguments +* `False`: Indicates that an ABI method should not be used, and instead a bare method call is made +* `True`: Indicates that an ABI method should be used, and the client will attempt to find an ABI method that is compatible with the provided arguments +* `str`: If a string is provided, it will be interpreted as either an ABI signature specifying a method, or as an ABI method name +* `algosdk.abi.Method`: The specified ABI method will be called +* `ABIReturnSubroutine`: Any type that has a `method_spec` function that returns an `algosd.abi.Method` + +### ABI arguments + +ABI arguments are passed as python keyword arguments e.g. to pass the ABI parameter `name` for the ABI method `hello` the following syntax is used `client.call("hello", name="world")` + +### Transaction Parameters + +All methods for calling an app take an optional `transaction_parameters` argument, with the following supported parameters: + +* `signer`: The `TransactionSigner` to use on the call. This overrides any signer specified on the client +* `sender`: The address of the sender to use on the call, must be able to be signed for by the `signer`. This overrides any sender specified on the client +* `suggested_params`: `SuggestedParams` to use on the call. This overrides any suggested_params specified on the client +* `note`: Note to include in the transaction +* `lease`: Lease parameter for the transaction +* `boxes`: A sequence of boxes to use in the transaction, this is a list of (app_index, box_name) tuples `[(0, "box_name"), (0, ...)]` +* `accounts`: Account references to include in the transaction +* `foreign_apps`: Foreign apps to include in the transaction +* `foreign_assets`: Foreign assets to include in the transaction +* `on_complete`: The on complete action to use for the transaction, only available when using `call` or `create` +* `extra_pages`: Additional pages to allocate when calling `create`, by default a sufficient amount will be calculated based on the current approval and clear. This can be overridden, if more is required + for a future update + +Parameters can be passed as one of the dataclasses `CommonCallParameters`, `OnCompleteCallParameters`, `CreateCallParameters` (exact type depends on method used) +```python +client.call("hello", transaction_parameters=algokit_utils.OnCompleteCallParameters(signer=...)) +``` + +Alternatively, parameters can be passed as a dictionary e.g. +```python +client.call("hello", transaction_parameters={"signer":...}) +``` + +## Composing calls + +If multiple calls need to be made in a single transaction, the `compose_` method variants can be used. All these methods take an `AtomicTransactionComposer` as their first argument. +Once all the calls have been added to the ATC, it can then be executed. For example: + +```python +from algokit_utils import ApplicationClient +from algosdk.atomic_transaction_composer import AtomicTransactionComposer + +client = ApplicationClient(...) +atc = AtomicTransactionComposer() +client.compose_call(atc, "hello", name="world") +... # additional compose calls + +response = client.execute_atc(atc) +``` + + +## Reading state + +There are various methods defined that let you read state from the smart contract app: + +* `get_global_state` - Gets the current global state of the app +* `get_local_state` - Gets the current local state for the given account address + +## Handling logic errors and diagnosing errors + +Often when calling a smart contract during development you will get logic errors that cause an exception to throw. This may be because of a failing assertion, a lack of fees, +exhaustion of opcode budget, or any number of other reasons. + +When this occurs, you will generally get an error that looks something like: `TransactionPool.Remember: transaction {TRANSACTION_ID}: logic eval error: {ERROR_MESSAGE}. Details: pc={PROGRAM_COUNTER_VALUE}, opcodes={LIST_OF_OP_CODES}`. + +The information in that error message can be parsed and when combined with the [source map from compilation](./app-deploy.md#compilation-and-template-substitution) you can expose debugging +information that makes it much easier to understand what's happening. + +When an error is thrown then the resulting error that is re-thrown will be a `LogicError`, which has the following fields: + +* `logic_error`: Original exception +* `program`: Program source (if available) +* `source_map`: Source map used (if available) +* `transaction_id`: Transaction ID of failing transaction +* `message`: The error message +* `line_no`: The line number in the TEAL program that + +The function `trace()` will provide a formatted output of the surrounding TEAL where the error occurred. + +```{note} +The extended information will only show if the Application Client has a source map. This will occur if: + +1.) The ApplicationClient instance has already called, `create, `update` or `deploy` OR +2.) `template_values` are provided when creating the ApplicationClient, so a SourceMap can be obtained automatically OR +3.) `approval_source_map` on `ApplicationClient` has been set from a previously compiled approval program OR +4.) A source map has been exported/imported using `export_source_map`/`import_source_map`""" +``` diff --git a/docs/get-details/algokit/libraries/py/algokit-utils/capabilities/app-deploy.md b/docs/get-details/algokit/libraries/py/algokit-utils/capabilities/app-deploy.md new file mode 100644 index 000000000..194b06a58 --- /dev/null +++ b/docs/get-details/algokit/libraries/py/algokit-utils/capabilities/app-deploy.md @@ -0,0 +1,119 @@ +# App deployment + +Idempotent (safely retryable) deployment of an app, including deploy-time immutability and permanence control and TEAL template substitution + +App deployment is a higher-order use case capability provided by AlgoKit Utils that builds on top of the core capabilities, +particularly [App management](./app-client.md). It allows you to idempotently (with safe retryability) deploy an app, including deploy-time immutability and permanence control and +TEAL template substitution. + +To see some usage examples check out the [automated tests](https://github.com/algorandfoundation/algokit-utils-py/blob/main/tests/test_deploy_scenarios.py). + +(design)= +## Design + +The architecture design behind app deployment is articulated in an [architecture decision record](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/architecture-decisions/2023-01-12_smart-contract-deployment.md). +While the implementation will naturally evolve over time and diverge from this record, the principles and design goals behind the design are comprehensively explained. + +Namely, it described the concept of a smart contract development lifecycle: + +1. Development + 1. **Write** smart contracts + 2. **Transpile** smart contracts with development-time parameters (code configuration) to TEAL Templates + 3. **Verify** the TEAL Templates maintain [output stability](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/articles/output_stability.md) and any other static code quality checks +2. Deployment + 1. **Substitute** deploy-time parameters into TEAL Templates to create final TEAL code + 2. **Compile** the TEAL to create byte code using algod + 3. **Deploy** the byte code to one or more Algorand networks (e.g. LocalNet, TestNet, MainNet) to create Deployed Application(s) +3. Runtime + 1. **Validate** the deployed app via automated testing of the smart contracts to provide confidence in their correctness + 2. **Call** deployed smart contract with runtime parameters to utilise it + +![App deployment lifecycle](../images/lifecycle.jpg) + +The App deployment capability provided by AlgoKit Utils helps implement **#2 Deployment**. + +Furthermore, the implementation contains the following implementation characteristics per the original architecture design: + +- Deploy-time parameters can be provided and substituted into a TEAL Template by convention (by replacing `TMPL_{KEY}`) +- Contracts can be built by any smart contract framework that supports [ARC-0032](https://arc.algorand.foundation/ARCs/arc-0032) and + [ARC-0004](https://arc.algorand.foundation/ARCs/arc-0004) ([Beaker](https://beaker.algo.xyz/) or otherwise), which also means the deployment language can be + different to the development language e.g. you can deploy a Python smart contract with TypeScript for instance +- There is explicit control of the immutability (updatability / upgradeability) and permanence (deletability) of the smart contract, which can be varied per environment to allow for easier + development and testing in non-MainNet environments (by replacing `TMPL_UPDATABLE` and `TMPL_DELETABLE` at deploy-time by convention, if present) +- Contracts are resolvable by a string "name" for a given creator to allow automated determination of whether that contract had been deployed previously or not, but can also be resolved by ID + instead + +## Finding apps by creator + +There is a method `algokit.get_creator_apps(creatorAccount, indexer)`, which performs a series of indexer lookups that return all apps created by the given creator. These are indexed by the name it +was deployed under if the creation transaction contained the following payload in the transaction note field: + +``` +ALGOKIT_DEPLOYER:j{name:string, version:string, updatable?:boolean, deletable?:boolean} +``` + +Any creation transactions or update transactions are then retrieved and processed in chronological order to result in an `AppLookup` object + +Given there are a number of indexer calls to retrieve this data it's a non-trivial object to create, and it's recommended that for the duration you are performing a single deployment +you hold a value of it rather than recalculating it. Most AlgoKit Utils functions that need it will also take an optional value of it that will be used in preference to retrieving a +fresh version. + +## Deploying an application + +The method that performs the deployment logic is the instance method `ApplicationClient.deploy`. It performs an idempotent (safely retryable) deployment. It will detect if the app already +exists and if it doesn't it will create it. If the app does already exist then it will: + +- Detect if the app has been updated (i.e. the logic has changed) and either fail or perform either an update or a replacement based on the deployment configuration. +- Detect if the app has a breaking schema change (i.e. more global or local storage is needed than was originally requested) and either fail or perform a replacement based on the + deployment configuration. + +It will automatically add metadata to the transaction note of the create or update calls that indicates the name, version, updatability and deletability of the contract. +This metadata works in concert with `get_creator_apps` to allow the app to be reliably retrieved against that creator in it's currently deployed state. + +`deploy` automatically executes [template substitution](#compilation-and-template-substitution) including deploy-time control of permanence and immutability. + +### Input parameters + +The following inputs are used when deploying an App + +* `version`: The version string for the app defined in app_spec, if not specified the version will automatically increment for existing apps that are updated, and set to 1.0 for new apps +* `signer`, `sender`: Optional signer and sender for deployment operations, sender must be the same as the creator specified +* `allow_update`, `allow_delete`: Control the updatability and deletability of the app, used to populate `TMPL_UPDATABLE` and `TMPL_DELETABLE` template values +* `on_update`: Determines what should happen if an update to the smart contract is detected (e.g. the TEAL code has changed since last deployment) +* `on_schema_break`: Determines what should happen if a breaking change to the schema is detected (e.g. if you need more global or local state that was previously requested when the contract was originally created) +* `create_args`: Args to use if a create operation is performed +* `update_args`: Args to use if an update operation is performed +* `delete_args`: Args to use if a delete operation is performed +* `template_values`: Values to use for automatic substitution of [deploy-time parameter values](#design) is mapping of `key: value` that will result in `TMPL_{key}` being replaced with `value` + +### Idempotency + +`deploy` is idempotent which means you can safely call it again multiple times, and it will only apply any changes it detects. If you call it again straight after calling it then it will +do nothing. This also means it can be used to find an existing app based on the supplied creator and app_spec or name. + +(compilation-and-template-substitution)= +### Compilation and template substitution + +When compiling TEAL template code, the capabilities described in the [design above](#design) are present, namely the ability to supply deploy-time parameters and the ability to control immutability and permanence of the smart contract at deploy-time. + +In order for a smart contract to be able to use this functionality, it must have a TEAL Template that contains the following: + +* `TMPL_{key}` - Which can be replaced with a number or a string / byte array which wil be automatically hexadecimal encoded +* `TMPL_UPDATABLE` - Which will be replaced with a `1` if an app should be updatable and `0` if it shouldn't (immutable) +* `TMPL_DELETABLE` - Which will be replaced with a `1` if an app should be deletable and `0` if it shouldn't (permanent) + +If you are building a smart contract using the [beaker_production AlgoKit template](https://github.com/algorandfoundation/algokit-beaker-default-template) if provides a reference implementation out of the box for the deploy-time immutability and permanence control. + +### Return value + +`deploy` returns a `DeployResponse` object, that describes the action taken. + +* `action_taken`: Describes what happened during deployment + * `Create` - The smart contract app is created. + * `Update` - The smart contract app is updated + * `Replace` - The smart contract app was deleted and created again (in an atomic transaction) + * `Nothing` - Nothing was done since an existing up-to-date app was found +* `create_response`: If action taken was `Create` or `Replace`, the result of the create transaction. Can be a `TransactionResponse` or `ABITransactionResponse` depending on the method used +* `update_response`: If action taken was `Update`, the result of the update transaction. Can be a `TransactionResponse` or `ABITransactionResponse` depending on the method used +* `delete_response`: If action taken was `Replace`, the result of the delete transaction. Can be a `TransactionResponse` or `ABITransactionResponse` depending on the method used +* `app`: An `AppMetaData` object, describing the final app state diff --git a/docs/get-details/algokit/libraries/py/algokit-utils/capabilities/client.md b/docs/get-details/algokit/libraries/py/algokit-utils/capabilities/client.md new file mode 100644 index 000000000..3a77a909f --- /dev/null +++ b/docs/get-details/algokit/libraries/py/algokit-utils/capabilities/client.md @@ -0,0 +1,30 @@ +# Client management + +Client management is one of the core capabilities provided by AlgoKit Utils. +It allows you to create [algod](https://developer.algorand.org/docs/rest-apis/algod), [indexer](https://developer.algorand.org/docs/rest-apis/indexer) +and [kmd](https://developer.algorand.org/docs/rest-apis/kmd) clients against various networks resolved from environment or specified configuration. + +Any AlgoKit Utils function that needs one of these clients will take the underlying `algosdk` classes (`algosdk.v2client.algod.AlgodClient`, `algosdk.v2client.indexer.IndexerClient`, +`algosdk.kmd.KMDClient`) so inline with the [Modularity](../index.md#core-principles) principle you can use existing logic to get instances of these clients without needing to use the +Client management capability if you prefer. + +To see some usage examples check out the [automated tests](https://github.com/algorandfoundation/algokit-utils-py/blob/main/tests/test_network_clients.py). + +## Network configuration + +The network configuration is specified using the `AlgoClientConfig` class. This same interface is used to specify the config for algod, indexer and kmd clients. + +There are a number of ways to produce one of these configuration objects: + +* Manually creating the object, e.g. `AlgoClientConfig(server="https://myalgodnode.com", token="SECRET_TOKEN")` +* `algokit_utils.get_algonode_config(network, config, token)`: Loads an Algod or indexer config against [AlgoNode](https://algonode.io/api/) to either MainNet or TestNet +* `algokit_utils.get_purestake_config(network, config, token)`: Loads an Algod or indexer config against [PureStake](https://developer.purestake.io/) to either MainNet or TestNet +* `algokit_utils.get_default_localnet_config(configOrPort)`: Loads an Algod, Indexer or Kmd config against [LocalNet](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/features/localnet.md) using the default configuration + +## Clients + +Once you have the configuration for a client, to get the client you can use the following functions: + +- `algokit_utils.get_algod_client(config)`: Returns an Algod client for the given configuration or if none is provided retrieves a configuration from the environment using `ALGOD_SERVER`, `ALGOD_TOKEN` and optionally `ALGOD_PORT`. +- `algokit_utils.get_indexer_client(config)`: Returns an Indexer client for given configuration or if none is provided retrieves a configuration from the environment using `INDEXER_SERVER`, `INDEXER_TOKEN` and optionally `INDEXER_PORT` +- `algokit_utils.get_kmd_client_from_algod_client(config)`: - Returns a Kmd client based on the provided algod client configuration, with the assumption the KMD services is running on the same host but a different port (either `KMD_PORT` environment variable or `4002` by default) diff --git a/docs/get-details/algokit/libraries/py/algokit-utils/capabilities/transfer.md b/docs/get-details/algokit/libraries/py/algokit-utils/capabilities/transfer.md new file mode 100644 index 000000000..0b8da0189 --- /dev/null +++ b/docs/get-details/algokit/libraries/py/algokit-utils/capabilities/transfer.md @@ -0,0 +1,39 @@ +# Algo transfers + +Algo transfers is a higher-order use case capability provided by AlgoKit Utils allows you to easily initiate algo transfers between accounts, including dispenser management and +idempotent account funding. + +To see some usage examples check out the [automated tests](https://github.com/algorandfoundation/algokit-utils-py/blob/main/tests/test_transfer.py). + +## Transferring Algos + +The key function to facilitate Algo transfers is `algokit.transfer(algod_client, transfer_parameters)`, which returns the underlying `PaymentTxn` and takes a `TransferParameters` + +The following fields on `TransferParameters` are required to transfer ALGOs: +* `from_account`: The account or signer that will send the ALGOs +* `to_address`: The address of the account that will receive the ALGOs +* `micro_algos`: The amount of micro ALGOs to send + +## Ensuring minimum Algos + +The ability to automatically fund an account to have a minimum amount of disposable ALGOs to spend is incredibly useful for automation and deployment scripts. +The function to facilitate this is `ensure_funded(algod, parameters)`, which takes a `EnsureBalanceParameters` and returns the underlying `PaymentTxn` if a payment was made, or None otherwise + +The following fields on `EnsureBalanceParameters` are required to ensure minimum ALGOs: + +* `account_to_fund`: The account address that will receive the ALGOs +* `min_spending_balance_micro_algos`: The minimum balance of micro ALGOs that the account should have available to spend (i.e. on top of minimum balance requirement) +* `min_funding_increment_micro_algos`: When issuing a funding amount, the minimum amount to transfer (avoids many small transfers if this gets called often on an active account) +* `funding_source`: The account or signer that will send the ALGOs, if not set will use `get_dispenser_account` + +The function calls Algod to find the current balance and minimum balance requirement, gets the difference between those two numbers and checks to see if it's more than the +`min_spending_balance_micro_algos` and if so then it will send the difference, or the `min_funding_increment_micro_algos` if that is specified. + +## Dispenser + +If you want to programmatically send funds then you will often need a "dispenser" account that has a store of ALGOs that can be sent and a private key available for that dispenser account. + +There is a standard AlgoKit Utils function to get access to a [dispenser account](./account.md#account): `get_dispenser_account`. When running against +[LocalNet](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/features/localnet.md), the dispenser account can be automatically determined using the +[Kmd API](https://developer.algorand.org/docs/rest-apis/kmd). When running against other networks like TestNet or MainNet the mnemonic of the dispenser account can be provided via environment +variable `DISPENSER_MNEMONIC` diff --git a/docs/get-details/algokit/libraries/py/algokit-utils/images/lifecycle.jpg b/docs/get-details/algokit/libraries/py/algokit-utils/images/lifecycle.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4c4c2af60347fa02d37f9010af5f6361d98d0261 GIT binary patch literal 124635 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®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

9AU|PfoCO_CZZ<&}eCDqes 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 Z?t#C1;O`#zy9fU6f&bz?aQ0W`{{WG5YM}rC literal 0 HcmV?d00001 diff --git a/docs/get-details/algokit/libraries/py/algokit-utils/index.md b/docs/get-details/algokit/libraries/py/algokit-utils/index.md new file mode 100644 index 000000000..6c36b3fd9 --- /dev/null +++ b/docs/get-details/algokit/libraries/py/algokit-utils/index.md @@ -0,0 +1,95 @@ +# Overview + +A set of core Algorand utilities written in Python and released via PyPi that make it easier to build solutions on Algorand. +This project is part of [AlgoKit](https://github.com/algorandfoundation/algokit-cli). + +The goal of this library is to provide intuitive, productive utility functions that make it easier, quicker and safer to build applications on Algorand. +Largely these functions wrap the underlying Algorand SDK, but provide a higher level interface with sensible defaults and capabilities for common tasks. + +```{note} +If you prefer TypeScript there's an equivalent [TypeScript utility library](https://github.com/algorandfoundation/algokit-utils-ts). +``` + +[Core principles](#core-principles) | [Installation](#installation) | [Usage](#usage) | [Capabilities](#capabilities) | [Reference docs](#reference-documentation) + +```{toctree} +--- +maxdepth: 2 +caption: Contents +--- + +capabilities/account +capabilities/client +capabilities/app-client +capabilities/app-deploy +capabilities/transfer +apidocs/algokit_utils/algokit_utils +``` + +(core-principles)= +# Core principles + +This library is designed with the following principles: + +* **Modularity** - This library is a thin wrapper of modular building blocks over the Algorand SDK; the primitives from the underlying Algorand SDK are + exposed and used wherever possible so you can opt-in to which parts of this library you want to use without having to use an all or nothing approach. +* **Type-safety** - This library provides strong TypeScript support with effort put into creating types that provide good type safety and intellisense. +* **Productivity** - This library is built to make solution developers highly productive; it has a number of mechanisms to make common code easier and terser to write + +(installation)= +# Installation + +This library can be installed from PyPi using pip or poetry, e.g.: + +``` +pip install algokit-utils +poetry add algokit-utils +``` + +(usage)= +# Usage + +To use this library simply include the following at the top of your file: + +```python +import algokit_utils +``` + +Then you can use intellisense to auto-complete the various functions and types that are available by typing `algokit_utils.` in your favourite Integrated Development Environment (IDE), +or you can refer to the [reference documentation](apidocs/algokit_utils/algokit_utils.md). + +## Types + +The library contains extensive type hinting combined with a tool like MyPy this can help identify issues where incorrect types have been used, or used incorrectly. + +(capabilities)= +# Capabilities + +The library helps you with the following capabilities: + +- Core capabilities + - [**Client management**](capabilities/client.md) - Creation of algod, indexer and kmd clients against various networks resolved from environment or specified configuration + - [**Account management**](capabilities/account.md) - Creation and use of accounts including mnemonic, multisig, transaction signer, idempotent KMD accounts and environment variable injected +- Higher-order use cases + - [**ARC-0032 Application Spec client**](capabilities/app-client.md) - Builds on top of the App management and App deployment capabilities to provide a high productivity application client that works with ARC-0032 application spec defined smart contracts (e.g. via Beaker) + - [**App deployment**](capabilities/app-deploy.md) - Idempotent (safely retryable) deployment of an app, including deploy-time immutability and permanence control and TEAL template substitution + - [**Algo transfers**](capabilities/transfer.md) - Ability to easily initiate algo transfers between accounts, including dispenser management and idempotent account funding + +(reference-documentation)= +# Reference documentation + +We have [auto-generated reference documentation for the code](apidocs/algokit_utils/algokit_utils.md). + +# Roadmap + +This library will naturally evolve with any logical developer experience improvements needed to facilitate the [AlgoKit](https://github.com/algorandfoundation/algokit-cli) roadmap as it evolves. + +Likely future capability additions include: + +- Typed application client +- Asset management +- Expanded indexer API wrapper support + +# Indices and tables + +* {ref}`genindex` diff --git a/docs/get-details/algokit/libraries/py/client-generator.md b/docs/get-details/algokit/libraries/py/client-generator.md new file mode 100644 index 000000000..cc201394f --- /dev/null +++ b/docs/get-details/algokit/libraries/py/client-generator.md @@ -0,0 +1,100 @@ +# algokit-client-generator + +This project generates a type-safe smart contract client in Python for the Algorand Blockchain that wraps the +[application client](https://algorandfoundation.github.io/algokit-utils-py/html/apidocs/algokit_utils/algokit_utils.html#algokit_utils.ApplicationClient) in +[AlgoKit Utils](https://github.com/algorandfoundation/algokit-utils-py). It does this by reading an [ARC-0032](https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0032.md) application spec file. + + +> **Note** +> There is also an equivalent [TypeScript client generator](https://github.com/algorandfoundation/algokit-client-generator-ts). + + +## Usage + +### Prerequisites + +To be able to consume the generated file you need to include it in a Python project that has (at least) the following package installed: + +``` +poetry add algokit-utils@^1.2 +``` + +### Use + +To install the generator as a CLI tool: + +``` +pipx install algokit-client-generator +``` + +Then to use it + +``` +algokitgen-py path/to/application.json path/to/output/client_generated.py +``` + +Or if you have [AlgoKit](https://github.com/algorandfoundation/algokit-cli) 1.1+ installed + +```commandline +algokit generate client path/to/application.json --output path/to/output/client_generated.py +``` + +## Examples + +There are a range of [examples](./examples) that you can look at to see a source smart contract (`{contract.py}`), +the generated client (`client_generated.py`) and some tests that demonstrate how you can use the client (`test_client.py`). + +## Contributing + +If you want to contribute to this project the following information will be helpful. + +### Initial setup + +1. Clone this repository locally +2. Install pre-requisites: + + - Install `AlgoKit` - [Link](https://github.com/algorandfoundation/algokit-cli#install): Ensure you can execute `algokit --version`. + - Bootstrap your local environment; run `algokit bootstrap all` within this folder, which will: + - Install `Poetry` - [Link](https://python-poetry.org/docs/#installation): The minimum required version is `1.2`. Ensure you can execute `poetry -V` and get `1.2`+ + - Run `poetry install` in the root directory, which will set up a `.venv` folder with a Python virtual environment and also install all Python dependencies + +3. Open the project and start debugging / developing via: + - VS Code + 1. Open the repository root in VS Code + 2. Install recommended extensions + 3. Run tests via test explorer + - IDEA (e.g. PyCharm) + 1. Open the repository root in the IDE + 2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment. + 3. Run tests + - Other + 1. Open the repository root in your text editor of choice + 2. Run `poetry run pytest` + +### Subsequently + +1. If you update to the latest source code and there are new dependencies you will need to run `algokit bootstrap all` again +2. Follow step 3 above + +### Building examples + +In the `examples` folder there is a series of example contracts along with their generated client. These contracts are built using [Beaker](https://beaker.algo.xyz/). + +If you want to make changes to any of the smart contract examples and re-generate the ARC-0032 application.json files then change the corresponding `examples/{contract}/{contract}.py` file and then run: + +``` +poetry run python -m examples +``` + +Or in Visual Studio Code you can use the default build task (Ctrl+Shift+B). + +### Continuous Integration / Continuous Deployment (CI/CD) + +This project uses [GitHub Actions](https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions) to define CI/CD workflows, which are located in the [`.github/workflows`](./.github/workflows) folder. + +### Approval tests + +Making any changes to the generated code will result in the approval tests failing. The approval tests work by generating a version of client +and outputting it to `./examples/APP_NAME/client_generated.py` then comparing to the approved version `./examples/APP_NAME/client.ts`. If you +make a change and break the approval tests, you will need to update the approved version by overwriting it with the generated version. +You can run `poe update-approvals` to update all approved clients in one go. diff --git a/docs/get-details/algokit/libraries/ts/.pages b/docs/get-details/algokit/libraries/ts/.pages new file mode 100644 index 000000000..96ffc7f15 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/.pages @@ -0,0 +1,3 @@ +title: for TypeScript + + diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/.pages b/docs/get-details/algokit/libraries/ts/algokit-utils/.pages new file mode 100644 index 000000000..417abbda2 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/.pages @@ -0,0 +1,3 @@ +title: algokit-utils + + diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/account.md b/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/account.md new file mode 100644 index 000000000..06123c8d4 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/account.md @@ -0,0 +1,40 @@ +# Account management + +Account management is one of the core capabilities provided by AlgoKit Utils. It allows you to create mnemonic, rekeyed, multisig, transaction signer, idempotent KMD and environment variable injected accounts that can be used to sign transactions as well as representing a sender address at the same time. This significantly simplifies passing around sender/signer within and into AlgoKit Utils. + +## `SendTransactionFrom` + +Any AlgoKit Utils function that needs to sign/send a transaction will take a [`SendTransactionFrom`](../code/modules/types_transaction.md#sendtransactionfrom) object, which represents an account that combined a sender and signer and is a type union between the following types: + +- `Account` - An in-built algosdk `Account` object +- [`SigningAccount`](../code/classes/types_account.SigningAccount.md) - An abstraction around `algosdk.Account` that supports rekeyed accounts +- `LogicSigAccount` - An in-built algosdk `algosdk.LogicSigAccount` object +- [`MultisigAccount`](../code/classes/types_account.MultisigAccount.md) - An abstraction around `algosdk.MultisigMetadata`, `algosdk.makeMultiSigAccountTransactionSigner`, `algosdk.multisigAddress`, `algosdk.signMultisigTransaction` and `algosdk.appendSignMultisigTransaction` that supports multisig accounts with one or more signers present +- [`TransactionSignerAccount`](../code/interfaces/types_account.TransactionSignerAccount.md) - An interface that provides a sender address alongside a transaction signer (e.g. for use with `AtomicTransactionComposer` or [useWallet](https://github.com/TxnLab/use-wallet)) + +The use of in-built algosdk types like `Account`, `LogicSigAccount` and `TransactionSigner` is aligned to the [Modularity](../README.md#core-principles) principle. Allowing you to co-exist non AlgoKit Utils code with AlgoKit Utils functions. + +## Using `SendTransactionFrom` + +AlgoKit Utils provides a few helper methods to take one of these `SendTransactionFrom` objects: + +- [`algokit.getSenderAddress`](../code/modules/index.md#getsenderaddress) - Returns the public address of the sender the account represents +- [`algokit.getSenderTransactionSigner`](../code/modules/index.md#getsendertransactionsigner) - Returns a `TransactionSigner` to represent the signer of the account' note: this is memoized so multiple calls to this for the same account will safely return the same `TransactionSigner` instance; this works nicely with `AtomicTransactionComposer` +- [`algokit.signTransaction`](../code/modules/index.md#signtransaction) - Signs a single `algosdk.Transaction` object with the given account + +## Accounts + +In order to get the accounts you can use the underlying algosdk methods where relevant, or you can use the following AlgoKit Utils functions (all of which return a type compatible with `SendTransactionFrom`): + +- [`algokit.mnemonicAccountFromEnvironment(account, algod, kmd?)`](../code/modules/index.md#mnemonicaccountfromenvironment) - Returns an Algorand account with private key loaded by convention based on the given name identifier - either by idempotently creating the account in KMD or from environment variable via `process.env['{NAME}_MNEMONIC']` and (optionally) `process.env['{NAME}_SENDER']` (if account is rekeyed) + - This allows you to have powerful code that will automatically create and fund an account by name locally and when deployed against TestNet/MainNet will automatically resolve from environment variables, without having to have different code + - Note: `account` can either be a string name, or an object with `{name: string, fundWith?: AlgoAmount}`, where `fundWith` allows you to control how many ALGOs are seeded into an account created in KMD +- [`algokit.mnemonicAccount(mnemonicSecret)`](../code/modules/index.md#mnemonicaccount) - Returns an Algorand account (`algosdk.Account`) with secret key loaded (i.e. that can sign transactions) by taking the mnemonic secret. +- [`algokit.multisigAccount(multisigParams, signingAccounts)`](../code/modules/index.md#multisigaccount) - Returns a multisig account with one or more signing keys loaded. +- [`algokit.rekeyedAccount(signer, sender)`](../code/modules/index.md#rekeyedaccount) - Returns a `SigningAccount` representing the given rekeyed sender/signer combination +- [`algokit.transactionSignerAccount(signer, sender)`](../code/modules/index.md#transactionsigneraccount) - Returns a `TransactionSigner` along with its sender address +- [`algokit.randomAccount()`](../code/modules/index.md#randomaccount) - Returns a new, cryptographically randomly generated account with private key loaded. + +### Dispenser + +- [`algokit.getDispenserAccount(algod, kmd?)`](../code/modules/index.md#getdispenseraccount) - Returns an account that can act as a dispenser to fund other accounts either via Kmd (when targeting LocalNet) or by convention from environment variable via `process.env.DISPENSER_MNEMONIC` (and optionally `process.env.DISPENSER_SENDER` if rekeyed) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/amount.md b/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/amount.md new file mode 100644 index 000000000..400ce34db --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/amount.md @@ -0,0 +1,43 @@ +# Algo amount handling + +Algo amount handling is one of the core capabilities provided by AlgoKit Utils. It allows you to reliably and tersely specify amounts of microAlgos and Algos and safely convert between them. + +Any AlgoKit Utils function that needs an Algo amount will take an `AlgoAmount` object, which ensures that there is never any confusion about what value is being passed around. Whenever an AlgoKit Utils function calls into an underlying algosdk function, or if you need to take an `AlgoAmount` and pass it into an underlying algosdk function (per the [modularity principle](../README.md#core-principles)) you can safely and explicitly convert to microAlgos or algos. + +To see some usage examples check out the [automated tests](../../src/types/amount.spec.ts). Alternatively, you see the [reference documentation](../code/classes/types_amount.AlgoAmount.md) for `AlgoAmount`. + +## `AlgoAmount` + +The `AlgoAmount` class provides a safe wrapper around an underlying `number` amount of microAlgos where any value entering or existing the `AlgoAmount` class must be explicitly stated to be in microAlgos or Algos. This makes it much safer to handle Algo amounts rather than passing them around as raw `number`'s where it's easy to make a (potentially costly!) mistake and not perform a conversion when one is needed (or perform one when it shouldn't be!). + +### Creating an `AlgoAmount` + +There are a few ways to create an `AlgoAmount`: + +- Algos + - Constructor: `new AlgoAmount({algos: 10})` + - Static helper: `AlgoAmount.algos(10)` + - AlgoKit Helper: `algokit.algos(10)` + - Number coersion: `(10).algos()` (note: you have to wrap the number in brackets or have it in a variable or function return, a raw number value can't have a method called on it) +- microAlgos + - Constructor: `new AlgoAmount({microAlgos: 10_000})` + - Static helper: `AlgoAmount.algos(10)` + - AlgoKit Helper: `algokit.microAlgos(10_000)` + - Number coersion: `(10_000).microAlgos()` (note: you have to wrap the number in brackets or have it in a variable or function return, a raw number value can't have a method called on it) + +Note: to use any of the versions that reference `AlgoAmount` type itself you need to import it: + +```typescript +import { AlgoAmount } from '@algorandfoundation/algokit-utils/types/amount' +``` + +### Extracting a value from `AlgoAmount` + +The `AlgoAmount` class has methods to return algos and microAlgos: + +- `amount.algos()` - Returns the value in Algos +- `amount.microAlgos()` - Returns the value in microAlgos + +`AlgoAmount` will coerce to a `number` automatically (in microAlgos), which is not recommended to be used outside of allowing you to use `AlgoAmount` objects in comparison operations such as `<` and `>=` etc. + +You can also call `.toString()` or use an `AlgoAmount` directly in string interpolation to convert it to a nice user-facing formatted amount expressed in microAlgos. diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/app-client.md b/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/app-client.md new file mode 100644 index 000000000..1a77e82e6 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/app-client.md @@ -0,0 +1,217 @@ +# App client + +Application client that works with ARC-0032 application spec defined smart contracts (e.g. via Beaker). + +App client is a higher-order use case capability provided by AlgoKit Utils that builds on top of the core capabilities, particularly [App deployment](./app-deploy.md) and [App management](./app.md). It allows you to access a high productivity application client that works with ARC-0032 application spec defined smart contracts, which you can use to create, update, delete, deploy and call a smart contract and access state data for it. + +To see some usage examples check out the [automated tests](../../src/types/app-client.spec.ts). + +## Design + +The design for the app client is based on a wrapper for parsing an [ARC-0032](https://github.com/algorandfoundation/ARCs/pull/150) application spec and wrapping the [App deployment](./app-deploy.md) functionality and corresponding [design](./app-deploy.md#design). It's also heavily inspired by [beaker-ts](https://github.com/algorand-devrel/beaker-ts), which this library aims to eventually replace. + +## Creating an application client + +To create an application you can either use `algokit.getAppClient(appDetails, algod)` or `import { ApplicationClient } from '@algorandfoundation/algokit-utils/types/app-client'` and `new ApplicationClient(appDetails, algod)` + +The `appDetails` parameter is of type [`AppSpecAppDetails`](../code/modules/types_app_client.md#appspecappdetails), which contains some core properties and then one of two key mechanisms to specify the app to target. + +- Core parameters - Core parameters that can always be applied + - `app: AppSpec | string` - Either the parsed ARC-0032 `AppSpec`, or a raw JSON `string` which will get parsed as an `AppSpec` + - `sender?: SendTransactionFrom` - Optional [sender](./account.md#sendtransactionfrom) to send/sign all transactions with (if left out then individual methods must have a sender passed to them) + - `params?: SuggestedParams` - Optional [sending parameters](./transaction.md#transaction-params) if you want to avoid an extra call to algod +- App target - How to resolve an existing app (if one exists), which can either be: + 1. [`ResolveAppById`](../code/interfaces/types_app_client.ResolveAppById.md) - When you want to resolve an existing app by app ID, which consists of the following parameters: + - `id: number` - The app ID, which should be set as `0` if you have yet to deploy the contract + - `name? string` - The optional name to mark the contract with if you are deploying it, otherwise `contract.name` is used from the app spec + 2. [`ResolveAppByCreatorAndName`](../code/modules/types_app_client.md#resolveappbycreatorandname) - When you want to resolve an existing app by name for a given creator account, which consists of the following parameters: + - `creatorAddress: string` - The address of the creator account of the app for which to search for the deployed app under + - `name?: string` - An overridden name to identify the contract with, otherwise `contract.name` is used from the app spec + - And either: + 1. `indexer: Indexer` - An indexer instance so the existing app deployments can be queried + 2. `existingDeployments: AppLookup` - The result of an existing indexer lookup to generate an [app lookup](./app-deploy.md#getcreatorappsbyname), which avoids extra indexer calls from being made + +## Creating, updating, deploying and deleting the app + +Once you have an application client you can perform the following actions related to creating and managing the lifecycle of an app: + +- `compile(compilationParams?)` - Allows you to compile the application (approval and clear program)), including [deploy-time parameter replacements and deploy-time immutability and permanence control](./app-deploy.md#compilation-and-template-substitution); it returns the compiled AVM code and source maps +- `deploy(deploymentParams?)` - Allows you to perform an idempotent (safely retryable) deployment of the smart contract app per the design of [`deployApp`](app-deploy.md#deployapp) +- `create(createParams?)` - Allows you to perform a creation of the smart contract app +- `update(updateParams?)` - Allows you to perform an update of the (existing) smart contract app +- `delete(deleteParams?)` - Allows you to delete the (existing) smart contract app + +The input payload for `create` and `update` are the same and are a union of [`AppClientCallParams`](#appclientcallparams) and [`AppClientCompilationParams`](#appclientcompilationparams). The input payload for `delete` is [`AppClientCallParams`](#appclientcallparams). The input payload for `deploy` is [`AppClientDeployParams`](#appclientdeployparams). + +The return payload for these methods directly matches the equivalent underlying [App management](./app.md) / [App deployment](./app-deploy.md) methods (since these methods are wrappers): + +- `create` -> [`createApp`](./app.md#createapp) +- `update` -> [`updateApp`](./app.md#updateapp) +- `delete` -> [`deleteApp`](./app.md#deleteapp) +- `deploy` -> [`deployApp`](./app-deploy.md#deployapp) + +## Calling the app + +To make a call to a smart contract you can use the following methods (which determine the [on complete action](https://developer.algorand.org/docs/get-details/dapps/smart-contracts/apps/#the-lifecycle-of-a-smart-contract) that the call will use): + +- `call(call?)` - A normal (`noop` on completion action) call +- `optIn(call?)` - An opt-in call +- `closeOut(call?)` - A close-out call +- `clearState(call?)` - A clear state call (note: calls the clear program) +- `callOfType(call, callType)` - Make a call with a specified call type + +These calls will only work if the Application Client knows the ID of the app, which will occur if: + +- The app ID is passed into the constructor; +- You have passed `creatorAccount` and the smart contract name to the constructor and the contract already exists; or +- You have called `create` or `deploy` using that Application Client. + +The input payload for all of these calls is the same as `delete`; [`AppClientCallParams`](#appclientcallparams). + +The return payload for all of these is the same as [`callApp`](./app.md#calling-an-app). + +## Getting a reference to the app + +To get reference information for the app from outside the Application Client you can call `getAppReference()`. If you passed the `creatorAddress` and app name to the constructor then this method will return the full [`AppMetadata`](../code/interfaces/types_app.AppMetadata.md) per [`getCreatorAppsByName`](./app-deploy.md#getcreatorappsbyname). If you just passed in the app ID or used `create` rather than `deploy` then you will just receive an [`AppReference`](../code/interfaces/types_app.AppReference.md) (which is also a sub-type of the `AppMetadata`): + +- `appId: number` - The id of the app +- `appAddress: string` - The Algorand address of the account associated with the app + +## Funding the app account + +Often there is a need to fund an app account to cover minimum balance requirements for boxes and other scenarios. There is a helper method that will do this for you `fundAppAccount(fundParams)`. + +The input parameters can either be: + +- An [`AlgoAmount`](./amount.md) value (note: requires `sender` to be passed into the constructor) +- A [`FundAppAccountParams`](../code/interfaces/types_app_client.FundAppAccountParams.md), which has the following properties: + - `amount: AlgoAmount` - The amount to fund + - `sender?: SendTransactionFrom` - The [sender/signer](./account.md#sendtransactionfrom) to use; if unspecified then the sender that was passed into the constructor of the Application Client is used + - `note?: TransactionNote` - The [transaction note](./transaction.md#transaction-notes) to use when issuing the transaction + - `sendParams?: SendTransactionParams` - The [transaction sending configuration](./transaction.md#sendtransactionparams) + +This call will only work if the Application Client knows the ID of the app, which will occur if: + +- The app ID is passed into the constructor; +- You have passed `creatorAccount` and the smart contract name to the constructor and the contract already exists; or +- You have called `create` or `deploy` using that Application Client. + +Note: If you are passing the funding payment in as an ABI argument so it can be validated by the ABI method then you'll want to issue the `skipSending` configuration. That might look something like this as an example: + +```typescript +const result = await appClient.call({ + method: 'bootstrap', + methodArgs: { + args: [ + appClient.fundAppAccount({ + amount: algokit.microAlgos(200_000), + sendParams: { skipSending: true }, + }), + ], + boxes: ['Box1'], + }, +}) +``` + +## Reading state + +There are various methods defined that let you read state from the smart contract app: + +- `getGlobalState()` - Gets the current global state using [`algokit.getAppGlobalState](./app.md#global-state) +- `getLocalState(account: string | SendTransactionFrom)` - Gets the current local state for the given account address using [`algokit.getAppLocalState](./app.md#local-state). +- `getBoxNames()` - Gets the current box names using [`algokit.getAppBoxNames`](./app.md#boxes) +- `getBoxValue(name)` - Gets the current value of the given box using [`algokit.getAppBoxValue](./app.md#boxes) +- `getBoxValueFromABIType(name)` - Gets the current value of the given box from an ABI type using [`algokit.getAppBoxValueFromABIType](./app.md#boxes) +- `getBoxValues(filter)` - Gets the current values of the boxes using [`algokit.getAppBoxValues](./app.md#boxes) +- `getBoxValuesFromABIType(type, filter)` - Gets the current values of the boxes from an ABI type using [`algokit.getAppBoxValuesFromABIType](./app.md#boxes) + +These calls will only work if the Application Client knows the ID of the app, which will occur if: + +- The app ID is passed into the constructor; +- You have passed `creatorAccount` and the smart contract name to the constructor and the contract already exists; or +- You have called `create` or `deploy` using that Application Client. + +## Handling logic errors and diagnosing errors + +Often when calling a smart contract during development you will get logic errors that cause an exception to throw. This may be because of a failing assertion, a lack of fees, exhaustion of opcode budget, or any number of other reasons. + +When this occurs, you will generally get an error that looks something like: `TransactionPool.Remember: transaction {TRANSACTION_ID}: logic eval error: {ERROR_MESSAGE}. Details: pc={PROGRAM_COUNTER_VALUE}, opcodes={LIST_OF_OP_CODES}`. + +The information in that error message can be parsed and when combined with the [source map from compilation](./app-deploy.md#compilation-and-template-substitution) you can expose debugging information that makes it much easier to understand what's happening. + +The Application Client automatically provides this functionality for all smart contract calls. It also exposes a function that can be used for any custom calls you manually construct and need to add into your own try/catch `exposeLogicError(e: Error, isClear?: boolean)`. + +When an error is thrown then the resulting error that is re-thrown will be a [`LogicError` object](../code/classes/types_logic_error.LogicError.md), which has the following fields: + +- `message: string` - The formatted error message `{ERROR_MESSAGE}. at:{TEAL_LINE}. {ERROR_DESCRIPTION}` +- `stack: string` - A stack trace of the TEAL code showing where the error was with the 5 lines either side of it +- `led: LogicErrorDetails` - The parsed [logic error details](../code/interfaces/types_logic_error.LogicErrorDetails.md) from the error message, with the following properties: + - `txId: string` - The transaction ID that triggered the error + - `pc: number` - The program counter + - `msg: string` - The raw error message + - `desc: string` - The full error description + - `traces: Record[]` - Any traces that were included in the error +- `program: string[]` - The TEAL program split by line +- `teal_line: number` - The line number in the TEAL program that triggered the error + +Note: This information will only show if the Application Client has a source map. This will occur if: + +- You have called `create`, `update` or `deploy` +- You have called `importSourceMaps(sourceMaps)` and provided the source maps (which you can get by calling `exportSourceMaps()` after calling `create`, `update` or `deploy` and it returns a serialisable value) + +If you want to go a step further and automatically issue a [dry run transaction](https://developer.algorand.org/docs/get-details/dapps/smart-contracts/debugging/#dryrun-rest-endpoint) when there is an error when an ABI method is called you can turn on debug mode: + +```typescript +algokit.Config.configure({ debug: true }) +``` + +If you do that then the exception will have the `traces` property within the underlying exception will have key information from the dry run within it and this will get populated into the `led.traces` property of the thrown error. + +## `AppClientCallParams` + +All methods that call the smart contract apart from `deploy` make use of [this type](../code/modules/types_app_client.md#appclientcallparams). It consists of the following core properties, all of which are optional: + +- `sender?: SendTransactionFrom` - The [sender/signer](./account.md#sendtransactionfrom) to use; if unspecified then the sender that was passed into the constructor of the Application Client is used +- `note?: TransactionNote` - The [transaction note](./transaction.md#transaction-notes) to use when issuing the transaction +- `sendParams?: SendTransactionParams` - The [transaction sending configuration](./transaction.md#sendtransactionparams) + +In addition to these parameters, it may specify [call arguments](#appclientcallargs) parameters (`AppClientCallArgs`). + +## `AppClientCallArgs` + +Whenever an app call is specified, including within `deploy` [this type](../code/modules/types_app_client.md#appclientcallargs) specifies the arguments. There are two forms you can use: + +- **Raw call** - Directly specifies the [values](./app.md#rawappcallargs) that will be populated onto an `algosdk.Transaction` +- **ABI call** - Specifies a [ARC-0004 ABI call](https://developer.algorand.org/docs/get-details/dapps/smart-contracts/ABI/) along with relevant values (like boxes) that will be directly populated onto an `algosdk.Transaction`. Consists of the [ABI app call args type](./app.md#abiappcallargs) with the `method` parameter replaced with a string (since the Application Client only needs it as a string): + - `method: string` - The name of the method (e.g. `hello`) or the ABI signature of the method (e.g. `hello(string)string`) for when you have multiple methods with the same name and need to differentiate between them + - `methodArgs?: ABIAppCallArg[]` - An array of arguments to pass into the ABI method + - `boxes: (BoxReference | BoxIdentifier | algosdk.BoxReference)[]` - Any [boxes](./app.md#referencing-boxes) to load to the [boxes array](https://developer.algorand.org/docs/get-details/dapps/smart-contracts/apps/#reference-arrays) + - `lease: string | Uint8Array`: A [lease](https://developer.algorand.org/articles/leased-transactions-securing-advanced-smart-contract-design/) to assign to the transaction to enforce a mutually exclusive transaction (useful to prevent double-posting and other scenarios) + +If you want to get call args for manually populating into an `algosdk.Transaction` you can use the `getCallArgs` method on Application Client. + +Also, if you want to manually construct an ABI call (e.g. to use with AtomicTransactionComposer directly) then you can use `getABIMethod` and/or `getABIMethodParams` + +## `AppClientCompilationParams` + +When calling `create` or `update` there are extra parameter that need to be passed to facilitate the compilation of the code in addition to the other parameters in [`AppClientCallParams`](#appclientcallparams): + +- `deployTimeParams?: TealTemplateParams` - Any [deploy-time parameters](./app-deploy.md#compilation-and-template-substitution) to replace in the TEAL code +- `updatable?: boolean` - Whether or not the contract should have [deploy-time immutability control](./app-deploy.md#compilation-and-template-substitution) set, undefined = ignore +- `deletable?: boolean` - Whether or not the contract should have [deploy-time permanence control](./app-deploy.md#compilation-and-template-substitution) set, undefined = ignore + +## `AppClientDeployParams` + +When calling `deploy` the [`AppClientDeployParams`](../code/interfaces/types_app_client.AppClientDeployParams.md) type defines the input parameters, all of which are optional. This type closely models the semantics of [`deployApp`](./app-deploy.md#deployapp). + +- `version?: string` - The version of the contract, uses "1.0" by default +- `sender?: SendTransactionFrom` - The [sender/signer](./account.md#sendtransactionfrom) to use; if unspecified then the sender that was passed into the constructor of the Application Client is used +- `sendParams?: SendTransactionParams` - The [transaction sending configuration](./transaction.md#sendtransactionparams) +- `deployTimeParams?: TealTemplateParams` - Any [deploy-time parameters](./app-deploy.md#compilation-and-template-substitution) to replace in the TEAL code +- `allowUpdate?: boolean` - Whether or not to allow updates in the contract using the [deploy-time updatability](./app-deploy.md#compilation-and-template-substitution) control if present in your contract; if this is not specified then it will automatically be determined based on the AppSpec definition (if there is an update method) +- `allowDelete?: boolean` - Whether or not to allow deletes in the contract using the [deploy-time deletability](./app-deploy.md#compilation-and-template-substitution) control if present in your contract; if this is not specified then it will automatically be determined based on the AppSpec definition (if there is a delete method) +- `onSchemaBreak?: 'replace' | 'fail' | OnSchemaBreak` determines what should happen if a breaking change to the schema is detected (e.g. if you need more global or local state that was previously requested when the contract was originally created) +- `onUpdate?: 'update' | 'replace' | 'fail' | OnUpdate` determines what should happen if an update to the smart contract is detected (e.g. the TEAL code has changed since last deployment) +- `createArgs?: AppClientCallArgs` - The args to use if a create is needed +- `updateArgs?: AppClientCallArgs` - The args to use if an update is needed +- `deleteArgs?: AppClientCallArgs` - The args to use if a delete is needed diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/app-deploy.md b/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/app-deploy.md new file mode 100644 index 000000000..98abce2f6 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/app-deploy.md @@ -0,0 +1,160 @@ +# App deployment + +Idempotent (safely retryable) deployment of an app, including deploy-time immutability and permanence control and TEAL template substitution + +App deployment is a higher-order use case capability provided by AlgoKit Utils that builds on top of the core capabilities, particularly [App management](./app.md). It allows you to idempotently (with safe retryability) deploy an app, including deploy-time immutability and permanence control and TEAL template substitution. + +To see some usage examples check out the [automated tests](../../src/app-deploy.spec.ts). + +## Design + +The architecture design behind app deployment is articulated in an [architecture decision record](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/architecture-decisions/2023-01-12_smart-contract-deployment.md). While the implementation will naturally evolve over time and diverge from this record, the principles and design goals behind the design are comprehensively explained. + +Namely, it described the concept of a smart contract development lifecycle: + +1. Development + 1. **Write** smart contracts + 2. **Transpile** smart contracts with development-time parameters (code configuration) to TEAL Templates + 3. **Verify** the TEAL Templates maintain [output stability](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/articles/output_stability.md) and any other static code quality checks +2. Deployment + 1. **Substitute** deploy-time parameters into TEAL Templates to create final TEAL code + 2. **Compile** the TEAL to create byte code using algod + 3. **Deploy** the byte code to one or more Algorand networks (e.g. LocalNet, TestNet, MainNet) to create Deployed Application(s) +3. Runtime + 1. **Validate** the deployed app via automated testing of the smart contracts to provide confidence in their correctness + 2. **Call** deployed smart contract with runtime parameters to utilise it + +![App deployment lifecycle](../images/lifecycle.jpg) + +The App deployment capability provided by AlgoKit Utils helps implement **#2 Deployment**. + +Furthermore, the implementation contains the following implementation characteristics per the original architecture design: + +- Deploy-time parameters can be provided and substituted into a TEAL Template by convention (by replacing `TMPL_{KEY}`) +- Contracts can be built by any smart contract framework that supports [ARC-0032](https://github.com/algorandfoundation/ARCs/pull/150) and [ARC-0004](https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0004.md) ([Beaker](https://beaker.algo.xyz/) or otherwise), which also means the deployment language can be different to the development language e.g. you can deploy a Python smart contract with TypeScript for instance +- There is explicit control of the immutability (updatability / upgradeability) and permanence (deletability) of the smart contract, which can be varied per environment to allow for easier development and testing in non-MainNet environments (by replacing `TMPL_UPDATABLE` and `TMPL_DELETABLE` at deploy-time by convention, if present) +- Contracts are resolvable by a string "name" for a given creator to allow automated determination of whether that contract had been deployed previously or not, but can also be resolved by ID instead + +## `getCreatorAppsByName` + +There is a method `algokit.getCreatorAppsByName(creatorAccount, indexer)`, which performs a series of indexer lookups that return all apps created by the given creator (as a [`SendTransactionFrom`](account.md#sendtransactionfrom), or the encoded string representation of the public key of the account) indexed by the name it was deployed under if the creation transaction contained the following payload in the transaction note field: + +``` +ALGOKIT_DEPLOYER:j{name:string, version:string, updatable?:boolean, deletable?:boolean} +``` + +Any creation transactions or update transactions are then retrieved and processed in chronological order to result in an `AppLookup` object which has the following shape (each app is keyed by name and has the [`AppMetadata`](../code/interfaces/types_app.AppMetadata.md) fields): + +```json +{ + "creator": "", + "apps": { + "": { + /** The id of the app */ + "appId": 1, + /** The Algorand address of the account associated with the app */ + "appAddress": "", + /** The unique name identifier of the app within the creator account */ + "name": "", + /** The version of app that is / will be deployed */ + "version": "1.0.0", + /** Whether or not the app is deletable / permanent / unspecified */ + "deletable": true, + /** Whether or not the app is updatable / immutable / unspecified */ + "updatable": true, + /** The round the app was created */ + "createdRound": 1, + /** The last round that the app was updated */ + "updatedRound": 1, + /** Whether or not the app is deleted */ + "deleted": false, + /** The metadata when the app was created */ + "createdMetadata": { + /** The unique name identifier of the app within the creator account */ + "name": "", + /** The version of app that is / will be deployed */ + "version": "1.0.0", + /** Whether or not the app is deletable / permanent / unspecified */ + "deletable": true, + /** Whether or not the app is updatable / immutable / unspecified */ + "updatable": true + } + } + //... + } +} +``` + +Given there are a number of indexer calls to retrieve this data it's a non-trivial object to create and it's recommended that for the duration you are performing a single deployment you hold a value of it rather than recalculating it. Most AlgoKit Utils functions that need it will also take an optional value of it that will be used in preference to retrieving a fresh version. + +## `deployApp` + +The method that performs the deployment logic is `algokit.deployApp(deployment, algod, indexer?)`. It performs an idempotent (safely retryable) deployment. It will detect if the app already exists and if it doesn't it will create it. If the app does already exist then it will: + +- Detect if the app has been updated (i.e. the logic has changed) and either fail or perform either an update or a replacement based on the deployment configuration. +- Detect if the app has a breaking schema change (i.e. more global or local storage is needed than was originally requested) and either fail or perform a replacement based on the deployment configuration. + +It will automatically add metadata to the transaction note of the create or update calls that indicates the name, version, updatability and deletability of the contract. This metadata works in concert with [`getCreatorAppsByName`](#getcreatorappsbyname) to allow the app to be reliably retrieved against that creator in it's currently deployed state. + +`deployApp` automatically executes [template substitution](#compilation-and-template-substitution) including deploy-time control of permanence and immutability. + +### Input parameters + +The first parameter `deployment` is an [`AppDeploymentParams`](../code/interfaces/types_app.AppDeploymentParams.md) object, that consists of the same parameters as [creating an app](app.md#createapp) with the following differences: + +- `args` is replaced with three parameters: + - `createArgs` - The [args](./app.md#appcallargs) to use if a create is needed + - `updateArgs` - The [args](./app.md#appcallargs) to use if an update is needed + - `deleteArgs` - The [args](./app.md#appcallargs) to use if a delete is needed +- `onCompleteAction` is replaced with `createOnCompleteAction` - Override the on-completion action for the create call; defaults to NoOp +- `note` is excluded since deployment must add a `ALGOKIT_DEPLOYER:j{...}` note for the [name lookup](#getcreatorappsbyname) to work +- `skipSending`, `skipWaiting` and `atc` are excluded because `deployApp` needs to control the deployment and actually send to the network to function correctly +- `metadata: AppDeployMetadata` is added to allow the [deployment metadata](../code/interfaces/types_app.AppDeployMetadata.md) to be provided (`name`, `version`, `updatable` and `deletable`) +- `deployTimeParams: TealTemplateParams` is added to allow automatic substitution of [deploy-time parameter values](#design) + - [`TealTemplateParams`](../code/interfaces/types_app.TealTemplateParams.md) is a `key => value` object that will result in `TMPL_{key}` being replaced with `value` (where a string or `Uint8Array` will be appropriately encoded as bytes within the TEAL code) +- `onSchemaBreak?: 'replace' | 'fail' | OnSchemaBreak` determines what should happen if a breaking change to the schema is detected (e.g. if you need more global or local state that was previously requested when the contract was originally created) +- `onUpdate?: 'update' | 'replace' | 'fail' | OnUpdate` determines what should happen if an update to the smart contract is detected (e.g. the TEAL code has changed since last deployment) +- `existingDeployments?: AppLookup` optionally allows the [app lookup](#getcreatorappsbyname) to be skipped if it's already been retrieved + +### Idempotency + +`deployApp` is idempotent which means you can safely call it again multiple times and it will only apply any changes it detects. If you call it again straight after calling it then it will do nothing. + +### Compilation and template substitution + +When compiling TEAL template code, the capabilities described in the [design above](#design) are present, namely the ability to supply deploy-time parameters and the ability to control immutability and permanence of the smart contract at deploy-time. + +In order for a smart contract to be able to use this functionality, it must have a TEAL Template that contains the following: + +- `TMPL_{key}` - Which can be replaced with a number or a string / byte array which wil be automatically hexadecimal encoded +- `TMPL_UPDATABLE` - Which will be replaced with a `1` if an app should be updatable and `0` if it shouldn't (immutable) +- `TMPL_DELETABLE` - Which will be replaced with a `1` if an app should be deletable and `0` if it shouldn't (permanent) + +If you are building a smart contract using the [beaker_production AlgoKit template](https://github.com/algorandfoundation/algokit-beaker-default-template) if provides a reference implementation out of the box for the deploy-time immutability and permanence control. + +If you passed in a TEAL template for the approvalProgram or clearProgram (i.e. a `string` rather than a `Uint8Array`) then `deployApp` will return the [compilation result](../code/interfaces/types_app.CompiledTeal.md) of substituting then compiling the TEAL template(s) in the following properties of the return value: + +- `compiledApproval?: CompiledTeal` +- `compiledClear?: CompiledTeal` + +Template substitution is done by executing `algokit.performTemplateSubstitutionAndCompile(tealCode, algod, templateParams?, deploymentMetadata?)`, which in turn calls the following in order: + +- `algokit.performTemplateSubstitution(tealCode, templateParams)` - Replaces the `templateParams` by looking for `TMPL_{key}` +- `algokit.replaceDeployTimeControlParams(tealCode, deploymentMetadata)` - If `deploymentMetadata` is provided, it allows for deploy-time immutability and permanence control by replacing `TMPL_UPDATABLE` with `deploymentMetadata.updatable` if it's not `undefined` and replacing `TMPL_DELETABLE` with `deploymentMetadata.deletable` if it's not `undefined` +- `algokit.compileTeal(tealCode, algod)` - Sends the final TEAL to algod for compilation and returns the result including the source map + +### Return value + +When `deployApp` executes it may do one of the following (which you can determine by looking at the `operationPerformed` field on the return value from the function): + +- `create` - The smart contract app is created +- `update` - The smart contract app is updated +- `replace` - The smart contract app was deleted and created again (in an atomic transaction) +- `nothing` - Nothing was done since it was detected the existing smart contract app deployment was up to date + +As well as the `operationPerformed` parameter and the [optional compilation result](#compilation-and-template-substitution), the return value will have the [`AppMetadata`](../code/interfaces/types_app.AppMetadata.md) [fields](#getcreatorappsbyname) present. + +Based on the value of `operationPerformed` there will be other data available in the return value: + +- If `create`, `update` or `replace` then it will have [`ConfirmedTransactionResults`](transaction.md#sendtransactionresult) and `{return?: ABIReturn}` (which will be populated if an ABI method was executed) +- If `replace` then it will also have `{deleteReturn?: ABIReturn, deleteResult: ConfirmedTransactionResult}` to capture the result of the deletion of the existing app diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/app.md b/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/app.md new file mode 100644 index 000000000..eb58bb259 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/app.md @@ -0,0 +1,158 @@ +# App management + +App management is a higher-order use case capability provided by AlgoKit Utils that builds on top of the core capabilities. It allows you to create, update, delete, call (ABI and otherwise) smart contract apps and the metadata associated with them (including state and boxes). + +## `AppCallArgs` + +All calls to smart contracts will allow you to optionally specify the arguments you want to pass in to the call. + +This [type](../code/modules/types_app.md#appcallargs) is a union of two types: `RawAppCallArgs` and `ABIAppCallArgs`. + +### `RawAppCallArgs` + +[`RawAppCallArgs`](../code/interfaces/types_app.RawAppCallArgs.md) allows you to explicitly specify all of the arguments and has the following properties (all of which are optional): + +- `accounts: (string | algosdk.Address)[]` - Any accounts to add to the [accounts array](https://developer.algorand.org/docs/get-details/dapps/smart-contracts/apps/#reference-arrays) either as the `string` or `algosdk.Address` representation of the public address of the account(s) +- `appArgs: (Uint8Array | string)[]` - Any [arguments to pass to the smart contract call](https://developer.algorand.org/docs/get-details/dapps/smart-contracts/apps/#reference-arrays), either as the binary representation or a string (that will be encoded to binary using `TextEncoder`) +- `boxes: (BoxReference | BoxIdentifier | algosdk.BoxReference)[]` - Any [boxes](#referencing-boxes) to load to the [boxes array](https://developer.algorand.org/docs/get-details/dapps/smart-contracts/apps/#reference-arrays) +- `apps: number[]`: The ID of any apps to load to the [foreign apps array](https://developer.algorand.org/docs/get-details/dapps/smart-contracts/apps/#reference-arrays) +- `assets: number[]`: The ID of any assets to load to the [foreign assets array](https://developer.algorand.org/docs/get-details/dapps/smart-contracts/apps/#reference-arrays) +- `lease: string | Uint8Array`: A [lease](https://developer.algorand.org/articles/leased-transactions-securing-advanced-smart-contract-design/) to assign to the transaction to enforce a mutually exclusive transaction (useful to prevent double-posting and other scenarios) + +### `ABIAppCallArgs` + +[`ABIAppCallArgs`](../code/modules/types_app.md#abiappcallargs) allows you to specify an [ARC-0004 ABI call](https://developer.algorand.org/docs/get-details/dapps/smart-contracts/ABI/) + +- `method: algosdk.ABIMethodParams | algosdk.ABIMethod` - The ABI method to call +- `methodArgs: ABIAppCallArg[]` - The arguments to pass to the ABI call, which can be one of: + - `algosdk.ABIArgument` - Which can be one of: + - `boolean` + - `number` + - `bigint` + - `string` + - `Uint8Array` + - An array of one of the above types + - `algosdk.TransactionWithSigner` + - [`TransactionToSign`](transaction.md#signing) + - `algosdk.Transaction` + - `Promise` - which allows you to use an AlgoKit Utils method call that [returns a transaction](transaction.md#sendtransactionresult) without needing to await the call and extract the transaction, if you do this be sure to use `skipWaiting: true` when specifying the [sending parameters](transaction.md#sendtransactionparams) so you get the transaction without sending it to the network +- `boxes: (BoxReference | BoxIdentifier | algosdk.BoxReference)[]` - Any [boxes](#referencing-boxes) to load to the [boxes array](https://developer.algorand.org/docs/get-details/dapps/smart-contracts/apps/#reference-arrays) +- `lease: string | Uint8Array`: A [lease](https://developer.algorand.org/articles/leased-transactions-securing-advanced-smart-contract-design/) to assign to the transaction to enforce a mutually exclusive transaction (useful to prevent double-posting and other scenarios) + +### Utility methods + +If you want to manually construct a transaction, but use these types to specify the arguments then you can use the following methods: + +- [`algokit.getAppArgsForTransaction`](../code/modules/index.md#getappargsfortransaction) - Takes a `RawAppCallArgs` object and returns the corresponding fields ready to set onto an `algosdk.Transaction` +- [`algokit.getAppArgsForABICall`](../code/modules/index.md#getappargsforabicall) - Takes a `ABIAppCallArgs` object and returns the corresponding fields ready to pass into `addMethodCall` on `AtomicTransactionComposer` + +## Referencing boxes + +To reference a box in a transaction using AlgoKit Utils, you can specify one of the following types: + +- `BoxIdentifier` - Which can be one of: + - `string` - Which will be encoded as a box name using `TextEncoder` + - `Uint8Array` - Which will be used directly + - `SendTransactionFrom` - Which will be converted into the public address of the [sender corresponding to the account](account.md) and the public key encoded to binary + - This type of encoding is compatible with directly referencing an account address within the smart contract (e.g. `(address := pt.abi.Address()).set(pt.Txn.sender())` in PyTEAL) +- `BoxReference` - Which is an interface that has two fields: + - `appId: number` - The app ID + - `name: BoxIdentifier` - The name, per the above type +- `algosdk.BoxReference` - The in-built algosdk `BoxReference` type, which has two properties: + - `appIndex: number` + - `name: UInt8Array` - The name in binary + +If you specify a `BoxIdentifier` directly outside of the `BoxReference` type then the behaviour is to load the box from the current app the transaction that box identifier appears in. To see more about how box references work consult the [official documentation](https://developer.algorand.org/articles/smart-contract-storage-boxes/). + +### `BoxName` + +To get a box reference when reading box state there is a helpful [`BoxName`](../code/interfaces/types_app.BoxName.md) type that is exposed, which provides the following properties: + +- `name: string` +- `nameBase64: string` +- `nameRaw: Uint8Array` + +## Creating and updating apps + +### `createApp` + +To create an app you can call [`algokit.createApp(createPayload, algod)`](../code/modules/index.md#createapp). See the tests for an [example](../../src/app.spec.ts). + +The payload to configure an app consists of a union of [`SendTransactionParams`](transaction.md#sendtransactionparams) and the [following properties](../code/interfaces/types_app.CreateAppParams.md): + +- Required + - `from: SendTransactionFrom` - The [account](account.md) (with private key loaded) that will send the transaction + - `approvalProgram: Uint8Array | string` - The approval program as raw teal (string) or compiled teal, base 64 encoded as a byte array (Uint8Array) + - `clearStateProgram: Uint8Array | string` - The clear state program as raw teal (string) or compiled teal, base 64 encoded as a byte array (Uint8Array) + - `schema: AppStorageSchema` - The storage schema to request for the created app + - `onCompleteAction?: algosdk.OnApplicationComplete` - The on-completion action to specify for the call; defaults to NoOp +- Optional: + - `transactionParams: SuggestedParams` - Any [transaction parameters](transaction.md#transaction-params) + - `note: TransactionNote` - A [transaction note](transaction.md#transaction-notes) + - `args: AppCallArgs` - Any [arguments](#appcallargs) passed in to the app call + +If you pass in `approvalProgram` or `clearProgram` as a string then it will automatically be compiled using Algod and the compilation result will be returned from the function (including the source map). To skip this behaviour you can pass in the compiled TEAL as `Uint8Array`. + +If you pass in args that represent an ABI then it will use an `AtomicTransactionComposer` to construct and send the transaction(s). Because it's possible that other transactions may be present as ABI arguments, the full set of transactions that were sent are returned in `transactions` and the primary transaction for the create call will also be available in `transaction`. If you pass in the `atc` or `skipSending: true` then it won't execute the transaction and will simply return the transaction(s). The `return` value will have any ABI return value within it. + +### `updateApp` + +To update an app you can call [`algokit.updateApp(updatePayload, algod)`](../code/modules/index.md#updateapp). + +The update payload and behaviour is the same as `createApp` with two payload differences: + +- `schema` is not present, since it can only be set when creating a smart contract +- `appId: number` is present (required), which specifies the ID of the app to update + +## Calling an app + +To call an app outside of creation or update you can call [`algokit.callApp(callPayload, algod)`](../code/modules/index.md#callapp). + +The payload to configure an app call consists of a union of [`SendTransactionParams`](transaction.md#sendtransactionparams) and the [following properties](../code/interfaces/types_app.AppCallParams.md): + +- Required: + + - `appId: number` - The ID of the app to call + - `callType: AppCallType | algosdk.OnApplicationComplete` - The [on-completion action](https://developer.algorand.org/docs/get-details/dapps/smart-contracts/apps/#the-lifecycle-of-a-smart-contract) for the call (either as an `algosdk.OnApplicationComplete` enum or a [string enum](../code/modules/types_app.md#appcalltype)) + - `from: SendTransactionFrom` - The [account](account.md) (with private key loaded) that will send the transaction + +- Optional: + - `transactionParams: SuggestedParams` - Any [transaction parameters](transaction.md#transaction-params) + - `note: TransactionNote` - A [transaction note](transaction.md#transaction-notes) + - `args: AppCallArgs` - Any [arguments](#appcallargs) passed in to the app call + +If you pass in args that represent an ABI then it will use an `AtomicTransactionComposer` to construct and send the transaction(s). Because it's possible that other transactions may be present as ABI arguments, the full set of transactions that were sent are returned in `transactions` and the primary transaction for the create call will also be available in `transaction`. If you pass in the `atc` or `skipSending: true` then it won't execute the transaction and will simply return the transaction(s). The `return` value will have any ABI return value within it. + +## Accessing state + +### Global state + +To access and parse global state you can use the following methods: + +- [`algokit.getAppGlobalState(appId, algod)`](../code/modules/index.md#getappglobalstate) - Returns the current global state for the given app ID decoded into an object keyed by the UTF-8 representation of the state key with various parsed versions of the value (base64, UTF-8 and raw binary) +- [`decodeAppState(state)`](../code/modules/index.md#decodeappstate) - Takes the raw response from algod API for global state and returned a friendly decoded object (this is automatically used by `getAppGlobalState`) + +### Local state + +To access and parse local state you can use the following methods: + +- [`algokit.getAppLocalState(appId, algod)`](../code/modules/index.md#getapplocalstate) - Returns the current local state for the given app ID decoded into an object keyed by the UTF-8 representation of the state key with various parsed versions of the value (base64, UTF-8 and raw binary) +- [`decodeAppState(state)`](../code/modules/index.md#decodeappstate) - Takes the raw response from algod API for local state and returned a friendly decoded object (this is automatically used by `getAppLocalState`) + +### Boxes + +To access and parse box values and names for an app you can use the following methods: + +- [`algokit.getAppBoxNames(appId, algod)`](../code/modules/index.md#getappboxnames) - Returns the current [box names](#boxname) for the given app ID +- [`algokit.getAppBoxValue(appId, boxName, algod)`](../code/modules/index.md#getappboxvalue) - Returns the binary value of the given box name for the given app ID +- [`algokit.getAppBoxValues(appId, boxNames, algod)`](../code/modules/index.md#getappboxvalues) - Returns the binary values of the given box names for the given app ID +- [`algokit.getAppBoxValueFromABIType(request, algod)`](../code/modules/index.md#getappboxvaluefromabitype) - Returns the parsed ABI value of the given box name for the given app ID for the provided ABI type +- [`algokit.getAppBoxValuesFromABIType(request, algod)`](../code/modules/index.md#getappboxvaluesfromabitype) - Returns the parsed ABI values of the given box names for the given app ID for the provided ABI type +- [`algokit.getBoxReference(box)`](../code/modules/index.md#getboxreference) - Returns an `algosdk.BoxReference` representation of the given [box identifier](#referencing-boxes), which is useful when constructing a raw `algosdk.Transaction` + +## Getting an app reference + +To get reference information and metadata about an existing app you can use the following methods: + +- [`algokit.getAppById(appId, algod)`](../code/modules/index.md#getappbyindex) - Returns an app reference by ID from algod +- [`algokit.lookupAccountCreatedApplicationByAddress(indexer, address, getAll?, paginationLimit?)`](../code/modules/index.md#lookupaccountcreatedapplicationbyaddress) - Returns all apps created by a given account from indexer diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/client.md b/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/client.md new file mode 100644 index 000000000..afd154038 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/client.md @@ -0,0 +1,43 @@ +# Client management + +Client management is one of the core capabilities provided by AlgoKit Utils. It allows you to create (auto-retry) [algod](https://developer.algorand.org/docs/rest-apis/algod), [indexer](https://developer.algorand.org/docs/rest-apis/indexer) and [kmd](https://developer.algorand.org/docs/rest-apis/kmd) clients against various networks resolved from environment or specified configuration. + +Any AlgoKit Utils function that needs one of these clients will take the underlying algosdk classes (`algosdk.Algodv2`, `algosdk.Indexer`, `algosdk.Kmd`) so inline with the [Modularity](../README.md#core-principles) principle you can use existing logic to get instances of these clients without needing to use the Client management capability if you prefer, including use of libraries like [useWallet](https://github.com/TxnLab/use-wallet) that have their own configuration mechanism. + +To see some usage examples check out the [automated tests](../../src/network-client.spec.ts). + +## Network configuration + +The network configuration is specified using the [`AlgoClientConfig`](../code/interfaces/types_network_client.AlgoClientConfig.md) interface. This same interface is used to specify the config for algod, indexer and kmd clients. + +There are a number of ways to produce one of these configuration objects: + +- Manually specifying an object that conforms with the interface, e.g. + ```typescript + { + server: 'https://myalgodnode.com' + } + // Or with the optional values: + { + server: 'https://myalgodnode.com', + port: 443, + token: 'SECRET_TOKEN' + } + ``` +- [`algokit.getConfigFromEnvOrDefaults()`](../code/modules/index.md#getconfigfromenvordefaults) - Loads the Algod client config, the Indexer client config and the Kmd config from well-known environment variables; useful to have code that can work across multiple blockchain environments (including LocalNet), without having to change +- [`algokit.getAlgodConfigFromEnvironment()`](../code/modules/index.md#getalgodconfigfromenvironment) - Loads an Algod client config from well-known environment variables; useful to have code that can work across multiple blockchain environments (including LocalNet), without having to change +- [`algokit.getIndexerConfigFromEnvironment()`](../code/modules/index.md#getindexerconfigfromenvironment) - Loads an Indexer client config from well-known environment variables; useful to have code that can work across multiple blockchain environments (including LocalNet), without having to change +- [`algokit.getAlgoNodeConfig(network, config)`](../code/modules/index.md#getalgo) - Loads an Algod or indexer config against [AlgoNode](https://algonode.io/api/) to either MainNet or TestNet +- [`getDefaultLocalNetConfig(configOrPort)`](../code/modules/index.md#getdefaultlocalnetconfig) - Loads an Algod, Indexer or Kmd config against [LocalNet](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/features/localnet.md) using the default configuration + +## Clients + +Once you have the configuration for a client, to get the client you can use the following functions: + +- [`algokit.getAlgoClient(config)`](../code/modules/index.md#getalgoclient) - Returns an Algod client for the given configuration; the client automatically retries on transient HTTP errors; if one isn't provided it retrieves it from the environment +- [`algokit.getAlgoIndexerClient(config)`](../code/modules/index.md#getalgoindexerclient) - Returns an Indexer client for given configuration; if one isn't provided it retrieves it from the environment +- [`algokit.getAlgoKmdClient(config)`](../code/modules/index.md#getalgokmdclient) - Returns a Kmd client for the given configuration; if one isn't provided it retrieves it from the environment + +## Automatic retry + +When receiving an Algod client from AlgoKit Utils, it will be a special wrapper client that has transient failure retries in there. This is done via the [`AlgoHttpClientWithRetry`](../code/classes/types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md) class. diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/indexer.md b/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/indexer.md new file mode 100644 index 000000000..956bbcddc --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/indexer.md @@ -0,0 +1,72 @@ +# Indexer lookups / searching + +Indexer lookups / searching is a higher-order use case capability provided by AlgoKit Utils that builds on top of the core capabilities. It provides type-safe indexer API wrappers (no more `Record` pain), including automatic pagination control. + +To see some usage examples check out the [automated tests](../../src/indexer-lookup.spec.ts). + +## Indexer wrapper functions + +There is a subset of [indexer API calls](https://developer.algorand.org/docs/rest-apis/indexer) that are exposed as easy to use methods with correct typing exposed and automatic pagination for multi item returns. + +- [`algokit.lookupTransactionById(transactionId, indexer)`](../code/modules/index.md#lookuptransactionbyid) - Finds a transaction by ID +- [`algokit.lookupAccountByAddress(accountAddress, indexer)`](../code/modules/index.md#lookupaccountbyaddress) - Finds an account by address +- [`algokit.lookupAccountCreatedApplicationByAddress(indexer, address, getAll?, paginationLimit?)`](../code/modules/index.md#lookupaccountcreatedapplicationbyaddress) - Finds all applications created for an account +- [`algokit.searchTransactions(indexer, searchCriteria, paginationLimit?)`](../code/modules/index.md#searchtransactions) - Search for transactions with a given set of criteria +- [`algokit.executePaginatedRequest(extractItems, buildRequest)`](../code/modules/index.md#executepaginatedrequest) - Execute the given indexer request with automatic pagination + +### Search transactions example + +To use the `algokit.searchTransaction` method, you can follow this example as a starting point: + +```typescript +const transactions = await algokit.searchTransactions(indexer, (s) => s.txType('pay').addressRole('sender').address(myAddress)) +``` + +### Automatic pagination example + +To use the `algokit.executePaginatedRequest` method, you can follow this example as a starting point: + +```typescript +const transactions = await executePaginatedRequest( + (response: TransactionSearchResults) => { + return response.transactions + }, + (nextToken) => { + let s = indexer.searchForTransactions().txType('pay').address(myAddress).limit(1000) + if (nextToken) { + s = s.nextToken(nextToken) + } + return s + }, +) +``` + +It takes the first lambda to translate the raw response into the array that should keep getting appended as the pagination is followed and the second lambda constructs the request (without the `.do()` call), including populating the pagination token. + +## Indexer API response types + +The response model type definitions for the majority of [indexer API](https://developer.algorand.org/docs/rest-apis/indexer) are exposed from the `types/indexer` namespace in AlgoKit Utils. This is so that you can have a much better experience than the default response type of `Record` from the indexer client in `algosdk`. If there is a type you want to use that is missing feel free to [submit a pull request](https://github.com/algorandfoundation/algokit-utils-ts/pulls) to [add the type(s)](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts). + +To access these types you can import them: + +```typescript +import { /* ... */ } '@algorandfoundation/algokit-utils/types/indexer' +``` + +As a general convention, the response types are named `{TypeName}Result` for a single item result and `{TypeName}Results` for a multiple item result where `{TypeName}` is: + +- `{Entity}Lookup` for an API call response that returns a lookup for a single entity e.g. `AssetLookupResult` +- `{Entity}Search` for an API call response that searches for a type of entity e.g. `TransactionSearchResults` +- The `UpperCamelCase` name of a given model type as specified in the [official documentation](https://developer.algorand.org/docs/rest-apis/indexer) for any sub-types within a response e.g. `ApplicationResult` + +The reason `Result/Results` is suffixed to the type is to avoid type name clashes for commonly used types from `algosdk` like `Transaction`. + +To use these types with an indexer call you simply need to find the right result type and cast the response from `.do()` for the call in question, e.g.: + +```typescript +import { TransactionLookupResult } from '@algorandfoundation/algokit-utils/types/indexer' + +... + +const transaction = (await indexer.lookupTransactionByID(transactionId).do()) as TransactionLookupResult +``` diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/testing.md b/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/testing.md new file mode 100644 index 000000000..74d81469c --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/testing.md @@ -0,0 +1,204 @@ +# Automated testing + +Automated testing is a higher-order use case capability provided by AlgoKit Utils that builds on top of the core capabilities. It allows you to use terse, robust automated testing primitives that work across any testing framework (including jest and vitest) to facilitate fixture management, quickly generating isolated and funded test accounts, transaction logging, indexer wait management and log capture. + +To see some usage examples check out the all of the [automated tests](../../src/) and the various \*.spec.ts files (AlgoKit Utils [dogfoods](https://en.wikipedia.org/wiki/Eating_your_own_dog_food) it's own testing library). Alternatively, you can see an example of using this library to test a smart contract with [the tests](https://github.com/algorandfoundation/nft_voting_tool/blob/main/src/algorand/smart_contracts/tests/voting.spec.ts) for the [on-chain voting tool](https://github.com/algorandfoundation/nft_voting_tool#readme). + +## Module import + +The testing capability is not exposed from the [root algokit module](../code/modules/index.md) so there is a clear separation between testing functionality and non-testing functionality. + +To access all of the functionality in the testing capability individually, you can import the [testing module](../code/modules/testing.md): + +```typescript +import * as algotesting from '@algorandfoundation/algokit-utils/testing' +``` + +## Algorand fixture + +In general, the only entrypoint you will need to use the testing capability is just by importing the `algorandFixture` since it exposes the rest of the functionality in a manner that is easy to integrate with an underlying test framework like Jest or vitest: + +```typescript +import { algorandFixture } from '@algorandfoundation/algokit-utils/testing' +``` + +### Using with Jest + +To integrate with [Jest](https://jestjs.io/) you need to pass the `fixture.beforeEach` method into Jest's `beforeEach` method and then within each test you can access `fixture.context` to access per-test isolated fixture values. + +```typescript +import { describe, test, beforeEach } from '@jest/globals' +import { algorandFixture } from './testing' + +describe('MY MODULE', () => { + const fixture = algorandFixture() + beforeEach(fixture.beforeEach, 10_000) + + test('MY TEST', async () => { + const { algod, testAccount /* ... */ } = fixture.context + + // Test stuff! + }) +}) +``` + +Occasionally there may be a delay when first running the fixture setup so we add a 10s timeout to avoid intermittent test failures (`10_000`). + +### Using with vitest + +To integrate with [vitest](https://vitest.dev/) you need to pass the `fixture.beforeEach` method into vitest's `beforeEach` method and then within each test you can access `fixture.context` to access per-test isolated fixture values. + +```typescript +import { describe, test, beforeEach } from 'vitest' +import { algorandFixture } from './testing' + +describe('MY MODULE', () => { + const fixture = algorandFixture() + beforeEach(fixture.beforeEach, 10_000) + + test('MY TEST', async () => { + const { algod, testAccount /* ... */ } = fixture.context + + // Test stuff! + }) +}) +``` + +### Fixture configuration + +When calling `algorandFixture()` you can optionally pass in some fixture configuration, with any of these properties (all optional): + +- `algod?: Algodv2` - An optional algod client, if not specified then it will create one against environment variables defined network (if present) or default LocalNet +- `indexer?: Indexer` - An optional indexer client, if not specified then it will create one against environment variables defined network (if present) or default LocalNet +- `kmd?: Kmd` - An optional kmd client, if not specified then it will create one against environment variables defined network (if present) or default LocalNet +- `testAccountFunding?: AlgoAmount` - The [amount](./amount.md) of funds to allocate to the default testing account, if not specified then it will get `10` ALGOs + +### Using the fixture context + +The `fixture.context` property is of type [`AlgorandTestAutomationContext`](../code/interfaces/types_testing.AlgorandTestAutomationContext.md) exposes the following properties from which you can pick which ones you want in a given test using an object [destructuring assignment](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment): + +- `algod: Algodv2` - Proxy Algod client instance that will log sent transactions in `transactionLogger` +- `indexer: Indexer` - Indexer client instance +- `kmd: Kmd` - KMD client instance +- `transactionLogger: TransactionLogger` - Transaction logger that will log transaction IDs for all transactions issued by `algod` +- `testAccount: Account` - Funded test account that is ephemerally created for each test +- `generateAccount: (params: GetTestAccountParams) => Promise` - Generate and fund an additional ephemerally created account +- `waitForIndexer: () => Promise` - Wait for the indexer to catch up with all transactions logged by transactionLogger +- `waitForIndexerTransaction: (transactionId: string) => Promise` - Wait for the indexer to catch up with the given transaction ID + +## Log capture fixture + +If you want to capture log messages from AlgoKit that are issued within your test so that you can assert on them or parse them for debugging information etc. then you can use the log capture fixture. + +```typescript +import { algoKitLogCaptureFixture } from '@algorandfoundation/algokit-utils/testing' +``` + +The log capture fixture works by setting the logger within the AlgoKit configuration to be a [`TestLogger`](../code/classes/testing.TestLogger.md) during the test run. + +### Using with Jest + +To integrate with [Jest](https://jestjs.io/) you need to pass the `fixture.beforeEach` method into Jest's `beforeEach` method and then within each test you can access `fixture.context` to access per-test isolated fixture values. + +```typescript +import { describe, test, beforeEach, afterEach } from '@jest/globals' +import { algoKitLogCaptureFixture } from './testing' + +describe('MY MODULE', () => { + const logs = algoKitLogCaptureFixture() + beforeEach(logs.beforeEach) + afterEach(logs.afterEach) + + test('MY TEST', async () => { + // Test stuff! + + const capturedLogs = logs.testLogger.capturedLogs + // do stuff with the logs + }) +}) +``` + +### Using with vitest + +To integrate with [vitest](https://vitest.dev/) you need to pass the `fixture.beforeEach` method into vitest's `beforeEach` method and then within each test you can access `fixture.context` to access per-test isolated fixture values. + +```typescript +import { describe, test, beforeEach, afterEach } from 'vitest' +import { algoKitLogCaptureFixture } from './testing' + +describe('MY MODULE', () => { + const logs = algoKitLogCaptureFixture() + beforeEach(logs.beforeEach) + afterEach(logs.afterEach) + + test('MY TEST', async () => { + // Test stuff! + + const capturedLogs = logs.testLogger.capturedLogs + // do stuff with the logs + }) +}) +``` + +### Snapshot testing the logs + +If you want to quickly pin some behaviour of what logic you have does in terms of invoking AlgoKit methods you can do a [snapshot test](https://jestjs.io/docs/snapshot-testing) / [approval test](https://approvaltests.com/) of the captured log output. The only problem is this output will contain identifiers that will change for every test run and thus will constantly break the snapshot. In order to work around this you can use the `getLogSnapshot` method on the `TestLogger`, which will replace those changing values with predictable strings to keep the snapshot integrity intact. + +This might look something like this: + +```typescript +const { algod, indexer, testAccount } = fixture.context +const result = await algokit.deployApp(getAppDeploymentParams(), algod, indexer) +expect( + logging.testLogger.getLogSnapshot({ + accounts: [testAccount], + transactions: [result.transaction], + apps: [result.appId], + }), +).toMatchSnapshot() +``` + +## Waiting for indexer + +Often there will be things that you do in your test that you may want to assert in using data that is exclusively in indexer such as transaction notes. The problem is indexer asynchronously indexes the data in algod, even when devmode is turned on and algod instantly confirms transactions. + +This means it's easy to create tests that are flaky and have intermittent test failures (sometimes indexer is up to date and other times it hasn't caught up yet). + +The testing capability provides mechanisms for waiting for indexer to catch up, namely: + +- `algotesting.runWhenIndexerCaughtUp(run: () => Promise)` - Executes the given action every 200ms up to 20 times until there is no longer an error with a `status` property with `404` and then returns the result of the action; this will work for any call that calls indexer APIs expecting to return a single record +- `algorandFixture.waitForIndexer()` - Waits for indexer to catch up with all transactions that have been captured by the `transactionLogger` in the Algorand fixture +- `algorandFixture.waitForIndexerTransaction(transactionId)` - Waits for indexer to catch up with the single transaction of the given ID + +## Logging transactions + +When testing, it can be useful to capture all of the transactions that have been issued with a given test run. They can then be asserted on, or used for [waiting for indexer](#waiting-for-indexer), etc. + +The testing capability provides the ability to capture transactions via the [`TransactionLogger`](../code/classes/testing.TransactionLogger.md) class. + +The `TransactionLogger` has the following methods: + +- `logRawTransaction(signedTransactions: Uint8Array | Uint8Array[])` - Logs the IDs of the given signed transaction(s) +- `capture(algod)` - Returns a proxy `algosdk.Algodv2` instance that wraps the given `algod` client that will call `logRawTransaction` for every call to `sendRawTransaction` on that algod instance +- `sentTransactionIds` - Returns the currently captured list of transaction IDs that have been logged +- `clear()` - Clears the current list of transaction IDs +- `waitForIndexer(indexer)` - [Waits for the given indexer instance to catch up](#waiting-for-indexer) with the currently logged transaction IDs + +The easiest way to use this functionality is via the [Algorand fixture](#algorand-fixture), which automatically provides a `transactionLogger` and a proxy `algod` connected to that `transactionLogger`. + +## Getting a test account + +When testing, it's often useful to ephemerally generate random accounts, fund them with some number of ALGOs and then use that account to perform transactions. By creating an ephemeral, random account you naturally get isolation between tests and test runs and don't need to start from a specific blockchain network state. This makes test less flakey, and also means the same test can be run against LocalNet and (say) TestNet. + +The key when generating a test account is getting hold of a [dispenser](./transfer.md#dispenser) and then [ensuring the test account is funded](./transfer.md#ensurefunded). + +To make it easier to quickly get a test account the testing capability provides the following mechanisms: + +- [`algotesting.getTestAccount(testAccountParams, algod, kmd?)`](../code/modules/testing.md#gettestaccount) - Generates a random new account, logs the mnemonic of the account (unless suppressed), funds it from the [dispenser](./transfer.md#dispenser) +- `algorandFixture.testAccount` - A test account that is always generated for every test (log output suppressed to reduce noise, but worth noting that means the mnemonic isn't logged for this account), by default it is given 10 ALGOs unless overridden in the [fixture config](#fixture-configuration) +- [`algorandFixture.generateAccount(testAccountParams)`](../code/interfaces/types_testing.AlgorandTestAutomationContext.md#generateaccount) - Allows you to quickly generate a test account with the `algod` and `kmd` instances that are part of the given fixture + +The parameters object that controls test account generation, [`GetTestAccountParams`](../code/interfaces/types_testing.GetTestAccountParams.md), has the following properties: + +- `initialFunds: AlgoAmount` - Initial funds to ensure the account has +- `suppressLog?: boolean` - Whether to suppress the log (which includes a mnemonic) or not (default: do not suppress the log) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/transaction.md b/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/transaction.md new file mode 100644 index 000000000..3497e5d4c --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/transaction.md @@ -0,0 +1,95 @@ +# Transaction management + +Transaction management is one of the core capabilities provided by AlgoKit Utils. It allows you to send single, grouped or Atomic Transaction Composer transactions with consistent and highly configurable semantics, including configurable control of transaction notes (including ARC-0002), logging, fees, multiple sender account types, and sending behaviour. + +## `SendTransactionParams` + +Any AlgoKit Utils function that needs to sign/send a transaction will generally take all or part of [`SendTransactionParams`](../code/interfaces/types_transaction.SendTransactionParams.md) interface, which represents a standard set of configurations that can be applied to a given transaction or transactions that are to be sent to an Algorand network. + +The following parameters are able to be provided, with all of them being optional: + +- **skipSending: boolean** - Whether to skip signing and sending the transaction to the chain (default: transaction signed and sent to chain, unless `atc` is specified) and instead just return the raw transaction, e.g. so you can add it to a group of transactions +- **skipWaiting: boolean** - Whether to skip waiting for the submitted transaction (only relevant if `skipSending` is `false` or unset) and turn this transaction send into an async operation +- **atc: AtomicTransactionComposer** - An optional `AtomicTransactionComposer` to add the transaction to, if specified then `skipSending: undefined` has the same effect as `skipSending: true` +- **suppressLog: boolean** - Whether to suppress log messages from transaction send, default: do not suppress +- **fee: AlgoAmount** - The flat fee you want to pay, useful for covering extra fees in a transaction group or app call +- **maxFee: AlgoAmount** - The maximum fee that you are happy to pay (default: unbounded) - if this is set it's possible the transaction could get rejected during network congestion +- **maxRoundsToWaitForConfirmation: number** - The maximum number of rounds to wait for confirmation, only applies if `skipWaiting` is `undefined` or `false`, default: wait up to 5 rounds + +## `SendTransactionResult` + +All AlgoKit Utils functions that prepare and/or send a transaction will generally return a [`SendTransactionResult` interface](../code/interfaces/types_transaction.SendTransactionResult.md) or some superset of that. This provides a consistent mechanism to interpret the results of a transaction send. + +It consists of two properties: + +- `transaction`: An `algosdk.Transaction` object that is either ready to send or represents the transaction that was sent +- `confirmation` (optional): An `algosdk.modelsv2.PendingTransactionResponse` object, which is a type-safe wrapper of the return from the algod pending transaction API noting that it will only be returned if the transaction was able to be confirmed (so won't represent a "pending" transaction) + +A useful pattern to use to access these properties is destructuring, e.g.: + +```typescript +const { transaction, confirmation } = await algokit.sendTransaction(...) +``` + +There are various variations of the `SendTransactionResult` that are exposed by various functions within AlgoKit Utils, including: + +- [`ConfirmedTransactionResult`](../code/interfaces/types_transaction.ConfirmedTransactionResult.md) - Where it's guaranteed that a confirmation will be returned (i.e. `skipSending` is not made available) +- [`ConfirmedTransactionResults`](../code/interfaces/types_transaction.ConfirmedTransactionResults.md) - Where it's both guaranteed that a confirmation will be returned, there is a primary driving transaction, but multiple transactions may be sent (e.g. when making an ABI app call which has dependant transactions) +- [`SendTransactionResults`](../code/interfaces/types_transaction.SendTransactionResults.md) - Where multiple transactions are being sent (`transactions` and `confirmations` are arrays that replace the singular `transaction` and `confirmation`) +- [`SendAtomicTransactionComposerResults`](../code/interfaces/types_transaction.SendAtomicTransactionComposerResults.md) - The result from sending the transactions within an `AtomicTransactionComposer`, it extends `SendTransactionResults` and adds a few other useful properties +- [`AppCallTransactionResult`](../code/interfaces/types_app.AppCallTransactionResult.md) - Result from calling a single app call (which potentially may result in multiple other transaction calls if it was an ABI method with dependant transactions) + +## Sending a transaction + +AlgoKit Utils provides three core helper methods that allow you to use the `SendTransactionParams` configuration when sending transactions. It also has many other methods that delegate to these underlying core methods such as `algokit.transferAlgos(...)`, etc.. + +- [`sendTransaction`](../code/modules/index.md#sendtransaction) - Signs and sends (if instructed to) a single transaction using the `SendTransactionParams` configuration +- [`sendGroupOfTransactions`](../code/modules/index.md#sendgroupoftransactions) - Takes an array of transactions to sign with associated `SendTransactionFrom` accounts and signs and sends (if instructed to) them as an atomic transaction group using the `SendTransactionParams` configuration +- [`sendAtomicTransactionComposer`](../code/modules/index.md#sendatomictransactioncomposer) - Signs and sends (if instructed to) the transactions and/or method calls loaded into an `AtomicTransactionComposer` object using the `SendTransactionParams` configuration + +All of these methods take `algosdk.Transaction` and/or `algosdk.AtomicTransactionComposer` objects so you can use them with transaction generation mechanisms outside of AlgoKit Utils per the [modularity principle](../README.md#core-principles). + +## Helpers + +The functionality provided by the transaction capability includes a set of lower level helpers that might be useful in their own right per the [modularity principle](../README.md#core-principles). + +### Signing + +If you want to sign a transaction there are the [`algokit.signTransaction(transaction, signer)`](../code/modules/index.md#signtransaction) method and [`algokit.getSenderTransactionSigner(sender)`](../code/modules/index.md#getsendertransactionsigner) methods that both work with `SendTransactionFrom` as described in the [Account capability](./account.md). + +There are also some methods that take a [`TransactionToSign`](../code/interfaces/types_transaction.TransactionToSign.md), which is the AlgoKit Utils equivalent of `algosdk.TransactionWithSigner`, but has a `SendTransactionFrom` as the signer. + +### Waiting + +There is a [`algokit.waitForConfirmation(transactionId, maxRoundsToWait, algod)`](../code/modules/index.md#waitforconfirmation) method which helps you wait until a given `algosdk.Transaction` has been confirmed by the network. + +### Fees + +If you want to control the fees of a transaction before sending then you can use: + +- [`algokit.capTransactionFee(transaction, maxAcceptableFee)`](../code/modules/index.md#captransactionfee) - Limit the acceptable maximum fee of a `algosdk.Transaction` or `algosdk.SuggestedParams` to a defined amount of algos. +- [`algokit.controlFees(transaction, feeControl)`](../code/modules/index.md#controlfees) - Allows you to control fees on a `algosdk.Transaction` or `algosdk.SuggestedParams` object either applying a flat fee or a max fee + +### Transaction notes + +If you want to create an encoded transaction note for adding to a transaction you can use the [`algokit.encodeTransactionNote(note)`](../code/modules/index.md#encodetransactionnote) function. This takes a `TransactionNote` type, which is a union of: + +- `null` or `undefined` if there is no note +- `Uint8Array` which is passed straight through +- Data that us turned into JSON, any one of: + - `string` + - `number` + - `any[]` + - `Record` +- A `Arc2TransactionNote` object, which creates an [ARC-0002 compliant transaction note](https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0002.md) and has the following properties: + - `dAppName` - The name of the app that is generating the note + - `format`: + - `m` - Message Pack format + - `b` - Byte string + - `u` - UTF-8 string + - `j` - JSON data + - `data` either a string or an object that is encoded to JSON (if `format` is `j`) + +### Transaction params + +If you want to specify transaction params to add to a transaction you can use the [`algokit.getTransactionParams(params, algod)`](../code/modules/index.md#gettransactionparams) method. This let's you pass in an existing params object if one exists or if that's `undefined` then it will retrieve a new params object from the Algod client. diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/transfer.md b/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/transfer.md new file mode 100644 index 000000000..82593bdd7 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/capabilities/transfer.md @@ -0,0 +1,37 @@ +# Algo transfers + +Algo transfers is a higher-order use case capability provided by AlgoKit Utils that builds on top of the core capabilities, particularly [Algo amount handling](./amount.md) and [Transaction management](./transaction.md). It allows you to easily initiate algo transfers between accounts, including dispenser management and idempotent account funding. + +To see some usage examples check out the [automated tests](../../src/transfer.spec.ts). + +## `transferAlgos` + +The key function to facilitate Algo transfers is `algokit.transferAlgos(transfer, algod)`, which returns a [`SendTransactionResult`](./transaction.md#sendtransactionresult) and takes a [`AlgoTransferParams`](../code/interfaces/types_transfer.AlgoTransferParams.md): + +- All properties in [`SendTransactionParams`](./transaction.md#sendtransactionparams) +- `from: SendTransactionFrom` - The account that will send the ALGOs +- `to: string` - The address of the account that will receive the ALGOs +- `amount: AlgoAmount` - The [amount](./amount.md) of ALGOs to send +- `transactionParams?: SuggestedParams` - The optional [transaction parameters](./transaction.md#transaction-params) +- `note?: TransactionNote` - The [transaction note](./transaction.md#transaction-notes) + +## `ensureFunded` + +The ability to automatically fund an account to have a minimum amount of disposable ALGOs to spend is incredibly useful for automation and deployment scripts. The function to facilitate this is `algokit.ensureFunded(funding, algod, kmd?)`, which returns a [`SendTransactionResult`](./transaction.md#sendtransactionresult) (or undefined if it didn't need to send a transaction) and takes a [`EnsureFundedParams`](../code/interfaces/types_transfer.EnsureFundedParams.md): + +- All properties in [`SendTransactionParams`](./transaction.md#sendtransactionparams) +- `accountToFund: SendTransactionFrom | string` - The account that is to be funded +- `fundingSource?: SendTransactionFrom` - The account that is the source of funds, if not specified then it will use the [dispenser](./account.md#dispenser) +- `minSpendingBalance: AlgoAmount` - The minimum balance of ALGOs that the account should have available to spend (i.e. on top of minimum balance requirement) +- `minFundingIncrement?: AlgoAmount` - When issuing a funding amount, the minimum amount to transfer (avoids many small transfers if this gets called often on an active account) +- `amount: AlgoAmount` - The [amount](./amount.md) of ALGOs to send +- `transactionParams?: SuggestedParams` - The optional [transaction parameters](./transaction.md#transaction-params) +- `note?: TransactionNote` - The [transaction note](./transaction.md#transaction-notes) + +The function calls Algod to find the current balance and minimum balance requirement, gets the difference between those two numbers and checks to see if it's more than the `minSpendingBalance` and if so then it will send the difference, or the `minFundingIncrement` if that is specified. + +## Dispenser + +If you want to programmtically send funds then you will often need a "dispenser" account that has a store of ALGOs that can be sent and a private key available for that dispenser account. + +There is a standard AlgoKit Utils function to get access to a [dispenser account](./account.md#accounts): [`algokit.getDispenserAccount(algod, kmd?)`](../code/modules/index.md#getdispenseraccount). When running against [LocalNet](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/features/localnet.md), the dispenser account can be automatically determined using the [Kmd API](https://developer.algorand.org/docs/rest-apis/kmd). When running against other networks like TestNet or MainNet the mnemonic (and optionally sender address if it's been rekeyed) of the dispenser account can be provided via environment variables (`process.env.DISPENSER_MNEMONIC` and optionally `process.env.DISPENSER_SENDER` if rekeyed). diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/README.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/README.md new file mode 100644 index 000000000..3dd222a6a --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/README.md @@ -0,0 +1,27 @@ +@algorandfoundation/algokit-utils + +# @algorandfoundation/algokit-utils + +## Table of contents + +### Modules + +- [index](modules/index.md) +- [testing](modules/testing.md) +- [types/account](modules/types_account.md) +- [types/algo-http-client-with-retry](modules/types_algo_http_client_with_retry.md) +- [types/amount](modules/types_amount.md) +- [types/amount.spec](modules/types_amount_spec.md) +- [types/app](modules/types_app.md) +- [types/app-client](modules/types_app_client.md) +- [types/app-client.spec](modules/types_app_client_spec.md) +- [types/app-spec](modules/types_app_spec.md) +- [types/config](modules/types_config.md) +- [types/indexer](modules/types_indexer.md) +- [types/logging](modules/types_logging.md) +- [types/logic-error](modules/types_logic_error.md) +- [types/network-client](modules/types_network_client.md) +- [types/testing](modules/types_testing.md) +- [types/transaction](modules/types_transaction.md) +- [types/transfer](modules/types_transfer.md) +- [types/urlTokenBaseHTTPClient](modules/types_urlTokenBaseHTTPClient.md) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/testing.TestLogger.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/testing.TestLogger.md new file mode 100644 index 000000000..6f7817bf5 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/testing.TestLogger.md @@ -0,0 +1,269 @@ +[@algorandfoundation/algokit-utils](../README.md) / [testing](../modules/testing.md) / TestLogger + +# Class: TestLogger + +[testing](../modules/testing.md).TestLogger + +Exposes an AlgoKit logger which captures log messages, while wrapping an original logger. +This is useful for automated testing. + +## Implements + +- [`Logger`](../modules/types_logging.md#logger) + +## Table of contents + +### Constructors + +- [constructor](testing.TestLogger.md#constructor) + +### Properties + +- [logs](testing.TestLogger.md#logs) +- [originalLogger](testing.TestLogger.md#originallogger) + +### Accessors + +- [capturedLogs](testing.TestLogger.md#capturedlogs) + +### Methods + +- [clear](testing.TestLogger.md#clear) +- [debug](testing.TestLogger.md#debug) +- [error](testing.TestLogger.md#error) +- [getLogSnapshot](testing.TestLogger.md#getlogsnapshot) +- [info](testing.TestLogger.md#info) +- [verbose](testing.TestLogger.md#verbose) +- [warn](testing.TestLogger.md#warn) + +## Constructors + +### constructor + +• **new TestLogger**(`originalLogger?`) + +Create a new test logger that wraps the given logger if provided. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `originalLogger?` | [`Logger`](../modules/types_logging.md#logger) | The optional original logger to wrap. | + +#### Defined in + +[src/testing/test-logger.ts:16](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/test-logger.ts#L16) + +## Properties + +### logs + +• `Private` **logs**: `string`[] + +#### Defined in + +[src/testing/test-logger.ts:10](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/test-logger.ts#L10) + +___ + +### originalLogger + +• `Private` **originalLogger**: `undefined` \| [`Logger`](../modules/types_logging.md#logger) + +#### Defined in + +[src/testing/test-logger.ts:9](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/test-logger.ts#L9) + +## Accessors + +### capturedLogs + +• `get` **capturedLogs**(): `string`[] + +Returns all logs captured thus far. + +#### Returns + +`string`[] + +#### Defined in + +[src/testing/test-logger.ts:22](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/test-logger.ts#L22) + +## Methods + +### clear + +▸ **clear**(): `void` + +Clears all logs captured so far. + +#### Returns + +`void` + +#### Defined in + +[src/testing/test-logger.ts:27](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/test-logger.ts#L27) + +___ + +### debug + +▸ **debug**(`message`, `...optionalParams`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `message` | `string` | +| `...optionalParams` | `unknown`[] | + +#### Returns + +`void` + +#### Implementation of + +Logger.debug + +#### Defined in + +[src/testing/test-logger.ts:77](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/test-logger.ts#L77) + +___ + +### error + +▸ **error**(`message`, `...optionalParams`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `message` | `string` | +| `...optionalParams` | `unknown`[] | + +#### Returns + +`void` + +#### Implementation of + +Logger.error + +#### Defined in + +[src/testing/test-logger.ts:61](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/test-logger.ts#L61) + +___ + +### getLogSnapshot + +▸ **getLogSnapshot**(`config?`): `string` + +Returns a captured log snapshot. +This helps ensure that the provided configuration items won't appear + with random values in the log snapshot, but rather will get substituted with predictable ids. + +https://jestjs.io/docs/snapshot-testing#2-tests-should-be-deterministic + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `config?` | [`LogSnapshotConfig`](../interfaces/types_testing.LogSnapshotConfig.md) | The snapshot configuration | + +#### Returns + +`string` + +The snapshotted logs. + +**`Example`** + +Jest Example +```typescript +const logger = new TestLogger() +... +expect(logger.getLogSnapshot()).toMatchSnapshot() +``` + +#### Defined in + +[src/testing/test-logger.ts:47](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/test-logger.ts#L47) + +___ + +### info + +▸ **info**(`message`, `...optionalParams`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `message` | `string` | +| `...optionalParams` | `unknown`[] | + +#### Returns + +`void` + +#### Implementation of + +Logger.info + +#### Defined in + +[src/testing/test-logger.ts:69](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/test-logger.ts#L69) + +___ + +### verbose + +▸ **verbose**(`message`, `...optionalParams`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `message` | `string` | +| `...optionalParams` | `unknown`[] | + +#### Returns + +`void` + +#### Implementation of + +Logger.verbose + +#### Defined in + +[src/testing/test-logger.ts:73](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/test-logger.ts#L73) + +___ + +### warn + +▸ **warn**(`message`, `...optionalParams`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `message` | `string` | +| `...optionalParams` | `unknown`[] | + +#### Returns + +`void` + +#### Implementation of + +Logger.warn + +#### Defined in + +[src/testing/test-logger.ts:65](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/test-logger.ts#L65) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/testing.TransactionLogger.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/testing.TransactionLogger.md new file mode 100644 index 000000000..a66e67335 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/testing.TransactionLogger.md @@ -0,0 +1,145 @@ +[@algorandfoundation/algokit-utils](../README.md) / [testing](../modules/testing.md) / TransactionLogger + +# Class: TransactionLogger + +[testing](../modules/testing.md).TransactionLogger + +Allows you to keep track of Algorand transaction IDs by wrapping an `Algodv2` in a proxy. +Useful for automated tests. + +## Table of contents + +### Constructors + +- [constructor](testing.TransactionLogger.md#constructor) + +### Properties + +- [\_sentTransactionIds](testing.TransactionLogger.md#_senttransactionids) + +### Accessors + +- [sentTransactionIds](testing.TransactionLogger.md#senttransactionids) + +### Methods + +- [capture](testing.TransactionLogger.md#capture) +- [clear](testing.TransactionLogger.md#clear) +- [logRawTransaction](testing.TransactionLogger.md#lograwtransaction) +- [waitForIndexer](testing.TransactionLogger.md#waitforindexer) + +## Constructors + +### constructor + +• **new TransactionLogger**() + +## Properties + +### \_sentTransactionIds + +• `Private` **\_sentTransactionIds**: `string`[] = `[]` + +#### Defined in + +[src/testing/transaction-logger.ts:9](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/transaction-logger.ts#L9) + +## Accessors + +### sentTransactionIds + +• `get` **sentTransactionIds**(): readonly `string`[] + +The list of transaction IDs that has been logged thus far. + +#### Returns + +readonly `string`[] + +#### Defined in + +[src/testing/transaction-logger.ts:14](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/transaction-logger.ts#L14) + +## Methods + +### capture + +▸ **capture**(`algod`): `default` + +Return a proxy that wraps the given Algodv2 with this transaction logger. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `algod` | `default` | The `Algodv2` to wrap | + +#### Returns + +`default` + +The wrapped `Algodv2`, any transactions sent using this algod instance will be logged by this transaction logger + +#### Defined in + +[src/testing/transaction-logger.ts:45](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/transaction-logger.ts#L45) + +___ + +### clear + +▸ **clear**(): `void` + +Clear all logged IDs. + +#### Returns + +`void` + +#### Defined in + +[src/testing/transaction-logger.ts:21](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/transaction-logger.ts#L21) + +___ + +### logRawTransaction + +▸ **logRawTransaction**(`signedTransactions`): `void` + +The method that captures raw transactions and stores the transaction IDs. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `signedTransactions` | `Uint8Array` \| `Uint8Array`[] | + +#### Returns + +`void` + +#### Defined in + +[src/testing/transaction-logger.ts:28](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/transaction-logger.ts#L28) + +___ + +### waitForIndexer + +▸ **waitForIndexer**(`indexer`): `Promise`<`void`\> + +Wait until all logged transactions IDs appear in the given `Indexer`. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `indexer` | `default` | + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/testing/transaction-logger.ts:50](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/transaction-logger.ts#L50) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_account.MultisigAccount.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_account.MultisigAccount.md new file mode 100644 index 000000000..4e8ba62c6 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_account.MultisigAccount.md @@ -0,0 +1,174 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/account](../modules/types_account.md) / MultisigAccount + +# Class: MultisigAccount + +[types/account](../modules/types_account.md).MultisigAccount + +Account wrapper that supports partial or full multisig signing. + +## Table of contents + +### Constructors + +- [constructor](types_account.MultisigAccount.md#constructor) + +### Properties + +- [\_addr](types_account.MultisigAccount.md#_addr) +- [\_params](types_account.MultisigAccount.md#_params) +- [\_signer](types_account.MultisigAccount.md#_signer) +- [\_signingAccounts](types_account.MultisigAccount.md#_signingaccounts) + +### Accessors + +- [addr](types_account.MultisigAccount.md#addr) +- [params](types_account.MultisigAccount.md#params) +- [signer](types_account.MultisigAccount.md#signer) +- [signingAccounts](types_account.MultisigAccount.md#signingaccounts) + +### Methods + +- [sign](types_account.MultisigAccount.md#sign) + +## Constructors + +### constructor + +• **new MultisigAccount**(`multisigParams`, `signingAccounts`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `multisigParams` | `MultisigMetadata` | +| `signingAccounts` | (`default` \| [`SigningAccount`](types_account.SigningAccount.md))[] | + +#### Defined in + +[src/types/account.ts:34](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L34) + +## Properties + +### \_addr + +• **\_addr**: `string` + +#### Defined in + +[src/types/account.ts:12](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L12) + +___ + +### \_params + +• **\_params**: `MultisigMetadata` + +#### Defined in + +[src/types/account.ts:10](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L10) + +___ + +### \_signer + +• **\_signer**: `TransactionSigner` + +#### Defined in + +[src/types/account.ts:13](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L13) + +___ + +### \_signingAccounts + +• **\_signingAccounts**: (`default` \| [`SigningAccount`](types_account.SigningAccount.md))[] + +#### Defined in + +[src/types/account.ts:11](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L11) + +## Accessors + +### addr + +• `get` **addr**(): `string` + +The address of the multisig account + +#### Returns + +`string` + +#### Defined in + +[src/types/account.ts:26](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L26) + +___ + +### params + +• `get` **params**(): `Readonly`<`MultisigMetadata`\> + +The parameters for the multisig account + +#### Returns + +`Readonly`<`MultisigMetadata`\> + +#### Defined in + +[src/types/account.ts:16](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L16) + +___ + +### signer + +• `get` **signer**(): `TransactionSigner` + +#### Returns + +`TransactionSigner` + +#### Defined in + +[src/types/account.ts:30](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L30) + +___ + +### signingAccounts + +• `get` **signingAccounts**(): readonly (`default` \| [`SigningAccount`](types_account.SigningAccount.md))[] + +The list of accounts that are present to sign + +#### Returns + +readonly (`default` \| [`SigningAccount`](types_account.SigningAccount.md))[] + +#### Defined in + +[src/types/account.ts:21](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L21) + +## Methods + +### sign + +▸ **sign**(`transaction`): `Uint8Array` + +Sign the given transaction + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `transaction` | `Uint8Array` \| `Transaction` | Either a transaction object or a raw, partially signed transaction | + +#### Returns + +`Uint8Array` + +The transaction signed by the present signers + +#### Defined in + +[src/types/account.ts:49](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L49) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_account.SigningAccount.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_account.SigningAccount.md new file mode 100644 index 000000000..13f905529 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_account.SigningAccount.md @@ -0,0 +1,149 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/account](../modules/types_account.md) / SigningAccount + +# Class: SigningAccount + +[types/account](../modules/types_account.md).SigningAccount + +Account wrapper that supports a rekeyed account + +## Implements + +- `default` + +## Table of contents + +### Constructors + +- [constructor](types_account.SigningAccount.md#constructor) + +### Properties + +- [\_account](types_account.SigningAccount.md#_account) +- [\_sender](types_account.SigningAccount.md#_sender) +- [\_signer](types_account.SigningAccount.md#_signer) + +### Accessors + +- [addr](types_account.SigningAccount.md#addr) +- [sender](types_account.SigningAccount.md#sender) +- [signer](types_account.SigningAccount.md#signer) +- [sk](types_account.SigningAccount.md#sk) + +## Constructors + +### constructor + +• **new SigningAccount**(`account`, `sender`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `account` | `default` | +| `sender` | `undefined` \| `string` | + +#### Defined in + +[src/types/account.ts:100](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L100) + +## Properties + +### \_account + +• `Private` **\_account**: `default` + +#### Defined in + +[src/types/account.ts:65](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L65) + +___ + +### \_sender + +• `Private` **\_sender**: `string` + +#### Defined in + +[src/types/account.ts:67](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L67) + +___ + +### \_signer + +• `Private` **\_signer**: `TransactionSigner` + +#### Defined in + +[src/types/account.ts:66](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L66) + +## Accessors + +### addr + +• `get` **addr**(): `string` + +Algorand address of the sender + +#### Returns + +`string` + +#### Implementation of + +Account.addr + +#### Defined in + +[src/types/account.ts:72](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L72) + +___ + +### sender + +• `get` **sender**(): `default` + +Algorand account of the sender address and signer private key + +#### Returns + +`default` + +#### Defined in + +[src/types/account.ts:93](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L93) + +___ + +### signer + +• `get` **signer**(): `TransactionSigner` + +Transaction signer for the underlying signing account + +#### Returns + +`TransactionSigner` + +#### Defined in + +[src/types/account.ts:86](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L86) + +___ + +### sk + +• `get` **sk**(): `Readonly`<`Uint8Array`\> + +Secret key belonging to the signer + +#### Returns + +`Readonly`<`Uint8Array`\> + +#### Implementation of + +Account.sk + +#### Defined in + +[src/types/account.ts:79](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L79) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md new file mode 100644 index 000000000..ef1baa49a --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md @@ -0,0 +1,196 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/algo-http-client-with-retry](../modules/types_algo_http_client_with_retry.md) / AlgoHttpClientWithRetry + +# Class: AlgoHttpClientWithRetry + +[types/algo-http-client-with-retry](../modules/types_algo_http_client_with_retry.md).AlgoHttpClientWithRetry + +A HTTP Client that wraps the Algorand SDK HTTP Client with retries + +## Hierarchy + +- [`URLTokenBaseHTTPClient`](types_urlTokenBaseHTTPClient.URLTokenBaseHTTPClient.md) + + ↳ **`AlgoHttpClientWithRetry`** + +## Table of contents + +### Constructors + +- [constructor](types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md#constructor) + +### Properties + +- [MAX\_BACKOFF\_MS](types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md#max_backoff_ms) +- [MAX\_TRIES](types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md#max_tries) +- [RETRY\_ERROR\_CODES](types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md#retry_error_codes) +- [RETRY\_STATUS\_CODES](types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md#retry_status_codes) + +### Methods + +- [callWithRetry](types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md#callwithretry) +- [delete](types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md#delete) +- [get](types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md#get) +- [post](types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md#post) + +## Constructors + +### constructor + +• **new AlgoHttpClientWithRetry**(`tokenHeader`, `baseServer`, `port?`, `defaultHeaders?`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `tokenHeader` | [`TokenHeader`](../modules/types_urlTokenBaseHTTPClient.md#tokenheader) | +| `baseServer` | `string` | +| `port?` | `string` \| `number` | +| `defaultHeaders` | `Record`<`string`, `any`\> | + +#### Inherited from + +[URLTokenBaseHTTPClient](types_urlTokenBaseHTTPClient.URLTokenBaseHTTPClient.md).[constructor](types_urlTokenBaseHTTPClient.URLTokenBaseHTTPClient.md#constructor) + +#### Defined in + +[src/types/urlTokenBaseHTTPClient.ts:48](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/urlTokenBaseHTTPClient.ts#L48) + +## Properties + +### MAX\_BACKOFF\_MS + +▪ `Static` `Private` `Readonly` **MAX\_BACKOFF\_MS**: ``10000`` + +#### Defined in + +[src/types/algo-http-client-with-retry.ts:8](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algo-http-client-with-retry.ts#L8) + +___ + +### MAX\_TRIES + +▪ `Static` `Private` `Readonly` **MAX\_TRIES**: ``5`` + +#### Defined in + +[src/types/algo-http-client-with-retry.ts:7](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algo-http-client-with-retry.ts#L7) + +___ + +### RETRY\_ERROR\_CODES + +▪ `Static` `Private` `Readonly` **RETRY\_ERROR\_CODES**: `string`[] + +#### Defined in + +[src/types/algo-http-client-with-retry.ts:13](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algo-http-client-with-retry.ts#L13) + +___ + +### RETRY\_STATUS\_CODES + +▪ `Static` `Private` `Readonly` **RETRY\_STATUS\_CODES**: `number`[] + +#### Defined in + +[src/types/algo-http-client-with-retry.ts:12](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algo-http-client-with-retry.ts#L12) + +## Methods + +### callWithRetry + +▸ `Private` **callWithRetry**(`func`): `Promise`<`BaseHTTPClientResponse`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `func` | () => `Promise`<`BaseHTTPClientResponse`\> | + +#### Returns + +`Promise`<`BaseHTTPClientResponse`\> + +#### Defined in + +[src/types/algo-http-client-with-retry.ts:25](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algo-http-client-with-retry.ts#L25) + +___ + +### delete + +▸ **delete**(`relativePath`, `data`, `query?`, `requestHeaders?`): `Promise`<`BaseHTTPClientResponse`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `relativePath` | `string` | +| `data` | `Uint8Array` | +| `query?` | `Query`<`string`\> | +| `requestHeaders` | `Record`<`string`, `string`\> | + +#### Returns + +`Promise`<`BaseHTTPClientResponse`\> + +#### Overrides + +[URLTokenBaseHTTPClient](types_urlTokenBaseHTTPClient.URLTokenBaseHTTPClient.md).[delete](types_urlTokenBaseHTTPClient.URLTokenBaseHTTPClient.md#delete) + +#### Defined in + +[src/types/algo-http-client-with-retry.ts:67](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algo-http-client-with-retry.ts#L67) + +___ + +### get + +▸ **get**(`relativePath`, `query?`, `requestHeaders?`): `Promise`<`BaseHTTPClientResponse`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `relativePath` | `string` | +| `query?` | `Query`<`string`\> | +| `requestHeaders` | `Record`<`string`, `string`\> | + +#### Returns + +`Promise`<`BaseHTTPClientResponse`\> + +#### Overrides + +[URLTokenBaseHTTPClient](types_urlTokenBaseHTTPClient.URLTokenBaseHTTPClient.md).[get](types_urlTokenBaseHTTPClient.URLTokenBaseHTTPClient.md#get) + +#### Defined in + +[src/types/algo-http-client-with-retry.ts:54](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algo-http-client-with-retry.ts#L54) + +___ + +### post + +▸ **post**(`relativePath`, `data`, `query?`, `requestHeaders?`): `Promise`<`BaseHTTPClientResponse`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `relativePath` | `string` | +| `data` | `Uint8Array` | +| `query?` | `Query`<`string`\> | +| `requestHeaders` | `Record`<`string`, `string`\> | + +#### Returns + +`Promise`<`BaseHTTPClientResponse`\> + +#### Overrides + +[URLTokenBaseHTTPClient](types_urlTokenBaseHTTPClient.URLTokenBaseHTTPClient.md).[post](types_urlTokenBaseHTTPClient.URLTokenBaseHTTPClient.md#post) + +#### Defined in + +[src/types/algo-http-client-with-retry.ts:58](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algo-http-client-with-retry.ts#L58) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_amount.AlgoAmount.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_amount.AlgoAmount.md new file mode 100644 index 000000000..1138c37ec --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_amount.AlgoAmount.md @@ -0,0 +1,163 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/amount](../modules/types_amount.md) / AlgoAmount + +# Class: AlgoAmount + +[types/amount](../modules/types_amount.md).AlgoAmount + +Wrapper class to ensure safe, explicit conversion between µAlgos, Algos and numbers + +## Table of contents + +### Constructors + +- [constructor](types_amount.AlgoAmount.md#constructor) + +### Properties + +- [amountInMicroAlgos](types_amount.AlgoAmount.md#amountinmicroalgos) + +### Accessors + +- [algos](types_amount.AlgoAmount.md#algos) +- [microAlgos](types_amount.AlgoAmount.md#microalgos) + +### Methods + +- [toString](types_amount.AlgoAmount.md#tostring) +- [valueOf](types_amount.AlgoAmount.md#valueof) +- [Algos](types_amount.AlgoAmount.md#algos-1) +- [MicroAlgos](types_amount.AlgoAmount.md#microalgos-1) + +## Constructors + +### constructor + +• **new AlgoAmount**(`amount`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `amount` | { `algos`: `number` } \| { `microAlgos`: `number` } | + +#### Defined in + +[src/types/amount.ts:17](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/amount.ts#L17) + +## Properties + +### amountInMicroAlgos + +• `Private` **amountInMicroAlgos**: `number` + +#### Defined in + +[src/types/amount.ts:5](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/amount.ts#L5) + +## Accessors + +### algos + +• `get` **algos**(): `number` + +Return the amount as a number in Algos + +#### Returns + +`number` + +#### Defined in + +[src/types/amount.ts:13](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/amount.ts#L13) + +___ + +### microAlgos + +• `get` **microAlgos**(): `number` + +Return the amount as a number in µAlgos + +#### Returns + +`number` + +#### Defined in + +[src/types/amount.ts:8](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/amount.ts#L8) + +## Methods + +### toString + +▸ **toString**(): `string` + +#### Returns + +`string` + +#### Defined in + +[src/types/amount.ts:21](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/amount.ts#L21) + +___ + +### valueOf + +▸ **valueOf**(): `number` + +valueOf allows you to use `AlgoAmount` in comparison operations such as `<` and `>=` etc., +but it's not recommended to use this to convert to a number, it's much safer to explicitly call +the algos or microAlgos properties + +#### Returns + +`number` + +#### Defined in + +[src/types/amount.ts:29](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/amount.ts#L29) + +___ + +### Algos + +▸ `Static` **Algos**(`amount`): [`AlgoAmount`](types_amount.AlgoAmount.md) + +Create a `AlgoAmount` object representing the given number of Algos + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `amount` | `number` | + +#### Returns + +[`AlgoAmount`](types_amount.AlgoAmount.md) + +#### Defined in + +[src/types/amount.ts:34](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/amount.ts#L34) + +___ + +### MicroAlgos + +▸ `Static` **MicroAlgos**(`amount`): [`AlgoAmount`](types_amount.AlgoAmount.md) + +Create a `AlgoAmount` object representing the given number of µAlgos + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `amount` | `number` | + +#### Returns + +[`AlgoAmount`](types_amount.AlgoAmount.md) + +#### Defined in + +[src/types/amount.ts:39](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/amount.ts#L39) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_app_client.ApplicationClient.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_app_client.ApplicationClient.md new file mode 100644 index 000000000..86e0ad7ef --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_app_client.ApplicationClient.md @@ -0,0 +1,796 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app-client](../modules/types_app_client.md) / ApplicationClient + +# Class: ApplicationClient + +[types/app-client](../modules/types_app_client.md).ApplicationClient + +Application client - a class that wraps an ARC-0032 app spec and provides high productivity methods to deploy and call the app + +## Table of contents + +### Constructors + +- [constructor](types_app_client.ApplicationClient.md#constructor) + +### Properties + +- [\_appAddress](types_app_client.ApplicationClient.md#_appaddress) +- [\_appId](types_app_client.ApplicationClient.md#_appid) +- [\_appName](types_app_client.ApplicationClient.md#_appname) +- [\_approvalSourceMap](types_app_client.ApplicationClient.md#_approvalsourcemap) +- [\_clearSourceMap](types_app_client.ApplicationClient.md#_clearsourcemap) +- [\_creator](types_app_client.ApplicationClient.md#_creator) +- [algod](types_app_client.ApplicationClient.md#algod) +- [appSpec](types_app_client.ApplicationClient.md#appspec) +- [deployTimeParams](types_app_client.ApplicationClient.md#deploytimeparams) +- [existingDeployments](types_app_client.ApplicationClient.md#existingdeployments) +- [indexer](types_app_client.ApplicationClient.md#indexer) +- [params](types_app_client.ApplicationClient.md#params) +- [sender](types_app_client.ApplicationClient.md#sender) + +### Methods + +- [call](types_app_client.ApplicationClient.md#call) +- [callOfType](types_app_client.ApplicationClient.md#calloftype) +- [clearState](types_app_client.ApplicationClient.md#clearstate) +- [closeOut](types_app_client.ApplicationClient.md#closeout) +- [compile](types_app_client.ApplicationClient.md#compile) +- [create](types_app_client.ApplicationClient.md#create) +- [delete](types_app_client.ApplicationClient.md#delete) +- [deploy](types_app_client.ApplicationClient.md#deploy) +- [exportSourceMaps](types_app_client.ApplicationClient.md#exportsourcemaps) +- [exposeLogicError](types_app_client.ApplicationClient.md#exposelogicerror) +- [fundAppAccount](types_app_client.ApplicationClient.md#fundappaccount) +- [getABIMethod](types_app_client.ApplicationClient.md#getabimethod) +- [getABIMethodParams](types_app_client.ApplicationClient.md#getabimethodparams) +- [getAppReference](types_app_client.ApplicationClient.md#getappreference) +- [getBoxNames](types_app_client.ApplicationClient.md#getboxnames) +- [getBoxValue](types_app_client.ApplicationClient.md#getboxvalue) +- [getBoxValueFromABIType](types_app_client.ApplicationClient.md#getboxvaluefromabitype) +- [getBoxValues](types_app_client.ApplicationClient.md#getboxvalues) +- [getBoxValuesFromABIType](types_app_client.ApplicationClient.md#getboxvaluesfromabitype) +- [getCallArgs](types_app_client.ApplicationClient.md#getcallargs) +- [getGlobalState](types_app_client.ApplicationClient.md#getglobalstate) +- [getLocalState](types_app_client.ApplicationClient.md#getlocalstate) +- [importSourceMaps](types_app_client.ApplicationClient.md#importsourcemaps) +- [optIn](types_app_client.ApplicationClient.md#optin) +- [update](types_app_client.ApplicationClient.md#update) + +## Constructors + +### constructor + +• **new ApplicationClient**(`appDetails`, `algod`) + +Create a new ApplicationClient instance + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `appDetails` | [`AppSpecAppDetails`](../modules/types_app_client.md#appspecappdetails) | The details of the app | +| `algod` | `default` | An algod instance | + +#### Defined in + +[src/types/app-client.ts:289](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L289) + +## Properties + +### \_appAddress + +• `Private` **\_appAddress**: `string` + +#### Defined in + +[src/types/app-client.ts:272](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L272) + +___ + +### \_appId + +• `Private` **\_appId**: `number` \| `bigint` + +#### Defined in + +[src/types/app-client.ts:271](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L271) + +___ + +### \_appName + +• `Private` **\_appName**: `string` + +#### Defined in + +[src/types/app-client.ts:274](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L274) + +___ + +### \_approvalSourceMap + +• `Private` **\_approvalSourceMap**: `undefined` \| `SourceMap` + +#### Defined in + +[src/types/app-client.ts:276](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L276) + +___ + +### \_clearSourceMap + +• `Private` **\_clearSourceMap**: `undefined` \| `SourceMap` + +#### Defined in + +[src/types/app-client.ts:277](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L277) + +___ + +### \_creator + +• `Private` **\_creator**: `undefined` \| `string` + +#### Defined in + +[src/types/app-client.ts:273](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L273) + +___ + +### algod + +• `Private` **algod**: `default` + +#### Defined in + +[src/types/app-client.ts:263](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L263) + +___ + +### appSpec + +• `Private` **appSpec**: [`AppSpec`](../interfaces/types_app_spec.AppSpec.md) + +#### Defined in + +[src/types/app-client.ts:265](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L265) + +___ + +### deployTimeParams + +• `Private` `Optional` **deployTimeParams**: [`TealTemplateParams`](../interfaces/types_app.TealTemplateParams.md) + +#### Defined in + +[src/types/app-client.ts:269](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L269) + +___ + +### existingDeployments + +• `Private` **existingDeployments**: `undefined` \| [`AppLookup`](../interfaces/types_app.AppLookup.md) + +#### Defined in + +[src/types/app-client.ts:268](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L268) + +___ + +### indexer + +• `Private` `Optional` **indexer**: `default` + +#### Defined in + +[src/types/app-client.ts:264](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L264) + +___ + +### params + +• `Private` **params**: `undefined` \| `SuggestedParams` + +#### Defined in + +[src/types/app-client.ts:267](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L267) + +___ + +### sender + +• `Private` **sender**: `undefined` \| [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom) + +#### Defined in + +[src/types/app-client.ts:266](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L266) + +## Methods + +### call + +▸ **call**(`call?`): `Promise`<[`AppCallTransactionResult`](../interfaces/types_app.AppCallTransactionResult.md)\> + +Issues a no_op (normal) call to the app. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `call?` | [`AppClientCallParams`](../modules/types_app_client.md#appclientcallparams) | The call details. | + +#### Returns + +`Promise`<[`AppCallTransactionResult`](../interfaces/types_app.AppCallTransactionResult.md)\> + +The result of the call + +#### Defined in + +[src/types/app-client.ts:582](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L582) + +___ + +### callOfType + +▸ **callOfType**(`call?`, `callType`): `Promise`<[`AppCallTransactionResult`](../interfaces/types_app.AppCallTransactionResult.md)\> + +Issues a call to the app with the given call type. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `call` | [`AppClientCallParams`](../modules/types_app_client.md#appclientcallparams) | The call details. | +| `callType` | ``"no_op"`` \| ``"opt_in"`` \| ``"close_out"`` \| ``"clear_state"`` \| ``"delete_application"`` \| `NoOpOC` \| `OptInOC` \| `CloseOutOC` \| `ClearStateOC` \| `DeleteApplicationOC` | The call type | + +#### Returns + +`Promise`<[`AppCallTransactionResult`](../interfaces/types_app.AppCallTransactionResult.md)\> + +The result of the call + +#### Defined in + +[src/types/app-client.ts:655](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L655) + +___ + +### clearState + +▸ **clearState**(`call?`): `Promise`<[`AppCallTransactionResult`](../interfaces/types_app.AppCallTransactionResult.md)\> + +Issues a clear_state call to the app. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `call?` | [`AppClientClearStateParams`](../modules/types_app_client.md#appclientclearstateparams) | The call details. | + +#### Returns + +`Promise`<[`AppCallTransactionResult`](../interfaces/types_app.AppCallTransactionResult.md)\> + +The result of the call + +#### Defined in + +[src/types/app-client.ts:636](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L636) + +___ + +### closeOut + +▸ **closeOut**(`call?`): `Promise`<[`AppCallTransactionResult`](../interfaces/types_app.AppCallTransactionResult.md)\> + +Issues a close_out call to the app. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `call?` | [`AppClientCallParams`](../modules/types_app_client.md#appclientcallparams) | The call details. | + +#### Returns + +`Promise`<[`AppCallTransactionResult`](../interfaces/types_app.AppCallTransactionResult.md)\> + +The result of the call + +#### Defined in + +[src/types/app-client.ts:627](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L627) + +___ + +### compile + +▸ **compile**(`compilation?`): `Promise`<{ `approvalCompiled`: [`CompiledTeal`](../interfaces/types_app.CompiledTeal.md) ; `clearCompiled`: [`CompiledTeal`](../interfaces/types_app.CompiledTeal.md) }\> + +Compiles the approval and clear programs and sets up the source map. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `compilation?` | [`AppClientCompilationParams`](../interfaces/types_app_client.AppClientCompilationParams.md) | The deploy-time parameters for the compilation | + +#### Returns + +`Promise`<{ `approvalCompiled`: [`CompiledTeal`](../interfaces/types_app.CompiledTeal.md) ; `clearCompiled`: [`CompiledTeal`](../interfaces/types_app.CompiledTeal.md) }\> + +The compiled approval and clear programs + +#### Defined in + +[src/types/app-client.ts:326](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L326) + +___ + +### create + +▸ **create**(`create?`): `Promise`<{ `appAddress`: `string` ; `appId`: `number` \| `bigint` ; `compiledApproval`: [`CompiledTeal`](../interfaces/types_app.CompiledTeal.md) ; `compiledClear`: [`CompiledTeal`](../interfaces/types_app.CompiledTeal.md) ; `confirmation?`: `PendingTransactionResponse` ; `confirmations?`: `PendingTransactionResponse`[] ; `return?`: [`ABIReturn`](../modules/types_app.md#abireturn) ; `transaction`: `Transaction` ; `transactions`: `Transaction`[] }\> + +Creates a smart contract app, returns the details of the created app. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `create?` | [`AppClientCreateParams`](../modules/types_app_client.md#appclientcreateparams) | The parameters to create the app with | + +#### Returns + +`Promise`<{ `appAddress`: `string` ; `appId`: `number` \| `bigint` ; `compiledApproval`: [`CompiledTeal`](../interfaces/types_app.CompiledTeal.md) ; `compiledClear`: [`CompiledTeal`](../interfaces/types_app.CompiledTeal.md) ; `confirmation?`: `PendingTransactionResponse` ; `confirmations?`: `PendingTransactionResponse`[] ; `return?`: [`ABIReturn`](../modules/types_app.md#abireturn) ; `transaction`: `Transaction` ; `transactions`: `Transaction`[] }\> + +The details of the created app, or the transaction to create it if `skipSending` and the compilation result + +#### Defined in + +[src/types/app-client.ts:491](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L491) + +___ + +### delete + +▸ **delete**(`call?`): `Promise`<[`AppCallTransactionResult`](../interfaces/types_app.AppCallTransactionResult.md)\> + +Issues a delete_application call to the app. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `call?` | [`AppClientCallParams`](../modules/types_app_client.md#appclientcallparams) | The call details. | + +#### Returns + +`Promise`<[`AppCallTransactionResult`](../interfaces/types_app.AppCallTransactionResult.md)\> + +The result of the call + +#### Defined in + +[src/types/app-client.ts:645](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L645) + +___ + +### deploy + +▸ **deploy**(`deploy?`): `Promise`<`Partial`<[`AppCompilationResult`](../interfaces/types_app.AppCompilationResult.md)\> & [`AppMetadata`](../interfaces/types_app.AppMetadata.md) & { `operationPerformed`: ``"nothing"`` } \| { `appAddress`: `string` ; `appId`: `number` \| `bigint` ; `compiledApproval`: [`CompiledTeal`](../interfaces/types_app.CompiledTeal.md) ; `compiledClear`: [`CompiledTeal`](../interfaces/types_app.CompiledTeal.md) ; `confirmation`: `PendingTransactionResponse` ; `confirmations`: `PendingTransactionResponse`[] ; `createdMetadata`: [`AppDeployMetadata`](../interfaces/types_app.AppDeployMetadata.md) ; `createdRound`: `number` ; `deletable?`: `boolean` ; `deleted`: `boolean` ; `name`: `string` ; `operationPerformed`: ``"update"`` \| ``"create"`` ; `return?`: [`ABIReturn`](../modules/types_app.md#abireturn) ; `transaction`: `Transaction` ; `transactions`: `Transaction`[] ; `updatable?`: `boolean` ; `updatedRound`: `number` ; `version`: `string` } \| { `appAddress`: `string` ; `appId`: `number` \| `bigint` ; `compiledApproval`: [`CompiledTeal`](../interfaces/types_app.CompiledTeal.md) ; `compiledClear`: [`CompiledTeal`](../interfaces/types_app.CompiledTeal.md) ; `confirmation`: `PendingTransactionResponse` ; `confirmations`: `PendingTransactionResponse`[] ; `createdMetadata`: [`AppDeployMetadata`](../interfaces/types_app.AppDeployMetadata.md) ; `createdRound`: `number` ; `deletable?`: `boolean` ; `deleteResult`: [`ConfirmedTransactionResult`](../interfaces/types_transaction.ConfirmedTransactionResult.md) ; `deleteReturn?`: [`ABIReturn`](../modules/types_app.md#abireturn) ; `deleted`: `boolean` ; `name`: `string` ; `operationPerformed`: ``"replace"`` ; `return?`: [`ABIReturn`](../modules/types_app.md#abireturn) ; `transaction`: `Transaction` ; `transactions`: `Transaction`[] ; `updatable?`: `boolean` ; `updatedRound`: `number` ; `version`: `string` }\> + +Idempotently deploy (create, update/delete if changed) an app against the given name via the given creator account, including deploy-time template placeholder substitutions. + +To understand the architecture decisions behind this functionality please see https://github.com/algorandfoundation/algokit-cli/blob/main/docs/architecture-decisions/2023-01-12_smart-contract-deployment.md + +**Note:** if there is a breaking state schema change to an existing app (and `onSchemaBreak` is set to `'replace'`) the existing app will be deleted and re-created. + +**Note:** if there is an update (different TEAL code) to an existing app (and `onUpdate` is set to `'replace'`) the existing app will be deleted and re-created. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `deploy?` | [`AppClientDeployParams`](../interfaces/types_app_client.AppClientDeployParams.md) | Deployment details | + +#### Returns + +`Promise`<`Partial`<[`AppCompilationResult`](../interfaces/types_app.AppCompilationResult.md)\> & [`AppMetadata`](../interfaces/types_app.AppMetadata.md) & { `operationPerformed`: ``"nothing"`` } \| { `appAddress`: `string` ; `appId`: `number` \| `bigint` ; `compiledApproval`: [`CompiledTeal`](../interfaces/types_app.CompiledTeal.md) ; `compiledClear`: [`CompiledTeal`](../interfaces/types_app.CompiledTeal.md) ; `confirmation`: `PendingTransactionResponse` ; `confirmations`: `PendingTransactionResponse`[] ; `createdMetadata`: [`AppDeployMetadata`](../interfaces/types_app.AppDeployMetadata.md) ; `createdRound`: `number` ; `deletable?`: `boolean` ; `deleted`: `boolean` ; `name`: `string` ; `operationPerformed`: ``"update"`` \| ``"create"`` ; `return?`: [`ABIReturn`](../modules/types_app.md#abireturn) ; `transaction`: `Transaction` ; `transactions`: `Transaction`[] ; `updatable?`: `boolean` ; `updatedRound`: `number` ; `version`: `string` } \| { `appAddress`: `string` ; `appId`: `number` \| `bigint` ; `compiledApproval`: [`CompiledTeal`](../interfaces/types_app.CompiledTeal.md) ; `compiledClear`: [`CompiledTeal`](../interfaces/types_app.CompiledTeal.md) ; `confirmation`: `PendingTransactionResponse` ; `confirmations`: `PendingTransactionResponse`[] ; `createdMetadata`: [`AppDeployMetadata`](../interfaces/types_app.AppDeployMetadata.md) ; `createdRound`: `number` ; `deletable?`: `boolean` ; `deleteResult`: [`ConfirmedTransactionResult`](../interfaces/types_transaction.ConfirmedTransactionResult.md) ; `deleteReturn?`: [`ABIReturn`](../modules/types_app.md#abireturn) ; `deleted`: `boolean` ; `name`: `string` ; `operationPerformed`: ``"replace"`` ; `return?`: [`ABIReturn`](../modules/types_app.md#abireturn) ; `transaction`: `Transaction` ; `transactions`: `Transaction`[] ; `updatable?`: `boolean` ; `updatedRound`: `number` ; `version`: `string` }\> + +The metadata and transaction result(s) of the deployment, or just the metadata if it didn't need to issue transactions + +#### Defined in + +[src/types/app-client.ts:383](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L383) + +___ + +### exportSourceMaps + +▸ **exportSourceMaps**(): [`AppSourceMaps`](../interfaces/types_app_client.AppSourceMaps.md) + +Export the current source maps for the app. + +#### Returns + +[`AppSourceMaps`](../interfaces/types_app_client.AppSourceMaps.md) + +The source maps + +#### Defined in + +[src/types/app-client.ts:350](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L350) + +___ + +### exposeLogicError + +▸ **exposeLogicError**(`e`, `isClear?`): `Error` + +Takes an error that may include a logic error from a smart contract call and re-exposes the error to include source code information via the source map. +This is automatically used within `ApplicationClient` but if you pass `skipSending: true` e.g. if doing a group transaction + then you can use this in a try/catch block to get better debugging information. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `e` | `Error` | The error to parse | +| `isClear?` | `boolean` | Whether or not the code was running the clear state program | + +#### Returns + +`Error` + +The new error, or if there was no logic error or source map then the wrapped error with source details + +#### Defined in + +[src/types/app-client.ts:971](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L971) + +___ + +### fundAppAccount + +▸ **fundAppAccount**(`fund`): `Promise`<[`SendTransactionResult`](../interfaces/types_transaction.SendTransactionResult.md)\> + +Funds ALGOs into the app account for this app. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `fund` | [`AlgoAmount`](types_amount.AlgoAmount.md) \| [`FundAppAccountParams`](../interfaces/types_app_client.FundAppAccountParams.md) | The parameters for the funding or the funding amount | + +#### Returns + +`Promise`<[`SendTransactionResult`](../interfaces/types_transaction.SendTransactionResult.md)\> + +The result of the funding + +#### Defined in + +[src/types/app-client.ts:695](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L695) + +___ + +### getABIMethod + +▸ **getABIMethod**(`method`): `undefined` \| `ABIMethod` + +Returns the ABI Method for the given method name string for the app represented by this application client instance + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `method` | `string` | Either the name of the method or the ABI method spec definition string | + +#### Returns + +`undefined` \| `ABIMethod` + +The ABI method for the given method + +#### Defined in + +[src/types/app-client.ts:930](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L930) + +___ + +### getABIMethodParams + +▸ **getABIMethodParams**(`method`): `undefined` \| `ABIMethodParams` + +Returns the ABI Method parameters for the given method name string for the app represented by this application client instance + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `method` | `string` | Either the name of the method or the ABI method spec definition string | + +#### Returns + +`undefined` \| `ABIMethodParams` + +The ABI method params for the given method + +#### Defined in + +[src/types/app-client.ts:908](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L908) + +___ + +### getAppReference + +▸ **getAppReference**(): `Promise`<[`AppReference`](../interfaces/types_app.AppReference.md) \| [`AppMetadata`](../interfaces/types_app.AppMetadata.md)\> + +Gets the reference information for the current application instance. +`appId` will be 0 if it can't find an app. + +#### Returns + +`Promise`<[`AppReference`](../interfaces/types_app.AppReference.md) \| [`AppMetadata`](../interfaces/types_app.AppMetadata.md)\> + +The app reference, or if deployed using the `deploy` method, the app metadata too + +#### Defined in + +[src/types/app-client.ts:940](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L940) + +___ + +### getBoxNames + +▸ **getBoxNames**(): `Promise`<[`BoxName`](../interfaces/types_app.BoxName.md)[]\> + +Returns the names of all current boxes for the current app. + +#### Returns + +`Promise`<[`BoxName`](../interfaces/types_app.BoxName.md)[]\> + +The names of the boxes + +#### Defined in + +[src/types/app-client.ts:749](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L749) + +___ + +### getBoxValue + +▸ **getBoxValue**(`name`): `Promise`<`Uint8Array`\> + +Returns the value of the given box for the current app. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `name` | `string` \| `Uint8Array` \| [`BoxName`](../interfaces/types_app.BoxName.md) | The name of the box to return either as a string, binary array or `BoxName` | + +#### Returns + +`Promise`<`Uint8Array`\> + +The current box value as a byte array + +#### Defined in + +[src/types/app-client.ts:764](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L764) + +___ + +### getBoxValueFromABIType + +▸ **getBoxValueFromABIType**(`name`, `type`): `Promise`<`ABIValue`\> + +Returns the value of the given box for the current app. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `name` | `string` \| `Uint8Array` \| [`BoxName`](../interfaces/types_app.BoxName.md) | The name of the box to return either as a string, binary array or `BoxName` | +| `type` | `ABIType` | | + +#### Returns + +`Promise`<`ABIValue`\> + +The current box value as a byte array + +#### Defined in + +[src/types/app-client.ts:780](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L780) + +___ + +### getBoxValues + +▸ **getBoxValues**(`filter?`): `Promise`<{ `name`: [`BoxName`](../interfaces/types_app.BoxName.md) ; `value`: `Uint8Array` }[]\> + +Returns the values of all current boxes for the current app. +Note: This will issue multiple HTTP requests (one per box) and it's not an atomic operation so values may be out of sync. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `filter?` | (`name`: [`BoxName`](../interfaces/types_app.BoxName.md)) => `boolean` | Optional filter to filter which boxes' values are returned | + +#### Returns + +`Promise`<{ `name`: [`BoxName`](../interfaces/types_app.BoxName.md) ; `value`: `Uint8Array` }[]\> + +The (name, value) pair of the boxes with values as raw byte arrays + +#### Defined in + +[src/types/app-client.ts:796](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L796) + +___ + +### getBoxValuesFromABIType + +▸ **getBoxValuesFromABIType**(`type`, `filter?`): `Promise`<{ `name`: [`BoxName`](../interfaces/types_app.BoxName.md) ; `value`: `ABIValue` }[]\> + +Returns the values of all current boxes for the current app decoded using an ABI Type. +Note: This will issue multiple HTTP requests (one per box) and it's not an atomic operation so values may be out of sync. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `type` | `ABIType` | The ABI type to decode the values with | +| `filter?` | (`name`: [`BoxName`](../interfaces/types_app.BoxName.md)) => `boolean` | Optional filter to filter which boxes' values are returned | + +#### Returns + +`Promise`<{ `name`: [`BoxName`](../interfaces/types_app.BoxName.md) ; `value`: `ABIValue` }[]\> + +The (name, value) pair of the boxes with values as the ABI Value + +#### Defined in + +[src/types/app-client.ts:818](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L818) + +___ + +### getCallArgs + +▸ **getCallArgs**(`args`, `sender`): `Promise`<`undefined` \| [`AppCallArgs`](../modules/types_app.md#appcallargs)\> + +Returns the arguments for an app call for the given ABI method or raw method specification. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `args` | `undefined` \| [`AppClientCallArgs`](../modules/types_app_client.md#appclientcallargs) | The call args specific to this application client | +| `sender` | [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom) | The sender of this call. Will be used to fetch any default argument values if applicable | + +#### Returns + +`Promise`<`undefined` \| [`AppCallArgs`](../modules/types_app.md#appcallargs)\> + +The call args ready to pass into an app call + +#### Defined in + +[src/types/app-client.ts:840](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L840) + +___ + +### getGlobalState + +▸ **getGlobalState**(): `Promise`<[`AppState`](../interfaces/types_app.AppState.md)\> + +Returns global state for the current app. + +#### Returns + +`Promise`<[`AppState`](../interfaces/types_app.AppState.md)\> + +The global state + +#### Defined in + +[src/types/app-client.ts:721](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L721) + +___ + +### getLocalState + +▸ **getLocalState**(`account`): `Promise`<[`AppState`](../interfaces/types_app.AppState.md)\> + +Returns local state for the given account / account address. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `account` | `string` \| [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom) | + +#### Returns + +`Promise`<[`AppState`](../interfaces/types_app.AppState.md)\> + +The global state + +#### Defined in + +[src/types/app-client.ts:735](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L735) + +___ + +### importSourceMaps + +▸ **importSourceMaps**(`sourceMaps`): `void` + +Import source maps for the app. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `sourceMaps` | [`AppSourceMaps`](../interfaces/types_app_client.AppSourceMaps.md) | The source maps to import | + +#### Returns + +`void` + +#### Defined in + +[src/types/app-client.ts:367](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L367) + +___ + +### optIn + +▸ **optIn**(`call?`): `Promise`<[`AppCallTransactionResult`](../interfaces/types_app.AppCallTransactionResult.md)\> + +Issues a opt_in call to the app. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `call?` | [`AppClientCallParams`](../modules/types_app_client.md#appclientcallparams) | The call details. | + +#### Returns + +`Promise`<[`AppCallTransactionResult`](../interfaces/types_app.AppCallTransactionResult.md)\> + +The result of the call + +#### Defined in + +[src/types/app-client.ts:618](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L618) + +___ + +### update + +▸ **update**(`update?`): `Promise`<{ `compiledApproval`: [`CompiledTeal`](../interfaces/types_app.CompiledTeal.md) ; `compiledClear`: [`CompiledTeal`](../interfaces/types_app.CompiledTeal.md) ; `confirmation?`: `PendingTransactionResponse` ; `confirmations?`: `PendingTransactionResponse`[] ; `return?`: [`ABIReturn`](../modules/types_app.md#abireturn) ; `transaction`: `Transaction` ; `transactions`: `Transaction`[] }\> + +Updates the smart contract app. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `update?` | [`AppClientUpdateParams`](../modules/types_app_client.md#appclientupdateparams) | The parameters to update the app with | + +#### Returns + +`Promise`<{ `compiledApproval`: [`CompiledTeal`](../interfaces/types_app.CompiledTeal.md) ; `compiledClear`: [`CompiledTeal`](../interfaces/types_app.CompiledTeal.md) ; `confirmation?`: `PendingTransactionResponse` ; `confirmations?`: `PendingTransactionResponse`[] ; `return?`: [`ABIReturn`](../modules/types_app.md#abireturn) ; `transaction`: `Transaction` ; `transactions`: `Transaction`[] }\> + +The transaction send result and the compilation result + +#### Defined in + +[src/types/app-client.ts:543](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L543) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_config.UpdatableConfig.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_config.UpdatableConfig.md new file mode 100644 index 000000000..0dea35a1c --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_config.UpdatableConfig.md @@ -0,0 +1,156 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/config](../modules/types_config.md) / UpdatableConfig + +# Class: UpdatableConfig + +[types/config](../modules/types_config.md).UpdatableConfig + +Updatable AlgoKit config + +## Implements + +- `Readonly`<[`Config`](../interfaces/types_config.Config.md)\> + +## Table of contents + +### Constructors + +- [constructor](types_config.UpdatableConfig.md#constructor) + +### Properties + +- [config](types_config.UpdatableConfig.md#config) + +### Accessors + +- [debug](types_config.UpdatableConfig.md#debug) +- [logger](types_config.UpdatableConfig.md#logger) + +### Methods + +- [configure](types_config.UpdatableConfig.md#configure) +- [getLogger](types_config.UpdatableConfig.md#getlogger) +- [withDebug](types_config.UpdatableConfig.md#withdebug) + +## Constructors + +### constructor + +• **new UpdatableConfig**() + +#### Defined in + +[src/types/config.ts:50](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/config.ts#L50) + +## Properties + +### config + +• `Private` **config**: [`Config`](../interfaces/types_config.Config.md) + +#### Defined in + +[src/types/config.ts:13](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/config.ts#L13) + +## Accessors + +### debug + +• `get` **debug**(): `boolean` + +#### Returns + +`boolean` + +#### Implementation of + +Readonly.debug + +#### Defined in + +[src/types/config.ts:19](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/config.ts#L19) + +___ + +### logger + +• `get` **logger**(): [`Logger`](../modules/types_logging.md#logger) + +#### Returns + +[`Logger`](../modules/types_logging.md#logger) + +#### Implementation of + +Readonly.logger + +#### Defined in + +[src/types/config.ts:15](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/config.ts#L15) + +## Methods + +### configure + +▸ **configure**(`newConfig`): `void` + +Update the AlgoKit configuration with your own configuration settings + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `newConfig` | `Partial`<[`Config`](../interfaces/types_config.Config.md)\> | Partial or complete config to replace | + +#### Returns + +`void` + +#### Defined in + +[src/types/config.ts:61](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/config.ts#L61) + +___ + +### getLogger + +▸ **getLogger**(`returnNullLogger?`): [`Logger`](../modules/types_logging.md#logger) + +Returns the current logger, or the null logger if true is passed in to `returnNullLogger` + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `returnNullLogger?` | `boolean` | Whether or not to return the null logger | + +#### Returns + +[`Logger`](../modules/types_logging.md#logger) + +The requested logger + +#### Defined in + +[src/types/config.ts:28](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/config.ts#L28) + +___ + +### withDebug + +▸ **withDebug**(`lambda`): `void` + +Temporarily run with debug set to true. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `lambda` | () => `unknown` | A lambda expression with code to run with debug config set to true | + +#### Returns + +`void` + +#### Defined in + +[src/types/config.ts:40](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/config.ts#L40) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_logic_error.LogicError.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_logic_error.LogicError.md new file mode 100644 index 000000000..c2328832e --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_logic_error.LogicError.md @@ -0,0 +1,242 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/logic-error](../modules/types_logic_error.md) / LogicError + +# Class: LogicError + +[types/logic-error](../modules/types_logic_error.md).LogicError + +Wraps key functionality around processing logic errors + +## Hierarchy + +- `Error` + + ↳ **`LogicError`** + +## Table of contents + +### Constructors + +- [constructor](types_logic_error.LogicError.md#constructor) + +### Properties + +- [led](types_logic_error.LogicError.md#led) +- [lines](types_logic_error.LogicError.md#lines) +- [message](types_logic_error.LogicError.md#message) +- [name](types_logic_error.LogicError.md#name) +- [program](types_logic_error.LogicError.md#program) +- [stack](types_logic_error.LogicError.md#stack) +- [teal\_line](types_logic_error.LogicError.md#teal_line) +- [prepareStackTrace](types_logic_error.LogicError.md#preparestacktrace) +- [stackTraceLimit](types_logic_error.LogicError.md#stacktracelimit) + +### Methods + +- [captureStackTrace](types_logic_error.LogicError.md#capturestacktrace) +- [parseLogicError](types_logic_error.LogicError.md#parselogicerror) + +## Constructors + +### constructor + +• **new LogicError**(`errorDetails`, `program`, `map`) + +Create a new logic error object. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `errorDetails` | [`LogicErrorDetails`](../interfaces/types_logic_error.LogicErrorDetails.md) | The details of the logic error | +| `program` | `string`[] | The TEAL source code, split by line | +| `map` | `SourceMap` | The source map of the TEAL source code | + +#### Overrides + +Error.constructor + +#### Defined in + +[src/types/logic-error.ts:54](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L54) + +## Properties + +### led + +• **led**: [`LogicErrorDetails`](../interfaces/types_logic_error.LogicErrorDetails.md) + +#### Defined in + +[src/types/logic-error.ts:42](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L42) + +___ + +### lines + +• **lines**: `number` = `5` + +#### Defined in + +[src/types/logic-error.ts:44](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L44) + +___ + +### message + +• **message**: `string` + +#### Inherited from + +Error.message + +#### Defined in + +node_modules/typescript/lib/lib.es5.d.ts:1068 + +___ + +### name + +• **name**: `string` + +#### Inherited from + +Error.name + +#### Defined in + +node_modules/typescript/lib/lib.es5.d.ts:1067 + +___ + +### program + +• **program**: `string`[] + +#### Defined in + +[src/types/logic-error.ts:43](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L43) + +___ + +### stack + +• `Optional` **stack**: `string` + +#### Overrides + +Error.stack + +#### Defined in + +[src/types/logic-error.ts:46](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L46) + +___ + +### teal\_line + +• **teal\_line**: `number` = `0` + +#### Defined in + +[src/types/logic-error.ts:45](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L45) + +___ + +### prepareStackTrace + +▪ `Static` `Optional` **prepareStackTrace**: (`err`: `Error`, `stackTraces`: `CallSite`[]) => `any` + +#### Type declaration + +▸ (`err`, `stackTraces`): `any` + +Optional override for formatting stack traces + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `err` | `Error` | +| `stackTraces` | `CallSite`[] | + +##### Returns + +`any` + +**`See`** + +https://v8.dev/docs/stack-trace-api#customizing-stack-traces + +#### Inherited from + +Error.prepareStackTrace + +#### Defined in + +node_modules/@types/node/globals.d.ts:11 + +___ + +### stackTraceLimit + +▪ `Static` **stackTraceLimit**: `number` + +#### Inherited from + +Error.stackTraceLimit + +#### Defined in + +node_modules/@types/node/globals.d.ts:13 + +## Methods + +### captureStackTrace + +▸ `Static` **captureStackTrace**(`targetObject`, `constructorOpt?`): `void` + +Create .stack property on a target object + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `targetObject` | `object` | +| `constructorOpt?` | `Function` | + +#### Returns + +`void` + +#### Inherited from + +Error.captureStackTrace + +#### Defined in + +node_modules/@types/node/globals.d.ts:4 + +___ + +### parseLogicError + +▸ `Static` **parseLogicError**(`error`): `undefined` \| [`LogicErrorDetails`](../interfaces/types_logic_error.LogicErrorDetails.md) + +Takes an error message and parses out the details of any logic errors in there. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `error` | `any` | + +#### Returns + +`undefined` \| [`LogicErrorDetails`](../interfaces/types_logic_error.LogicErrorDetails.md) + +The logic error details if any, or undefined + +#### Defined in + +[src/types/logic-error.ts:28](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L28) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_urlTokenBaseHTTPClient.URLTokenBaseHTTPClient.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_urlTokenBaseHTTPClient.URLTokenBaseHTTPClient.md new file mode 100644 index 000000000..9271d7b2d --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/classes/types_urlTokenBaseHTTPClient.URLTokenBaseHTTPClient.md @@ -0,0 +1,255 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/urlTokenBaseHTTPClient](../modules/types_urlTokenBaseHTTPClient.md) / URLTokenBaseHTTPClient + +# Class: URLTokenBaseHTTPClient + +[types/urlTokenBaseHTTPClient](../modules/types_urlTokenBaseHTTPClient.md).URLTokenBaseHTTPClient + +Implementation of BaseHTTPClient that uses a URL and a token +and make the REST queries using fetch. +This is the default implementation of BaseHTTPClient. + +## Hierarchy + +- **`URLTokenBaseHTTPClient`** + + ↳ [`AlgoHttpClientWithRetry`](types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md) + +## Implements + +- `BaseHTTPClient` + +## Table of contents + +### Constructors + +- [constructor](types_urlTokenBaseHTTPClient.URLTokenBaseHTTPClient.md#constructor) + +### Properties + +- [baseURL](types_urlTokenBaseHTTPClient.URLTokenBaseHTTPClient.md#baseurl) +- [defaultHeaders](types_urlTokenBaseHTTPClient.URLTokenBaseHTTPClient.md#defaultheaders) +- [tokenHeader](types_urlTokenBaseHTTPClient.URLTokenBaseHTTPClient.md#tokenheader) + +### Methods + +- [delete](types_urlTokenBaseHTTPClient.URLTokenBaseHTTPClient.md#delete) +- [get](types_urlTokenBaseHTTPClient.URLTokenBaseHTTPClient.md#get) +- [getURL](types_urlTokenBaseHTTPClient.URLTokenBaseHTTPClient.md#geturl) +- [post](types_urlTokenBaseHTTPClient.URLTokenBaseHTTPClient.md#post) +- [checkHttpError](types_urlTokenBaseHTTPClient.URLTokenBaseHTTPClient.md#checkhttperror) +- [formatFetchResponse](types_urlTokenBaseHTTPClient.URLTokenBaseHTTPClient.md#formatfetchresponse) +- [formatFetchResponseHeaders](types_urlTokenBaseHTTPClient.URLTokenBaseHTTPClient.md#formatfetchresponseheaders) + +## Constructors + +### constructor + +• **new URLTokenBaseHTTPClient**(`tokenHeader`, `baseServer`, `port?`, `defaultHeaders?`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `tokenHeader` | [`TokenHeader`](../modules/types_urlTokenBaseHTTPClient.md#tokenheader) | +| `baseServer` | `string` | +| `port?` | `string` \| `number` | +| `defaultHeaders` | `Record`<`string`, `any`\> | + +#### Defined in + +[src/types/urlTokenBaseHTTPClient.ts:48](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/urlTokenBaseHTTPClient.ts#L48) + +## Properties + +### baseURL + +• `Private` `Readonly` **baseURL**: `URL` + +#### Defined in + +[src/types/urlTokenBaseHTTPClient.ts:44](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/urlTokenBaseHTTPClient.ts#L44) + +___ + +### defaultHeaders + +• `Private` **defaultHeaders**: `Record`<`string`, `any`\> = `{}` + +#### Defined in + +[src/types/urlTokenBaseHTTPClient.ts:53](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/urlTokenBaseHTTPClient.ts#L53) + +___ + +### tokenHeader + +• `Private` `Readonly` **tokenHeader**: [`TokenHeader`](../modules/types_urlTokenBaseHTTPClient.md#tokenheader) + +#### Defined in + +[src/types/urlTokenBaseHTTPClient.ts:45](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/urlTokenBaseHTTPClient.ts#L45) + +## Methods + +### delete + +▸ **delete**(`relativePath`, `data`, `query?`, `requestHeaders?`): `Promise`<`BaseHTTPClientResponse`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `relativePath` | `string` | +| `data` | `Uint8Array` | +| `query?` | `Query`<`string`\> | +| `requestHeaders` | `Record`<`string`, `string`\> | + +#### Returns + +`Promise`<`BaseHTTPClientResponse`\> + +#### Implementation of + +BaseHTTPClient.delete + +#### Defined in + +[src/types/urlTokenBaseHTTPClient.ts:185](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/urlTokenBaseHTTPClient.ts#L185) + +___ + +### get + +▸ **get**(`relativePath`, `query?`, `requestHeaders?`): `Promise`<`BaseHTTPClientResponse`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `relativePath` | `string` | +| `query?` | `Query`<`string`\> | +| `requestHeaders` | `Record`<`string`, `string`\> | + +#### Returns + +`Promise`<`BaseHTTPClientResponse`\> + +#### Implementation of + +BaseHTTPClient.get + +#### Defined in + +[src/types/urlTokenBaseHTTPClient.ts:146](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/urlTokenBaseHTTPClient.ts#L146) + +___ + +### getURL + +▸ `Private` **getURL**(`relativePath`, `query?`): `string` + +Compute the URL for a path relative to the instance's address + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `relativePath` | `string` | A path string | +| `query?` | `Query`<`string`\> | An optional key-value object of query parameters to add to the URL. If the relativePath already has query parameters on it, the additional parameters defined here will be added to the URL without modifying those (unless a key collision occurs). | + +#### Returns + +`string` + +A URL string + +#### Defined in + +[src/types/urlTokenBaseHTTPClient.ts:80](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/urlTokenBaseHTTPClient.ts#L80) + +___ + +### post + +▸ **post**(`relativePath`, `data`, `query?`, `requestHeaders?`): `Promise`<`BaseHTTPClientResponse`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `relativePath` | `string` | +| `data` | `Uint8Array` | +| `query?` | `Query`<`string`\> | +| `requestHeaders` | `Record`<`string`, `string`\> | + +#### Returns + +`Promise`<`BaseHTTPClientResponse`\> + +#### Implementation of + +BaseHTTPClient.post + +#### Defined in + +[src/types/urlTokenBaseHTTPClient.ts:162](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/urlTokenBaseHTTPClient.ts#L162) + +___ + +### checkHttpError + +▸ `Static` `Private` **checkHttpError**(`res`): `Promise`<`void`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `res` | `Response` | + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/types/urlTokenBaseHTTPClient.ts:106](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/urlTokenBaseHTTPClient.ts#L106) + +___ + +### formatFetchResponse + +▸ `Static` `Private` **formatFetchResponse**(`res`): `Promise`<`BaseHTTPClientResponse`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `res` | `Response` | + +#### Returns + +`Promise`<`BaseHTTPClientResponse`\> + +#### Defined in + +[src/types/urlTokenBaseHTTPClient.ts:137](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/urlTokenBaseHTTPClient.ts#L137) + +___ + +### formatFetchResponseHeaders + +▸ `Static` `Private` **formatFetchResponseHeaders**(`headers`): `Record`<`string`, `string`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `headers` | `Headers` | + +#### Returns + +`Record`<`string`, `string`\> + +#### Defined in + +[src/types/urlTokenBaseHTTPClient.ts:98](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/urlTokenBaseHTTPClient.ts#L98) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/enums/types_app.OnSchemaBreak.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/enums/types_app.OnSchemaBreak.md new file mode 100644 index 000000000..b12407768 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/enums/types_app.OnSchemaBreak.md @@ -0,0 +1,51 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app](../modules/types_app.md) / OnSchemaBreak + +# Enumeration: OnSchemaBreak + +[types/app](../modules/types_app.md).OnSchemaBreak + +What action to perform when deploying an app and a breaking schema change is detected + +## Table of contents + +### Enumeration Members + +- [AppendApp](types_app.OnSchemaBreak.md#appendapp) +- [Fail](types_app.OnSchemaBreak.md#fail) +- [ReplaceApp](types_app.OnSchemaBreak.md#replaceapp) + +## Enumeration Members + +### AppendApp + +• **AppendApp** = ``2`` + +Create a new app + +#### Defined in + +[src/types/app.ts:283](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L283) + +___ + +### Fail + +• **Fail** = ``0`` + +Fail the deployment + +#### Defined in + +[src/types/app.ts:279](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L279) + +___ + +### ReplaceApp + +• **ReplaceApp** = ``1`` + +Delete the app and create a new one in its place + +#### Defined in + +[src/types/app.ts:281](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L281) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/enums/types_app.OnUpdate.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/enums/types_app.OnUpdate.md new file mode 100644 index 000000000..5e69c7a43 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/enums/types_app.OnUpdate.md @@ -0,0 +1,64 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app](../modules/types_app.md) / OnUpdate + +# Enumeration: OnUpdate + +[types/app](../modules/types_app.md).OnUpdate + +What action to perform when deploying an app and an update is detected in the TEAL code + +## Table of contents + +### Enumeration Members + +- [AppendApp](types_app.OnUpdate.md#appendapp) +- [Fail](types_app.OnUpdate.md#fail) +- [ReplaceApp](types_app.OnUpdate.md#replaceapp) +- [UpdateApp](types_app.OnUpdate.md#updateapp) + +## Enumeration Members + +### AppendApp + +• **AppendApp** = ``3`` + +Create a new app + +#### Defined in + +[src/types/app.ts:273](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L273) + +___ + +### Fail + +• **Fail** = ``0`` + +Fail the deployment + +#### Defined in + +[src/types/app.ts:267](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L267) + +___ + +### ReplaceApp + +• **ReplaceApp** = ``2`` + +Delete the app and create a new one in its place + +#### Defined in + +[src/types/app.ts:271](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L271) + +___ + +### UpdateApp + +• **UpdateApp** = ``1`` + +Update the app + +#### Defined in + +[src/types/app.ts:269](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L269) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/enums/types_indexer.AccountStatus.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/enums/types_indexer.AccountStatus.md new file mode 100644 index 000000000..05aec91de --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/enums/types_indexer.AccountStatus.md @@ -0,0 +1,51 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / AccountStatus + +# Enumeration: AccountStatus + +[types/indexer](../modules/types_indexer.md).AccountStatus + +Delegation status of the account + +## Table of contents + +### Enumeration Members + +- [NotParticipating](types_indexer.AccountStatus.md#notparticipating) +- [Offline](types_indexer.AccountStatus.md#offline) +- [Online](types_indexer.AccountStatus.md#online) + +## Enumeration Members + +### NotParticipating + +• **NotParticipating** = ``"NotParticipating"`` + +Indicates that the associated account is neither a delegator nor a delegate + +#### Defined in + +[src/types/indexer.ts:592](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L592) + +___ + +### Offline + +• **Offline** = ``"Offline"`` + +Indicates that the associated account is delegated + +#### Defined in + +[src/types/indexer.ts:588](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L588) + +___ + +### Online + +• **Online** = ``"Online"`` + +Indicates that the associated account used as part of the delegation pool + +#### Defined in + +[src/types/indexer.ts:590](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L590) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/enums/types_indexer.ApplicationOnComplete.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/enums/types_indexer.ApplicationOnComplete.md new file mode 100644 index 000000000..f35743f33 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/enums/types_indexer.ApplicationOnComplete.md @@ -0,0 +1,78 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / ApplicationOnComplete + +# Enumeration: ApplicationOnComplete + +[types/indexer](../modules/types_indexer.md).ApplicationOnComplete + +Defines the what additional actions occur with the transaction https://developer.algorand.org/docs/rest-apis/indexer/#oncompletion + +## Table of contents + +### Enumeration Members + +- [clear](types_indexer.ApplicationOnComplete.md#clear) +- [closeout](types_indexer.ApplicationOnComplete.md#closeout) +- [delete](types_indexer.ApplicationOnComplete.md#delete) +- [noop](types_indexer.ApplicationOnComplete.md#noop) +- [optin](types_indexer.ApplicationOnComplete.md#optin) +- [update](types_indexer.ApplicationOnComplete.md#update) + +## Enumeration Members + +### clear + +• **clear** = ``"clear"`` + +#### Defined in + +[src/types/indexer.ts:495](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L495) + +___ + +### closeout + +• **closeout** = ``"closeout"`` + +#### Defined in + +[src/types/indexer.ts:494](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L494) + +___ + +### delete + +• **delete** = ``"delete"`` + +#### Defined in + +[src/types/indexer.ts:497](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L497) + +___ + +### noop + +• **noop** = ``"noop"`` + +#### Defined in + +[src/types/indexer.ts:492](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L492) + +___ + +### optin + +• **optin** = ``"optin"`` + +#### Defined in + +[src/types/indexer.ts:493](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L493) + +___ + +### update + +• **update** = ``"update"`` + +#### Defined in + +[src/types/indexer.ts:496](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L496) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/enums/types_indexer.SignatureType.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/enums/types_indexer.SignatureType.md new file mode 100644 index 000000000..9c6c5b1ff --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/enums/types_indexer.SignatureType.md @@ -0,0 +1,51 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / SignatureType + +# Enumeration: SignatureType + +[types/indexer](../modules/types_indexer.md).SignatureType + +Type of signature used by an account + +## Table of contents + +### Enumeration Members + +- [lsig](types_indexer.SignatureType.md#lsig) +- [msig](types_indexer.SignatureType.md#msig) +- [sig](types_indexer.SignatureType.md#sig) + +## Enumeration Members + +### lsig + +• **lsig** = ``"lsig"`` + +Logic signature + +#### Defined in + +[src/types/indexer.ts:582](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L582) + +___ + +### msig + +• **msig** = ``"msig"`` + +Multisig + +#### Defined in + +[src/types/indexer.ts:580](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L580) + +___ + +### sig + +• **sig** = ``"sig"`` + +Normal signature + +#### Defined in + +[src/types/indexer.ts:578](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L578) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_account.AccountConfig.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_account.AccountConfig.md new file mode 100644 index 000000000..69bf0d7f0 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_account.AccountConfig.md @@ -0,0 +1,66 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/account](../modules/types_account.md) / AccountConfig + +# Interface: AccountConfig + +[types/account](../modules/types_account.md).AccountConfig + +Config for an account config + +## Table of contents + +### Properties + +- [accountMnemonic](types_account.AccountConfig.md#accountmnemonic) +- [accountName](types_account.AccountConfig.md#accountname) +- [senderAddress](types_account.AccountConfig.md#senderaddress) +- [senderMnemonic](types_account.AccountConfig.md#sendermnemonic) + +## Properties + +### accountMnemonic + +• **accountMnemonic**: `string` + +Mnemonic for an account + +#### Defined in + +[src/types/account.ts:116](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L116) + +___ + +### accountName + +• **accountName**: `string` + +Account name used to retrieve config + +#### Defined in + +[src/types/account.ts:120](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L120) + +___ + +### senderAddress + +• `Optional` **senderAddress**: `string` + +Address of a rekeyed account + +#### Defined in + +[src/types/account.ts:118](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L118) + +___ + +### senderMnemonic + +• `Optional` **senderMnemonic**: `string` + +**`Deprecated`** + +Renamed to senderAddress in 2.3.1 + +#### Defined in + +[src/types/account.ts:123](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L123) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_account.TransactionSignerAccount.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_account.TransactionSignerAccount.md new file mode 100644 index 000000000..437a056e8 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_account.TransactionSignerAccount.md @@ -0,0 +1,34 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/account](../modules/types_account.md) / TransactionSignerAccount + +# Interface: TransactionSignerAccount + +[types/account](../modules/types_account.md).TransactionSignerAccount + +A wrapper around `TransactionSigner` that also has the sender address. + +## Table of contents + +### Properties + +- [addr](types_account.TransactionSignerAccount.md#addr) +- [signer](types_account.TransactionSignerAccount.md#signer) + +## Properties + +### addr + +• **addr**: `string` + +#### Defined in + +[src/types/account.ts:109](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L109) + +___ + +### signer + +• **signer**: `TransactionSigner` + +#### Defined in + +[src/types/account.ts:110](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L110) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppCallParams.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppCallParams.md new file mode 100644 index 000000000..fbebfe5a3 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppCallParams.md @@ -0,0 +1,216 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app](../modules/types_app.md) / AppCallParams + +# Interface: AppCallParams + +[types/app](../modules/types_app.md).AppCallParams + +Parameters representing a call to an app. + +## Hierarchy + +- [`SendTransactionParams`](types_transaction.SendTransactionParams.md) + + ↳ **`AppCallParams`** + +## Table of contents + +### Properties + +- [appId](types_app.AppCallParams.md#appid) +- [args](types_app.AppCallParams.md#args) +- [atc](types_app.AppCallParams.md#atc) +- [callType](types_app.AppCallParams.md#calltype) +- [fee](types_app.AppCallParams.md#fee) +- [from](types_app.AppCallParams.md#from) +- [maxFee](types_app.AppCallParams.md#maxfee) +- [maxRoundsToWaitForConfirmation](types_app.AppCallParams.md#maxroundstowaitforconfirmation) +- [note](types_app.AppCallParams.md#note) +- [skipSending](types_app.AppCallParams.md#skipsending) +- [skipWaiting](types_app.AppCallParams.md#skipwaiting) +- [suppressLog](types_app.AppCallParams.md#suppresslog) +- [transactionParams](types_app.AppCallParams.md#transactionparams) + +## Properties + +### appId + +• **appId**: `number` \| `bigint` + +The id of the app to call + +#### Defined in + +[src/types/app.ts:162](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L162) + +___ + +### args + +• `Optional` **args**: [`AppCallArgs`](../modules/types_app.md#appcallargs) + +The arguments passed in to the app call + +#### Defined in + +[src/types/app.ts:172](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L172) + +___ + +### atc + +• `Optional` **atc**: `AtomicTransactionComposer` + +An optional `AtomicTransactionComposer` to add the transaction to, if specified then `skipSending: undefined` has the same effect as `skipSending: true` + +#### Inherited from + +[SendTransactionParams](types_transaction.SendTransactionParams.md).[atc](types_transaction.SendTransactionParams.md#atc) + +#### Defined in + +[src/types/transaction.ts:30](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L30) + +___ + +### callType + +• **callType**: ``"no_op"`` \| ``"opt_in"`` \| ``"close_out"`` \| ``"clear_state"`` \| ``"delete_application"`` \| `NoOpOC` \| `OptInOC` \| `CloseOutOC` \| `ClearStateOC` \| `DeleteApplicationOC` + +The type of call, everything except create (see `createApp`) and update (see `updateApp`) + +#### Defined in + +[src/types/app.ts:164](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L164) + +___ + +### fee + +• `Optional` **fee**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) + +The flat fee you want to pay, useful for covering extra fees in a transaction group or app call + +#### Inherited from + +[SendTransactionParams](types_transaction.SendTransactionParams.md).[fee](types_transaction.SendTransactionParams.md#fee) + +#### Defined in + +[src/types/transaction.ts:34](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L34) + +___ + +### from + +• **from**: [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom) + +The account to make the call from + +#### Defined in + +[src/types/app.ts:166](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L166) + +___ + +### maxFee + +• `Optional` **maxFee**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) + +The maximum fee that you are happy to pay (default: unbounded) - if this is set it's possible the transaction could get rejected during network congestion + +#### Inherited from + +[SendTransactionParams](types_transaction.SendTransactionParams.md).[maxFee](types_transaction.SendTransactionParams.md#maxfee) + +#### Defined in + +[src/types/transaction.ts:36](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L36) + +___ + +### maxRoundsToWaitForConfirmation + +• `Optional` **maxRoundsToWaitForConfirmation**: `number` + +The maximum number of rounds to wait for confirmation, only applies if `skipWaiting` is `undefined` or `false`, default: wait up to 5 rounds + +#### Inherited from + +[SendTransactionParams](types_transaction.SendTransactionParams.md).[maxRoundsToWaitForConfirmation](types_transaction.SendTransactionParams.md#maxroundstowaitforconfirmation) + +#### Defined in + +[src/types/transaction.ts:38](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L38) + +___ + +### note + +• `Optional` **note**: [`TransactionNote`](../modules/types_transaction.md#transactionnote) + +The (optional) transaction note + +#### Defined in + +[src/types/app.ts:170](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L170) + +___ + +### skipSending + +• `Optional` **skipSending**: `boolean` + +Whether to skip signing and sending the transaction to the chain (default: transaction signed and sent to chain, unless `atc` specified) +and instead just return the raw transaction, e.g. so you can add it to a group of transactions + +#### Inherited from + +[SendTransactionParams](types_transaction.SendTransactionParams.md).[skipSending](types_transaction.SendTransactionParams.md#skipsending) + +#### Defined in + +[src/types/transaction.ts:26](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L26) + +___ + +### skipWaiting + +• `Optional` **skipWaiting**: `boolean` + +Whether to skip waiting for the submitted transaction (only relevant if `skipSending` is `false` or unset) + +#### Inherited from + +[SendTransactionParams](types_transaction.SendTransactionParams.md).[skipWaiting](types_transaction.SendTransactionParams.md#skipwaiting) + +#### Defined in + +[src/types/transaction.ts:28](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L28) + +___ + +### suppressLog + +• `Optional` **suppressLog**: `boolean` + +Whether to suppress log messages from transaction send, default: do not suppress + +#### Inherited from + +[SendTransactionParams](types_transaction.SendTransactionParams.md).[suppressLog](types_transaction.SendTransactionParams.md#suppresslog) + +#### Defined in + +[src/types/transaction.ts:32](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L32) + +___ + +### transactionParams + +• `Optional` **transactionParams**: `SuggestedParams` + +Optional transaction parameters + +#### Defined in + +[src/types/app.ts:168](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L168) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppCallTransactionResult.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppCallTransactionResult.md new file mode 100644 index 000000000..651bfce51 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppCallTransactionResult.md @@ -0,0 +1,104 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app](../modules/types_app.md) / AppCallTransactionResult + +# Interface: AppCallTransactionResult + +[types/app](../modules/types_app.md).AppCallTransactionResult + +Result from calling an app + +## Hierarchy + +- [`AppCallTransactionResultOfType`](types_app.AppCallTransactionResultOfType.md)<[`ABIReturn`](../modules/types_app.md#abireturn)\> + + ↳ **`AppCallTransactionResult`** + +## Table of contents + +### Properties + +- [confirmation](types_app.AppCallTransactionResult.md#confirmation) +- [confirmations](types_app.AppCallTransactionResult.md#confirmations) +- [return](types_app.AppCallTransactionResult.md#return) +- [transaction](types_app.AppCallTransactionResult.md#transaction) +- [transactions](types_app.AppCallTransactionResult.md#transactions) + +## Properties + +### confirmation + +• `Optional` **confirmation**: `PendingTransactionResponse` + +The response if the transaction was sent and waited for + +#### Inherited from + +[AppCallTransactionResultOfType](types_app.AppCallTransactionResultOfType.md).[confirmation](types_app.AppCallTransactionResultOfType.md#confirmation) + +#### Defined in + +[src/types/transaction.ts:46](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L46) + +___ + +### confirmations + +• `Optional` **confirmations**: `PendingTransactionResponse`[] + +The responses if the transactions were sent and waited for, +the index of the confirmation will match the index of the underlying transaction + +#### Inherited from + +[AppCallTransactionResultOfType](types_app.AppCallTransactionResultOfType.md).[confirmations](types_app.AppCallTransactionResultOfType.md#confirmations) + +#### Defined in + +[src/types/transaction.ts:56](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L56) + +___ + +### return + +• `Optional` **return**: [`ABIReturn`](../modules/types_app.md#abireturn) + +If an ABI method was called the processed return value + +#### Inherited from + +[AppCallTransactionResultOfType](types_app.AppCallTransactionResultOfType.md).[return](types_app.AppCallTransactionResultOfType.md#return) + +#### Defined in + +[src/types/app.ts:205](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L205) + +___ + +### transaction + +• **transaction**: `Transaction` + +The transaction + +#### Inherited from + +[AppCallTransactionResultOfType](types_app.AppCallTransactionResultOfType.md).[transaction](types_app.AppCallTransactionResultOfType.md#transaction) + +#### Defined in + +[src/types/transaction.ts:44](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L44) + +___ + +### transactions + +• **transactions**: `Transaction`[] + +The transactions that have been prepared and/or sent + +#### Inherited from + +[AppCallTransactionResultOfType](types_app.AppCallTransactionResultOfType.md).[transactions](types_app.AppCallTransactionResultOfType.md#transactions) + +#### Defined in + +[src/types/transaction.ts:52](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L52) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppCallTransactionResultOfType.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppCallTransactionResultOfType.md new file mode 100644 index 000000000..605e882c3 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppCallTransactionResultOfType.md @@ -0,0 +1,110 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app](../modules/types_app.md) / AppCallTransactionResultOfType + +# Interface: AppCallTransactionResultOfType + +[types/app](../modules/types_app.md).AppCallTransactionResultOfType + +The result of preparing and/or sending multiple transactions + +## Type parameters + +| Name | +| :------ | +| `T` | + +## Hierarchy + +- [`SendTransactionResults`](types_transaction.SendTransactionResults.md) + +- [`SendTransactionResult`](types_transaction.SendTransactionResult.md) + + ↳ **`AppCallTransactionResultOfType`** + + ↳↳ [`AppCallTransactionResult`](types_app.AppCallTransactionResult.md) + +## Table of contents + +### Properties + +- [confirmation](types_app.AppCallTransactionResultOfType.md#confirmation) +- [confirmations](types_app.AppCallTransactionResultOfType.md#confirmations) +- [return](types_app.AppCallTransactionResultOfType.md#return) +- [transaction](types_app.AppCallTransactionResultOfType.md#transaction) +- [transactions](types_app.AppCallTransactionResultOfType.md#transactions) + +## Properties + +### confirmation + +• `Optional` **confirmation**: `PendingTransactionResponse` + +The response if the transaction was sent and waited for + +#### Inherited from + +[SendTransactionResult](types_transaction.SendTransactionResult.md).[confirmation](types_transaction.SendTransactionResult.md#confirmation) + +#### Defined in + +[src/types/transaction.ts:46](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L46) + +___ + +### confirmations + +• `Optional` **confirmations**: `PendingTransactionResponse`[] + +The responses if the transactions were sent and waited for, +the index of the confirmation will match the index of the underlying transaction + +#### Inherited from + +[SendTransactionResults](types_transaction.SendTransactionResults.md).[confirmations](types_transaction.SendTransactionResults.md#confirmations) + +#### Defined in + +[src/types/transaction.ts:56](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L56) + +___ + +### return + +• `Optional` **return**: `T` + +If an ABI method was called the processed return value + +#### Defined in + +[src/types/app.ts:205](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L205) + +___ + +### transaction + +• **transaction**: `Transaction` + +The transaction + +#### Inherited from + +[SendTransactionResult](types_transaction.SendTransactionResult.md).[transaction](types_transaction.SendTransactionResult.md#transaction) + +#### Defined in + +[src/types/transaction.ts:44](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L44) + +___ + +### transactions + +• **transactions**: `Transaction`[] + +The transactions that have been prepared and/or sent + +#### Inherited from + +[SendTransactionResults](types_transaction.SendTransactionResults.md).[transactions](types_transaction.SendTransactionResults.md#transactions) + +#### Defined in + +[src/types/transaction.ts:52](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L52) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppCompilationResult.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppCompilationResult.md new file mode 100644 index 000000000..d56efadd8 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppCompilationResult.md @@ -0,0 +1,38 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app](../modules/types_app.md) / AppCompilationResult + +# Interface: AppCompilationResult + +[types/app](../modules/types_app.md).AppCompilationResult + +The result of compiling the approval and clear TEAL for an app + +## Table of contents + +### Properties + +- [compiledApproval](types_app.AppCompilationResult.md#compiledapproval) +- [compiledClear](types_app.AppCompilationResult.md#compiledclear) + +## Properties + +### compiledApproval + +• **compiledApproval**: [`CompiledTeal`](types_app.CompiledTeal.md) + +The compilation result of approval + +#### Defined in + +[src/types/app.ts:312](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L312) + +___ + +### compiledClear + +• **compiledClear**: [`CompiledTeal`](types_app.CompiledTeal.md) + +The compilation result of clear + +#### Defined in + +[src/types/app.ts:314](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L314) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppDeployMetadata.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppDeployMetadata.md new file mode 100644 index 000000000..3f72e88a5 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppDeployMetadata.md @@ -0,0 +1,70 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app](../modules/types_app.md) / AppDeployMetadata + +# Interface: AppDeployMetadata + +[types/app](../modules/types_app.md).AppDeployMetadata + +The payload of the metadata to add to the transaction note when deploying an app, noting it will be prefixed with `APP_DEPLOY_NOTE_PREFIX`. + +## Hierarchy + +- **`AppDeployMetadata`** + + ↳ [`AppMetadata`](types_app.AppMetadata.md) + +## Table of contents + +### Properties + +- [deletable](types_app.AppDeployMetadata.md#deletable) +- [name](types_app.AppDeployMetadata.md#name) +- [updatable](types_app.AppDeployMetadata.md#updatable) +- [version](types_app.AppDeployMetadata.md#version) + +## Properties + +### deletable + +• `Optional` **deletable**: `boolean` + +Whether or not the app is deletable / permanent / unspecified + +#### Defined in + +[src/types/app.ts:230](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L230) + +___ + +### name + +• **name**: `string` + +The unique name identifier of the app within the creator account + +#### Defined in + +[src/types/app.ts:226](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L226) + +___ + +### updatable + +• `Optional` **updatable**: `boolean` + +Whether or not the app is updatable / immutable / unspecified + +#### Defined in + +[src/types/app.ts:232](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L232) + +___ + +### version + +• **version**: `string` + +The version of app that is / will be deployed + +#### Defined in + +[src/types/app.ts:228](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L228) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppDeploymentParams.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppDeploymentParams.md new file mode 100644 index 000000000..3d2d2fc51 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppDeploymentParams.md @@ -0,0 +1,288 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app](../modules/types_app.md) / AppDeploymentParams + +# Interface: AppDeploymentParams + +[types/app](../modules/types_app.md).AppDeploymentParams + +The parameters to deploy an app + +## Hierarchy + +- `Omit`<[`CreateAppParams`](types_app.CreateAppParams.md), ``"onCompleteAction"`` \| ``"args"`` \| ``"note"`` \| ``"skipSending"`` \| ``"skipWaiting"`` \| ``"atc"``\> + + ↳ **`AppDeploymentParams`** + +## Table of contents + +### Properties + +- [approvalProgram](types_app.AppDeploymentParams.md#approvalprogram) +- [clearStateProgram](types_app.AppDeploymentParams.md#clearstateprogram) +- [createArgs](types_app.AppDeploymentParams.md#createargs) +- [createOnCompleteAction](types_app.AppDeploymentParams.md#createoncompleteaction) +- [deleteArgs](types_app.AppDeploymentParams.md#deleteargs) +- [deployTimeParams](types_app.AppDeploymentParams.md#deploytimeparams) +- [existingDeployments](types_app.AppDeploymentParams.md#existingdeployments) +- [fee](types_app.AppDeploymentParams.md#fee) +- [from](types_app.AppDeploymentParams.md#from) +- [maxFee](types_app.AppDeploymentParams.md#maxfee) +- [maxRoundsToWaitForConfirmation](types_app.AppDeploymentParams.md#maxroundstowaitforconfirmation) +- [metadata](types_app.AppDeploymentParams.md#metadata) +- [onSchemaBreak](types_app.AppDeploymentParams.md#onschemabreak) +- [onUpdate](types_app.AppDeploymentParams.md#onupdate) +- [schema](types_app.AppDeploymentParams.md#schema) +- [suppressLog](types_app.AppDeploymentParams.md#suppresslog) +- [transactionParams](types_app.AppDeploymentParams.md#transactionparams) +- [updateArgs](types_app.AppDeploymentParams.md#updateargs) + +## Properties + +### approvalProgram + +• **approvalProgram**: `string` \| `Uint8Array` + +The approval program as raw teal (string) or compiled teal, base 64 encoded as a byte array (Uint8Array) + +#### Inherited from + +Omit.approvalProgram + +#### Defined in + +[src/types/app.ts:121](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L121) + +___ + +### clearStateProgram + +• **clearStateProgram**: `string` \| `Uint8Array` + +The clear state program as raw teal (string) or compiled teal, base 64 encoded as a byte array (Uint8Array) + +#### Inherited from + +Omit.clearStateProgram + +#### Defined in + +[src/types/app.ts:123](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L123) + +___ + +### createArgs + +• `Optional` **createArgs**: [`AppCallArgs`](../modules/types_app.md#appcallargs) + +Any args to pass to any create transaction that is issued as part of deployment + +#### Defined in + +[src/types/app.ts:300](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L300) + +___ + +### createOnCompleteAction + +• `Optional` **createOnCompleteAction**: ``"no_op"`` \| ``"opt_in"`` \| ``"close_out"`` \| ``"update_application"`` \| ``"delete_application"`` \| `NoOpOC` \| `OptInOC` \| `CloseOutOC` \| `UpdateApplicationOC` \| `DeleteApplicationOC` + +Override the on-completion action for the create call; defaults to NoOp + +#### Defined in + +[src/types/app.ts:302](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L302) + +___ + +### deleteArgs + +• `Optional` **deleteArgs**: [`AppCallArgs`](../modules/types_app.md#appcallargs) + +Any args to pass to any delete transaction that is issued as part of deployment + +#### Defined in + +[src/types/app.ts:306](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L306) + +___ + +### deployTimeParams + +• `Optional` **deployTimeParams**: [`TealTemplateParams`](types_app.TealTemplateParams.md) + +Any deploy-time parameters to replace in the TEAL code + +#### Defined in + +[src/types/app.ts:292](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L292) + +___ + +### existingDeployments + +• `Optional` **existingDeployments**: [`AppLookup`](types_app.AppLookup.md) + +Optional cached value of the existing apps for the given creator + +#### Defined in + +[src/types/app.ts:298](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L298) + +___ + +### fee + +• `Optional` **fee**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) + +The flat fee you want to pay, useful for covering extra fees in a transaction group or app call + +#### Inherited from + +Omit.fee + +#### Defined in + +[src/types/transaction.ts:34](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L34) + +___ + +### from + +• **from**: [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom) + +The account (with private key loaded) that will send the transaction + +#### Inherited from + +Omit.from + +#### Defined in + +[src/types/app.ts:119](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L119) + +___ + +### maxFee + +• `Optional` **maxFee**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) + +The maximum fee that you are happy to pay (default: unbounded) - if this is set it's possible the transaction could get rejected during network congestion + +#### Inherited from + +Omit.maxFee + +#### Defined in + +[src/types/transaction.ts:36](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L36) + +___ + +### maxRoundsToWaitForConfirmation + +• `Optional` **maxRoundsToWaitForConfirmation**: `number` + +The maximum number of rounds to wait for confirmation, only applies if `skipWaiting` is `undefined` or `false`, default: wait up to 5 rounds + +#### Inherited from + +Omit.maxRoundsToWaitForConfirmation + +#### Defined in + +[src/types/transaction.ts:38](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L38) + +___ + +### metadata + +• **metadata**: [`AppDeployMetadata`](types_app.AppDeployMetadata.md) + +The deployment metadata + +#### Defined in + +[src/types/app.ts:290](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L290) + +___ + +### onSchemaBreak + +• `Optional` **onSchemaBreak**: [`OnSchemaBreak`](../enums/types_app.OnSchemaBreak.md) \| ``"replace"`` \| ``"fail"`` \| ``"append"`` + +What action to perform if a schema break is detected + +#### Defined in + +[src/types/app.ts:294](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L294) + +___ + +### onUpdate + +• `Optional` **onUpdate**: ``"replace"`` \| ``"fail"`` \| ``"append"`` \| [`OnUpdate`](../enums/types_app.OnUpdate.md) \| ``"update"`` + +What action to perform if a TEAL update is detected + +#### Defined in + +[src/types/app.ts:296](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L296) + +___ + +### schema + +• **schema**: [`AppStorageSchema`](types_app.AppStorageSchema.md) + +The storage schema to request for the created app + +#### Inherited from + +Omit.schema + +#### Defined in + +[src/types/app.ts:135](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L135) + +___ + +### suppressLog + +• `Optional` **suppressLog**: `boolean` + +Whether to suppress log messages from transaction send, default: do not suppress + +#### Inherited from + +Omit.suppressLog + +#### Defined in + +[src/types/transaction.ts:32](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L32) + +___ + +### transactionParams + +• `Optional` **transactionParams**: `SuggestedParams` + +Optional transaction parameters + +#### Inherited from + +Omit.transactionParams + +#### Defined in + +[src/types/app.ts:125](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L125) + +___ + +### updateArgs + +• `Optional` **updateArgs**: [`AppCallArgs`](../modules/types_app.md#appcallargs) + +Any args to pass to any update transaction that is issued as part of deployment + +#### Defined in + +[src/types/app.ts:304](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L304) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppLookup.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppLookup.md new file mode 100644 index 000000000..ad3537a2a --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppLookup.md @@ -0,0 +1,34 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app](../modules/types_app.md) / AppLookup + +# Interface: AppLookup + +[types/app](../modules/types_app.md).AppLookup + +A lookup of name -> Algorand app for a creator + +## Table of contents + +### Properties + +- [apps](types_app.AppLookup.md#apps) +- [creator](types_app.AppLookup.md#creator) + +## Properties + +### apps + +• **apps**: `Readonly`<{ `[name: string]`: [`AppMetadata`](types_app.AppMetadata.md); }\> + +#### Defined in + +[src/types/app.ts:250](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L250) + +___ + +### creator + +• **creator**: `string` + +#### Defined in + +[src/types/app.ts:249](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L249) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppMetadata.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppMetadata.md new file mode 100644 index 000000000..5c73bb6ce --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppMetadata.md @@ -0,0 +1,174 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app](../modules/types_app.md) / AppMetadata + +# Interface: AppMetadata + +[types/app](../modules/types_app.md).AppMetadata + +The metadata that can be collected about a deployed app + +## Hierarchy + +- [`AppReference`](types_app.AppReference.md) + +- [`AppDeployMetadata`](types_app.AppDeployMetadata.md) + + ↳ **`AppMetadata`** + +## Table of contents + +### Properties + +- [appAddress](types_app.AppMetadata.md#appaddress) +- [appId](types_app.AppMetadata.md#appid) +- [createdMetadata](types_app.AppMetadata.md#createdmetadata) +- [createdRound](types_app.AppMetadata.md#createdround) +- [deletable](types_app.AppMetadata.md#deletable) +- [deleted](types_app.AppMetadata.md#deleted) +- [name](types_app.AppMetadata.md#name) +- [updatable](types_app.AppMetadata.md#updatable) +- [updatedRound](types_app.AppMetadata.md#updatedround) +- [version](types_app.AppMetadata.md#version) + +## Properties + +### appAddress + +• **appAddress**: `string` + +The Algorand address of the account associated with the app + +#### Inherited from + +[AppReference](types_app.AppReference.md).[appAddress](types_app.AppReference.md#appaddress) + +#### Defined in + +[src/types/app.ts:42](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L42) + +___ + +### appId + +• **appId**: `number` \| `bigint` + +The id of the app + +#### Inherited from + +[AppReference](types_app.AppReference.md).[appId](types_app.AppReference.md#appid) + +#### Defined in + +[src/types/app.ts:40](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L40) + +___ + +### createdMetadata + +• **createdMetadata**: [`AppDeployMetadata`](types_app.AppDeployMetadata.md) + +The metadata when the app was created + +#### Defined in + +[src/types/app.ts:242](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L242) + +___ + +### createdRound + +• **createdRound**: `number` + +The round the app was created + +#### Defined in + +[src/types/app.ts:238](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L238) + +___ + +### deletable + +• `Optional` **deletable**: `boolean` + +Whether or not the app is deletable / permanent / unspecified + +#### Inherited from + +[AppDeployMetadata](types_app.AppDeployMetadata.md).[deletable](types_app.AppDeployMetadata.md#deletable) + +#### Defined in + +[src/types/app.ts:230](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L230) + +___ + +### deleted + +• **deleted**: `boolean` + +Whether or not the app is deleted + +#### Defined in + +[src/types/app.ts:244](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L244) + +___ + +### name + +• **name**: `string` + +The unique name identifier of the app within the creator account + +#### Inherited from + +[AppDeployMetadata](types_app.AppDeployMetadata.md).[name](types_app.AppDeployMetadata.md#name) + +#### Defined in + +[src/types/app.ts:226](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L226) + +___ + +### updatable + +• `Optional` **updatable**: `boolean` + +Whether or not the app is updatable / immutable / unspecified + +#### Inherited from + +[AppDeployMetadata](types_app.AppDeployMetadata.md).[updatable](types_app.AppDeployMetadata.md#updatable) + +#### Defined in + +[src/types/app.ts:232](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L232) + +___ + +### updatedRound + +• **updatedRound**: `number` + +The last round that the app was updated + +#### Defined in + +[src/types/app.ts:240](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L240) + +___ + +### version + +• **version**: `string` + +The version of app that is / will be deployed + +#### Inherited from + +[AppDeployMetadata](types_app.AppDeployMetadata.md).[version](types_app.AppDeployMetadata.md#version) + +#### Defined in + +[src/types/app.ts:228](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L228) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppReference.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppReference.md new file mode 100644 index 000000000..a2ba94c8a --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppReference.md @@ -0,0 +1,44 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app](../modules/types_app.md) / AppReference + +# Interface: AppReference + +[types/app](../modules/types_app.md).AppReference + +Information about an Algorand app + +## Hierarchy + +- **`AppReference`** + + ↳ [`AppMetadata`](types_app.AppMetadata.md) + +## Table of contents + +### Properties + +- [appAddress](types_app.AppReference.md#appaddress) +- [appId](types_app.AppReference.md#appid) + +## Properties + +### appAddress + +• **appAddress**: `string` + +The Algorand address of the account associated with the app + +#### Defined in + +[src/types/app.ts:42](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L42) + +___ + +### appId + +• **appId**: `number` \| `bigint` + +The id of the app + +#### Defined in + +[src/types/app.ts:40](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L40) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppState.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppState.md new file mode 100644 index 000000000..1f4f91e38 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppState.md @@ -0,0 +1,11 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app](../modules/types_app.md) / AppState + +# Interface: AppState + +[types/app](../modules/types_app.md).AppState + +Object holding app state values + +## Indexable + +▪ [key: `string`]: { `keyBase64`: `string` ; `keyRaw`: `Uint8Array` ; `value`: `number` \| `bigint` } \| { `keyBase64`: `string` ; `keyRaw`: `Uint8Array` ; `value`: `string` ; `valueBase64`: `string` ; `valueRaw`: `Uint8Array` } diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppStorageSchema.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppStorageSchema.md new file mode 100644 index 000000000..80980b356 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.AppStorageSchema.md @@ -0,0 +1,77 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app](../modules/types_app.md) / AppStorageSchema + +# Interface: AppStorageSchema + +[types/app](../modules/types_app.md).AppStorageSchema + +Parameters representing the storage schema of an app. + +## Table of contents + +### Properties + +- [extraPages](types_app.AppStorageSchema.md#extrapages) +- [globalByteSlices](types_app.AppStorageSchema.md#globalbyteslices) +- [globalInts](types_app.AppStorageSchema.md#globalints) +- [localByteSlices](types_app.AppStorageSchema.md#localbyteslices) +- [localInts](types_app.AppStorageSchema.md#localints) + +## Properties + +### extraPages + +• `Optional` **extraPages**: `number` + +Any extra pages that are needed for the smart contract; if left blank then the right number of pages will be calculated based on the teal code size + +#### Defined in + +[src/types/app.ts:186](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L186) + +___ + +### globalByteSlices + +• **globalByteSlices**: `number` + +Restricts number of byte slices in global state + +#### Defined in + +[src/types/app.ts:184](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L184) + +___ + +### globalInts + +• **globalInts**: `number` + +Restricts number of ints in global state + +#### Defined in + +[src/types/app.ts:182](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L182) + +___ + +### localByteSlices + +• **localByteSlices**: `number` + +Restricts number of byte slices in per-user local state + +#### Defined in + +[src/types/app.ts:180](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L180) + +___ + +### localInts + +• **localInts**: `number` + +Restricts number of ints in per-user local state + +#### Defined in + +[src/types/app.ts:178](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L178) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.BoxName.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.BoxName.md new file mode 100644 index 000000000..b63f8b60e --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.BoxName.md @@ -0,0 +1,51 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app](../modules/types_app.md) / BoxName + +# Interface: BoxName + +[types/app](../modules/types_app.md).BoxName + +The name of a box storage box + +## Table of contents + +### Properties + +- [name](types_app.BoxName.md#name) +- [nameBase64](types_app.BoxName.md#namebase64) +- [nameRaw](types_app.BoxName.md#nameraw) + +## Properties + +### name + +• **name**: `string` + +Name in UTF-8 + +#### Defined in + +[src/types/app.ts:337](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L337) + +___ + +### nameBase64 + +• **nameBase64**: `string` + +Name in Base64 + +#### Defined in + +[src/types/app.ts:341](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L341) + +___ + +### nameRaw + +• **nameRaw**: `Uint8Array` + +Name in binary bytes + +#### Defined in + +[src/types/app.ts:339](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L339) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.BoxReference.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.BoxReference.md new file mode 100644 index 000000000..9a34507dd --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.BoxReference.md @@ -0,0 +1,38 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app](../modules/types_app.md) / BoxReference + +# Interface: BoxReference + +[types/app](../modules/types_app.md).BoxReference + +A grouping of the app ID and name of the box in an Uint8Array + +## Table of contents + +### Properties + +- [appId](types_app.BoxReference.md#appid) +- [name](types_app.BoxReference.md#name) + +## Properties + +### appId + +• **appId**: `number` \| `bigint` + +A unique application id + +#### Defined in + +[src/types/app.ts:52](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L52) + +___ + +### name + +• **name**: [`BoxIdentifier`](../modules/types_app.md#boxidentifier) + +Name of box to reference + +#### Defined in + +[src/types/app.ts:56](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L56) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.BoxValueRequestParams.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.BoxValueRequestParams.md new file mode 100644 index 000000000..9108013e6 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.BoxValueRequestParams.md @@ -0,0 +1,51 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app](../modules/types_app.md) / BoxValueRequestParams + +# Interface: BoxValueRequestParams + +[types/app](../modules/types_app.md).BoxValueRequestParams + +Parameters to get and decode a box value as an ABI type. + +## Table of contents + +### Properties + +- [appId](types_app.BoxValueRequestParams.md#appid) +- [boxName](types_app.BoxValueRequestParams.md#boxname) +- [type](types_app.BoxValueRequestParams.md#type) + +## Properties + +### appId + +• **appId**: `number` \| `bigint` + +The ID of the app return box names for + +#### Defined in + +[src/types/app.ts:349](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L349) + +___ + +### boxName + +• **boxName**: `string` \| `Uint8Array` \| [`BoxName`](types_app.BoxName.md) + +The name of the box to return either as a string, binary array or `BoxName` + +#### Defined in + +[src/types/app.ts:351](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L351) + +___ + +### type + +• **type**: `ABIType` + +The ABI type to decode the value using + +#### Defined in + +[src/types/app.ts:353](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L353) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.BoxValuesRequestParams.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.BoxValuesRequestParams.md new file mode 100644 index 000000000..be8baef00 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.BoxValuesRequestParams.md @@ -0,0 +1,51 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app](../modules/types_app.md) / BoxValuesRequestParams + +# Interface: BoxValuesRequestParams + +[types/app](../modules/types_app.md).BoxValuesRequestParams + +Parameters to get and decode a box value as an ABI type. + +## Table of contents + +### Properties + +- [appId](types_app.BoxValuesRequestParams.md#appid) +- [boxNames](types_app.BoxValuesRequestParams.md#boxnames) +- [type](types_app.BoxValuesRequestParams.md#type) + +## Properties + +### appId + +• **appId**: `number` + +The ID of the app return box names for + +#### Defined in + +[src/types/app.ts:361](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L361) + +___ + +### boxNames + +• **boxNames**: (`string` \| `Uint8Array` \| [`BoxName`](types_app.BoxName.md))[] + +The names of the boxes to return either as a string, binary array or BoxName` + +#### Defined in + +[src/types/app.ts:363](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L363) + +___ + +### type + +• **type**: `ABIType` + +The ABI type to decode the value using + +#### Defined in + +[src/types/app.ts:365](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L365) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.CompiledTeal.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.CompiledTeal.md new file mode 100644 index 000000000..e9785a2fd --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.CompiledTeal.md @@ -0,0 +1,77 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app](../modules/types_app.md) / CompiledTeal + +# Interface: CompiledTeal + +[types/app](../modules/types_app.md).CompiledTeal + +Information about a compiled teal program + +## Table of contents + +### Properties + +- [compiled](types_app.CompiledTeal.md#compiled) +- [compiledBase64ToBytes](types_app.CompiledTeal.md#compiledbase64tobytes) +- [compiledHash](types_app.CompiledTeal.md#compiledhash) +- [sourceMap](types_app.CompiledTeal.md#sourcemap) +- [teal](types_app.CompiledTeal.md#teal) + +## Properties + +### compiled + +• **compiled**: `string` + +The compiled code + +#### Defined in + +[src/types/app.ts:194](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L194) + +___ + +### compiledBase64ToBytes + +• **compiledBase64ToBytes**: `Uint8Array` + +The base64 encoded code as a byte array + +#### Defined in + +[src/types/app.ts:198](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L198) + +___ + +### compiledHash + +• **compiledHash**: `string` + +The has returned by the compiler + +#### Defined in + +[src/types/app.ts:196](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L196) + +___ + +### sourceMap + +• **sourceMap**: `SourceMap` + +Source map from the compilation + +#### Defined in + +[src/types/app.ts:200](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L200) + +___ + +### teal + +• **teal**: `string` + +Original TEAL code + +#### Defined in + +[src/types/app.ts:192](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L192) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.CoreAppCallArgs.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.CoreAppCallArgs.md new file mode 100644 index 000000000..715e2c621 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.CoreAppCallArgs.md @@ -0,0 +1,83 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app](../modules/types_app.md) / CoreAppCallArgs + +# Interface: CoreAppCallArgs + +[types/app](../modules/types_app.md).CoreAppCallArgs + +Common app call arguments for ABI and non-ABI (raw) calls + +## Hierarchy + +- **`CoreAppCallArgs`** + + ↳ [`RawAppCallArgs`](types_app.RawAppCallArgs.md) + +## Table of contents + +### Properties + +- [accounts](types_app.CoreAppCallArgs.md#accounts) +- [apps](types_app.CoreAppCallArgs.md#apps) +- [assets](types_app.CoreAppCallArgs.md#assets) +- [boxes](types_app.CoreAppCallArgs.md#boxes) +- [lease](types_app.CoreAppCallArgs.md#lease) + +## Properties + +### accounts + +• `Optional` **accounts**: (`string` \| `Address`)[] + +The address of any accounts to load in + +#### Defined in + +[src/types/app.ts:74](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L74) + +___ + +### apps + +• `Optional` **apps**: `number`[] + +IDs of any apps to load into the foreignApps array + +#### Defined in + +[src/types/app.ts:76](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L76) + +___ + +### assets + +• `Optional` **assets**: `number`[] + +IDs of any assets to load into the foreignAssets array + +#### Defined in + +[src/types/app.ts:78](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L78) + +___ + +### boxes + +• `Optional` **boxes**: ([`BoxReference`](types_app.BoxReference.md) \| [`BoxIdentifier`](../modules/types_app.md#boxidentifier) \| `BoxReference`)[] + +Any box references to load + +#### Defined in + +[src/types/app.ts:72](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L72) + +___ + +### lease + +• `Optional` **lease**: `string` \| `Uint8Array` + +The optional lease for the transaction + +#### Defined in + +[src/types/app.ts:70](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L70) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.CreateAppParams.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.CreateAppParams.md new file mode 100644 index 000000000..e083453ff --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.CreateAppParams.md @@ -0,0 +1,266 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app](../modules/types_app.md) / CreateAppParams + +# Interface: CreateAppParams + +[types/app](../modules/types_app.md).CreateAppParams + +Parameters that are passed in when creating an app. + +## Hierarchy + +- `CreateOrUpdateAppParams` + + ↳ **`CreateAppParams`** + +## Table of contents + +### Properties + +- [approvalProgram](types_app.CreateAppParams.md#approvalprogram) +- [args](types_app.CreateAppParams.md#args) +- [atc](types_app.CreateAppParams.md#atc) +- [clearStateProgram](types_app.CreateAppParams.md#clearstateprogram) +- [fee](types_app.CreateAppParams.md#fee) +- [from](types_app.CreateAppParams.md#from) +- [maxFee](types_app.CreateAppParams.md#maxfee) +- [maxRoundsToWaitForConfirmation](types_app.CreateAppParams.md#maxroundstowaitforconfirmation) +- [note](types_app.CreateAppParams.md#note) +- [onCompleteAction](types_app.CreateAppParams.md#oncompleteaction) +- [schema](types_app.CreateAppParams.md#schema) +- [skipSending](types_app.CreateAppParams.md#skipsending) +- [skipWaiting](types_app.CreateAppParams.md#skipwaiting) +- [suppressLog](types_app.CreateAppParams.md#suppresslog) +- [transactionParams](types_app.CreateAppParams.md#transactionparams) + +## Properties + +### approvalProgram + +• **approvalProgram**: `string` \| `Uint8Array` + +The approval program as raw teal (string) or compiled teal, base 64 encoded as a byte array (Uint8Array) + +#### Inherited from + +CreateOrUpdateAppParams.approvalProgram + +#### Defined in + +[src/types/app.ts:121](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L121) + +___ + +### args + +• `Optional` **args**: [`AppCallArgs`](../modules/types_app.md#appcallargs) + +The arguments passed in to the app call + +#### Inherited from + +CreateOrUpdateAppParams.args + +#### Defined in + +[src/types/app.ts:129](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L129) + +___ + +### atc + +• `Optional` **atc**: `AtomicTransactionComposer` + +An optional `AtomicTransactionComposer` to add the transaction to, if specified then `skipSending: undefined` has the same effect as `skipSending: true` + +#### Inherited from + +CreateOrUpdateAppParams.atc + +#### Defined in + +[src/types/transaction.ts:30](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L30) + +___ + +### clearStateProgram + +• **clearStateProgram**: `string` \| `Uint8Array` + +The clear state program as raw teal (string) or compiled teal, base 64 encoded as a byte array (Uint8Array) + +#### Inherited from + +CreateOrUpdateAppParams.clearStateProgram + +#### Defined in + +[src/types/app.ts:123](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L123) + +___ + +### fee + +• `Optional` **fee**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) + +The flat fee you want to pay, useful for covering extra fees in a transaction group or app call + +#### Inherited from + +CreateOrUpdateAppParams.fee + +#### Defined in + +[src/types/transaction.ts:34](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L34) + +___ + +### from + +• **from**: [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom) + +The account (with private key loaded) that will send the transaction + +#### Inherited from + +CreateOrUpdateAppParams.from + +#### Defined in + +[src/types/app.ts:119](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L119) + +___ + +### maxFee + +• `Optional` **maxFee**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) + +The maximum fee that you are happy to pay (default: unbounded) - if this is set it's possible the transaction could get rejected during network congestion + +#### Inherited from + +CreateOrUpdateAppParams.maxFee + +#### Defined in + +[src/types/transaction.ts:36](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L36) + +___ + +### maxRoundsToWaitForConfirmation + +• `Optional` **maxRoundsToWaitForConfirmation**: `number` + +The maximum number of rounds to wait for confirmation, only applies if `skipWaiting` is `undefined` or `false`, default: wait up to 5 rounds + +#### Inherited from + +CreateOrUpdateAppParams.maxRoundsToWaitForConfirmation + +#### Defined in + +[src/types/transaction.ts:38](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L38) + +___ + +### note + +• `Optional` **note**: [`TransactionNote`](../modules/types_transaction.md#transactionnote) + +The (optional) transaction note + +#### Inherited from + +CreateOrUpdateAppParams.note + +#### Defined in + +[src/types/app.ts:127](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L127) + +___ + +### onCompleteAction + +• `Optional` **onCompleteAction**: ``"no_op"`` \| ``"opt_in"`` \| ``"close_out"`` \| ``"update_application"`` \| ``"delete_application"`` \| `NoOpOC` \| `OptInOC` \| `CloseOutOC` \| `UpdateApplicationOC` \| `DeleteApplicationOC` + +Override the on-completion action for the create call; defaults to NoOp + +#### Defined in + +[src/types/app.ts:137](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L137) + +___ + +### schema + +• **schema**: [`AppStorageSchema`](types_app.AppStorageSchema.md) + +The storage schema to request for the created app + +#### Defined in + +[src/types/app.ts:135](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L135) + +___ + +### skipSending + +• `Optional` **skipSending**: `boolean` + +Whether to skip signing and sending the transaction to the chain (default: transaction signed and sent to chain, unless `atc` specified) +and instead just return the raw transaction, e.g. so you can add it to a group of transactions + +#### Inherited from + +CreateOrUpdateAppParams.skipSending + +#### Defined in + +[src/types/transaction.ts:26](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L26) + +___ + +### skipWaiting + +• `Optional` **skipWaiting**: `boolean` + +Whether to skip waiting for the submitted transaction (only relevant if `skipSending` is `false` or unset) + +#### Inherited from + +CreateOrUpdateAppParams.skipWaiting + +#### Defined in + +[src/types/transaction.ts:28](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L28) + +___ + +### suppressLog + +• `Optional` **suppressLog**: `boolean` + +Whether to suppress log messages from transaction send, default: do not suppress + +#### Inherited from + +CreateOrUpdateAppParams.suppressLog + +#### Defined in + +[src/types/transaction.ts:32](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L32) + +___ + +### transactionParams + +• `Optional` **transactionParams**: `SuggestedParams` + +Optional transaction parameters + +#### Inherited from + +CreateOrUpdateAppParams.transactionParams + +#### Defined in + +[src/types/app.ts:125](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L125) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.RawAppCallArgs.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.RawAppCallArgs.md new file mode 100644 index 000000000..00edc12da --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.RawAppCallArgs.md @@ -0,0 +1,131 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app](../modules/types_app.md) / RawAppCallArgs + +# Interface: RawAppCallArgs + +[types/app](../modules/types_app.md).RawAppCallArgs + +App call args with non-ABI (raw) values (minus some processing like encoding strings as binary) + +## Hierarchy + +- [`CoreAppCallArgs`](types_app.CoreAppCallArgs.md) + + ↳ **`RawAppCallArgs`** + + ↳↳ [`AppClientCallRawArgs`](types_app_client.AppClientCallRawArgs.md) + +## Table of contents + +### Properties + +- [accounts](types_app.RawAppCallArgs.md#accounts) +- [appArgs](types_app.RawAppCallArgs.md#appargs) +- [apps](types_app.RawAppCallArgs.md#apps) +- [assets](types_app.RawAppCallArgs.md#assets) +- [boxes](types_app.RawAppCallArgs.md#boxes) +- [lease](types_app.RawAppCallArgs.md#lease) +- [method](types_app.RawAppCallArgs.md#method) + +## Properties + +### accounts + +• `Optional` **accounts**: (`string` \| `Address`)[] + +The address of any accounts to load in + +#### Inherited from + +[CoreAppCallArgs](types_app.CoreAppCallArgs.md).[accounts](types_app.CoreAppCallArgs.md#accounts) + +#### Defined in + +[src/types/app.ts:74](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L74) + +___ + +### appArgs + +• `Optional` **appArgs**: (`string` \| `Uint8Array`)[] + +Any application arguments to pass through + +#### Defined in + +[src/types/app.ts:86](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L86) + +___ + +### apps + +• `Optional` **apps**: `number`[] + +IDs of any apps to load into the foreignApps array + +#### Inherited from + +[CoreAppCallArgs](types_app.CoreAppCallArgs.md).[apps](types_app.CoreAppCallArgs.md#apps) + +#### Defined in + +[src/types/app.ts:76](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L76) + +___ + +### assets + +• `Optional` **assets**: `number`[] + +IDs of any assets to load into the foreignAssets array + +#### Inherited from + +[CoreAppCallArgs](types_app.CoreAppCallArgs.md).[assets](types_app.CoreAppCallArgs.md#assets) + +#### Defined in + +[src/types/app.ts:78](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L78) + +___ + +### boxes + +• `Optional` **boxes**: ([`BoxReference`](types_app.BoxReference.md) \| [`BoxIdentifier`](../modules/types_app.md#boxidentifier) \| `BoxReference`)[] + +Any box references to load + +#### Inherited from + +[CoreAppCallArgs](types_app.CoreAppCallArgs.md).[boxes](types_app.CoreAppCallArgs.md#boxes) + +#### Defined in + +[src/types/app.ts:72](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L72) + +___ + +### lease + +• `Optional` **lease**: `string` \| `Uint8Array` + +The optional lease for the transaction + +#### Inherited from + +[CoreAppCallArgs](types_app.CoreAppCallArgs.md).[lease](types_app.CoreAppCallArgs.md#lease) + +#### Defined in + +[src/types/app.ts:70](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L70) + +___ + +### method + +• `Optional` **method**: `undefined` + +Property to aid intellisense + +#### Defined in + +[src/types/app.ts:88](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L88) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.TealTemplateParams.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.TealTemplateParams.md new file mode 100644 index 000000000..ad36e436c --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.TealTemplateParams.md @@ -0,0 +1,13 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app](../modules/types_app.md) / TealTemplateParams + +# Interface: TealTemplateParams + +[types/app](../modules/types_app.md).TealTemplateParams + +Dictionary of deploy-time parameters to replace in a teal template. + +Note: Looks for `TMPL_{parameter}` for template replacements i.e. you can leave out the `TMPL_`. + +## Indexable + +▪ [key: `string`]: `string` \| `bigint` \| `number` \| `Uint8Array` diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.UpdateAppParams.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.UpdateAppParams.md new file mode 100644 index 000000000..488a39067 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app.UpdateAppParams.md @@ -0,0 +1,253 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app](../modules/types_app.md) / UpdateAppParams + +# Interface: UpdateAppParams + +[types/app](../modules/types_app.md).UpdateAppParams + +Parameters that are passed in when updating an app. + +## Hierarchy + +- `CreateOrUpdateAppParams` + + ↳ **`UpdateAppParams`** + +## Table of contents + +### Properties + +- [appId](types_app.UpdateAppParams.md#appid) +- [approvalProgram](types_app.UpdateAppParams.md#approvalprogram) +- [args](types_app.UpdateAppParams.md#args) +- [atc](types_app.UpdateAppParams.md#atc) +- [clearStateProgram](types_app.UpdateAppParams.md#clearstateprogram) +- [fee](types_app.UpdateAppParams.md#fee) +- [from](types_app.UpdateAppParams.md#from) +- [maxFee](types_app.UpdateAppParams.md#maxfee) +- [maxRoundsToWaitForConfirmation](types_app.UpdateAppParams.md#maxroundstowaitforconfirmation) +- [note](types_app.UpdateAppParams.md#note) +- [skipSending](types_app.UpdateAppParams.md#skipsending) +- [skipWaiting](types_app.UpdateAppParams.md#skipwaiting) +- [suppressLog](types_app.UpdateAppParams.md#suppresslog) +- [transactionParams](types_app.UpdateAppParams.md#transactionparams) + +## Properties + +### appId + +• **appId**: `number` \| `bigint` + +The id of the app to update + +#### Defined in + +[src/types/app.ts:143](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L143) + +___ + +### approvalProgram + +• **approvalProgram**: `string` \| `Uint8Array` + +The approval program as raw teal (string) or compiled teal, base 64 encoded as a byte array (Uint8Array) + +#### Inherited from + +CreateOrUpdateAppParams.approvalProgram + +#### Defined in + +[src/types/app.ts:121](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L121) + +___ + +### args + +• `Optional` **args**: [`AppCallArgs`](../modules/types_app.md#appcallargs) + +The arguments passed in to the app call + +#### Inherited from + +CreateOrUpdateAppParams.args + +#### Defined in + +[src/types/app.ts:129](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L129) + +___ + +### atc + +• `Optional` **atc**: `AtomicTransactionComposer` + +An optional `AtomicTransactionComposer` to add the transaction to, if specified then `skipSending: undefined` has the same effect as `skipSending: true` + +#### Inherited from + +CreateOrUpdateAppParams.atc + +#### Defined in + +[src/types/transaction.ts:30](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L30) + +___ + +### clearStateProgram + +• **clearStateProgram**: `string` \| `Uint8Array` + +The clear state program as raw teal (string) or compiled teal, base 64 encoded as a byte array (Uint8Array) + +#### Inherited from + +CreateOrUpdateAppParams.clearStateProgram + +#### Defined in + +[src/types/app.ts:123](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L123) + +___ + +### fee + +• `Optional` **fee**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) + +The flat fee you want to pay, useful for covering extra fees in a transaction group or app call + +#### Inherited from + +CreateOrUpdateAppParams.fee + +#### Defined in + +[src/types/transaction.ts:34](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L34) + +___ + +### from + +• **from**: [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom) + +The account (with private key loaded) that will send the transaction + +#### Inherited from + +CreateOrUpdateAppParams.from + +#### Defined in + +[src/types/app.ts:119](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L119) + +___ + +### maxFee + +• `Optional` **maxFee**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) + +The maximum fee that you are happy to pay (default: unbounded) - if this is set it's possible the transaction could get rejected during network congestion + +#### Inherited from + +CreateOrUpdateAppParams.maxFee + +#### Defined in + +[src/types/transaction.ts:36](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L36) + +___ + +### maxRoundsToWaitForConfirmation + +• `Optional` **maxRoundsToWaitForConfirmation**: `number` + +The maximum number of rounds to wait for confirmation, only applies if `skipWaiting` is `undefined` or `false`, default: wait up to 5 rounds + +#### Inherited from + +CreateOrUpdateAppParams.maxRoundsToWaitForConfirmation + +#### Defined in + +[src/types/transaction.ts:38](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L38) + +___ + +### note + +• `Optional` **note**: [`TransactionNote`](../modules/types_transaction.md#transactionnote) + +The (optional) transaction note + +#### Inherited from + +CreateOrUpdateAppParams.note + +#### Defined in + +[src/types/app.ts:127](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L127) + +___ + +### skipSending + +• `Optional` **skipSending**: `boolean` + +Whether to skip signing and sending the transaction to the chain (default: transaction signed and sent to chain, unless `atc` specified) +and instead just return the raw transaction, e.g. so you can add it to a group of transactions + +#### Inherited from + +CreateOrUpdateAppParams.skipSending + +#### Defined in + +[src/types/transaction.ts:26](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L26) + +___ + +### skipWaiting + +• `Optional` **skipWaiting**: `boolean` + +Whether to skip waiting for the submitted transaction (only relevant if `skipSending` is `false` or unset) + +#### Inherited from + +CreateOrUpdateAppParams.skipWaiting + +#### Defined in + +[src/types/transaction.ts:28](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L28) + +___ + +### suppressLog + +• `Optional` **suppressLog**: `boolean` + +Whether to suppress log messages from transaction send, default: do not suppress + +#### Inherited from + +CreateOrUpdateAppParams.suppressLog + +#### Defined in + +[src/types/transaction.ts:32](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L32) + +___ + +### transactionParams + +• `Optional` **transactionParams**: `SuggestedParams` + +Optional transaction parameters + +#### Inherited from + +CreateOrUpdateAppParams.transactionParams + +#### Defined in + +[src/types/app.ts:125](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L125) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientCallABIArgs.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientCallABIArgs.md new file mode 100644 index 000000000..ad0e38163 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientCallABIArgs.md @@ -0,0 +1,131 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app-client](../modules/types_app_client.md) / AppClientCallABIArgs + +# Interface: AppClientCallABIArgs + +[types/app-client](../modules/types_app_client.md).AppClientCallABIArgs + +## Hierarchy + +- `Omit`<[`ABIAppCallArgs`](../modules/types_app.md#abiappcallargs), ``"method"``\> + + ↳ **`AppClientCallABIArgs`** + +## Table of contents + +### Properties + +- [accounts](types_app_client.AppClientCallABIArgs.md#accounts) +- [apps](types_app_client.AppClientCallABIArgs.md#apps) +- [assets](types_app_client.AppClientCallABIArgs.md#assets) +- [boxes](types_app_client.AppClientCallABIArgs.md#boxes) +- [lease](types_app_client.AppClientCallABIArgs.md#lease) +- [method](types_app_client.AppClientCallABIArgs.md#method) +- [methodArgs](types_app_client.AppClientCallABIArgs.md#methodargs) + +## Properties + +### accounts + +• `Optional` **accounts**: (`string` \| `Address`)[] + +The address of any accounts to load in + +#### Inherited from + +Omit.accounts + +#### Defined in + +[src/types/app.ts:74](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L74) + +___ + +### apps + +• `Optional` **apps**: `number`[] + +IDs of any apps to load into the foreignApps array + +#### Inherited from + +Omit.apps + +#### Defined in + +[src/types/app.ts:76](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L76) + +___ + +### assets + +• `Optional` **assets**: `number`[] + +IDs of any assets to load into the foreignAssets array + +#### Inherited from + +Omit.assets + +#### Defined in + +[src/types/app.ts:78](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L78) + +___ + +### boxes + +• `Optional` **boxes**: ([`BoxReference`](types_app.BoxReference.md) \| [`BoxIdentifier`](../modules/types_app.md#boxidentifier) \| `BoxReference`)[] + +Any box references to load + +#### Inherited from + +Omit.boxes + +#### Defined in + +[src/types/app.ts:72](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L72) + +___ + +### lease + +• `Optional` **lease**: `string` \| `Uint8Array` + +The optional lease for the transaction + +#### Inherited from + +Omit.lease + +#### Defined in + +[src/types/app.ts:70](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L70) + +___ + +### method + +• **method**: `string` + +If calling an ABI method then either the name of the method, or the ABI signature + +#### Defined in + +[src/types/app-client.ts:164](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L164) + +___ + +### methodArgs + +• **methodArgs**: [`ABIAppCallArg`](../modules/types_app.md#abiappcallarg)[] + +The ABI method args to pass in + +#### Inherited from + +Omit.methodArgs + +#### Defined in + +[src/types/app.ts:107](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L107) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientCallCoreParams.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientCallCoreParams.md new file mode 100644 index 000000000..ee1b3fdb5 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientCallCoreParams.md @@ -0,0 +1,51 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app-client](../modules/types_app_client.md) / AppClientCallCoreParams + +# Interface: AppClientCallCoreParams + +[types/app-client](../modules/types_app_client.md).AppClientCallCoreParams + +Common (core) parameters to construct a ApplicationClient contract call + +## Table of contents + +### Properties + +- [note](types_app_client.AppClientCallCoreParams.md#note) +- [sendParams](types_app_client.AppClientCallCoreParams.md#sendparams) +- [sender](types_app_client.AppClientCallCoreParams.md#sender) + +## Properties + +### note + +• `Optional` **note**: [`TransactionNote`](../modules/types_transaction.md#transactionnote) + +The transaction note for the smart contract call + +#### Defined in + +[src/types/app-client.ts:175](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L175) + +___ + +### sendParams + +• `Optional` **sendParams**: [`SendTransactionParams`](types_transaction.SendTransactionParams.md) + +Parameters to control transaction sending + +#### Defined in + +[src/types/app-client.ts:177](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L177) + +___ + +### sender + +• `Optional` **sender**: [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom) + +The optional sender to send the transaction from, will use the application client's default sender by default if specified + +#### Defined in + +[src/types/app-client.ts:173](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L173) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientCallRawArgs.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientCallRawArgs.md new file mode 100644 index 000000000..e2988c48e --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientCallRawArgs.md @@ -0,0 +1,137 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app-client](../modules/types_app_client.md) / AppClientCallRawArgs + +# Interface: AppClientCallRawArgs + +[types/app-client](../modules/types_app_client.md).AppClientCallRawArgs + +App call args with non-ABI (raw) values (minus some processing like encoding strings as binary) + +## Hierarchy + +- [`RawAppCallArgs`](types_app.RawAppCallArgs.md) + + ↳ **`AppClientCallRawArgs`** + +## Table of contents + +### Properties + +- [accounts](types_app_client.AppClientCallRawArgs.md#accounts) +- [appArgs](types_app_client.AppClientCallRawArgs.md#appargs) +- [apps](types_app_client.AppClientCallRawArgs.md#apps) +- [assets](types_app_client.AppClientCallRawArgs.md#assets) +- [boxes](types_app_client.AppClientCallRawArgs.md#boxes) +- [lease](types_app_client.AppClientCallRawArgs.md#lease) +- [method](types_app_client.AppClientCallRawArgs.md#method) + +## Properties + +### accounts + +• `Optional` **accounts**: (`string` \| `Address`)[] + +The address of any accounts to load in + +#### Inherited from + +[RawAppCallArgs](types_app.RawAppCallArgs.md).[accounts](types_app.RawAppCallArgs.md#accounts) + +#### Defined in + +[src/types/app.ts:74](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L74) + +___ + +### appArgs + +• `Optional` **appArgs**: (`string` \| `Uint8Array`)[] + +Any application arguments to pass through + +#### Inherited from + +[RawAppCallArgs](types_app.RawAppCallArgs.md).[appArgs](types_app.RawAppCallArgs.md#appargs) + +#### Defined in + +[src/types/app.ts:86](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L86) + +___ + +### apps + +• `Optional` **apps**: `number`[] + +IDs of any apps to load into the foreignApps array + +#### Inherited from + +[RawAppCallArgs](types_app.RawAppCallArgs.md).[apps](types_app.RawAppCallArgs.md#apps) + +#### Defined in + +[src/types/app.ts:76](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L76) + +___ + +### assets + +• `Optional` **assets**: `number`[] + +IDs of any assets to load into the foreignAssets array + +#### Inherited from + +[RawAppCallArgs](types_app.RawAppCallArgs.md).[assets](types_app.RawAppCallArgs.md#assets) + +#### Defined in + +[src/types/app.ts:78](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L78) + +___ + +### boxes + +• `Optional` **boxes**: ([`BoxReference`](types_app.BoxReference.md) \| [`BoxIdentifier`](../modules/types_app.md#boxidentifier) \| `BoxReference`)[] + +Any box references to load + +#### Inherited from + +[RawAppCallArgs](types_app.RawAppCallArgs.md).[boxes](types_app.RawAppCallArgs.md#boxes) + +#### Defined in + +[src/types/app.ts:72](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L72) + +___ + +### lease + +• `Optional` **lease**: `string` \| `Uint8Array` + +The optional lease for the transaction + +#### Inherited from + +[RawAppCallArgs](types_app.RawAppCallArgs.md).[lease](types_app.RawAppCallArgs.md#lease) + +#### Defined in + +[src/types/app.ts:70](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L70) + +___ + +### method + +• `Optional` **method**: `undefined` + +Property to aid intellisense + +#### Inherited from + +[RawAppCallArgs](types_app.RawAppCallArgs.md).[method](types_app.RawAppCallArgs.md#method) + +#### Defined in + +[src/types/app.ts:88](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L88) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientCompilationParams.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientCompilationParams.md new file mode 100644 index 000000000..2fbd89f9a --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientCompilationParams.md @@ -0,0 +1,45 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app-client](../modules/types_app_client.md) / AppClientCompilationParams + +# Interface: AppClientCompilationParams + +[types/app-client](../modules/types_app_client.md).AppClientCompilationParams + +## Table of contents + +### Properties + +- [deletable](types_app_client.AppClientCompilationParams.md#deletable) +- [deployTimeParams](types_app_client.AppClientCompilationParams.md#deploytimeparams) +- [updatable](types_app_client.AppClientCompilationParams.md#updatable) + +## Properties + +### deletable + +• `Optional` **deletable**: `boolean` + +#### Defined in + +[src/types/app-client.ts:192](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L192) + +___ + +### deployTimeParams + +• `Optional` **deployTimeParams**: [`TealTemplateParams`](types_app.TealTemplateParams.md) + +Any deploy-time parameters to replace in the TEAL code + +#### Defined in + +[src/types/app-client.ts:188](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L188) + +___ + +### updatable + +• `Optional` **updatable**: `boolean` + +#### Defined in + +[src/types/app-client.ts:190](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L190) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientDeployCallInterfaceParams.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientDeployCallInterfaceParams.md new file mode 100644 index 000000000..1cfcb5574 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientDeployCallInterfaceParams.md @@ -0,0 +1,83 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app-client](../modules/types_app_client.md) / AppClientDeployCallInterfaceParams + +# Interface: AppClientDeployCallInterfaceParams + +[types/app-client](../modules/types_app_client.md).AppClientDeployCallInterfaceParams + +Call interface parameters to pass into ApplicationClient.deploy + +## Hierarchy + +- **`AppClientDeployCallInterfaceParams`** + + ↳ [`AppClientDeployParams`](types_app_client.AppClientDeployParams.md) + +## Table of contents + +### Properties + +- [createArgs](types_app_client.AppClientDeployCallInterfaceParams.md#createargs) +- [createOnCompleteAction](types_app_client.AppClientDeployCallInterfaceParams.md#createoncompleteaction) +- [deleteArgs](types_app_client.AppClientDeployCallInterfaceParams.md#deleteargs) +- [deployTimeParams](types_app_client.AppClientDeployCallInterfaceParams.md#deploytimeparams) +- [updateArgs](types_app_client.AppClientDeployCallInterfaceParams.md#updateargs) + +## Properties + +### createArgs + +• `Optional` **createArgs**: [`AppClientCallArgs`](../modules/types_app_client.md#appclientcallargs) + +Any args to pass to any create transaction that is issued as part of deployment + +#### Defined in + +[src/types/app-client.ts:147](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L147) + +___ + +### createOnCompleteAction + +• `Optional` **createOnCompleteAction**: ``"no_op"`` \| ``"opt_in"`` \| ``"close_out"`` \| ``"update_application"`` \| ``"delete_application"`` \| `NoOpOC` \| `OptInOC` \| `CloseOutOC` \| `UpdateApplicationOC` \| `DeleteApplicationOC` + +Override the on-completion action for the create call; defaults to NoOp + +#### Defined in + +[src/types/app-client.ts:149](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L149) + +___ + +### deleteArgs + +• `Optional` **deleteArgs**: [`AppClientCallArgs`](../modules/types_app_client.md#appclientcallargs) + +Any args to pass to any delete transaction that is issued as part of deployment + +#### Defined in + +[src/types/app-client.ts:153](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L153) + +___ + +### deployTimeParams + +• `Optional` **deployTimeParams**: [`TealTemplateParams`](types_app.TealTemplateParams.md) + +Any deploy-time parameters to replace in the TEAL code + +#### Defined in + +[src/types/app-client.ts:145](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L145) + +___ + +### updateArgs + +• `Optional` **updateArgs**: [`AppClientCallArgs`](../modules/types_app_client.md#appclientcallargs) + +Any args to pass to any update transaction that is issued as part of deployment + +#### Defined in + +[src/types/app-client.ts:151](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L151) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientDeployCoreParams.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientDeployCoreParams.md new file mode 100644 index 000000000..66510c0d1 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientDeployCoreParams.md @@ -0,0 +1,111 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app-client](../modules/types_app_client.md) / AppClientDeployCoreParams + +# Interface: AppClientDeployCoreParams + +[types/app-client](../modules/types_app_client.md).AppClientDeployCoreParams + +Core parameters to pass into ApplicationClient.deploy + +## Hierarchy + +- **`AppClientDeployCoreParams`** + + ↳ [`AppClientDeployParams`](types_app_client.AppClientDeployParams.md) + +## Table of contents + +### Properties + +- [allowDelete](types_app_client.AppClientDeployCoreParams.md#allowdelete) +- [allowUpdate](types_app_client.AppClientDeployCoreParams.md#allowupdate) +- [onSchemaBreak](types_app_client.AppClientDeployCoreParams.md#onschemabreak) +- [onUpdate](types_app_client.AppClientDeployCoreParams.md#onupdate) +- [sendParams](types_app_client.AppClientDeployCoreParams.md#sendparams) +- [sender](types_app_client.AppClientDeployCoreParams.md#sender) +- [version](types_app_client.AppClientDeployCoreParams.md#version) + +## Properties + +### allowDelete + +• `Optional` **allowDelete**: `boolean` + +Whether or not to allow deletes in the contract using the deploy-time deletability control if present in your contract. +If this is not specified then it will automatically be determined based on the AppSpec definition + +#### Defined in + +[src/types/app-client.ts:135](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L135) + +___ + +### allowUpdate + +• `Optional` **allowUpdate**: `boolean` + +Whether or not to allow updates in the contract using the deploy-time updatability control if present in your contract. +If this is not specified then it will automatically be determined based on the AppSpec definition + +#### Defined in + +[src/types/app-client.ts:131](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L131) + +___ + +### onSchemaBreak + +• `Optional` **onSchemaBreak**: [`OnSchemaBreak`](../enums/types_app.OnSchemaBreak.md) \| ``"replace"`` \| ``"fail"`` \| ``"append"`` + +What action to perform if a schema break is detected + +#### Defined in + +[src/types/app-client.ts:137](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L137) + +___ + +### onUpdate + +• `Optional` **onUpdate**: ``"replace"`` \| ``"fail"`` \| ``"append"`` \| [`OnUpdate`](../enums/types_app.OnUpdate.md) \| ``"update"`` + +What action to perform if a TEAL update is detected + +#### Defined in + +[src/types/app-client.ts:139](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L139) + +___ + +### sendParams + +• `Optional` **sendParams**: `Omit`<[`SendTransactionParams`](types_transaction.SendTransactionParams.md), ``"skipSending"`` \| ``"skipWaiting"``\> + +Parameters to control transaction sending + +#### Defined in + +[src/types/app-client.ts:127](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L127) + +___ + +### sender + +• `Optional` **sender**: [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom) + +The optional sender to send the transaction from, will use the application client's default sender by default if specified + +#### Defined in + +[src/types/app-client.ts:125](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L125) + +___ + +### version + +• `Optional` **version**: `string` + +The version of the contract, uses "1.0" by default + +#### Defined in + +[src/types/app-client.ts:123](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L123) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientDeployParams.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientDeployParams.md new file mode 100644 index 000000000..e9e085e4b --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppClientDeployParams.md @@ -0,0 +1,226 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app-client](../modules/types_app_client.md) / AppClientDeployParams + +# Interface: AppClientDeployParams + +[types/app-client](../modules/types_app_client.md).AppClientDeployParams + +Parameters to pass into ApplicationClient.deploy + +## Hierarchy + +- [`AppClientDeployCoreParams`](types_app_client.AppClientDeployCoreParams.md) + +- [`AppClientDeployCallInterfaceParams`](types_app_client.AppClientDeployCallInterfaceParams.md) + + ↳ **`AppClientDeployParams`** + +## Table of contents + +### Properties + +- [allowDelete](types_app_client.AppClientDeployParams.md#allowdelete) +- [allowUpdate](types_app_client.AppClientDeployParams.md#allowupdate) +- [createArgs](types_app_client.AppClientDeployParams.md#createargs) +- [createOnCompleteAction](types_app_client.AppClientDeployParams.md#createoncompleteaction) +- [deleteArgs](types_app_client.AppClientDeployParams.md#deleteargs) +- [deployTimeParams](types_app_client.AppClientDeployParams.md#deploytimeparams) +- [onSchemaBreak](types_app_client.AppClientDeployParams.md#onschemabreak) +- [onUpdate](types_app_client.AppClientDeployParams.md#onupdate) +- [sendParams](types_app_client.AppClientDeployParams.md#sendparams) +- [sender](types_app_client.AppClientDeployParams.md#sender) +- [updateArgs](types_app_client.AppClientDeployParams.md#updateargs) +- [version](types_app_client.AppClientDeployParams.md#version) + +## Properties + +### allowDelete + +• `Optional` **allowDelete**: `boolean` + +Whether or not to allow deletes in the contract using the deploy-time deletability control if present in your contract. +If this is not specified then it will automatically be determined based on the AppSpec definition + +#### Inherited from + +[AppClientDeployCoreParams](types_app_client.AppClientDeployCoreParams.md).[allowDelete](types_app_client.AppClientDeployCoreParams.md#allowdelete) + +#### Defined in + +[src/types/app-client.ts:135](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L135) + +___ + +### allowUpdate + +• `Optional` **allowUpdate**: `boolean` + +Whether or not to allow updates in the contract using the deploy-time updatability control if present in your contract. +If this is not specified then it will automatically be determined based on the AppSpec definition + +#### Inherited from + +[AppClientDeployCoreParams](types_app_client.AppClientDeployCoreParams.md).[allowUpdate](types_app_client.AppClientDeployCoreParams.md#allowupdate) + +#### Defined in + +[src/types/app-client.ts:131](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L131) + +___ + +### createArgs + +• `Optional` **createArgs**: [`AppClientCallArgs`](../modules/types_app_client.md#appclientcallargs) + +Any args to pass to any create transaction that is issued as part of deployment + +#### Inherited from + +[AppClientDeployCallInterfaceParams](types_app_client.AppClientDeployCallInterfaceParams.md).[createArgs](types_app_client.AppClientDeployCallInterfaceParams.md#createargs) + +#### Defined in + +[src/types/app-client.ts:147](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L147) + +___ + +### createOnCompleteAction + +• `Optional` **createOnCompleteAction**: ``"no_op"`` \| ``"opt_in"`` \| ``"close_out"`` \| ``"update_application"`` \| ``"delete_application"`` \| `NoOpOC` \| `OptInOC` \| `CloseOutOC` \| `UpdateApplicationOC` \| `DeleteApplicationOC` + +Override the on-completion action for the create call; defaults to NoOp + +#### Inherited from + +[AppClientDeployCallInterfaceParams](types_app_client.AppClientDeployCallInterfaceParams.md).[createOnCompleteAction](types_app_client.AppClientDeployCallInterfaceParams.md#createoncompleteaction) + +#### Defined in + +[src/types/app-client.ts:149](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L149) + +___ + +### deleteArgs + +• `Optional` **deleteArgs**: [`AppClientCallArgs`](../modules/types_app_client.md#appclientcallargs) + +Any args to pass to any delete transaction that is issued as part of deployment + +#### Inherited from + +[AppClientDeployCallInterfaceParams](types_app_client.AppClientDeployCallInterfaceParams.md).[deleteArgs](types_app_client.AppClientDeployCallInterfaceParams.md#deleteargs) + +#### Defined in + +[src/types/app-client.ts:153](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L153) + +___ + +### deployTimeParams + +• `Optional` **deployTimeParams**: [`TealTemplateParams`](types_app.TealTemplateParams.md) + +Any deploy-time parameters to replace in the TEAL code + +#### Inherited from + +[AppClientDeployCallInterfaceParams](types_app_client.AppClientDeployCallInterfaceParams.md).[deployTimeParams](types_app_client.AppClientDeployCallInterfaceParams.md#deploytimeparams) + +#### Defined in + +[src/types/app-client.ts:145](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L145) + +___ + +### onSchemaBreak + +• `Optional` **onSchemaBreak**: [`OnSchemaBreak`](../enums/types_app.OnSchemaBreak.md) \| ``"replace"`` \| ``"fail"`` \| ``"append"`` + +What action to perform if a schema break is detected + +#### Inherited from + +[AppClientDeployCoreParams](types_app_client.AppClientDeployCoreParams.md).[onSchemaBreak](types_app_client.AppClientDeployCoreParams.md#onschemabreak) + +#### Defined in + +[src/types/app-client.ts:137](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L137) + +___ + +### onUpdate + +• `Optional` **onUpdate**: ``"replace"`` \| ``"fail"`` \| ``"append"`` \| [`OnUpdate`](../enums/types_app.OnUpdate.md) \| ``"update"`` + +What action to perform if a TEAL update is detected + +#### Inherited from + +[AppClientDeployCoreParams](types_app_client.AppClientDeployCoreParams.md).[onUpdate](types_app_client.AppClientDeployCoreParams.md#onupdate) + +#### Defined in + +[src/types/app-client.ts:139](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L139) + +___ + +### sendParams + +• `Optional` **sendParams**: `Omit`<[`SendTransactionParams`](types_transaction.SendTransactionParams.md), ``"skipSending"`` \| ``"skipWaiting"``\> + +Parameters to control transaction sending + +#### Inherited from + +[AppClientDeployCoreParams](types_app_client.AppClientDeployCoreParams.md).[sendParams](types_app_client.AppClientDeployCoreParams.md#sendparams) + +#### Defined in + +[src/types/app-client.ts:127](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L127) + +___ + +### sender + +• `Optional` **sender**: [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom) + +The optional sender to send the transaction from, will use the application client's default sender by default if specified + +#### Inherited from + +[AppClientDeployCoreParams](types_app_client.AppClientDeployCoreParams.md).[sender](types_app_client.AppClientDeployCoreParams.md#sender) + +#### Defined in + +[src/types/app-client.ts:125](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L125) + +___ + +### updateArgs + +• `Optional` **updateArgs**: [`AppClientCallArgs`](../modules/types_app_client.md#appclientcallargs) + +Any args to pass to any update transaction that is issued as part of deployment + +#### Inherited from + +[AppClientDeployCallInterfaceParams](types_app_client.AppClientDeployCallInterfaceParams.md).[updateArgs](types_app_client.AppClientDeployCallInterfaceParams.md#updateargs) + +#### Defined in + +[src/types/app-client.ts:151](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L151) + +___ + +### version + +• `Optional` **version**: `string` + +The version of the contract, uses "1.0" by default + +#### Inherited from + +[AppClientDeployCoreParams](types_app_client.AppClientDeployCoreParams.md).[version](types_app_client.AppClientDeployCoreParams.md#version) + +#### Defined in + +[src/types/app-client.ts:123](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L123) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppSourceMaps.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppSourceMaps.md new file mode 100644 index 000000000..6c2a5c27a --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.AppSourceMaps.md @@ -0,0 +1,38 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app-client](../modules/types_app_client.md) / AppSourceMaps + +# Interface: AppSourceMaps + +[types/app-client](../modules/types_app_client.md).AppSourceMaps + +Source maps for an Algorand app + +## Table of contents + +### Properties + +- [approvalSourceMap](types_app_client.AppSourceMaps.md#approvalsourcemap) +- [clearSourceMap](types_app_client.AppSourceMaps.md#clearsourcemap) + +## Properties + +### approvalSourceMap + +• **approvalSourceMap**: [`SourceMapExport`](types_app_client.SourceMapExport.md) + +The source map of the approval program + +#### Defined in + +[src/types/app-client.ts:221](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L221) + +___ + +### clearSourceMap + +• **clearSourceMap**: [`SourceMapExport`](types_app_client.SourceMapExport.md) + +The source map of the clear program + +#### Defined in + +[src/types/app-client.ts:223](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L223) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.FundAppAccountParams.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.FundAppAccountParams.md new file mode 100644 index 000000000..b8f41181d --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.FundAppAccountParams.md @@ -0,0 +1,62 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app-client](../modules/types_app_client.md) / FundAppAccountParams + +# Interface: FundAppAccountParams + +[types/app-client](../modules/types_app_client.md).FundAppAccountParams + +Parameters for funding an app account + +## Table of contents + +### Properties + +- [amount](types_app_client.FundAppAccountParams.md#amount) +- [note](types_app_client.FundAppAccountParams.md#note) +- [sendParams](types_app_client.FundAppAccountParams.md#sendparams) +- [sender](types_app_client.FundAppAccountParams.md#sender) + +## Properties + +### amount + +• **amount**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) + +#### Defined in + +[src/types/app-client.ts:209](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L209) + +___ + +### note + +• `Optional` **note**: [`TransactionNote`](../modules/types_transaction.md#transactionnote) + +The transaction note for the smart contract call + +#### Defined in + +[src/types/app-client.ts:213](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L213) + +___ + +### sendParams + +• `Optional` **sendParams**: [`SendTransactionParams`](types_transaction.SendTransactionParams.md) + +Parameters to control transaction sending + +#### Defined in + +[src/types/app-client.ts:215](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L215) + +___ + +### sender + +• `Optional` **sender**: [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom) + +The optional sender to send the transaction from, will use the application client's default sender by default if specified + +#### Defined in + +[src/types/app-client.ts:211](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L211) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.ResolveAppById.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.ResolveAppById.md new file mode 100644 index 000000000..cad8545c8 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.ResolveAppById.md @@ -0,0 +1,65 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app-client](../modules/types_app_client.md) / ResolveAppById + +# Interface: ResolveAppById + +[types/app-client](../modules/types_app_client.md).ResolveAppById + +Configuration to resolve app by ID + +## Hierarchy + +- [`ResolveAppByIdBase`](types_app_client.ResolveAppByIdBase.md) + + ↳ **`ResolveAppById`** + +## Table of contents + +### Properties + +- [id](types_app_client.ResolveAppById.md#id) +- [name](types_app_client.ResolveAppById.md#name) +- [resolveBy](types_app_client.ResolveAppById.md#resolveby) + +## Properties + +### id + +• **id**: `number` \| `bigint` + +The id of an existing app to call using this client, or 0 if the app hasn't been created yet + +#### Inherited from + +[ResolveAppByIdBase](types_app_client.ResolveAppByIdBase.md).[id](types_app_client.ResolveAppByIdBase.md#id) + +#### Defined in + +[src/types/app-client.ts:77](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L77) + +___ + +### name + +• `Optional` **name**: `string` + +The optional name to use to mark the app when deploying `ApplicationClient.deploy` (default: uses the name in the ABI contract) + +#### Inherited from + +[ResolveAppByIdBase](types_app_client.ResolveAppByIdBase.md).[name](types_app_client.ResolveAppByIdBase.md#name) + +#### Defined in + +[src/types/app-client.ts:79](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L79) + +___ + +### resolveBy + +• **resolveBy**: ``"id"`` + +How the app ID is resolved, either by `'id'` or `'creatorAndName'`; must be `'creatorAndName'` if you want to use `deploy` + +#### Defined in + +[src/types/app-client.ts:84](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L84) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.ResolveAppByIdBase.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.ResolveAppByIdBase.md new file mode 100644 index 000000000..7eb3a65cd --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.ResolveAppByIdBase.md @@ -0,0 +1,44 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app-client](../modules/types_app_client.md) / ResolveAppByIdBase + +# Interface: ResolveAppByIdBase + +[types/app-client](../modules/types_app_client.md).ResolveAppByIdBase + +Configuration to resolve app by ID + +## Hierarchy + +- **`ResolveAppByIdBase`** + + ↳ [`ResolveAppById`](types_app_client.ResolveAppById.md) + +## Table of contents + +### Properties + +- [id](types_app_client.ResolveAppByIdBase.md#id) +- [name](types_app_client.ResolveAppByIdBase.md#name) + +## Properties + +### id + +• **id**: `number` \| `bigint` + +The id of an existing app to call using this client, or 0 if the app hasn't been created yet + +#### Defined in + +[src/types/app-client.ts:77](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L77) + +___ + +### name + +• `Optional` **name**: `string` + +The optional name to use to mark the app when deploying `ApplicationClient.deploy` (default: uses the name in the ABI contract) + +#### Defined in + +[src/types/app-client.ts:79](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L79) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.SourceMapExport.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.SourceMapExport.md new file mode 100644 index 000000000..9f03c1cea --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_client.SourceMapExport.md @@ -0,0 +1,54 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app-client](../modules/types_app_client.md) / SourceMapExport + +# Interface: SourceMapExport + +[types/app-client](../modules/types_app_client.md).SourceMapExport + +## Table of contents + +### Properties + +- [mappings](types_app_client.SourceMapExport.md#mappings) +- [names](types_app_client.SourceMapExport.md#names) +- [sources](types_app_client.SourceMapExport.md#sources) +- [version](types_app_client.SourceMapExport.md#version) + +## Properties + +### mappings + +• **mappings**: `string` + +#### Defined in + +[src/types/app-client.ts:230](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L230) + +___ + +### names + +• **names**: `string`[] + +#### Defined in + +[src/types/app-client.ts:229](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L229) + +___ + +### sources + +• **sources**: `string`[] + +#### Defined in + +[src/types/app-client.ts:228](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L228) + +___ + +### version + +• **version**: `number` + +#### Defined in + +[src/types/app-client.ts:227](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L227) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.AppSources.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.AppSources.md new file mode 100644 index 000000000..b78611479 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.AppSources.md @@ -0,0 +1,38 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app-spec](../modules/types_app_spec.md) / AppSources + +# Interface: AppSources + +[types/app-spec](../modules/types_app_spec.md).AppSources + +The TEAL source of a contract + +## Table of contents + +### Properties + +- [approval](types_app_spec.AppSources.md#approval) +- [clear](types_app_spec.AppSources.md#clear) + +## Properties + +### approval + +• **approval**: `string` + +The TEAL source of the approval program + +#### Defined in + +[src/types/app-spec.ts:25](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L25) + +___ + +### clear + +• **clear**: `string` + +The TEAL source of the clear program + +#### Defined in + +[src/types/app-spec.ts:27](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L27) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.AppSpec.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.AppSpec.md new file mode 100644 index 000000000..2f68b6402 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.AppSpec.md @@ -0,0 +1,90 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app-spec](../modules/types_app_spec.md) / AppSpec + +# Interface: AppSpec + +[types/app-spec](../modules/types_app_spec.md).AppSpec + +An ARC-0032 Application Specification see https://github.com/algorandfoundation/ARCs/pull/150 + +## Table of contents + +### Properties + +- [bare\_call\_config](types_app_spec.AppSpec.md#bare_call_config) +- [contract](types_app_spec.AppSpec.md#contract) +- [hints](types_app_spec.AppSpec.md#hints) +- [schema](types_app_spec.AppSpec.md#schema) +- [source](types_app_spec.AppSpec.md#source) +- [state](types_app_spec.AppSpec.md#state) + +## Properties + +### bare\_call\_config + +• **bare\_call\_config**: [`CallConfig`](types_app_spec.CallConfig.md) + +The config of all BARE calls (i.e. non ABI calls with no args) + +#### Defined in + +[src/types/app-spec.ts:16](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L16) + +___ + +### contract + +• **contract**: `ABIContractParams` + +The ABI-0004 contract definition see https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0004.md + +#### Defined in + +[src/types/app-spec.ts:10](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L10) + +___ + +### hints + +• **hints**: [`HintSpec`](../modules/types_app_spec.md#hintspec) + +Method call hints + +#### Defined in + +[src/types/app-spec.ts:6](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L6) + +___ + +### schema + +• **schema**: [`SchemaSpec`](types_app_spec.SchemaSpec.md) + +The values that make up the local and global state + +#### Defined in + +[src/types/app-spec.ts:12](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L12) + +___ + +### source + +• **source**: [`AppSources`](types_app_spec.AppSources.md) + +The TEAL source + +#### Defined in + +[src/types/app-spec.ts:8](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L8) + +___ + +### state + +• **state**: [`StateSchemaSpec`](types_app_spec.StateSchemaSpec.md) + +The rolled-up schema allocation values for local and global state + +#### Defined in + +[src/types/app-spec.ts:14](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L14) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.CallConfig.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.CallConfig.md new file mode 100644 index 000000000..818d83d54 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.CallConfig.md @@ -0,0 +1,77 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app-spec](../modules/types_app_spec.md) / CallConfig + +# Interface: CallConfig + +[types/app-spec](../modules/types_app_spec.md).CallConfig + +Call configuration for a method + +## Table of contents + +### Properties + +- [close\_out](types_app_spec.CallConfig.md#close_out) +- [delete\_application](types_app_spec.CallConfig.md#delete_application) +- [no\_op](types_app_spec.CallConfig.md#no_op) +- [opt\_in](types_app_spec.CallConfig.md#opt_in) +- [update\_application](types_app_spec.CallConfig.md#update_application) + +## Properties + +### close\_out + +• `Optional` **close\_out**: [`CallConfigValue`](../modules/types_app_spec.md#callconfigvalue) + +Close out call config + +#### Defined in + +[src/types/app-spec.ts:45](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L45) + +___ + +### delete\_application + +• `Optional` **delete\_application**: [`CallConfigValue`](../modules/types_app_spec.md#callconfigvalue) + +Delete call config + +#### Defined in + +[src/types/app-spec.ts:49](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L49) + +___ + +### no\_op + +• `Optional` **no\_op**: [`CallConfigValue`](../modules/types_app_spec.md#callconfigvalue) + +NoOp call config + +#### Defined in + +[src/types/app-spec.ts:41](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L41) + +___ + +### opt\_in + +• `Optional` **opt\_in**: [`CallConfigValue`](../modules/types_app_spec.md#callconfigvalue) + +Opt-in call config + +#### Defined in + +[src/types/app-spec.ts:43](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L43) + +___ + +### update\_application + +• `Optional` **update\_application**: [`CallConfigValue`](../modules/types_app_spec.md#callconfigvalue) + +Update call config + +#### Defined in + +[src/types/app-spec.ts:47](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L47) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.DeclaredSchemaValueSpec.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.DeclaredSchemaValueSpec.md new file mode 100644 index 000000000..e876e3d76 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.DeclaredSchemaValueSpec.md @@ -0,0 +1,64 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app-spec](../modules/types_app_spec.md) / DeclaredSchemaValueSpec + +# Interface: DeclaredSchemaValueSpec + +[types/app-spec](../modules/types_app_spec.md).DeclaredSchemaValueSpec + +Declared schema value specification + +## Table of contents + +### Properties + +- [descr](types_app_spec.DeclaredSchemaValueSpec.md#descr) +- [key](types_app_spec.DeclaredSchemaValueSpec.md#key) +- [static](types_app_spec.DeclaredSchemaValueSpec.md#static) +- [type](types_app_spec.DeclaredSchemaValueSpec.md#type) + +## Properties + +### descr + +• `Optional` **descr**: `string` + +A description of the variable + +#### Defined in + +[src/types/app-spec.ts:130](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L130) + +___ + +### key + +• **key**: `string` + +The name of the key + +#### Defined in + +[src/types/app-spec.ts:128](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L128) + +___ + +### static + +• `Optional` **static**: `boolean` + +Whether or not the value is set statically (at create time only) or dynamically + +#### Defined in + +[src/types/app-spec.ts:132](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L132) + +___ + +### type + +• **type**: [`AVMType`](../modules/types_app_spec.md#avmtype) + +The type of value + +#### Defined in + +[src/types/app-spec.ts:126](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L126) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.Hint.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.Hint.md new file mode 100644 index 000000000..b0cf2beea --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.Hint.md @@ -0,0 +1,58 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app-spec](../modules/types_app_spec.md) / Hint + +# Interface: Hint + +[types/app-spec](../modules/types_app_spec.md).Hint + +Hint information for a given method call to allow client generation + +## Table of contents + +### Properties + +- [call\_config](types_app_spec.Hint.md#call_config) +- [default\_arguments](types_app_spec.Hint.md#default_arguments) +- [read\_only](types_app_spec.Hint.md#read_only) +- [structs](types_app_spec.Hint.md#structs) + +## Properties + +### call\_config + +• **call\_config**: [`CallConfig`](types_app_spec.CallConfig.md) + +#### Defined in + +[src/types/app-spec.ts:58](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L58) + +___ + +### default\_arguments + +• `Optional` **default\_arguments**: `Record`<`string`, [`DefaultArgument`](../modules/types_app_spec.md#defaultargument)\> + +#### Defined in + +[src/types/app-spec.ts:57](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L57) + +___ + +### read\_only + +• `Optional` **read\_only**: `boolean` + +#### Defined in + +[src/types/app-spec.ts:56](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L56) + +___ + +### structs + +• `Optional` **structs**: `Record`<`string`, [`Struct`](types_app_spec.Struct.md)\> + +Any user-defined struct/tuple types used in the method call, keyed by parameter name or `output` for return type + +#### Defined in + +[src/types/app-spec.ts:55](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L55) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.ReservedSchemaValueSpec.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.ReservedSchemaValueSpec.md new file mode 100644 index 000000000..b87cccf40 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.ReservedSchemaValueSpec.md @@ -0,0 +1,51 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app-spec](../modules/types_app_spec.md) / ReservedSchemaValueSpec + +# Interface: ReservedSchemaValueSpec + +[types/app-spec](../modules/types_app_spec.md).ReservedSchemaValueSpec + +Reserved schema value specification + +## Table of contents + +### Properties + +- [descr](types_app_spec.ReservedSchemaValueSpec.md#descr) +- [max\_keys](types_app_spec.ReservedSchemaValueSpec.md#max_keys) +- [type](types_app_spec.ReservedSchemaValueSpec.md#type) + +## Properties + +### descr + +• **descr**: `string` + +The description of the reserved storage space + +#### Defined in + +[src/types/app-spec.ts:140](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L140) + +___ + +### max\_keys + +• **max\_keys**: `number` + +The maximum number of slots to reserve + +#### Defined in + +[src/types/app-spec.ts:142](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L142) + +___ + +### type + +• **type**: [`AVMType`](../modules/types_app_spec.md#avmtype) + +The type of value + +#### Defined in + +[src/types/app-spec.ts:138](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L138) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.Schema.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.Schema.md new file mode 100644 index 000000000..c0323eb5e --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.Schema.md @@ -0,0 +1,38 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app-spec](../modules/types_app_spec.md) / Schema + +# Interface: Schema + +[types/app-spec](../modules/types_app_spec.md).Schema + +The storage schema definition + +## Table of contents + +### Properties + +- [declared](types_app_spec.Schema.md#declared) +- [reserved](types_app_spec.Schema.md#reserved) + +## Properties + +### declared + +• **declared**: `Record`<`string`, [`DeclaredSchemaValueSpec`](types_app_spec.DeclaredSchemaValueSpec.md)\> + +Declared storage schema + +#### Defined in + +[src/types/app-spec.ts:156](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L156) + +___ + +### reserved + +• **reserved**: `Record`<`string`, [`ReservedSchemaValueSpec`](types_app_spec.ReservedSchemaValueSpec.md)\> + +Reserved storage schema + +#### Defined in + +[src/types/app-spec.ts:158](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L158) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.SchemaSpec.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.SchemaSpec.md new file mode 100644 index 000000000..b4e3a5e1a --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.SchemaSpec.md @@ -0,0 +1,38 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app-spec](../modules/types_app_spec.md) / SchemaSpec + +# Interface: SchemaSpec + +[types/app-spec](../modules/types_app_spec.md).SchemaSpec + +The schema for global and local storage + +## Table of contents + +### Properties + +- [global](types_app_spec.SchemaSpec.md#global) +- [local](types_app_spec.SchemaSpec.md#local) + +## Properties + +### global + +• **global**: [`Schema`](types_app_spec.Schema.md) + +The global storage schema + +#### Defined in + +[src/types/app-spec.ts:150](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L150) + +___ + +### local + +• **local**: [`Schema`](types_app_spec.Schema.md) + +The local storage schema + +#### Defined in + +[src/types/app-spec.ts:148](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L148) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.StateSchemaSpec.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.StateSchemaSpec.md new file mode 100644 index 000000000..947b7fc22 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.StateSchemaSpec.md @@ -0,0 +1,38 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app-spec](../modules/types_app_spec.md) / StateSchemaSpec + +# Interface: StateSchemaSpec + +[types/app-spec](../modules/types_app_spec.md).StateSchemaSpec + +The rolled-up schema allocation specification for local and global state + +## Table of contents + +### Properties + +- [global](types_app_spec.StateSchemaSpec.md#global) +- [local](types_app_spec.StateSchemaSpec.md#local) + +## Properties + +### global + +• **global**: [`StateSchema`](../modules/types_app_spec.md#stateschema) + +Global storage spec + +#### Defined in + +[src/types/app-spec.ts:164](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L164) + +___ + +### local + +• **local**: [`StateSchema`](../modules/types_app_spec.md#stateschema) + +Local storage spec + +#### Defined in + +[src/types/app-spec.ts:166](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L166) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.Struct.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.Struct.md new file mode 100644 index 000000000..7f2f553af --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_app_spec.Struct.md @@ -0,0 +1,38 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/app-spec](../modules/types_app_spec.md) / Struct + +# Interface: Struct + +[types/app-spec](../modules/types_app_spec.md).Struct + +A user-defined struct/tuple type + +## Table of contents + +### Properties + +- [elements](types_app_spec.Struct.md#elements) +- [name](types_app_spec.Struct.md#name) + +## Properties + +### elements + +• **elements**: [`StructElement`](../modules/types_app_spec.md#structelement)[] + +The elements (in order) that make up the struct/tuple + +#### Defined in + +[src/types/app-spec.ts:75](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L75) + +___ + +### name + +• **name**: `string` + +The name of the type + +#### Defined in + +[src/types/app-spec.ts:73](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L73) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_config.Config.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_config.Config.md new file mode 100644 index 000000000..baef2d3d7 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_config.Config.md @@ -0,0 +1,38 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/config](../modules/types_config.md) / Config + +# Interface: Config + +[types/config](../modules/types_config.md).Config + +The AlgoKit configuration type + +## Table of contents + +### Properties + +- [debug](types_config.Config.md#debug) +- [logger](types_config.Config.md#logger) + +## Properties + +### debug + +• **debug**: `boolean` + +Whether or not debug mode is enabled + +#### Defined in + +[src/types/config.ts:8](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/config.ts#L8) + +___ + +### logger + +• **logger**: [`Logger`](../modules/types_logging.md#logger) + +Logger + +#### Defined in + +[src/types/config.ts:6](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/config.ts#L6) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AccountLookupResult.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AccountLookupResult.md new file mode 100644 index 000000000..9f712bf30 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AccountLookupResult.md @@ -0,0 +1,38 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / AccountLookupResult + +# Interface: AccountLookupResult + +[types/indexer](../modules/types_indexer.md).AccountLookupResult + +Indexer result for an account lookup, https://developer.algorand.org/docs/rest-apis/indexer/#get-v2accountsaccount-id + +## Table of contents + +### Properties + +- [account](types_indexer.AccountLookupResult.md#account) +- [current-round](types_indexer.AccountLookupResult.md#current-round) + +## Properties + +### account + +• **account**: [`AccountResult`](types_indexer.AccountResult.md) + +The returned account + +#### Defined in + +[src/types/indexer.ts:18](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L18) + +___ + +### current-round + +• **current-round**: `number` + +Round at which the results were computed. + +#### Defined in + +[src/types/indexer.ts:16](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L16) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AccountParticipation.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AccountParticipation.md new file mode 100644 index 000000000..155531ee9 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AccountParticipation.md @@ -0,0 +1,96 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / AccountParticipation + +# Interface: AccountParticipation + +[types/indexer](../modules/types_indexer.md).AccountParticipation + +AccountParticipation describes the parameters used by this account in consensus protocol. https://developer.algorand.org/docs/rest-apis/indexer/#accountparticipation + +## Table of contents + +### Properties + +- [selection-participation-key](types_indexer.AccountParticipation.md#selection-participation-key) +- [state-proof-key](types_indexer.AccountParticipation.md#state-proof-key) +- [vote-first-valid](types_indexer.AccountParticipation.md#vote-first-valid) +- [vote-key-dilution](types_indexer.AccountParticipation.md#vote-key-dilution) +- [vote-last-valid](types_indexer.AccountParticipation.md#vote-last-valid) +- [vote-participation-key](types_indexer.AccountParticipation.md#vote-participation-key) + +## Properties + +### selection-participation-key + +• **selection-participation-key**: `string` + +[sel] Selection public key (if any) currently registered for this round. + +*Pattern:* `"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==\|[A-Za-z0-9+/]{3}=)?$"` + +#### Defined in + +[src/types/indexer.ts:601](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L601) + +___ + +### state-proof-key + +• `Optional` **state-proof-key**: `string` + +[stprf] Root of the state proof key (if any). + +*Pattern:* `"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==\|[A-Za-z0-9+/]{3}=)?$"` + +#### Defined in + +[src/types/indexer.ts:606](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L606) + +___ + +### vote-first-valid + +• **vote-first-valid**: `number` + +[voteFst] First round for which this participation is valid. + +#### Defined in + +[src/types/indexer.ts:608](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L608) + +___ + +### vote-key-dilution + +• **vote-key-dilution**: `number` + +[voteKD] Number of subkeys in each batch of participation keys. + +#### Defined in + +[src/types/indexer.ts:610](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L610) + +___ + +### vote-last-valid + +• **vote-last-valid**: `number` + +[voteLst] Last round for which this participation is valid. + +#### Defined in + +[src/types/indexer.ts:612](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L612) + +___ + +### vote-participation-key + +• **vote-participation-key**: `string` + +[vote] root participation public key (if any) currently registered for this round. + +*Pattern:* `"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==\|[A-Za-z0-9+/]{3}=)?$"` + +#### Defined in + +[src/types/indexer.ts:617](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L617) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AccountResult.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AccountResult.md new file mode 100644 index 000000000..acf6d9c67 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AccountResult.md @@ -0,0 +1,370 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / AccountResult + +# Interface: AccountResult + +[types/indexer](../modules/types_indexer.md).AccountResult + +Account information at a given round https://developer.algorand.org/docs/rest-apis/indexer/#account + +## Hierarchy + +- `Record`<`string`, `any`\> + + ↳ **`AccountResult`** + +## Table of contents + +### Properties + +- [address](types_indexer.AccountResult.md#address) +- [amount](types_indexer.AccountResult.md#amount) +- [amount-without-pending-rewards](types_indexer.AccountResult.md#amount-without-pending-rewards) +- [apps-local-state](types_indexer.AccountResult.md#apps-local-state) +- [apps-total-extra-pages](types_indexer.AccountResult.md#apps-total-extra-pages) +- [apps-total-schema](types_indexer.AccountResult.md#apps-total-schema) +- [assets](types_indexer.AccountResult.md#assets) +- [auth-addr](types_indexer.AccountResult.md#auth-addr) +- [closed-at-round](types_indexer.AccountResult.md#closed-at-round) +- [created-apps](types_indexer.AccountResult.md#created-apps) +- [created-assets](types_indexer.AccountResult.md#created-assets) +- [created-at-round](types_indexer.AccountResult.md#created-at-round) +- [deleted](types_indexer.AccountResult.md#deleted) +- [participation](types_indexer.AccountResult.md#participation) +- [pending-rewards](types_indexer.AccountResult.md#pending-rewards) +- [reward-base](types_indexer.AccountResult.md#reward-base) +- [rewards](types_indexer.AccountResult.md#rewards) +- [round](types_indexer.AccountResult.md#round) +- [sig-type](types_indexer.AccountResult.md#sig-type) +- [status](types_indexer.AccountResult.md#status) +- [total-apps-opted-in](types_indexer.AccountResult.md#total-apps-opted-in) +- [total-assets-opted-in](types_indexer.AccountResult.md#total-assets-opted-in) +- [total-box-bytes](types_indexer.AccountResult.md#total-box-bytes) +- [total-boxes](types_indexer.AccountResult.md#total-boxes) +- [total-created-apps](types_indexer.AccountResult.md#total-created-apps) +- [total-created-assets](types_indexer.AccountResult.md#total-created-assets) + +## Properties + +### address + +• **address**: `string` + +the account public key + +#### Defined in + +[src/types/indexer.ts:179](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L179) + +___ + +### amount + +• **amount**: `number` + +[algo] total number of MicroAlgos in the account + +#### Defined in + +[src/types/indexer.ts:181](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L181) + +___ + +### amount-without-pending-rewards + +• **amount-without-pending-rewards**: `number` + +specifies the amount of MicroAlgos in the account, without the pending rewards. + +#### Defined in + +[src/types/indexer.ts:183](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L183) + +___ + +### apps-local-state + +• `Optional` **apps-local-state**: [`AppLocalState`](types_indexer.AppLocalState.md)[] + +[appl] applications local data stored in this account. + +Note the raw object uses map[int] -> AppLocalState for this type. + +#### Defined in + +[src/types/indexer.ts:188](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L188) + +___ + +### apps-total-extra-pages + +• `Optional` **apps-total-extra-pages**: `number` + +[teap] the sum of all extra application program pages for this account. + +#### Defined in + +[src/types/indexer.ts:190](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L190) + +___ + +### apps-total-schema + +• `Optional` **apps-total-schema**: [`StateSchema`](types_indexer.StateSchema.md) + +[tsch] stores the sum of all of the local schemas and global schemas in this account. + +Note: the raw account uses StateSchema for this type. + +#### Defined in + +[src/types/indexer.ts:195](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L195) + +___ + +### assets + +• `Optional` **assets**: [`AssetHolding`](types_indexer.AssetHolding.md)[] + +[asset] assets held by this account. + +Note the raw object uses map[int] -> AssetHolding for this type. + +#### Defined in + +[src/types/indexer.ts:200](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L200) + +___ + +### auth-addr + +• `Optional` **auth-addr**: `string` + +[spend] the address against which signing should be checked. + +If empty, the address of the current account is used. + +This field can be updated in any transaction by setting the RekeyTo field. + +#### Defined in + +[src/types/indexer.ts:207](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L207) + +___ + +### closed-at-round + +• `Optional` **closed-at-round**: `number` + +Round during which this account was most recently closed. + +#### Defined in + +[src/types/indexer.ts:209](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L209) + +___ + +### created-apps + +• `Optional` **created-apps**: [`ApplicationResult`](types_indexer.ApplicationResult.md)[] + +[appp] parameters of applications created by this account including app global data. + +Note: the raw account uses map[int] -> AppParams for this type. + +#### Defined in + +[src/types/indexer.ts:214](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L214) + +___ + +### created-assets + +• `Optional` **created-assets**: [`AssetResult`](types_indexer.AssetResult.md)[] + +[apar] parameters of assets created by this account. + +Note: the raw account uses map[int] -> Asset for this type. + +#### Defined in + +[src/types/indexer.ts:219](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L219) + +___ + +### created-at-round + +• `Optional` **created-at-round**: `number` + +Round during which this account first appeared in a transaction. + +#### Defined in + +[src/types/indexer.ts:221](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L221) + +___ + +### deleted + +• `Optional` **deleted**: `boolean` + +Whether or not this account is currently closed. + +#### Defined in + +[src/types/indexer.ts:223](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L223) + +___ + +### participation + +• `Optional` **participation**: [`AccountParticipation`](types_indexer.AccountParticipation.md) + +If participating in consensus, the parameters used by this account in the consensus protocol. + +#### Defined in + +[src/types/indexer.ts:225](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L225) + +___ + +### pending-rewards + +• **pending-rewards**: `number` + +amount of MicroAlgos of pending rewards in this account. + +#### Defined in + +[src/types/indexer.ts:227](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L227) + +___ + +### reward-base + +• `Optional` **reward-base**: `number` + +[ebase] used as part of the rewards computation. Only applicable to accounts which are participating. + +#### Defined in + +[src/types/indexer.ts:229](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L229) + +___ + +### rewards + +• **rewards**: `number` + +[ern] total rewards of MicroAlgos the account has received, including pending rewards. + +#### Defined in + +[src/types/indexer.ts:231](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L231) + +___ + +### round + +• **round**: `number` + +The round for which this information is relevant. + +#### Defined in + +[src/types/indexer.ts:233](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L233) + +___ + +### sig-type + +• **sig-type**: [`SignatureType`](../enums/types_indexer.SignatureType.md) + +Indicates what type of signature is used by this account + +#### Defined in + +[src/types/indexer.ts:235](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L235) + +___ + +### status + +• **status**: [`AccountStatus`](../enums/types_indexer.AccountStatus.md) + +[onl] delegation status of the account's MicroAlgos + +#### Defined in + +[src/types/indexer.ts:237](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L237) + +___ + +### total-apps-opted-in + +• **total-apps-opted-in**: `number` + +The count of all applications that have been opted in, equivalent to the count of application local data (AppLocalState objects) stored in this account. + +#### Defined in + +[src/types/indexer.ts:239](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L239) + +___ + +### total-assets-opted-in + +• **total-assets-opted-in**: `number` + +The count of all assets that have been opted in, equivalent to the count of AssetHolding objects held by this account. + +#### Defined in + +[src/types/indexer.ts:241](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L241) + +___ + +### total-box-bytes + +• **total-box-bytes**: `number` + +For app-accounts only. The total number of bytes allocated for the keys and values of boxes which belong to the associated application. + +#### Defined in + +[src/types/indexer.ts:243](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L243) + +___ + +### total-boxes + +• **total-boxes**: `number` + +For app-accounts only. The total number of boxes which belong to the associated application. + +#### Defined in + +[src/types/indexer.ts:245](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L245) + +___ + +### total-created-apps + +• **total-created-apps**: `number` + +The count of all apps (AppParams objects) created by this account. + +#### Defined in + +[src/types/indexer.ts:247](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L247) + +___ + +### total-created-assets + +• **total-created-assets**: `number` + +The count of all assets (AssetParams objects) created by this account. + +#### Defined in + +[src/types/indexer.ts:249](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L249) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AppLocalState.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AppLocalState.md new file mode 100644 index 000000000..6bf3ba4e7 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AppLocalState.md @@ -0,0 +1,90 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / AppLocalState + +# Interface: AppLocalState + +[types/indexer](../modules/types_indexer.md).AppLocalState + +Stores local state associated with an application. https://developer.algorand.org/docs/rest-apis/indexer/#applicationlocalstate + +## Table of contents + +### Properties + +- [closed-out-at-round](types_indexer.AppLocalState.md#closed-out-at-round) +- [deleted](types_indexer.AppLocalState.md#deleted) +- [id](types_indexer.AppLocalState.md#id) +- [key-value](types_indexer.AppLocalState.md#key-value) +- [opted-in-at-round](types_indexer.AppLocalState.md#opted-in-at-round) +- [schema](types_indexer.AppLocalState.md#schema) + +## Properties + +### closed-out-at-round + +• `Optional` **closed-out-at-round**: `number` + +Round when account closed out of the application. + +#### Defined in + +[src/types/indexer.ts:623](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L623) + +___ + +### deleted + +• `Optional` **deleted**: `boolean` + +Whether or not the application local state is currently deleted from its account. + +#### Defined in + +[src/types/indexer.ts:625](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L625) + +___ + +### id + +• **id**: `number` + +The application which this local state is for. + +#### Defined in + +[src/types/indexer.ts:627](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L627) + +___ + +### key-value + +• `Optional` **key-value**: `TealKeyValue`[] + +[tkv] storage. + +#### Defined in + +[src/types/indexer.ts:629](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L629) + +___ + +### opted-in-at-round + +• `Optional` **opted-in-at-round**: `number` + +Round when the account opted into the application. + +#### Defined in + +[src/types/indexer.ts:631](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L631) + +___ + +### schema + +• **schema**: [`StateSchema`](types_indexer.StateSchema.md) + +[hsch] schema. + +#### Defined in + +[src/types/indexer.ts:633](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L633) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.ApplicationCreatedLookupResult.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.ApplicationCreatedLookupResult.md new file mode 100644 index 000000000..96cd4371e --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.ApplicationCreatedLookupResult.md @@ -0,0 +1,51 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / ApplicationCreatedLookupResult + +# Interface: ApplicationCreatedLookupResult + +[types/indexer](../modules/types_indexer.md).ApplicationCreatedLookupResult + +Indexer result for an account's created applications, https://developer.algorand.org/docs/rest-apis/indexer/#get-v2accountsaccount-idcreated-applications + +## Table of contents + +### Properties + +- [applications](types_indexer.ApplicationCreatedLookupResult.md#applications) +- [current-round](types_indexer.ApplicationCreatedLookupResult.md#current-round) +- [next-token](types_indexer.ApplicationCreatedLookupResult.md#next-token) + +## Properties + +### applications + +• **applications**: [`ApplicationResult`](types_indexer.ApplicationResult.md)[] + +The returned applications + +#### Defined in + +[src/types/indexer.ts:48](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L48) + +___ + +### current-round + +• **current-round**: `number` + +Round at which the results were computed. + +#### Defined in + +[src/types/indexer.ts:44](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L44) + +___ + +### next-token + +• **next-token**: `string` + +Used for pagination, when making another request provide this token with the next parameter. + +#### Defined in + +[src/types/indexer.ts:46](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L46) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.ApplicationLookupResult.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.ApplicationLookupResult.md new file mode 100644 index 000000000..39e5a0505 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.ApplicationLookupResult.md @@ -0,0 +1,38 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / ApplicationLookupResult + +# Interface: ApplicationLookupResult + +[types/indexer](../modules/types_indexer.md).ApplicationLookupResult + +Indexer result for an application lookup, https://developer.algorand.org/docs/rest-apis/indexer/#get-v2applicationsapplication-id + +## Table of contents + +### Properties + +- [application](types_indexer.ApplicationLookupResult.md#application) +- [current-round](types_indexer.ApplicationLookupResult.md#current-round) + +## Properties + +### application + +• **application**: [`ApplicationResult`](types_indexer.ApplicationResult.md) + +The returned application + +#### Defined in + +[src/types/indexer.ts:72](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L72) + +___ + +### current-round + +• **current-round**: `number` + +Round at which the results were computed. + +#### Defined in + +[src/types/indexer.ts:70](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L70) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.ApplicationParams.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.ApplicationParams.md new file mode 100644 index 000000000..47421b107 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.ApplicationParams.md @@ -0,0 +1,115 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / ApplicationParams + +# Interface: ApplicationParams + +[types/indexer](../modules/types_indexer.md).ApplicationParams + +Stores the global information associated with an application https://developer.algorand.org/docs/rest-apis/indexer/#applicationparams + +## Table of contents + +### Properties + +- [approval-program](types_indexer.ApplicationParams.md#approval-program) +- [clear-state-program](types_indexer.ApplicationParams.md#clear-state-program) +- [creator](types_indexer.ApplicationParams.md#creator) +- [extra-program-pages](types_indexer.ApplicationParams.md#extra-program-pages) +- [global-state](types_indexer.ApplicationParams.md#global-state) +- [global-state-schema](types_indexer.ApplicationParams.md#global-state-schema) +- [local-state-schema](types_indexer.ApplicationParams.md#local-state-schema) + +## Properties + +### approval-program + +• **approval-program**: `string` + +[apap]/[approv] Logic executed for every application transaction, except when on-completion is set to "clear". + +It can read and write global state for the application, as well as account-specific local state. + +Approval programs may reject the transaction. + +*Pattern:* `"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==\|[A-Za-z0-9+/]{3}=)?$"` + +#### Defined in + +[src/types/indexer.ts:455](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L455) + +___ + +### clear-state-program + +• **clear-state-program**: `string` + +[apsu]/[clearp] Logic executed for application transactions with on-completion set to "clear". + +It can read and write global state for the application, as well as account-specific local state. + +Clear state programs cannot reject the transaction. + +*Pattern:* `"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==\|[A-Za-z0-9+/]{3}=)?$"` + +#### Defined in + +[src/types/indexer.ts:465](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L465) + +___ + +### creator + +• **creator**: `string` + +The address that created this application. This is the address where the parameters and global state for this application can be found. + +#### Defined in + +[src/types/indexer.ts:445](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L445) + +___ + +### extra-program-pages + +• `Optional` **extra-program-pages**: `number` + +[epp] the amount of extra program pages available to this app. + +#### Defined in + +[src/types/indexer.ts:467](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L467) + +___ + +### global-state + +• **global-state**: `TealKeyValue`[] + +[gs] global schema + +#### Defined in + +[src/types/indexer.ts:469](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L469) + +___ + +### global-state-schema + +• `Optional` **global-state-schema**: [`StateSchema`](types_indexer.StateSchema.md) + +[gsch] global schema + +#### Defined in + +[src/types/indexer.ts:471](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L471) + +___ + +### local-state-schema + +• `Optional` **local-state-schema**: [`StateSchema`](types_indexer.StateSchema.md) + +[lsch] local schema + +#### Defined in + +[src/types/indexer.ts:473](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L473) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.ApplicationResult.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.ApplicationResult.md new file mode 100644 index 000000000..5f4304ff0 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.ApplicationResult.md @@ -0,0 +1,67 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / ApplicationResult + +# Interface: ApplicationResult + +[types/indexer](../modules/types_indexer.md).ApplicationResult + +The result of looking up an application + +## Table of contents + +### Properties + +- [created-at-round](types_indexer.ApplicationResult.md#created-at-round) +- [deleted](types_indexer.ApplicationResult.md#deleted) +- [deleted-at-round](types_indexer.ApplicationResult.md#deleted-at-round) +- [id](types_indexer.ApplicationResult.md#id) +- [params](types_indexer.ApplicationResult.md#params) + +## Properties + +### created-at-round + +• `Optional` **created-at-round**: `number` + +#### Defined in + +[src/types/indexer.ts:365](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L365) + +___ + +### deleted + +• `Optional` **deleted**: `boolean` + +#### Defined in + +[src/types/indexer.ts:366](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L366) + +___ + +### deleted-at-round + +• `Optional` **deleted-at-round**: `number` + +#### Defined in + +[src/types/indexer.ts:367](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L367) + +___ + +### id + +• **id**: `number` + +#### Defined in + +[src/types/indexer.ts:363](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L363) + +___ + +### params + +• **params**: [`ApplicationParams`](types_indexer.ApplicationParams.md) + +#### Defined in + +[src/types/indexer.ts:364](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L364) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.ApplicationTransactionResult.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.ApplicationTransactionResult.md new file mode 100644 index 000000000..3c0d57151 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.ApplicationTransactionResult.md @@ -0,0 +1,193 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / ApplicationTransactionResult + +# Interface: ApplicationTransactionResult + +[types/indexer](../modules/types_indexer.md).ApplicationTransactionResult + +Fields for an application transaction https://developer.algorand.org/docs/rest-apis/indexer/#transactionapplication + +## Hierarchy + +- `Omit`<[`ApplicationParams`](types_indexer.ApplicationParams.md), ``"creator"`` \| ``"global-state"``\> + + ↳ **`ApplicationTransactionResult`** + +## Table of contents + +### Properties + +- [accounts](types_indexer.ApplicationTransactionResult.md#accounts) +- [application-args](types_indexer.ApplicationTransactionResult.md#application-args) +- [application-id](types_indexer.ApplicationTransactionResult.md#application-id) +- [approval-program](types_indexer.ApplicationTransactionResult.md#approval-program) +- [clear-state-program](types_indexer.ApplicationTransactionResult.md#clear-state-program) +- [extra-program-pages](types_indexer.ApplicationTransactionResult.md#extra-program-pages) +- [foreign-apps](types_indexer.ApplicationTransactionResult.md#foreign-apps) +- [foreign-assets](types_indexer.ApplicationTransactionResult.md#foreign-assets) +- [global-state-schema](types_indexer.ApplicationTransactionResult.md#global-state-schema) +- [local-state-schema](types_indexer.ApplicationTransactionResult.md#local-state-schema) +- [on-completion](types_indexer.ApplicationTransactionResult.md#on-completion) + +## Properties + +### accounts + +• `Optional` **accounts**: `string`[] + +[apat] List of accounts in addition to the sender that may be accessed from the application's approval-program and clear-state-program. + +#### Defined in + +[src/types/indexer.ts:267](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L267) + +___ + +### application-args + +• `Optional` **application-args**: `string`[] + +[apaa] transaction specific arguments accessed from the application's approval-program and clear-state-program. + +#### Defined in + +[src/types/indexer.ts:269](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L269) + +___ + +### application-id + +• **application-id**: `number` + +[apid] ID of the application being configured or empty if creating. + +#### Defined in + +[src/types/indexer.ts:271](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L271) + +___ + +### approval-program + +• **approval-program**: `string` + +[apap]/[approv] Logic executed for every application transaction, except when on-completion is set to "clear". + +It can read and write global state for the application, as well as account-specific local state. + +Approval programs may reject the transaction. + +*Pattern:* `"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==\|[A-Za-z0-9+/]{3}=)?$"` + +#### Inherited from + +Omit.approval-program + +#### Defined in + +[src/types/indexer.ts:455](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L455) + +___ + +### clear-state-program + +• **clear-state-program**: `string` + +[apsu]/[clearp] Logic executed for application transactions with on-completion set to "clear". + +It can read and write global state for the application, as well as account-specific local state. + +Clear state programs cannot reject the transaction. + +*Pattern:* `"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==\|[A-Za-z0-9+/]{3}=)?$"` + +#### Inherited from + +Omit.clear-state-program + +#### Defined in + +[src/types/indexer.ts:465](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L465) + +___ + +### extra-program-pages + +• `Optional` **extra-program-pages**: `number` + +[epp] the amount of extra program pages available to this app. + +#### Inherited from + +Omit.extra-program-pages + +#### Defined in + +[src/types/indexer.ts:467](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L467) + +___ + +### foreign-apps + +• `Optional` **foreign-apps**: `number`[] + +[apfa] Lists the applications in addition to the application-id whose global states may be accessed by this application's approval-program and clear-state-program. The access is read-only. + +#### Defined in + +[src/types/indexer.ts:273](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L273) + +___ + +### foreign-assets + +• `Optional` **foreign-assets**: `number`[] + +[apas] lists the assets whose parameters may be accessed by this application's ApprovalProgram and ClearStateProgram. The access is read-only. + +#### Defined in + +[src/types/indexer.ts:275](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L275) + +___ + +### global-state-schema + +• `Optional` **global-state-schema**: [`StateSchema`](types_indexer.StateSchema.md) + +[gsch] global schema + +#### Inherited from + +Omit.global-state-schema + +#### Defined in + +[src/types/indexer.ts:471](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L471) + +___ + +### local-state-schema + +• `Optional` **local-state-schema**: [`StateSchema`](types_indexer.StateSchema.md) + +[lsch] local schema + +#### Inherited from + +Omit.local-state-schema + +#### Defined in + +[src/types/indexer.ts:473](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L473) + +___ + +### on-completion + +• **on-completion**: [`ApplicationOnComplete`](../enums/types_indexer.ApplicationOnComplete.md) + +[apan] defines the what additional actions occur with the transaction. + +#### Defined in + +[src/types/indexer.ts:277](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L277) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetConfigTransactionResult.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetConfigTransactionResult.md new file mode 100644 index 000000000..e501f035e --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetConfigTransactionResult.md @@ -0,0 +1,41 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / AssetConfigTransactionResult + +# Interface: AssetConfigTransactionResult + +[types/indexer](../modules/types_indexer.md).AssetConfigTransactionResult + +Fields for asset allocation, re-configuration, and destruction. +https://developer.algorand.org/docs/rest-apis/indexer/#transactionassetconfig + +A zero value for asset-id indicates asset creation. A zero value for the params indicates asset destruction. + +## Table of contents + +### Properties + +- [asset-id](types_indexer.AssetConfigTransactionResult.md#asset-id) +- [params](types_indexer.AssetConfigTransactionResult.md#params) + +## Properties + +### asset-id + +• **asset-id**: `number` + +[xaid] ID of the asset being configured or empty if creating. + +#### Defined in + +[src/types/indexer.ts:287](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L287) + +___ + +### params + +• **params**: [`AssetParams`](types_indexer.AssetParams.md) + +[apar] the parameters for the asset. + +#### Defined in + +[src/types/indexer.ts:289](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L289) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetFreezeTransactionResult.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetFreezeTransactionResult.md new file mode 100644 index 000000000..6bbeaf46a --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetFreezeTransactionResult.md @@ -0,0 +1,51 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / AssetFreezeTransactionResult + +# Interface: AssetFreezeTransactionResult + +[types/indexer](../modules/types_indexer.md).AssetFreezeTransactionResult + +Fields for an asset freeze transaction. https://developer.algorand.org/docs/rest-apis/indexer/#transactionassetfreeze + +## Table of contents + +### Properties + +- [address](types_indexer.AssetFreezeTransactionResult.md#address) +- [asset-id](types_indexer.AssetFreezeTransactionResult.md#asset-id) +- [new-freeze-status](types_indexer.AssetFreezeTransactionResult.md#new-freeze-status) + +## Properties + +### address + +• **address**: `string` + +[fadd] Address of the account whose asset is being frozen or thawed. + +#### Defined in + +[src/types/indexer.ts:295](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L295) + +___ + +### asset-id + +• **asset-id**: `number` + +[faid] ID of the asset being frozen or thawed. + +#### Defined in + +[src/types/indexer.ts:297](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L297) + +___ + +### new-freeze-status + +• **new-freeze-status**: `boolean` + +[afrz] The new freeze status. + +#### Defined in + +[src/types/indexer.ts:299](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L299) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetHolding.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetHolding.md new file mode 100644 index 000000000..053de67be --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetHolding.md @@ -0,0 +1,90 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / AssetHolding + +# Interface: AssetHolding + +[types/indexer](../modules/types_indexer.md).AssetHolding + +Describes an asset held by an account. https://developer.algorand.org/docs/rest-apis/indexer/#assetholding + +## Table of contents + +### Properties + +- [amount](types_indexer.AssetHolding.md#amount) +- [asset-id](types_indexer.AssetHolding.md#asset-id) +- [deleted](types_indexer.AssetHolding.md#deleted) +- [is-frozen](types_indexer.AssetHolding.md#is-frozen) +- [opted-in-at-round](types_indexer.AssetHolding.md#opted-in-at-round) +- [opted-out-at-round](types_indexer.AssetHolding.md#opted-out-at-round) + +## Properties + +### amount + +• **amount**: `number` + +(a) number of units held. + +#### Defined in + +[src/types/indexer.ts:641](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L641) + +___ + +### asset-id + +• **asset-id**: `number` + +Asset ID of the holding. + +#### Defined in + +[src/types/indexer.ts:645](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L645) + +___ + +### deleted + +• `Optional` **deleted**: `boolean` + +Whether or not the asset holding is currently deleted from its account. + +#### Defined in + +[src/types/indexer.ts:647](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L647) + +___ + +### is-frozen + +• **is-frozen**: `boolean` + +[f] whether or not the holding is frozen. + +#### Defined in + +[src/types/indexer.ts:651](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L651) + +___ + +### opted-in-at-round + +• **opted-in-at-round**: `number` + +Round during which the account opted into this asset holding. + +#### Defined in + +[src/types/indexer.ts:653](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L653) + +___ + +### opted-out-at-round + +• **opted-out-at-round**: `number` + +Round during which the account opted out of this asset holding. + +#### Defined in + +[src/types/indexer.ts:655](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L655) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetLookupResult.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetLookupResult.md new file mode 100644 index 000000000..39018a179 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetLookupResult.md @@ -0,0 +1,38 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / AssetLookupResult + +# Interface: AssetLookupResult + +[types/indexer](../modules/types_indexer.md).AssetLookupResult + +Indexer result for an asset lookup, https://developer.algorand.org/docs/rest-apis/indexer/#get-v2assetsasset-id + +## Table of contents + +### Properties + +- [asset](types_indexer.AssetLookupResult.md#asset) +- [current-round](types_indexer.AssetLookupResult.md#current-round) + +## Properties + +### asset + +• **asset**: [`AssetResult`](types_indexer.AssetResult.md) + +The returned asset + +#### Defined in + +[src/types/indexer.ts:56](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L56) + +___ + +### current-round + +• **current-round**: `number` + +Round at which the results were computed. + +#### Defined in + +[src/types/indexer.ts:54](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L54) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetParams.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetParams.md new file mode 100644 index 000000000..7c9f7e8fc --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetParams.md @@ -0,0 +1,218 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / AssetParams + +# Interface: AssetParams + +[types/indexer](../modules/types_indexer.md).AssetParams + +AssetParams specifies the parameters for an asset. https://developer.algorand.org/docs/rest-apis/indexer/#assetparams + +## Table of contents + +### Properties + +- [clawback](types_indexer.AssetParams.md#clawback) +- [creator](types_indexer.AssetParams.md#creator) +- [decimals](types_indexer.AssetParams.md#decimals) +- [default-frozen](types_indexer.AssetParams.md#default-frozen) +- [freeze](types_indexer.AssetParams.md#freeze) +- [manager](types_indexer.AssetParams.md#manager) +- [metadata-hash](types_indexer.AssetParams.md#metadata-hash) +- [name](types_indexer.AssetParams.md#name) +- [name-b64](types_indexer.AssetParams.md#name-b64) +- [reserve](types_indexer.AssetParams.md#reserve) +- [total](types_indexer.AssetParams.md#total) +- [unit-name](types_indexer.AssetParams.md#unit-name) +- [unit-name-b64](types_indexer.AssetParams.md#unit-name-b64) +- [url](types_indexer.AssetParams.md#url) +- [url-b64](types_indexer.AssetParams.md#url-b64) + +## Properties + +### clawback + +• `Optional` **clawback**: `string` + +(c) Address of account used to clawback holdings of this asset. If empty, +clawback is not permitted. + +#### Defined in + +[src/types/indexer.ts:523](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L523) + +___ + +### creator + +• **creator**: `string` + +The address that created this asset. This is the address where the parameters +for this asset can be found, and also the address where unwanted asset units can +be sent in the worst case. + +#### Defined in + +[src/types/indexer.ts:507](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L507) + +___ + +### decimals + +• **decimals**: `number` \| `bigint` + +(dc) The number of digits to use after the decimal point when displaying this +asset. If 0, the asset is not divisible. If 1, the base unit of the asset is in +tenths. If 2, the base unit of the asset is in hundredths, and so on. This value +must be between 0 and 19 (inclusive). + +#### Defined in + +[src/types/indexer.ts:514](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L514) + +___ + +### default-frozen + +• `Optional` **default-frozen**: `boolean` + +(df) Whether holdings of this asset are frozen by default. + +#### Defined in + +[src/types/indexer.ts:527](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L527) + +___ + +### freeze + +• `Optional` **freeze**: `string` + +(f) Address of account used to freeze holdings of this asset. If empty, freezing +is not permitted. + +#### Defined in + +[src/types/indexer.ts:532](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L532) + +___ + +### manager + +• `Optional` **manager**: `string` + +(m) Address of account used to manage the keys of this asset and to destroy it. + +#### Defined in + +[src/types/indexer.ts:536](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L536) + +___ + +### metadata-hash + +• `Optional` **metadata-hash**: `Uint8Array` + +(am) A commitment to some unspecified asset metadata. The format of this +metadata is up to the application. + +#### Defined in + +[src/types/indexer.ts:541](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L541) + +___ + +### name + +• `Optional` **name**: `string` + +(an) Name of this asset, as supplied by the creator. Included only when the +asset name is composed of printable utf-8 characters. + +#### Defined in + +[src/types/indexer.ts:546](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L546) + +___ + +### name-b64 + +• `Optional` **name-b64**: `Uint8Array` + +Base64 encoded name of this asset, as supplied by the creator. + +#### Defined in + +[src/types/indexer.ts:550](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L550) + +___ + +### reserve + +• `Optional` **reserve**: `string` + +(r) Address of account holding reserve (non-minted) units of this asset. + +#### Defined in + +[src/types/indexer.ts:554](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L554) + +___ + +### total + +• **total**: `number` \| `bigint` + +(t) The total number of units of this asset. + +#### Defined in + +[src/types/indexer.ts:518](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L518) + +___ + +### unit-name + +• `Optional` **unit-name**: `string` + +(un) Name of a unit of this asset, as supplied by the creator. Included only +when the name of a unit of this asset is composed of printable utf-8 characters. + +#### Defined in + +[src/types/indexer.ts:559](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L559) + +___ + +### unit-name-b64 + +• `Optional` **unit-name-b64**: `Uint8Array` + +Base64 encoded name of a unit of this asset, as supplied by the creator. + +#### Defined in + +[src/types/indexer.ts:563](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L563) + +___ + +### url + +• `Optional` **url**: `string` + +(au) URL where more information about the asset can be retrieved. Included only +when the URL is composed of printable utf-8 characters. + +#### Defined in + +[src/types/indexer.ts:568](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L568) + +___ + +### url-b64 + +• `Optional` **url-b64**: `Uint8Array` + +Base64 encoded URL where more information about the asset can be retrieved. + +#### Defined in + +[src/types/indexer.ts:572](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L572) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetResult.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetResult.md new file mode 100644 index 000000000..6ac7aeca5 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetResult.md @@ -0,0 +1,77 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / AssetResult + +# Interface: AssetResult + +[types/indexer](../modules/types_indexer.md).AssetResult + +Specifies both the unique identifier and the parameters for an asset. https://developer.algorand.org/docs/rest-apis/indexer/#asset + +## Table of contents + +### Properties + +- [created-at-round](types_indexer.AssetResult.md#created-at-round) +- [deleted](types_indexer.AssetResult.md#deleted) +- [destroyed-at-round](types_indexer.AssetResult.md#destroyed-at-round) +- [index](types_indexer.AssetResult.md#index) +- [params](types_indexer.AssetResult.md#params) + +## Properties + +### created-at-round + +• `Optional` **created-at-round**: `number` + +Round during which this asset was created. + +#### Defined in + +[src/types/indexer.ts:352](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L352) + +___ + +### deleted + +• `Optional` **deleted**: `boolean` + +Whether or not this asset is currently deleted. + +#### Defined in + +[src/types/indexer.ts:350](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L350) + +___ + +### destroyed-at-round + +• `Optional` **destroyed-at-round**: `number` + +Round during which this asset was destroyed. + +#### Defined in + +[src/types/indexer.ts:354](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L354) + +___ + +### index + +• **index**: `number` + +Unique asset identifier. + +#### Defined in + +[src/types/indexer.ts:348](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L348) + +___ + +### params + +• **params**: [`AssetParams`](types_indexer.AssetParams.md) + +The parameters for the asset + +#### Defined in + +[src/types/indexer.ts:356](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L356) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetTransferTransactionResult.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetTransferTransactionResult.md new file mode 100644 index 000000000..593f486f2 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetTransferTransactionResult.md @@ -0,0 +1,90 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / AssetTransferTransactionResult + +# Interface: AssetTransferTransactionResult + +[types/indexer](../modules/types_indexer.md).AssetTransferTransactionResult + +Fields for an asset transfer transaction. https://developer.algorand.org/docs/rest-apis/indexer/#transactionassettransfer + +## Table of contents + +### Properties + +- [amount](types_indexer.AssetTransferTransactionResult.md#amount) +- [asset-id](types_indexer.AssetTransferTransactionResult.md#asset-id) +- [close-amount](types_indexer.AssetTransferTransactionResult.md#close-amount) +- [close-to](types_indexer.AssetTransferTransactionResult.md#close-to) +- [receiver](types_indexer.AssetTransferTransactionResult.md#receiver) +- [sender](types_indexer.AssetTransferTransactionResult.md#sender) + +## Properties + +### amount + +• **amount**: `number` + +[aamt] Amount of asset to transfer. A zero amount transferred to self allocates that asset in the account's Assets map. + +#### Defined in + +[src/types/indexer.ts:305](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L305) + +___ + +### asset-id + +• **asset-id**: `number` + +[xaid] ID of the asset being transferred. + +#### Defined in + +[src/types/indexer.ts:307](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L307) + +___ + +### close-amount + +• `Optional` **close-amount**: `number` + +Number of assets transfered to the close-to account as part of the transaction. + +#### Defined in + +[src/types/indexer.ts:309](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L309) + +___ + +### close-to + +• `Optional` **close-to**: `string` + +[aclose] Indicates that the asset should be removed from the account's Assets map, and specifies where the remaining asset holdings should be transferred. It's always valid to transfer remaining asset holdings to the creator account. + +#### Defined in + +[src/types/indexer.ts:311](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L311) + +___ + +### receiver + +• **receiver**: `string` + +[arcv] Recipient address of the transfer. + +#### Defined in + +[src/types/indexer.ts:313](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L313) + +___ + +### sender + +• `Optional` **sender**: `string` + +[asnd] The effective sender during a clawback transactions. If this is not a zero value, the real transaction sender must be the Clawback address from the AssetParams. + +#### Defined in + +[src/types/indexer.ts:315](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L315) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetsCreatedLookupResult.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetsCreatedLookupResult.md new file mode 100644 index 000000000..a3675ef77 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetsCreatedLookupResult.md @@ -0,0 +1,51 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / AssetsCreatedLookupResult + +# Interface: AssetsCreatedLookupResult + +[types/indexer](../modules/types_indexer.md).AssetsCreatedLookupResult + +Indexer result for an account's created assets, https://developer.algorand.org/docs/rest-apis/indexer/#get-v2accountsaccount-idcreated-assets + +## Table of contents + +### Properties + +- [assets](types_indexer.AssetsCreatedLookupResult.md#assets) +- [current-round](types_indexer.AssetsCreatedLookupResult.md#current-round) +- [next-token](types_indexer.AssetsCreatedLookupResult.md#next-token) + +## Properties + +### assets + +• **assets**: [`AssetResult`](types_indexer.AssetResult.md)[] + +The returned assets + +#### Defined in + +[src/types/indexer.ts:38](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L38) + +___ + +### current-round + +• **current-round**: `number` + +Round at which the results were computed. + +#### Defined in + +[src/types/indexer.ts:34](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L34) + +___ + +### next-token + +• **next-token**: `string` + +Used for pagination, when making another request provide this token with the next parameter. + +#### Defined in + +[src/types/indexer.ts:36](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L36) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetsLookupResult.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetsLookupResult.md new file mode 100644 index 000000000..9e52bbb53 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.AssetsLookupResult.md @@ -0,0 +1,51 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / AssetsLookupResult + +# Interface: AssetsLookupResult + +[types/indexer](../modules/types_indexer.md).AssetsLookupResult + +Indexer result for an account's asset holdings, https://developer.algorand.org/docs/rest-apis/indexer/#get-v2accountsaccount-idassets + +## Table of contents + +### Properties + +- [assets](types_indexer.AssetsLookupResult.md#assets) +- [current-round](types_indexer.AssetsLookupResult.md#current-round) +- [next-token](types_indexer.AssetsLookupResult.md#next-token) + +## Properties + +### assets + +• **assets**: [`AssetHolding`](types_indexer.AssetHolding.md)[] + +The returned asset holdings + +#### Defined in + +[src/types/indexer.ts:28](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L28) + +___ + +### current-round + +• **current-round**: `number` + +Round at which the results were computed. + +#### Defined in + +[src/types/indexer.ts:24](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L24) + +___ + +### next-token + +• **next-token**: `string` + +Used for pagination, when making another request provide this token with the next parameter. + +#### Defined in + +[src/types/indexer.ts:26](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L26) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.EvalDelta.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.EvalDelta.md new file mode 100644 index 000000000..982c07b3b --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.EvalDelta.md @@ -0,0 +1,51 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / EvalDelta + +# Interface: EvalDelta + +[types/indexer](../modules/types_indexer.md).EvalDelta + +Represents a TEAL value delta. https://developer.algorand.org/docs/rest-apis/indexer/#evaldelta + +## Table of contents + +### Properties + +- [action](types_indexer.EvalDelta.md#action) +- [bytes](types_indexer.EvalDelta.md#bytes) +- [uint](types_indexer.EvalDelta.md#uint) + +## Properties + +### action + +• **action**: `number` + +[at] delta action. + +#### Defined in + +[src/types/indexer.ts:435](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L435) + +___ + +### bytes + +• `Optional` **bytes**: `string` + +[bs] bytes value. + +#### Defined in + +[src/types/indexer.ts:437](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L437) + +___ + +### uint + +• `Optional` **uint**: `number` + +[ui] uint value. + +#### Defined in + +[src/types/indexer.ts:439](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L439) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.KeyRegistrationTransactionResult.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.KeyRegistrationTransactionResult.md new file mode 100644 index 000000000..3184b25ae --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.KeyRegistrationTransactionResult.md @@ -0,0 +1,109 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / KeyRegistrationTransactionResult + +# Interface: KeyRegistrationTransactionResult + +[types/indexer](../modules/types_indexer.md).KeyRegistrationTransactionResult + +Fields for a `keyreg` transaction https://developer.algorand.org/docs/rest-apis/indexer/#transactionkeyreg + +## Table of contents + +### Properties + +- [non-participation](types_indexer.KeyRegistrationTransactionResult.md#non-participation) +- [selection-participation-key](types_indexer.KeyRegistrationTransactionResult.md#selection-participation-key) +- [state-proof-key](types_indexer.KeyRegistrationTransactionResult.md#state-proof-key) +- [vote-first-valid](types_indexer.KeyRegistrationTransactionResult.md#vote-first-valid) +- [vote-key-dilution](types_indexer.KeyRegistrationTransactionResult.md#vote-key-dilution) +- [vote-last-valid](types_indexer.KeyRegistrationTransactionResult.md#vote-last-valid) +- [vote-participation-key](types_indexer.KeyRegistrationTransactionResult.md#vote-participation-key) + +## Properties + +### non-participation + +• `Optional` **non-participation**: `boolean` + +[nonpart] Mark the account as participating or non-participating. + +#### Defined in + +[src/types/indexer.ts:321](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L321) + +___ + +### selection-participation-key + +• `Optional` **selection-participation-key**: `string` + +[selkey] Public key used with the Verified Random Function (VRF) result during committee selection. + +*Pattern:* `"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==\|[A-Za-z0-9+/]{3}=)?$"` + +#### Defined in + +[src/types/indexer.ts:326](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L326) + +___ + +### state-proof-key + +• `Optional` **state-proof-key**: `string` + +[selkey] Public key used with the Verified Random Function (VRF) result during committee selection. + +*Pattern:* `"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==\|[A-Za-z0-9+/]{3}=)?$"` + +#### Defined in + +[src/types/indexer.ts:331](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L331) + +___ + +### vote-first-valid + +• `Optional` **vote-first-valid**: `number` + +[votefst] First round this participation key is valid. + +#### Defined in + +[src/types/indexer.ts:333](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L333) + +___ + +### vote-key-dilution + +• `Optional` **vote-key-dilution**: `number` + +[votekd] Number of subkeys in each batch of participation keys. + +#### Defined in + +[src/types/indexer.ts:335](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L335) + +___ + +### vote-last-valid + +• `Optional` **vote-last-valid**: `number` + +[votelst] Last round this participation key is valid. + +#### Defined in + +[src/types/indexer.ts:337](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L337) + +___ + +### vote-participation-key + +• `Optional` **vote-participation-key**: `string` + +[votekey] Participation public key used in key registration transactions. + +*Pattern:* `"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==\|[A-Za-z0-9+/]{3}=)?$"` + +#### Defined in + +[src/types/indexer.ts:342](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L342) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.LogicTransactionSignature.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.LogicTransactionSignature.md new file mode 100644 index 000000000..a67cf99dd --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.LogicTransactionSignature.md @@ -0,0 +1,74 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / LogicTransactionSignature + +# Interface: LogicTransactionSignature + +[types/indexer](../modules/types_indexer.md).LogicTransactionSignature + +[lsig] Programatic transaction signature. + +https://developer.algorand.org/docs/rest-apis/indexer/#transactionsignaturelogicsig + +https://developer.algorand.org/docs/get-details/transactions/signatures/#logic-signatures + +## Table of contents + +### Properties + +- [args](types_indexer.LogicTransactionSignature.md#args) +- [logic](types_indexer.LogicTransactionSignature.md#logic) +- [multisig-signature](types_indexer.LogicTransactionSignature.md#multisig-signature) +- [signature](types_indexer.LogicTransactionSignature.md#signature) + +## Properties + +### args + +• `Optional` **args**: `string`[] + +[arg] Logic arguments, base64 encoded. + +#### Defined in + +[src/types/indexer.ts:391](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L391) + +___ + +### logic + +• **logic**: `string` + +[l] Program signed by a signature or multi signature, or hashed to be the address of ana ccount. + +Base64 encoded TEAL program. + +*Pattern:* `"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==\|[A-Za-z0-9+/]{3}=)?$"` + +#### Defined in + +[src/types/indexer.ts:398](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L398) + +___ + +### multisig-signature + +• `Optional` **multisig-signature**: [`MultisigTransactionSignature`](types_indexer.MultisigTransactionSignature.md) + +The signature of the multisig the logic signature delegating the logicsig. https://developer.algorand.org/docs/get-details/dapps/smart-contracts/smartsigs/modes/#delegated-approval + +#### Defined in + +[src/types/indexer.ts:400](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L400) + +___ + +### signature + +• `Optional` **signature**: `string` + +[sig] Standard ed25519 signature delegating the logicsig. https://developer.algorand.org/docs/get-details/dapps/smart-contracts/smartsigs/modes/#delegated-approval + +*Pattern:* `"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==\|[A-Za-z0-9+/]{3}=)?$"` + +#### Defined in + +[src/types/indexer.ts:405](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L405) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.MultisigTransactionSignature.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.MultisigTransactionSignature.md new file mode 100644 index 000000000..dd97903fd --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.MultisigTransactionSignature.md @@ -0,0 +1,51 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / MultisigTransactionSignature + +# Interface: MultisigTransactionSignature + +[types/indexer](../modules/types_indexer.md).MultisigTransactionSignature + +[msig] structure holding multiple subsignatures. https://developer.algorand.org/docs/rest-apis/indexer/#transactionsignaturemultisig + +## Table of contents + +### Properties + +- [subsignature](types_indexer.MultisigTransactionSignature.md#subsignature) +- [threshold](types_indexer.MultisigTransactionSignature.md#threshold) +- [version](types_indexer.MultisigTransactionSignature.md#version) + +## Properties + +### subsignature + +• **subsignature**: [`MultisigTransactionSubSignature`](types_indexer.MultisigTransactionSubSignature.md) + +[subsig] Holds pairs of public key and signatures. + +#### Defined in + +[src/types/indexer.ts:411](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L411) + +___ + +### threshold + +• **threshold**: `number` + +[thr] The threshold of signatures required for the multisig + +#### Defined in + +[src/types/indexer.ts:413](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L413) + +___ + +### version + +• **version**: `number` + +[v] The version of the multisig + +#### Defined in + +[src/types/indexer.ts:415](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L415) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.MultisigTransactionSubSignature.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.MultisigTransactionSubSignature.md new file mode 100644 index 000000000..40f375293 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.MultisigTransactionSubSignature.md @@ -0,0 +1,42 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / MultisigTransactionSubSignature + +# Interface: MultisigTransactionSubSignature + +[types/indexer](../modules/types_indexer.md).MultisigTransactionSubSignature + +Sub-signature for a multisig signature https://developer.algorand.org/docs/rest-apis/indexer/#transactionsignaturemultisigsubsignature + +## Table of contents + +### Properties + +- [public-key](types_indexer.MultisigTransactionSubSignature.md#public-key) +- [signature](types_indexer.MultisigTransactionSubSignature.md#signature) + +## Properties + +### public-key + +• **public-key**: `string` + +[pk] The public key of the account making the signature + +*Pattern:* `"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==\|[A-Za-z0-9+/]{3}=)?$"` + +#### Defined in + +[src/types/indexer.ts:424](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L424) + +___ + +### signature + +• **signature**: `string` + +[s] The signature + +*Pattern:* `"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==\|[A-Za-z0-9+/]{3}=)?$"` + +#### Defined in + +[src/types/indexer.ts:429](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L429) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.PaymentTransactionResult.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.PaymentTransactionResult.md new file mode 100644 index 000000000..0015c8e64 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.PaymentTransactionResult.md @@ -0,0 +1,64 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / PaymentTransactionResult + +# Interface: PaymentTransactionResult + +[types/indexer](../modules/types_indexer.md).PaymentTransactionResult + +Fields for a payment transaction https://developer.algorand.org/docs/rest-apis/indexer/#transactionpayment + +## Table of contents + +### Properties + +- [amount](types_indexer.PaymentTransactionResult.md#amount) +- [close-amount](types_indexer.PaymentTransactionResult.md#close-amount) +- [close-remainder-to](types_indexer.PaymentTransactionResult.md#close-remainder-to) +- [receiver](types_indexer.PaymentTransactionResult.md#receiver) + +## Properties + +### amount + +• **amount**: `number` + +[amt] number of MicroAlgos intended to be transferred. + +#### Defined in + +[src/types/indexer.ts:255](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L255) + +___ + +### close-amount + +• `Optional` **close-amount**: `number` + +Number of MicroAlgos that were sent to the close-remainder-to address when closing the sender account. + +#### Defined in + +[src/types/indexer.ts:257](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L257) + +___ + +### close-remainder-to + +• `Optional` **close-remainder-to**: `string` + +[close] when set, indicates that the sending account should be closed and all remaining funds be transferred to this address. + +#### Defined in + +[src/types/indexer.ts:259](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L259) + +___ + +### receiver + +• **receiver**: `string` + +[rcv] receiver's address. + +#### Defined in + +[src/types/indexer.ts:261](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L261) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.StateSchema.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.StateSchema.md new file mode 100644 index 000000000..f4b9b3766 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.StateSchema.md @@ -0,0 +1,43 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / StateSchema + +# Interface: StateSchema + +[types/indexer](../modules/types_indexer.md).StateSchema + +Represents a [apls] local-state or [apgs] global-state schema. +https://developer.algorand.org/docs/rest-apis/indexer/#stateschema + +These schemas determine how much storage may be used in a local-state or global-state for an application. + +The more space used, the larger minimum balance must be maintained in the account holding the data. + +## Table of contents + +### Properties + +- [num-byte-slice](types_indexer.StateSchema.md#num-byte-slice) +- [num-uint](types_indexer.StateSchema.md#num-uint) + +## Properties + +### num-byte-slice + +• **num-byte-slice**: `number` + +Maximum number of TEAL byte slices that may be stored in the key/value store. + +#### Defined in + +[src/types/indexer.ts:485](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L485) + +___ + +### num-uint + +• **num-uint**: `number` + +Maximum number of TEAL uints that may be stored in the key/value store. + +#### Defined in + +[src/types/indexer.ts:487](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L487) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.TransactionLookupResult.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.TransactionLookupResult.md new file mode 100644 index 000000000..45ad74566 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.TransactionLookupResult.md @@ -0,0 +1,38 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / TransactionLookupResult + +# Interface: TransactionLookupResult + +[types/indexer](../modules/types_indexer.md).TransactionLookupResult + +Indexer result for a transaction lookup, https://developer.algorand.org/docs/rest-apis/indexer/#get-v2transactionstxid + +## Table of contents + +### Properties + +- [current-round](types_indexer.TransactionLookupResult.md#current-round) +- [transaction](types_indexer.TransactionLookupResult.md#transaction) + +## Properties + +### current-round + +• **current-round**: `number` + +Round at which the results were computed. + +#### Defined in + +[src/types/indexer.ts:62](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L62) + +___ + +### transaction + +• **transaction**: [`TransactionResult`](types_indexer.TransactionResult.md) + +The returned transaction + +#### Defined in + +[src/types/indexer.ts:64](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L64) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.TransactionResult.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.TransactionResult.md new file mode 100644 index 000000000..9f50fc897 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.TransactionResult.md @@ -0,0 +1,467 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / TransactionResult + +# Interface: TransactionResult + +[types/indexer](../modules/types_indexer.md).TransactionResult + +Indexer result for a transaction, https://developer.algorand.org/docs/rest-apis/indexer/#transaction + +## Hierarchy + +- `Record`<`string`, `any`\> + + ↳ **`TransactionResult`** + +## Table of contents + +### Properties + +- [application-transaction](types_indexer.TransactionResult.md#application-transaction) +- [asset-config-transaction](types_indexer.TransactionResult.md#asset-config-transaction) +- [asset-freeze-transaction](types_indexer.TransactionResult.md#asset-freeze-transaction) +- [asset-transfer-transaction](types_indexer.TransactionResult.md#asset-transfer-transaction) +- [auth-addr](types_indexer.TransactionResult.md#auth-addr) +- [close-rewards](types_indexer.TransactionResult.md#close-rewards) +- [closing-amount](types_indexer.TransactionResult.md#closing-amount) +- [confirmed-round](types_indexer.TransactionResult.md#confirmed-round) +- [created-application-index](types_indexer.TransactionResult.md#created-application-index) +- [created-asset-index](types_indexer.TransactionResult.md#created-asset-index) +- [fee](types_indexer.TransactionResult.md#fee) +- [first-valid](types_indexer.TransactionResult.md#first-valid) +- [genesis-hash](types_indexer.TransactionResult.md#genesis-hash) +- [genesis-id](types_indexer.TransactionResult.md#genesis-id) +- [global-state-delta](types_indexer.TransactionResult.md#global-state-delta) +- [group](types_indexer.TransactionResult.md#group) +- [id](types_indexer.TransactionResult.md#id) +- [inner-txns](types_indexer.TransactionResult.md#inner-txns) +- [intra-round-offset](types_indexer.TransactionResult.md#intra-round-offset) +- [keyreg-transaction](types_indexer.TransactionResult.md#keyreg-transaction) +- [last-valid](types_indexer.TransactionResult.md#last-valid) +- [lease](types_indexer.TransactionResult.md#lease) +- [local-state-delta](types_indexer.TransactionResult.md#local-state-delta) +- [logs](types_indexer.TransactionResult.md#logs) +- [note](types_indexer.TransactionResult.md#note) +- [payment-transaction](types_indexer.TransactionResult.md#payment-transaction) +- [receiver-rewards](types_indexer.TransactionResult.md#receiver-rewards) +- [rekey-to](types_indexer.TransactionResult.md#rekey-to) +- [round-time](types_indexer.TransactionResult.md#round-time) +- [sender](types_indexer.TransactionResult.md#sender) +- [sender-rewards](types_indexer.TransactionResult.md#sender-rewards) +- [signature](types_indexer.TransactionResult.md#signature) +- [tx-type](types_indexer.TransactionResult.md#tx-type) + +## Properties + +### application-transaction + +• `Optional` **application-transaction**: [`ApplicationTransactionResult`](types_indexer.ApplicationTransactionResult.md) + +If the transaction is an `appl` transaction this will be populated see `tx-type` + +#### Defined in + +[src/types/indexer.ts:115](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L115) + +___ + +### asset-config-transaction + +• **asset-config-transaction**: [`AssetConfigTransactionResult`](types_indexer.AssetConfigTransactionResult.md) + +If the transaction is an `acfg` transaction this will be populated see `tx-type` + +#### Defined in + +[src/types/indexer.ts:121](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L121) + +___ + +### asset-freeze-transaction + +• `Optional` **asset-freeze-transaction**: [`AssetFreezeTransactionResult`](types_indexer.AssetFreezeTransactionResult.md) + +If the transaction is an `afrz` transaction this will be populated see `tx-type` + +#### Defined in + +[src/types/indexer.ts:127](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L127) + +___ + +### asset-transfer-transaction + +• `Optional` **asset-transfer-transaction**: [`AssetTransferTransactionResult`](types_indexer.AssetTransferTransactionResult.md) + +If the transaction is an `axfer` transaction this will be populated see `tx-type` + +#### Defined in + +[src/types/indexer.ts:129](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L129) + +___ + +### auth-addr + +• `Optional` **auth-addr**: `string` + +[sgnr] this is included with signed transactions when the signing address does not equal the sender. +The backend can use this to ensure that auth addr is equal to the accounts auth addr. + +#### Defined in + +[src/types/indexer.ts:137](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L137) + +___ + +### close-rewards + +• `Optional` **close-rewards**: `number` + +[rc] rewards applied to close-remainder-to account. + +#### Defined in + +[src/types/indexer.ts:172](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L172) + +___ + +### closing-amount + +• `Optional` **closing-amount**: `number` + +[ca] closing amount for transaction. + +#### Defined in + +[src/types/indexer.ts:139](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L139) + +___ + +### confirmed-round + +• `Optional` **confirmed-round**: `number` + +Round when the transaction was confirmed. + +#### Defined in + +[src/types/indexer.ts:91](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L91) + +___ + +### created-application-index + +• `Optional` **created-application-index**: `number` + +If the transaction is an `appl` transaction that resulted in an application creation then this +specifies the application index (ID) of that application. + +#### Defined in + +[src/types/indexer.ts:119](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L119) + +___ + +### created-asset-index + +• `Optional` **created-asset-index**: `number` + +If the transaction is an `acfg` transaction that resulted in an asset creation then this +specifies the asset index (ID) of that asset. + +#### Defined in + +[src/types/indexer.ts:125](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L125) + +___ + +### fee + +• **fee**: `number` + +[fee] Transaction fee. + +#### Defined in + +[src/types/indexer.ts:83](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L83) + +___ + +### first-valid + +• **first-valid**: `number` + +[fv] First valid round for this transaction. + +#### Defined in + +[src/types/indexer.ts:87](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L87) + +___ + +### genesis-hash + +• `Optional` **genesis-hash**: `string` + +[gh] Hash of genesis block. + +*Pattern:* `"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==\|[A-Za-z0-9+/]{3}=)?$"` + +#### Defined in + +[src/types/indexer.ts:144](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L144) + +___ + +### genesis-id + +• `Optional` **genesis-id**: `string` + +[gen] genesis block ID. + +#### Defined in + +[src/types/indexer.ts:146](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L146) + +___ + +### global-state-delta + +• `Optional` **global-state-delta**: `Record`<`string`, [`EvalDelta`](types_indexer.EvalDelta.md)\>[] + +[gd] Global state key/value changes for the application being executed by this transaction. + +#### Defined in + +[src/types/indexer.ts:166](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L166) + +___ + +### group + +• `Optional` **group**: `string` + +[grp] Base64 encoded byte array of a sha512/256 digest. + +When present indicates that this transaction is part of a transaction group + and the value is the sha512/256 hash of the transactions in that group. + +*Pattern:* `"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==\|[A-Za-z0-9+/]{3}=)?$"` + +#### Defined in + +[src/types/indexer.ts:99](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L99) + +___ + +### id + +• **id**: `string` + +Transaction ID + +#### Defined in + +[src/types/indexer.ts:79](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L79) + +___ + +### inner-txns + +• `Optional` **inner-txns**: [`TransactionResult`](types_indexer.TransactionResult.md)[] + +Inner transactions produced by application execution. + +#### Defined in + +[src/types/indexer.ts:148](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L148) + +___ + +### intra-round-offset + +• `Optional` **intra-round-offset**: `number` + +Offset into the round where this transaction was confirmed. + +#### Defined in + +[src/types/indexer.ts:111](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L111) + +___ + +### keyreg-transaction + +• `Optional` **keyreg-transaction**: [`KeyRegistrationTransactionResult`](types_indexer.KeyRegistrationTransactionResult.md) + +If the transaction is a `keyreg` transaction this will be populated see `tx-type` + +#### Defined in + +[src/types/indexer.ts:131](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L131) + +___ + +### last-valid + +• **last-valid**: `number` + +[lv] Last valid round for this transaction. + +#### Defined in + +[src/types/indexer.ts:89](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L89) + +___ + +### lease + +• `Optional` **lease**: `string` + +[lx] Base64 encoded 32-byte array. Lease enforces mutual exclusion of transactions. + +If this field is nonzero, then once the transaction is confirmed, it acquires the lease +identified by the (Sender, Lease) pair of the transaction until the LastValid round passes. + +While this transaction possesses the lease, no other transaction specifying this lease can be confirmed. + +*Pattern:* `"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==\|[A-Za-z0-9+/]{3}=)?$"` + +#### Defined in + +[src/types/indexer.ts:162](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L162) + +___ + +### local-state-delta + +• `Optional` **local-state-delta**: `Record`<`string`, [`EvalDelta`](types_indexer.EvalDelta.md)\>[] + +[ld] Local state key/value changes for the application being executed by this transaction. + +#### Defined in + +[src/types/indexer.ts:164](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L164) + +___ + +### logs + +• `Optional` **logs**: `string`[] + +[lg] Logs for the application being executed by this transaction. + +#### Defined in + +[src/types/indexer.ts:107](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L107) + +___ + +### note + +• `Optional` **note**: `string` + +[note] Free form data. + +*Pattern:* `"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==\|[A-Za-z0-9+/]{3}=)?$"` + +#### Defined in + +[src/types/indexer.ts:105](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L105) + +___ + +### payment-transaction + +• `Optional` **payment-transaction**: [`PaymentTransactionResult`](types_indexer.PaymentTransactionResult.md) + +If the transaction is a `pay` transaction this will be populated see `tx-type` + +#### Defined in + +[src/types/indexer.ts:133](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L133) + +___ + +### receiver-rewards + +• `Optional` **receiver-rewards**: `number` + +[rr] rewards applied to receiver account. + +#### Defined in + +[src/types/indexer.ts:168](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L168) + +___ + +### rekey-to + +• `Optional` **rekey-to**: `string` + +[rekey] when included in a valid transaction, the accounts auth addr will be updated with +this value and future signatures must be signed with the key represented by this address. + +#### Defined in + +[src/types/indexer.ts:152](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L152) + +___ + +### round-time + +• `Optional` **round-time**: `number` + +Time when the block this transaction is in was confirmed. + +#### Defined in + +[src/types/indexer.ts:109](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L109) + +___ + +### sender + +• **sender**: `string` + +[snd] Sender's address. + +#### Defined in + +[src/types/indexer.ts:85](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L85) + +___ + +### sender-rewards + +• `Optional` **sender-rewards**: `number` + +[rs] rewards applied to sender account. + +#### Defined in + +[src/types/indexer.ts:170](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L170) + +___ + +### signature + +• `Optional` **signature**: [`TransactionSignature`](types_indexer.TransactionSignature.md) + +Signature of the transaction + +#### Defined in + +[src/types/indexer.ts:113](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L113) + +___ + +### tx-type + +• **tx-type**: `TransactionType` + +[type] Indicates what type of transaction this is. Different types have different fields. + +#### Defined in + +[src/types/indexer.ts:81](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L81) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.TransactionSearchResults.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.TransactionSearchResults.md new file mode 100644 index 000000000..09c92512b --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.TransactionSearchResults.md @@ -0,0 +1,51 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / TransactionSearchResults + +# Interface: TransactionSearchResults + +[types/indexer](../modules/types_indexer.md).TransactionSearchResults + +Indexer result for a transaction search, https://developer.algorand.org/docs/rest-apis/indexer/#get-v2transactions + +## Table of contents + +### Properties + +- [current-round](types_indexer.TransactionSearchResults.md#current-round) +- [next-token](types_indexer.TransactionSearchResults.md#next-token) +- [transactions](types_indexer.TransactionSearchResults.md#transactions) + +## Properties + +### current-round + +• **current-round**: `number` + +Round at which the results were computed. + +#### Defined in + +[src/types/indexer.ts:6](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L6) + +___ + +### next-token + +• **next-token**: `string` + +Used for pagination, when making another request provide this token with the next parameter. + +#### Defined in + +[src/types/indexer.ts:8](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L8) + +___ + +### transactions + +• **transactions**: [`TransactionResult`](types_indexer.TransactionResult.md)[] + +The returned transactions + +#### Defined in + +[src/types/indexer.ts:10](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L10) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.TransactionSignature.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.TransactionSignature.md new file mode 100644 index 000000000..6f97f3824 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_indexer.TransactionSignature.md @@ -0,0 +1,53 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / TransactionSignature + +# Interface: TransactionSignature + +[types/indexer](../modules/types_indexer.md).TransactionSignature + +Validation signature associated with some data. Only one of the signatures should be provided. https://developer.algorand.org/docs/rest-apis/indexer/#transactionsignature + +## Table of contents + +### Properties + +- [logicsig](types_indexer.TransactionSignature.md#logicsig) +- [multisig](types_indexer.TransactionSignature.md#multisig) +- [sig](types_indexer.TransactionSignature.md#sig) + +## Properties + +### logicsig + +• **logicsig**: [`LogicTransactionSignature`](types_indexer.LogicTransactionSignature.md) + +Logicsig signature + +#### Defined in + +[src/types/indexer.ts:373](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L373) + +___ + +### multisig + +• **multisig**: [`MultisigTransactionSignature`](types_indexer.MultisigTransactionSignature.md) + +Multisig signature + +#### Defined in + +[src/types/indexer.ts:375](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L375) + +___ + +### sig + +• **sig**: `string` + +[sig] Standard ed25519 signature. + +*Pattern:* `"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==\|[A-Za-z0-9+/]{3}=)?$"` + +#### Defined in + +[src/types/indexer.ts:380](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L380) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_logic_error.LogicErrorDetails.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_logic_error.LogicErrorDetails.md new file mode 100644 index 000000000..86ce6644c --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_logic_error.LogicErrorDetails.md @@ -0,0 +1,77 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/logic-error](../modules/types_logic_error.md) / LogicErrorDetails + +# Interface: LogicErrorDetails + +[types/logic-error](../modules/types_logic_error.md).LogicErrorDetails + +Details about a smart contract logic error + +## Table of contents + +### Properties + +- [desc](types_logic_error.LogicErrorDetails.md#desc) +- [msg](types_logic_error.LogicErrorDetails.md#msg) +- [pc](types_logic_error.LogicErrorDetails.md#pc) +- [traces](types_logic_error.LogicErrorDetails.md#traces) +- [txId](types_logic_error.LogicErrorDetails.md#txid) + +## Properties + +### desc + +• **desc**: `string` + +The full error description + +#### Defined in + +[src/types/logic-error.ts:16](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L16) + +___ + +### msg + +• **msg**: `string` + +The error message + +#### Defined in + +[src/types/logic-error.ts:14](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L14) + +___ + +### pc + +• **pc**: `number` + +The program counter where the error was + +#### Defined in + +[src/types/logic-error.ts:12](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L12) + +___ + +### traces + +• **traces**: `Record`<`string`, `unknown`\>[] + +Any trace information included in the error + +#### Defined in + +[src/types/logic-error.ts:18](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L18) + +___ + +### txId + +• **txId**: `string` + +The ID of the transaction with the logic error + +#### Defined in + +[src/types/logic-error.ts:10](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L10) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_network_client.AlgoClientConfig.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_network_client.AlgoClientConfig.md new file mode 100644 index 000000000..b7f280876 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_network_client.AlgoClientConfig.md @@ -0,0 +1,51 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/network-client](../modules/types_network_client.md) / AlgoClientConfig + +# Interface: AlgoClientConfig + +[types/network-client](../modules/types_network_client.md).AlgoClientConfig + +Config for an Algorand SDK client + +## Table of contents + +### Properties + +- [port](types_network_client.AlgoClientConfig.md#port) +- [server](types_network_client.AlgoClientConfig.md#server) +- [token](types_network_client.AlgoClientConfig.md#token) + +## Properties + +### port + +• `Optional` **port**: `string` \| `number` + +The port to use e.g. 4001, 443, etc. + +#### Defined in + +[src/types/network-client.ts:8](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/network-client.ts#L8) + +___ + +### server + +• **server**: `string` + +Base URL of the server e.g. http://localhost, https://testnet-api.algonode.cloud/, etc. + +#### Defined in + +[src/types/network-client.ts:6](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/network-client.ts#L6) + +___ + +### token + +• `Optional` **token**: `string` \| `TokenHeader` + +The token to use for API authentication (or undefined if none needed) - can be a string, or an object with the header key => value + +#### Defined in + +[src/types/network-client.ts:10](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/network-client.ts#L10) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_network_client.AlgoConfig.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_network_client.AlgoConfig.md new file mode 100644 index 000000000..8936facf6 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_network_client.AlgoConfig.md @@ -0,0 +1,51 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/network-client](../modules/types_network_client.md) / AlgoConfig + +# Interface: AlgoConfig + +[types/network-client](../modules/types_network_client.md).AlgoConfig + +Config for an algo config + +## Table of contents + +### Properties + +- [algodConfig](types_network_client.AlgoConfig.md#algodconfig) +- [indexerConfig](types_network_client.AlgoConfig.md#indexerconfig) +- [kmdConfig](types_network_client.AlgoConfig.md#kmdconfig) + +## Properties + +### algodConfig + +• **algodConfig**: [`AlgoClientConfig`](types_network_client.AlgoClientConfig.md) + +Algo client configuration + +#### Defined in + +[src/types/network-client.ts:16](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/network-client.ts#L16) + +___ + +### indexerConfig + +• **indexerConfig**: [`AlgoClientConfig`](types_network_client.AlgoClientConfig.md) + +Indexer client configuration + +#### Defined in + +[src/types/network-client.ts:18](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/network-client.ts#L18) + +___ + +### kmdConfig + +• **kmdConfig**: [`AlgoClientConfig`](types_network_client.AlgoClientConfig.md) + +Kmd configuration + +#### Defined in + +[src/types/network-client.ts:20](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/network-client.ts#L20) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_testing.AlgoKitLogCaptureFixture.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_testing.AlgoKitLogCaptureFixture.md new file mode 100644 index 000000000..5a0bbf078 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_testing.AlgoKitLogCaptureFixture.md @@ -0,0 +1,72 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/testing](../modules/types_testing.md) / AlgoKitLogCaptureFixture + +# Interface: AlgoKitLogCaptureFixture + +[types/testing](../modules/types_testing.md).AlgoKitLogCaptureFixture + +## Table of contents + +### Properties + +- [afterEach](types_testing.AlgoKitLogCaptureFixture.md#aftereach) +- [beforeEach](types_testing.AlgoKitLogCaptureFixture.md#beforeeach) + +### Accessors + +- [testLogger](types_testing.AlgoKitLogCaptureFixture.md#testlogger) + +## Properties + +### afterEach + +• **afterEach**: () => `void` + +#### Type declaration + +▸ (): `void` + +Testing framework agnostic handler method to run after each test to reset the logger. + +##### Returns + +`void` + +#### Defined in + +[src/types/testing.ts:94](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L94) + +___ + +### beforeEach + +• **beforeEach**: () => `void` + +#### Type declaration + +▸ (): `void` + +Testing framework agnostic handler method to run before each test to prepare the `testLogger` for that test. + +##### Returns + +`void` + +#### Defined in + +[src/types/testing.ts:90](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L90) + +## Accessors + +### testLogger + +• `get` **testLogger**(): [`TestLogger`](../classes/testing.TestLogger.md) + +The test logger instance for the current test + +#### Returns + +[`TestLogger`](../classes/testing.TestLogger.md) + +#### Defined in + +[src/types/testing.ts:86](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L86) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_testing.AlgorandFixture.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_testing.AlgorandFixture.md new file mode 100644 index 000000000..d86eceefd --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_testing.AlgorandFixture.md @@ -0,0 +1,62 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/testing](../modules/types_testing.md) / AlgorandFixture + +# Interface: AlgorandFixture + +[types/testing](../modules/types_testing.md).AlgorandFixture + +An Algorand automated testing fixture + +## Table of contents + +### Properties + +- [beforeEach](types_testing.AlgorandFixture.md#beforeeach) + +### Accessors + +- [context](types_testing.AlgorandFixture.md#context) + +## Properties + +### beforeEach + +• **beforeEach**: () => `Promise`<`void`\> + +#### Type declaration + +▸ (): `Promise`<`void`\> + +Testing framework agnostic handler method to run before each test to prepare the `context` for that test. + +##### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/types/testing.ts:68](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L68) + +## Accessors + +### context + +• `get` **context**(): [`AlgorandTestAutomationContext`](types_testing.AlgorandTestAutomationContext.md) + +Retrieve the current context. +Useful with destructuring. + +#### Returns + +[`AlgorandTestAutomationContext`](types_testing.AlgorandTestAutomationContext.md) + +**`Example`** + +```typescript +test('My test', () => { + const {algod, indexer, testAccount, ...} = algorand.context +}) +``` + +#### Defined in + +[src/types/testing.ts:63](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L63) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_testing.AlgorandFixtureConfig.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_testing.AlgorandFixtureConfig.md new file mode 100644 index 000000000..84820016a --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_testing.AlgorandFixtureConfig.md @@ -0,0 +1,64 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/testing](../modules/types_testing.md) / AlgorandFixtureConfig + +# Interface: AlgorandFixtureConfig + +[types/testing](../modules/types_testing.md).AlgorandFixtureConfig + +Configuration for creating an Algorand testing fixture. + +## Table of contents + +### Properties + +- [algod](types_testing.AlgorandFixtureConfig.md#algod) +- [indexer](types_testing.AlgorandFixtureConfig.md#indexer) +- [kmd](types_testing.AlgorandFixtureConfig.md#kmd) +- [testAccountFunding](types_testing.AlgorandFixtureConfig.md#testaccountfunding) + +## Properties + +### algod + +• `Optional` **algod**: `default` + +An optional algod client, if not specified then it will create one against environment variables defined network (if present) or default LocalNet. + +#### Defined in + +[src/types/testing.ts:43](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L43) + +___ + +### indexer + +• `Optional` **indexer**: `default` + +An optional indexer client, if not specified then it will create one against environment variables defined network (if present) or default LocalNet. + +#### Defined in + +[src/types/testing.ts:45](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L45) + +___ + +### kmd + +• `Optional` **kmd**: `default` + +An optional kmd client, if not specified then it will create one against environment variables defined network (if present) or default LocalNet. + +#### Defined in + +[src/types/testing.ts:47](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L47) + +___ + +### testAccountFunding + +• `Optional` **testAccountFunding**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) + +The amount of funds to allocate to the default testing account, if not specified then it will get 10 ALGOs. + +#### Defined in + +[src/types/testing.ts:49](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L49) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_testing.AlgorandTestAutomationContext.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_testing.AlgorandTestAutomationContext.md new file mode 100644 index 000000000..ed5c5858f --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_testing.AlgorandTestAutomationContext.md @@ -0,0 +1,152 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/testing](../modules/types_testing.md) / AlgorandTestAutomationContext + +# Interface: AlgorandTestAutomationContext + +[types/testing](../modules/types_testing.md).AlgorandTestAutomationContext + +Test automation context. + +## Table of contents + +### Properties + +- [algod](types_testing.AlgorandTestAutomationContext.md#algod) +- [generateAccount](types_testing.AlgorandTestAutomationContext.md#generateaccount) +- [indexer](types_testing.AlgorandTestAutomationContext.md#indexer) +- [kmd](types_testing.AlgorandTestAutomationContext.md#kmd) +- [testAccount](types_testing.AlgorandTestAutomationContext.md#testaccount) +- [transactionLogger](types_testing.AlgorandTestAutomationContext.md#transactionlogger) +- [waitForIndexer](types_testing.AlgorandTestAutomationContext.md#waitforindexer) +- [waitForIndexerTransaction](types_testing.AlgorandTestAutomationContext.md#waitforindexertransaction) + +## Properties + +### algod + +• **algod**: `default` + +Algod client instance that will log transactions in `transactionLogger` + +#### Defined in + +[src/types/testing.ts:13](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L13) + +___ + +### generateAccount + +• **generateAccount**: (`params`: [`GetTestAccountParams`](types_testing.GetTestAccountParams.md)) => `Promise`<`default`\> + +#### Type declaration + +▸ (`params`): `Promise`<`default`\> + +Generate and fund an additional ephemerally created account + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `params` | [`GetTestAccountParams`](types_testing.GetTestAccountParams.md) | + +##### Returns + +`Promise`<`default`\> + +#### Defined in + +[src/types/testing.ts:23](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L23) + +___ + +### indexer + +• **indexer**: `default` + +Indexer client instance + +#### Defined in + +[src/types/testing.ts:15](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L15) + +___ + +### kmd + +• **kmd**: `default` + +KMD client instance + +#### Defined in + +[src/types/testing.ts:17](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L17) + +___ + +### testAccount + +• **testAccount**: `default` + +Default, funded test account that is ephemerally created + +#### Defined in + +[src/types/testing.ts:21](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L21) + +___ + +### transactionLogger + +• **transactionLogger**: [`TransactionLogger`](../classes/testing.TransactionLogger.md) + +Transaction logger that will log transaction IDs for all transactions issued by `algod` + +#### Defined in + +[src/types/testing.ts:19](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L19) + +___ + +### waitForIndexer + +• **waitForIndexer**: () => `Promise`<`void`\> + +#### Type declaration + +▸ (): `Promise`<`void`\> + +Wait for the indexer to catch up with all transactions logged by `transactionLogger` + +##### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/types/testing.ts:25](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L25) + +___ + +### waitForIndexerTransaction + +• **waitForIndexerTransaction**: (`transactionId`: `string`) => `Promise`<[`TransactionLookupResult`](types_indexer.TransactionLookupResult.md)\> + +#### Type declaration + +▸ (`transactionId`): `Promise`<[`TransactionLookupResult`](types_indexer.TransactionLookupResult.md)\> + +Wait for the indexer to catch up with the given transaction ID + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `transactionId` | `string` | + +##### Returns + +`Promise`<[`TransactionLookupResult`](types_indexer.TransactionLookupResult.md)\> + +#### Defined in + +[src/types/testing.ts:27](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L27) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_testing.GetTestAccountParams.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_testing.GetTestAccountParams.md new file mode 100644 index 000000000..9581d2642 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_testing.GetTestAccountParams.md @@ -0,0 +1,38 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/testing](../modules/types_testing.md) / GetTestAccountParams + +# Interface: GetTestAccountParams + +[types/testing](../modules/types_testing.md).GetTestAccountParams + +Parameters for the `getTestAccount` function. + +## Table of contents + +### Properties + +- [initialFunds](types_testing.GetTestAccountParams.md#initialfunds) +- [suppressLog](types_testing.GetTestAccountParams.md#suppresslog) + +## Properties + +### initialFunds + +• **initialFunds**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) + +Initial funds to ensure the account has + +#### Defined in + +[src/types/testing.ts:35](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L35) + +___ + +### suppressLog + +• `Optional` **suppressLog**: `boolean` + +Whether to suppress the log (which includes a mnemonic) or not (default: do not suppress the log) + +#### Defined in + +[src/types/testing.ts:37](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L37) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_testing.LogSnapshotConfig.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_testing.LogSnapshotConfig.md new file mode 100644 index 000000000..211c5e91d --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_testing.LogSnapshotConfig.md @@ -0,0 +1,53 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/testing](../modules/types_testing.md) / LogSnapshotConfig + +# Interface: LogSnapshotConfig + +[types/testing](../modules/types_testing.md).LogSnapshotConfig + +Configuration for preparing a captured log snapshot. +This helps ensure that the provided configuration items won't appear + with random values in the log snapshot, but rather will get substituted with predictable ids. + +## Table of contents + +### Properties + +- [accounts](types_testing.LogSnapshotConfig.md#accounts) +- [apps](types_testing.LogSnapshotConfig.md#apps) +- [transactions](types_testing.LogSnapshotConfig.md#transactions) + +## Properties + +### accounts + +• `Optional` **accounts**: (`string` \| [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom))[] + +Any accounts/addresses to replace the address for predictably + +#### Defined in + +[src/types/testing.ts:79](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L79) + +___ + +### apps + +• `Optional` **apps**: (`string` \| `number` \| `bigint`)[] + +Any app IDs to replace predictably + +#### Defined in + +[src/types/testing.ts:81](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L81) + +___ + +### transactions + +• `Optional` **transactions**: (`string` \| `Transaction`)[] + +Any transaction IDs or transactions to replace the ID for predictably + +#### Defined in + +[src/types/testing.ts:77](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L77) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.AtomicTransactionComposerToSend.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.AtomicTransactionComposerToSend.md new file mode 100644 index 000000000..519d09314 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.AtomicTransactionComposerToSend.md @@ -0,0 +1,38 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/transaction](../modules/types_transaction.md) / AtomicTransactionComposerToSend + +# Interface: AtomicTransactionComposerToSend + +[types/transaction](../modules/types_transaction.md).AtomicTransactionComposerToSend + +An `AtomicTransactionComposer` with transactions to send. + +## Table of contents + +### Properties + +- [atc](types_transaction.AtomicTransactionComposerToSend.md#atc) +- [sendParams](types_transaction.AtomicTransactionComposerToSend.md#sendparams) + +## Properties + +### atc + +• **atc**: `AtomicTransactionComposer` + +The `AtomicTransactionComposer` with transactions loaded to send + +#### Defined in + +[src/types/transaction.ts:121](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L121) + +___ + +### sendParams + +• `Optional` **sendParams**: `Omit`<[`SendTransactionParams`](types_transaction.SendTransactionParams.md), ``"fee"`` \| ``"maxFee"`` \| ``"skipSending"`` \| ``"atc"``\> + +Any parameters to control the semantics of the send to the network + +#### Defined in + +[src/types/transaction.ts:123](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L123) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.ConfirmedTransactionResult.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.ConfirmedTransactionResult.md new file mode 100644 index 000000000..f248c28e5 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.ConfirmedTransactionResult.md @@ -0,0 +1,52 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/transaction](../modules/types_transaction.md) / ConfirmedTransactionResult + +# Interface: ConfirmedTransactionResult + +[types/transaction](../modules/types_transaction.md).ConfirmedTransactionResult + +The result of sending and confirming a transaction + +## Hierarchy + +- [`SendTransactionResult`](types_transaction.SendTransactionResult.md) + + ↳ **`ConfirmedTransactionResult`** + +## Table of contents + +### Properties + +- [confirmation](types_transaction.ConfirmedTransactionResult.md#confirmation) +- [transaction](types_transaction.ConfirmedTransactionResult.md#transaction) + +## Properties + +### confirmation + +• **confirmation**: `PendingTransactionResponse` + +The response from sending and waiting for the transaction + +#### Overrides + +[SendTransactionResult](types_transaction.SendTransactionResult.md).[confirmation](types_transaction.SendTransactionResult.md#confirmation) + +#### Defined in + +[src/types/transaction.ts:72](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L72) + +___ + +### transaction + +• **transaction**: `Transaction` + +The transaction + +#### Inherited from + +[SendTransactionResult](types_transaction.SendTransactionResult.md).[transaction](types_transaction.SendTransactionResult.md#transaction) + +#### Defined in + +[src/types/transaction.ts:44](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L44) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.ConfirmedTransactionResults.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.ConfirmedTransactionResults.md new file mode 100644 index 000000000..ad7d48168 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.ConfirmedTransactionResults.md @@ -0,0 +1,88 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/transaction](../modules/types_transaction.md) / ConfirmedTransactionResults + +# Interface: ConfirmedTransactionResults + +[types/transaction](../modules/types_transaction.md).ConfirmedTransactionResults + +The result of sending and confirming one or more transactions, but where there is a primary transaction of interest + +## Hierarchy + +- [`SendTransactionResult`](types_transaction.SendTransactionResult.md) + +- [`SendTransactionResults`](types_transaction.SendTransactionResults.md) + + ↳ **`ConfirmedTransactionResults`** + +## Table of contents + +### Properties + +- [confirmation](types_transaction.ConfirmedTransactionResults.md#confirmation) +- [confirmations](types_transaction.ConfirmedTransactionResults.md#confirmations) +- [transaction](types_transaction.ConfirmedTransactionResults.md#transaction) +- [transactions](types_transaction.ConfirmedTransactionResults.md#transactions) + +## Properties + +### confirmation + +• **confirmation**: `PendingTransactionResponse` + +The response from sending and waiting for the primary transaction + +#### Overrides + +[SendTransactionResult](types_transaction.SendTransactionResult.md).[confirmation](types_transaction.SendTransactionResult.md#confirmation) + +#### Defined in + +[src/types/transaction.ts:78](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L78) + +___ + +### confirmations + +• **confirmations**: `PendingTransactionResponse`[] + +The response from sending and waiting for the transactions + +#### Overrides + +[SendTransactionResults](types_transaction.SendTransactionResults.md).[confirmations](types_transaction.SendTransactionResults.md#confirmations) + +#### Defined in + +[src/types/transaction.ts:80](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L80) + +___ + +### transaction + +• **transaction**: `Transaction` + +The transaction + +#### Inherited from + +[SendTransactionResult](types_transaction.SendTransactionResult.md).[transaction](types_transaction.SendTransactionResult.md#transaction) + +#### Defined in + +[src/types/transaction.ts:44](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L44) + +___ + +### transactions + +• **transactions**: `Transaction`[] + +The transactions that have been prepared and/or sent + +#### Inherited from + +[SendTransactionResults](types_transaction.SendTransactionResults.md).[transactions](types_transaction.SendTransactionResults.md#transactions) + +#### Defined in + +[src/types/transaction.ts:52](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L52) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.SendAtomicTransactionComposerResults.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.SendAtomicTransactionComposerResults.md new file mode 100644 index 000000000..d487caa92 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.SendAtomicTransactionComposerResults.md @@ -0,0 +1,92 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/transaction](../modules/types_transaction.md) / SendAtomicTransactionComposerResults + +# Interface: SendAtomicTransactionComposerResults + +[types/transaction](../modules/types_transaction.md).SendAtomicTransactionComposerResults + +The result of preparing and/or sending multiple transactions using an `AtomicTransactionComposer` + +## Hierarchy + +- [`SendTransactionResults`](types_transaction.SendTransactionResults.md) + + ↳ **`SendAtomicTransactionComposerResults`** + +## Table of contents + +### Properties + +- [confirmations](types_transaction.SendAtomicTransactionComposerResults.md#confirmations) +- [groupId](types_transaction.SendAtomicTransactionComposerResults.md#groupid) +- [returns](types_transaction.SendAtomicTransactionComposerResults.md#returns) +- [transactions](types_transaction.SendAtomicTransactionComposerResults.md#transactions) +- [txIds](types_transaction.SendAtomicTransactionComposerResults.md#txids) + +## Properties + +### confirmations + +• `Optional` **confirmations**: `PendingTransactionResponse`[] + +The responses if the transactions were sent and waited for, +the index of the confirmation will match the index of the underlying transaction + +#### Inherited from + +[SendTransactionResults](types_transaction.SendTransactionResults.md).[confirmations](types_transaction.SendTransactionResults.md#confirmations) + +#### Defined in + +[src/types/transaction.ts:56](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L56) + +___ + +### groupId + +• **groupId**: `string` + +base64 encoded representation of the group ID of the atomic group + +#### Defined in + +[src/types/transaction.ts:62](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L62) + +___ + +### returns + +• `Optional` **returns**: [`ABIReturn`](../modules/types_app.md#abireturn)[] + +If ABI method(s) were called the processed return values + +#### Defined in + +[src/types/transaction.ts:66](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L66) + +___ + +### transactions + +• **transactions**: `Transaction`[] + +The transactions that have been prepared and/or sent + +#### Inherited from + +[SendTransactionResults](types_transaction.SendTransactionResults.md).[transactions](types_transaction.SendTransactionResults.md#transactions) + +#### Defined in + +[src/types/transaction.ts:52](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L52) + +___ + +### txIds + +• **txIds**: `string`[] + +The transaction IDs that have been prepared and/or sent + +#### Defined in + +[src/types/transaction.ts:64](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L64) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.SendTransactionParams.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.SendTransactionParams.md new file mode 100644 index 000000000..5a613f285 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.SendTransactionParams.md @@ -0,0 +1,114 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/transaction](../modules/types_transaction.md) / SendTransactionParams + +# Interface: SendTransactionParams + +[types/transaction](../modules/types_transaction.md).SendTransactionParams + +The sending configuration for a transaction + +## Hierarchy + +- **`SendTransactionParams`** + + ↳ [`AppCallParams`](types_app.AppCallParams.md) + + ↳ [`AlgoTransferParams`](types_transfer.AlgoTransferParams.md) + + ↳ [`EnsureFundedParams`](types_transfer.EnsureFundedParams.md) + +## Table of contents + +### Properties + +- [atc](types_transaction.SendTransactionParams.md#atc) +- [fee](types_transaction.SendTransactionParams.md#fee) +- [maxFee](types_transaction.SendTransactionParams.md#maxfee) +- [maxRoundsToWaitForConfirmation](types_transaction.SendTransactionParams.md#maxroundstowaitforconfirmation) +- [skipSending](types_transaction.SendTransactionParams.md#skipsending) +- [skipWaiting](types_transaction.SendTransactionParams.md#skipwaiting) +- [suppressLog](types_transaction.SendTransactionParams.md#suppresslog) + +## Properties + +### atc + +• `Optional` **atc**: `AtomicTransactionComposer` + +An optional `AtomicTransactionComposer` to add the transaction to, if specified then `skipSending: undefined` has the same effect as `skipSending: true` + +#### Defined in + +[src/types/transaction.ts:30](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L30) + +___ + +### fee + +• `Optional` **fee**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) + +The flat fee you want to pay, useful for covering extra fees in a transaction group or app call + +#### Defined in + +[src/types/transaction.ts:34](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L34) + +___ + +### maxFee + +• `Optional` **maxFee**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) + +The maximum fee that you are happy to pay (default: unbounded) - if this is set it's possible the transaction could get rejected during network congestion + +#### Defined in + +[src/types/transaction.ts:36](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L36) + +___ + +### maxRoundsToWaitForConfirmation + +• `Optional` **maxRoundsToWaitForConfirmation**: `number` + +The maximum number of rounds to wait for confirmation, only applies if `skipWaiting` is `undefined` or `false`, default: wait up to 5 rounds + +#### Defined in + +[src/types/transaction.ts:38](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L38) + +___ + +### skipSending + +• `Optional` **skipSending**: `boolean` + +Whether to skip signing and sending the transaction to the chain (default: transaction signed and sent to chain, unless `atc` specified) +and instead just return the raw transaction, e.g. so you can add it to a group of transactions + +#### Defined in + +[src/types/transaction.ts:26](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L26) + +___ + +### skipWaiting + +• `Optional` **skipWaiting**: `boolean` + +Whether to skip waiting for the submitted transaction (only relevant if `skipSending` is `false` or unset) + +#### Defined in + +[src/types/transaction.ts:28](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L28) + +___ + +### suppressLog + +• `Optional` **suppressLog**: `boolean` + +Whether to suppress log messages from transaction send, default: do not suppress + +#### Defined in + +[src/types/transaction.ts:32](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L32) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.SendTransactionResult.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.SendTransactionResult.md new file mode 100644 index 000000000..e10e57fa3 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.SendTransactionResult.md @@ -0,0 +1,48 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/transaction](../modules/types_transaction.md) / SendTransactionResult + +# Interface: SendTransactionResult + +[types/transaction](../modules/types_transaction.md).SendTransactionResult + +The result of sending a transaction + +## Hierarchy + +- **`SendTransactionResult`** + + ↳ [`AppCallTransactionResultOfType`](types_app.AppCallTransactionResultOfType.md) + + ↳ [`ConfirmedTransactionResult`](types_transaction.ConfirmedTransactionResult.md) + + ↳ [`ConfirmedTransactionResults`](types_transaction.ConfirmedTransactionResults.md) + +## Table of contents + +### Properties + +- [confirmation](types_transaction.SendTransactionResult.md#confirmation) +- [transaction](types_transaction.SendTransactionResult.md#transaction) + +## Properties + +### confirmation + +• `Optional` **confirmation**: `PendingTransactionResponse` + +The response if the transaction was sent and waited for + +#### Defined in + +[src/types/transaction.ts:46](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L46) + +___ + +### transaction + +• **transaction**: `Transaction` + +The transaction + +#### Defined in + +[src/types/transaction.ts:44](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L44) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.SendTransactionResults.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.SendTransactionResults.md new file mode 100644 index 000000000..ce42b2e58 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.SendTransactionResults.md @@ -0,0 +1,49 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/transaction](../modules/types_transaction.md) / SendTransactionResults + +# Interface: SendTransactionResults + +[types/transaction](../modules/types_transaction.md).SendTransactionResults + +The result of preparing and/or sending multiple transactions + +## Hierarchy + +- **`SendTransactionResults`** + + ↳ [`AppCallTransactionResultOfType`](types_app.AppCallTransactionResultOfType.md) + + ↳ [`SendAtomicTransactionComposerResults`](types_transaction.SendAtomicTransactionComposerResults.md) + + ↳ [`ConfirmedTransactionResults`](types_transaction.ConfirmedTransactionResults.md) + +## Table of contents + +### Properties + +- [confirmations](types_transaction.SendTransactionResults.md#confirmations) +- [transactions](types_transaction.SendTransactionResults.md#transactions) + +## Properties + +### confirmations + +• `Optional` **confirmations**: `PendingTransactionResponse`[] + +The responses if the transactions were sent and waited for, +the index of the confirmation will match the index of the underlying transaction + +#### Defined in + +[src/types/transaction.ts:56](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L56) + +___ + +### transactions + +• **transactions**: `Transaction`[] + +The transactions that have been prepared and/or sent + +#### Defined in + +[src/types/transaction.ts:52](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L52) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.TransactionGroupToSend.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.TransactionGroupToSend.md new file mode 100644 index 000000000..170c25f92 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.TransactionGroupToSend.md @@ -0,0 +1,54 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/transaction](../modules/types_transaction.md) / TransactionGroupToSend + +# Interface: TransactionGroupToSend + +[types/transaction](../modules/types_transaction.md).TransactionGroupToSend + +A group of transactions to send together as an atomic group +https://developer.algorand.org/docs/get-details/atomic_transfers/ + +## Table of contents + +### Properties + +- [sendParams](types_transaction.TransactionGroupToSend.md#sendparams) +- [signer](types_transaction.TransactionGroupToSend.md#signer) +- [transactions](types_transaction.TransactionGroupToSend.md#transactions) + +## Properties + +### sendParams + +• `Optional` **sendParams**: `Omit`<[`SendTransactionParams`](types_transaction.SendTransactionParams.md), ``"fee"`` \| ``"maxFee"`` \| ``"skipSending"`` \| ``"atc"``\> + +Any parameters to control the semantics of the send to the network + +#### Defined in + +[src/types/transaction.ts:108](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L108) + +___ + +### signer + +• `Optional` **signer**: [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom) + +Optional signer to pass in, required if at least one transaction provided is just the transaction, ignored otherwise + +#### Defined in + +[src/types/transaction.ts:115](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L115) + +___ + +### transactions + +• **transactions**: (`Transaction` \| [`TransactionToSign`](types_transaction.TransactionToSign.md) \| `Promise`<[`SendTransactionResult`](types_transaction.SendTransactionResult.md)\>)[] + +The list of transactions to send, which can either be a raw transaction (in which case `signer` is required), + the async result of an AlgoKit utils method that returns a `SendTransactionResult` (saves unwrapping the promise, be sure to pass `skipSending: true`, `signer` is also required) + or the transaction with its signer (`signer` is ignored) + +#### Defined in + +[src/types/transaction.ts:113](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L113) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.TransactionToSign.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.TransactionToSign.md new file mode 100644 index 000000000..083669cfe --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transaction.TransactionToSign.md @@ -0,0 +1,38 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/transaction](../modules/types_transaction.md) / TransactionToSign + +# Interface: TransactionToSign + +[types/transaction](../modules/types_transaction.md).TransactionToSign + +Defines an unsigned transaction that will appear in a group of transactions along with its signing information + +## Table of contents + +### Properties + +- [signer](types_transaction.TransactionToSign.md#signer) +- [transaction](types_transaction.TransactionToSign.md#transaction) + +## Properties + +### signer + +• **signer**: [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom) + +The account to use to sign the transaction, either an account (with private key loaded) or a logic signature account + +#### Defined in + +[src/types/transaction.ts:100](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L100) + +___ + +### transaction + +• **transaction**: `Transaction` + +The unsigned transaction to sign and send + +#### Defined in + +[src/types/transaction.ts:98](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L98) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transfer.AlgoTransferParams.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transfer.AlgoTransferParams.md new file mode 100644 index 000000000..f00027875 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transfer.AlgoTransferParams.md @@ -0,0 +1,203 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/transfer](../modules/types_transfer.md) / AlgoTransferParams + +# Interface: AlgoTransferParams + +[types/transfer](../modules/types_transfer.md).AlgoTransferParams + +Parameters for `transferAlgos` call. + +## Hierarchy + +- [`SendTransactionParams`](types_transaction.SendTransactionParams.md) + + ↳ **`AlgoTransferParams`** + +## Table of contents + +### Properties + +- [amount](types_transfer.AlgoTransferParams.md#amount) +- [atc](types_transfer.AlgoTransferParams.md#atc) +- [fee](types_transfer.AlgoTransferParams.md#fee) +- [from](types_transfer.AlgoTransferParams.md#from) +- [maxFee](types_transfer.AlgoTransferParams.md#maxfee) +- [maxRoundsToWaitForConfirmation](types_transfer.AlgoTransferParams.md#maxroundstowaitforconfirmation) +- [note](types_transfer.AlgoTransferParams.md#note) +- [skipSending](types_transfer.AlgoTransferParams.md#skipsending) +- [skipWaiting](types_transfer.AlgoTransferParams.md#skipwaiting) +- [suppressLog](types_transfer.AlgoTransferParams.md#suppresslog) +- [to](types_transfer.AlgoTransferParams.md#to) +- [transactionParams](types_transfer.AlgoTransferParams.md#transactionparams) + +## Properties + +### amount + +• **amount**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) + +The amount to send + +#### Defined in + +[src/types/transfer.ts:12](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transfer.ts#L12) + +___ + +### atc + +• `Optional` **atc**: `AtomicTransactionComposer` + +An optional `AtomicTransactionComposer` to add the transaction to, if specified then `skipSending: undefined` has the same effect as `skipSending: true` + +#### Inherited from + +[SendTransactionParams](types_transaction.SendTransactionParams.md).[atc](types_transaction.SendTransactionParams.md#atc) + +#### Defined in + +[src/types/transaction.ts:30](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L30) + +___ + +### fee + +• `Optional` **fee**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) + +The flat fee you want to pay, useful for covering extra fees in a transaction group or app call + +#### Inherited from + +[SendTransactionParams](types_transaction.SendTransactionParams.md).[fee](types_transaction.SendTransactionParams.md#fee) + +#### Defined in + +[src/types/transaction.ts:34](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L34) + +___ + +### from + +• **from**: [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom) + +The account that will send the ALGOs + +#### Defined in + +[src/types/transfer.ts:8](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transfer.ts#L8) + +___ + +### maxFee + +• `Optional` **maxFee**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) + +The maximum fee that you are happy to pay (default: unbounded) - if this is set it's possible the transaction could get rejected during network congestion + +#### Inherited from + +[SendTransactionParams](types_transaction.SendTransactionParams.md).[maxFee](types_transaction.SendTransactionParams.md#maxfee) + +#### Defined in + +[src/types/transaction.ts:36](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L36) + +___ + +### maxRoundsToWaitForConfirmation + +• `Optional` **maxRoundsToWaitForConfirmation**: `number` + +The maximum number of rounds to wait for confirmation, only applies if `skipWaiting` is `undefined` or `false`, default: wait up to 5 rounds + +#### Inherited from + +[SendTransactionParams](types_transaction.SendTransactionParams.md).[maxRoundsToWaitForConfirmation](types_transaction.SendTransactionParams.md#maxroundstowaitforconfirmation) + +#### Defined in + +[src/types/transaction.ts:38](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L38) + +___ + +### note + +• `Optional` **note**: [`TransactionNote`](../modules/types_transaction.md#transactionnote) + +The (optional) transaction note + +#### Defined in + +[src/types/transfer.ts:16](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transfer.ts#L16) + +___ + +### skipSending + +• `Optional` **skipSending**: `boolean` + +Whether to skip signing and sending the transaction to the chain (default: transaction signed and sent to chain, unless `atc` specified) +and instead just return the raw transaction, e.g. so you can add it to a group of transactions + +#### Inherited from + +[SendTransactionParams](types_transaction.SendTransactionParams.md).[skipSending](types_transaction.SendTransactionParams.md#skipsending) + +#### Defined in + +[src/types/transaction.ts:26](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L26) + +___ + +### skipWaiting + +• `Optional` **skipWaiting**: `boolean` + +Whether to skip waiting for the submitted transaction (only relevant if `skipSending` is `false` or unset) + +#### Inherited from + +[SendTransactionParams](types_transaction.SendTransactionParams.md).[skipWaiting](types_transaction.SendTransactionParams.md#skipwaiting) + +#### Defined in + +[src/types/transaction.ts:28](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L28) + +___ + +### suppressLog + +• `Optional` **suppressLog**: `boolean` + +Whether to suppress log messages from transaction send, default: do not suppress + +#### Inherited from + +[SendTransactionParams](types_transaction.SendTransactionParams.md).[suppressLog](types_transaction.SendTransactionParams.md#suppresslog) + +#### Defined in + +[src/types/transaction.ts:32](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L32) + +___ + +### to + +• **to**: `string` \| [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom) + +The account / account address that will receive the ALGOs + +#### Defined in + +[src/types/transfer.ts:10](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transfer.ts#L10) + +___ + +### transactionParams + +• `Optional` **transactionParams**: `SuggestedParams` + +Optional transaction parameters + +#### Defined in + +[src/types/transfer.ts:14](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transfer.ts#L14) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transfer.EnsureFundedParams.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transfer.EnsureFundedParams.md new file mode 100644 index 000000000..6cd194a37 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_transfer.EnsureFundedParams.md @@ -0,0 +1,216 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/transfer](../modules/types_transfer.md) / EnsureFundedParams + +# Interface: EnsureFundedParams + +[types/transfer](../modules/types_transfer.md).EnsureFundedParams + +Parameters for `ensureFunded` call. + +## Hierarchy + +- [`SendTransactionParams`](types_transaction.SendTransactionParams.md) + + ↳ **`EnsureFundedParams`** + +## Table of contents + +### Properties + +- [accountToFund](types_transfer.EnsureFundedParams.md#accounttofund) +- [atc](types_transfer.EnsureFundedParams.md#atc) +- [fee](types_transfer.EnsureFundedParams.md#fee) +- [fundingSource](types_transfer.EnsureFundedParams.md#fundingsource) +- [maxFee](types_transfer.EnsureFundedParams.md#maxfee) +- [maxRoundsToWaitForConfirmation](types_transfer.EnsureFundedParams.md#maxroundstowaitforconfirmation) +- [minFundingIncrement](types_transfer.EnsureFundedParams.md#minfundingincrement) +- [minSpendingBalance](types_transfer.EnsureFundedParams.md#minspendingbalance) +- [note](types_transfer.EnsureFundedParams.md#note) +- [skipSending](types_transfer.EnsureFundedParams.md#skipsending) +- [skipWaiting](types_transfer.EnsureFundedParams.md#skipwaiting) +- [suppressLog](types_transfer.EnsureFundedParams.md#suppresslog) +- [transactionParams](types_transfer.EnsureFundedParams.md#transactionparams) + +## Properties + +### accountToFund + +• **accountToFund**: `string` \| [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom) + +The account to fund + +#### Defined in + +[src/types/transfer.ts:22](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transfer.ts#L22) + +___ + +### atc + +• `Optional` **atc**: `AtomicTransactionComposer` + +An optional `AtomicTransactionComposer` to add the transaction to, if specified then `skipSending: undefined` has the same effect as `skipSending: true` + +#### Inherited from + +[SendTransactionParams](types_transaction.SendTransactionParams.md).[atc](types_transaction.SendTransactionParams.md#atc) + +#### Defined in + +[src/types/transaction.ts:30](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L30) + +___ + +### fee + +• `Optional` **fee**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) + +The flat fee you want to pay, useful for covering extra fees in a transaction group or app call + +#### Inherited from + +[SendTransactionParams](types_transaction.SendTransactionParams.md).[fee](types_transaction.SendTransactionParams.md#fee) + +#### Defined in + +[src/types/transaction.ts:34](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L34) + +___ + +### fundingSource + +• `Optional` **fundingSource**: [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom) + +The account to use as a funding source, will default to using the dispenser account returned by `algokit.getDispenserAccount` + +#### Defined in + +[src/types/transfer.ts:24](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transfer.ts#L24) + +___ + +### maxFee + +• `Optional` **maxFee**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) + +The maximum fee that you are happy to pay (default: unbounded) - if this is set it's possible the transaction could get rejected during network congestion + +#### Inherited from + +[SendTransactionParams](types_transaction.SendTransactionParams.md).[maxFee](types_transaction.SendTransactionParams.md#maxfee) + +#### Defined in + +[src/types/transaction.ts:36](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L36) + +___ + +### maxRoundsToWaitForConfirmation + +• `Optional` **maxRoundsToWaitForConfirmation**: `number` + +The maximum number of rounds to wait for confirmation, only applies if `skipWaiting` is `undefined` or `false`, default: wait up to 5 rounds + +#### Inherited from + +[SendTransactionParams](types_transaction.SendTransactionParams.md).[maxRoundsToWaitForConfirmation](types_transaction.SendTransactionParams.md#maxroundstowaitforconfirmation) + +#### Defined in + +[src/types/transaction.ts:38](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L38) + +___ + +### minFundingIncrement + +• `Optional` **minFundingIncrement**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) + +When issuing a funding amount, the minimum amount to transfer (avoids many small transfers if this gets called often on an active account) + +#### Defined in + +[src/types/transfer.ts:28](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transfer.ts#L28) + +___ + +### minSpendingBalance + +• **minSpendingBalance**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) + +The minimum balance of ALGOs that the account should have available to spend (i.e. on top of minimum balance requirement) + +#### Defined in + +[src/types/transfer.ts:26](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transfer.ts#L26) + +___ + +### note + +• `Optional` **note**: [`TransactionNote`](../modules/types_transaction.md#transactionnote) + +The (optional) transaction note, default: "Funding account to meet minimum requirement" + +#### Defined in + +[src/types/transfer.ts:32](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transfer.ts#L32) + +___ + +### skipSending + +• `Optional` **skipSending**: `boolean` + +Whether to skip signing and sending the transaction to the chain (default: transaction signed and sent to chain, unless `atc` specified) +and instead just return the raw transaction, e.g. so you can add it to a group of transactions + +#### Inherited from + +[SendTransactionParams](types_transaction.SendTransactionParams.md).[skipSending](types_transaction.SendTransactionParams.md#skipsending) + +#### Defined in + +[src/types/transaction.ts:26](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L26) + +___ + +### skipWaiting + +• `Optional` **skipWaiting**: `boolean` + +Whether to skip waiting for the submitted transaction (only relevant if `skipSending` is `false` or unset) + +#### Inherited from + +[SendTransactionParams](types_transaction.SendTransactionParams.md).[skipWaiting](types_transaction.SendTransactionParams.md#skipwaiting) + +#### Defined in + +[src/types/transaction.ts:28](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L28) + +___ + +### suppressLog + +• `Optional` **suppressLog**: `boolean` + +Whether to suppress log messages from transaction send, default: do not suppress + +#### Inherited from + +[SendTransactionParams](types_transaction.SendTransactionParams.md).[suppressLog](types_transaction.SendTransactionParams.md#suppresslog) + +#### Defined in + +[src/types/transaction.ts:32](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L32) + +___ + +### transactionParams + +• `Optional` **transactionParams**: `SuggestedParams` + +Optional transaction parameters + +#### Defined in + +[src/types/transfer.ts:30](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transfer.ts#L30) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_urlTokenBaseHTTPClient.AlgodTokenHeader.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_urlTokenBaseHTTPClient.AlgodTokenHeader.md new file mode 100644 index 000000000..41ce3dc07 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_urlTokenBaseHTTPClient.AlgodTokenHeader.md @@ -0,0 +1,21 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/urlTokenBaseHTTPClient](../modules/types_urlTokenBaseHTTPClient.md) / AlgodTokenHeader + +# Interface: AlgodTokenHeader + +[types/urlTokenBaseHTTPClient](../modules/types_urlTokenBaseHTTPClient.md).AlgodTokenHeader + +## Table of contents + +### Properties + +- [X-Algo-API-Token](types_urlTokenBaseHTTPClient.AlgodTokenHeader.md#x-algo-api-token) + +## Properties + +### X-Algo-API-Token + +• **X-Algo-API-Token**: `string` + +#### Defined in + +[src/types/urlTokenBaseHTTPClient.ts:10](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/urlTokenBaseHTTPClient.ts#L10) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_urlTokenBaseHTTPClient.CustomTokenHeader.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_urlTokenBaseHTTPClient.CustomTokenHeader.md new file mode 100644 index 000000000..9b231c146 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_urlTokenBaseHTTPClient.CustomTokenHeader.md @@ -0,0 +1,9 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/urlTokenBaseHTTPClient](../modules/types_urlTokenBaseHTTPClient.md) / CustomTokenHeader + +# Interface: CustomTokenHeader + +[types/urlTokenBaseHTTPClient](../modules/types_urlTokenBaseHTTPClient.md).CustomTokenHeader + +## Indexable + +▪ [headerName: `string`]: `string` diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_urlTokenBaseHTTPClient.IndexerTokenHeader.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_urlTokenBaseHTTPClient.IndexerTokenHeader.md new file mode 100644 index 000000000..9f63727aa --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_urlTokenBaseHTTPClient.IndexerTokenHeader.md @@ -0,0 +1,21 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/urlTokenBaseHTTPClient](../modules/types_urlTokenBaseHTTPClient.md) / IndexerTokenHeader + +# Interface: IndexerTokenHeader + +[types/urlTokenBaseHTTPClient](../modules/types_urlTokenBaseHTTPClient.md).IndexerTokenHeader + +## Table of contents + +### Properties + +- [X-Indexer-API-Token](types_urlTokenBaseHTTPClient.IndexerTokenHeader.md#x-indexer-api-token) + +## Properties + +### X-Indexer-API-Token + +• **X-Indexer-API-Token**: `string` + +#### Defined in + +[src/types/urlTokenBaseHTTPClient.ts:14](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/urlTokenBaseHTTPClient.ts#L14) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_urlTokenBaseHTTPClient.KMDTokenHeader.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_urlTokenBaseHTTPClient.KMDTokenHeader.md new file mode 100644 index 000000000..267d25731 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/interfaces/types_urlTokenBaseHTTPClient.KMDTokenHeader.md @@ -0,0 +1,21 @@ +[@algorandfoundation/algokit-utils](../README.md) / [types/urlTokenBaseHTTPClient](../modules/types_urlTokenBaseHTTPClient.md) / KMDTokenHeader + +# Interface: KMDTokenHeader + +[types/urlTokenBaseHTTPClient](../modules/types_urlTokenBaseHTTPClient.md).KMDTokenHeader + +## Table of contents + +### Properties + +- [X-KMD-API-Token](types_urlTokenBaseHTTPClient.KMDTokenHeader.md#x-kmd-api-token) + +## Properties + +### X-KMD-API-Token + +• **X-KMD-API-Token**: `string` + +#### Defined in + +[src/types/urlTokenBaseHTTPClient.ts:18](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/urlTokenBaseHTTPClient.ts#L18) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/index.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/index.md new file mode 100644 index 000000000..2ad4d427b --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/index.md @@ -0,0 +1,2322 @@ +[@algorandfoundation/algokit-utils](../README.md) / index + +# Module: index + +## Table of contents + +### Variables + +- [Config](index.md#config) + +### Functions + +- [algos](index.md#algos) +- [callApp](index.md#callapp) +- [capTransactionFee](index.md#captransactionfee) +- [compileTeal](index.md#compileteal) +- [controlFees](index.md#controlfees) +- [createApp](index.md#createapp) +- [decodeAppState](index.md#decodeappstate) +- [deployApp](index.md#deployapp) +- [encodeTransactionNote](index.md#encodetransactionnote) +- [ensureFunded](index.md#ensurefunded) +- [executePaginatedRequest](index.md#executepaginatedrequest) +- [getABIMethodSignature](index.md#getabimethodsignature) +- [getABIReturn](index.md#getabireturn) +- [getAccount](index.md#getaccount) +- [getAccountAddressAsString](index.md#getaccountaddressasstring) +- [getAccountAddressAsUint8Array](index.md#getaccountaddressasuint8array) +- [getAccountConfigFromEnvironment](index.md#getaccountconfigfromenvironment) +- [getAlgoClient](index.md#getalgoclient) +- [getAlgoIndexerClient](index.md#getalgoindexerclient) +- [getAlgoKmdClient](index.md#getalgokmdclient) +- [getAlgoNodeConfig](index.md#getalgonodeconfig) +- [getAlgodConfigFromEnvironment](index.md#getalgodconfigfromenvironment) +- [getAppArgsForABICall](index.md#getappargsforabicall) +- [getAppArgsForTransaction](index.md#getappargsfortransaction) +- [getAppBoxNames](index.md#getappboxnames) +- [getAppBoxValue](index.md#getappboxvalue) +- [getAppBoxValueFromABIType](index.md#getappboxvaluefromabitype) +- [getAppBoxValues](index.md#getappboxvalues) +- [getAppBoxValuesFromABIType](index.md#getappboxvaluesfromabitype) +- [getAppById](index.md#getappbyid) +- [getAppClient](index.md#getappclient) +- [getAppClientByCreatorAndName](index.md#getappclientbycreatorandname) +- [getAppClientById](index.md#getappclientbyid) +- [getAppDeploymentTransactionNote](index.md#getappdeploymenttransactionnote) +- [getAppGlobalState](index.md#getappglobalstate) +- [getAppLocalState](index.md#getapplocalstate) +- [getAppOnCompleteAction](index.md#getapponcompleteaction) +- [getAtomicTransactionComposerTransactions](index.md#getatomictransactioncomposertransactions) +- [getBoxReference](index.md#getboxreference) +- [getConfigFromEnvOrDefaults](index.md#getconfigfromenvordefaults) +- [getCreatorAppsByName](index.md#getcreatorappsbyname) +- [getDefaultLocalNetConfig](index.md#getdefaultlocalnetconfig) +- [getDispenserAccount](index.md#getdispenseraccount) +- [getIndexerConfigFromEnvironment](index.md#getindexerconfigfromenvironment) +- [getKmdWalletAccount](index.md#getkmdwalletaccount) +- [getLocalNetDispenserAccount](index.md#getlocalnetdispenseraccount) +- [getOrCreateKmdWalletAccount](index.md#getorcreatekmdwalletaccount) +- [getSenderAddress](index.md#getsenderaddress) +- [getSenderTransactionSigner](index.md#getsendertransactionsigner) +- [getTransactionParams](index.md#gettransactionparams) +- [getTransactionWithSigner](index.md#gettransactionwithsigner) +- [isLocalNet](index.md#islocalnet) +- [isMainNet](index.md#ismainnet) +- [isSchemaIsBroken](index.md#isschemaisbroken) +- [isTestNet](index.md#istestnet) +- [lookupAccountByAddress](index.md#lookupaccountbyaddress) +- [lookupAccountCreatedApplicationByAddress](index.md#lookupaccountcreatedapplicationbyaddress) +- [lookupTransactionById](index.md#lookuptransactionbyid) +- [microAlgos](index.md#microalgos) +- [mnemonicAccount](index.md#mnemonicaccount) +- [mnemonicAccountFromEnvironment](index.md#mnemonicaccountfromenvironment) +- [multisigAccount](index.md#multisigaccount) +- [performAtomicTransactionComposerDryrun](index.md#performatomictransactioncomposerdryrun) +- [performTemplateSubstitution](index.md#performtemplatesubstitution) +- [performTemplateSubstitutionAndCompile](index.md#performtemplatesubstitutionandcompile) +- [randomAccount](index.md#randomaccount) +- [rekeyedAccount](index.md#rekeyedaccount) +- [replaceDeployTimeControlParams](index.md#replacedeploytimecontrolparams) +- [searchTransactions](index.md#searchtransactions) +- [sendAtomicTransactionComposer](index.md#sendatomictransactioncomposer) +- [sendGroupOfTransactions](index.md#sendgroupoftransactions) +- [sendTransaction](index.md#sendtransaction) +- [signTransaction](index.md#signtransaction) +- [stripTealComments](index.md#striptealcomments) +- [transactionFees](index.md#transactionfees) +- [transactionSignerAccount](index.md#transactionsigneraccount) +- [transferAlgos](index.md#transferalgos) +- [updateApp](index.md#updateapp) +- [waitForConfirmation](index.md#waitforconfirmation) + +## Variables + +### Config + +• `Const` **Config**: [`UpdatableConfig`](../classes/types_config.UpdatableConfig.md) + +The AlgoKit config. To update it use the configure method. + +#### Defined in + +[src/index.ts:15](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/index.ts#L15) + +## Functions + +### algos + +▸ **algos**(`algos`): [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) + +Returns an amount of Algos using AlgoAmount + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `algos` | `number` | The amount in Algos | + +#### Returns + +[`AlgoAmount`](../classes/types_amount.AlgoAmount.md) + +#### Defined in + +[src/amount.ts:22](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/amount.ts#L22) + +___ + +### callApp + +▸ **callApp**(`call`, `algod`): `Promise`<[`AppCallTransactionResult`](../interfaces/types_app.AppCallTransactionResult.md)\> + +Issues a call to a given app. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `call` | [`AppCallParams`](../interfaces/types_app.AppCallParams.md) | The call details. | +| `algod` | `default` | An algod client | + +#### Returns + +`Promise`<[`AppCallTransactionResult`](../interfaces/types_app.AppCallTransactionResult.md)\> + +The result of the call + +#### Defined in + +[src/app.ts:305](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app.ts#L305) + +___ + +### capTransactionFee + +▸ **capTransactionFee**(`transaction`, `maxAcceptableFee`): `void` + +Limit the acceptable fee to a defined amount of µALGOs. +This also sets the transaction to be flatFee to ensure the transaction only succeeds at +the estimated rate. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `transaction` | `SuggestedParams` \| `Transaction` | The transaction to cap or suggested params object about to be used to create a transaction | +| `maxAcceptableFee` | [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) | The maximum acceptable fee to pay | + +#### Returns + +`void` + +#### Defined in + +[src/transaction.ts:397](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction.ts#L397) + +___ + +### compileTeal + +▸ **compileTeal**(`tealCode`, `algod`): `Promise`<[`CompiledTeal`](../interfaces/types_app.CompiledTeal.md)\> + +Compiles the given TEAL using algod and returns the result, including source map. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `tealCode` | `string` | The TEAL code | +| `algod` | `default` | An algod client | + +#### Returns + +`Promise`<[`CompiledTeal`](../interfaces/types_app.CompiledTeal.md)\> + +The information about the compiled file + +#### Defined in + +[src/app.ts:672](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app.ts#L672) + +___ + +### controlFees + +▸ **controlFees**<`T`\>(`transaction`, `feeControl`): `T` + +Allows for control of fees on a `Transaction` or `SuggestedParams` object + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `T` | extends `SuggestedParams` \| `Transaction` | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `transaction` | `T` | The transaction or suggested params | +| `feeControl` | `Object` | The fee control parameters | +| `feeControl.fee?` | [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) | - | +| `feeControl.maxFee?` | [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) | - | + +#### Returns + +`T` + +#### Defined in + +[src/transaction.ts:420](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction.ts#L420) + +___ + +### createApp + +▸ **createApp**(`create`, `algod`): `Promise`<`Partial`<[`AppCompilationResult`](../interfaces/types_app.AppCompilationResult.md)\> & [`AppCallTransactionResult`](../interfaces/types_app.AppCallTransactionResult.md) & [`AppReference`](../interfaces/types_app.AppReference.md)\> + +Creates a smart contract app, returns the details of the created app. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `create` | [`CreateAppParams`](../interfaces/types_app.CreateAppParams.md) | The parameters to create the app with | +| `algod` | `default` | An algod client | + +#### Returns + +`Promise`<`Partial`<[`AppCompilationResult`](../interfaces/types_app.AppCompilationResult.md)\> & [`AppCallTransactionResult`](../interfaces/types_app.AppCallTransactionResult.md) & [`AppReference`](../interfaces/types_app.AppReference.md)\> + +The details of the created app, or the transaction to create it if `skipSending` and the compilation result + +#### Defined in + +[src/app.ts:56](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app.ts#L56) + +___ + +### decodeAppState + +▸ **decodeAppState**(`state`): [`AppState`](../interfaces/types_app.AppState.md) + +Converts an array of global/local state values from the algod api to a more friendly +generic object keyed by the UTF-8 value of the key. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `state` | { `key`: `string` ; `value`: `TealValue` \| `EvalDelta` }[] | A `global-state`, `local-state`, `global-state-deltas` or `local-state-deltas` | + +#### Returns + +[`AppState`](../interfaces/types_app.AppState.md) + +An object keyeed by the UTF-8 representation of the key with various parsings of the values + +#### Defined in + +[src/app.ts:522](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app.ts#L522) + +___ + +### deployApp + +▸ **deployApp**(`deployment`, `algod`, `indexer?`): `Promise`<`Partial`<[`AppCompilationResult`](../interfaces/types_app.AppCompilationResult.md)\> & [`ConfirmedTransactionResults`](../interfaces/types_transaction.ConfirmedTransactionResults.md) & [`AppMetadata`](../interfaces/types_app.AppMetadata.md) & { `operationPerformed`: ``"create"`` \| ``"update"`` ; `return?`: [`ABIReturn`](types_app.md#abireturn) } \| [`ConfirmedTransactionResults`](../interfaces/types_transaction.ConfirmedTransactionResults.md) & [`AppMetadata`](../interfaces/types_app.AppMetadata.md) & { `deleteResult`: [`ConfirmedTransactionResult`](../interfaces/types_transaction.ConfirmedTransactionResult.md) ; `deleteReturn?`: [`ABIReturn`](types_app.md#abireturn) ; `operationPerformed`: ``"replace"`` ; `return?`: [`ABIReturn`](types_app.md#abireturn) } \| [`AppMetadata`](../interfaces/types_app.AppMetadata.md) & { `operationPerformed`: ``"nothing"`` }\> + +Idempotently deploy (create, update/delete if changed) an app against the given name via the given creator account, including deploy-time template placeholder substitutions. + +To understand the architecture decisions behind this functionality please see https://github.com/algorandfoundation/algokit-cli/blob/main/docs/architecture-decisions/2023-01-12_smart-contract-deployment.md + +**Note:** When using the return from this function be sure to check `operationPerformed` to get access to various return properties like `transaction`, `confirmation` and `deleteResult`. + +**Note:** if there is a breaking state schema change to an existing app (and `onSchemaBreak` is set to `'replace'`) the existing app will be deleted and re-created. + +**Note:** if there is an update (different TEAL code) to an existing app (and `onUpdate` is set to `'replace'`) the existing app will be deleted and re-created. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `deployment` | [`AppDeploymentParams`](../interfaces/types_app.AppDeploymentParams.md) | The arguments to control the app deployment | +| `algod` | `default` | An algod client | +| `indexer?` | `default` | An indexer client, needed if `existingDeployments` not passed in | + +#### Returns + +`Promise`<`Partial`<[`AppCompilationResult`](../interfaces/types_app.AppCompilationResult.md)\> & [`ConfirmedTransactionResults`](../interfaces/types_transaction.ConfirmedTransactionResults.md) & [`AppMetadata`](../interfaces/types_app.AppMetadata.md) & { `operationPerformed`: ``"create"`` \| ``"update"`` ; `return?`: [`ABIReturn`](types_app.md#abireturn) } \| [`ConfirmedTransactionResults`](../interfaces/types_transaction.ConfirmedTransactionResults.md) & [`AppMetadata`](../interfaces/types_app.AppMetadata.md) & { `deleteResult`: [`ConfirmedTransactionResult`](../interfaces/types_transaction.ConfirmedTransactionResult.md) ; `deleteReturn?`: [`ABIReturn`](types_app.md#abireturn) ; `operationPerformed`: ``"replace"`` ; `return?`: [`ABIReturn`](types_app.md#abireturn) } \| [`AppMetadata`](../interfaces/types_app.AppMetadata.md) & { `operationPerformed`: ``"nothing"`` }\> + +The app reference of the new/existing app + +#### Defined in + +[src/app-deploy.ts:38](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app-deploy.ts#L38) + +___ + +### encodeTransactionNote + +▸ **encodeTransactionNote**(`note?`): `Uint8Array` \| `undefined` + +Encodes a transaction note into a byte array ready to be included in an Algorand transaction. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `note?` | [`TransactionNote`](types_transaction.md#transactionnote) | The transaction note | + +#### Returns + +`Uint8Array` \| `undefined` + +the transaction note ready for inclusion in a transaction + + Case on the value of `data` this either be: + * `null` | `undefined`: `undefined` + * `string`: The string value + * Uint8Array: passthrough + * Arc2TransactionNote object: ARC-0002 compatible transaction note + * Else: The object/value converted into a JSON string representation + +#### Defined in + +[src/transaction.ts:38](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction.ts#L38) + +___ + +### ensureFunded + +▸ **ensureFunded**(`funding`, `algod`, `kmd?`): `Promise`<[`SendTransactionResult`](../interfaces/types_transaction.SendTransactionResult.md) \| `undefined`\> + +Funds a given account using a funding source such that it has a certain amount of algos free to spend (accounting for ALGOs locked in minimum balance requirement). + +https://developer.algorand.org/docs/get-details/accounts/#minimum-balance + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `funding` | [`EnsureFundedParams`](../interfaces/types_transfer.EnsureFundedParams.md) | The funding configuration | +| `algod` | `default` | An algod client | +| `kmd?` | `default` | An optional kmd client | + +#### Returns + +`Promise`<[`SendTransactionResult`](../interfaces/types_transaction.SendTransactionResult.md) \| `undefined`\> + +undefined if nothing was needed or the transaction send result + +#### Defined in + +[src/transfer.ts:43](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transfer.ts#L43) + +___ + +### executePaginatedRequest + +▸ **executePaginatedRequest**<`TResult`, `TRequest`\>(`extractItems`, `buildRequest`): `Promise`<`TResult`[]\> + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `TResult` | `TResult` | +| `TRequest` | extends `Object` | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `extractItems` | (`response`: `any`) => `TResult`[] | +| `buildRequest` | (`nextToken?`: `string`) => `TRequest` | + +#### Returns + +`Promise`<`TResult`[]\> + +#### Defined in + +[src/indexer-lookup.ts:108](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/indexer-lookup.ts#L108) + +___ + +### getABIMethodSignature + +▸ **getABIMethodSignature**(`method`): `string` + +Returns the encoded ABI spec for a given ABI Method + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `method` | `ABIMethodParams` \| `ABIMethod` | The method to return a signature for | + +#### Returns + +`string` + +The encoded ABI method spec e.g. `method_name(uint64,string)string` + +#### Defined in + +[src/app.ts:688](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app.ts#L688) + +___ + +### getABIReturn + +▸ **getABIReturn**(`args?`, `confirmation?`): [`ABIReturn`](types_app.md#abireturn) \| `undefined` + +Returns any ABI return values for the given app call arguments and transaction confirmation. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `args?` | [`AppCallArgs`](types_app.md#appcallargs) | The arguments that were used for the call | +| `confirmation?` | `PendingTransactionResponse` | The transaction confirmation from algod | + +#### Returns + +[`ABIReturn`](types_app.md#abireturn) \| `undefined` + +The return value for the method call + +#### Defined in + +[src/app.ts:386](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app.ts#L386) + +___ + +### getAccount + +▸ **getAccount**(`account`, `algod`, `kmdClient?`): `Promise`<`Account` \| [`SigningAccount`](../classes/types_account.SigningAccount.md)\> + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `account` | `string` \| { `fundWith?`: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) ; `name`: `string` } | The details of the account to get, either the name identifier (string) or an object with: * `name`: The name identifier of the account * `fundWith`: The amount to fund the account with when it gets created (when targeting LocalNet), if not specified then 1000 Algos will be funded from the dispenser account | +| `algod` | `default` | An algod client | +| `kmdClient?` | `default` | An optional KMD client to use to create an account (when targeting LocalNet), if not specified then a default KMD client will be loaded from environment variables | + +#### Returns + +`Promise`<`Account` \| [`SigningAccount`](../classes/types_account.SigningAccount.md)\> + +The requested account with private key loaded from the environment variables or when targeting LocalNet from KMD (idempotently creating and funding the account) + +**`Deprecated`** + +use mnemonicAccountFromEnvironment instead + +Returns an Algorand account with private key loaded by convention based on the given name identifier. + +Note: This function expects to run in a Node.js environment. + +## Convention: +* **Non-LocalNet:** will load process.env['{NAME}_MNEMONIC'] as a mnemonic secret; **Note: Be careful how the mnemonic is handled**, + never commit it into source control and ideally load it via a secret storage service rather than the file system. + If process.env['{NAME}_SENDER'] is defined then it will use that for the sender address (i.e. to support rekeyed accounts) +* **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 + +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). + +**`Example`** + +Default + +If you have a mnemonic secret loaded into `process.env.ACCOUNT_MNEMONIC` then you can call the following to get that private key loaded into an account object: +```typescript +const account = await getAccount('ACCOUNT', algod) +``` + +If that code runs against LocalNet then a wallet called `ACCOUNT` will automatically be created with an account that is automatically funded with 1000 (default) ALGOs from the default LocalNet dispenser. + +#### Defined in + +[src/account.ts:92](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/account.ts#L92) + +▸ **getAccount**(`account`, `algod`, `kmdClient?`): `Promise`<`Account` \| [`SigningAccount`](../classes/types_account.SigningAccount.md)\> + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `account` | `Object` | The details of the account to get, an object with: * `config`: Account configuration. To get from environment use getAccountConfigFromEnvironment(accountName) * `fundWith`: The amount to fund the account with when it gets created (when targeting LocalNet), if not specified then 1000 Algos will be funded from the dispenser account | +| `account.config` | [`AccountConfig`](../interfaces/types_account.AccountConfig.md) | - | +| `account.fundWith?` | [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) | - | +| `algod` | `default` | An algod client | +| `kmdClient?` | `default` | An optional KMD client to use to create an account (when targeting LocalNet), if not specified then a default KMD client will be loaded from environment variables | + +#### Returns + +`Promise`<`Account` \| [`SigningAccount`](../classes/types_account.SigningAccount.md)\> + +The requested account with private key loaded from the environment variables or when targeting LocalNet from KMD (idempotently creating and funding the account) + +**`Deprecated`** + +use mnemonicAccountFromEnvironment instead +Returns an Algorand account with private key loaded by convention based on the given name identifier. + +Note: This function expects to run in a Node.js environment. + +**`Example`** + +Default + +If you have a mnemonic secret loaded into `process.env.ACCOUNT_MNEMONIC` then you can call the following to get that private key loaded into an account object: +```typescript +const account = await getAccount({config: getAccountConfigFromEnvironment('ACCOUNT')}, algod) +``` + +If that code runs against LocalNet then a wallet called `ACCOUNT` will automatically be created with an account that is automatically funded with 1000 (default) ALGOs from the default LocalNet dispenser. + +#### Defined in + +[src/account.ts:119](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/account.ts#L119) + +___ + +### getAccountAddressAsString + +▸ **getAccountAddressAsString**(`addressEncodedInB64`): `string` + +Returns the string address of an Algorand account from a base64 encoded version of the underlying byte array of the address public key + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `addressEncodedInB64` | `string` | The base64 encoded version of the underlying byte array of the address public key | + +#### Returns + +`string` + +#### Defined in + +[src/account.ts:270](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/account.ts#L270) + +___ + +### getAccountAddressAsUint8Array + +▸ **getAccountAddressAsUint8Array**(`account`): `Uint8Array` + +Returns an account's address as a byte array + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `account` | `string` \| [`SendTransactionFrom`](types_transaction.md#sendtransactionfrom) | Either an account (with private key loaded) or the string address of an account | + +#### Returns + +`Uint8Array` + +#### Defined in + +[src/account.ts:262](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/account.ts#L262) + +___ + +### getAccountConfigFromEnvironment + +▸ **getAccountConfigFromEnvironment**(`accountName`): [`AccountConfig`](../interfaces/types_account.AccountConfig.md) + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `accountName` | `string` | account name | + +#### Returns + +[`AccountConfig`](../interfaces/types_account.AccountConfig.md) + +**`Deprecated`** + +Use algokit.mnemonicAccountFromEnvironment, which doesn't need this function +Returns the Account configuration from environment variables + +**`Example`** + +```ts +environment variables +{accountName}_MNEMONIC +{accountName}_SENDER +``` + +#### Defined in + +[src/account.ts:298](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/account.ts#L298) + +___ + +### getAlgoClient + +▸ **getAlgoClient**(`config?`): `Algodv2` + +Returns an algod SDK client that automatically retries on idempotent calls + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `config?` | [`AlgoClientConfig`](../interfaces/types_network_client.AlgoClientConfig.md) | The config if you want to override the default (getting config from process.env) | + +#### Returns + +`Algodv2` + +**`Example`** + +Default (load from environment variables) + + ```typescript + // Uses process.env.ALGOD_SERVER, process.env.ALGOD_PORT and process.env.ALGOD_TOKEN + // Automatically detects if you are using PureStake to switch in the right header name for ALGOD_TOKEN + const algod = getAlgoClient() + await algod.healthCheck().do() + ``` + +**`Example`** + +AlgoNode (testnet) +```typescript + const algod = getAlgoClient(getAlgoNodeConfig('testnet', 'algod')) + await algod.healthCheck().do() +``` + +**`Example`** + +AlgoNode (mainnet) +```typescript + const algod = getAlgoClient(getAlgoNodeConfig('mainnet', 'algod')) + await algod.healthCheck().do() +``` + +**`Example`** + +Custom (e.g. default LocalNet, although we recommend loading this into a .env and using the Default option instead) +```typescript + const algod = getAlgoClient({server: 'http://localhost', port: '4001', token: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'}) + await algod.healthCheck().do() +``` + +#### Defined in + +[src/network-client.ts:126](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/network-client.ts#L126) + +___ + +### getAlgoIndexerClient + +▸ **getAlgoIndexerClient**(`config?`): `Indexer` + +Returns an indexer SDK client that automatically retries on idempotent calls + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `config?` | [`AlgoClientConfig`](../interfaces/types_network_client.AlgoClientConfig.md) | The config if you want to override the default (getting config from process.env) | + +#### Returns + +`Indexer` + +**`Example`** + +Default (load from environment variables) + + ```typescript + // Uses process.env.INDEXER_SERVER, process.env.INDEXER_PORT and process.env.INDEXER_TOKEN + // Automatically detects if you are using PureStake to switch in the right header name for INDEXER_TOKEN + const indexer = getAlgoIndexerClient() + await indexer.makeHealthCheck().do() + ``` + +**`Example`** + +AlgoNode (testnet) +```typescript + const indexer = getAlgoIndexerClient(getAlgoNodeConfig('testnet', 'indexer')) + await indexer.makeHealthCheck().do() +``` + +**`Example`** + +AlgoNode (mainnet) +```typescript + const indexer = getAlgoIndexerClient(getAlgoNodeConfig('mainnet', 'indexer')) + await indexer.makeHealthCheck().do() +``` + +**`Example`** + +Custom (e.g. default LocalNet, although we recommend loading this into a .env and using the Default option instead) +```typescript + const indexer = getAlgoIndexerClient({server: 'http://localhost', port: '8980', token: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'}) + await indexer.makeHealthCheck().do() +``` + +#### Defined in + +[src/network-client.ts:159](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/network-client.ts#L159) + +___ + +### getAlgoKmdClient + +▸ **getAlgoKmdClient**(`config?`): `Kmd` + +Returns a KMD SDK client that automatically retries on idempotent calls + +KMD client allows you to export private keys, which is useful to get the default account in a LocalNet network. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `config?` | [`AlgoClientConfig`](../interfaces/types_network_client.AlgoClientConfig.md) | The config if you want to override the default (getting config from process.env) | + +#### Returns + +`Kmd` + +**`Example`** + +Default (load from environment variables) + + ```typescript + // Uses process.env.ALGOD_SERVER, process.env.KMD_PORT (or if not specified: port 4002) and process.env.ALGOD_TOKEN + const kmd = getAlgoKmdClient() + ``` + +**`Example`** + +Custom (e.g. default LocalNet, although we recommend loading this into a .env and using the Default option instead) +```typescript + const kmd = getAlgoKmdClient({server: 'http://localhost', port: '4002', token: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'}) +``` + +#### Defined in + +[src/network-client.ts:182](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/network-client.ts#L182) + +___ + +### getAlgoNodeConfig + +▸ **getAlgoNodeConfig**(`network`, `config`): [`AlgoClientConfig`](../interfaces/types_network_client.AlgoClientConfig.md) + +Returns the Algorand configuration to point to the AlgoNode service + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `network` | ``"testnet"`` \| ``"mainnet"`` | Which network to connect to - TestNet or MainNet | +| `config` | ``"algod"`` \| ``"indexer"`` | Which algod config to return - Algod or Indexer | + +#### Returns + +[`AlgoClientConfig`](../interfaces/types_network_client.AlgoClientConfig.md) + +#### Defined in + +[src/network-client.ts:72](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/network-client.ts#L72) + +___ + +### getAlgodConfigFromEnvironment + +▸ **getAlgodConfigFromEnvironment**(): [`AlgoClientConfig`](../interfaces/types_network_client.AlgoClientConfig.md) + +Retrieve the algod configuration from environment variables (expects to be called from a Node.js environment not algod-side) + +#### Returns + +[`AlgoClientConfig`](../interfaces/types_network_client.AlgoClientConfig.md) + +#### Defined in + +[src/network-client.ts:34](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/network-client.ts#L34) + +___ + +### getAppArgsForABICall + +▸ **getAppArgsForABICall**(`args`, `from`): `Promise`<{ `appAccounts`: `undefined` \| `string`[] ; `appForeignApps`: `undefined` \| `number`[] = args.apps; `appForeignAssets`: `undefined` \| `number`[] = args.assets; `boxes`: `undefined` \| `BoxReference`[] ; `lease`: `undefined` \| `Uint8Array` ; `method`: `ABIMethod` ; `methodArgs`: (`string` \| `number` \| `bigint` \| `boolean` \| `Uint8Array` \| `ABIValue`[] \| `TransactionWithSigner`)[] = methodArgs; `rekeyTo`: `undefined` = undefined; `sender`: `string` ; `signer`: `TransactionSigner` = signer }\> + +Returns the app args ready to load onto an ABI method call in `AtomicTransactionComposer` + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `args` | [`ABIAppCallArgs`](types_app.md#abiappcallargs) | The ABI app call args | +| `from` | [`SendTransactionFrom`](types_transaction.md#sendtransactionfrom) | The transaction signer | + +#### Returns + +`Promise`<{ `appAccounts`: `undefined` \| `string`[] ; `appForeignApps`: `undefined` \| `number`[] = args.apps; `appForeignAssets`: `undefined` \| `number`[] = args.assets; `boxes`: `undefined` \| `BoxReference`[] ; `lease`: `undefined` \| `Uint8Array` ; `method`: `ABIMethod` ; `methodArgs`: (`string` \| `number` \| `bigint` \| `boolean` \| `Uint8Array` \| `ABIValue`[] \| `TransactionWithSigner`)[] = methodArgs; `rekeyTo`: `undefined` = undefined; `sender`: `string` ; `signer`: `TransactionSigner` = signer }\> + +The parameters ready to pass into `addMethodCall` within AtomicTransactionComposer + +#### Defined in + +[src/app.ts:589](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app.ts#L589) + +___ + +### getAppArgsForTransaction + +▸ **getAppArgsForTransaction**(`args?`): `undefined` \| { `accounts`: `undefined` \| `string`[] ; `appArgs`: `undefined` \| `Uint8Array`[] ; `boxes`: `undefined` \| `BoxReference`[] ; `foreignApps`: `undefined` \| `number`[] = args.apps; `foreignAssets`: `undefined` \| `number`[] = args.assets; `lease`: `undefined` \| `Uint8Array` } + +Returns the app args ready to load onto an app `Transaction` object + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `args?` | [`RawAppCallArgs`](../interfaces/types_app.RawAppCallArgs.md) | The app call args | + +#### Returns + +`undefined` \| { `accounts`: `undefined` \| `string`[] ; `appArgs`: `undefined` \| `Uint8Array`[] ; `boxes`: `undefined` \| `BoxReference`[] ; `foreignApps`: `undefined` \| `number`[] = args.apps; `foreignAssets`: `undefined` \| `number`[] = args.assets; `lease`: `undefined` \| `Uint8Array` } + +The args ready to load into a `Transaction` + +#### Defined in + +[src/app.ts:569](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app.ts#L569) + +___ + +### getAppBoxNames + +▸ **getAppBoxNames**(`appId`, `algod`): `Promise`<[`BoxName`](../interfaces/types_app.BoxName.md)[]\> + +Returns the names of the boxes for the given app. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `appId` | `number` \| `bigint` | The ID of the app return box names for | +| `algod` | `default` | An algod client instance | + +#### Returns + +`Promise`<[`BoxName`](../interfaces/types_app.BoxName.md)[]\> + +The current box names + +#### Defined in + +[src/app.ts:458](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app.ts#L458) + +___ + +### getAppBoxValue + +▸ **getAppBoxValue**(`appId`, `boxName`, `algod`): `Promise`<`Uint8Array`\> + +Returns the value of the given box name for the given app. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `appId` | `number` \| `bigint` | The ID of the app return box names for | +| `boxName` | `string` \| `Uint8Array` \| [`BoxName`](../interfaces/types_app.BoxName.md) | The name of the box to return either as a string, binary array or `BoxName` | +| `algod` | `default` | An algod client instance | + +#### Returns + +`Promise`<`Uint8Array`\> + +The current box value as a byte array + +#### Defined in + +[src/app.ts:476](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app.ts#L476) + +___ + +### getAppBoxValueFromABIType + +▸ **getAppBoxValueFromABIType**(`request`, `algod`): `Promise`<`ABIValue`\> + +Returns the value of the given box name for the given app decoded based on the given ABI type. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `request` | [`BoxValueRequestParams`](../interfaces/types_app.BoxValueRequestParams.md) | The parameters for the box value request | +| `algod` | `default` | An algod client instance | + +#### Returns + +`Promise`<`ABIValue`\> + +The current box value as an ABI value + +#### Defined in + +[src/app.ts:499](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app.ts#L499) + +___ + +### getAppBoxValues + +▸ **getAppBoxValues**(`appId`, `boxNames`, `algod`): `Promise`<`Uint8Array`[]\> + +Returns the value of the given box names for the given app. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `appId` | `number` | The ID of the app return box names for | +| `boxNames` | (`string` \| `Uint8Array` \| [`BoxName`](../interfaces/types_app.BoxName.md))[] | The names of the boxes to return either as a string, binary array or `BoxName` | +| `algod` | `default` | An algod client instance | + +#### Returns + +`Promise`<`Uint8Array`[]\> + +The current box values as a byte array in the same order as the passed in box names + +#### Defined in + +[src/app.ts:489](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app.ts#L489) + +___ + +### getAppBoxValuesFromABIType + +▸ **getAppBoxValuesFromABIType**(`request`, `algod`): `Promise`<`ABIValue`[]\> + +Returns the value of the given box names for the given app decoded based on the given ABI type. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `request` | [`BoxValuesRequestParams`](../interfaces/types_app.BoxValuesRequestParams.md) | The parameters for the box value request | +| `algod` | `default` | An algod client instance | + +#### Returns + +`Promise`<`ABIValue`[]\> + +The current box values as an ABI value in the same order as the passed in box names + +#### Defined in + +[src/app.ts:511](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app.ts#L511) + +___ + +### getAppById + +▸ **getAppById**(`appId`, `algod`): `Promise`<`Application`\> + +Gets the current data for the given app from algod. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `appId` | `number` \| `bigint` | The id of the app | +| `algod` | `default` | An algod client | + +#### Returns + +`Promise`<`Application`\> + +The data about the app + +#### Defined in + +[src/app.ts:661](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app.ts#L661) + +___ + +### getAppClient + +▸ **getAppClient**(`appDetails`, `algod`): [`ApplicationClient`](../classes/types_app_client.ApplicationClient.md) + +Create a new ApplicationClient instance + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `appDetails` | [`AppSpecAppDetails`](types_app_client.md#appspecappdetails) | The details of the app | +| `algod` | `default` | An algod instance | + +#### Returns + +[`ApplicationClient`](../classes/types_app_client.ApplicationClient.md) + +The application client + +**`Example`** + +```ts +Resolve by creator and name +const client = algokit.getAppClient( + { + resolveBy: 'creatorAndName', + app: {appSpec}, + sender: {account}, + creatorAddress: {creator}, + findExistingUsing: indexerClient, + }, + algodClient, + ) +``` + +**`Example`** + +```ts +Resolve by id: +const client = algokit.getAppClient( + { + resolveBy: 'id', + app: {appSpec}, + sender: {account}, + id: {id}, + }, + algodClient, +) +``` + +#### Defined in + +[src/app-client.ts:34](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app-client.ts#L34) + +___ + +### getAppClientByCreatorAndName + +▸ **getAppClientByCreatorAndName**(`appDetails`, `algod`): [`ApplicationClient`](../classes/types_app_client.ApplicationClient.md) + +Create a new ApplicationClient instance by creator and name + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `appDetails` | [`AppSpecAppDetailsByCreatorAndName`](types_app_client.md#appspecappdetailsbycreatorandname) | The details of the app by creator and name | +| `algod` | `default` | An algod instance | + +#### Returns + +[`ApplicationClient`](../classes/types_app_client.ApplicationClient.md) + +The application client + +**`Example`** + +```ts +const client = algokit.getAppClientByCreatorAndName( + { + app: {appSpec}, + sender: {account}, + creatorAddress: {account.addr}, + findExistingUsing: {indexerClient}, + }, + algodClient, + ) +``` + +#### Defined in + +[src/app-client.ts:77](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app-client.ts#L77) + +___ + +### getAppClientById + +▸ **getAppClientById**(`appDetails`, `algod`): [`ApplicationClient`](../classes/types_app_client.ApplicationClient.md) + +Create a new ApplicationClient instance by id + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `appDetails` | [`AppSpecAppDetailsById`](types_app_client.md#appspecappdetailsbyid) | The details of the app | +| `algod` | `default` | An algod instance | + +#### Returns + +[`ApplicationClient`](../classes/types_app_client.ApplicationClient.md) + +The application client + +**`Example`** + +```ts +const client = algokit.getAppClientById( + { + app: {appSpec}, + sender: {account}, + id: {id}, + }, + algodClient, + ) +``` + +#### Defined in + +[src/app-client.ts:55](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app-client.ts#L55) + +___ + +### getAppDeploymentTransactionNote + +▸ **getAppDeploymentTransactionNote**(`metadata`): [`Arc2TransactionNote`](types_transaction.md#arc2transactionnote) + +Return the transaction note for an app deployment. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `metadata` | [`AppDeployMetadata`](../interfaces/types_app.AppDeployMetadata.md) | The metadata of the deployment | + +#### Returns + +[`Arc2TransactionNote`](types_transaction.md#arc2transactionnote) + +The transaction note as a utf-8 string + +#### Defined in + +[src/app-deploy.ts:528](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app-deploy.ts#L528) + +___ + +### getAppGlobalState + +▸ **getAppGlobalState**(`appId`, `algod`): `Promise`<[`AppState`](../interfaces/types_app.AppState.md)\> + +Returns the current global state values for the given app ID + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `appId` | `number` \| `bigint` | The ID of the app return global state for | +| `algod` | `default` | An algod client instance | + +#### Returns + +`Promise`<[`AppState`](../interfaces/types_app.AppState.md)\> + +The current global state + +#### Defined in + +[src/app.ts:422](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app.ts#L422) + +___ + +### getAppLocalState + +▸ **getAppLocalState**(`appId`, `account`, `algod`): `Promise`<[`AppState`](../interfaces/types_app.AppState.md)\> + +Returns the current global state values for the given app ID and account + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `appId` | `number` \| `bigint` | The ID of the app return global state for | +| `account` | `string` \| [`SendTransactionFrom`](types_transaction.md#sendtransactionfrom) | Either the string address of an account or an account object for the account to get local state for the given app | +| `algod` | `default` | An algod client instance | + +#### Returns + +`Promise`<[`AppState`](../interfaces/types_app.AppState.md)\> + +The current local state for the given (app, account) combination + +#### Defined in + +[src/app.ts:439](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app.ts#L439) + +___ + +### getAppOnCompleteAction + +▸ **getAppOnCompleteAction**(`onCompletionAction?`): `OnApplicationComplete` + +Returns an `algosdk.OnApplicationComplete` for the given onCompleteAction. + +If given `undefined` will return `OnApplicationComplete.NoOpOC`. + +If given an `AppCallType` will convert the string enum to the correct underlying `algosdk.OnApplicationComplete`. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `onCompletionAction?` | [`AppCallType`](types_app.md#appcalltype) \| `OnApplicationComplete` | The on completion action | + +#### Returns + +`OnApplicationComplete` + +The `algosdk.OnApplicationComplete` + +#### Defined in + +[src/app.ts:275](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app.ts#L275) + +___ + +### getAtomicTransactionComposerTransactions + +▸ **getAtomicTransactionComposerTransactions**(`atc`): `TransactionWithSigner`[] + +Returns the array of transactions currently present in the given `AtomicTransactionComposer` + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `atc` | `AtomicTransactionComposer` | The atomic transaction composer | + +#### Returns + +`TransactionWithSigner`[] + +The array of transactions with signers + +#### Defined in + +[src/transaction.ts:452](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction.ts#L452) + +___ + +### getBoxReference + +▸ **getBoxReference**(`box`): `algosdk.BoxReference` + +Returns a `algosdk.BoxReference` given a `BoxIdentifier` or `BoxReference`. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `box` | [`BoxReference`](../interfaces/types_app.BoxReference.md) \| [`BoxIdentifier`](types_app.md#boxidentifier) \| `BoxReference` | The box to return a reference for | + +#### Returns + +`algosdk.BoxReference` + +The box reference ready to pass into a `Transaction` + +#### Defined in + +[src/app.ts:631](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app.ts#L631) + +___ + +### getConfigFromEnvOrDefaults + +▸ **getConfigFromEnvOrDefaults**(): [`AlgoConfig`](../interfaces/types_network_client.AlgoConfig.md) + +Retrieve configurations from environment variables when defined or get defaults (expects to be called from a Node.js environment not algod-side) + +#### Returns + +[`AlgoConfig`](../interfaces/types_network_client.AlgoConfig.md) + +#### Defined in + +[src/network-client.ts:7](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/network-client.ts#L7) + +___ + +### getCreatorAppsByName + +▸ **getCreatorAppsByName**(`creatorAccount`, `indexer`): `Promise`<[`AppLookup`](../interfaces/types_app.AppLookup.md)\> + +Returns a lookup of name => app metadata (id, address, ...metadata) for all apps created by the given account that have an `AppDeployNote` in the transaction note of the creation transaction. + +**Note:** It's recommended this is only called once and then stored since it's a somewhat expensive operation (multiple indexer calls). + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `creatorAccount` | `string` \| [`SendTransactionFrom`](types_transaction.md#sendtransactionfrom) | The account (with private key loaded) or string address of an account that is the creator of the apps you want to search for | +| `indexer` | `default` | An indexer client | + +#### Returns + +`Promise`<[`AppLookup`](../interfaces/types_app.AppLookup.md)\> + +A name-based lookup of the app information (id, address) + +#### Defined in + +[src/app-deploy.ts:421](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app-deploy.ts#L421) + +___ + +### getDefaultLocalNetConfig + +▸ **getDefaultLocalNetConfig**(`configOrPort`): [`AlgoClientConfig`](../interfaces/types_network_client.AlgoClientConfig.md) + +Returns the Algorand configuration to point to the default LocalNet + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `configOrPort` | `number` \| ``"algod"`` \| ``"indexer"`` \| ``"kmd"`` | Which algod config to return - algod, kmd, or indexer OR a port number | + +#### Returns + +[`AlgoClientConfig`](../interfaces/types_network_client.AlgoClientConfig.md) + +#### Defined in + +[src/network-client.ts:83](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/network-client.ts#L83) + +___ + +### getDispenserAccount + +▸ **getDispenserAccount**(`algod`, `kmd?`): `Promise`<`default` \| [`SigningAccount`](../classes/types_account.SigningAccount.md)\> + +Returns an account (with private key loaded) that can act as a dispenser + +If running on LocalNet then it will return the default dispenser account automatically, + otherwise it will load the account mnemonic stored in process.env.DISPENSER_MNEMONIC + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `algod` | `default` | An algod client | +| `kmd?` | `default` | A KMD client, if not specified then a default KMD client will be loaded from environment variables | + +#### Returns + +`Promise`<`default` \| [`SigningAccount`](../classes/types_account.SigningAccount.md)\> + +#### Defined in + +[src/account.ts:282](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/account.ts#L282) + +___ + +### getIndexerConfigFromEnvironment + +▸ **getIndexerConfigFromEnvironment**(): [`AlgoClientConfig`](../interfaces/types_network_client.AlgoClientConfig.md) + +Retrieve the indexer configuration from environment variables (expects to be called from a Node.js environment not algod-side) + +#### Returns + +[`AlgoClientConfig`](../interfaces/types_network_client.AlgoClientConfig.md) + +#### Defined in + +[src/network-client.ts:51](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/network-client.ts#L51) + +___ + +### getKmdWalletAccount + +▸ **getKmdWalletAccount**(`walletAccount`, `algod`, `kmdClient?`): `Promise`<`Account` \| `undefined`\> + +Returns an Algorand account with private key loaded from the given KMD wallet (identified by name). + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `walletAccount` | `Object` | The details of the wallet, with: * `name`: The name of the wallet to retrieve an account from * `predicate`: An optional filter to use to find the account (otherwise it will return a random account from the wallet) | +| `walletAccount.name` | `string` | - | +| `walletAccount.predicate?` | (`account`: `Record`<`string`, `any`\>) => `boolean` | - | +| `algod` | `default` | An algod client | +| `kmdClient?` | `default` | A KMD client, if not specified then a default KMD client will be loaded from environment variables | + +#### Returns + +`Promise`<`Account` \| `undefined`\> + +**`Example`** + +Get default funded account in a LocalNet + +```typescript +const defaultDispenserAccount = await getKmdWalletAccount(algod, + 'unencrypted-default-wallet', + a => a.status !== 'Offline' && a.amount > 1_000_000_000 +) +``` + +#### Defined in + +[src/localnet.ts:90](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/localnet.ts#L90) + +___ + +### getLocalNetDispenserAccount + +▸ **getLocalNetDispenserAccount**(`algod`, `kmd?`): `Promise`<`Account`\> + +Returns an Algorand account with private key loaded for the default LocalNet dispenser account (that can be used to fund other accounts) + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `algod` | `default` | An algod client | +| `kmd?` | `default` | A KMD client, if not specified then a default KMD client will be loaded from environment variables | + +#### Returns + +`Promise`<`Account`\> + +#### Defined in + +[src/localnet.ts:141](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/localnet.ts#L141) + +___ + +### getOrCreateKmdWalletAccount + +▸ **getOrCreateKmdWalletAccount**(`walletAccount`, `algod`, `kmdClient?`): `Promise`<`Account`\> + +Gets an account with private key loaded from a KMD wallet of the given name, or alternatively creates one with funds in it via a KMD wallet of the given name. + +This is useful to get idempotent accounts from LocalNet without having to specify the private key (which will change when resetting the LocalNet). + +This significantly speeds up local dev time and improves experience since you can write code that *just works* first go without manual config in a fresh LocalNet. + +If this is used via `mnemonicAccountFromEnvironment`, then you can even use the same code that runs on production without changes for local development! + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `walletAccount` | `Object` | The wallet details with: * `name`: The name of the wallet to retrieve / create * `fundWith`: The number of Algos to fund the account with when it gets created, if not specified then 1000 Algos will be funded from the dispenser account | +| `walletAccount.fundWith?` | [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) | - | +| `walletAccount.name` | `string` | - | +| `algod` | `default` | An algod client | +| `kmdClient?` | `default` | A KMD client, if not specified then a default KMD client will be loaded from environment variables | + +#### Returns + +`Promise`<`Account`\> + +An Algorand account with private key loaded - either one that already existed in the given KMD wallet, or a new one that is funded for you + +#### Defined in + +[src/localnet.ts:32](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/localnet.ts#L32) + +___ + +### getSenderAddress + +▸ **getSenderAddress**(`sender`): `string` + +Returns the public address of the given transaction sender. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `sender` | [`SendTransactionFrom`](types_transaction.md#sendtransactionfrom) | A transaction sender | + +#### Returns + +`string` + +The public address + +#### Defined in + +[src/transaction.ts:59](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction.ts#L59) + +___ + +### getSenderTransactionSigner + +▸ **getSenderTransactionSigner**(`val`): `TransactionSigner` + +Returns a `TransactionSigner` for the given transaction sender. +This function has memoization, so will return the same transaction signer for a given sender. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `val` | [`SendTransactionFrom`](types_transaction.md#sendtransactionfrom) | + +#### Returns + +`TransactionSigner` + +A transaction signer + +#### Defined in + +[src/transaction.ts:69](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction.ts#L69) + +___ + +### getTransactionParams + +▸ **getTransactionParams**(`params`, `algod`): `Promise`<`SuggestedParamsWithMinFee` \| { `fee`: `number` ; `firstRound`: `number` ; `flatFee?`: `boolean` ; `genesisHash`: `string` ; `genesisID`: `string` ; `lastRound`: `number` }\> + +Returns suggested transaction parameters from algod unless some are already provided. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `params` | `undefined` \| `SuggestedParams` | Optionally provide parameters to use | +| `algod` | `default` | Algod algod | + +#### Returns + +`Promise`<`SuggestedParamsWithMinFee` \| { `fee`: `number` ; `firstRound`: `number` ; `flatFee?`: `boolean` ; `genesisHash`: `string` ; `genesisID`: `string` ; `lastRound`: `number` }\> + +The suggested transaction parameters + +#### Defined in + +[src/transaction.ts:443](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction.ts#L443) + +___ + +### getTransactionWithSigner + +▸ **getTransactionWithSigner**(`transaction`, `defaultSender?`): `Promise`<`TransactionWithSigner`\> + +Given a transaction in a variety of supported formats, returns a TransactionWithSigner object ready to be passed to an +AtomicTransactionComposer's addTransaction method. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `transaction` | `Transaction` \| [`TransactionToSign`](../interfaces/types_transaction.TransactionToSign.md) \| `Promise`<[`SendTransactionResult`](../interfaces/types_transaction.SendTransactionResult.md)\> \| `TransactionWithSigner` | One of: A TransactionWithSigner object (returned as is), a TransactionToSign object (signer is obtained from the signer property), a Transaction object (signer is extracted from the defaultSender parameter), an async SendTransactionResult returned by one of algokit utils' helpers (signer is obtained from the defaultSender parameter) | +| `defaultSender?` | [`SendTransactionFrom`](types_transaction.md#sendtransactionfrom) | The default sender to be used to obtain a signer where the object provided to the transaction parameter does not include a signer. | + +#### Returns + +`Promise`<`TransactionWithSigner`\> + +A TransactionWithSigner object. + +#### Defined in + +[src/transaction.ts:82](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction.ts#L82) + +___ + +### isLocalNet + +▸ **isLocalNet**(`algod`): `Promise`<`boolean`\> + +Returns true if the algod client is pointing to a LocalNet Algorand network + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `algod` | `default` | + +#### Returns + +`Promise`<`boolean`\> + +#### Defined in + +[src/localnet.ts:9](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/localnet.ts#L9) + +___ + +### isMainNet + +▸ **isMainNet**(`algod`): `Promise`<`boolean`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `algod` | `default` | + +#### Returns + +`Promise`<`boolean`\> + +#### Defined in + +[src/network-client.ts:193](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/network-client.ts#L193) + +___ + +### isSchemaIsBroken + +▸ **isSchemaIsBroken**(`before`, `after`): `boolean` + +Returns true is there is a breaking change in the application state schema from before to after. + i.e. if the schema becomes larger, since applications can't ask for more schema after creation. + Otherwise, there is no error, the app just doesn't store data in the extra schema :( + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `before` | `ApplicationStateSchema` | The existing schema | +| `after` | `ApplicationStateSchema` | The new schema | + +#### Returns + +`boolean` + +Whether or not there is a breaking change + +#### Defined in + +[src/app-deploy.ts:408](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app-deploy.ts#L408) + +___ + +### isTestNet + +▸ **isTestNet**(`algod`): `Promise`<`boolean`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `algod` | `default` | + +#### Returns + +`Promise`<`boolean`\> + +#### Defined in + +[src/network-client.ts:189](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/network-client.ts#L189) + +___ + +### lookupAccountByAddress + +▸ **lookupAccountByAddress**(`accountAddress`, `indexer`): `Promise`<[`AccountLookupResult`](../interfaces/types_indexer.AccountLookupResult.md)\> + +Looks up an account by address using Indexer. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `accountAddress` | `string` | - | +| `indexer` | `default` | An indexer client | + +#### Returns + +`Promise`<[`AccountLookupResult`](../interfaces/types_indexer.AccountLookupResult.md)\> + +The result of the look-up + +#### Defined in + +[src/indexer-lookup.ts:29](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/indexer-lookup.ts#L29) + +___ + +### lookupAccountCreatedApplicationByAddress + +▸ **lookupAccountCreatedApplicationByAddress**(`indexer`, `address`, `getAll?`, `paginationLimit?`): `Promise`<[`ApplicationResult`](../interfaces/types_indexer.ApplicationResult.md)[]\> + +Looks up applications that were created by the given address. + +#### Parameters + +| Name | Type | Default value | Description | +| :------ | :------ | :------ | :------ | +| `indexer` | `default` | `undefined` | An indexer instance | +| `address` | `string` | `undefined` | The address of the creator to look up | +| `getAll` | `undefined` \| `boolean` | `undefined` | Whether or not to include deleted applications | +| `paginationLimit?` | `number` | `undefined` | The number of records to return per paginated request, default 1000 | + +#### Returns + +`Promise`<[`ApplicationResult`](../interfaces/types_indexer.ApplicationResult.md)[]\> + +The list of application results + +#### Defined in + +[src/indexer-lookup.ts:41](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/indexer-lookup.ts#L41) + +___ + +### lookupTransactionById + +▸ **lookupTransactionById**(`transactionId`, `indexer`): `Promise`<[`TransactionLookupResult`](../interfaces/types_indexer.TransactionLookupResult.md)\> + +Looks up a transaction by ID using Indexer. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `transactionId` | `string` | The ID of the transaction to look up | +| `indexer` | `default` | An indexer client | + +#### Returns + +`Promise`<[`TransactionLookupResult`](../interfaces/types_indexer.TransactionLookupResult.md)\> + +The result of the look-up + +#### Defined in + +[src/indexer-lookup.ts:19](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/indexer-lookup.ts#L19) + +___ + +### microAlgos + +▸ **microAlgos**(`microAlgos`): [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) + +Returns an amount of µAlgos using AlgoAmount + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `microAlgos` | `number` | The amount in µAlgos | + +#### Returns + +[`AlgoAmount`](../classes/types_amount.AlgoAmount.md) + +#### Defined in + +[src/amount.ts:29](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/amount.ts#L29) + +___ + +### mnemonicAccount + +▸ **mnemonicAccount**(`mnemonicSecret`): `Account` + +Returns an Algorand account with secret key loaded (i.e. that can sign transactions) by taking the mnemonic secret. + +This is a wrapper around algosdk.mnemonicToSecretKey to provide a more friendly/obvious name. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `mnemonicSecret` | `string` | The mnemonic secret representing the private key of an account; **Note: Be careful how the mnemonic is handled**, never commit it into source control and ideally load it from the environment (ideally via a secret storage service) rather than the file system. | + +#### Returns + +`Account` + +#### Defined in + +[src/account.ts:47](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/account.ts#L47) + +___ + +### mnemonicAccountFromEnvironment + +▸ **mnemonicAccountFromEnvironment**(`account`, `algod`, `kmdClient?`): `Promise`<`Account` \| [`SigningAccount`](../classes/types_account.SigningAccount.md)\> + +Returns an Algorand account with private key loaded by convention from environment variables based on the given name identifier. + +Note: This function expects to run in a Node.js environment. + +## Convention: +* **Non-LocalNet:** will load process.env['{NAME}_MNEMONIC'] as a mnemonic secret; **Note: Be careful how the mnemonic is handled**, + never commit it into source control and ideally load it via a secret storage service rather than the file system. + If process.env['{NAME}_SENDER'] is defined then it will use that for the sender address (i.e. to support rekeyed accounts) +* **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 + +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). + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `account` | `string` \| { `fundWith?`: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) ; `name`: `string` } | The details of the account to get, either the name identifier (string) or an object with: * `name`: string: The name identifier of the account * `fundWith`: The amount to fund the account with when it gets created (when targeting LocalNet), if not specified then 1000 Algos will be funded from the dispenser account | +| `algod` | `default` | An algod client | +| `kmdClient?` | `default` | An optional KMD client to use to create an account (when targeting LocalNet), if not specified then a default KMD client will be loaded from environment variables | + +#### Returns + +`Promise`<`Account` \| [`SigningAccount`](../classes/types_account.SigningAccount.md)\> + +The requested account with private key loaded from the environment variables or when targeting LocalNet from KMD (idempotently creating and funding the account) + +**`Example`** + +Default + +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: +```typescript +const account = await mnemonicAccountFromEnvironment('MY_ACCOUNT', algod) +``` + +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) ALGOs from the default LocalNet dispenser. +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. + +#### Defined in + +[src/account.ts:230](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/account.ts#L230) + +___ + +### multisigAccount + +▸ **multisigAccount**(`multisigParams`, `signingAccounts`): [`MultisigAccount`](../classes/types_account.MultisigAccount.md) + +Returns an account wrapper that supports partial or full multisig signing. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `multisigParams` | `MultisigMetadata` | The parameters that define the multisig account | +| `signingAccounts` | (`default` \| [`SigningAccount`](../classes/types_account.SigningAccount.md))[] | The signers that are currently present | + +#### Returns + +[`MultisigAccount`](../classes/types_account.MultisigAccount.md) + +A multisig account wrapper + +#### Defined in + +[src/account.ts:16](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/account.ts#L16) + +___ + +### performAtomicTransactionComposerDryrun + +▸ **performAtomicTransactionComposerDryrun**(`atc`, `algod`): `Promise`<`DryrunResult`\> + +Performs a dry run of the transactions loaded into the given AtomicTransactionComposer` +@param atc The AtomicTransactionComposer` with transaction(s) loaded + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `atc` | `AtomicTransactionComposer` | - | +| `algod` | `default` | An Algod client | + +#### Returns + +`Promise`<`DryrunResult`\> + +The dryrun result + +#### Defined in + +[src/transaction.ts:277](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction.ts#L277) + +___ + +### performTemplateSubstitution + +▸ **performTemplateSubstitution**(`tealCode`, `templateParams?`): `string` + +Performs template substitution of a teal file. + +Looks for `TMPL_{parameter}` for template replacements. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `tealCode` | `string` | The TEAL logic to compile | +| `templateParams?` | [`TealTemplateParams`](../interfaces/types_app.TealTemplateParams.md) | Any parameters to replace in the .teal file before compiling | + +#### Returns + +`string` + +The TEAL code with replacements + +#### Defined in + +[src/app-deploy.ts:580](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app-deploy.ts#L580) + +___ + +### performTemplateSubstitutionAndCompile + +▸ **performTemplateSubstitutionAndCompile**(`tealCode`, `algod`, `templateParams?`, `deploymentMetadata?`): `Promise`<[`CompiledTeal`](../interfaces/types_app.CompiledTeal.md)\> + +Performs template substitution of a teal file and compiles it, returning the compiled result. + +Looks for `TMPL_{parameter}` for template replacements. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `tealCode` | `string` | The TEAL logic to compile | +| `algod` | `default` | An algod client | +| `templateParams?` | [`TealTemplateParams`](../interfaces/types_app.TealTemplateParams.md) | Any parameters to replace in the .teal file before compiling | +| `deploymentMetadata?` | [`AppDeployMetadata`](../interfaces/types_app.AppDeployMetadata.md) | The deployment metadata the app will be deployed with | + +#### Returns + +`Promise`<[`CompiledTeal`](../interfaces/types_app.CompiledTeal.md)\> + +The information about the compiled code + +#### Defined in + +[src/app-deploy.ts:610](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app-deploy.ts#L610) + +___ + +### randomAccount + +▸ **randomAccount**(): `Account` + +Returns a new, random Algorand account with secret key loaded. + +This is a wrapper around algosdk.generateAccount to provide a more friendly/obvious name. + +#### Returns + +`Account` + +#### Defined in + +[src/account.ts:57](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/account.ts#L57) + +___ + +### rekeyedAccount + +▸ **rekeyedAccount**(`signer`, `sender`): [`SigningAccount`](../classes/types_account.SigningAccount.md) + +Returns an account wrapper that supports a rekeyed account. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `signer` | `default` | The account, with private key loaded, that is signing | +| `sender` | `string` | The address of the rekeyed account that will act as a sender | + +#### Returns + +[`SigningAccount`](../classes/types_account.SigningAccount.md) + +The SigningAccount wrapper + +#### Defined in + +[src/account.ts:26](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/account.ts#L26) + +___ + +### replaceDeployTimeControlParams + +▸ **replaceDeployTimeControlParams**(`tealCode`, `params`): `string` + +Replaces deploy-time deployment control parameters within the given teal code. + +* `TMPL_UPDATABLE` for updatability / immutability control +* `TMPL_DELETABLE` for deletability / permanence control + +Note: If these values are not undefined, but the corresponding `TMPL_*` value + isn't in the teal code it will throw an exception. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `tealCode` | `string` | The TEAL code to substitute | +| `params` | `Object` | The deploy-time deployment control parameter value to replace | +| `params.deletable?` | `boolean` | - | +| `params.updatable?` | `boolean` | - | + +#### Returns + +`string` + +The replaced TEAL code + +#### Defined in + +[src/app-deploy.ts:549](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app-deploy.ts#L549) + +___ + +### searchTransactions + +▸ **searchTransactions**(`indexer`, `searchCriteria`, `paginationLimit?`): `Promise`<[`TransactionSearchResults`](../interfaces/types_indexer.TransactionSearchResults.md)\> + +Allows transactions to be searched for the given criteria. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `indexer` | `default` | An indexer client | +| `searchCriteria` | (`s`: `default`) => `default` | The criteria to search for | +| `paginationLimit?` | `number` | The number of records to return per paginated request, default 1000 | + +#### Returns + +`Promise`<[`TransactionSearchResults`](../interfaces/types_indexer.TransactionSearchResults.md)\> + +The search results + +#### Defined in + +[src/indexer-lookup.ts:74](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/indexer-lookup.ts#L74) + +___ + +### sendAtomicTransactionComposer + +▸ **sendAtomicTransactionComposer**(`atcSend`, `algod`): `Promise`<[`SendAtomicTransactionComposerResults`](../interfaces/types_transaction.SendAtomicTransactionComposerResults.md)\> + +Signs and sends transactions that have been collected by an `AtomicTransactionComposer`. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `atcSend` | [`AtomicTransactionComposerToSend`](../interfaces/types_transaction.AtomicTransactionComposerToSend.md) | The parameters controlling the send, including: * `atc` The `AtomicTransactionComposer` * `sendParams` The parameters to control the send behaviour | +| `algod` | `default` | An algod client | + +#### Returns + +`Promise`<[`SendAtomicTransactionComposerResults`](../interfaces/types_transaction.SendAtomicTransactionComposerResults.md)\> + +An object with transaction IDs, transactions, group transaction ID (`groupTransactionId`) if more than 1 transaction sent, and (if `skipWaiting` is `false` or unset) confirmation (`confirmation`) + +#### Defined in + +[src/transaction.ts:189](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction.ts#L189) + +___ + +### sendGroupOfTransactions + +▸ **sendGroupOfTransactions**(`groupSend`, `algod`): `Promise`<`Omit`<[`SendAtomicTransactionComposerResults`](../interfaces/types_transaction.SendAtomicTransactionComposerResults.md), ``"returns"``\>\> + +Signs and sends a group of [up to 16](https://developer.algorand.org/docs/get-details/atomic_transfers/#create-transactions) transactions to the chain + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `groupSend` | [`TransactionGroupToSend`](../interfaces/types_transaction.TransactionGroupToSend.md) | The group details to send, with: * `transactions`: The array of transactions to send along with their signing account * `sendParams`: The parameters to dictate how the group is sent | +| `algod` | `default` | An algod client | + +#### Returns + +`Promise`<`Omit`<[`SendAtomicTransactionComposerResults`](../interfaces/types_transaction.SendAtomicTransactionComposerResults.md), ``"returns"``\>\> + +An object with transaction IDs, transactions, group transaction ID (`groupTransactionId`) if more than 1 transaction sent, and (if `skipWaiting` is `false` or unset) confirmation (`confirmation`) + +#### Defined in + +[src/transaction.ts:295](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction.ts#L295) + +___ + +### sendTransaction + +▸ **sendTransaction**(`send`, `algod`): `Promise`<[`SendTransactionResult`](../interfaces/types_transaction.SendTransactionResult.md)\> + +Prepares a transaction for sending and then (if instructed) signs and sends the given transaction to the chain. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `send` | `Object` | The details for the transaction to prepare/send, including: * `transaction`: The unsigned transaction * `from`: The account to sign the transaction with: either an account with private key loaded or a logic signature account * `config`: The sending configuration for this transaction | +| `send.from` | [`SendTransactionFrom`](types_transaction.md#sendtransactionfrom) | - | +| `send.sendParams?` | [`SendTransactionParams`](../interfaces/types_transaction.SendTransactionParams.md) | - | +| `send.transaction` | `Transaction` | - | +| `algod` | `default` | An algod client | + +#### Returns + +`Promise`<[`SendTransactionResult`](../interfaces/types_transaction.SendTransactionResult.md)\> + +An object with transaction (`transaction`) and (if `skipWaiting` is `false` or `undefined`) confirmation (`confirmation`) + +#### Defined in + +[src/transaction.ts:145](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction.ts#L145) + +___ + +### signTransaction + +▸ **signTransaction**(`transaction`, `signer`): `Promise`<`Uint8Array`\> + +Signs a single transaction by the given signer. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `transaction` | `Transaction` | The transaction to sign | +| `signer` | [`SendTransactionFrom`](types_transaction.md#sendtransactionfrom) | The signer to sign | + +#### Returns + +`Promise`<`Uint8Array`\> + +The signed transaction as a `Uint8Array` + +#### Defined in + +[src/transaction.ts:125](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction.ts#L125) + +___ + +### stripTealComments + +▸ **stripTealComments**(`tealCode`): `string` + +Remove comments from TEAL Code + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `tealCode` | `string` | The TEAL logic to compile | + +#### Returns + +`string` + +The TEAL without comments + +#### Defined in + +[src/app-deploy.ts:633](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app-deploy.ts#L633) + +___ + +### transactionFees + +▸ **transactionFees**(`numberOfTransactions`): [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) + +Returns an amount of µAlgos to cover standard fees for the given number of transactions using AlgoAmount + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `numberOfTransactions` | `number` | The of standard transaction fees to return the amount of ALGOs | + +#### Returns + +[`AlgoAmount`](../classes/types_amount.AlgoAmount.md) + +#### Defined in + +[src/amount.ts:36](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/amount.ts#L36) + +___ + +### transactionSignerAccount + +▸ **transactionSignerAccount**(`signer`, `sender`): [`TransactionSignerAccount`](../interfaces/types_account.TransactionSignerAccount.md) + +Returns an account wrapper that supports a transaction signer with associated sender address. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `signer` | `TransactionSigner` | The transaction signer | +| `sender` | `string` | The address of sender account | + +#### Returns + +[`TransactionSignerAccount`](../interfaces/types_account.TransactionSignerAccount.md) + +The SigningAccount wrapper + +#### Defined in + +[src/account.ts:36](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/account.ts#L36) + +___ + +### transferAlgos + +▸ **transferAlgos**(`transfer`, `algod`): `Promise`<[`SendTransactionResult`](../interfaces/types_transaction.SendTransactionResult.md)\> + +Transfer ALGOs between two accounts. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `transfer` | [`AlgoTransferParams`](../interfaces/types_transfer.AlgoTransferParams.md) | The transfer definition | +| `algod` | `default` | An algod client | + +#### Returns + +`Promise`<[`SendTransactionResult`](../interfaces/types_transaction.SendTransactionResult.md)\> + +The transaction object and optionally the confirmation if it was sent to the chain (`skipSending` is `false` or unset) + +#### Defined in + +[src/transfer.ts:13](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transfer.ts#L13) + +___ + +### updateApp + +▸ **updateApp**(`update`, `algod`): `Promise`<`Partial`<[`AppCompilationResult`](../interfaces/types_app.AppCompilationResult.md)\> & [`AppCallTransactionResult`](../interfaces/types_app.AppCallTransactionResult.md)\> + +Updates a smart contract app. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `update` | [`UpdateAppParams`](../interfaces/types_app.UpdateAppParams.md) | The parameters to update the app with | +| `algod` | `default` | An algod client | + +#### Returns + +`Promise`<`Partial`<[`AppCompilationResult`](../interfaces/types_app.AppCompilationResult.md)\> & [`AppCallTransactionResult`](../interfaces/types_app.AppCallTransactionResult.md)\> + +The transaction send result and the compilation result + +#### Defined in + +[src/app.ts:188](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/app.ts#L188) + +___ + +### waitForConfirmation + +▸ **waitForConfirmation**(`transactionId`, `maxRoundsToWait`, `algod`): `Promise`<`PendingTransactionResponse`\> + +Wait until the transaction is confirmed or rejected, or until `timeout` +number of rounds have passed. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `transactionId` | `string` | The transaction ID to wait for | +| `maxRoundsToWait` | `number` \| `bigint` | Maximum number of rounds to wait | +| `algod` | `default` | An algod client | + +#### Returns + +`Promise`<`PendingTransactionResponse`\> + +Pending transaction information + +**`Throws`** + +Throws an error if the transaction is not confirmed or rejected in the next `timeout` rounds + +#### Defined in + +[src/transaction.ts:340](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction.ts#L340) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/testing.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/testing.md new file mode 100644 index 000000000..0ca713a2b --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/testing.md @@ -0,0 +1,194 @@ +[@algorandfoundation/algokit-utils](../README.md) / testing + +# Module: testing + +## Table of contents + +### Classes + +- [TestLogger](../classes/testing.TestLogger.md) +- [TransactionLogger](../classes/testing.TransactionLogger.md) + +### Functions + +- [algoKitLogCaptureFixture](testing.md#algokitlogcapturefixture) +- [algorandFixture](testing.md#algorandfixture) +- [getTestAccount](testing.md#gettestaccount) +- [runWhenIndexerCaughtUp](testing.md#runwhenindexercaughtup) + +## Functions + +### algoKitLogCaptureFixture + +▸ **algoKitLogCaptureFixture**(): [`AlgoKitLogCaptureFixture`](../interfaces/types_testing.AlgoKitLogCaptureFixture.md) + +Creates a test fixture for capturing AlgoKit logs. + +#### Returns + +[`AlgoKitLogCaptureFixture`](../interfaces/types_testing.AlgoKitLogCaptureFixture.md) + +The fixture + +**`Example`** + +```typescript +const logs = algoKitLogCaptureFixture() + +beforeEach(logs.beforeEach) +afterEach(logs.afterEach) + +test('My test', () => { + const capturedLogs = logs.testLogger.capturedLogs +}) +``` + +#### Defined in + +[src/testing/fixtures/algokit-log-capture-fixture.ts:21](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/fixtures/algokit-log-capture-fixture.ts#L21) + +___ + +### algorandFixture + +▸ **algorandFixture**(`fixtureConfig?`): [`AlgorandFixture`](../interfaces/types_testing.AlgorandFixture.md) + +Creates a test fixture for automated testing against Algorand. +By default it tests against an environment variable specified client + if the standard environment variables are specified, otherwise against + a default LocalNet instance, but you can pass in an algod, indexer + and/or kmd if you want to test against an explicitly defined network. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `fixtureConfig?` | [`AlgorandFixtureConfig`](../interfaces/types_testing.AlgorandFixtureConfig.md) | The fixture configuration | + +#### Returns + +[`AlgorandFixture`](../interfaces/types_testing.AlgorandFixture.md) + +The fixture + +**`Example`** + +```typescript +const algorand = algorandFixture() + +beforeEach(algorand.beforeEach, 10_000) + +test('My test', async () => { + const {algod, indexer, testAccount, ...} = algorand.context + // test things... +}) +``` + +#### Defined in + +[src/testing/fixtures/algorand-fixture.ts:35](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/fixtures/algorand-fixture.ts#L35) + +▸ **algorandFixture**(`fixtureConfig`, `config`): [`AlgorandFixture`](../interfaces/types_testing.AlgorandFixture.md) + +Creates a test fixture for automated testing against Algorand. +By default it tests against an environment variable specified client + if the standard environment variables are specified, otherwise against + a default LocalNet instance, but you can pass in an algod, indexer + and/or kmd if you want to test against an explicitly defined network. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `fixtureConfig` | `undefined` \| [`AlgorandFixtureConfig`](../interfaces/types_testing.AlgorandFixtureConfig.md) | The fixture configuration | +| `config` | [`AlgoConfig`](../interfaces/types_network_client.AlgoConfig.md) | The algo configuration | + +#### Returns + +[`AlgorandFixture`](../interfaces/types_testing.AlgorandFixture.md) + +The fixture + +**`Example`** + +```typescript +const algorand = algorandFixture(undefined, getConfigFromEnvOrDefaults()) + +beforeEach(algorand.beforeEach, 10_000) + +test('My test', async () => { + const {algod, indexer, testAccount, ...} = algorand.context + // test things... +}) +``` + +#### Defined in + +[src/testing/fixtures/algorand-fixture.ts:59](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/fixtures/algorand-fixture.ts#L59) + +___ + +### getTestAccount + +▸ **getTestAccount**(`param0`, `algod`, `kmd?`): `Promise`<`Account`\> + +Creates an ephemeral Algorand account for the purposes of testing. +Returns a newly created random test account that is funded from the dispenser +DO NOT USE THIS TO CREATE A MAINNET ACCOUNT! +Note: By default this will log the mnemonic of the account. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `param0` | [`GetTestAccountParams`](../interfaces/types_testing.GetTestAccountParams.md) | The config for the test account to generate | +| `algod` | `default` | An algod client | +| `kmd?` | `default` | A KMD client, if not specified then a default KMD client will be loaded from environment variables | + +#### Returns + +`Promise`<`Account`\> + +The account, with private key loaded + +#### Defined in + +[src/testing/account.ts:17](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/account.ts#L17) + +___ + +### runWhenIndexerCaughtUp + +▸ **runWhenIndexerCaughtUp**<`T`\>(`run`): `Promise`<`T`\> + +Runs the given indexer call until a 404 error is no longer returned. +Tried every 200ms up to 20 times. +Very rudimentary implementation designed for automated testing. + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `run` | () => `Promise`<`T`\> | The code to run | + +#### Returns + +`Promise`<`T`\> + +The result (as a promise), or throws if the indexer didn't catch up in time + +**`Example`** + +```typescript +const transaction = await runWhenIndexerCaughtUp(() => indexer.lookupTransactionByID(txnId).do()) +``` + +#### Defined in + +[src/testing/indexer.ts:11](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/indexer.ts#L11) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_account.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_account.md new file mode 100644 index 000000000..809931f21 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_account.md @@ -0,0 +1,31 @@ +[@algorandfoundation/algokit-utils](../README.md) / types/account + +# Module: types/account + +## Table of contents + +### Classes + +- [MultisigAccount](../classes/types_account.MultisigAccount.md) +- [SigningAccount](../classes/types_account.SigningAccount.md) + +### Interfaces + +- [AccountConfig](../interfaces/types_account.AccountConfig.md) +- [TransactionSignerAccount](../interfaces/types_account.TransactionSignerAccount.md) + +### Variables + +- [DISPENSER\_ACCOUNT](types_account.md#dispenser_account) + +## Variables + +### DISPENSER\_ACCOUNT + +• `Const` **DISPENSER\_ACCOUNT**: ``"DISPENSER"`` + +The account name identifier used for fund dispensing in test environments + +#### Defined in + +[src/types/account.ts:6](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L6) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_algo_http_client_with_retry.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_algo_http_client_with_retry.md new file mode 100644 index 000000000..eab9cd994 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_algo_http_client_with_retry.md @@ -0,0 +1,9 @@ +[@algorandfoundation/algokit-utils](../README.md) / types/algo-http-client-with-retry + +# Module: types/algo-http-client-with-retry + +## Table of contents + +### Classes + +- [AlgoHttpClientWithRetry](../classes/types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_amount.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_amount.md new file mode 100644 index 000000000..43c8ec04a --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_amount.md @@ -0,0 +1,9 @@ +[@algorandfoundation/algokit-utils](../README.md) / types/amount + +# Module: types/amount + +## Table of contents + +### Classes + +- [AlgoAmount](../classes/types_amount.AlgoAmount.md) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_amount_spec.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_amount_spec.md new file mode 100644 index 000000000..7d6ebe8cc --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_amount_spec.md @@ -0,0 +1,3 @@ +[@algorandfoundation/algokit-utils](../README.md) / types/amount.spec + +# Module: types/amount.spec diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_app.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_app.md new file mode 100644 index 000000000..c58afc124 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_app.md @@ -0,0 +1,197 @@ +[@algorandfoundation/algokit-utils](../README.md) / types/app + +# Module: types/app + +## Table of contents + +### Enumerations + +- [OnSchemaBreak](../enums/types_app.OnSchemaBreak.md) +- [OnUpdate](../enums/types_app.OnUpdate.md) + +### Interfaces + +- [AppCallParams](../interfaces/types_app.AppCallParams.md) +- [AppCallTransactionResult](../interfaces/types_app.AppCallTransactionResult.md) +- [AppCallTransactionResultOfType](../interfaces/types_app.AppCallTransactionResultOfType.md) +- [AppCompilationResult](../interfaces/types_app.AppCompilationResult.md) +- [AppDeployMetadata](../interfaces/types_app.AppDeployMetadata.md) +- [AppDeploymentParams](../interfaces/types_app.AppDeploymentParams.md) +- [AppLookup](../interfaces/types_app.AppLookup.md) +- [AppMetadata](../interfaces/types_app.AppMetadata.md) +- [AppReference](../interfaces/types_app.AppReference.md) +- [AppState](../interfaces/types_app.AppState.md) +- [AppStorageSchema](../interfaces/types_app.AppStorageSchema.md) +- [BoxName](../interfaces/types_app.BoxName.md) +- [BoxReference](../interfaces/types_app.BoxReference.md) +- [BoxValueRequestParams](../interfaces/types_app.BoxValueRequestParams.md) +- [BoxValuesRequestParams](../interfaces/types_app.BoxValuesRequestParams.md) +- [CompiledTeal](../interfaces/types_app.CompiledTeal.md) +- [CoreAppCallArgs](../interfaces/types_app.CoreAppCallArgs.md) +- [CreateAppParams](../interfaces/types_app.CreateAppParams.md) +- [RawAppCallArgs](../interfaces/types_app.RawAppCallArgs.md) +- [TealTemplateParams](../interfaces/types_app.TealTemplateParams.md) +- [UpdateAppParams](../interfaces/types_app.UpdateAppParams.md) + +### Type Aliases + +- [ABIAppCallArg](types_app.md#abiappcallarg) +- [ABIAppCallArgs](types_app.md#abiappcallargs) +- [ABIReturn](types_app.md#abireturn) +- [AppCallArgs](types_app.md#appcallargs) +- [AppCallType](types_app.md#appcalltype) +- [BoxIdentifier](types_app.md#boxidentifier) + +### Variables + +- [ABI\_RETURN\_PREFIX](types_app.md#abi_return_prefix) +- [APP\_DEPLOY\_NOTE\_DAPP](types_app.md#app_deploy_note_dapp) +- [APP\_PAGE\_MAX\_SIZE](types_app.md#app_page_max_size) +- [DELETABLE\_TEMPLATE\_NAME](types_app.md#deletable_template_name) +- [UPDATABLE\_TEMPLATE\_NAME](types_app.md#updatable_template_name) + +## Type Aliases + +### ABIAppCallArg + +Ƭ **ABIAppCallArg**: `ABIArgument` \| [`TransactionToSign`](../interfaces/types_transaction.TransactionToSign.md) \| `Transaction` \| `Promise`<[`SendTransactionResult`](../interfaces/types_transaction.SendTransactionResult.md)\> \| [`SendTransactionResult`](../interfaces/types_transaction.SendTransactionResult.md) \| `undefined` + +An argument for an ABI method, either a primitive value, or a transaction with or without signer, or the unawaited async return value of an algokit method that returns a `SendTransactionResult` + +#### Defined in + +[src/types/app.ts:92](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L92) + +___ + +### ABIAppCallArgs + +Ƭ **ABIAppCallArgs**: [`CoreAppCallArgs`](../interfaces/types_app.CoreAppCallArgs.md) & { `method`: `ABIMethodParams` \| `ABIMethod` ; `methodArgs`: [`ABIAppCallArg`](types_app.md#abiappcallarg)[] } + +App call args for an ABI call + +#### Defined in + +[src/types/app.ts:103](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L103) + +___ + +### ABIReturn + +Ƭ **ABIReturn**: { `decodeError`: `undefined` ; `rawReturnValue`: `Uint8Array` ; `returnValue`: `ABIValue` } \| { `decodeError`: `Error` ; `rawReturnValue`: `undefined` ; `returnValue`: `undefined` } + +The return value of an ABI method call + +#### Defined in + +[src/types/app.ts:213](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L213) + +___ + +### AppCallArgs + +Ƭ **AppCallArgs**: [`RawAppCallArgs`](../interfaces/types_app.RawAppCallArgs.md) \| [`ABIAppCallArgs`](types_app.md#abiappcallargs) + +Arguments to pass to an app call either: + * The raw app call values to pass through into the transaction (after processing); or + * An ABI method definition (method and args) + +#### Defined in + +[src/types/app.ts:114](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L114) + +___ + +### AppCallType + +Ƭ **AppCallType**: ``"no_op"`` \| ``"opt_in"`` \| ``"close_out"`` \| ``"clear_state"`` \| ``"update_application"`` \| ``"delete_application"`` + +The type of call / [on-completion action](https://developer.algorand.org/docs/get-details/dapps/smart-contracts/apps/#the-lifecycle-of-a-smart-contract) for a smart contract call. + +Equivalent of `algosdk.OnApplicationComplete`, but as a more convenient string enum. + +* `no_op`: Normal smart contract call, no special on-complete action +* `opt_in`: Opt-in to smart contract local storage +* `close_out`: Close-out local storage storage +* `clear_state`: Clear local storage state +* `update_application`: Update the smart contract +* `delete_application`: Delete the smart contract + +#### Defined in + +[src/types/app.ts:157](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L157) + +___ + +### BoxIdentifier + +Ƭ **BoxIdentifier**: `string` \| `Uint8Array` \| [`SendTransactionFrom`](types_transaction.md#sendtransactionfrom) + +Something that identifies a box name - either a: + * `Uint8Array` + * `string` (that will be encoded to a Uint8Array) + * `SendTransactionFrom` (encoded into the public key address of the corresponding account) + +#### Defined in + +[src/types/app.ts:65](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L65) + +## Variables + +### ABI\_RETURN\_PREFIX + +• `Const` **ABI\_RETURN\_PREFIX**: `Uint8Array` + +First 4 bytes of SHA-512/256 hash of "return" for retrieving ABI return values + +#### Defined in + +[src/types/app.ts:35](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L35) + +___ + +### APP\_DEPLOY\_NOTE\_DAPP + +• `Const` **APP\_DEPLOY\_NOTE\_DAPP**: ``"ALGOKIT_DEPLOYER"`` + +The app create/update ARC-2 transaction note prefix + +#### Defined in + +[src/types/app.ts:29](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L29) + +___ + +### APP\_PAGE\_MAX\_SIZE + +• `Const` **APP\_PAGE\_MAX\_SIZE**: ``2048`` + +The maximum number of bytes in a single app code page + +#### Defined in + +[src/types/app.ts:32](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L32) + +___ + +### DELETABLE\_TEMPLATE\_NAME + +• `Const` **DELETABLE\_TEMPLATE\_NAME**: ``"TMPL_DELETABLE"`` + +The name of the TEAL template variable for deploy-time permanence control + +#### Defined in + +[src/types/app.ts:26](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L26) + +___ + +### UPDATABLE\_TEMPLATE\_NAME + +• `Const` **UPDATABLE\_TEMPLATE\_NAME**: ``"TMPL_UPDATABLE"`` + +The name of the TEAL template variable for deploy-time immutability control + +#### Defined in + +[src/types/app.ts:23](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L23) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_app_client.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_app_client.md new file mode 100644 index 000000000..21dea6ace --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_app_client.md @@ -0,0 +1,237 @@ +[@algorandfoundation/algokit-utils](../README.md) / types/app-client + +# Module: types/app-client + +## Table of contents + +### Classes + +- [ApplicationClient](../classes/types_app_client.ApplicationClient.md) + +### Interfaces + +- [AppClientCallABIArgs](../interfaces/types_app_client.AppClientCallABIArgs.md) +- [AppClientCallCoreParams](../interfaces/types_app_client.AppClientCallCoreParams.md) +- [AppClientCallRawArgs](../interfaces/types_app_client.AppClientCallRawArgs.md) +- [AppClientCompilationParams](../interfaces/types_app_client.AppClientCompilationParams.md) +- [AppClientDeployCallInterfaceParams](../interfaces/types_app_client.AppClientDeployCallInterfaceParams.md) +- [AppClientDeployCoreParams](../interfaces/types_app_client.AppClientDeployCoreParams.md) +- [AppClientDeployParams](../interfaces/types_app_client.AppClientDeployParams.md) +- [AppSourceMaps](../interfaces/types_app_client.AppSourceMaps.md) +- [FundAppAccountParams](../interfaces/types_app_client.FundAppAccountParams.md) +- [ResolveAppById](../interfaces/types_app_client.ResolveAppById.md) +- [ResolveAppByIdBase](../interfaces/types_app_client.ResolveAppByIdBase.md) +- [SourceMapExport](../interfaces/types_app_client.SourceMapExport.md) + +### Type Aliases + +- [AppClientCallArgs](types_app_client.md#appclientcallargs) +- [AppClientCallParams](types_app_client.md#appclientcallparams) +- [AppClientClearStateParams](types_app_client.md#appclientclearstateparams) +- [AppClientCreateOnComplete](types_app_client.md#appclientcreateoncomplete) +- [AppClientCreateParams](types_app_client.md#appclientcreateparams) +- [AppClientUpdateParams](types_app_client.md#appclientupdateparams) +- [AppDetails](types_app_client.md#appdetails) +- [AppDetailsBase](types_app_client.md#appdetailsbase) +- [AppSpecAppDetails](types_app_client.md#appspecappdetails) +- [AppSpecAppDetailsBase](types_app_client.md#appspecappdetailsbase) +- [AppSpecAppDetailsByCreatorAndName](types_app_client.md#appspecappdetailsbycreatorandname) +- [AppSpecAppDetailsById](types_app_client.md#appspecappdetailsbyid) +- [ResolveAppByCreatorAndName](types_app_client.md#resolveappbycreatorandname) +- [ResolveAppByCreatorAndNameBase](types_app_client.md#resolveappbycreatorandnamebase) + +## Type Aliases + +### AppClientCallArgs + +Ƭ **AppClientCallArgs**: [`AppClientCallRawArgs`](../interfaces/types_app_client.AppClientCallRawArgs.md) \| [`AppClientCallABIArgs`](../interfaces/types_app_client.AppClientCallABIArgs.md) + +The arguments to pass to an Application Client smart contract call + +#### Defined in + +[src/types/app-client.ts:168](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L168) + +___ + +### AppClientCallParams + +Ƭ **AppClientCallParams**: [`AppClientCallArgs`](types_app_client.md#appclientcallargs) & [`AppClientCallCoreParams`](../interfaces/types_app_client.AppClientCallCoreParams.md) + +Parameters to construct a ApplicationClient contract call + +#### Defined in + +[src/types/app-client.ts:181](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L181) + +___ + +### AppClientClearStateParams + +Ƭ **AppClientClearStateParams**: [`AppClientCallRawArgs`](../interfaces/types_app_client.AppClientCallRawArgs.md) & [`AppClientCallCoreParams`](../interfaces/types_app_client.AppClientCallCoreParams.md) + +Parameters to construct a ApplicationClient clear state contract call + +#### Defined in + +[src/types/app-client.ts:184](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L184) + +___ + +### AppClientCreateOnComplete + +Ƭ **AppClientCreateOnComplete**: `Object` + +On-complete action parameter for creating a contract using ApplicationClient + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `onCompleteAction?` | `Exclude`<[`AppCallType`](types_app.md#appcalltype), ``"clear_state"``\> \| `Exclude`<`OnApplicationComplete`, `OnApplicationComplete.ClearStateOC`\> | Override the on-completion action for the create call; defaults to NoOp | + +#### Defined in + +[src/types/app-client.ts:196](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L196) + +___ + +### AppClientCreateParams + +Ƭ **AppClientCreateParams**: [`AppClientCallParams`](types_app_client.md#appclientcallparams) & [`AppClientCompilationParams`](../interfaces/types_app_client.AppClientCompilationParams.md) & [`AppClientCreateOnComplete`](types_app_client.md#appclientcreateoncomplete) + +Parameters for creating a contract using ApplicationClient + +#### Defined in + +[src/types/app-client.ts:202](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L202) + +___ + +### AppClientUpdateParams + +Ƭ **AppClientUpdateParams**: [`AppClientCallParams`](types_app_client.md#appclientcallparams) & [`AppClientCompilationParams`](../interfaces/types_app_client.AppClientCompilationParams.md) + +Parameters for updating a contract using ApplicationClient + +#### Defined in + +[src/types/app-client.ts:205](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L205) + +___ + +### AppDetails + +Ƭ **AppDetails**: [`AppDetailsBase`](types_app_client.md#appdetailsbase) & [`ResolveAppById`](../interfaces/types_app_client.ResolveAppById.md) \| [`ResolveAppByCreatorAndName`](types_app_client.md#resolveappbycreatorandname) + +The details of an AlgoKit Utils deployed app + +#### Defined in + +[src/types/app-client.ts:100](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L100) + +___ + +### AppDetailsBase + +Ƭ **AppDetailsBase**: `Object` + +The details of an AlgoKit Utils deployed app + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `deployTimeParams?` | [`TealTemplateParams`](../interfaces/types_app.TealTemplateParams.md) | Optionally provide any deploy-time parameters to replace in the TEAL code; if specified here will get used in calls to `deploy`, `create` and `update` unless overridden in those calls | +| `params?` | `SuggestedParams` | Default suggested params object to use | +| `sender?` | [`SendTransactionFrom`](types_transaction.md#sendtransactionfrom) | Default sender to use for transactions issued by this application client | + +#### Defined in + +[src/types/app-client.ts:88](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L88) + +___ + +### AppSpecAppDetails + +Ƭ **AppSpecAppDetails**: [`AppSpecAppDetailsBase`](types_app_client.md#appspecappdetailsbase) & [`AppDetails`](types_app_client.md#appdetails) + +The details of an ARC-0032 app spec specified, AlgoKit Utils deployed app + +#### Defined in + +[src/types/app-client.ts:118](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L118) + +___ + +### AppSpecAppDetailsBase + +Ƭ **AppSpecAppDetailsBase**: `Object` + +The details of an ARC-0032 app spec specified, AlgoKit Utils deployed app + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `app` | [`AppSpec`](../interfaces/types_app_spec.AppSpec.md) \| `string` | The ARC-0032 application spec as either: * Parsed JSON `AppSpec` * Raw JSON string | + +#### Defined in + +[src/types/app-client.ts:103](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L103) + +___ + +### AppSpecAppDetailsByCreatorAndName + +Ƭ **AppSpecAppDetailsByCreatorAndName**: [`AppSpecAppDetailsBase`](types_app_client.md#appspecappdetailsbase) & [`AppDetailsBase`](types_app_client.md#appdetailsbase) & [`ResolveAppByCreatorAndNameBase`](types_app_client.md#resolveappbycreatorandnamebase) + +The details of an ARC-0032 app spec specified, AlgoKit Utils deployed app by creator and name + +#### Defined in + +[src/types/app-client.ts:115](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L115) + +___ + +### AppSpecAppDetailsById + +Ƭ **AppSpecAppDetailsById**: [`AppSpecAppDetailsBase`](types_app_client.md#appspecappdetailsbase) & [`AppDetailsBase`](types_app_client.md#appdetailsbase) & [`ResolveAppByIdBase`](../interfaces/types_app_client.ResolveAppByIdBase.md) + +The details of an ARC-0032 app spec specified, AlgoKit Utils deployed app by id + +#### Defined in + +[src/types/app-client.ts:112](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L112) + +___ + +### ResolveAppByCreatorAndName + +Ƭ **ResolveAppByCreatorAndName**: [`ResolveAppByCreatorAndNameBase`](types_app_client.md#resolveappbycreatorandnamebase) & { `resolveBy`: ``"creatorAndName"`` } + +Configuration to resolve app by creator and name `getCreatorAppsByName` + +#### Defined in + +[src/types/app-client.ts:69](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L69) + +___ + +### ResolveAppByCreatorAndNameBase + +Ƭ **ResolveAppByCreatorAndNameBase**: `Object` + +Configuration to resolve app by creator and name `getCreatorAppsByName` + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `creatorAddress` | `string` | The address of the app creator account to resolve the app by | +| `findExistingUsing` | `Indexer` \| [`AppLookup`](../interfaces/types_app.AppLookup.md) | The mechanism to find an existing app instance metadata for the given creator and name; either: * An indexer instance to search the creator account apps; or * The cached value of the existing apps for the given creator from `getCreatorAppsByName` | +| `name?` | `string` | The optional name override to resolve the app by within the creator account (default: uses the name in the ABI contract) | + +#### Defined in + +[src/types/app-client.ts:56](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L56) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_app_client_spec.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_app_client_spec.md new file mode 100644 index 000000000..7811b27e6 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_app_client_spec.md @@ -0,0 +1,3 @@ +[@algorandfoundation/algokit-utils](../README.md) / types/app-client.spec + +# Module: types/app-client.spec diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_app_spec.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_app_spec.md new file mode 100644 index 000000000..7f0a28905 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_app_spec.md @@ -0,0 +1,136 @@ +[@algorandfoundation/algokit-utils](../README.md) / types/app-spec + +# Module: types/app-spec + +## Table of contents + +### Interfaces + +- [AppSources](../interfaces/types_app_spec.AppSources.md) +- [AppSpec](../interfaces/types_app_spec.AppSpec.md) +- [CallConfig](../interfaces/types_app_spec.CallConfig.md) +- [DeclaredSchemaValueSpec](../interfaces/types_app_spec.DeclaredSchemaValueSpec.md) +- [Hint](../interfaces/types_app_spec.Hint.md) +- [ReservedSchemaValueSpec](../interfaces/types_app_spec.ReservedSchemaValueSpec.md) +- [Schema](../interfaces/types_app_spec.Schema.md) +- [SchemaSpec](../interfaces/types_app_spec.SchemaSpec.md) +- [StateSchemaSpec](../interfaces/types_app_spec.StateSchemaSpec.md) +- [Struct](../interfaces/types_app_spec.Struct.md) + +### Type Aliases + +- [ABIType](types_app_spec.md#abitype) +- [AVMType](types_app_spec.md#avmtype) +- [CallConfigValue](types_app_spec.md#callconfigvalue) +- [DefaultArgument](types_app_spec.md#defaultargument) +- [FieldName](types_app_spec.md#fieldname) +- [HintSpec](types_app_spec.md#hintspec) +- [StateSchema](types_app_spec.md#stateschema) +- [StructElement](types_app_spec.md#structelement) + +## Type Aliases + +### ABIType + +Ƭ **ABIType**: `string` + +The string name of an ABI type + +#### Defined in + +[src/types/app-spec.ts:65](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L65) + +___ + +### AVMType + +Ƭ **AVMType**: ``"uint64"`` \| ``"bytes"`` + +AVM data type + +#### Defined in + +[src/types/app-spec.ts:121](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L121) + +___ + +### CallConfigValue + +Ƭ **CallConfigValue**: ``"NEVER"`` \| ``"CALL"`` \| ``"CREATE"`` \| ``"ALL"`` + +The various call configs: + * `NEVER`: Will not be called + * `CALL`: Can be called during a non-create call i.e. app id != 0 + * `CREATE`: Can be called during a create call i.e. app id = 0 + * `ALL`: Can be during a create OR non-create call + +#### Defined in + +[src/types/app-spec.ts:36](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L36) + +___ + +### DefaultArgument + +Ƭ **DefaultArgument**: { `data`: `ABIMethodParams` ; `source`: ``"abi-method"`` } \| { `data`: `string` ; `source`: ``"global-state"`` } \| { `data`: `string` ; `source`: ``"local-state"`` } \| { `data`: `string` \| `number` ; `source`: ``"constant"`` } + +Defines a strategy for obtaining a default value for a given ABI arg. + +#### Defined in + +[src/types/app-spec.ts:81](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L81) + +___ + +### FieldName + +Ƭ **FieldName**: `string` + +The name of a field + +#### Defined in + +[src/types/app-spec.ts:62](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L62) + +___ + +### HintSpec + +Ƭ **HintSpec**: `Record`<`string`, [`Hint`](../interfaces/types_app_spec.Hint.md)\> + +A lookup of encoded method call spec to hint + +#### Defined in + +[src/types/app-spec.ts:20](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L20) + +___ + +### StateSchema + +Ƭ **StateSchema**: `Object` + +Schema spec summary for global or local storage + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `num_byte_slices` | `number` | Number of byte slots | +| `num_uints` | `number` | Number of uint slots | + +#### Defined in + +[src/types/app-spec.ts:170](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L170) + +___ + +### StructElement + +Ƭ **StructElement**: [[`FieldName`](types_app_spec.md#fieldname), [`ABIType`](types_app_spec.md#abitype)] + +The elements of the struct/tuple: `FieldName`, `ABIType` + +#### Defined in + +[src/types/app-spec.ts:68](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L68) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_config.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_config.md new file mode 100644 index 000000000..966bc6937 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_config.md @@ -0,0 +1,13 @@ +[@algorandfoundation/algokit-utils](../README.md) / types/config + +# Module: types/config + +## Table of contents + +### Classes + +- [UpdatableConfig](../classes/types_config.UpdatableConfig.md) + +### Interfaces + +- [Config](../interfaces/types_config.Config.md) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_indexer.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_indexer.md new file mode 100644 index 000000000..531325fea --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_indexer.md @@ -0,0 +1,43 @@ +[@algorandfoundation/algokit-utils](../README.md) / types/indexer + +# Module: types/indexer + +## Table of contents + +### Enumerations + +- [AccountStatus](../enums/types_indexer.AccountStatus.md) +- [ApplicationOnComplete](../enums/types_indexer.ApplicationOnComplete.md) +- [SignatureType](../enums/types_indexer.SignatureType.md) + +### Interfaces + +- [AccountLookupResult](../interfaces/types_indexer.AccountLookupResult.md) +- [AccountParticipation](../interfaces/types_indexer.AccountParticipation.md) +- [AccountResult](../interfaces/types_indexer.AccountResult.md) +- [AppLocalState](../interfaces/types_indexer.AppLocalState.md) +- [ApplicationCreatedLookupResult](../interfaces/types_indexer.ApplicationCreatedLookupResult.md) +- [ApplicationLookupResult](../interfaces/types_indexer.ApplicationLookupResult.md) +- [ApplicationParams](../interfaces/types_indexer.ApplicationParams.md) +- [ApplicationResult](../interfaces/types_indexer.ApplicationResult.md) +- [ApplicationTransactionResult](../interfaces/types_indexer.ApplicationTransactionResult.md) +- [AssetConfigTransactionResult](../interfaces/types_indexer.AssetConfigTransactionResult.md) +- [AssetFreezeTransactionResult](../interfaces/types_indexer.AssetFreezeTransactionResult.md) +- [AssetHolding](../interfaces/types_indexer.AssetHolding.md) +- [AssetLookupResult](../interfaces/types_indexer.AssetLookupResult.md) +- [AssetParams](../interfaces/types_indexer.AssetParams.md) +- [AssetResult](../interfaces/types_indexer.AssetResult.md) +- [AssetTransferTransactionResult](../interfaces/types_indexer.AssetTransferTransactionResult.md) +- [AssetsCreatedLookupResult](../interfaces/types_indexer.AssetsCreatedLookupResult.md) +- [AssetsLookupResult](../interfaces/types_indexer.AssetsLookupResult.md) +- [EvalDelta](../interfaces/types_indexer.EvalDelta.md) +- [KeyRegistrationTransactionResult](../interfaces/types_indexer.KeyRegistrationTransactionResult.md) +- [LogicTransactionSignature](../interfaces/types_indexer.LogicTransactionSignature.md) +- [MultisigTransactionSignature](../interfaces/types_indexer.MultisigTransactionSignature.md) +- [MultisigTransactionSubSignature](../interfaces/types_indexer.MultisigTransactionSubSignature.md) +- [PaymentTransactionResult](../interfaces/types_indexer.PaymentTransactionResult.md) +- [StateSchema](../interfaces/types_indexer.StateSchema.md) +- [TransactionLookupResult](../interfaces/types_indexer.TransactionLookupResult.md) +- [TransactionResult](../interfaces/types_indexer.TransactionResult.md) +- [TransactionSearchResults](../interfaces/types_indexer.TransactionSearchResults.md) +- [TransactionSignature](../interfaces/types_indexer.TransactionSignature.md) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_logging.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_logging.md new file mode 100644 index 000000000..a6b1ea3e9 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_logging.md @@ -0,0 +1,60 @@ +[@algorandfoundation/algokit-utils](../README.md) / types/logging + +# Module: types/logging + +## Table of contents + +### Type Aliases + +- [Logger](types_logging.md#logger) + +### Variables + +- [consoleLogger](types_logging.md#consolelogger) +- [nullLogger](types_logging.md#nulllogger) + +## Type Aliases + +### Logger + +Ƭ **Logger**: `Object` + +General purpose logger type, compatible with Winston and others. + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `debug` | (`message`: `string`, ...`optionalParams`: `unknown`[]) => `void` | +| `error` | (`message`: `string`, ...`optionalParams`: `unknown`[]) => `void` | +| `info` | (`message`: `string`, ...`optionalParams`: `unknown`[]) => `void` | +| `verbose` | (`message`: `string`, ...`optionalParams`: `unknown`[]) => `void` | +| `warn` | (`message`: `string`, ...`optionalParams`: `unknown`[]) => `void` | + +#### Defined in + +[src/types/logging.ts:5](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logging.ts#L5) + +## Variables + +### consoleLogger + +• `Const` **consoleLogger**: [`Logger`](types_logging.md#logger) + +A logger implementation that writes to console + +#### Defined in + +[src/types/logging.ts:14](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logging.ts#L14) + +___ + +### nullLogger + +• `Const` **nullLogger**: [`Logger`](types_logging.md#logger) + +A logger implementation that does nothing + +#### Defined in + +[src/types/logging.ts:23](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logging.ts#L23) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_logic_error.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_logic_error.md new file mode 100644 index 000000000..7f856b15c --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_logic_error.md @@ -0,0 +1,13 @@ +[@algorandfoundation/algokit-utils](../README.md) / types/logic-error + +# Module: types/logic-error + +## Table of contents + +### Classes + +- [LogicError](../classes/types_logic_error.LogicError.md) + +### Interfaces + +- [LogicErrorDetails](../interfaces/types_logic_error.LogicErrorDetails.md) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_network_client.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_network_client.md new file mode 100644 index 000000000..4a035f02c --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_network_client.md @@ -0,0 +1,10 @@ +[@algorandfoundation/algokit-utils](../README.md) / types/network-client + +# Module: types/network-client + +## Table of contents + +### Interfaces + +- [AlgoClientConfig](../interfaces/types_network_client.AlgoClientConfig.md) +- [AlgoConfig](../interfaces/types_network_client.AlgoConfig.md) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_testing.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_testing.md new file mode 100644 index 000000000..103b93f90 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_testing.md @@ -0,0 +1,14 @@ +[@algorandfoundation/algokit-utils](../README.md) / types/testing + +# Module: types/testing + +## Table of contents + +### Interfaces + +- [AlgoKitLogCaptureFixture](../interfaces/types_testing.AlgoKitLogCaptureFixture.md) +- [AlgorandFixture](../interfaces/types_testing.AlgorandFixture.md) +- [AlgorandFixtureConfig](../interfaces/types_testing.AlgorandFixtureConfig.md) +- [AlgorandTestAutomationContext](../interfaces/types_testing.AlgorandTestAutomationContext.md) +- [GetTestAccountParams](../interfaces/types_testing.GetTestAccountParams.md) +- [LogSnapshotConfig](../interfaces/types_testing.LogSnapshotConfig.md) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_transaction.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_transaction.md new file mode 100644 index 000000000..4d6714955 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_transaction.md @@ -0,0 +1,76 @@ +[@algorandfoundation/algokit-utils](../README.md) / types/transaction + +# Module: types/transaction + +## Table of contents + +### Interfaces + +- [AtomicTransactionComposerToSend](../interfaces/types_transaction.AtomicTransactionComposerToSend.md) +- [ConfirmedTransactionResult](../interfaces/types_transaction.ConfirmedTransactionResult.md) +- [ConfirmedTransactionResults](../interfaces/types_transaction.ConfirmedTransactionResults.md) +- [SendAtomicTransactionComposerResults](../interfaces/types_transaction.SendAtomicTransactionComposerResults.md) +- [SendTransactionParams](../interfaces/types_transaction.SendTransactionParams.md) +- [SendTransactionResult](../interfaces/types_transaction.SendTransactionResult.md) +- [SendTransactionResults](../interfaces/types_transaction.SendTransactionResults.md) +- [TransactionGroupToSend](../interfaces/types_transaction.TransactionGroupToSend.md) +- [TransactionToSign](../interfaces/types_transaction.TransactionToSign.md) + +### Type Aliases + +- [Arc2TransactionNote](types_transaction.md#arc2transactionnote) +- [SendTransactionFrom](types_transaction.md#sendtransactionfrom) +- [TransactionNote](types_transaction.md#transactionnote) +- [TransactionNoteData](types_transaction.md#transactionnotedata) + +## Type Aliases + +### Arc2TransactionNote + +Ƭ **Arc2TransactionNote**: { `dAppName`: `string` ; `data`: `string` ; `format`: ``"m"`` \| ``"b"`` \| ``"u"`` } \| { `dAppName`: `string` ; `data`: [`TransactionNoteData`](types_transaction.md#transactionnotedata) ; `format`: ``"j"`` } + +ARC-0002 compatible transaction note components https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0002.md + +#### Defined in + +[src/types/transaction.ts:10](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L10) + +___ + +### SendTransactionFrom + +Ƭ **SendTransactionFrom**: `Account` \| [`SigningAccount`](../classes/types_account.SigningAccount.md) \| `LogicSigAccount` \| [`MultisigAccount`](../classes/types_account.MultisigAccount.md) \| [`TransactionSignerAccount`](../interfaces/types_account.TransactionSignerAccount.md) + +Core account abstraction when signing/sending transactions + +This type is used across the entire AlgoKit Utils library and allows you to pass through +many types of accounts, including: +* `Account` - The in-built `algosdk.Account` type for mnemonic accounts +* `SigningAccount` - An AlgoKit Utils class that wraps Account to provide support for rekeyed accounts +* `LogicSigAccount` - The in-built `algosdk.LogicSigAccount` type for logic signatures +* `MultisigAccount` - An AlgoKit Utils class that wraps a multisig account and provides mechanisms to get a multisig account +* `TransactionSignerAccount` - An AlgoKitUtils class that wraps the in-built `algosdk.TransactionSigner` along with the sender address + +#### Defined in + +[src/types/transaction.ts:93](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L93) + +___ + +### TransactionNote + +Ƭ **TransactionNote**: `Uint8Array` \| [`TransactionNoteData`](types_transaction.md#transactionnotedata) \| [`Arc2TransactionNote`](types_transaction.md#arc2transactionnote) + +#### Defined in + +[src/types/transaction.ts:6](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L6) + +___ + +### TransactionNoteData + +Ƭ **TransactionNoteData**: `string` \| ``null`` \| `undefined` \| `number` \| `any`[] \| `Record`<`string`, `any`\> + +#### Defined in + +[src/types/transaction.ts:8](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L8) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_transfer.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_transfer.md new file mode 100644 index 000000000..ccd9350f5 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_transfer.md @@ -0,0 +1,10 @@ +[@algorandfoundation/algokit-utils](../README.md) / types/transfer + +# Module: types/transfer + +## Table of contents + +### Interfaces + +- [AlgoTransferParams](../interfaces/types_transfer.AlgoTransferParams.md) +- [EnsureFundedParams](../interfaces/types_transfer.EnsureFundedParams.md) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_urlTokenBaseHTTPClient.md b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_urlTokenBaseHTTPClient.md new file mode 100644 index 000000000..57c01a071 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/code/modules/types_urlTokenBaseHTTPClient.md @@ -0,0 +1,30 @@ +[@algorandfoundation/algokit-utils](../README.md) / types/urlTokenBaseHTTPClient + +# Module: types/urlTokenBaseHTTPClient + +## Table of contents + +### Classes + +- [URLTokenBaseHTTPClient](../classes/types_urlTokenBaseHTTPClient.URLTokenBaseHTTPClient.md) + +### Interfaces + +- [AlgodTokenHeader](../interfaces/types_urlTokenBaseHTTPClient.AlgodTokenHeader.md) +- [CustomTokenHeader](../interfaces/types_urlTokenBaseHTTPClient.CustomTokenHeader.md) +- [IndexerTokenHeader](../interfaces/types_urlTokenBaseHTTPClient.IndexerTokenHeader.md) +- [KMDTokenHeader](../interfaces/types_urlTokenBaseHTTPClient.KMDTokenHeader.md) + +### Type Aliases + +- [TokenHeader](types_urlTokenBaseHTTPClient.md#tokenheader) + +## Type Aliases + +### TokenHeader + +Ƭ **TokenHeader**: [`AlgodTokenHeader`](../interfaces/types_urlTokenBaseHTTPClient.AlgodTokenHeader.md) \| [`IndexerTokenHeader`](../interfaces/types_urlTokenBaseHTTPClient.IndexerTokenHeader.md) \| [`KMDTokenHeader`](../interfaces/types_urlTokenBaseHTTPClient.KMDTokenHeader.md) \| [`CustomTokenHeader`](../interfaces/types_urlTokenBaseHTTPClient.CustomTokenHeader.md) + +#### Defined in + +[src/types/urlTokenBaseHTTPClient.ts:36](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/urlTokenBaseHTTPClient.ts#L36) diff --git a/docs/get-details/algokit/libraries/ts/algokit-utils/index.md b/docs/get-details/algokit/libraries/ts/algokit-utils/index.md new file mode 100644 index 000000000..e09390d14 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/algokit-utils/index.md @@ -0,0 +1,148 @@ +# Overview + +A set of core Algorand utilities written in TypeScript and released via npm that make it easier to build, test and deploy solutions on the Algorand Blockchain, including APIs, console apps and dApps. This project is part of [AlgoKit](https://github.com/algorandfoundation/algokit-cli). + +The goal of this library is to provide intuitive, productive utility functions that make it easier, quicker and safer to build applications on Algorand. Largely these functions provide a thin wrapper over the underlying Algorand SDK, but provide a higher level interface with sensible defaults and capabilities for common tasks that make development faster and easier. + +Note: If you prefer Python there's an equivalent [Python utility library](https://github.com/algorandfoundation/algokit-utils-py). + +[Core principles](#core-principles) | [Installation](#installation) | [Usage](#usage) | [Config and logging](#config-and-logging) | [Capabilities](#capabilities) | [Reference docs](#reference-documentation) + +# Core principles + +This library is designed with the following principles: + +- **Modularity** - This library is a thin wrapper of modular building blocks over the Algorand SDK; the primitives from the underlying Algorand SDK are exposed and used wherever possible so you can opt-in to which parts of this library you want to use without having to use an all or nothing approach. +- **Type-safety** - This library provides strong TypeScript support with effort put into creating types that provide good type safety and intellisense. +- **Productivity** - This library is built to make solution developers highly productive; it has a number of mechanisms to make common code easier and terser to write + +# Installation + +This library can be installed from NPM using your favourite npm client, e.g.: + +``` +npm install @algorandfoundation/algokit-utils +``` + +## Peer Dependencies + +This library requires `algosdk` as a peer dependency. Ensure you have it installed in your project. + +# Usage + +To use this library simply include the following at the top of your file: + +```typescript +import * as algokit from '@algorandfoundation/algokit-utils' +``` + +Then you can use intellisense to auto-complete the various functions that are available by typing `algokit.` in your favourite Integrated Development Environment (IDE), or you can refer to the [reference documentation](code/modules/index.md). + +## Testing + +To use the automated testing functionality, you can import the testing module: + +```typescript +import * as algotesting from '@algorandfoundation/algokit-utils/testing' +``` + +Or, you can generally get away with just importing the `algorandFixture` since it exposes the rest of the functionality in a manner that is easy to integrate with an underlying test framework like Jest or vitest: + +```typescript +import { algorandFixture } from '@algorandfoundation/algokit-utils/testing' +``` + +To see what's available feel free to consult the [reference documentation](code/modules/testing.md) or consulting the [testing capability page](capabilities/testing.md). + +## Types + +If you want to extend or pass around any of the types the various functions take then they are all defined in isolated modules under the `types` namespace. This is to provide a better intellisense experience without overwhelming you with hundreds of types. If you determine a type to import then you can import it like so: + +```typescript +import {} from '@algorandfoundation/types/' +``` + +Where `` would be replaced with the type and `` would be replaced with the module. You can use intellisense to discover the modules and types in your favourite IDE, or you can explore the [types modules in the reference documentation](code/README.md#modules). + +# Config and logging + +To configure the AlgoKit library you can make use of the `algokit.Config` object, which has a `configure` method that lets you configure some or all of the configuration options. + +## Logging + +AlgoKit has an in-built logging abstraction that allows the library to issue log messages without coupling the library to a particular logging library. This means you can access the AlgoKit Utils logs within your existing logging library if you have one. + +To do this you need to create a logging translator that exposes the following interface ([`Logger`](./code/modules/types_logging.md#logger)): + +```typescript +export type Logger = { + error(message: string, ...optionalParams: unknown[]): void + warn(message: string, ...optionalParams: unknown[]): void + info(message: string, ...optionalParams: unknown[]): void + verbose(message: string, ...optionalParams: unknown[]): void + debug(message: string, ...optionalParams: unknown[]): void +} +``` + +Note: this interface type is directly compatible with [Winston](https://github.com/winstonjs/winston). + +By default, the [`ConsoleLogger`](./code/modules/types_logging.md#consolelogger) is set as the logger, which will send log messages to the various `console.*` methods. There is also a [`NullLogger`](./code/modules/types_logging.md#nulllogger) if you want to disable logging. + +If you want to override the logger you can use the following: + +```typescript +algokit.configure({ logger: myLogger }) +``` + +To retrieve the current debug state you can use [`algokit.Config.logger`](./code/interfaces/types_config.Config.md). To get a logger that is optionally set to the null logger based on a boolean flag you can use the [`algokit.Config.getLogger(useNullLogger)`](./code/classes/types_config.UpdatableConfig.md#getlogger) function. + +## Debug mode + +To turn on debug mode you can use the following: + +```typescript +algokit.configure({ debug: true }) +``` + +To retrieve the current debug state you can use [`algokit.Config.debug`](./code/interfaces/types_config.Config.md). + +This will turn on things like automatic tracing and more verbose logging. It's likely this option will result in extra HTTP calls to algod so worth being careful when it's turned on. + +If you want to temporarily turn it on you can use the [`withDebug`](./code/classes/types_config.UpdatableConfig.md#withdebug) function: + +```typescript +algokit.Config.withDebug(() => { + // Do stuff with algokit.Config.debug set to true +}) +``` + +# Capabilities + +The library helps you with the following capabilities: + +- Core capabilities + - [**Client management**](capabilities/client.md) - Creation of (auto-retry) algod, indexer and kmd clients against various networks resolved from environment or specified configuration + - [**Account management**](capabilities/account.md) - Creation and use of accounts including mnemonic, rekeyed, multisig, transaction signer ([useWallet](https://github.com/TxnLab/use-wallet) for dApps and Atomic Transaction Composer compatible signers), idempotent KMD accounts and environment variable injected + - [**Algo amount handling**](capabilities/amount.md) - Reliable and terse specification of microAlgo and Algo amounts and conversion between them + - [**Transaction management**](capabilities/transaction.md) - Ability to send single, grouped or Atomic Transaction Composer transactions with consistent and highly configurable semantics, including configurable control of transaction notes (including ARC-0002), logging, fees, multiple sender account types, and sending behaviour +- Higher-order use cases + - [**App management**](capabilities/app.md) - Creation, updating, deleting, calling (ABI and otherwise) smart contract apps and the metadata associated with them (including state and boxes) + - [**App deployment**](capabilities/app-deploy.md) - Idempotent (safely retryable) deployment of an app, including deploy-time immutability and permanence control and TEAL template substitution + - [**ARC-0032 Application Spec client**](capabilities/app-client.md) - Builds on top of the App management and App deployment capabilities to provide a high productivity application client that works with ARC-0032 application spec defined smart contracts (e.g. via Beaker) + - [**Algo transfers**](capabilities/transfer.md) - Ability to easily initiate algo transfers between accounts, including dispenser management and idempotent account funding + - [**Automated testing**](capabilities/testing.md) - Terse, robust automated testing primitives that work across any testing framework (including jest and vitest) to facilitate fixture management, quickly generating isolated and funded test accounts, transaction logging, indexer wait management and log capture + - [**Indexer lookups / searching**](capabilities/indexer.md) - Type-safe indexer API wrappers (no more `Record` pain), including automatic pagination control + +# Reference documentation + +We have [auto-generated reference documentation for the code](code/README.md). + +# Roadmap + +This library will naturally evolve with any logical developer experience improvements needed to facilitate the [AlgoKit](https://github.com/algorandfoundation/algokit-cli) roadmap as it evolves. + +Likely future capability additions include: + +- Typed application client (similar to [beaker-ts](https://github.com/algorand-devrel/beaker-ts)) +- Asset management +- Expanded indexer API wrapper support diff --git a/docs/get-details/algokit/libraries/ts/client-generator.md b/docs/get-details/algokit/libraries/ts/client-generator.md new file mode 100644 index 000000000..51e2ff1d6 --- /dev/null +++ b/docs/get-details/algokit/libraries/ts/client-generator.md @@ -0,0 +1,81 @@ +# algokit-client-generator + +This project generates a type-safe smart contract client in TypeScript for the Algorand Blockchain that wraps the [application client](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/docs/capabilities/app-client.md) in [AlgoKit Utils](https://github.com/algorandfoundation/algokit-utils-ts). It does this by reading an [ARC-0032](https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0032.md) application spec file. + +## Usage + +### Prerequisites + +To be able to consume the generated file you need to include it in a TypeScript project that has (at least) the following package installed: + +``` +npm install @algorandfoundation/algokit-utils@2.0.0 +``` + +### Use + +To use the generator: + +``` +npx --yes @algorandfoundation/algokit-client-generator generate -a ./application.json -o ./client.generated.ts +``` + +## Examples + +There are a range of [examples](./examples) that you can look at to see a source smart contract (`{contract.py}`), the generated client (`client.ts`) and some tests that demonstrate how you can use the client (`client.spec.ts`). + +## Contributing + +If you want to contribute to this project the following information will be helpful. + +### Initial setup + +1. Clone this repository locally +2. Install pre-requisites: + + - Install `AlgoKit` - [Link](https://github.com/algorandfoundation/algokit-cli#install): Ensure you can execute `algokit --version`. + - Bootstrap your local environment; run `algokit bootstrap all` within this folder, which will: + - Install `Poetry` - [Link](https://python-poetry.org/docs/#installation): The minimum required version is `1.2`. Ensure you can execute `poetry -V` and get `1.2`+ + - Run `poetry install` in the root directory, which will set up a `.venv` folder with a Python virtual environment and also install all Python dependencies + - Run `npm install` + +3. Open the project and start debugging / developing via: + - VS Code + 1. Open the repository root in VS Code + 2. Install recommended extensions + 3. Run tests via test explorer + - IDEA (e.g. PyCharm) + 1. Open the repository root in the IDE + 2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment. + 3. Run tests + - Other + 1. Open the repository root in your text editor of choice + 2. Run `npm run test` + +### Subsequently + +1. If you update to the latest source code and there are new dependencies you will need to run `algokit bootstrap all` again +2. Follow step 3 above + +### Building examples + +In the `examples` folder there is a series of example contracts along with their generated client. These contracts are built using [Beaker](https://beaker.algo.xyz/). + +If you want to make changes to any of the smart contract examples and re-generate the ARC-0032 application.json files then change the corresponding `examples/{contract}/{contract}.py` file and then run: + +``` +poetry run python -m examples +``` + +Or in Visual Studio Code you can use the default build task (Ctrl+Shift+B). + +### Continuous Integration / Continuous Deployment (CI/CD) + +This project uses [GitHub Actions](https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions) to define CI/CD workflows, which are located in the [`.github/workflows`](./.github/workflows) folder. + +### Approval tests + +Making any changes to the generated code will result in the approval tests failing. The approval tests work by generating a version of client +and outputting it to `./examples/APP_NAME/client.generated.ts` then comparing to the approved version `./examples/APP_NAME/client.ts`. If you +make a change and break the approval tests, you will need to update the approved version by overwriting it with the generated version. +You can run `npm run update-approvals` to update all approved clients in one go. diff --git a/scripts/algokit-libraries.sh b/scripts/algokit-libraries.sh new file mode 100644 index 000000000..42153784d --- /dev/null +++ b/scripts/algokit-libraries.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env bash + +# SETUP +PATH_TO_SOURCE_REPOS=$1 +# ensure the following repos are checked out to the proper release/branch for doc generation and +# ensure each is a subdirectory of $PATH_TO_SOURCE_REPOS +# git clone https://github.com/algorandfoundation/algokit-cli +# git clone https://github.com/algorandfoundation/algokit-utils-ts +# git clone https://github.com/algorandfoundation/algokit-utils-py +# git clone https://github.com/algorandfoundation/algokit-client-generator-py +# git clone https://github.com/algorandfoundation/algokit-client-generator-ts + +# REMOVE EXISTING ALGOKIT-LIBRARIES CONTENT +PATH_TO_LIBRARIES=../docs/get-details/algokit/libraries +rm -rf $PATH_TO_LIBRARIES + +# RENDER ALGOKIT-LIBRARIES +mkdir -p $PATH_TO_LIBRARIES/py/algokit-utils +mkdir -p $PATH_TO_LIBRARIES/ts/algokit-utils +cp -R $PATH_TO_SOURCE_REPOS/algokit-utils-ts/docs/. $PATH_TO_LIBRARIES/ts/algokit-utils +mv $PATH_TO_LIBRARIES/ts/algokit-utils/README.md $PATH_TO_LIBRARIES/ts/algokit-utils/index.md +sed -i '' "s,# AlgoKit TypeScript Utilities,# Overview," $PATH_TO_LIBRARIES/ts/algokit-utils/index.md + +cp -R $PATH_TO_SOURCE_REPOS/algokit-utils-py/docs/source/. $PATH_TO_LIBRARIES/py/algokit-utils +sed -i '' "s,# AlgoKit Python Utilities,# Overview," $PATH_TO_LIBRARIES/py/algokit-utils/index.md + +mkdir -p $PATH_TO_LIBRARIES/ts/client-generator +cp -R $PATH_TO_SOURCE_REPOS/algokit-client-generator-ts/README.md $PATH_TO_LIBRARIES/ts/client-generator.md +sed -i '' "s,# AlgoKit TypeScript client generator (algokit-client-generator-ts),# algokit-client-generator," $PATH_TO_LIBRARIES/ts/client-generator.md + +mkdir -p $PATH_TO_LIBRARIES/py/client-generator +cp -R $PATH_TO_SOURCE_REPOS/algokit-client-generator-py/README.md $PATH_TO_LIBRARIES/py/client-generator.md +sed -i '' "s,# AlgoKit Python client generator,# algokit-client-generator," $PATH_TO_LIBRARIES/py/client-generator.md + +# ADD .pages +echo "title: AlgoKit\n\narrange:\n- index.md\n- features\n- libraries\n- cli-reference.md\n- tutorials\n- architecture-decisions\n- articles" > ../docs/get-details/algokit/.pages +echo "title: Libraries\n\narrange:\n- ts\n- py" > ../docs/get-details/algokit/libraries/.pages +echo "title: for TypeScript\n\n" > $PATH_TO_LIBRARIES/ts/.pages +echo "title: for Python\n\\n" > $PATH_TO_LIBRARIES/py/.pages +echo "title: algokit-utils\n\n" > $PATH_TO_LIBRARIES/ts/algokit-utils/.pages +echo "title: algokit-utils\n\\n" > $PATH_TO_LIBRARIES/py/algokit-utils/.pages + +#echo "title: algokit-client-generator-ts\n\narrange:\n- index.md" > $PATH_TO_LIBRARIES/client-generator-ts/.pages +#echo "title: algokit-client-generator-py\n\narrange:\n- index.md" > $PATH_TO_LIBRARIES/client-generator-py/.pages + + +# CLEANUP +rm -rf $PATH_TO_LIBRARIES/ts/algokit-utils/images +rm -rf $PATH_TO_LIBRARIES/py/algokit-utils/conf.py \ No newline at end of file