This is page 63 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/developer:docs:details:dapps:avm:teal:opcodes:v5.md:
--------------------------------------------------------------------------------
```markdown
1 | title: v5 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 |
40 | 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.
41 |
42 | ## ecdsa_verify
43 |
44 | - Syntax: `ecdsa_verify V` where V: [ECDSA](#field-group-ecdsa)
45 | - Bytecode: 0x05 {uint8}
46 | - Stack: ..., A: [32]byte, B: [32]byte, C: [32]byte, D: [32]byte, E: [32]byte → ..., bool
47 | - for (data A, signature B, C and pubkey D, E) verify the signature of the data against the pubkey => {0 or 1}
48 | - **Cost**: Secp256k1=1700
49 | - Availability: v5
50 |
51 | ### ECDSA
52 |
53 | Curves
54 |
55 | | Index | Name | Notes |
56 | | - | ------ | --------- |
57 | | 0 | Secp256k1 | secp256k1 curve, used in Bitcoin |
58 |
59 |
60 | The 32 byte Y-component of a public key is the last element on the stack, preceded by X-component of a pubkey, preceded by S and R components of a signature, preceded by the data that is fifth element on the stack. All values are big-endian encoded. The signed data must be 32 bytes long, and signatures in lower-S form are only accepted.
61 |
62 | ## ecdsa_pk_decompress
63 |
64 | - Syntax: `ecdsa_pk_decompress V` where V: [ECDSA](#field-group-ecdsa)
65 | - Bytecode: 0x06 {uint8}
66 | - Stack: ..., A: [33]byte → ..., X: [32]byte, Y: [32]byte
67 | - decompress pubkey A into components X, Y
68 | - **Cost**: Secp256k1=650
69 | - Availability: v5
70 |
71 | The 33 byte public key in a compressed form to be decompressed into X and Y (top) components. All values are big-endian encoded.
72 |
73 | ## ecdsa_pk_recover
74 |
75 | - Syntax: `ecdsa_pk_recover V` where V: [ECDSA](#field-group-ecdsa)
76 | - Bytecode: 0x07 {uint8}
77 | - Stack: ..., A: [32]byte, B: uint64, C: [32]byte, D: [32]byte → ..., X: [32]byte, Y: [32]byte
78 | - for (data A, recovery id B, signature C, D) recover a public key
79 | - **Cost**: 2000
80 | - Availability: v5
81 |
82 | S (top) and R elements of a signature, recovery id and data (bottom) are expected on the stack and used to deriver a public key. All values are big-endian encoded. The signed data must be 32 bytes long.
83 |
84 | ## +
85 |
86 | - Bytecode: 0x08
87 | - Stack: ..., A: uint64, B: uint64 → ..., uint64
88 | - A plus B. Fail on overflow.
89 |
90 | Overflow is an error condition which halts execution and fails the transaction. Full precision is available from `addw`.
91 |
92 | ## -
93 |
94 | - Bytecode: 0x09
95 | - Stack: ..., A: uint64, B: uint64 → ..., uint64
96 | - A minus B. Fail if B > A.
97 |
98 | ## /
99 |
100 | - Bytecode: 0x0a
101 | - Stack: ..., A: uint64, B: uint64 → ..., uint64
102 | - A divided by B (truncated division). Fail if B == 0.
103 |
104 | `divmodw` is available to divide the two-element values produced by `mulw` and `addw`.
105 |
106 | ## *
107 |
108 | - Bytecode: 0x0b
109 | - Stack: ..., A: uint64, B: uint64 → ..., uint64
110 | - A times B. Fail on overflow.
111 |
112 | Overflow is an error condition which halts execution and fails the transaction. Full precision is available from `mulw`.
113 |
114 | ## <
115 |
116 | - Bytecode: 0x0c
117 | - Stack: ..., A: uint64, B: uint64 → ..., bool
118 | - A less than B => {0 or 1}
119 |
120 | ## >
121 |
122 | - Bytecode: 0x0d
123 | - Stack: ..., A: uint64, B: uint64 → ..., bool
124 | - A greater than B => {0 or 1}
125 |
126 | ## <=
127 |
128 | - Bytecode: 0x0e
129 | - Stack: ..., A: uint64, B: uint64 → ..., bool
130 | - A less than or equal to B => {0 or 1}
131 |
132 | ## >=
133 |
134 | - Bytecode: 0x0f
135 | - Stack: ..., A: uint64, B: uint64 → ..., bool
136 | - A greater than or equal to B => {0 or 1}
137 |
138 | ## &&
139 |
140 | - Bytecode: 0x10
141 | - Stack: ..., A: uint64, B: uint64 → ..., bool
142 | - A is not zero and B is not zero => {0 or 1}
143 |
144 | ## ||
145 |
146 | - Bytecode: 0x11
147 | - Stack: ..., A: uint64, B: uint64 → ..., bool
148 | - A is not zero or B is not zero => {0 or 1}
149 |
150 | ## ==
151 |
152 | - Bytecode: 0x12
153 | - Stack: ..., A, B → ..., bool
154 | - A is equal to B => {0 or 1}
155 |
156 | ## !=
157 |
158 | - Bytecode: 0x13
159 | - Stack: ..., A, B → ..., bool
160 | - A is not equal to B => {0 or 1}
161 |
162 | ## !
163 |
164 | - Bytecode: 0x14
165 | - Stack: ..., A: uint64 → ..., uint64
166 | - A == 0 yields 1; else 0
167 |
168 | ## len
169 |
170 | - Bytecode: 0x15
171 | - Stack: ..., A: []byte → ..., uint64
172 | - yields length of byte value A
173 |
174 | ## itob
175 |
176 | - Bytecode: 0x16
177 | - Stack: ..., A: uint64 → ..., [8]byte
178 | - converts uint64 A to big-endian byte array, always of length 8
179 |
180 | ## btoi
181 |
182 | - Bytecode: 0x17
183 | - Stack: ..., A: []byte → ..., uint64
184 | - converts big-endian byte array A to uint64. Fails if len(A) > 8. Padded by leading 0s if len(A) < 8.
185 |
186 | `btoi` fails if the input is longer than 8 bytes.
187 |
188 | ## %
189 |
190 | - Bytecode: 0x18
191 | - Stack: ..., A: uint64, B: uint64 → ..., uint64
192 | - A modulo B. Fail if B == 0.
193 |
194 | ## |
195 |
196 | - Bytecode: 0x19
197 | - Stack: ..., A: uint64, B: uint64 → ..., uint64
198 | - A bitwise-or B
199 |
200 | ## &
201 |
202 | - Bytecode: 0x1a
203 | - Stack: ..., A: uint64, B: uint64 → ..., uint64
204 | - A bitwise-and B
205 |
206 | ## ^
207 |
208 | - Bytecode: 0x1b
209 | - Stack: ..., A: uint64, B: uint64 → ..., uint64
210 | - A bitwise-xor B
211 |
212 | ## ~
213 |
214 | - Bytecode: 0x1c
215 | - Stack: ..., A: uint64 → ..., uint64
216 | - bitwise invert value A
217 |
218 | ## mulw
219 |
220 | - Bytecode: 0x1d
221 | - Stack: ..., A: uint64, B: uint64 → ..., X: uint64, Y: uint64
222 | - A times B as a 128-bit result in two uint64s. X is the high 64 bits, Y is the low
223 |
224 | ## addw
225 |
226 | - Bytecode: 0x1e
227 | - Stack: ..., A: uint64, B: uint64 → ..., X: uint64, Y: uint64
228 | - A plus B as a 128-bit result. X is the carry-bit, Y is the low-order 64 bits.
229 | - Availability: v2
230 |
231 | ## divmodw
232 |
233 | - Bytecode: 0x1f
234 | - Stack: ..., A: uint64, B: uint64, C: uint64, D: uint64 → ..., W: uint64, X: uint64, Y: uint64, Z: uint64
235 | - W,X = (A,B / C,D); Y,Z = (A,B modulo C,D)
236 | - **Cost**: 20
237 | - Availability: v4
238 |
239 | 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.
240 |
241 | ## intcblock
242 |
243 | - Syntax: `intcblock UINT ...` where UINT ...: a block of int constant values
244 | - Bytecode: 0x20 {varuint count, [varuint ...]}
245 | - Stack: ... → ...
246 | - prepare block of uint64 constants for use by intc
247 |
248 | `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.
249 |
250 | ## intc
251 |
252 | - Syntax: `intc I` where I: an index in the intcblock
253 | - Bytecode: 0x21 {uint8}
254 | - Stack: ... → ..., uint64
255 | - Ith constant from intcblock
256 |
257 | ## intc_0
258 |
259 | - Bytecode: 0x22
260 | - Stack: ... → ..., uint64
261 | - constant 0 from intcblock
262 |
263 | ## intc_1
264 |
265 | - Bytecode: 0x23
266 | - Stack: ... → ..., uint64
267 | - constant 1 from intcblock
268 |
269 | ## intc_2
270 |
271 | - Bytecode: 0x24
272 | - Stack: ... → ..., uint64
273 | - constant 2 from intcblock
274 |
275 | ## intc_3
276 |
277 | - Bytecode: 0x25
278 | - Stack: ... → ..., uint64
279 | - constant 3 from intcblock
280 |
281 | ## bytecblock
282 |
283 | - Syntax: `bytecblock BYTES ...` where BYTES ...: a block of byte constant values
284 | - Bytecode: 0x26 {varuint count, [varuint length, bytes ...]}
285 | - Stack: ... → ...
286 | - prepare block of byte-array constants for use by bytec
287 |
288 | `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.
289 |
290 | ## bytec
291 |
292 | - Syntax: `bytec I` where I: an index in the bytecblock
293 | - Bytecode: 0x27 {uint8}
294 | - Stack: ... → ..., []byte
295 | - Ith constant from bytecblock
296 |
297 | ## bytec_0
298 |
299 | - Bytecode: 0x28
300 | - Stack: ... → ..., []byte
301 | - constant 0 from bytecblock
302 |
303 | ## bytec_1
304 |
305 | - Bytecode: 0x29
306 | - Stack: ... → ..., []byte
307 | - constant 1 from bytecblock
308 |
309 | ## bytec_2
310 |
311 | - Bytecode: 0x2a
312 | - Stack: ... → ..., []byte
313 | - constant 2 from bytecblock
314 |
315 | ## bytec_3
316 |
317 | - Bytecode: 0x2b
318 | - Stack: ... → ..., []byte
319 | - constant 3 from bytecblock
320 |
321 | ## arg
322 |
323 | - Syntax: `arg N` where N: an arg index
324 | - Bytecode: 0x2c {uint8}
325 | - Stack: ... → ..., []byte
326 | - Nth LogicSig argument
327 | - Mode: Signature
328 |
329 | ## arg_0
330 |
331 | - Bytecode: 0x2d
332 | - Stack: ... → ..., []byte
333 | - LogicSig argument 0
334 | - Mode: Signature
335 |
336 | ## arg_1
337 |
338 | - Bytecode: 0x2e
339 | - Stack: ... → ..., []byte
340 | - LogicSig argument 1
341 | - Mode: Signature
342 |
343 | ## arg_2
344 |
345 | - Bytecode: 0x2f
346 | - Stack: ... → ..., []byte
347 | - LogicSig argument 2
348 | - Mode: Signature
349 |
350 | ## arg_3
351 |
352 | - Bytecode: 0x30
353 | - Stack: ... → ..., []byte
354 | - LogicSig argument 3
355 | - Mode: Signature
356 |
357 | ## txn
358 |
359 | - Syntax: `txn F` where F: [txn](#field-group-txn)
360 | - Bytecode: 0x31 {uint8}
361 | - Stack: ... → ..., any
362 | - field F of current transaction
363 |
364 | ### txn
365 |
366 | Fields (see [transaction reference](https://developer.algorand.org/docs/reference/transactions/))
367 |
368 | | Index | Name | Type | In | Notes |
369 | | - | ------ | -- | - | --------- |
370 | | 0 | Sender | address | | 32 byte address |
371 | | 1 | Fee | uint64 | | microalgos |
372 | | 2 | FirstValid | uint64 | | round number |
373 | | 4 | LastValid | uint64 | | round number |
374 | | 5 | Note | []byte | | Any data up to 1024 bytes |
375 | | 6 | Lease | [32]byte | | 32 byte lease value |
376 | | 7 | Receiver | address | | 32 byte address |
377 | | 8 | Amount | uint64 | | microalgos |
378 | | 9 | CloseRemainderTo | address | | 32 byte address |
379 | | 10 | VotePK | [32]byte | | 32 byte address |
380 | | 11 | SelectionPK | [32]byte | | 32 byte address |
381 | | 12 | VoteFirst | uint64 | | The first round that the participation key is valid. |
382 | | 13 | VoteLast | uint64 | | The last round that the participation key is valid. |
383 | | 14 | VoteKeyDilution | uint64 | | Dilution for the 2-level participation key |
384 | | 15 | Type | []byte | | Transaction type as bytes |
385 | | 16 | TypeEnum | uint64 | | Transaction type as integer |
386 | | 17 | XferAsset | uint64 | | Asset ID |
387 | | 18 | AssetAmount | uint64 | | value in Asset's units |
388 | | 19 | AssetSender | address | | 32 byte address. Source of assets if Sender is the Asset's Clawback address. |
389 | | 20 | AssetReceiver | address | | 32 byte address |
390 | | 21 | AssetCloseTo | address | | 32 byte address |
391 | | 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 |
392 | | 23 | TxID | [32]byte | | The computed ID for this transaction. 32 bytes. |
393 | | 24 | ApplicationID | uint64 | v2 | ApplicationID from ApplicationCall transaction |
394 | | 25 | OnCompletion | uint64 | v2 | ApplicationCall transaction on completion action |
395 | | 27 | NumAppArgs | uint64 | v2 | Number of ApplicationArgs |
396 | | 29 | NumAccounts | uint64 | v2 | Number of Accounts |
397 | | 30 | ApprovalProgram | []byte | v2 | Approval program |
398 | | 31 | ClearStateProgram | []byte | v2 | Clear state program |
399 | | 32 | RekeyTo | address | v2 | 32 byte Sender's new AuthAddr |
400 | | 33 | ConfigAsset | uint64 | v2 | Asset ID in asset config transaction |
401 | | 34 | ConfigAssetTotal | uint64 | v2 | Total number of units of this asset created |
402 | | 35 | ConfigAssetDecimals | uint64 | v2 | Number of digits to display after the decimal place when displaying the asset |
403 | | 36 | ConfigAssetDefaultFrozen | bool | v2 | Whether the asset's slots are frozen by default or not, 0 or 1 |
404 | | 37 | ConfigAssetUnitName | []byte | v2 | Unit name of the asset |
405 | | 38 | ConfigAssetName | []byte | v2 | The asset name |
406 | | 39 | ConfigAssetURL | []byte | v2 | URL |
407 | | 40 | ConfigAssetMetadataHash | [32]byte | v2 | 32 byte commitment to unspecified asset metadata |
408 | | 41 | ConfigAssetManager | address | v2 | 32 byte address |
409 | | 42 | ConfigAssetReserve | address | v2 | 32 byte address |
410 | | 43 | ConfigAssetFreeze | address | v2 | 32 byte address |
411 | | 44 | ConfigAssetClawback | address | v2 | 32 byte address |
412 | | 45 | FreezeAsset | uint64 | v2 | Asset ID being frozen or un-frozen |
413 | | 46 | FreezeAssetAccount | address | v2 | 32 byte address of the account whose asset slot is being frozen or un-frozen |
414 | | 47 | FreezeAssetFrozen | bool | v2 | The new frozen value, 0 or 1 |
415 | | 49 | NumAssets | uint64 | v3 | Number of Assets |
416 | | 51 | NumApplications | uint64 | v3 | Number of Applications |
417 | | 52 | GlobalNumUint | uint64 | v3 | Number of global state integers in ApplicationCall |
418 | | 53 | GlobalNumByteSlice | uint64 | v3 | Number of global state byteslices in ApplicationCall |
419 | | 54 | LocalNumUint | uint64 | v3 | Number of local state integers in ApplicationCall |
420 | | 55 | LocalNumByteSlice | uint64 | v3 | Number of local state byteslices in ApplicationCall |
421 | | 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. |
422 | | 57 | Nonparticipation | bool | v5 | Marks an account nonparticipating for rewards |
423 | | 59 | NumLogs | uint64 | v5 | Number of Logs (only with `itxn` in v5). Application mode only |
424 | | 60 | CreatedAssetID | uint64 | v5 | Asset ID allocated by the creation of an ASA (only with `itxn` in v5). Application mode only |
425 | | 61 | CreatedApplicationID | uint64 | v5 | ApplicationID allocated by the creation of an application (only with `itxn` in v5). Application mode only |
426 |
427 |
428 | ## global
429 |
430 | - Syntax: `global F` where F: [global](#field-group-global)
431 | - Bytecode: 0x32 {uint8}
432 | - Stack: ... → ..., any
433 | - global field F
434 |
435 | ### global
436 |
437 | Fields
438 |
439 | | Index | Name | Type | In | Notes |
440 | | - | ------ | -- | - | --------- |
441 | | 0 | MinTxnFee | uint64 | | microalgos |
442 | | 1 | MinBalance | uint64 | | microalgos |
443 | | 2 | MaxTxnLife | uint64 | | rounds |
444 | | 3 | ZeroAddress | address | | 32 byte address of all zero bytes |
445 | | 4 | GroupSize | uint64 | | Number of transactions in this atomic transaction group. At least 1 |
446 | | 5 | LogicSigVersion | uint64 | v2 | Maximum supported version |
447 | | 6 | Round | uint64 | v2 | Current round number. Application mode only. |
448 | | 7 | LatestTimestamp | uint64 | v2 | Last confirmed block UNIX timestamp. Fails if negative. Application mode only. |
449 | | 8 | CurrentApplicationID | uint64 | v2 | ID of current application executing. Application mode only. |
450 | | 9 | CreatorAddress | address | v3 | Address of the creator of the current application. Application mode only. |
451 | | 10 | CurrentApplicationAddress | address | v5 | Address that the current application controls. Application mode only. |
452 | | 11 | GroupID | [32]byte | v5 | ID of the transaction group. 32 zero bytes if the transaction is not part of a group. |
453 |
454 |
455 | ## gtxn
456 |
457 | - Syntax: `gtxn T F` where T: transaction group index, F: [txn](#field-group-txn)
458 | - Bytecode: 0x33 {uint8}, {uint8}
459 | - Stack: ... → ..., any
460 | - field F of the Tth transaction in the current group
461 |
462 | for notes on transaction fields available, see `txn`. If this transaction is _i_ in the group, `gtxn i field` is equivalent to `txn field`.
463 |
464 | ## load
465 |
466 | - Syntax: `load I` where I: position in scratch space to load from
467 | - Bytecode: 0x34 {uint8}
468 | - Stack: ... → ..., any
469 | - Ith scratch space value. All scratch spaces are 0 at program start.
470 |
471 | ## store
472 |
473 | - Syntax: `store I` where I: position in scratch space to store to
474 | - Bytecode: 0x35 {uint8}
475 | - Stack: ..., A → ...
476 | - store A to the Ith scratch space
477 |
478 | ## txna
479 |
480 | - Syntax: `txna F I` where F: [txna](#field-group-txna), I: transaction field array index
481 | - Bytecode: 0x36 {uint8}, {uint8}
482 | - Stack: ... → ..., any
483 | - Ith value of the array field F of the current transaction<br />`txna` can be called using `txn` with 2 immediates.
484 | - Availability: v2
485 |
486 | ### txna
487 |
488 | Fields (see [transaction reference](https://developer.algorand.org/docs/reference/transactions/))
489 |
490 | | Index | Name | Type | In | Notes |
491 | | - | ------ | -- | - | --------- |
492 | | 26 | ApplicationArgs | []byte | v2 | Arguments passed to the application in the ApplicationCall transaction |
493 | | 28 | Accounts | address | v2 | Accounts listed in the ApplicationCall transaction |
494 | | 48 | Assets | uint64 | v3 | Foreign Assets listed in the ApplicationCall transaction |
495 | | 50 | Applications | uint64 | v3 | Foreign Apps listed in the ApplicationCall transaction |
496 | | 58 | Logs | []byte | v5 | Log messages emitted by an application call (only with `itxn` in v5). Application mode only |
497 |
498 |
499 | ## gtxna
500 |
501 | - Syntax: `gtxna T F I` where T: transaction group index, F: [txna](#field-group-txna), I: transaction field array index
502 | - Bytecode: 0x37 {uint8}, {uint8}, {uint8}
503 | - Stack: ... → ..., any
504 | - 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.
505 | - Availability: v2
506 |
507 | ## gtxns
508 |
509 | - Syntax: `gtxns F` where F: [txn](#field-group-txn)
510 | - Bytecode: 0x38 {uint8}
511 | - Stack: ..., A: uint64 → ..., any
512 | - field F of the Ath transaction in the current group
513 | - Availability: v3
514 |
515 | 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.
516 |
517 | ## gtxnsa
518 |
519 | - Syntax: `gtxnsa F I` where F: [txna](#field-group-txna), I: transaction field array index
520 | - Bytecode: 0x39 {uint8}, {uint8}
521 | - Stack: ..., A: uint64 → ..., any
522 | - 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.
523 | - Availability: v3
524 |
525 | ## gload
526 |
527 | - Syntax: `gload T I` where T: transaction group index, I: position in scratch space to load from
528 | - Bytecode: 0x3a {uint8}, {uint8}
529 | - Stack: ... → ..., any
530 | - Ith scratch space value of the Tth transaction in the current group
531 | - Availability: v4
532 | - Mode: Application
533 |
534 | `gload` fails unless the requested transaction is an ApplicationCall and T < GroupIndex.
535 |
536 | ## gloads
537 |
538 | - Syntax: `gloads I` where I: position in scratch space to load from
539 | - Bytecode: 0x3b {uint8}
540 | - Stack: ..., A: uint64 → ..., any
541 | - Ith scratch space value of the Ath transaction in the current group
542 | - Availability: v4
543 | - Mode: Application
544 |
545 | `gloads` fails unless the requested transaction is an ApplicationCall and A < GroupIndex.
546 |
547 | ## gaid
548 |
549 | - Syntax: `gaid T` where T: transaction group index
550 | - Bytecode: 0x3c {uint8}
551 | - Stack: ... → ..., uint64
552 | - ID of the asset or application created in the Tth transaction of the current group
553 | - Availability: v4
554 | - Mode: Application
555 |
556 | `gaid` fails unless the requested transaction created an asset or application and T < GroupIndex.
557 |
558 | ## gaids
559 |
560 | - Bytecode: 0x3d
561 | - Stack: ..., A: uint64 → ..., uint64
562 | - ID of the asset or application created in the Ath transaction of the current group
563 | - Availability: v4
564 | - Mode: Application
565 |
566 | `gaids` fails unless the requested transaction created an asset or application and A < GroupIndex.
567 |
568 | ## loads
569 |
570 | - Bytecode: 0x3e
571 | - Stack: ..., A: uint64 → ..., any
572 | - Ath scratch space value. All scratch spaces are 0 at program start.
573 | - Availability: v5
574 |
575 | ## stores
576 |
577 | - Bytecode: 0x3f
578 | - Stack: ..., A: uint64, B → ...
579 | - store B to the Ath scratch space
580 | - Availability: v5
581 |
582 | ## bnz
583 |
584 | - Syntax: `bnz TARGET` where TARGET: branch offset
585 | - Bytecode: 0x40 {int16 (big-endian)}
586 | - Stack: ..., A: uint64 → ...
587 | - branch to TARGET if value A is not zero
588 |
589 | 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.
590 |
591 | 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.)
592 |
593 | ## bz
594 |
595 | - Syntax: `bz TARGET` where TARGET: branch offset
596 | - Bytecode: 0x41 {int16 (big-endian)}
597 | - Stack: ..., A: uint64 → ...
598 | - branch to TARGET if value A is zero
599 | - Availability: v2
600 |
601 | See `bnz` for details on how branches work. `bz` inverts the behavior of `bnz`.
602 |
603 | ## b
604 |
605 | - Syntax: `b TARGET` where TARGET: branch offset
606 | - Bytecode: 0x42 {int16 (big-endian)}
607 | - Stack: ... → ...
608 | - branch unconditionally to TARGET
609 | - Availability: v2
610 |
611 | See `bnz` for details on how branches work. `b` always jumps to the offset.
612 |
613 | ## return
614 |
615 | - Bytecode: 0x43
616 | - Stack: ..., A: uint64 → _exits_
617 | - use A as success value; end
618 | - Availability: v2
619 |
620 | ## assert
621 |
622 | - Bytecode: 0x44
623 | - Stack: ..., A: uint64 → ...
624 | - immediately fail unless A is a non-zero number
625 | - Availability: v3
626 |
627 | ## pop
628 |
629 | - Bytecode: 0x48
630 | - Stack: ..., A → ...
631 | - discard A
632 |
633 | ## dup
634 |
635 | - Bytecode: 0x49
636 | - Stack: ..., A → ..., A, A
637 | - duplicate A
638 |
639 | ## dup2
640 |
641 | - Bytecode: 0x4a
642 | - Stack: ..., A, B → ..., A, B, A, B
643 | - duplicate A and B
644 | - Availability: v2
645 |
646 | ## dig
647 |
648 | - Syntax: `dig N` where N: depth
649 | - Bytecode: 0x4b {uint8}
650 | - Stack: ..., A, [N items] → ..., A, [N items], A
651 | - Nth value from the top of the stack. dig 0 is equivalent to dup
652 | - Availability: v3
653 |
654 | ## swap
655 |
656 | - Bytecode: 0x4c
657 | - Stack: ..., A, B → ..., B, A
658 | - swaps A and B on stack
659 | - Availability: v3
660 |
661 | ## select
662 |
663 | - Bytecode: 0x4d
664 | - Stack: ..., A, B, C: uint64 → ..., A or B
665 | - selects one of two values based on top-of-stack: B if C != 0, else A
666 | - Availability: v3
667 |
668 | ## cover
669 |
670 | - Syntax: `cover N` where N: depth
671 | - Bytecode: 0x4e {uint8}
672 | - Stack: ..., [N items], A → ..., A, [N items]
673 | - remove top of stack, and place it deeper in the stack such that N elements are above it. Fails if stack depth <= N.
674 | - Availability: v5
675 |
676 | ## uncover
677 |
678 | - Syntax: `uncover N` where N: depth
679 | - Bytecode: 0x4f {uint8}
680 | - Stack: ..., A, [N items] → ..., [N items], A
681 | - remove the value at depth N in the stack and shift above items down so the Nth deep value is on top of the stack. Fails if stack depth <= N.
682 | - Availability: v5
683 |
684 | ## concat
685 |
686 | - Bytecode: 0x50
687 | - Stack: ..., A: []byte, B: []byte → ..., []byte
688 | - join A and B
689 | - Availability: v2
690 |
691 | `concat` fails if the result would be greater than 4096 bytes.
692 |
693 | ## substring
694 |
695 | - Syntax: `substring S E` where S: start position, E: end position
696 | - Bytecode: 0x51 {uint8}, {uint8}
697 | - Stack: ..., A: []byte → ..., []byte
698 | - 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
699 | - Availability: v2
700 |
701 | ## substring3
702 |
703 | - Bytecode: 0x52
704 | - Stack: ..., A: []byte, B: uint64, C: uint64 → ..., []byte
705 | - 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
706 | - Availability: v2
707 |
708 | ## getbit
709 |
710 | - Bytecode: 0x53
711 | - Stack: ..., A, B: uint64 → ..., uint64
712 | - 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
713 | - Availability: v3
714 |
715 | see explanation of bit ordering in setbit
716 |
717 | ## setbit
718 |
719 | - Bytecode: 0x54
720 | - Stack: ..., A, B: uint64, C: uint64 → ..., any
721 | - 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
722 | - Availability: v3
723 |
724 | 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.
725 |
726 | ## getbyte
727 |
728 | - Bytecode: 0x55
729 | - Stack: ..., A: []byte, B: uint64 → ..., uint64
730 | - Bth byte of A, as an integer. If B is greater than or equal to the array length, the program fails
731 | - Availability: v3
732 |
733 | ## setbyte
734 |
735 | - Bytecode: 0x56
736 | - Stack: ..., A: []byte, B: uint64, C: uint64 → ..., []byte
737 | - 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
738 | - Availability: v3
739 |
740 | ## extract
741 |
742 | - Syntax: `extract S L` where S: start position, L: length
743 | - Bytecode: 0x57 {uint8}, {uint8}
744 | - Stack: ..., A: []byte → ..., []byte
745 | - A range of bytes from A starting at S up to but not including S+L. If L is 0, then extract to the end of the string. If S or S+L is larger than the array length, the program fails
746 | - Availability: v5
747 |
748 | ## extract3
749 |
750 | - Bytecode: 0x58
751 | - Stack: ..., A: []byte, B: uint64, C: uint64 → ..., []byte
752 | - A range of bytes from A starting at B up to but not including B+C. If B+C is larger than the array length, the program fails<br />`extract3` can be called using `extract` with no immediates.
753 | - Availability: v5
754 |
755 | ## extract_uint16
756 |
757 | - Bytecode: 0x59
758 | - Stack: ..., A: []byte, B: uint64 → ..., uint64
759 | - A uint16 formed from a range of big-endian bytes from A starting at B up to but not including B+2. If B+2 is larger than the array length, the program fails
760 | - Availability: v5
761 |
762 | ## extract_uint32
763 |
764 | - Bytecode: 0x5a
765 | - Stack: ..., A: []byte, B: uint64 → ..., uint64
766 | - A uint32 formed from a range of big-endian bytes from A starting at B up to but not including B+4. If B+4 is larger than the array length, the program fails
767 | - Availability: v5
768 |
769 | ## extract_uint64
770 |
771 | - Bytecode: 0x5b
772 | - Stack: ..., A: []byte, B: uint64 → ..., uint64
773 | - A uint64 formed from a range of big-endian bytes from A starting at B up to but not including B+8. If B+8 is larger than the array length, the program fails
774 | - Availability: v5
775 |
776 | ## balance
777 |
778 | - Bytecode: 0x60
779 | - Stack: ..., A → ..., uint64
780 | - 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`
781 | - Availability: v2
782 | - Mode: Application
783 |
784 | params: Txn.Accounts offset (or, since v4, an _available_ account address), _available_ application id (or, since v4, a Txn.ForeignApps offset). Return: value.
785 |
786 | ## app_opted_in
787 |
788 | - Bytecode: 0x61
789 | - Stack: ..., A, B: uint64 → ..., bool
790 | - 1 if account A is opted in to application B, else 0
791 | - Availability: v2
792 | - Mode: Application
793 |
794 | 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.
795 |
796 | ## app_local_get
797 |
798 | - Bytecode: 0x62
799 | - Stack: ..., A, B: stateKey → ..., any
800 | - local state of the key B in the current application in account A
801 | - Availability: v2
802 | - Mode: Application
803 |
804 | 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.
805 |
806 | ## app_local_get_ex
807 |
808 | - Bytecode: 0x63
809 | - Stack: ..., A, B: uint64, C: stateKey → ..., X: any, Y: bool
810 | - X is the local state of application B, key C in account A. Y is 1 if key existed, else 0
811 | - Availability: v2
812 | - Mode: Application
813 |
814 | 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.
815 |
816 | ## app_global_get
817 |
818 | - Bytecode: 0x64
819 | - Stack: ..., A: stateKey → ..., any
820 | - global state of the key A in the current application
821 | - Availability: v2
822 | - Mode: Application
823 |
824 | params: state key. Return: value. The value is zero (of type uint64) if the key does not exist.
825 |
826 | ## app_global_get_ex
827 |
828 | - Bytecode: 0x65
829 | - Stack: ..., A: uint64, B: stateKey → ..., X: any, Y: bool
830 | - X is the global state of application A, key B. Y is 1 if key existed, else 0
831 | - Availability: v2
832 | - Mode: Application
833 |
834 | 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.
835 |
836 | ## app_local_put
837 |
838 | - Bytecode: 0x66
839 | - Stack: ..., A, B: stateKey, C → ...
840 | - write C to key B in account A's local state of the current application
841 | - Availability: v2
842 | - Mode: Application
843 |
844 | params: Txn.Accounts offset (or, since v4, an _available_ account address), state key, value.
845 |
846 | ## app_global_put
847 |
848 | - Bytecode: 0x67
849 | - Stack: ..., A: stateKey, B → ...
850 | - write B to key A in the global state of the current application
851 | - Availability: v2
852 | - Mode: Application
853 |
854 | ## app_local_del
855 |
856 | - Bytecode: 0x68
857 | - Stack: ..., A, B: stateKey → ...
858 | - delete key B from account A's local state of the current application
859 | - Availability: v2
860 | - Mode: Application
861 |
862 | params: Txn.Accounts offset (or, since v4, an _available_ account address), state key.
863 |
864 | 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.)
865 |
866 | ## app_global_del
867 |
868 | - Bytecode: 0x69
869 | - Stack: ..., A: stateKey → ...
870 | - delete key A from the global state of the current application
871 | - Availability: v2
872 | - Mode: Application
873 |
874 | params: state key.
875 |
876 | 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.)
877 |
878 | ## asset_holding_get
879 |
880 | - Syntax: `asset_holding_get F` where F: [asset_holding](#field-group-asset_holding)
881 | - Bytecode: 0x70 {uint8}
882 | - Stack: ..., A, B: uint64 → ..., X: any, Y: bool
883 | - X is field F from account A's holding of asset B. Y is 1 if A is opted into B, else 0
884 | - Availability: v2
885 | - Mode: Application
886 |
887 | ### asset_holding
888 |
889 | Fields
890 |
891 | | Index | Name | Type | Notes |
892 | | - | ------ | -- | --------- |
893 | | 0 | AssetBalance | uint64 | Amount of the asset unit held by this account |
894 | | 1 | AssetFrozen | bool | Is the asset frozen or not |
895 |
896 |
897 | 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.
898 |
899 | ## asset_params_get
900 |
901 | - Syntax: `asset_params_get F` where F: [asset_params](#field-group-asset_params)
902 | - Bytecode: 0x71 {uint8}
903 | - Stack: ..., A: uint64 → ..., X: any, Y: bool
904 | - X is field F from asset A. Y is 1 if A exists, else 0
905 | - Availability: v2
906 | - Mode: Application
907 |
908 | ### asset_params
909 |
910 | Fields
911 |
912 | | Index | Name | Type | In | Notes |
913 | | - | ------ | -- | - | --------- |
914 | | 0 | AssetTotal | uint64 | | Total number of units of this asset |
915 | | 1 | AssetDecimals | uint64 | | See AssetParams.Decimals |
916 | | 2 | AssetDefaultFrozen | bool | | Frozen by default or not |
917 | | 3 | AssetUnitName | []byte | | Asset unit name |
918 | | 4 | AssetName | []byte | | Asset name |
919 | | 5 | AssetURL | []byte | | URL with additional info about the asset |
920 | | 6 | AssetMetadataHash | [32]byte | | Arbitrary commitment |
921 | | 7 | AssetManager | address | | Manager address |
922 | | 8 | AssetReserve | address | | Reserve address |
923 | | 9 | AssetFreeze | address | | Freeze address |
924 | | 10 | AssetClawback | address | | Clawback address |
925 | | 11 | AssetCreator | address | v5 | Creator address |
926 |
927 |
928 | params: Txn.ForeignAssets offset (or, since v4, an _available_ asset id. Return: did_exist flag (1 if the asset existed and 0 otherwise), value.
929 |
930 | ## app_params_get
931 |
932 | - Syntax: `app_params_get F` where F: [app_params](#field-group-app_params)
933 | - Bytecode: 0x72 {uint8}
934 | - Stack: ..., A: uint64 → ..., X: any, Y: bool
935 | - X is field F from app A. Y is 1 if A exists, else 0
936 | - Availability: v5
937 | - Mode: Application
938 |
939 | ### app_params
940 |
941 | Fields
942 |
943 | | Index | Name | Type | Notes |
944 | | - | ------ | -- | --------- |
945 | | 0 | AppApprovalProgram | []byte | Bytecode of Approval Program |
946 | | 1 | AppClearStateProgram | []byte | Bytecode of Clear State Program |
947 | | 2 | AppGlobalNumUint | uint64 | Number of uint64 values allowed in Global State |
948 | | 3 | AppGlobalNumByteSlice | uint64 | Number of byte array values allowed in Global State |
949 | | 4 | AppLocalNumUint | uint64 | Number of uint64 values allowed in Local State |
950 | | 5 | AppLocalNumByteSlice | uint64 | Number of byte array values allowed in Local State |
951 | | 6 | AppExtraProgramPages | uint64 | Number of Extra Program Pages of code space |
952 | | 7 | AppCreator | address | Creator address |
953 | | 8 | AppAddress | address | Address for which this application has authority |
954 |
955 |
956 | params: Txn.ForeignApps offset or an _available_ app id. Return: did_exist flag (1 if the application existed and 0 otherwise), value.
957 |
958 | ## min_balance
959 |
960 | - Bytecode: 0x78
961 | - Stack: ..., A → ..., uint64
962 | - 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.
963 | - Availability: v3
964 | - Mode: Application
965 |
966 | params: Txn.Accounts offset (or, since v4, an _available_ account address), _available_ application id (or, since v4, a Txn.ForeignApps offset). Return: value.
967 |
968 | ## pushbytes
969 |
970 | - Syntax: `pushbytes BYTES` where BYTES: a byte constant
971 | - Bytecode: 0x80 {varuint length, bytes}
972 | - Stack: ... → ..., []byte
973 | - immediate BYTES
974 | - Availability: v3
975 |
976 | pushbytes args are not added to the bytecblock during assembly processes
977 |
978 | ## pushint
979 |
980 | - Syntax: `pushint UINT` where UINT: an int constant
981 | - Bytecode: 0x81 {varuint}
982 | - Stack: ... → ..., uint64
983 | - immediate UINT
984 | - Availability: v3
985 |
986 | pushint args are not added to the intcblock during assembly processes
987 |
988 | ## callsub
989 |
990 | - Syntax: `callsub TARGET` where TARGET: branch offset
991 | - Bytecode: 0x88 {int16 (big-endian)}
992 | - Stack: ... → ...
993 | - branch unconditionally to TARGET, saving the next instruction on the call stack
994 | - Availability: v4
995 |
996 | The call stack is separate from the data stack. Only `callsub`, `retsub`, and `proto` manipulate it.
997 |
998 | ## retsub
999 |
1000 | - Bytecode: 0x89
1001 | - Stack: ... → ...
1002 | - pop the top instruction from the call stack and branch to it
1003 | - Availability: v4
1004 |
1005 | 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.
1006 |
1007 | ## shl
1008 |
1009 | - Bytecode: 0x90
1010 | - Stack: ..., A: uint64, B: uint64 → ..., uint64
1011 | - A times 2^B, modulo 2^64
1012 | - Availability: v4
1013 |
1014 | ## shr
1015 |
1016 | - Bytecode: 0x91
1017 | - Stack: ..., A: uint64, B: uint64 → ..., uint64
1018 | - A divided by 2^B
1019 | - Availability: v4
1020 |
1021 | ## sqrt
1022 |
1023 | - Bytecode: 0x92
1024 | - Stack: ..., A: uint64 → ..., uint64
1025 | - The largest integer I such that I^2 <= A
1026 | - **Cost**: 4
1027 | - Availability: v4
1028 |
1029 | ## bitlen
1030 |
1031 | - Bytecode: 0x93
1032 | - Stack: ..., A → ..., uint64
1033 | - 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
1034 | - Availability: v4
1035 |
1036 | bitlen interprets arrays as big-endian integers, unlike setbit/getbit
1037 |
1038 | ## exp
1039 |
1040 | - Bytecode: 0x94
1041 | - Stack: ..., A: uint64, B: uint64 → ..., uint64
1042 | - A raised to the Bth power. Fail if A == B == 0 and on overflow
1043 | - Availability: v4
1044 |
1045 | ## expw
1046 |
1047 | - Bytecode: 0x95
1048 | - Stack: ..., A: uint64, B: uint64 → ..., X: uint64, Y: uint64
1049 | - 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
1050 | - **Cost**: 10
1051 | - Availability: v4
1052 |
1053 | ## b+
1054 |
1055 | - Bytecode: 0xa0
1056 | - Stack: ..., A: bigint, B: bigint → ..., []byte
1057 | - A plus B. A and B are interpreted as big-endian unsigned integers
1058 | - **Cost**: 10
1059 | - Availability: v4
1060 |
1061 | ## b-
1062 |
1063 | - Bytecode: 0xa1
1064 | - Stack: ..., A: bigint, B: bigint → ..., bigint
1065 | - A minus B. A and B are interpreted as big-endian unsigned integers. Fail on underflow.
1066 | - **Cost**: 10
1067 | - Availability: v4
1068 |
1069 | ## b/
1070 |
1071 | - Bytecode: 0xa2
1072 | - Stack: ..., A: bigint, B: bigint → ..., bigint
1073 | - A divided by B (truncated division). A and B are interpreted as big-endian unsigned integers. Fail if B is zero.
1074 | - **Cost**: 20
1075 | - Availability: v4
1076 |
1077 | ## b*
1078 |
1079 | - Bytecode: 0xa3
1080 | - Stack: ..., A: bigint, B: bigint → ..., []byte
1081 | - A times B. A and B are interpreted as big-endian unsigned integers.
1082 | - **Cost**: 20
1083 | - Availability: v4
1084 |
1085 | ## b<
1086 |
1087 | - Bytecode: 0xa4
1088 | - Stack: ..., A: bigint, B: bigint → ..., bool
1089 | - 1 if A is less than B, else 0. A and B are interpreted as big-endian unsigned integers
1090 | - Availability: v4
1091 |
1092 | ## b>
1093 |
1094 | - Bytecode: 0xa5
1095 | - Stack: ..., A: bigint, B: bigint → ..., bool
1096 | - 1 if A is greater than B, else 0. A and B are interpreted as big-endian unsigned integers
1097 | - Availability: v4
1098 |
1099 | ## b<=
1100 |
1101 | - Bytecode: 0xa6
1102 | - Stack: ..., A: bigint, B: bigint → ..., bool
1103 | - 1 if A is less than or equal to B, else 0. A and B are interpreted as big-endian unsigned integers
1104 | - Availability: v4
1105 |
1106 | ## b>=
1107 |
1108 | - Bytecode: 0xa7
1109 | - Stack: ..., A: bigint, B: bigint → ..., bool
1110 | - 1 if A is greater than or equal to B, else 0. A and B are interpreted as big-endian unsigned integers
1111 | - Availability: v4
1112 |
1113 | ## b==
1114 |
1115 | - Bytecode: 0xa8
1116 | - Stack: ..., A: bigint, B: bigint → ..., bool
1117 | - 1 if A is equal to B, else 0. A and B are interpreted as big-endian unsigned integers
1118 | - Availability: v4
1119 |
1120 | ## b!=
1121 |
1122 | - Bytecode: 0xa9
1123 | - Stack: ..., A: bigint, B: bigint → ..., bool
1124 | - 0 if A is equal to B, else 1. A and B are interpreted as big-endian unsigned integers
1125 | - Availability: v4
1126 |
1127 | ## b%
1128 |
1129 | - Bytecode: 0xaa
1130 | - Stack: ..., A: bigint, B: bigint → ..., bigint
1131 | - A modulo B. A and B are interpreted as big-endian unsigned integers. Fail if B is zero.
1132 | - **Cost**: 20
1133 | - Availability: v4
1134 |
1135 | ## b|
1136 |
1137 | - Bytecode: 0xab
1138 | - Stack: ..., A: []byte, B: []byte → ..., []byte
1139 | - A bitwise-or B. A and B are zero-left extended to the greater of their lengths
1140 | - **Cost**: 6
1141 | - Availability: v4
1142 |
1143 | ## b&
1144 |
1145 | - Bytecode: 0xac
1146 | - Stack: ..., A: []byte, B: []byte → ..., []byte
1147 | - A bitwise-and B. A and B are zero-left extended to the greater of their lengths
1148 | - **Cost**: 6
1149 | - Availability: v4
1150 |
1151 | ## b^
1152 |
1153 | - Bytecode: 0xad
1154 | - Stack: ..., A: []byte, B: []byte → ..., []byte
1155 | - A bitwise-xor B. A and B are zero-left extended to the greater of their lengths
1156 | - **Cost**: 6
1157 | - Availability: v4
1158 |
1159 | ## b~
1160 |
1161 | - Bytecode: 0xae
1162 | - Stack: ..., A: []byte → ..., []byte
1163 | - A with all bits inverted
1164 | - **Cost**: 4
1165 | - Availability: v4
1166 |
1167 | ## bzero
1168 |
1169 | - Bytecode: 0xaf
1170 | - Stack: ..., A: uint64 → ..., []byte
1171 | - zero filled byte-array of length A
1172 | - Availability: v4
1173 |
1174 | ## log
1175 |
1176 | - Bytecode: 0xb0
1177 | - Stack: ..., A: []byte → ...
1178 | - write A to log state of the current application
1179 | - Availability: v5
1180 | - Mode: Application
1181 |
1182 | `log` fails if called more than MaxLogCalls times in a program, or if the sum of logged bytes exceeds 1024 bytes.
1183 |
1184 | ## itxn_begin
1185 |
1186 | - Bytecode: 0xb1
1187 | - Stack: ... → ...
1188 | - begin preparation of a new inner transaction in a new transaction group
1189 | - Availability: v5
1190 | - Mode: Application
1191 |
1192 | `itxn_begin` initializes Sender to the application address; Fee to the minimum allowable, taking into account MinTxnFee and credit from overpaying in earlier transactions; FirstValid/LastValid to the values in the invoking transaction, and all other fields to zero or empty values.
1193 |
1194 | ## itxn_field
1195 |
1196 | - Syntax: `itxn_field F` where F: [txn](#field-group-txn)
1197 | - Bytecode: 0xb2 {uint8}
1198 | - Stack: ..., A → ...
1199 | - set field F of the current inner transaction to A
1200 | - Availability: v5
1201 | - Mode: Application
1202 |
1203 | `itxn_field` fails if A is of the wrong type for F, including a byte array of the wrong size for use as an address when F is an address field. `itxn_field` also fails if A is an account, asset, or app that is not _available_, or an attempt is made extend an array field beyond the limit imposed by consensus parameters. (Addresses set into asset params of acfg transactions need not be _available_.)
1204 |
1205 | ## itxn_submit
1206 |
1207 | - Bytecode: 0xb3
1208 | - Stack: ... → ...
1209 | - execute the current inner transaction group. Fail if executing this group would exceed the inner transaction limit, or if any transaction in the group fails.
1210 | - Availability: v5
1211 | - Mode: Application
1212 |
1213 | `itxn_submit` resets the current transaction so that it can not be resubmitted. A new `itxn_begin` is required to prepare another inner transaction.
1214 |
1215 | ## itxn
1216 |
1217 | - Syntax: `itxn F` where F: [txn](#field-group-txn)
1218 | - Bytecode: 0xb4 {uint8}
1219 | - Stack: ... → ..., any
1220 | - field F of the last inner transaction
1221 | - Availability: v5
1222 | - Mode: Application
1223 |
1224 | ## itxna
1225 |
1226 | - Syntax: `itxna F I` where F: [txna](#field-group-txna), I: a transaction field array index
1227 | - Bytecode: 0xb5 {uint8}, {uint8}
1228 | - Stack: ... → ..., any
1229 | - Ith value of the array field F of the last inner transaction
1230 | - Availability: v5
1231 | - Mode: Application
1232 |
1233 | ## txnas
1234 |
1235 | - Syntax: `txnas F` where F: [txna](#field-group-txna)
1236 | - Bytecode: 0xc0 {uint8}
1237 | - Stack: ..., A: uint64 → ..., any
1238 | - Ath value of the array field F of the current transaction
1239 | - Availability: v5
1240 |
1241 | ## gtxnas
1242 |
1243 | - Syntax: `gtxnas T F` where T: transaction group index, F: [txna](#field-group-txna)
1244 | - Bytecode: 0xc1 {uint8}, {uint8}
1245 | - Stack: ..., A: uint64 → ..., any
1246 | - Ath value of the array field F from the Tth transaction in the current group
1247 | - Availability: v5
1248 |
1249 | ## gtxnsas
1250 |
1251 | - Syntax: `gtxnsas F` where F: [txna](#field-group-txna)
1252 | - Bytecode: 0xc2 {uint8}
1253 | - Stack: ..., A: uint64, B: uint64 → ..., any
1254 | - Bth value of the array field F from the Ath transaction in the current group
1255 | - Availability: v5
1256 |
1257 | ## args
1258 |
1259 | - Bytecode: 0xc3
1260 | - Stack: ..., A: uint64 → ..., []byte
1261 | - Ath LogicSig argument
1262 | - Availability: v5
1263 | - Mode: Signature
1264 |
```