This is page 64 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:v6.md: -------------------------------------------------------------------------------- ```markdown 1 | title: v6 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 | | 62 | LastLog | []byte | v6 | The last message emitted. Empty bytes if none were emitted. Application mode only | 427 | | 63 | StateProofPK | []byte | v6 | 64 byte state proof public key | 428 | 429 | 430 | ## global 431 | 432 | - Syntax: `global F` where F: [global](#field-group-global) 433 | - Bytecode: 0x32 {uint8} 434 | - Stack: ... → ..., any 435 | - global field F 436 | 437 | ### global 438 | 439 | Fields 440 | 441 | | Index | Name | Type | In | Notes | 442 | | - | ------ | -- | - | --------- | 443 | | 0 | MinTxnFee | uint64 | | microalgos | 444 | | 1 | MinBalance | uint64 | | microalgos | 445 | | 2 | MaxTxnLife | uint64 | | rounds | 446 | | 3 | ZeroAddress | address | | 32 byte address of all zero bytes | 447 | | 4 | GroupSize | uint64 | | Number of transactions in this atomic transaction group. At least 1 | 448 | | 5 | LogicSigVersion | uint64 | v2 | Maximum supported version | 449 | | 6 | Round | uint64 | v2 | Current round number. Application mode only. | 450 | | 7 | LatestTimestamp | uint64 | v2 | Last confirmed block UNIX timestamp. Fails if negative. Application mode only. | 451 | | 8 | CurrentApplicationID | uint64 | v2 | ID of current application executing. Application mode only. | 452 | | 9 | CreatorAddress | address | v3 | Address of the creator of the current application. Application mode only. | 453 | | 10 | CurrentApplicationAddress | address | v5 | Address that the current application controls. Application mode only. | 454 | | 11 | GroupID | [32]byte | v5 | ID of the transaction group. 32 zero bytes if the transaction is not part of a group. | 455 | | 12 | OpcodeBudget | uint64 | v6 | The remaining cost that can be spent by opcodes in this program. | 456 | | 13 | CallerApplicationID | uint64 | v6 | The application ID of the application that called this application. 0 if this application is at the top-level. Application mode only. | 457 | | 14 | CallerApplicationAddress | address | v6 | The application address of the application that called this application. ZeroAddress if this application is at the top-level. Application mode only. | 458 | 459 | 460 | ## gtxn 461 | 462 | - Syntax: `gtxn T F` where T: transaction group index, F: [txn](#field-group-txn) 463 | - Bytecode: 0x33 {uint8}, {uint8} 464 | - Stack: ... → ..., any 465 | - field F of the Tth transaction in the current group 466 | 467 | for notes on transaction fields available, see `txn`. If this transaction is _i_ in the group, `gtxn i field` is equivalent to `txn field`. 468 | 469 | ## load 470 | 471 | - Syntax: `load I` where I: position in scratch space to load from 472 | - Bytecode: 0x34 {uint8} 473 | - Stack: ... → ..., any 474 | - Ith scratch space value. All scratch spaces are 0 at program start. 475 | 476 | ## store 477 | 478 | - Syntax: `store I` where I: position in scratch space to store to 479 | - Bytecode: 0x35 {uint8} 480 | - Stack: ..., A → ... 481 | - store A to the Ith scratch space 482 | 483 | ## txna 484 | 485 | - Syntax: `txna F I` where F: [txna](#field-group-txna), I: transaction field array index 486 | - Bytecode: 0x36 {uint8}, {uint8} 487 | - Stack: ... → ..., any 488 | - Ith value of the array field F of the current transaction<br />`txna` can be called using `txn` with 2 immediates. 489 | - Availability: v2 490 | 491 | ### txna 492 | 493 | Fields (see [transaction reference](https://developer.algorand.org/docs/reference/transactions/)) 494 | 495 | | Index | Name | Type | In | Notes | 496 | | - | ------ | -- | - | --------- | 497 | | 26 | ApplicationArgs | []byte | v2 | Arguments passed to the application in the ApplicationCall transaction | 498 | | 28 | Accounts | address | v2 | Accounts listed in the ApplicationCall transaction | 499 | | 48 | Assets | uint64 | v3 | Foreign Assets listed in the ApplicationCall transaction | 500 | | 50 | Applications | uint64 | v3 | Foreign Apps listed in the ApplicationCall transaction | 501 | | 58 | Logs | []byte | v5 | Log messages emitted by an application call (only with `itxn` in v5). Application mode only | 502 | 503 | 504 | ## gtxna 505 | 506 | - Syntax: `gtxna T F I` where T: transaction group index, F: [txna](#field-group-txna), I: transaction field array index 507 | - Bytecode: 0x37 {uint8}, {uint8}, {uint8} 508 | - Stack: ... → ..., any 509 | - 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. 510 | - Availability: v2 511 | 512 | ## gtxns 513 | 514 | - Syntax: `gtxns F` where F: [txn](#field-group-txn) 515 | - Bytecode: 0x38 {uint8} 516 | - Stack: ..., A: uint64 → ..., any 517 | - field F of the Ath transaction in the current group 518 | - Availability: v3 519 | 520 | 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. 521 | 522 | ## gtxnsa 523 | 524 | - Syntax: `gtxnsa F I` where F: [txna](#field-group-txna), I: transaction field array index 525 | - Bytecode: 0x39 {uint8}, {uint8} 526 | - Stack: ..., A: uint64 → ..., any 527 | - 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. 528 | - Availability: v3 529 | 530 | ## gload 531 | 532 | - Syntax: `gload T I` where T: transaction group index, I: position in scratch space to load from 533 | - Bytecode: 0x3a {uint8}, {uint8} 534 | - Stack: ... → ..., any 535 | - Ith scratch space value of the Tth transaction in the current group 536 | - Availability: v4 537 | - Mode: Application 538 | 539 | `gload` fails unless the requested transaction is an ApplicationCall and T < GroupIndex. 540 | 541 | ## gloads 542 | 543 | - Syntax: `gloads I` where I: position in scratch space to load from 544 | - Bytecode: 0x3b {uint8} 545 | - Stack: ..., A: uint64 → ..., any 546 | - Ith scratch space value of the Ath transaction in the current group 547 | - Availability: v4 548 | - Mode: Application 549 | 550 | `gloads` fails unless the requested transaction is an ApplicationCall and A < GroupIndex. 551 | 552 | ## gaid 553 | 554 | - Syntax: `gaid T` where T: transaction group index 555 | - Bytecode: 0x3c {uint8} 556 | - Stack: ... → ..., uint64 557 | - ID of the asset or application created in the Tth transaction of the current group 558 | - Availability: v4 559 | - Mode: Application 560 | 561 | `gaid` fails unless the requested transaction created an asset or application and T < GroupIndex. 562 | 563 | ## gaids 564 | 565 | - Bytecode: 0x3d 566 | - Stack: ..., A: uint64 → ..., uint64 567 | - ID of the asset or application created in the Ath transaction of the current group 568 | - Availability: v4 569 | - Mode: Application 570 | 571 | `gaids` fails unless the requested transaction created an asset or application and A < GroupIndex. 572 | 573 | ## loads 574 | 575 | - Bytecode: 0x3e 576 | - Stack: ..., A: uint64 → ..., any 577 | - Ath scratch space value. All scratch spaces are 0 at program start. 578 | - Availability: v5 579 | 580 | ## stores 581 | 582 | - Bytecode: 0x3f 583 | - Stack: ..., A: uint64, B → ... 584 | - store B to the Ath scratch space 585 | - Availability: v5 586 | 587 | ## bnz 588 | 589 | - Syntax: `bnz TARGET` where TARGET: branch offset 590 | - Bytecode: 0x40 {int16 (big-endian)} 591 | - Stack: ..., A: uint64 → ... 592 | - branch to TARGET if value A is not zero 593 | 594 | 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. 595 | 596 | 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.) 597 | 598 | ## bz 599 | 600 | - Syntax: `bz TARGET` where TARGET: branch offset 601 | - Bytecode: 0x41 {int16 (big-endian)} 602 | - Stack: ..., A: uint64 → ... 603 | - branch to TARGET if value A is zero 604 | - Availability: v2 605 | 606 | See `bnz` for details on how branches work. `bz` inverts the behavior of `bnz`. 607 | 608 | ## b 609 | 610 | - Syntax: `b TARGET` where TARGET: branch offset 611 | - Bytecode: 0x42 {int16 (big-endian)} 612 | - Stack: ... → ... 613 | - branch unconditionally to TARGET 614 | - Availability: v2 615 | 616 | See `bnz` for details on how branches work. `b` always jumps to the offset. 617 | 618 | ## return 619 | 620 | - Bytecode: 0x43 621 | - Stack: ..., A: uint64 → _exits_ 622 | - use A as success value; end 623 | - Availability: v2 624 | 625 | ## assert 626 | 627 | - Bytecode: 0x44 628 | - Stack: ..., A: uint64 → ... 629 | - immediately fail unless A is a non-zero number 630 | - Availability: v3 631 | 632 | ## pop 633 | 634 | - Bytecode: 0x48 635 | - Stack: ..., A → ... 636 | - discard A 637 | 638 | ## dup 639 | 640 | - Bytecode: 0x49 641 | - Stack: ..., A → ..., A, A 642 | - duplicate A 643 | 644 | ## dup2 645 | 646 | - Bytecode: 0x4a 647 | - Stack: ..., A, B → ..., A, B, A, B 648 | - duplicate A and B 649 | - Availability: v2 650 | 651 | ## dig 652 | 653 | - Syntax: `dig N` where N: depth 654 | - Bytecode: 0x4b {uint8} 655 | - Stack: ..., A, [N items] → ..., A, [N items], A 656 | - Nth value from the top of the stack. dig 0 is equivalent to dup 657 | - Availability: v3 658 | 659 | ## swap 660 | 661 | - Bytecode: 0x4c 662 | - Stack: ..., A, B → ..., B, A 663 | - swaps A and B on stack 664 | - Availability: v3 665 | 666 | ## select 667 | 668 | - Bytecode: 0x4d 669 | - Stack: ..., A, B, C: uint64 → ..., A or B 670 | - selects one of two values based on top-of-stack: B if C != 0, else A 671 | - Availability: v3 672 | 673 | ## cover 674 | 675 | - Syntax: `cover N` where N: depth 676 | - Bytecode: 0x4e {uint8} 677 | - Stack: ..., [N items], A → ..., A, [N items] 678 | - remove top of stack, and place it deeper in the stack such that N elements are above it. Fails if stack depth <= N. 679 | - Availability: v5 680 | 681 | ## uncover 682 | 683 | - Syntax: `uncover N` where N: depth 684 | - Bytecode: 0x4f {uint8} 685 | - Stack: ..., A, [N items] → ..., [N items], A 686 | - 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. 687 | - Availability: v5 688 | 689 | ## concat 690 | 691 | - Bytecode: 0x50 692 | - Stack: ..., A: []byte, B: []byte → ..., []byte 693 | - join A and B 694 | - Availability: v2 695 | 696 | `concat` fails if the result would be greater than 4096 bytes. 697 | 698 | ## substring 699 | 700 | - Syntax: `substring S E` where S: start position, E: end position 701 | - Bytecode: 0x51 {uint8}, {uint8} 702 | - Stack: ..., A: []byte → ..., []byte 703 | - 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 704 | - Availability: v2 705 | 706 | ## substring3 707 | 708 | - Bytecode: 0x52 709 | - Stack: ..., A: []byte, B: uint64, C: uint64 → ..., []byte 710 | - 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 711 | - Availability: v2 712 | 713 | ## getbit 714 | 715 | - Bytecode: 0x53 716 | - Stack: ..., A, B: uint64 → ..., uint64 717 | - 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 718 | - Availability: v3 719 | 720 | see explanation of bit ordering in setbit 721 | 722 | ## setbit 723 | 724 | - Bytecode: 0x54 725 | - Stack: ..., A, B: uint64, C: uint64 → ..., any 726 | - 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 727 | - Availability: v3 728 | 729 | 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. 730 | 731 | ## getbyte 732 | 733 | - Bytecode: 0x55 734 | - Stack: ..., A: []byte, B: uint64 → ..., uint64 735 | - Bth byte of A, as an integer. If B is greater than or equal to the array length, the program fails 736 | - Availability: v3 737 | 738 | ## setbyte 739 | 740 | - Bytecode: 0x56 741 | - Stack: ..., A: []byte, B: uint64, C: uint64 → ..., []byte 742 | - 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 743 | - Availability: v3 744 | 745 | ## extract 746 | 747 | - Syntax: `extract S L` where S: start position, L: length 748 | - Bytecode: 0x57 {uint8}, {uint8} 749 | - Stack: ..., A: []byte → ..., []byte 750 | - 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 751 | - Availability: v5 752 | 753 | ## extract3 754 | 755 | - Bytecode: 0x58 756 | - Stack: ..., A: []byte, B: uint64, C: uint64 → ..., []byte 757 | - 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. 758 | - Availability: v5 759 | 760 | ## extract_uint16 761 | 762 | - Bytecode: 0x59 763 | - Stack: ..., A: []byte, B: uint64 → ..., uint64 764 | - 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 765 | - Availability: v5 766 | 767 | ## extract_uint32 768 | 769 | - Bytecode: 0x5a 770 | - Stack: ..., A: []byte, B: uint64 → ..., uint64 771 | - 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 772 | - Availability: v5 773 | 774 | ## extract_uint64 775 | 776 | - Bytecode: 0x5b 777 | - Stack: ..., A: []byte, B: uint64 → ..., uint64 778 | - 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 779 | - Availability: v5 780 | 781 | ## balance 782 | 783 | - Bytecode: 0x60 784 | - Stack: ..., A → ..., uint64 785 | - 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` 786 | - Availability: v2 787 | - Mode: Application 788 | 789 | params: Txn.Accounts offset (or, since v4, an _available_ account address), _available_ application id (or, since v4, a Txn.ForeignApps offset). Return: value. 790 | 791 | ## app_opted_in 792 | 793 | - Bytecode: 0x61 794 | - Stack: ..., A, B: uint64 → ..., bool 795 | - 1 if account A is opted in to application B, else 0 796 | - Availability: v2 797 | - Mode: Application 798 | 799 | 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. 800 | 801 | ## app_local_get 802 | 803 | - Bytecode: 0x62 804 | - Stack: ..., A, B: stateKey → ..., any 805 | - local state of the key B in the current application in account A 806 | - Availability: v2 807 | - Mode: Application 808 | 809 | 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. 810 | 811 | ## app_local_get_ex 812 | 813 | - Bytecode: 0x63 814 | - Stack: ..., A, B: uint64, C: stateKey → ..., X: any, Y: bool 815 | - X is the local state of application B, key C in account A. Y is 1 if key existed, else 0 816 | - Availability: v2 817 | - Mode: Application 818 | 819 | 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. 820 | 821 | ## app_global_get 822 | 823 | - Bytecode: 0x64 824 | - Stack: ..., A: stateKey → ..., any 825 | - global state of the key A in the current application 826 | - Availability: v2 827 | - Mode: Application 828 | 829 | params: state key. Return: value. The value is zero (of type uint64) if the key does not exist. 830 | 831 | ## app_global_get_ex 832 | 833 | - Bytecode: 0x65 834 | - Stack: ..., A: uint64, B: stateKey → ..., X: any, Y: bool 835 | - X is the global state of application A, key B. Y is 1 if key existed, else 0 836 | - Availability: v2 837 | - Mode: Application 838 | 839 | 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. 840 | 841 | ## app_local_put 842 | 843 | - Bytecode: 0x66 844 | - Stack: ..., A, B: stateKey, C → ... 845 | - write C to key B in account A's local state of the current application 846 | - Availability: v2 847 | - Mode: Application 848 | 849 | params: Txn.Accounts offset (or, since v4, an _available_ account address), state key, value. 850 | 851 | ## app_global_put 852 | 853 | - Bytecode: 0x67 854 | - Stack: ..., A: stateKey, B → ... 855 | - write B to key A in the global state of the current application 856 | - Availability: v2 857 | - Mode: Application 858 | 859 | ## app_local_del 860 | 861 | - Bytecode: 0x68 862 | - Stack: ..., A, B: stateKey → ... 863 | - delete key B from account A's local state of the current application 864 | - Availability: v2 865 | - Mode: Application 866 | 867 | params: Txn.Accounts offset (or, since v4, an _available_ account address), state key. 868 | 869 | 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.) 870 | 871 | ## app_global_del 872 | 873 | - Bytecode: 0x69 874 | - Stack: ..., A: stateKey → ... 875 | - delete key A from the global state of the current application 876 | - Availability: v2 877 | - Mode: Application 878 | 879 | params: state key. 880 | 881 | 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.) 882 | 883 | ## asset_holding_get 884 | 885 | - Syntax: `asset_holding_get F` where F: [asset_holding](#field-group-asset_holding) 886 | - Bytecode: 0x70 {uint8} 887 | - Stack: ..., A, B: uint64 → ..., X: any, Y: bool 888 | - X is field F from account A's holding of asset B. Y is 1 if A is opted into B, else 0 889 | - Availability: v2 890 | - Mode: Application 891 | 892 | ### asset_holding 893 | 894 | Fields 895 | 896 | | Index | Name | Type | Notes | 897 | | - | ------ | -- | --------- | 898 | | 0 | AssetBalance | uint64 | Amount of the asset unit held by this account | 899 | | 1 | AssetFrozen | bool | Is the asset frozen or not | 900 | 901 | 902 | 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. 903 | 904 | ## asset_params_get 905 | 906 | - Syntax: `asset_params_get F` where F: [asset_params](#field-group-asset_params) 907 | - Bytecode: 0x71 {uint8} 908 | - Stack: ..., A: uint64 → ..., X: any, Y: bool 909 | - X is field F from asset A. Y is 1 if A exists, else 0 910 | - Availability: v2 911 | - Mode: Application 912 | 913 | ### asset_params 914 | 915 | Fields 916 | 917 | | Index | Name | Type | In | Notes | 918 | | - | ------ | -- | - | --------- | 919 | | 0 | AssetTotal | uint64 | | Total number of units of this asset | 920 | | 1 | AssetDecimals | uint64 | | See AssetParams.Decimals | 921 | | 2 | AssetDefaultFrozen | bool | | Frozen by default or not | 922 | | 3 | AssetUnitName | []byte | | Asset unit name | 923 | | 4 | AssetName | []byte | | Asset name | 924 | | 5 | AssetURL | []byte | | URL with additional info about the asset | 925 | | 6 | AssetMetadataHash | [32]byte | | Arbitrary commitment | 926 | | 7 | AssetManager | address | | Manager address | 927 | | 8 | AssetReserve | address | | Reserve address | 928 | | 9 | AssetFreeze | address | | Freeze address | 929 | | 10 | AssetClawback | address | | Clawback address | 930 | | 11 | AssetCreator | address | v5 | Creator address | 931 | 932 | 933 | params: Txn.ForeignAssets offset (or, since v4, an _available_ asset id. Return: did_exist flag (1 if the asset existed and 0 otherwise), value. 934 | 935 | ## app_params_get 936 | 937 | - Syntax: `app_params_get F` where F: [app_params](#field-group-app_params) 938 | - Bytecode: 0x72 {uint8} 939 | - Stack: ..., A: uint64 → ..., X: any, Y: bool 940 | - X is field F from app A. Y is 1 if A exists, else 0 941 | - Availability: v5 942 | - Mode: Application 943 | 944 | ### app_params 945 | 946 | Fields 947 | 948 | | Index | Name | Type | Notes | 949 | | - | ------ | -- | --------- | 950 | | 0 | AppApprovalProgram | []byte | Bytecode of Approval Program | 951 | | 1 | AppClearStateProgram | []byte | Bytecode of Clear State Program | 952 | | 2 | AppGlobalNumUint | uint64 | Number of uint64 values allowed in Global State | 953 | | 3 | AppGlobalNumByteSlice | uint64 | Number of byte array values allowed in Global State | 954 | | 4 | AppLocalNumUint | uint64 | Number of uint64 values allowed in Local State | 955 | | 5 | AppLocalNumByteSlice | uint64 | Number of byte array values allowed in Local State | 956 | | 6 | AppExtraProgramPages | uint64 | Number of Extra Program Pages of code space | 957 | | 7 | AppCreator | address | Creator address | 958 | | 8 | AppAddress | address | Address for which this application has authority | 959 | 960 | 961 | params: Txn.ForeignApps offset or an _available_ app id. Return: did_exist flag (1 if the application existed and 0 otherwise), value. 962 | 963 | ## acct_params_get 964 | 965 | - Syntax: `acct_params_get F` where F: [acct_params](#field-group-acct_params) 966 | - Bytecode: 0x73 {uint8} 967 | - Stack: ..., A → ..., X: any, Y: bool 968 | - X is field F from account A. Y is 1 if A owns positive algos, else 0 969 | - Availability: v6 970 | - Mode: Application 971 | 972 | ### acct_params 973 | 974 | Fields 975 | 976 | | Index | Name | Type | Notes | 977 | | - | ------ | -- | --------- | 978 | | 0 | AcctBalance | uint64 | Account balance in microalgos | 979 | | 1 | AcctMinBalance | uint64 | Minimum required balance for account, in microalgos | 980 | | 2 | AcctAuthAddr | address | Address the account is rekeyed to. | 981 | 982 | 983 | ## min_balance 984 | 985 | - Bytecode: 0x78 986 | - Stack: ..., A → ..., uint64 987 | - 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. 988 | - Availability: v3 989 | - Mode: Application 990 | 991 | params: Txn.Accounts offset (or, since v4, an _available_ account address), _available_ application id (or, since v4, a Txn.ForeignApps offset). Return: value. 992 | 993 | ## pushbytes 994 | 995 | - Syntax: `pushbytes BYTES` where BYTES: a byte constant 996 | - Bytecode: 0x80 {varuint length, bytes} 997 | - Stack: ... → ..., []byte 998 | - immediate BYTES 999 | - Availability: v3 1000 | 1001 | pushbytes args are not added to the bytecblock during assembly processes 1002 | 1003 | ## pushint 1004 | 1005 | - Syntax: `pushint UINT` where UINT: an int constant 1006 | - Bytecode: 0x81 {varuint} 1007 | - Stack: ... → ..., uint64 1008 | - immediate UINT 1009 | - Availability: v3 1010 | 1011 | pushint args are not added to the intcblock during assembly processes 1012 | 1013 | ## callsub 1014 | 1015 | - Syntax: `callsub TARGET` where TARGET: branch offset 1016 | - Bytecode: 0x88 {int16 (big-endian)} 1017 | - Stack: ... → ... 1018 | - branch unconditionally to TARGET, saving the next instruction on the call stack 1019 | - Availability: v4 1020 | 1021 | The call stack is separate from the data stack. Only `callsub`, `retsub`, and `proto` manipulate it. 1022 | 1023 | ## retsub 1024 | 1025 | - Bytecode: 0x89 1026 | - Stack: ... → ... 1027 | - pop the top instruction from the call stack and branch to it 1028 | - Availability: v4 1029 | 1030 | 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. 1031 | 1032 | ## shl 1033 | 1034 | - Bytecode: 0x90 1035 | - Stack: ..., A: uint64, B: uint64 → ..., uint64 1036 | - A times 2^B, modulo 2^64 1037 | - Availability: v4 1038 | 1039 | ## shr 1040 | 1041 | - Bytecode: 0x91 1042 | - Stack: ..., A: uint64, B: uint64 → ..., uint64 1043 | - A divided by 2^B 1044 | - Availability: v4 1045 | 1046 | ## sqrt 1047 | 1048 | - Bytecode: 0x92 1049 | - Stack: ..., A: uint64 → ..., uint64 1050 | - The largest integer I such that I^2 <= A 1051 | - **Cost**: 4 1052 | - Availability: v4 1053 | 1054 | ## bitlen 1055 | 1056 | - Bytecode: 0x93 1057 | - Stack: ..., A → ..., uint64 1058 | - 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 1059 | - Availability: v4 1060 | 1061 | bitlen interprets arrays as big-endian integers, unlike setbit/getbit 1062 | 1063 | ## exp 1064 | 1065 | - Bytecode: 0x94 1066 | - Stack: ..., A: uint64, B: uint64 → ..., uint64 1067 | - A raised to the Bth power. Fail if A == B == 0 and on overflow 1068 | - Availability: v4 1069 | 1070 | ## expw 1071 | 1072 | - Bytecode: 0x95 1073 | - Stack: ..., A: uint64, B: uint64 → ..., X: uint64, Y: uint64 1074 | - 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 1075 | - **Cost**: 10 1076 | - Availability: v4 1077 | 1078 | ## bsqrt 1079 | 1080 | - Bytecode: 0x96 1081 | - Stack: ..., A: bigint → ..., bigint 1082 | - The largest integer I such that I^2 <= A. A and I are interpreted as big-endian unsigned integers 1083 | - **Cost**: 40 1084 | - Availability: v6 1085 | 1086 | ## divw 1087 | 1088 | - Bytecode: 0x97 1089 | - Stack: ..., A: uint64, B: uint64, C: uint64 → ..., uint64 1090 | - A,B / C. Fail if C == 0 or if result overflows. 1091 | - Availability: v6 1092 | 1093 | The notation A,B indicates that A and B are interpreted as a uint128 value, with A as the high uint64 and B the low. 1094 | 1095 | ## b+ 1096 | 1097 | - Bytecode: 0xa0 1098 | - Stack: ..., A: bigint, B: bigint → ..., []byte 1099 | - A plus B. A and B are interpreted as big-endian unsigned integers 1100 | - **Cost**: 10 1101 | - Availability: v4 1102 | 1103 | ## b- 1104 | 1105 | - Bytecode: 0xa1 1106 | - Stack: ..., A: bigint, B: bigint → ..., bigint 1107 | - A minus B. A and B are interpreted as big-endian unsigned integers. Fail on underflow. 1108 | - **Cost**: 10 1109 | - Availability: v4 1110 | 1111 | ## b/ 1112 | 1113 | - Bytecode: 0xa2 1114 | - Stack: ..., A: bigint, B: bigint → ..., bigint 1115 | - A divided by B (truncated division). A and B are interpreted as big-endian unsigned integers. Fail if B is zero. 1116 | - **Cost**: 20 1117 | - Availability: v4 1118 | 1119 | ## b* 1120 | 1121 | - Bytecode: 0xa3 1122 | - Stack: ..., A: bigint, B: bigint → ..., []byte 1123 | - A times B. A and B are interpreted as big-endian unsigned integers. 1124 | - **Cost**: 20 1125 | - Availability: v4 1126 | 1127 | ## b< 1128 | 1129 | - Bytecode: 0xa4 1130 | - Stack: ..., A: bigint, B: bigint → ..., bool 1131 | - 1 if A is less than B, else 0. A and B are interpreted as big-endian unsigned integers 1132 | - Availability: v4 1133 | 1134 | ## b> 1135 | 1136 | - Bytecode: 0xa5 1137 | - Stack: ..., A: bigint, B: bigint → ..., bool 1138 | - 1 if A is greater than B, else 0. A and B are interpreted as big-endian unsigned integers 1139 | - Availability: v4 1140 | 1141 | ## b<= 1142 | 1143 | - Bytecode: 0xa6 1144 | - Stack: ..., A: bigint, B: bigint → ..., bool 1145 | - 1 if A is less than or equal to B, else 0. A and B are interpreted as big-endian unsigned integers 1146 | - Availability: v4 1147 | 1148 | ## b>= 1149 | 1150 | - Bytecode: 0xa7 1151 | - Stack: ..., A: bigint, B: bigint → ..., bool 1152 | - 1 if A is greater than or equal to B, else 0. A and B are interpreted as big-endian unsigned integers 1153 | - Availability: v4 1154 | 1155 | ## b== 1156 | 1157 | - Bytecode: 0xa8 1158 | - Stack: ..., A: bigint, B: bigint → ..., bool 1159 | - 1 if A is equal to B, else 0. A and B are interpreted as big-endian unsigned integers 1160 | - Availability: v4 1161 | 1162 | ## b!= 1163 | 1164 | - Bytecode: 0xa9 1165 | - Stack: ..., A: bigint, B: bigint → ..., bool 1166 | - 0 if A is equal to B, else 1. A and B are interpreted as big-endian unsigned integers 1167 | - Availability: v4 1168 | 1169 | ## b% 1170 | 1171 | - Bytecode: 0xaa 1172 | - Stack: ..., A: bigint, B: bigint → ..., bigint 1173 | - A modulo B. A and B are interpreted as big-endian unsigned integers. Fail if B is zero. 1174 | - **Cost**: 20 1175 | - Availability: v4 1176 | 1177 | ## b| 1178 | 1179 | - Bytecode: 0xab 1180 | - Stack: ..., A: []byte, B: []byte → ..., []byte 1181 | - A bitwise-or B. A and B are zero-left extended to the greater of their lengths 1182 | - **Cost**: 6 1183 | - Availability: v4 1184 | 1185 | ## b& 1186 | 1187 | - Bytecode: 0xac 1188 | - Stack: ..., A: []byte, B: []byte → ..., []byte 1189 | - A bitwise-and B. A and B are zero-left extended to the greater of their lengths 1190 | - **Cost**: 6 1191 | - Availability: v4 1192 | 1193 | ## b^ 1194 | 1195 | - Bytecode: 0xad 1196 | - Stack: ..., A: []byte, B: []byte → ..., []byte 1197 | - A bitwise-xor B. A and B are zero-left extended to the greater of their lengths 1198 | - **Cost**: 6 1199 | - Availability: v4 1200 | 1201 | ## b~ 1202 | 1203 | - Bytecode: 0xae 1204 | - Stack: ..., A: []byte → ..., []byte 1205 | - A with all bits inverted 1206 | - **Cost**: 4 1207 | - Availability: v4 1208 | 1209 | ## bzero 1210 | 1211 | - Bytecode: 0xaf 1212 | - Stack: ..., A: uint64 → ..., []byte 1213 | - zero filled byte-array of length A 1214 | - Availability: v4 1215 | 1216 | ## log 1217 | 1218 | - Bytecode: 0xb0 1219 | - Stack: ..., A: []byte → ... 1220 | - write A to log state of the current application 1221 | - Availability: v5 1222 | - Mode: Application 1223 | 1224 | `log` fails if called more than MaxLogCalls times in a program, or if the sum of logged bytes exceeds 1024 bytes. 1225 | 1226 | ## itxn_begin 1227 | 1228 | - Bytecode: 0xb1 1229 | - Stack: ... → ... 1230 | - begin preparation of a new inner transaction in a new transaction group 1231 | - Availability: v5 1232 | - Mode: Application 1233 | 1234 | `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. 1235 | 1236 | ## itxn_field 1237 | 1238 | - Syntax: `itxn_field F` where F: [txn](#field-group-txn) 1239 | - Bytecode: 0xb2 {uint8} 1240 | - Stack: ..., A → ... 1241 | - set field F of the current inner transaction to A 1242 | - Availability: v5 1243 | - Mode: Application 1244 | 1245 | `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_.) 1246 | 1247 | ## itxn_submit 1248 | 1249 | - Bytecode: 0xb3 1250 | - Stack: ... → ... 1251 | - 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. 1252 | - Availability: v5 1253 | - Mode: Application 1254 | 1255 | `itxn_submit` resets the current transaction so that it can not be resubmitted. A new `itxn_begin` is required to prepare another inner transaction. 1256 | 1257 | ## itxn 1258 | 1259 | - Syntax: `itxn F` where F: [txn](#field-group-txn) 1260 | - Bytecode: 0xb4 {uint8} 1261 | - Stack: ... → ..., any 1262 | - field F of the last inner transaction 1263 | - Availability: v5 1264 | - Mode: Application 1265 | 1266 | ## itxna 1267 | 1268 | - Syntax: `itxna F I` where F: [txna](#field-group-txna), I: a transaction field array index 1269 | - Bytecode: 0xb5 {uint8}, {uint8} 1270 | - Stack: ... → ..., any 1271 | - Ith value of the array field F of the last inner transaction 1272 | - Availability: v5 1273 | - Mode: Application 1274 | 1275 | ## itxn_next 1276 | 1277 | - Bytecode: 0xb6 1278 | - Stack: ... → ... 1279 | - begin preparation of a new inner transaction in the same transaction group 1280 | - Availability: v6 1281 | - Mode: Application 1282 | 1283 | `itxn_next` initializes the transaction exactly as `itxn_begin` does 1284 | 1285 | ## gitxn 1286 | 1287 | - Syntax: `gitxn T F` where T: transaction group index, F: [txn](#field-group-txn) 1288 | - Bytecode: 0xb7 {uint8}, {uint8} 1289 | - Stack: ... → ..., any 1290 | - field F of the Tth transaction in the last inner group submitted 1291 | - Availability: v6 1292 | - Mode: Application 1293 | 1294 | ## gitxna 1295 | 1296 | - Syntax: `gitxna T F I` where T: transaction group index, F: [txna](#field-group-txna), I: transaction field array index 1297 | - Bytecode: 0xb8 {uint8}, {uint8}, {uint8} 1298 | - Stack: ... → ..., any 1299 | - Ith value of the array field F from the Tth transaction in the last inner group submitted 1300 | - Availability: v6 1301 | - Mode: Application 1302 | 1303 | ## txnas 1304 | 1305 | - Syntax: `txnas F` where F: [txna](#field-group-txna) 1306 | - Bytecode: 0xc0 {uint8} 1307 | - Stack: ..., A: uint64 → ..., any 1308 | - Ath value of the array field F of the current transaction 1309 | - Availability: v5 1310 | 1311 | ## gtxnas 1312 | 1313 | - Syntax: `gtxnas T F` where T: transaction group index, F: [txna](#field-group-txna) 1314 | - Bytecode: 0xc1 {uint8}, {uint8} 1315 | - Stack: ..., A: uint64 → ..., any 1316 | - Ath value of the array field F from the Tth transaction in the current group 1317 | - Availability: v5 1318 | 1319 | ## gtxnsas 1320 | 1321 | - Syntax: `gtxnsas F` where F: [txna](#field-group-txna) 1322 | - Bytecode: 0xc2 {uint8} 1323 | - Stack: ..., A: uint64, B: uint64 → ..., any 1324 | - Bth value of the array field F from the Ath transaction in the current group 1325 | - Availability: v5 1326 | 1327 | ## args 1328 | 1329 | - Bytecode: 0xc3 1330 | - Stack: ..., A: uint64 → ..., []byte 1331 | - Ath LogicSig argument 1332 | - Availability: v5 1333 | - Mode: Signature 1334 | 1335 | ## gloadss 1336 | 1337 | - Bytecode: 0xc4 1338 | - Stack: ..., A: uint64, B: uint64 → ..., any 1339 | - Bth scratch space value of the Ath transaction in the current group 1340 | - Availability: v6 1341 | - Mode: Application 1342 | 1343 | ## itxnas 1344 | 1345 | - Syntax: `itxnas F` where F: [txna](#field-group-txna) 1346 | - Bytecode: 0xc5 {uint8} 1347 | - Stack: ..., A: uint64 → ..., any 1348 | - Ath value of the array field F of the last inner transaction 1349 | - Availability: v6 1350 | - Mode: Application 1351 | 1352 | ## gitxnas 1353 | 1354 | - Syntax: `gitxnas T F` where T: transaction group index, F: [txna](#field-group-txna) 1355 | - Bytecode: 0xc6 {uint8}, {uint8} 1356 | - Stack: ..., A: uint64 → ..., any 1357 | - Ath value of the array field F from the Tth transaction in the last inner group submitted 1358 | - Availability: v6 1359 | - Mode: Application 1360 | ```