This is page 58 of 93. Use http://codebase.md/goplausible/algorand-mcp?lines=true&page={x} to view the full context.
# Directory Structure
```
├── .gitignore
├── CONTRIBUTING.md
├── LICENSE
├── llms-install.md
├── llms.txt
├── package.json
├── packages
│ ├── client
│ │ ├── .env.example
│ │ ├── package.json
│ │ ├── README.md
│ │ ├── src
│ │ │ ├── env.ts
│ │ │ ├── index.ts
│ │ │ └── LocalWallet.ts
│ │ └── tsconfig.json
│ └── server
│ ├── .env.example
│ ├── API specs
│ │ ├── algod_api.json
│ │ ├── indexer_api.json
│ │ ├── mcp.json
│ │ ├── nfd_api.json
│ │ ├── ultrade_api.json
│ │ ├── vestige_api.json
│ │ └── vestige_free_api.json
│ ├── Dockerfile
│ ├── jest.config.js
│ ├── package.json
│ ├── README.md
│ ├── smithery.yaml
│ ├── src
│ │ ├── algorand-client.ts
│ │ ├── env.ts
│ │ ├── index.ts
│ │ ├── resources
│ │ │ ├── index.ts
│ │ │ ├── knowledge
│ │ │ │ ├── ARCs.txt
│ │ │ │ ├── developers-algokit-architecture-decisions.txt
│ │ │ │ ├── developers-algokit-cli.txt
│ │ │ │ ├── developers-algokit-utils-python.txt
│ │ │ │ ├── developers-algokit-utils-typescript.txt
│ │ │ │ ├── developers-clis.txt
│ │ │ │ ├── developers-details.txt
│ │ │ │ ├── developers-liquid-auth.txt
│ │ │ │ ├── developers-nodes.txt
│ │ │ │ ├── developers-puya.txt
│ │ │ │ ├── developers-python.txt
│ │ │ │ ├── developers-sdks-js.txt
│ │ │ │ ├── developers-sdks-python.txt
│ │ │ │ ├── developers-tealscript.txt
│ │ │ │ ├── developers.txt
│ │ │ │ ├── index.ts
│ │ │ │ ├── taxonomy
│ │ │ │ │ ├── algokit-cli:README.md
│ │ │ │ │ ├── algokit:cli:algokit.md
│ │ │ │ │ ├── algokit:cli:architecture-decisions:2022-11-14_sandbox-approach.md
│ │ │ │ │ ├── algokit:cli:architecture-decisions:2022-11-22_beaker-testing-strategy.md
│ │ │ │ │ ├── algokit:cli:architecture-decisions:2023-01-11_beaker_productionisation_review.md
│ │ │ │ │ ├── algokit:cli:architecture-decisions:2023-01-11_brew_install.md
│ │ │ │ │ ├── algokit:cli:architecture-decisions:2023-01-12_smart-contract-deployment.md
│ │ │ │ │ ├── algokit:cli:architecture-decisions:2023-06-06_frontend-templates.md
│ │ │ │ │ ├── algokit:cli:architecture-decisions:2023-07-19_advanced_generate_command.md
│ │ │ │ │ ├── algokit:cli:architecture-decisions:2024-01-13_native_binaries.md
│ │ │ │ │ ├── algokit:cli:architecture-decisions:2024-01-23_init-wizard-v2.md
│ │ │ │ │ ├── algokit:cli:architecture-decisions:2024-01-31_binary_distribution.md
│ │ │ │ │ ├── algokit:cli:architecture-decisions:2024-03-06_local_dev_ui_packaging.md
│ │ │ │ │ ├── algokit:cli:articles:output_stability.md
│ │ │ │ │ ├── algokit:cli:cli:index.md
│ │ │ │ │ ├── algokit:cli:features:compile.md
│ │ │ │ │ ├── algokit:cli:features:completions.md
│ │ │ │ │ ├── algokit:cli:features:config.md
│ │ │ │ │ ├── algokit:cli:features:dispenser.md
│ │ │ │ │ ├── algokit:cli:features:doctor.md
│ │ │ │ │ ├── algokit:cli:features:explore.md
│ │ │ │ │ ├── algokit:cli:features:generate.md
│ │ │ │ │ ├── algokit:cli:features:goal.md
│ │ │ │ │ ├── algokit:cli:features:init.md
│ │ │ │ │ ├── algokit:cli:features:localnet.md
│ │ │ │ │ ├── algokit:cli:features:project:bootstrap.md
│ │ │ │ │ ├── algokit:cli:features:project:deploy.md
│ │ │ │ │ ├── algokit:cli:features:project:link.md
│ │ │ │ │ ├── algokit:cli:features:project:list.md
│ │ │ │ │ ├── algokit:cli:features:project:run.md
│ │ │ │ │ ├── algokit:cli:features:project.md
│ │ │ │ │ ├── algokit:cli:features:tasks:analyze.md
│ │ │ │ │ ├── algokit:cli:features:tasks:ipfs.md
│ │ │ │ │ ├── algokit:cli:features:tasks:mint.md
│ │ │ │ │ ├── algokit:cli:features:tasks:nfd.md
│ │ │ │ │ ├── algokit:cli:features:tasks:opt.md
│ │ │ │ │ ├── algokit:cli:features:tasks:send.md
│ │ │ │ │ ├── algokit:cli:features:tasks:sign.md
│ │ │ │ │ ├── algokit:cli:features:tasks:transfer.md
│ │ │ │ │ ├── algokit:cli:features:tasks:vanity_address.md
│ │ │ │ │ ├── algokit:cli:features:tasks:wallet.md
│ │ │ │ │ ├── algokit:cli:features:tasks.md
│ │ │ │ │ ├── algokit:cli:tutorials:algokit-template.md
│ │ │ │ │ ├── algokit:cli:tutorials:intro.md
│ │ │ │ │ ├── algokit:cli:tutorials:smart-contracts.md
│ │ │ │ │ ├── algokit:docs:testnet_api.md
│ │ │ │ │ ├── algokit:lora:README.md
│ │ │ │ │ ├── algokit:README.md
│ │ │ │ │ ├── algokit:utils:python:markdown:apidocs:algokit_utils:algokit_utils.md
│ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:account.md
│ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:app-client.md
│ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:app-deploy.md
│ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:client.md
│ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:debugger.md
│ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:dispenser-client.md
│ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:transfer.md
│ │ │ │ │ ├── algokit:utils:python:markdown:index.md
│ │ │ │ │ ├── algokit:utils:python:README.md
│ │ │ │ │ ├── algokit:utils:python:source:capabilities:account.md
│ │ │ │ │ ├── algokit:utils:python:source:capabilities:app-client.md
│ │ │ │ │ ├── algokit:utils:python:source:capabilities:app-deploy.md
│ │ │ │ │ ├── algokit:utils:python:source:capabilities:client.md
│ │ │ │ │ ├── algokit:utils:python:source:capabilities:debugger.md
│ │ │ │ │ ├── algokit:utils:python:source:capabilities:dispenser-client.md
│ │ │ │ │ ├── algokit:utils:python:source:capabilities:transfer.md
│ │ │ │ │ ├── algokit:utils:python:source:index.md
│ │ │ │ │ ├── algokit:utils:typescript:capabilities:account.md
│ │ │ │ │ ├── algokit:utils:typescript:capabilities:algorand-client.md
│ │ │ │ │ ├── algokit:utils:typescript:capabilities:amount.md
│ │ │ │ │ ├── algokit:utils:typescript:capabilities:app-client.md
│ │ │ │ │ ├── algokit:utils:typescript:capabilities:app-deploy.md
│ │ │ │ │ ├── algokit:utils:typescript:capabilities:app.md
│ │ │ │ │ ├── algokit:utils:typescript:capabilities:asset.md
│ │ │ │ │ ├── algokit:utils:typescript:capabilities:client.md
│ │ │ │ │ ├── algokit:utils:typescript:capabilities:debugging.md
│ │ │ │ │ ├── algokit:utils:typescript:capabilities:dispenser-client.md
│ │ │ │ │ ├── algokit:utils:typescript:capabilities:event-emitter.md
│ │ │ │ │ ├── algokit:utils:typescript:capabilities:indexer.md
│ │ │ │ │ ├── algokit:utils:typescript:capabilities:testing.md
│ │ │ │ │ ├── algokit:utils:typescript:capabilities:transaction-composer.md
│ │ │ │ │ ├── algokit:utils:typescript:capabilities:transaction.md
│ │ │ │ │ ├── algokit:utils:typescript:capabilities:transfer.md
│ │ │ │ │ ├── algokit:utils:typescript:capabilities:typed-app-clients.md
│ │ │ │ │ ├── algokit:utils:typescript:code:classes:testing.TestLogger.md
│ │ │ │ │ ├── algokit:utils:typescript:code:classes:testing.TransactionLogger.md
│ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_account_manager.AccountManager.md
│ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_account.MultisigAccount.md
│ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_account.SigningAccount.md
│ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md
│ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_algorand_client_transaction_creator.AlgorandClientTransactionCreator.md
│ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_algorand_client_transaction_sender.AlgorandClientTransactionSender.md
│ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_algorand_client.AlgorandClient.md
│ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_amount.AlgoAmount.md
│ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_arc56.Arc56Method.md
│ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_client.AppClient.md
│ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_client.ApplicationClient.md
│ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_deployer.AppDeployer.md
│ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_factory.AppFactory.md
│ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_manager.AppManager.md
│ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_asset_manager.AssetManager.md
│ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_async_event_emitter.AsyncEventEmitter.md
│ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_client_manager.ClientManager.md
│ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_composer.TransactionComposer.md
│ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_config.UpdatableConfig.md
│ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_dispenser_client.TestNetDispenserApiClient.md
│ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_kmd_account_manager.KmdAccountManager.md
│ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_logic_error.LogicError.md
│ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_app.OnSchemaBreak.md
│ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_app.OnUpdate.md
│ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_indexer.AccountStatus.md
│ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_indexer.ApplicationOnComplete.md
│ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_indexer.SignatureType.md
│ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_lifecycle_events.EventType.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_account_manager.EnsureFundedResult.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_account.AccountConfig.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_account.TransactionSignerAccount.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_algorand_client_interface.AlgorandClientInterface.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.Arc56Contract.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.Event.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.Method.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.ProgramSourceInfo.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.StorageKey.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.StorageMap.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.StructField.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCallABIArgs.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCallCoreParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCompilationParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCompilationResult.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientDeployCallInterfaceParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientDeployCoreParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientDeployParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppSourceMaps.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.FundAppAccountParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.ResolveAppById.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.ResolveAppByIdBase.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.SourceMapExport.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_deployer.AppLookup.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_deployer.AppMetadata.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_factory.AppFactoryParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_manager.AppInformation.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_manager.BoxReference.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_manager.BoxValueRequestParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_manager.BoxValuesRequestParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.AppSources.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.AppSpec.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.CallConfig.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.DeclaredSchemaValueSpec.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.Hint.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.ReservedSchemaValueSpec.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.Schema.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.SchemaSpec.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.StateSchemaSpec.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.Struct.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppCallParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppCallTransactionResultOfType.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppCompilationResult.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppDeploymentParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppDeployMetadata.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppLookup.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppMetadata.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppReference.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppState.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppStorageSchema.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.BoxName.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.BoxReference.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.BoxValueRequestParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.BoxValuesRequestParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.CompiledTeal.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.CoreAppCallArgs.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.CreateAppParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.RawAppCallArgs.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.TealTemplateParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.UpdateAppParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset_manager.AssetInformation.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset_manager.BulkAssetOptInOutResult.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset.AssetBulkOptInOutParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset.AssetOptInParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset.AssetOptOutParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset.CreateAssetParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_client_manager.AlgoSdkClients.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_client_manager.TypedAppClient.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_client_manager.TypedAppFactory.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_composer.BuiltTransactions.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_config.Config.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_debugging.AVMTracesEventData.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_debugging.TealSourceDebugEventData.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_debugging.TealSourcesDebugEventData.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_dispenser_client.DispenserFundResponse.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_dispenser_client.DispenserLimitResponse.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_dispenser_client.TestNetDispenserApiClientParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_indexer.LookupAssetHoldingsOptions.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_logic_error.LogicErrorDetails.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_network_client.AlgoClientConfig.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_network_client.AlgoConfig.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_network_client.NetworkDetails.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.AlgoKitLogCaptureFixture.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.AlgorandFixture.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.AlgorandFixtureConfig.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.AlgorandTestAutomationContext.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.GetTestAccountParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.LogSnapshotConfig.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.AtomicTransactionComposerToSend.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.ConfirmedTransactionResult.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.ConfirmedTransactionResults.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.SendAtomicTransactionComposerResults.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.SendParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.SendTransactionParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.SendTransactionResult.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.SendTransactionResults.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.TransactionGroupToSend.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.TransactionToSign.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transfer.AlgoRekeyParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transfer.AlgoTransferParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transfer.EnsureFundedParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transfer.EnsureFundedReturnType.md
│ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transfer.TransferAssetParams.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:index.indexer.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:index.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:testing.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_account_manager_spec.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_account_manager.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_account.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algo_http_client_with_retry.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_asset_spec.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_interface.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_spec.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_transaction_creator.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_transaction_sender.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_transfer_spec.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_amount_spec.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_amount.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_arc56.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_client_spec.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_client.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_deployer.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_factory_and_client_spec.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_factory.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_manager.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_spec.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_asset_manager.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_asset.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_async_event_emitter_spec.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_async_event_emitter.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_client_manager_spec.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_client_manager.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_composer.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_config.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_debugging.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_dispenser_client_spec.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_dispenser_client.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_expand.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_indexer.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_kmd_account_manager.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_lifecycle_events.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_logging.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_logic_error.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_network_client.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_testing.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_transaction.md
│ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_transfer.md
│ │ │ │ │ ├── algokit:utils:typescript:code:README.md
│ │ │ │ │ ├── algokit:utils:typescript:README.md
│ │ │ │ │ ├── algokit:utils:typescript:v7-migration.md
│ │ │ │ │ ├── algokit:utils:typescript:v8-migration.md
│ │ │ │ │ ├── ARCs:ARC-template.md
│ │ │ │ │ ├── ARCs:assets:arc-0012:README.md
│ │ │ │ │ ├── ARCs:assets:arc-0034:TemplateForm.md
│ │ │ │ │ ├── ARCs:assets:arc-0062:README.md
│ │ │ │ │ ├── ARCs:pages:nfts.md
│ │ │ │ │ ├── ARCs:pages:wallets.md
│ │ │ │ │ ├── ARCs:README.md
│ │ │ │ │ ├── ARCs:specs:arc-0000.md
│ │ │ │ │ ├── ARCs:specs:arc-0001.md
│ │ │ │ │ ├── ARCs:specs:arc-0002.md
│ │ │ │ │ ├── ARCs:specs:arc-0003.md
│ │ │ │ │ ├── ARCs:specs:arc-0004.md
│ │ │ │ │ ├── ARCs:specs:arc-0005.md
│ │ │ │ │ ├── ARCs:specs:arc-0006.md
│ │ │ │ │ ├── ARCs:specs:arc-0007.md
│ │ │ │ │ ├── ARCs:specs:arc-0008.md
│ │ │ │ │ ├── ARCs:specs:arc-0009.md
│ │ │ │ │ ├── ARCs:specs:arc-0010.md
│ │ │ │ │ ├── ARCs:specs:arc-0011.md
│ │ │ │ │ ├── ARCs:specs:arc-0012.md
│ │ │ │ │ ├── ARCs:specs:arc-0015.md
│ │ │ │ │ ├── ARCs:specs:arc-0016.md
│ │ │ │ │ ├── ARCs:specs:arc-0018.md
│ │ │ │ │ ├── ARCs:specs:arc-0019.md
│ │ │ │ │ ├── ARCs:specs:arc-0020.md
│ │ │ │ │ ├── ARCs:specs:arc-0021.md
│ │ │ │ │ ├── ARCs:specs:arc-0022.md
│ │ │ │ │ ├── ARCs:specs:arc-0023.md
│ │ │ │ │ ├── ARCs:specs:arc-0025.md
│ │ │ │ │ ├── ARCs:specs:arc-0026.md
│ │ │ │ │ ├── ARCs:specs:arc-0028.md
│ │ │ │ │ ├── ARCs:specs:arc-0032.md
│ │ │ │ │ ├── ARCs:specs:arc-0033.md
│ │ │ │ │ ├── ARCs:specs:arc-0034.md
│ │ │ │ │ ├── ARCs:specs:arc-0035.md
│ │ │ │ │ ├── ARCs:specs:arc-0036.md
│ │ │ │ │ ├── ARCs:specs:arc-0042.md
│ │ │ │ │ ├── ARCs:specs:arc-0047.md
│ │ │ │ │ ├── ARCs:specs:arc-0048.md
│ │ │ │ │ ├── ARCs:specs:arc-0049.md
│ │ │ │ │ ├── ARCs:specs:arc-0054.md
│ │ │ │ │ ├── ARCs:specs:arc-0055.md
│ │ │ │ │ ├── ARCs:specs:arc-0056.md
│ │ │ │ │ ├── ARCs:specs:arc-0059.md
│ │ │ │ │ ├── ARCs:specs:arc-0062.md
│ │ │ │ │ ├── ARCs:specs:arc-0065.md
│ │ │ │ │ ├── ARCs:specs:arc-0069.md
│ │ │ │ │ ├── ARCs:specs:arc-0072.md
│ │ │ │ │ ├── ARCs:specs:arc-0073.md
│ │ │ │ │ ├── ARCs:specs:arc-0074.md
│ │ │ │ │ ├── ARCs:specs:arc-0076.md
│ │ │ │ │ ├── ARCs:specs:arc-0078.md
│ │ │ │ │ ├── ARCs:specs:arc-0079.md
│ │ │ │ │ ├── ARCs:specs:arc-0200.md
│ │ │ │ │ ├── clis_index.md
│ │ │ │ │ ├── developer:docs:about.md
│ │ │ │ │ ├── developer:docs:clis:algokey:algokey.md
│ │ │ │ │ ├── developer:docs:clis:algokey:generate.md
│ │ │ │ │ ├── developer:docs:clis:algokey:import.md
│ │ │ │ │ ├── developer:docs:clis:algokey:multisig:append-auth-addr.md
│ │ │ │ │ ├── developer:docs:clis:algokey:multisig:multisig.md
│ │ │ │ │ ├── developer:docs:clis:algokey:part:info.md
│ │ │ │ │ ├── developer:docs:clis:algokey:part:part.md
│ │ │ │ │ ├── developer:docs:clis:algokey:part:reparent.md
│ │ │ │ │ ├── developer:docs:clis:algokey:sign.md
│ │ │ │ │ ├── developer:docs:clis:conduit:conduit.md
│ │ │ │ │ ├── developer:docs:clis:conduit:init.md
│ │ │ │ │ ├── developer:docs:clis:conduit:list:exporters.md
│ │ │ │ │ ├── developer:docs:clis:conduit:list:importers.md
│ │ │ │ │ ├── developer:docs:clis:conduit:list:list.md
│ │ │ │ │ ├── developer:docs:clis:conduit:list:processors.md
│ │ │ │ │ ├── developer:docs:clis:diagcfg:diagcfg.md
│ │ │ │ │ ├── developer:docs:clis:diagcfg:metric:disable.md
│ │ │ │ │ ├── developer:docs:clis:diagcfg:metric:enable.md
│ │ │ │ │ ├── developer:docs:clis:diagcfg:metric:metric.md
│ │ │ │ │ ├── developer:docs:clis:diagcfg:metric:status.md
│ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:disable.md
│ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:enable.md
│ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:endpoint.md
│ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:name.md
│ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:status.md
│ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:telemetry.md
│ │ │ │ │ ├── developer:docs:clis:goal:node:restart.md
│ │ │ │ │ ├── developer:docs:clis:goal:node:start.md
│ │ │ │ │ ├── developer:docs:clis:goal:node:status.md
│ │ │ │ │ ├── developer:docs:clis:goal:node:stop.md
│ │ │ │ │ ├── developer:docs:clis:goal:node:wait.md
│ │ │ │ │ ├── developer:docs:clis:goal:protocols.md
│ │ │ │ │ ├── developer:docs:clis:goal:report.md
│ │ │ │ │ ├── developer:docs:clis:goal:version.md
│ │ │ │ │ ├── developer:docs:clis:goal:wallet:list.md
│ │ │ │ │ ├── developer:docs:clis:goal:wallet:new.md
│ │ │ │ │ ├── developer:docs:clis:goal:wallet:wallet.md
│ │ │ │ │ ├── developer:docs:clis:indexer:api-config.md
│ │ │ │ │ ├── developer:docs:clis:indexer:daemon.md
│ │ │ │ │ ├── developer:docs:clis:indexer:indexer.md
│ │ │ │ │ ├── developer:docs:clis:indexer:util:util.md
│ │ │ │ │ ├── developer:docs:clis:indexer:util:validator.md
│ │ │ │ │ ├── developer:docs:clis:kmd.md
│ │ │ │ │ ├── developer:docs:clis:tealdbg:debug.md
│ │ │ │ │ ├── developer:docs:clis:tealdbg:remote.md
│ │ │ │ │ ├── developer:docs:clis:tealdbg:tealdbg.md
│ │ │ │ │ ├── developer:docs:details:accounts:create.md
│ │ │ │ │ ├── developer:docs:details:accounts:index.md
│ │ │ │ │ ├── developer:docs:details:accounts:rekey.md
│ │ │ │ │ ├── developer:docs:details:algorand_consensus.md
│ │ │ │ │ ├── developer:docs:details:algorand-networks:betanet.md
│ │ │ │ │ ├── developer:docs:details:algorand-networks:index.md
│ │ │ │ │ ├── developer:docs:details:algorand-networks:mainnet.md
│ │ │ │ │ ├── developer:docs:details:algorand-networks:testnet.md
│ │ │ │ │ ├── developer:docs:details:asa.md
│ │ │ │ │ ├── developer:docs:details:atc.md
│ │ │ │ │ ├── developer:docs:details:atomic_transfers.md
│ │ │ │ │ ├── developer:docs:details:conduit.md
│ │ │ │ │ ├── developer:docs:details:crust.md
│ │ │ │ │ ├── developer:docs:details:dapps:avm:index.md
│ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:guidelines.md
│ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:index.md
│ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:jsonspec.md
│ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:index.md
│ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v1.md
│ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v10.md
│ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v2.md
│ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v3.md
│ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v4.md
│ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v5.md
│ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v6.md
│ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v7.md
│ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v8.md
│ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v9.md
│ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:specification.md
│ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:ABI:index.md
│ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:apps:create.md
│ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:apps:index.md
│ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:apps:innertx.md
│ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:apps:state.md
│ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:apps:txs.md
│ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:debugging.md
│ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:frontend:apps.md
│ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:frontend:smartsigs.md
│ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:guidelines.md
│ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:index.md
│ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:smartsigs:index.md
│ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:smartsigs:modes.md
│ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:smartsigs:walkthrough.md
│ │ │ │ │ ├── developer:docs:details:dapps:writing-contracts:beaker.md
│ │ │ │ │ ├── developer:docs:details:dapps:writing-contracts:pyteal.md
│ │ │ │ │ ├── developer:docs:details:dapps:writing-contracts:python.md
│ │ │ │ │ ├── developer:docs:details:encoding.md
│ │ │ │ │ ├── developer:docs:details:ethereum_to_algorand.md
│ │ │ │ │ ├── developer:docs:details:index.md
│ │ │ │ │ ├── developer:docs:details:indexer.md
│ │ │ │ │ ├── developer:docs:details:parameter_tables.md
│ │ │ │ │ ├── developer:docs:details:stateproofs:index.md
│ │ │ │ │ ├── developer:docs:details:stateproofs:light_client.md
│ │ │ │ │ ├── developer:docs:details:technical_faq.md
│ │ │ │ │ ├── developer:docs:details:transactions:index.md
│ │ │ │ │ ├── developer:docs:details:transactions:offline_transactions.md
│ │ │ │ │ ├── developer:docs:details:transactions:payment_prompts.md
│ │ │ │ │ ├── developer:docs:details:transactions:signatures.md
│ │ │ │ │ ├── developer:docs:details:transactions:transactions.md
│ │ │ │ │ ├── developer:docs:details:useful_resources.md
│ │ │ │ │ ├── developer:docs:get-started:algokit.md
│ │ │ │ │ ├── developer:docs:get-started:basics:what_is_blockchain.md
│ │ │ │ │ ├── developer:docs:get-started:basics:whats_a_dapp.md
│ │ │ │ │ ├── developer:docs:get-started:basics:where_to_start.md
│ │ │ │ │ ├── developer:docs:get-started:basics:why_algorand.md
│ │ │ │ │ ├── developer:docs:get-started:tokenization:ft.md
│ │ │ │ │ ├── developer:docs:get-started:tokenization:nft.md
│ │ │ │ │ ├── developer:docs:index.md
│ │ │ │ │ ├── developer:docs:rest-apis:algod.md
│ │ │ │ │ ├── developer:docs:rest-apis:indexer.md
│ │ │ │ │ ├── developer:docs:rest-apis:kmd.md
│ │ │ │ │ ├── developer:docs:rest-apis:restendpoints.md
│ │ │ │ │ ├── developer:docs:run-a-node:operations:catchup.md
│ │ │ │ │ ├── developer:docs:run-a-node:operations:switch_networks.md
│ │ │ │ │ ├── developer:docs:run-a-node:participate:generate_keys.md
│ │ │ │ │ ├── developer:docs:run-a-node:participate:index.md
│ │ │ │ │ ├── developer:docs:run-a-node:participate:offline.md
│ │ │ │ │ ├── developer:docs:run-a-node:participate:online.md
│ │ │ │ │ ├── developer:docs:run-a-node:participate:renew.md
│ │ │ │ │ ├── developer:docs:run-a-node:reference:artifacts.md
│ │ │ │ │ ├── developer:docs:run-a-node:reference:config.md
│ │ │ │ │ ├── developer:docs:run-a-node:reference:relay.md
│ │ │ │ │ ├── developer:docs:run-a-node:reference:telemetry-config.md
│ │ │ │ │ ├── developer:docs:run-a-node:setup:indexer.md
│ │ │ │ │ ├── developer:docs:run-a-node:setup:install.md
│ │ │ │ │ ├── developer:docs:run-a-node:setup:node-troubleshooting.md
│ │ │ │ │ ├── developer:docs:run-a-node:setup:types.md
│ │ │ │ │ ├── developer:docs:sdks:go:index.md
│ │ │ │ │ ├── developer:docs:sdks:index.md
│ │ │ │ │ ├── developer:docs:sdks:java:index.md
│ │ │ │ │ ├── developer:docs:sdks:javascript:index.md
│ │ │ │ │ ├── developer:docs:sdks:python:index.md
│ │ │ │ │ ├── developer:python:code:example:accounts.md
│ │ │ │ │ ├── developer:python:code:example:arc4_types.md
│ │ │ │ │ ├── developer:python:code:example:assets.md
│ │ │ │ │ ├── developer:python:code:example:box_storage.md
│ │ │ │ │ ├── developer:python:code:example:control_flow.md
│ │ │ │ │ ├── developer:python:code:example:crypto:merkle_tree.md
│ │ │ │ │ ├── developer:python:code:example:defi:amm.md
│ │ │ │ │ ├── developer:python:code:example:defi:auction.md
│ │ │ │ │ ├── developer:python:code:example:defi:htlc_logicsig.md
│ │ │ │ │ ├── developer:python:code:example:defi:marketplace.md
│ │ │ │ │ ├── developer:python:code:example:events:arc28_events.md
│ │ │ │ │ ├── developer:python:code:example:global_storage.md
│ │ │ │ │ ├── developer:python:code:example:governance:simple_voting.md
│ │ │ │ │ ├── developer:python:code:example:hello_world.md
│ │ │ │ │ ├── developer:python:code:example:inner_transactions.md
│ │ │ │ │ ├── developer:python:code:example:local_storage.md
│ │ │ │ │ ├── developer:python:code:example:nft:proof_of_attendance.md
│ │ │ │ │ ├── developer:python:code:example:privacy:zk_whitelist.md
│ │ │ │ │ ├── developer:python:code:example:scratch_storage.md
│ │ │ │ │ ├── developer:python:code:example:self_payment.md
│ │ │ │ │ ├── developer:python:code:example:struct_in_box.md
│ │ │ │ │ ├── developer:python:code:example:subsidize_app_call.md
│ │ │ │ │ ├── developer:python:code:example:transactions.md
│ │ │ │ │ ├── developer:python:code:example:utility:calculator.md
│ │ │ │ │ ├── devportal-code-examples:projects:python-contract-examples:README.md
│ │ │ │ │ ├── devportal-code-examples:README.md
│ │ │ │ │ ├── docs:.walletconnect:index.md
│ │ │ │ │ ├── docs:.walletconnect:walletconnect-schema.md
│ │ │ │ │ ├── docs:README.md
│ │ │ │ │ ├── docs:scripts:example_tracker:example_list.md
│ │ │ │ │ ├── docs:scripts:README.md
│ │ │ │ │ ├── index.md
│ │ │ │ │ ├── liquid_auth_index.md
│ │ │ │ │ ├── liquid-auth:ARCHITECTURE.md
│ │ │ │ │ ├── liquid-auth:decisions:1-Service-Authentication.md
│ │ │ │ │ ├── liquid-auth:decisions:2-Bidirectional-Communication.md
│ │ │ │ │ ├── liquid-auth:decisions:3-Peer-to-Peer-Signaling.md
│ │ │ │ │ ├── liquid-auth:decisions:4-Fido-Extension.md
│ │ │ │ │ ├── liquid-auth:decisions:README.md
│ │ │ │ │ ├── liquid-auth:docs:architecture.md
│ │ │ │ │ ├── liquid-auth:docs:clients:android:provider-service:authenticate.md
│ │ │ │ │ ├── liquid-auth:docs:clients:android:provider-service:register.md
│ │ │ │ │ ├── liquid-auth:docs:clients:browser:authentication.md
│ │ │ │ │ ├── liquid-auth:docs:clients:browser:example.md
│ │ │ │ │ ├── liquid-auth:docs:introduction.md
│ │ │ │ │ ├── liquid-auth:docs:README.md
│ │ │ │ │ ├── liquid-auth:docs:server:environment-variables.md
│ │ │ │ │ ├── liquid-auth:docs:server:integrations.md
│ │ │ │ │ ├── liquid-auth:docs:server:introduction.md
│ │ │ │ │ ├── liquid-auth:docs:server:running-locally.md
│ │ │ │ │ ├── liquid-auth:README.md
│ │ │ │ │ ├── liquid-auth:SEQUENCE.md
│ │ │ │ │ ├── liquid-auth:services:liquid-auth-api-js:src:assertion:assertion.controller.post.request.md
│ │ │ │ │ ├── liquid-auth:services:liquid-auth-api-js:src:assertion:assertion.controller.post.response.md
│ │ │ │ │ ├── liquid-auth:services:liquid-auth-api-js:src:attestation:attestation.controller.post.request.md
│ │ │ │ │ ├── liquid-auth:services:liquid-auth-api-js:src:auth:auth.controller.get.user.md
│ │ │ │ │ ├── liquid-auth:sites:express-dapp:README.md
│ │ │ │ │ ├── liquid-auth:VISION.md
│ │ │ │ │ ├── puya_index.md
│ │ │ │ │ ├── puya:docs:algopy_testing:index.md
│ │ │ │ │ ├── puya:docs:api-algopy.arc4.md
│ │ │ │ │ ├── puya:docs:api-algopy.gtxn.md
│ │ │ │ │ ├── puya:docs:api-algopy.itxn.md
│ │ │ │ │ ├── puya:docs:api-algopy.md
│ │ │ │ │ ├── puya:docs:api-algopy.op.md
│ │ │ │ │ ├── puya:docs:api.md
│ │ │ │ │ ├── puya:docs:compiler.md
│ │ │ │ │ ├── puya:docs:index.md
│ │ │ │ │ ├── puya:docs:language-guide.md
│ │ │ │ │ ├── puya:docs:lg-arc28.md
│ │ │ │ │ ├── puya:docs:lg-arc4.md
│ │ │ │ │ ├── puya:docs:lg-builtins.md
│ │ │ │ │ ├── puya:docs:lg-calling-apps.md
│ │ │ │ │ ├── puya:docs:lg-compile.md
│ │ │ │ │ ├── puya:docs:lg-control.md
│ │ │ │ │ ├── puya:docs:lg-errors.md
│ │ │ │ │ ├── puya:docs:lg-logs.md
│ │ │ │ │ ├── puya:docs:lg-modules.md
│ │ │ │ │ ├── puya:docs:lg-opcode-budget.md
│ │ │ │ │ ├── puya:docs:lg-ops.md
│ │ │ │ │ ├── puya:docs:lg-storage.md
│ │ │ │ │ ├── puya:docs:lg-structure.md
│ │ │ │ │ ├── puya:docs:lg-transactions.md
│ │ │ │ │ ├── puya:docs:lg-types.md
│ │ │ │ │ ├── puya:docs:lg-unsupported-python-features.md
│ │ │ │ │ ├── puya:docs:principles.md
│ │ │ │ │ ├── puya:examples:auction:README.md
│ │ │ │ │ ├── puya:python:testing:docs:algopy.md
│ │ │ │ │ ├── puya:python:testing:docs:api.md
│ │ │ │ │ ├── puya:python:testing:docs:coverage.md
│ │ │ │ │ ├── puya:python:testing:docs:examples.md
│ │ │ │ │ ├── puya:python:testing:docs:faq.md
│ │ │ │ │ ├── puya:python:testing:docs:index.md
│ │ │ │ │ ├── puya:python:testing:docs:testing-guide:arc4-types.md
│ │ │ │ │ ├── puya:python:testing:docs:testing-guide:avm-types.md
│ │ │ │ │ ├── puya:python:testing:docs:testing-guide:concepts.md
│ │ │ │ │ ├── puya:python:testing:docs:testing-guide:contract-testing.md
│ │ │ │ │ ├── puya:python:testing:docs:testing-guide:index.md
│ │ │ │ │ ├── puya:python:testing:docs:testing-guide:opcodes.md
│ │ │ │ │ ├── puya:python:testing:docs:testing-guide:signature-testing.md
│ │ │ │ │ ├── puya:python:testing:docs:testing-guide:state-management.md
│ │ │ │ │ ├── puya:python:testing:docs:testing-guide:subroutines.md
│ │ │ │ │ ├── puya:python:testing:docs:testing-guide:transactions.md
│ │ │ │ │ ├── puya:python:testing:examples:README.md
│ │ │ │ │ ├── puya:python:testing:README.md
│ │ │ │ │ ├── puya:README.md
│ │ │ │ │ ├── puya:src:puya:ARCHITECTURE.md
│ │ │ │ │ ├── puya:src:puyapy:_typeshed:README.md
│ │ │ │ │ ├── puya:src:puyapy:_vendor:mypy:typeshed:stdlib:_typeshed:README.md
│ │ │ │ │ ├── puya:src:puyapy:awst_build:README.md
│ │ │ │ │ ├── puya:stubs:README.md
│ │ │ │ │ ├── puya:tests:test_expected_output:README.md
│ │ │ │ │ ├── puya:typescript:docs:architecture-decisions:2024-05-21_primitive-bytes-and-strings.md
│ │ │ │ │ ├── puya:typescript:docs:architecture-decisions:2024-05-21_primitive-integer-types.md
│ │ │ │ │ ├── puya:typescript:docs:README.md
│ │ │ │ │ ├── puya:typescript:packages:algo-ts:readme.md
│ │ │ │ │ ├── puya:typescript:README.md
│ │ │ │ │ ├── SDKs:javascript:classes:ABIAddressType.md
│ │ │ │ │ ├── SDKs:javascript:classes:ABIArrayDynamicType.md
│ │ │ │ │ ├── SDKs:javascript:classes:ABIArrayStaticType.md
│ │ │ │ │ ├── SDKs:javascript:classes:ABIBoolType.md
│ │ │ │ │ ├── SDKs:javascript:classes:ABIByteType.md
│ │ │ │ │ ├── SDKs:javascript:classes:ABIContract.md
│ │ │ │ │ ├── SDKs:javascript:classes:ABIInterface.md
│ │ │ │ │ ├── SDKs:javascript:classes:ABIMethod.md
│ │ │ │ │ ├── SDKs:javascript:classes:ABIStringType.md
│ │ │ │ │ ├── SDKs:javascript:classes:ABITupleType.md
│ │ │ │ │ ├── SDKs:javascript:classes:ABIType.md
│ │ │ │ │ ├── SDKs:javascript:classes:ABIUfixedType.md
│ │ │ │ │ ├── SDKs:javascript:classes:ABIUintType.md
│ │ │ │ │ ├── SDKs:javascript:classes:Algodv2.md
│ │ │ │ │ ├── SDKs:javascript:classes:AtomicTransactionComposer.md
│ │ │ │ │ ├── SDKs:javascript:classes:DryrunResult.md
│ │ │ │ │ ├── SDKs:javascript:classes:Indexer.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Account.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AccountParticipation.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AccountResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AccountsResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AccountStateDelta.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Application.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationLocalState.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationLocalStatesResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationLogData.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationLogsResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationParams.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationsResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationStateSchema.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Asset.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetBalancesResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetHolding.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetHoldingsResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetParams.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetsResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Block.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.BlockRewards.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.BlockUpgradeState.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.BlockUpgradeVote.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Box.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.BoxDescriptor.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.BoxesResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ErrorResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.EvalDelta.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.EvalDeltaKeyValue.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.HashFactory.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.HealthCheck.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.IndexerStateProofMessage.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.MerkleArrayProof.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.MiniAssetHolding.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ParticipationUpdates.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofFields.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofParticipant.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofReveal.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofSignature.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofSigSlot.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofTracking.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofVerifier.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateSchema.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TealKeyValue.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TealValue.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Transaction.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionApplication.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionAssetConfig.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionAssetFreeze.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionAssetTransfer.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionKeyreg.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionPayment.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionSignature.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionSignatureLogicsig.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionSignatureMultisig.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionSignatureMultisigSubsignature.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionsResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionStateProof.md
│ │ │ │ │ ├── SDKs:javascript:classes:Kmd.md
│ │ │ │ │ ├── SDKs:javascript:classes:LogicSig.md
│ │ │ │ │ ├── SDKs:javascript:classes:LogicSigAccount.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.Account.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountApplicationResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountAssetHolding.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountAssetResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountAssetsInformationResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountParticipation.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountStateDelta.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AppCallLogs.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.Application.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationInitialStates.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationKVStorage.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationLocalReference.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationLocalState.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationParams.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationStateOperation.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationStateSchema.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.Asset.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AssetHolding.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AssetHoldingReference.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AssetParams.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AvmKeyValue.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AvmValue.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BlockHashResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BlockLogsResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BlockResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BlockTxidsResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.Box.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BoxDescriptor.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BoxesResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BoxReference.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BuildVersion.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.CompileResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DisassembleResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DryrunRequest.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DryrunResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DryrunSource.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DryrunState.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DryrunTxnResult.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ErrorResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.EvalDelta.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.EvalDeltaKeyValue.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.GetBlockTimeStampOffsetResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.GetSyncRoundResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.KvDelta.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.LedgerStateDeltaForTransactionGroup.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.LightBlockHeaderProof.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.NodeStatusResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.PendingTransactionResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.PendingTransactionsResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.PostTransactionsResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ScratchChange.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateInitialStates.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateRequest.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateRequestTransactionGroup.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateTraceConfig.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateTransactionGroupResult.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateTransactionResult.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateUnnamedResourcesAccessed.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulationEvalOverrides.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulationOpcodeTraceUnit.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulationTransactionExecTrace.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.StateProof.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.StateProofMessage.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SupplyResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.TealKeyValue.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.TealValue.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.TransactionGroupLedgerStateDeltasForRoundResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.TransactionParametersResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.TransactionProofResponse.md
│ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.Version.md
│ │ │ │ │ ├── SDKs:javascript:classes:SourceMap.md
│ │ │ │ │ ├── SDKs:javascript:classes:Transaction.md
│ │ │ │ │ ├── SDKs:javascript:enums:ABIReferenceType.md
│ │ │ │ │ ├── SDKs:javascript:enums:ABITransactionType.md
│ │ │ │ │ ├── SDKs:javascript:enums:AtomicTransactionComposerStatus.md
│ │ │ │ │ ├── SDKs:javascript:enums:IntDecoding.md
│ │ │ │ │ ├── SDKs:javascript:enums:OnApplicationComplete.md
│ │ │ │ │ ├── SDKs:javascript:enums:TransactionType.md
│ │ │ │ │ ├── SDKs:javascript:examples:README.md
│ │ │ │ │ ├── SDKs:javascript:FAQ.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:ABIContractNetworkInfo.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:ABIContractNetworks.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:ABIContractParams.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:ABIInterfaceParams.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:ABIMethodArgParams.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:ABIMethodParams.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:ABIMethodReturnParams.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:ABIResult.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:Account.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:Address.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:AlgodTokenHeader.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:BaseHTTPClient.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:BaseHTTPClientError.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:BaseHTTPClientResponse.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:BoxReference.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:CustomTokenHeader.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedAssetParams.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedBoxReference.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedGlobalStateSchema.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedLocalStateSchema.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedLogicSig.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedLogicSigAccount.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedMultisig.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedSignedTransaction.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedSubsig.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedTransaction.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:IndexerTokenHeader.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:KMDTokenHeader.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:MultisigMetadata.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:SignedTransaction.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:SuggestedParams.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:TransactionParams.md
│ │ │ │ │ ├── SDKs:javascript:interfaces:TransactionWithSigner.md
│ │ │ │ │ ├── SDKs:javascript:modules:indexerModels.md
│ │ │ │ │ ├── SDKs:javascript:modules:modelsv2.md
│ │ │ │ │ ├── SDKs:javascript:modules.md
│ │ │ │ │ ├── SDKs:javascript:README.md
│ │ │ │ │ ├── SDKs:python:algosdk:v2client:harness:README.md
│ │ │ │ │ ├── SDKs:python:examples:README.md
│ │ │ │ │ ├── SDKs:python:README.md
│ │ │ │ │ ├── tealscript:examples_amm_README.md
│ │ │ │ │ ├── tealscript:examples_auction_README.md
│ │ │ │ │ ├── tealscript:examples_big_box_README.md
│ │ │ │ │ ├── tealscript:examples_itxns_README.md
│ │ │ │ │ ├── tealscript:examples_lsig_with_app_README.md
│ │ │ │ │ ├── tealscript:examples_reti_README.md
│ │ │ │ │ ├── tealscript:FEATURES.md
│ │ │ │ │ ├── tealscript:guides_atomic_txn.md
│ │ │ │ │ ├── tealscript:guides_features.md
│ │ │ │ │ ├── tealscript:guides_getting_started.md
│ │ │ │ │ ├── tealscript:guides_inner_transactions.md
│ │ │ │ │ ├── tealscript:guides_lifecycle.md
│ │ │ │ │ ├── tealscript:guides_math.md
│ │ │ │ │ ├── tealscript:guides_methods.md
│ │ │ │ │ ├── tealscript:guides_multiple_contracts.md
│ │ │ │ │ ├── tealscript:guides_pyteal.md
│ │ │ │ │ ├── tealscript:guides_storage.md
│ │ │ │ │ ├── tealscript:guides_Supported Types_arrays.md
│ │ │ │ │ ├── tealscript:guides_Supported Types_numbers.md
│ │ │ │ │ ├── TEALScript:README.md
│ │ │ │ │ ├── tealscript:tests_test_package_README.md
│ │ │ │ │ ├── tealscript:tutorials_Hello World_0001-intro.md
│ │ │ │ │ ├── tealscript:tutorials_Hello World_0002-init.md
│ │ │ │ │ ├── tealscript:tutorials_Hello World_0003-contract.md
│ │ │ │ │ ├── tealscript:tutorials_Hello World_0004-artifacts.md
│ │ │ │ │ ├── tealscript:tutorials_Hello World_0005-hello.md
│ │ │ │ │ └── tealscript:tutorials_Hello World_0006-test.md
│ │ │ │ └── taxonomy-categories
│ │ │ │ ├── algokit-utils.json
│ │ │ │ ├── algokit.json
│ │ │ │ ├── arcs.json
│ │ │ │ ├── clis.json
│ │ │ │ ├── details.json
│ │ │ │ ├── developers.json
│ │ │ │ ├── liquid-auth.json
│ │ │ │ ├── nodes.json
│ │ │ │ ├── puya.json
│ │ │ │ ├── python.json
│ │ │ │ ├── sdks.json
│ │ │ │ └── tealscript.json
│ │ │ └── wallet
│ │ │ └── index.ts
│ │ ├── tools
│ │ │ ├── accountManager.ts
│ │ │ ├── algodManager.ts
│ │ │ ├── apiManager
│ │ │ │ ├── algod
│ │ │ │ │ ├── account.ts
│ │ │ │ │ ├── application.ts
│ │ │ │ │ ├── asset.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── transaction.ts
│ │ │ │ ├── example
│ │ │ │ │ ├── get-balance.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── indexer
│ │ │ │ │ ├── account.ts
│ │ │ │ │ ├── application.ts
│ │ │ │ │ ├── asset.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── transaction.ts
│ │ │ │ ├── nfd
│ │ │ │ │ └── index.ts
│ │ │ │ ├── tinyman
│ │ │ │ │ ├── analytics.ts
│ │ │ │ │ ├── bootstrap.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── liquidity.ts
│ │ │ │ │ ├── opt_in.ts
│ │ │ │ │ ├── pool.ts
│ │ │ │ │ ├── remove_liquidity.ts
│ │ │ │ │ └── swap.ts
│ │ │ │ ├── ultrade
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── market.ts
│ │ │ │ │ ├── system.ts
│ │ │ │ │ └── wallet.ts
│ │ │ │ └── vestige
│ │ │ │ ├── assets.ts
│ │ │ │ ├── balances.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── networks.ts
│ │ │ │ ├── notes.ts
│ │ │ │ ├── pools.ts
│ │ │ │ ├── protocols.ts
│ │ │ │ ├── swaps.ts
│ │ │ │ └── vaults.ts
│ │ │ ├── arc26Manager.ts
│ │ │ ├── index.ts
│ │ │ ├── knowledgeManager.ts
│ │ │ ├── transactionManager
│ │ │ │ ├── accountTransactions.ts
│ │ │ │ ├── appTransactions
│ │ │ │ │ ├── callTxn.ts
│ │ │ │ │ ├── clearTxn.ts
│ │ │ │ │ ├── closeOutTxn.ts
│ │ │ │ │ ├── createTxn.ts
│ │ │ │ │ ├── deleteTxn.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── optInTxn.ts
│ │ │ │ │ ├── test
│ │ │ │ │ │ ├── counter_approval.teal
│ │ │ │ │ │ ├── counter_clear.teal
│ │ │ │ │ │ ├── storage_test_approval_v2.teal
│ │ │ │ │ │ ├── storage_test_approval.teal
│ │ │ │ │ │ └── storage_test_clear.teal
│ │ │ │ │ ├── types.ts
│ │ │ │ │ └── updateTxn.ts
│ │ │ │ ├── assetTransactions.ts
│ │ │ │ ├── generalTransaction.ts
│ │ │ │ └── index.ts
│ │ │ └── utilityManager.ts
│ │ ├── types.ts
│ │ └── utils
│ │ └── responseProcessor.ts
│ ├── tests
│ │ ├── resources
│ │ │ ├── algod
│ │ │ │ ├── account.test.ts
│ │ │ │ ├── application.test.ts
│ │ │ │ ├── asset.test.ts
│ │ │ │ └── transaction.test.ts
│ │ │ └── indexer
│ │ │ ├── account.test.ts
│ │ │ ├── application.test.ts
│ │ │ ├── asset.test.ts
│ │ │ └── transaction.test.ts
│ │ └── tools
│ │ ├── accountManager.test.ts
│ │ ├── algodManager.test.ts
│ │ ├── apiManager
│ │ │ └── example
│ │ │ └── get-balance.test.ts
│ │ ├── transactionManager
│ │ │ ├── accountTransactionManager.test.ts
│ │ │ ├── appTransactionManager.test.ts
│ │ │ ├── assetTransactionManager.test.ts
│ │ │ ├── generalTransactionManager.test.ts
│ │ │ └── transactionManager.test.ts
│ │ └── utilityManager.test.ts
│ └── tsconfig.json
├── README.md
├── rename_files.sh
└── tsconfig.json
```
# Files
--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:code:classes:types_app_client.ApplicationClient.md:
--------------------------------------------------------------------------------
```markdown
1 | [@algorandfoundation/algokit-utils](../README.md) / [types/app-client](../modules/types_app_client.md) / ApplicationClient
2 |
3 | # Class: ApplicationClient
4 |
5 | [types/app-client](../modules/types_app_client.md).ApplicationClient
6 |
7 | **`Deprecated`**
8 |
9 | Use `AppClient` instead e.g. via `algorand.client.getAppClientById` or
10 | `algorand.client.getAppClientByCreatorAndName`.
11 | If you want to `create` or `deploy` then use `AppFactory` e.g. via `algorand.client.getAppFactory`,
12 | which will in turn give you an `AppClient` instance against the created/deployed app to make other calls.
13 |
14 | Application client - a class that wraps an ARC-0032 app spec and provides high productivity methods to deploy and call the app
15 |
16 | ## Table of contents
17 |
18 | ### Constructors
19 |
20 | - [constructor](types_app_client.ApplicationClient.md#constructor)
21 |
22 | ### Properties
23 |
24 | - [\_appAddress](types_app_client.ApplicationClient.md#_appaddress)
25 | - [\_appId](types_app_client.ApplicationClient.md#_appid)
26 | - [\_appName](types_app_client.ApplicationClient.md#_appname)
27 | - [\_approvalSourceMap](types_app_client.ApplicationClient.md#_approvalsourcemap)
28 | - [\_clearSourceMap](types_app_client.ApplicationClient.md#_clearsourcemap)
29 | - [\_creator](types_app_client.ApplicationClient.md#_creator)
30 | - [algod](types_app_client.ApplicationClient.md#algod)
31 | - [appSpec](types_app_client.ApplicationClient.md#appspec)
32 | - [deployTimeParams](types_app_client.ApplicationClient.md#deploytimeparams)
33 | - [existingDeployments](types_app_client.ApplicationClient.md#existingdeployments)
34 | - [indexer](types_app_client.ApplicationClient.md#indexer)
35 | - [params](types_app_client.ApplicationClient.md#params)
36 | - [sender](types_app_client.ApplicationClient.md#sender)
37 |
38 | ### Methods
39 |
40 | - [call](types_app_client.ApplicationClient.md#call)
41 | - [callOfType](types_app_client.ApplicationClient.md#calloftype)
42 | - [clearState](types_app_client.ApplicationClient.md#clearstate)
43 | - [closeOut](types_app_client.ApplicationClient.md#closeout)
44 | - [compile](types_app_client.ApplicationClient.md#compile)
45 | - [create](types_app_client.ApplicationClient.md#create)
46 | - [delete](types_app_client.ApplicationClient.md#delete)
47 | - [deploy](types_app_client.ApplicationClient.md#deploy)
48 | - [exportSourceMaps](types_app_client.ApplicationClient.md#exportsourcemaps)
49 | - [exposeLogicError](types_app_client.ApplicationClient.md#exposelogicerror)
50 | - [fundAppAccount](types_app_client.ApplicationClient.md#fundappaccount)
51 | - [getABIMethod](types_app_client.ApplicationClient.md#getabimethod)
52 | - [getABIMethodParams](types_app_client.ApplicationClient.md#getabimethodparams)
53 | - [getABIMethodSignature](types_app_client.ApplicationClient.md#getabimethodsignature)
54 | - [getAppReference](types_app_client.ApplicationClient.md#getappreference)
55 | - [getBoxNames](types_app_client.ApplicationClient.md#getboxnames)
56 | - [getBoxValue](types_app_client.ApplicationClient.md#getboxvalue)
57 | - [getBoxValueFromABIType](types_app_client.ApplicationClient.md#getboxvaluefromabitype)
58 | - [getBoxValues](types_app_client.ApplicationClient.md#getboxvalues)
59 | - [getBoxValuesFromABIType](types_app_client.ApplicationClient.md#getboxvaluesfromabitype)
60 | - [getCallArgs](types_app_client.ApplicationClient.md#getcallargs)
61 | - [getGlobalState](types_app_client.ApplicationClient.md#getglobalstate)
62 | - [getLocalState](types_app_client.ApplicationClient.md#getlocalstate)
63 | - [importSourceMaps](types_app_client.ApplicationClient.md#importsourcemaps)
64 | - [optIn](types_app_client.ApplicationClient.md#optin)
65 | - [update](types_app_client.ApplicationClient.md#update)
66 |
67 | ## Constructors
68 |
69 | ### constructor
70 |
71 | • **new ApplicationClient**(`appDetails`, `algod`): [`ApplicationClient`](types_app_client.ApplicationClient.md)
72 |
73 | #### Parameters
74 |
75 | | Name | Type | Description |
76 | | :------ | :------ | :------ |
77 | | `appDetails` | [`AppSpecAppDetails`](../modules/types_app_client.md#appspecappdetails) | The details of the app |
78 | | `algod` | `AlgodClient` | An algod instance |
79 |
80 | #### Returns
81 |
82 | [`ApplicationClient`](types_app_client.ApplicationClient.md)
83 |
84 | **`Deprecated`**
85 |
86 | Use `AppClient` instead e.g. via `algorand.client.getAppClientById` or
87 | `algorand.client.getAppClientByCreatorAndName`.
88 | If you want to `create` or `deploy` then use `AppFactory` e.g. via `algorand.client.getAppFactory`,
89 | which will in turn give you an `AppClient` instance against the created/deployed app to make other calls.
90 |
91 | Create a new ApplicationClient instance
92 |
93 | #### Defined in
94 |
95 | [src/types/app-client.ts:1644](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1644)
96 |
97 | ## Properties
98 |
99 | ### \_appAddress
100 |
101 | • `Private` **\_appAddress**: `string`
102 |
103 | #### Defined in
104 |
105 | [src/types/app-client.ts:1627](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1627)
106 |
107 | ___
108 |
109 | ### \_appId
110 |
111 | • `Private` **\_appId**: `number` \| `bigint`
112 |
113 | #### Defined in
114 |
115 | [src/types/app-client.ts:1626](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1626)
116 |
117 | ___
118 |
119 | ### \_appName
120 |
121 | • `Private` **\_appName**: `string`
122 |
123 | #### Defined in
124 |
125 | [src/types/app-client.ts:1629](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1629)
126 |
127 | ___
128 |
129 | ### \_approvalSourceMap
130 |
131 | • `Private` **\_approvalSourceMap**: `undefined` \| `ProgramSourceMap`
132 |
133 | #### Defined in
134 |
135 | [src/types/app-client.ts:1631](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1631)
136 |
137 | ___
138 |
139 | ### \_clearSourceMap
140 |
141 | • `Private` **\_clearSourceMap**: `undefined` \| `ProgramSourceMap`
142 |
143 | #### Defined in
144 |
145 | [src/types/app-client.ts:1632](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1632)
146 |
147 | ___
148 |
149 | ### \_creator
150 |
151 | • `Private` **\_creator**: `undefined` \| `string`
152 |
153 | #### Defined in
154 |
155 | [src/types/app-client.ts:1628](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1628)
156 |
157 | ___
158 |
159 | ### algod
160 |
161 | • `Private` **algod**: `AlgodClient`
162 |
163 | #### Defined in
164 |
165 | [src/types/app-client.ts:1618](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1618)
166 |
167 | ___
168 |
169 | ### appSpec
170 |
171 | • `Private` **appSpec**: [`AppSpec`](../interfaces/types_app_spec.AppSpec.md)
172 |
173 | #### Defined in
174 |
175 | [src/types/app-client.ts:1620](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1620)
176 |
177 | ___
178 |
179 | ### deployTimeParams
180 |
181 | • `Private` `Optional` **deployTimeParams**: [`TealTemplateParams`](../interfaces/types_app.TealTemplateParams.md)
182 |
183 | #### Defined in
184 |
185 | [src/types/app-client.ts:1624](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1624)
186 |
187 | ___
188 |
189 | ### existingDeployments
190 |
191 | • `Private` **existingDeployments**: `undefined` \| [`AppLookup`](../interfaces/types_app.AppLookup.md)
192 |
193 | #### Defined in
194 |
195 | [src/types/app-client.ts:1623](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1623)
196 |
197 | ___
198 |
199 | ### indexer
200 |
201 | • `Private` `Optional` **indexer**: `IndexerClient`
202 |
203 | #### Defined in
204 |
205 | [src/types/app-client.ts:1619](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1619)
206 |
207 | ___
208 |
209 | ### params
210 |
211 | • `Private` **params**: `undefined` \| `SuggestedParams`
212 |
213 | #### Defined in
214 |
215 | [src/types/app-client.ts:1622](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1622)
216 |
217 | ___
218 |
219 | ### sender
220 |
221 | • `Private` **sender**: `undefined` \| [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom)
222 |
223 | #### Defined in
224 |
225 | [src/types/app-client.ts:1621](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1621)
226 |
227 | ## Methods
228 |
229 | ### call
230 |
231 | ▸ **call**(`call?`): `Promise`\<[`AppCallTransactionResult`](../modules/types_app.md#appcalltransactionresult)\>
232 |
233 | #### Parameters
234 |
235 | | Name | Type | Description |
236 | | :------ | :------ | :------ |
237 | | `call?` | [`AppClientCallParams`](../modules/types_app_client.md#appclientcallparams) | The call details. |
238 |
239 | #### Returns
240 |
241 | `Promise`\<[`AppCallTransactionResult`](../modules/types_app.md#appcalltransactionresult)\>
242 |
243 | The result of the call
244 |
245 | **`Deprecated`**
246 |
247 | Use `appClient.send.call` or `appClient.createTransaction.call` from an `AppClient` instance instead.
248 |
249 | Issues a no_op (normal) call to the app.
250 |
251 | #### Defined in
252 |
253 | [src/types/app-client.ts:1967](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1967)
254 |
255 | ___
256 |
257 | ### callOfType
258 |
259 | ▸ **callOfType**(`call?`, `callType`): `Promise`\<[`AppCallTransactionResult`](../modules/types_app.md#appcalltransactionresult)\>
260 |
261 | #### Parameters
262 |
263 | | Name | Type | Description |
264 | | :------ | :------ | :------ |
265 | | `call` | [`AppClientCallParams`](../modules/types_app_client.md#appclientcallparams) | The call details. |
266 | | `callType` | ``"no_op"`` \| ``"opt_in"`` \| ``"close_out"`` \| ``"clear_state"`` \| ``"delete_application"`` \| `NoOpOC` \| `OptInOC` \| `CloseOutOC` \| `ClearStateOC` \| `DeleteApplicationOC` | The call type |
267 |
268 | #### Returns
269 |
270 | `Promise`\<[`AppCallTransactionResult`](../modules/types_app.md#appcalltransactionresult)\>
271 |
272 | The result of the call
273 |
274 | **`Deprecated`**
275 |
276 | Use `appClient.send.call` or `appClient.createTransaction.call` from an `AppClient` instance instead.
277 |
278 | Issues a call to the app with the given call type.
279 |
280 | #### Defined in
281 |
282 | [src/types/app-client.ts:2049](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2049)
283 |
284 | ___
285 |
286 | ### clearState
287 |
288 | ▸ **clearState**(`call?`): `Promise`\<[`AppCallTransactionResult`](../modules/types_app.md#appcalltransactionresult)\>
289 |
290 | #### Parameters
291 |
292 | | Name | Type | Description |
293 | | :------ | :------ | :------ |
294 | | `call?` | [`AppClientClearStateParams`](../modules/types_app_client.md#appclientclearstateparams) | The call details. |
295 |
296 | #### Returns
297 |
298 | `Promise`\<[`AppCallTransactionResult`](../modules/types_app.md#appcalltransactionresult)\>
299 |
300 | The result of the call
301 |
302 | **`Deprecated`**
303 |
304 | Use `appClient.send.clearState` or `appClient.createTransaction.clearState` from an `AppClient` instance instead.
305 |
306 | Issues a clear_state call to the app.
307 |
308 | #### Defined in
309 |
310 | [src/types/app-client.ts:2026](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2026)
311 |
312 | ___
313 |
314 | ### closeOut
315 |
316 | ▸ **closeOut**(`call?`): `Promise`\<[`AppCallTransactionResult`](../modules/types_app.md#appcalltransactionresult)\>
317 |
318 | #### Parameters
319 |
320 | | Name | Type | Description |
321 | | :------ | :------ | :------ |
322 | | `call?` | [`AppClientCallParams`](../modules/types_app_client.md#appclientcallparams) | The call details. |
323 |
324 | #### Returns
325 |
326 | `Promise`\<[`AppCallTransactionResult`](../modules/types_app.md#appcalltransactionresult)\>
327 |
328 | The result of the call
329 |
330 | **`Deprecated`**
331 |
332 | Use `appClient.send.closeOut` or `appClient.createTransaction.closeOut` from an `AppClient` instance instead.
333 |
334 | Issues a close_out call to the app.
335 |
336 | #### Defined in
337 |
338 | [src/types/app-client.ts:2015](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2015)
339 |
340 | ___
341 |
342 | ### compile
343 |
344 | ▸ **compile**(`compilation?`): `Promise`\<\{ `approvalCompiled`: [`CompiledTeal`](../interfaces/types_app.CompiledTeal.md) ; `clearCompiled`: [`CompiledTeal`](../interfaces/types_app.CompiledTeal.md) }\>
345 |
346 | #### Parameters
347 |
348 | | Name | Type | Description |
349 | | :------ | :------ | :------ |
350 | | `compilation?` | [`AppClientCompilationParams`](../interfaces/types_app_client.AppClientCompilationParams.md) | The deploy-time parameters for the compilation |
351 |
352 | #### Returns
353 |
354 | `Promise`\<\{ `approvalCompiled`: [`CompiledTeal`](../interfaces/types_app.CompiledTeal.md) ; `clearCompiled`: [`CompiledTeal`](../interfaces/types_app.CompiledTeal.md) }\>
355 |
356 | The compiled approval and clear state programs
357 |
358 | **`Deprecated`**
359 |
360 | Use `AppClient.compile()` instead.
361 |
362 | Compiles the approval and clear state programs and sets up the source map.
363 |
364 | #### Defined in
365 |
366 | [src/types/app-client.ts:1683](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1683)
367 |
368 | ___
369 |
370 | ### create
371 |
372 | ▸ **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`[] }\>
373 |
374 | #### Parameters
375 |
376 | | Name | Type | Description |
377 | | :------ | :------ | :------ |
378 | | `create?` | [`AppClientCreateParams`](../modules/types_app_client.md#appclientcreateparams) | The parameters to create the app with |
379 |
380 | #### Returns
381 |
382 | `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`[] }\>
383 |
384 | The details of the created app, or the transaction to create it if `skipSending` and the compilation result
385 |
386 | **`Deprecated`**
387 |
388 | Use `create` from an `AppFactory` instance instead.
389 |
390 | Creates a smart contract app, returns the details of the created app.
391 |
392 | #### Defined in
393 |
394 | [src/types/app-client.ts:1862](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1862)
395 |
396 | ___
397 |
398 | ### delete
399 |
400 | ▸ **delete**(`call?`): `Promise`\<[`AppCallTransactionResult`](../modules/types_app.md#appcalltransactionresult)\>
401 |
402 | #### Parameters
403 |
404 | | Name | Type | Description |
405 | | :------ | :------ | :------ |
406 | | `call?` | [`AppClientCallParams`](../modules/types_app_client.md#appclientcallparams) | The call details. |
407 |
408 | #### Returns
409 |
410 | `Promise`\<[`AppCallTransactionResult`](../modules/types_app.md#appcalltransactionresult)\>
411 |
412 | The result of the call
413 |
414 | **`Deprecated`**
415 |
416 | Use `appClient.send.delete` or `appClient.createTransaction.delete` from an `AppClient` instance instead.
417 |
418 | Issues a delete_application call to the app.
419 |
420 | #### Defined in
421 |
422 | [src/types/app-client.ts:2037](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2037)
423 |
424 | ___
425 |
426 | ### deploy
427 |
428 | ▸ **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` }\>
429 |
430 | #### Parameters
431 |
432 | | Name | Type | Description |
433 | | :------ | :------ | :------ |
434 | | `deploy?` | [`AppClientDeployParams`](../interfaces/types_app_client.AppClientDeployParams.md) | Deployment details |
435 |
436 | #### Returns
437 |
438 | `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` }\>
439 |
440 | The metadata and transaction result(s) of the deployment, or just the metadata if it didn't need to issue transactions
441 |
442 | **`Deprecated`**
443 |
444 | Use `deploy` from an `AppFactory` instance instead.
445 |
446 | Idempotently deploy (create, update/delete if changed) an app against the given name via the given creator account, including deploy-time template placeholder substitutions.
447 |
448 | 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
449 |
450 | **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.
451 |
452 | **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.
453 |
454 | #### Defined in
455 |
456 | [src/types/app-client.ts:1751](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1751)
457 |
458 | ___
459 |
460 | ### exportSourceMaps
461 |
462 | ▸ **exportSourceMaps**(): [`AppSourceMaps`](../interfaces/types_app_client.AppSourceMaps.md)
463 |
464 | Export the current source maps for the app.
465 |
466 | #### Returns
467 |
468 | [`AppSourceMaps`](../interfaces/types_app_client.AppSourceMaps.md)
469 |
470 | The source maps
471 |
472 | #### Defined in
473 |
474 | [src/types/app-client.ts:1716](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1716)
475 |
476 | ___
477 |
478 | ### exposeLogicError
479 |
480 | ▸ **exposeLogicError**(`e`, `isClear?`): `Error`
481 |
482 | 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.
483 | This is automatically used within `ApplicationClient` but if you pass `skipSending: true` e.g. if doing a group transaction
484 | then you can use this in a try/catch block to get better debugging information.
485 |
486 | #### Parameters
487 |
488 | | Name | Type | Description |
489 | | :------ | :------ | :------ |
490 | | `e` | `Error` | The error to parse |
491 | | `isClear?` | `boolean` | Whether or not the code was running the clear state program |
492 |
493 | #### Returns
494 |
495 | `Error`
496 |
497 | The new error, or if there was no logic error or source map then the wrapped error with source details
498 |
499 | #### Defined in
500 |
501 | [src/types/app-client.ts:2371](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2371)
502 |
503 | ___
504 |
505 | ### fundAppAccount
506 |
507 | ▸ **fundAppAccount**(`fund`): `Promise`\<[`SendTransactionResult`](../interfaces/types_transaction.SendTransactionResult.md) \| \{ `confirmation`: `PendingTransactionResponse` ; `confirmations`: `PendingTransactionResponse`[] ; `groupId`: `string` ; `returns?`: [`ABIReturn`](../modules/types_app.md#abireturn)[] ; `transaction`: `Transaction` ; `transactions`: `Transaction`[] ; `txIds`: `string`[] } & \{ `transactions`: `Transaction`[] }\>
508 |
509 | Funds Algo into the app account for this app.
510 |
511 | #### Parameters
512 |
513 | | Name | Type | Description |
514 | | :------ | :------ | :------ |
515 | | `fund` | [`AlgoAmount`](types_amount.AlgoAmount.md) \| [`FundAppAccountParams`](../interfaces/types_app_client.FundAppAccountParams.md) | The parameters for the funding or the funding amount |
516 |
517 | #### Returns
518 |
519 | `Promise`\<[`SendTransactionResult`](../interfaces/types_transaction.SendTransactionResult.md) \| \{ `confirmation`: `PendingTransactionResponse` ; `confirmations`: `PendingTransactionResponse`[] ; `groupId`: `string` ; `returns?`: [`ABIReturn`](../modules/types_app.md#abireturn)[] ; `transaction`: `Transaction` ; `transactions`: `Transaction`[] ; `txIds`: `string`[] } & \{ `transactions`: `Transaction`[] }\>
520 |
521 | The result of the funding
522 |
523 | #### Defined in
524 |
525 | [src/types/app-client.ts:2088](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2088)
526 |
527 | ___
528 |
529 | ### getABIMethod
530 |
531 | ▸ **getABIMethod**(`method`): `undefined` \| `ABIMethod`
532 |
533 | Returns the ABI Method for the given method name string for the app represented by this application client instance
534 |
535 | #### Parameters
536 |
537 | | Name | Type | Description |
538 | | :------ | :------ | :------ |
539 | | `method` | `string` | Either the name of the method or the ABI method spec definition string |
540 |
541 | #### Returns
542 |
543 | `undefined` \| `ABIMethod`
544 |
545 | The ABI method for the given method
546 |
547 | #### Defined in
548 |
549 | [src/types/app-client.ts:2329](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2329)
550 |
551 | ___
552 |
553 | ### getABIMethodParams
554 |
555 | ▸ **getABIMethodParams**(`method`): `undefined` \| `ABIMethodParams`
556 |
557 | #### Parameters
558 |
559 | | Name | Type | Description |
560 | | :------ | :------ | :------ |
561 | | `method` | `string` | Either the name of the method or the ABI method spec definition string |
562 |
563 | #### Returns
564 |
565 | `undefined` \| `ABIMethodParams`
566 |
567 | The ABI method params for the given method
568 |
569 | **`Deprecated`**
570 |
571 | Use `appClient.getABIMethod` instead.
572 |
573 | Returns the ABI Method parameters for the given method name string for the app represented by this application client instance
574 |
575 | #### Defined in
576 |
577 | [src/types/app-client.ts:2307](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2307)
578 |
579 | ___
580 |
581 | ### getABIMethodSignature
582 |
583 | ▸ **getABIMethodSignature**(`method`): `string`
584 |
585 | #### Parameters
586 |
587 | | Name | Type |
588 | | :------ | :------ |
589 | | `method` | `ABIMethodParams` \| `ABIMethod` |
590 |
591 | #### Returns
592 |
593 | `string`
594 |
595 | #### Defined in
596 |
597 | [src/types/app-client.ts:2387](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2387)
598 |
599 | ___
600 |
601 | ### getAppReference
602 |
603 | ▸ **getAppReference**(): `Promise`\<[`AppReference`](../interfaces/types_app.AppReference.md) \| [`AppMetadata`](../interfaces/types_app.AppMetadata.md)\>
604 |
605 | #### Returns
606 |
607 | `Promise`\<[`AppReference`](../interfaces/types_app.AppReference.md) \| [`AppMetadata`](../interfaces/types_app.AppMetadata.md)\>
608 |
609 | The app reference, or if deployed using the `deploy` method, the app metadata too
610 |
611 | **`Deprecated`**
612 |
613 | Use `appClient.appId` and `appClient.appAddress` from an `AppClient` instance instead.
614 |
615 | Gets the reference information for the current application instance.
616 | `appId` will be 0 if it can't find an app.
617 |
618 | #### Defined in
619 |
620 | [src/types/app-client.ts:2341](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2341)
621 |
622 | ___
623 |
624 | ### getBoxNames
625 |
626 | ▸ **getBoxNames**(): `Promise`\<[`BoxName`](../interfaces/types_app.BoxName.md)[]\>
627 |
628 | Returns the names of all current boxes for the current app.
629 |
630 | #### Returns
631 |
632 | `Promise`\<[`BoxName`](../interfaces/types_app.BoxName.md)[]\>
633 |
634 | The names of the boxes
635 |
636 | #### Defined in
637 |
638 | [src/types/app-client.ts:2144](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2144)
639 |
640 | ___
641 |
642 | ### getBoxValue
643 |
644 | ▸ **getBoxValue**(`name`): `Promise`\<`Uint8Array`\>
645 |
646 | Returns the value of the given box for the current app.
647 |
648 | #### Parameters
649 |
650 | | Name | Type | Description |
651 | | :------ | :------ | :------ |
652 | | `name` | `string` \| `Uint8Array` \| [`BoxName`](../interfaces/types_app.BoxName.md) | The name of the box to return either as a string, binary array or `BoxName` |
653 |
654 | #### Returns
655 |
656 | `Promise`\<`Uint8Array`\>
657 |
658 | The current box value as a byte array
659 |
660 | #### Defined in
661 |
662 | [src/types/app-client.ts:2159](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2159)
663 |
664 | ___
665 |
666 | ### getBoxValueFromABIType
667 |
668 | ▸ **getBoxValueFromABIType**(`name`, `type`): `Promise`\<`ABIValue`\>
669 |
670 | Returns the value of the given box for the current app.
671 |
672 | #### Parameters
673 |
674 | | Name | Type | Description |
675 | | :------ | :------ | :------ |
676 | | `name` | `string` \| `Uint8Array` \| [`BoxName`](../interfaces/types_app.BoxName.md) | The name of the box to return either as a string, binary array or `BoxName` |
677 | | `type` | `ABIType` | |
678 |
679 | #### Returns
680 |
681 | `Promise`\<`ABIValue`\>
682 |
683 | The current box value as a byte array
684 |
685 | #### Defined in
686 |
687 | [src/types/app-client.ts:2175](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2175)
688 |
689 | ___
690 |
691 | ### getBoxValues
692 |
693 | ▸ **getBoxValues**(`filter?`): `Promise`\<\{ `name`: [`BoxName`](../interfaces/types_app.BoxName.md) ; `value`: `Uint8Array` }[]\>
694 |
695 | Returns the values of all current boxes for the current app.
696 | Note: This will issue multiple HTTP requests (one per box) and it's not an atomic operation so values may be out of sync.
697 |
698 | #### Parameters
699 |
700 | | Name | Type | Description |
701 | | :------ | :------ | :------ |
702 | | `filter?` | (`name`: [`BoxName`](../interfaces/types_app.BoxName.md)) => `boolean` | Optional filter to filter which boxes' values are returned |
703 |
704 | #### Returns
705 |
706 | `Promise`\<\{ `name`: [`BoxName`](../interfaces/types_app.BoxName.md) ; `value`: `Uint8Array` }[]\>
707 |
708 | The (name, value) pair of the boxes with values as raw byte arrays
709 |
710 | #### Defined in
711 |
712 | [src/types/app-client.ts:2191](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2191)
713 |
714 | ___
715 |
716 | ### getBoxValuesFromABIType
717 |
718 | ▸ **getBoxValuesFromABIType**(`type`, `filter?`): `Promise`\<\{ `name`: [`BoxName`](../interfaces/types_app.BoxName.md) ; `value`: `ABIValue` }[]\>
719 |
720 | Returns the values of all current boxes for the current app decoded using an ABI Type.
721 | Note: This will issue multiple HTTP requests (one per box) and it's not an atomic operation so values may be out of sync.
722 |
723 | #### Parameters
724 |
725 | | Name | Type | Description |
726 | | :------ | :------ | :------ |
727 | | `type` | `ABIType` | The ABI type to decode the values with |
728 | | `filter?` | (`name`: [`BoxName`](../interfaces/types_app.BoxName.md)) => `boolean` | Optional filter to filter which boxes' values are returned |
729 |
730 | #### Returns
731 |
732 | `Promise`\<\{ `name`: [`BoxName`](../interfaces/types_app.BoxName.md) ; `value`: `ABIValue` }[]\>
733 |
734 | The (name, value) pair of the boxes with values as the ABI Value
735 |
736 | #### Defined in
737 |
738 | [src/types/app-client.ts:2213](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2213)
739 |
740 | ___
741 |
742 | ### getCallArgs
743 |
744 | ▸ **getCallArgs**(`args`, `sender`): `Promise`\<`undefined` \| [`AppCallArgs`](../modules/types_app.md#appcallargs)\>
745 |
746 | #### Parameters
747 |
748 | | Name | Type | Description |
749 | | :------ | :------ | :------ |
750 | | `args` | `undefined` \| [`AppClientCallArgs`](../modules/types_app_client.md#appclientcallargs) | The call args specific to this application client |
751 | | `sender` | [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom) | The sender of this call. Will be used to fetch any default argument values if applicable |
752 |
753 | #### Returns
754 |
755 | `Promise`\<`undefined` \| [`AppCallArgs`](../modules/types_app.md#appcallargs)\>
756 |
757 | The call args ready to pass into an app call
758 |
759 | **`Deprecated`**
760 |
761 | Use `appClient.params.*` from an `AppClient` instance instead.
762 |
763 | Returns the arguments for an app call for the given ABI method or raw method specification.
764 |
765 | #### Defined in
766 |
767 | [src/types/app-client.ts:2237](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2237)
768 |
769 | ___
770 |
771 | ### getGlobalState
772 |
773 | ▸ **getGlobalState**(): `Promise`\<[`AppState`](../interfaces/types_app.AppState.md)\>
774 |
775 | Returns global state for the current app.
776 |
777 | #### Returns
778 |
779 | `Promise`\<[`AppState`](../interfaces/types_app.AppState.md)\>
780 |
781 | The global state
782 |
783 | #### Defined in
784 |
785 | [src/types/app-client.ts:2116](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2116)
786 |
787 | ___
788 |
789 | ### getLocalState
790 |
791 | ▸ **getLocalState**(`account`): `Promise`\<[`AppState`](../interfaces/types_app.AppState.md)\>
792 |
793 | Returns local state for the given account / account address.
794 |
795 | #### Parameters
796 |
797 | | Name | Type |
798 | | :------ | :------ |
799 | | `account` | `string` \| [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom) |
800 |
801 | #### Returns
802 |
803 | `Promise`\<[`AppState`](../interfaces/types_app.AppState.md)\>
804 |
805 | The global state
806 |
807 | #### Defined in
808 |
809 | [src/types/app-client.ts:2130](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2130)
810 |
811 | ___
812 |
813 | ### importSourceMaps
814 |
815 | ▸ **importSourceMaps**(`sourceMaps`): `void`
816 |
817 | Import source maps for the app.
818 |
819 | #### Parameters
820 |
821 | | Name | Type | Description |
822 | | :------ | :------ | :------ |
823 | | `sourceMaps` | [`AppSourceMaps`](../interfaces/types_app_client.AppSourceMaps.md) | The source maps to import |
824 |
825 | #### Returns
826 |
827 | `void`
828 |
829 | #### Defined in
830 |
831 | [src/types/app-client.ts:1733](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1733)
832 |
833 | ___
834 |
835 | ### optIn
836 |
837 | ▸ **optIn**(`call?`): `Promise`\<[`AppCallTransactionResult`](../modules/types_app.md#appcalltransactionresult)\>
838 |
839 | #### Parameters
840 |
841 | | Name | Type | Description |
842 | | :------ | :------ | :------ |
843 | | `call?` | [`AppClientCallParams`](../modules/types_app_client.md#appclientcallparams) | The call details. |
844 |
845 | #### Returns
846 |
847 | `Promise`\<[`AppCallTransactionResult`](../modules/types_app.md#appcalltransactionresult)\>
848 |
849 | The result of the call
850 |
851 | **`Deprecated`**
852 |
853 | Use `appClient.send.optIn` or `appClient.createTransaction.optIn` from an `AppClient` instance instead.
854 |
855 | Issues a opt_in call to the app.
856 |
857 | #### Defined in
858 |
859 | [src/types/app-client.ts:2004](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2004)
860 |
861 | ___
862 |
863 | ### update
864 |
865 | ▸ **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`[] }\>
866 |
867 | #### Parameters
868 |
869 | | Name | Type | Description |
870 | | :------ | :------ | :------ |
871 | | `update?` | [`AppClientUpdateParams`](../modules/types_app_client.md#appclientupdateparams) | The parameters to update the app with |
872 |
873 | #### Returns
874 |
875 | `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`[] }\>
876 |
877 | The transaction send result and the compilation result
878 |
879 | **`Deprecated`**
880 |
881 | Use `appClient.send.update` or `appClient.createTransaction.update` from an `AppClient` instance instead.
882 |
883 | Updates the smart contract app.
884 |
885 | #### Defined in
886 |
887 | [src/types/app-client.ts:1926](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1926)
888 |
```
--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/developer:docs:details:dapps:avm:teal:opcodes:v4.md:
--------------------------------------------------------------------------------
```markdown
1 | title: v4 Opcodes
2 |
3 | Ops have a 'cost' of 1 unless otherwise specified.
4 |
5 |
6 | ## err
7 |
8 | - Bytecode: 0x00
9 | - Stack: ... → _exits_
10 | - Fail immediately.
11 |
12 | ## sha256
13 |
14 | - Bytecode: 0x01
15 | - Stack: ..., A: []byte → ..., [32]byte
16 | - SHA256 hash of value A, yields [32]byte
17 | - **Cost**: 35
18 |
19 | ## keccak256
20 |
21 | - Bytecode: 0x02
22 | - Stack: ..., A: []byte → ..., [32]byte
23 | - Keccak256 hash of value A, yields [32]byte
24 | - **Cost**: 130
25 |
26 | ## sha512_256
27 |
28 | - Bytecode: 0x03
29 | - Stack: ..., A: []byte → ..., [32]byte
30 | - SHA512_256 hash of value A, yields [32]byte
31 | - **Cost**: 45
32 |
33 | ## ed25519verify
34 |
35 | - Bytecode: 0x04
36 | - Stack: ..., A: []byte, B: [64]byte, C: [32]byte → ..., bool
37 | - for (data A, signature B, pubkey C) verify the signature of ("ProgData" || program_hash || data) against the pubkey => {0 or 1}
38 | - **Cost**: 1900
39 | - Mode: Signature
40 |
41 | The 32 byte public key is the last element on the stack, preceded by the 64 byte signature at the second-to-last element on the stack, preceded by the data which was signed at the third-to-last element on the stack.
42 |
43 | ## +
44 |
45 | - Bytecode: 0x08
46 | - Stack: ..., A: uint64, B: uint64 → ..., uint64
47 | - A plus B. Fail on overflow.
48 |
49 | Overflow is an error condition which halts execution and fails the transaction. Full precision is available from `addw`.
50 |
51 | ## -
52 |
53 | - Bytecode: 0x09
54 | - Stack: ..., A: uint64, B: uint64 → ..., uint64
55 | - A minus B. Fail if B > A.
56 |
57 | ## /
58 |
59 | - Bytecode: 0x0a
60 | - Stack: ..., A: uint64, B: uint64 → ..., uint64
61 | - A divided by B (truncated division). Fail if B == 0.
62 |
63 | `divmodw` is available to divide the two-element values produced by `mulw` and `addw`.
64 |
65 | ## *
66 |
67 | - Bytecode: 0x0b
68 | - Stack: ..., A: uint64, B: uint64 → ..., uint64
69 | - A times B. Fail on overflow.
70 |
71 | Overflow is an error condition which halts execution and fails the transaction. Full precision is available from `mulw`.
72 |
73 | ## <
74 |
75 | - Bytecode: 0x0c
76 | - Stack: ..., A: uint64, B: uint64 → ..., bool
77 | - A less than B => {0 or 1}
78 |
79 | ## >
80 |
81 | - Bytecode: 0x0d
82 | - Stack: ..., A: uint64, B: uint64 → ..., bool
83 | - A greater than B => {0 or 1}
84 |
85 | ## <=
86 |
87 | - Bytecode: 0x0e
88 | - Stack: ..., A: uint64, B: uint64 → ..., bool
89 | - A less than or equal to B => {0 or 1}
90 |
91 | ## >=
92 |
93 | - Bytecode: 0x0f
94 | - Stack: ..., A: uint64, B: uint64 → ..., bool
95 | - A greater than or equal to B => {0 or 1}
96 |
97 | ## &&
98 |
99 | - Bytecode: 0x10
100 | - Stack: ..., A: uint64, B: uint64 → ..., bool
101 | - A is not zero and B is not zero => {0 or 1}
102 |
103 | ## ||
104 |
105 | - Bytecode: 0x11
106 | - Stack: ..., A: uint64, B: uint64 → ..., bool
107 | - A is not zero or B is not zero => {0 or 1}
108 |
109 | ## ==
110 |
111 | - Bytecode: 0x12
112 | - Stack: ..., A, B → ..., bool
113 | - A is equal to B => {0 or 1}
114 |
115 | ## !=
116 |
117 | - Bytecode: 0x13
118 | - Stack: ..., A, B → ..., bool
119 | - A is not equal to B => {0 or 1}
120 |
121 | ## !
122 |
123 | - Bytecode: 0x14
124 | - Stack: ..., A: uint64 → ..., uint64
125 | - A == 0 yields 1; else 0
126 |
127 | ## len
128 |
129 | - Bytecode: 0x15
130 | - Stack: ..., A: []byte → ..., uint64
131 | - yields length of byte value A
132 |
133 | ## itob
134 |
135 | - Bytecode: 0x16
136 | - Stack: ..., A: uint64 → ..., [8]byte
137 | - converts uint64 A to big-endian byte array, always of length 8
138 |
139 | ## btoi
140 |
141 | - Bytecode: 0x17
142 | - Stack: ..., A: []byte → ..., uint64
143 | - converts big-endian byte array A to uint64. Fails if len(A) > 8. Padded by leading 0s if len(A) < 8.
144 |
145 | `btoi` fails if the input is longer than 8 bytes.
146 |
147 | ## %
148 |
149 | - Bytecode: 0x18
150 | - Stack: ..., A: uint64, B: uint64 → ..., uint64
151 | - A modulo B. Fail if B == 0.
152 |
153 | ## |
154 |
155 | - Bytecode: 0x19
156 | - Stack: ..., A: uint64, B: uint64 → ..., uint64
157 | - A bitwise-or B
158 |
159 | ## &
160 |
161 | - Bytecode: 0x1a
162 | - Stack: ..., A: uint64, B: uint64 → ..., uint64
163 | - A bitwise-and B
164 |
165 | ## ^
166 |
167 | - Bytecode: 0x1b
168 | - Stack: ..., A: uint64, B: uint64 → ..., uint64
169 | - A bitwise-xor B
170 |
171 | ## ~
172 |
173 | - Bytecode: 0x1c
174 | - Stack: ..., A: uint64 → ..., uint64
175 | - bitwise invert value A
176 |
177 | ## mulw
178 |
179 | - Bytecode: 0x1d
180 | - Stack: ..., A: uint64, B: uint64 → ..., X: uint64, Y: uint64
181 | - A times B as a 128-bit result in two uint64s. X is the high 64 bits, Y is the low
182 |
183 | ## addw
184 |
185 | - Bytecode: 0x1e
186 | - Stack: ..., A: uint64, B: uint64 → ..., X: uint64, Y: uint64
187 | - A plus B as a 128-bit result. X is the carry-bit, Y is the low-order 64 bits.
188 | - Availability: v2
189 |
190 | ## divmodw
191 |
192 | - Bytecode: 0x1f
193 | - Stack: ..., A: uint64, B: uint64, C: uint64, D: uint64 → ..., W: uint64, X: uint64, Y: uint64, Z: uint64
194 | - W,X = (A,B / C,D); Y,Z = (A,B modulo C,D)
195 | - **Cost**: 20
196 | - Availability: v4
197 |
198 | The notation J,K indicates that two uint64 values J and K are interpreted as a uint128 value, with J as the high uint64 and K the low.
199 |
200 | ## intcblock
201 |
202 | - Syntax: `intcblock UINT ...` where UINT ...: a block of int constant values
203 | - Bytecode: 0x20 {varuint count, [varuint ...]}
204 | - Stack: ... → ...
205 | - prepare block of uint64 constants for use by intc
206 |
207 | `intcblock` loads following program bytes into an array of integer constants in the evaluator. These integer constants can be referred to by `intc` and `intc_*` which will push the value onto the stack. Subsequent calls to `intcblock` reset and replace the integer constants available to the script.
208 |
209 | ## intc
210 |
211 | - Syntax: `intc I` where I: an index in the intcblock
212 | - Bytecode: 0x21 {uint8}
213 | - Stack: ... → ..., uint64
214 | - Ith constant from intcblock
215 |
216 | ## intc_0
217 |
218 | - Bytecode: 0x22
219 | - Stack: ... → ..., uint64
220 | - constant 0 from intcblock
221 |
222 | ## intc_1
223 |
224 | - Bytecode: 0x23
225 | - Stack: ... → ..., uint64
226 | - constant 1 from intcblock
227 |
228 | ## intc_2
229 |
230 | - Bytecode: 0x24
231 | - Stack: ... → ..., uint64
232 | - constant 2 from intcblock
233 |
234 | ## intc_3
235 |
236 | - Bytecode: 0x25
237 | - Stack: ... → ..., uint64
238 | - constant 3 from intcblock
239 |
240 | ## bytecblock
241 |
242 | - Syntax: `bytecblock BYTES ...` where BYTES ...: a block of byte constant values
243 | - Bytecode: 0x26 {varuint count, [varuint length, bytes ...]}
244 | - Stack: ... → ...
245 | - prepare block of byte-array constants for use by bytec
246 |
247 | `bytecblock` loads the following program bytes into an array of byte-array constants in the evaluator. These constants can be referred to by `bytec` and `bytec_*` which will push the value onto the stack. Subsequent calls to `bytecblock` reset and replace the bytes constants available to the script.
248 |
249 | ## bytec
250 |
251 | - Syntax: `bytec I` where I: an index in the bytecblock
252 | - Bytecode: 0x27 {uint8}
253 | - Stack: ... → ..., []byte
254 | - Ith constant from bytecblock
255 |
256 | ## bytec_0
257 |
258 | - Bytecode: 0x28
259 | - Stack: ... → ..., []byte
260 | - constant 0 from bytecblock
261 |
262 | ## bytec_1
263 |
264 | - Bytecode: 0x29
265 | - Stack: ... → ..., []byte
266 | - constant 1 from bytecblock
267 |
268 | ## bytec_2
269 |
270 | - Bytecode: 0x2a
271 | - Stack: ... → ..., []byte
272 | - constant 2 from bytecblock
273 |
274 | ## bytec_3
275 |
276 | - Bytecode: 0x2b
277 | - Stack: ... → ..., []byte
278 | - constant 3 from bytecblock
279 |
280 | ## arg
281 |
282 | - Syntax: `arg N` where N: an arg index
283 | - Bytecode: 0x2c {uint8}
284 | - Stack: ... → ..., []byte
285 | - Nth LogicSig argument
286 | - Mode: Signature
287 |
288 | ## arg_0
289 |
290 | - Bytecode: 0x2d
291 | - Stack: ... → ..., []byte
292 | - LogicSig argument 0
293 | - Mode: Signature
294 |
295 | ## arg_1
296 |
297 | - Bytecode: 0x2e
298 | - Stack: ... → ..., []byte
299 | - LogicSig argument 1
300 | - Mode: Signature
301 |
302 | ## arg_2
303 |
304 | - Bytecode: 0x2f
305 | - Stack: ... → ..., []byte
306 | - LogicSig argument 2
307 | - Mode: Signature
308 |
309 | ## arg_3
310 |
311 | - Bytecode: 0x30
312 | - Stack: ... → ..., []byte
313 | - LogicSig argument 3
314 | - Mode: Signature
315 |
316 | ## txn
317 |
318 | - Syntax: `txn F` where F: [txn](#field-group-txn)
319 | - Bytecode: 0x31 {uint8}
320 | - Stack: ... → ..., any
321 | - field F of current transaction
322 |
323 | ### txn
324 |
325 | Fields (see [transaction reference](https://developer.algorand.org/docs/reference/transactions/))
326 |
327 | | Index | Name | Type | In | Notes |
328 | | - | ------ | -- | - | --------- |
329 | | 0 | Sender | address | | 32 byte address |
330 | | 1 | Fee | uint64 | | microalgos |
331 | | 2 | FirstValid | uint64 | | round number |
332 | | 4 | LastValid | uint64 | | round number |
333 | | 5 | Note | []byte | | Any data up to 1024 bytes |
334 | | 6 | Lease | [32]byte | | 32 byte lease value |
335 | | 7 | Receiver | address | | 32 byte address |
336 | | 8 | Amount | uint64 | | microalgos |
337 | | 9 | CloseRemainderTo | address | | 32 byte address |
338 | | 10 | VotePK | [32]byte | | 32 byte address |
339 | | 11 | SelectionPK | [32]byte | | 32 byte address |
340 | | 12 | VoteFirst | uint64 | | The first round that the participation key is valid. |
341 | | 13 | VoteLast | uint64 | | The last round that the participation key is valid. |
342 | | 14 | VoteKeyDilution | uint64 | | Dilution for the 2-level participation key |
343 | | 15 | Type | []byte | | Transaction type as bytes |
344 | | 16 | TypeEnum | uint64 | | Transaction type as integer |
345 | | 17 | XferAsset | uint64 | | Asset ID |
346 | | 18 | AssetAmount | uint64 | | value in Asset's units |
347 | | 19 | AssetSender | address | | 32 byte address. Source of assets if Sender is the Asset's Clawback address. |
348 | | 20 | AssetReceiver | address | | 32 byte address |
349 | | 21 | AssetCloseTo | address | | 32 byte address |
350 | | 22 | GroupIndex | uint64 | | Position of this transaction within an atomic transaction group. A stand-alone transaction is implicitly element 0 in a group of 1 |
351 | | 23 | TxID | [32]byte | | The computed ID for this transaction. 32 bytes. |
352 | | 24 | ApplicationID | uint64 | v2 | ApplicationID from ApplicationCall transaction |
353 | | 25 | OnCompletion | uint64 | v2 | ApplicationCall transaction on completion action |
354 | | 27 | NumAppArgs | uint64 | v2 | Number of ApplicationArgs |
355 | | 29 | NumAccounts | uint64 | v2 | Number of Accounts |
356 | | 30 | ApprovalProgram | []byte | v2 | Approval program |
357 | | 31 | ClearStateProgram | []byte | v2 | Clear state program |
358 | | 32 | RekeyTo | address | v2 | 32 byte Sender's new AuthAddr |
359 | | 33 | ConfigAsset | uint64 | v2 | Asset ID in asset config transaction |
360 | | 34 | ConfigAssetTotal | uint64 | v2 | Total number of units of this asset created |
361 | | 35 | ConfigAssetDecimals | uint64 | v2 | Number of digits to display after the decimal place when displaying the asset |
362 | | 36 | ConfigAssetDefaultFrozen | bool | v2 | Whether the asset's slots are frozen by default or not, 0 or 1 |
363 | | 37 | ConfigAssetUnitName | []byte | v2 | Unit name of the asset |
364 | | 38 | ConfigAssetName | []byte | v2 | The asset name |
365 | | 39 | ConfigAssetURL | []byte | v2 | URL |
366 | | 40 | ConfigAssetMetadataHash | [32]byte | v2 | 32 byte commitment to unspecified asset metadata |
367 | | 41 | ConfigAssetManager | address | v2 | 32 byte address |
368 | | 42 | ConfigAssetReserve | address | v2 | 32 byte address |
369 | | 43 | ConfigAssetFreeze | address | v2 | 32 byte address |
370 | | 44 | ConfigAssetClawback | address | v2 | 32 byte address |
371 | | 45 | FreezeAsset | uint64 | v2 | Asset ID being frozen or un-frozen |
372 | | 46 | FreezeAssetAccount | address | v2 | 32 byte address of the account whose asset slot is being frozen or un-frozen |
373 | | 47 | FreezeAssetFrozen | bool | v2 | The new frozen value, 0 or 1 |
374 | | 49 | NumAssets | uint64 | v3 | Number of Assets |
375 | | 51 | NumApplications | uint64 | v3 | Number of Applications |
376 | | 52 | GlobalNumUint | uint64 | v3 | Number of global state integers in ApplicationCall |
377 | | 53 | GlobalNumByteSlice | uint64 | v3 | Number of global state byteslices in ApplicationCall |
378 | | 54 | LocalNumUint | uint64 | v3 | Number of local state integers in ApplicationCall |
379 | | 55 | LocalNumByteSlice | uint64 | v3 | Number of local state byteslices in ApplicationCall |
380 | | 56 | ExtraProgramPages | uint64 | v4 | Number of additional pages for each of the application's approval and clear state programs. An ExtraProgramPages of 1 means 2048 more total bytes, or 1024 for each program. |
381 |
382 |
383 | ## global
384 |
385 | - Syntax: `global F` where F: [global](#field-group-global)
386 | - Bytecode: 0x32 {uint8}
387 | - Stack: ... → ..., any
388 | - global field F
389 |
390 | ### global
391 |
392 | Fields
393 |
394 | | Index | Name | Type | In | Notes |
395 | | - | ------ | -- | - | --------- |
396 | | 0 | MinTxnFee | uint64 | | microalgos |
397 | | 1 | MinBalance | uint64 | | microalgos |
398 | | 2 | MaxTxnLife | uint64 | | rounds |
399 | | 3 | ZeroAddress | address | | 32 byte address of all zero bytes |
400 | | 4 | GroupSize | uint64 | | Number of transactions in this atomic transaction group. At least 1 |
401 | | 5 | LogicSigVersion | uint64 | v2 | Maximum supported version |
402 | | 6 | Round | uint64 | v2 | Current round number. Application mode only. |
403 | | 7 | LatestTimestamp | uint64 | v2 | Last confirmed block UNIX timestamp. Fails if negative. Application mode only. |
404 | | 8 | CurrentApplicationID | uint64 | v2 | ID of current application executing. Application mode only. |
405 | | 9 | CreatorAddress | address | v3 | Address of the creator of the current application. Application mode only. |
406 |
407 |
408 | ## gtxn
409 |
410 | - Syntax: `gtxn T F` where T: transaction group index, F: [txn](#field-group-txn)
411 | - Bytecode: 0x33 {uint8}, {uint8}
412 | - Stack: ... → ..., any
413 | - field F of the Tth transaction in the current group
414 |
415 | for notes on transaction fields available, see `txn`. If this transaction is _i_ in the group, `gtxn i field` is equivalent to `txn field`.
416 |
417 | ## load
418 |
419 | - Syntax: `load I` where I: position in scratch space to load from
420 | - Bytecode: 0x34 {uint8}
421 | - Stack: ... → ..., any
422 | - Ith scratch space value. All scratch spaces are 0 at program start.
423 |
424 | ## store
425 |
426 | - Syntax: `store I` where I: position in scratch space to store to
427 | - Bytecode: 0x35 {uint8}
428 | - Stack: ..., A → ...
429 | - store A to the Ith scratch space
430 |
431 | ## txna
432 |
433 | - Syntax: `txna F I` where F: [txna](#field-group-txna), I: transaction field array index
434 | - Bytecode: 0x36 {uint8}, {uint8}
435 | - Stack: ... → ..., any
436 | - Ith value of the array field F of the current transaction<br />`txna` can be called using `txn` with 2 immediates.
437 | - Availability: v2
438 |
439 | ### txna
440 |
441 | Fields (see [transaction reference](https://developer.algorand.org/docs/reference/transactions/))
442 |
443 | | Index | Name | Type | In | Notes |
444 | | - | ------ | -- | - | --------- |
445 | | 26 | ApplicationArgs | []byte | v2 | Arguments passed to the application in the ApplicationCall transaction |
446 | | 28 | Accounts | address | v2 | Accounts listed in the ApplicationCall transaction |
447 | | 48 | Assets | uint64 | v3 | Foreign Assets listed in the ApplicationCall transaction |
448 | | 50 | Applications | uint64 | v3 | Foreign Apps listed in the ApplicationCall transaction |
449 |
450 |
451 | ## gtxna
452 |
453 | - Syntax: `gtxna T F I` where T: transaction group index, F: [txna](#field-group-txna), I: transaction field array index
454 | - Bytecode: 0x37 {uint8}, {uint8}, {uint8}
455 | - Stack: ... → ..., any
456 | - Ith value of the array field F from the Tth transaction in the current group<br />`gtxna` can be called using `gtxn` with 3 immediates.
457 | - Availability: v2
458 |
459 | ## gtxns
460 |
461 | - Syntax: `gtxns F` where F: [txn](#field-group-txn)
462 | - Bytecode: 0x38 {uint8}
463 | - Stack: ..., A: uint64 → ..., any
464 | - field F of the Ath transaction in the current group
465 | - Availability: v3
466 |
467 | for notes on transaction fields available, see `txn`. If top of stack is _i_, `gtxns field` is equivalent to `gtxn _i_ field`. gtxns exists so that _i_ can be calculated, often based on the index of the current transaction.
468 |
469 | ## gtxnsa
470 |
471 | - Syntax: `gtxnsa F I` where F: [txna](#field-group-txna), I: transaction field array index
472 | - Bytecode: 0x39 {uint8}, {uint8}
473 | - Stack: ..., A: uint64 → ..., any
474 | - Ith value of the array field F from the Ath transaction in the current group<br />`gtxnsa` can be called using `gtxns` with 2 immediates.
475 | - Availability: v3
476 |
477 | ## gload
478 |
479 | - Syntax: `gload T I` where T: transaction group index, I: position in scratch space to load from
480 | - Bytecode: 0x3a {uint8}, {uint8}
481 | - Stack: ... → ..., any
482 | - Ith scratch space value of the Tth transaction in the current group
483 | - Availability: v4
484 | - Mode: Application
485 |
486 | `gload` fails unless the requested transaction is an ApplicationCall and T < GroupIndex.
487 |
488 | ## gloads
489 |
490 | - Syntax: `gloads I` where I: position in scratch space to load from
491 | - Bytecode: 0x3b {uint8}
492 | - Stack: ..., A: uint64 → ..., any
493 | - Ith scratch space value of the Ath transaction in the current group
494 | - Availability: v4
495 | - Mode: Application
496 |
497 | `gloads` fails unless the requested transaction is an ApplicationCall and A < GroupIndex.
498 |
499 | ## gaid
500 |
501 | - Syntax: `gaid T` where T: transaction group index
502 | - Bytecode: 0x3c {uint8}
503 | - Stack: ... → ..., uint64
504 | - ID of the asset or application created in the Tth transaction of the current group
505 | - Availability: v4
506 | - Mode: Application
507 |
508 | `gaid` fails unless the requested transaction created an asset or application and T < GroupIndex.
509 |
510 | ## gaids
511 |
512 | - Bytecode: 0x3d
513 | - Stack: ..., A: uint64 → ..., uint64
514 | - ID of the asset or application created in the Ath transaction of the current group
515 | - Availability: v4
516 | - Mode: Application
517 |
518 | `gaids` fails unless the requested transaction created an asset or application and A < GroupIndex.
519 |
520 | ## bnz
521 |
522 | - Syntax: `bnz TARGET` where TARGET: branch offset
523 | - Bytecode: 0x40 {int16 (big-endian)}
524 | - Stack: ..., A: uint64 → ...
525 | - branch to TARGET if value A is not zero
526 |
527 | The `bnz` instruction opcode 0x40 is followed by two immediate data bytes which are a high byte first and low byte second which together form a 16 bit offset which the instruction may branch to. For a bnz instruction at `pc`, if the last element of the stack is not zero then branch to instruction at `pc + 3 + N`, else proceed to next instruction at `pc + 3`. Branch targets must be aligned instructions. (e.g. Branching to the second byte of a 2 byte op will be rejected.) Starting at v4, the offset is treated as a signed 16 bit integer allowing for backward branches and looping. In prior version (v1 to v3), branch offsets are limited to forward branches only, 0-0x7fff.
528 |
529 | At v2 it became allowed to branch to the end of the program exactly after the last instruction: bnz to byte N (with 0-indexing) was illegal for a TEAL program with N bytes before v2, and is legal after it. This change eliminates the need for a last instruction of no-op as a branch target at the end. (Branching beyond the end--in other words, to a byte larger than N--is still illegal and will cause the program to fail.)
530 |
531 | ## bz
532 |
533 | - Syntax: `bz TARGET` where TARGET: branch offset
534 | - Bytecode: 0x41 {int16 (big-endian)}
535 | - Stack: ..., A: uint64 → ...
536 | - branch to TARGET if value A is zero
537 | - Availability: v2
538 |
539 | See `bnz` for details on how branches work. `bz` inverts the behavior of `bnz`.
540 |
541 | ## b
542 |
543 | - Syntax: `b TARGET` where TARGET: branch offset
544 | - Bytecode: 0x42 {int16 (big-endian)}
545 | - Stack: ... → ...
546 | - branch unconditionally to TARGET
547 | - Availability: v2
548 |
549 | See `bnz` for details on how branches work. `b` always jumps to the offset.
550 |
551 | ## return
552 |
553 | - Bytecode: 0x43
554 | - Stack: ..., A: uint64 → _exits_
555 | - use A as success value; end
556 | - Availability: v2
557 |
558 | ## assert
559 |
560 | - Bytecode: 0x44
561 | - Stack: ..., A: uint64 → ...
562 | - immediately fail unless A is a non-zero number
563 | - Availability: v3
564 |
565 | ## pop
566 |
567 | - Bytecode: 0x48
568 | - Stack: ..., A → ...
569 | - discard A
570 |
571 | ## dup
572 |
573 | - Bytecode: 0x49
574 | - Stack: ..., A → ..., A, A
575 | - duplicate A
576 |
577 | ## dup2
578 |
579 | - Bytecode: 0x4a
580 | - Stack: ..., A, B → ..., A, B, A, B
581 | - duplicate A and B
582 | - Availability: v2
583 |
584 | ## dig
585 |
586 | - Syntax: `dig N` where N: depth
587 | - Bytecode: 0x4b {uint8}
588 | - Stack: ..., A, [N items] → ..., A, [N items], A
589 | - Nth value from the top of the stack. dig 0 is equivalent to dup
590 | - Availability: v3
591 |
592 | ## swap
593 |
594 | - Bytecode: 0x4c
595 | - Stack: ..., A, B → ..., B, A
596 | - swaps A and B on stack
597 | - Availability: v3
598 |
599 | ## select
600 |
601 | - Bytecode: 0x4d
602 | - Stack: ..., A, B, C: uint64 → ..., A or B
603 | - selects one of two values based on top-of-stack: B if C != 0, else A
604 | - Availability: v3
605 |
606 | ## concat
607 |
608 | - Bytecode: 0x50
609 | - Stack: ..., A: []byte, B: []byte → ..., []byte
610 | - join A and B
611 | - Availability: v2
612 |
613 | `concat` fails if the result would be greater than 4096 bytes.
614 |
615 | ## substring
616 |
617 | - Syntax: `substring S E` where S: start position, E: end position
618 | - Bytecode: 0x51 {uint8}, {uint8}
619 | - Stack: ..., A: []byte → ..., []byte
620 | - A range of bytes from A starting at S up to but not including E. If E < S, or either is larger than the array length, the program fails
621 | - Availability: v2
622 |
623 | ## substring3
624 |
625 | - Bytecode: 0x52
626 | - Stack: ..., A: []byte, B: uint64, C: uint64 → ..., []byte
627 | - A range of bytes from A starting at B up to but not including C. If C < B, or either is larger than the array length, the program fails
628 | - Availability: v2
629 |
630 | ## getbit
631 |
632 | - Bytecode: 0x53
633 | - Stack: ..., A, B: uint64 → ..., uint64
634 | - Bth bit of (byte-array or integer) A. If B is greater than or equal to the bit length of the value (8*byte length), the program fails
635 | - Availability: v3
636 |
637 | see explanation of bit ordering in setbit
638 |
639 | ## setbit
640 |
641 | - Bytecode: 0x54
642 | - Stack: ..., A, B: uint64, C: uint64 → ..., any
643 | - Copy of (byte-array or integer) A, with the Bth bit set to (0 or 1) C. If B is greater than or equal to the bit length of the value (8*byte length), the program fails
644 | - Availability: v3
645 |
646 | When A is a uint64, index 0 is the least significant bit. Setting bit 3 to 1 on the integer 0 yields 8, or 2^3. When A is a byte array, index 0 is the leftmost bit of the leftmost byte. Setting bits 0 through 11 to 1 in a 4-byte-array of 0s yields the byte array 0xfff00000. Setting bit 3 to 1 on the 1-byte-array 0x00 yields the byte array 0x10.
647 |
648 | ## getbyte
649 |
650 | - Bytecode: 0x55
651 | - Stack: ..., A: []byte, B: uint64 → ..., uint64
652 | - Bth byte of A, as an integer. If B is greater than or equal to the array length, the program fails
653 | - Availability: v3
654 |
655 | ## setbyte
656 |
657 | - Bytecode: 0x56
658 | - Stack: ..., A: []byte, B: uint64, C: uint64 → ..., []byte
659 | - Copy of A with the Bth byte set to small integer (between 0..255) C. If B is greater than or equal to the array length, the program fails
660 | - Availability: v3
661 |
662 | ## balance
663 |
664 | - Bytecode: 0x60
665 | - Stack: ..., A → ..., uint64
666 | - balance for account A, in microalgos. The balance is observed after the effects of previous transactions in the group, and after the fee for the current transaction is deducted. Changes caused by inner transactions are observable immediately following `itxn_submit`
667 | - Availability: v2
668 | - Mode: Application
669 |
670 | params: Txn.Accounts offset (or, since v4, an _available_ account address), _available_ application id (or, since v4, a Txn.ForeignApps offset). Return: value.
671 |
672 | ## app_opted_in
673 |
674 | - Bytecode: 0x61
675 | - Stack: ..., A, B: uint64 → ..., bool
676 | - 1 if account A is opted in to application B, else 0
677 | - Availability: v2
678 | - Mode: Application
679 |
680 | params: Txn.Accounts offset (or, since v4, an _available_ account address), _available_ application id (or, since v4, a Txn.ForeignApps offset). Return: 1 if opted in and 0 otherwise.
681 |
682 | ## app_local_get
683 |
684 | - Bytecode: 0x62
685 | - Stack: ..., A, B: stateKey → ..., any
686 | - local state of the key B in the current application in account A
687 | - Availability: v2
688 | - Mode: Application
689 |
690 | params: Txn.Accounts offset (or, since v4, an _available_ account address), state key. Return: value. The value is zero (of type uint64) if the key does not exist.
691 |
692 | ## app_local_get_ex
693 |
694 | - Bytecode: 0x63
695 | - Stack: ..., A, B: uint64, C: stateKey → ..., X: any, Y: bool
696 | - X is the local state of application B, key C in account A. Y is 1 if key existed, else 0
697 | - Availability: v2
698 | - Mode: Application
699 |
700 | params: Txn.Accounts offset (or, since v4, an _available_ account address), _available_ application id (or, since v4, a Txn.ForeignApps offset), state key. Return: did_exist flag (top of the stack, 1 if the application and key existed and 0 otherwise), value. The value is zero (of type uint64) if the key does not exist.
701 |
702 | ## app_global_get
703 |
704 | - Bytecode: 0x64
705 | - Stack: ..., A: stateKey → ..., any
706 | - global state of the key A in the current application
707 | - Availability: v2
708 | - Mode: Application
709 |
710 | params: state key. Return: value. The value is zero (of type uint64) if the key does not exist.
711 |
712 | ## app_global_get_ex
713 |
714 | - Bytecode: 0x65
715 | - Stack: ..., A: uint64, B: stateKey → ..., X: any, Y: bool
716 | - X is the global state of application A, key B. Y is 1 if key existed, else 0
717 | - Availability: v2
718 | - Mode: Application
719 |
720 | params: Txn.ForeignApps offset (or, since v4, an _available_ application id), state key. Return: did_exist flag (top of the stack, 1 if the application and key existed and 0 otherwise), value. The value is zero (of type uint64) if the key does not exist.
721 |
722 | ## app_local_put
723 |
724 | - Bytecode: 0x66
725 | - Stack: ..., A, B: stateKey, C → ...
726 | - write C to key B in account A's local state of the current application
727 | - Availability: v2
728 | - Mode: Application
729 |
730 | params: Txn.Accounts offset (or, since v4, an _available_ account address), state key, value.
731 |
732 | ## app_global_put
733 |
734 | - Bytecode: 0x67
735 | - Stack: ..., A: stateKey, B → ...
736 | - write B to key A in the global state of the current application
737 | - Availability: v2
738 | - Mode: Application
739 |
740 | ## app_local_del
741 |
742 | - Bytecode: 0x68
743 | - Stack: ..., A, B: stateKey → ...
744 | - delete key B from account A's local state of the current application
745 | - Availability: v2
746 | - Mode: Application
747 |
748 | params: Txn.Accounts offset (or, since v4, an _available_ account address), state key.
749 |
750 | Deleting a key which is already absent has no effect on the application local state. (In particular, it does _not_ cause the program to fail.)
751 |
752 | ## app_global_del
753 |
754 | - Bytecode: 0x69
755 | - Stack: ..., A: stateKey → ...
756 | - delete key A from the global state of the current application
757 | - Availability: v2
758 | - Mode: Application
759 |
760 | params: state key.
761 |
762 | Deleting a key which is already absent has no effect on the application global state. (In particular, it does _not_ cause the program to fail.)
763 |
764 | ## asset_holding_get
765 |
766 | - Syntax: `asset_holding_get F` where F: [asset_holding](#field-group-asset_holding)
767 | - Bytecode: 0x70 {uint8}
768 | - Stack: ..., A, B: uint64 → ..., X: any, Y: bool
769 | - X is field F from account A's holding of asset B. Y is 1 if A is opted into B, else 0
770 | - Availability: v2
771 | - Mode: Application
772 |
773 | ### asset_holding
774 |
775 | Fields
776 |
777 | | Index | Name | Type | Notes |
778 | | - | ------ | -- | --------- |
779 | | 0 | AssetBalance | uint64 | Amount of the asset unit held by this account |
780 | | 1 | AssetFrozen | bool | Is the asset frozen or not |
781 |
782 |
783 | params: Txn.Accounts offset (or, since v4, an _available_ address), asset id (or, since v4, a Txn.ForeignAssets offset). Return: did_exist flag (1 if the asset existed and 0 otherwise), value.
784 |
785 | ## asset_params_get
786 |
787 | - Syntax: `asset_params_get F` where F: [asset_params](#field-group-asset_params)
788 | - Bytecode: 0x71 {uint8}
789 | - Stack: ..., A: uint64 → ..., X: any, Y: bool
790 | - X is field F from asset A. Y is 1 if A exists, else 0
791 | - Availability: v2
792 | - Mode: Application
793 |
794 | ### asset_params
795 |
796 | Fields
797 |
798 | | Index | Name | Type | Notes |
799 | | - | ------ | -- | --------- |
800 | | 0 | AssetTotal | uint64 | Total number of units of this asset |
801 | | 1 | AssetDecimals | uint64 | See AssetParams.Decimals |
802 | | 2 | AssetDefaultFrozen | bool | Frozen by default or not |
803 | | 3 | AssetUnitName | []byte | Asset unit name |
804 | | 4 | AssetName | []byte | Asset name |
805 | | 5 | AssetURL | []byte | URL with additional info about the asset |
806 | | 6 | AssetMetadataHash | [32]byte | Arbitrary commitment |
807 | | 7 | AssetManager | address | Manager address |
808 | | 8 | AssetReserve | address | Reserve address |
809 | | 9 | AssetFreeze | address | Freeze address |
810 | | 10 | AssetClawback | address | Clawback address |
811 |
812 |
813 | params: Txn.ForeignAssets offset (or, since v4, an _available_ asset id. Return: did_exist flag (1 if the asset existed and 0 otherwise), value.
814 |
815 | ## min_balance
816 |
817 | - Bytecode: 0x78
818 | - Stack: ..., A → ..., uint64
819 | - minimum required balance for account A, in microalgos. Required balance is affected by ASA, App, and Box usage. When creating or opting into an app, the minimum balance grows before the app code runs, therefore the increase is visible there. When deleting or closing out, the minimum balance decreases after the app executes. Changes caused by inner transactions or box usage are observable immediately following the opcode effecting the change.
820 | - Availability: v3
821 | - Mode: Application
822 |
823 | params: Txn.Accounts offset (or, since v4, an _available_ account address), _available_ application id (or, since v4, a Txn.ForeignApps offset). Return: value.
824 |
825 | ## pushbytes
826 |
827 | - Syntax: `pushbytes BYTES` where BYTES: a byte constant
828 | - Bytecode: 0x80 {varuint length, bytes}
829 | - Stack: ... → ..., []byte
830 | - immediate BYTES
831 | - Availability: v3
832 |
833 | pushbytes args are not added to the bytecblock during assembly processes
834 |
835 | ## pushint
836 |
837 | - Syntax: `pushint UINT` where UINT: an int constant
838 | - Bytecode: 0x81 {varuint}
839 | - Stack: ... → ..., uint64
840 | - immediate UINT
841 | - Availability: v3
842 |
843 | pushint args are not added to the intcblock during assembly processes
844 |
845 | ## callsub
846 |
847 | - Syntax: `callsub TARGET` where TARGET: branch offset
848 | - Bytecode: 0x88 {int16 (big-endian)}
849 | - Stack: ... → ...
850 | - branch unconditionally to TARGET, saving the next instruction on the call stack
851 | - Availability: v4
852 |
853 | The call stack is separate from the data stack. Only `callsub`, `retsub`, and `proto` manipulate it.
854 |
855 | ## retsub
856 |
857 | - Bytecode: 0x89
858 | - Stack: ... → ...
859 | - pop the top instruction from the call stack and branch to it
860 | - Availability: v4
861 |
862 | If the current frame was prepared by `proto A R`, `retsub` will remove the 'A' arguments from the stack, move the `R` return values down, and pop any stack locations above the relocated return values.
863 |
864 | ## shl
865 |
866 | - Bytecode: 0x90
867 | - Stack: ..., A: uint64, B: uint64 → ..., uint64
868 | - A times 2^B, modulo 2^64
869 | - Availability: v4
870 |
871 | ## shr
872 |
873 | - Bytecode: 0x91
874 | - Stack: ..., A: uint64, B: uint64 → ..., uint64
875 | - A divided by 2^B
876 | - Availability: v4
877 |
878 | ## sqrt
879 |
880 | - Bytecode: 0x92
881 | - Stack: ..., A: uint64 → ..., uint64
882 | - The largest integer I such that I^2 <= A
883 | - **Cost**: 4
884 | - Availability: v4
885 |
886 | ## bitlen
887 |
888 | - Bytecode: 0x93
889 | - Stack: ..., A → ..., uint64
890 | - The highest set bit in A. If A is a byte-array, it is interpreted as a big-endian unsigned integer. bitlen of 0 is 0, bitlen of 8 is 4
891 | - Availability: v4
892 |
893 | bitlen interprets arrays as big-endian integers, unlike setbit/getbit
894 |
895 | ## exp
896 |
897 | - Bytecode: 0x94
898 | - Stack: ..., A: uint64, B: uint64 → ..., uint64
899 | - A raised to the Bth power. Fail if A == B == 0 and on overflow
900 | - Availability: v4
901 |
902 | ## expw
903 |
904 | - Bytecode: 0x95
905 | - Stack: ..., A: uint64, B: uint64 → ..., X: uint64, Y: uint64
906 | - A raised to the Bth power as a 128-bit result in two uint64s. X is the high 64 bits, Y is the low. Fail if A == B == 0 or if the results exceeds 2^128-1
907 | - **Cost**: 10
908 | - Availability: v4
909 |
910 | ## b+
911 |
912 | - Bytecode: 0xa0
913 | - Stack: ..., A: bigint, B: bigint → ..., []byte
914 | - A plus B. A and B are interpreted as big-endian unsigned integers
915 | - **Cost**: 10
916 | - Availability: v4
917 |
918 | ## b-
919 |
920 | - Bytecode: 0xa1
921 | - Stack: ..., A: bigint, B: bigint → ..., bigint
922 | - A minus B. A and B are interpreted as big-endian unsigned integers. Fail on underflow.
923 | - **Cost**: 10
924 | - Availability: v4
925 |
926 | ## b/
927 |
928 | - Bytecode: 0xa2
929 | - Stack: ..., A: bigint, B: bigint → ..., bigint
930 | - A divided by B (truncated division). A and B are interpreted as big-endian unsigned integers. Fail if B is zero.
931 | - **Cost**: 20
932 | - Availability: v4
933 |
934 | ## b*
935 |
936 | - Bytecode: 0xa3
937 | - Stack: ..., A: bigint, B: bigint → ..., []byte
938 | - A times B. A and B are interpreted as big-endian unsigned integers.
939 | - **Cost**: 20
940 | - Availability: v4
941 |
942 | ## b<
943 |
944 | - Bytecode: 0xa4
945 | - Stack: ..., A: bigint, B: bigint → ..., bool
946 | - 1 if A is less than B, else 0. A and B are interpreted as big-endian unsigned integers
947 | - Availability: v4
948 |
949 | ## b>
950 |
951 | - Bytecode: 0xa5
952 | - Stack: ..., A: bigint, B: bigint → ..., bool
953 | - 1 if A is greater than B, else 0. A and B are interpreted as big-endian unsigned integers
954 | - Availability: v4
955 |
956 | ## b<=
957 |
958 | - Bytecode: 0xa6
959 | - Stack: ..., A: bigint, B: bigint → ..., bool
960 | - 1 if A is less than or equal to B, else 0. A and B are interpreted as big-endian unsigned integers
961 | - Availability: v4
962 |
963 | ## b>=
964 |
965 | - Bytecode: 0xa7
966 | - Stack: ..., A: bigint, B: bigint → ..., bool
967 | - 1 if A is greater than or equal to B, else 0. A and B are interpreted as big-endian unsigned integers
968 | - Availability: v4
969 |
970 | ## b==
971 |
972 | - Bytecode: 0xa8
973 | - Stack: ..., A: bigint, B: bigint → ..., bool
974 | - 1 if A is equal to B, else 0. A and B are interpreted as big-endian unsigned integers
975 | - Availability: v4
976 |
977 | ## b!=
978 |
979 | - Bytecode: 0xa9
980 | - Stack: ..., A: bigint, B: bigint → ..., bool
981 | - 0 if A is equal to B, else 1. A and B are interpreted as big-endian unsigned integers
982 | - Availability: v4
983 |
984 | ## b%
985 |
986 | - Bytecode: 0xaa
987 | - Stack: ..., A: bigint, B: bigint → ..., bigint
988 | - A modulo B. A and B are interpreted as big-endian unsigned integers. Fail if B is zero.
989 | - **Cost**: 20
990 | - Availability: v4
991 |
992 | ## b|
993 |
994 | - Bytecode: 0xab
995 | - Stack: ..., A: []byte, B: []byte → ..., []byte
996 | - A bitwise-or B. A and B are zero-left extended to the greater of their lengths
997 | - **Cost**: 6
998 | - Availability: v4
999 |
1000 | ## b&
1001 |
1002 | - Bytecode: 0xac
1003 | - Stack: ..., A: []byte, B: []byte → ..., []byte
1004 | - A bitwise-and B. A and B are zero-left extended to the greater of their lengths
1005 | - **Cost**: 6
1006 | - Availability: v4
1007 |
1008 | ## b^
1009 |
1010 | - Bytecode: 0xad
1011 | - Stack: ..., A: []byte, B: []byte → ..., []byte
1012 | - A bitwise-xor B. A and B are zero-left extended to the greater of their lengths
1013 | - **Cost**: 6
1014 | - Availability: v4
1015 |
1016 | ## b~
1017 |
1018 | - Bytecode: 0xae
1019 | - Stack: ..., A: []byte → ..., []byte
1020 | - A with all bits inverted
1021 | - **Cost**: 4
1022 | - Availability: v4
1023 |
1024 | ## bzero
1025 |
1026 | - Bytecode: 0xaf
1027 | - Stack: ..., A: uint64 → ..., []byte
1028 | - zero filled byte-array of length A
1029 | - Availability: v4
1030 |
```