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