#
tokens: 48792/50000 24/942 files (page 12/74)
lines: off (toggle) GitHub
raw markdown copy
This is page 12 of 74. Use http://codebase.md/goplausible/algorand-mcp?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/tools/transactionManager/appTransactions/closeOutTxn.ts:
--------------------------------------------------------------------------------

```typescript
import { Transaction, makeApplicationCloseOutTxnFromObject, OnApplicationComplete } from 'algosdk';
import { McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js';
import { AppCloseOutTxnParams } from './types.js';

/**
 * Creates an application close-out transaction
 * @param params The parameters for closing out from the application
 * @returns The created transaction
 * @throws {McpError} If the transaction creation fails
 */
export function makeApplicationCloseOutTxn(params: AppCloseOutTxnParams): Transaction {
  try {
    // Create a new object with the required structure
    const txnParams = {
      from: params.from,
      appIndex: params.appIndex,
      suggestedParams: params.suggestedParams,
      note: params.note,
      lease: params.lease,
      rekeyTo: params.rekeyTo,
      appArgs: params.appArgs,
      accounts: params.accounts,
      foreignApps: params.foreignApps,
      foreignAssets: params.foreignAssets,
      boxes: params.boxes
    };

    // Pass the onComplete parameter separately
    return makeApplicationCloseOutTxnFromObject({
      ...txnParams,
      onComplete: OnApplicationComplete.CloseOutOC
    } as any); // Use type assertion since the types are not perfectly aligned
  } catch (error) {
    console.error('[MCP Error] Failed to create application close-out transaction:', error);
    throw new McpError(
      ErrorCode.InternalError,
      `Failed to create application close-out transaction: ${error instanceof Error ? error.message : 'Unknown error'}`
    );
  }
}

/**
 * Handles the application close-out tool request
 * @param args The tool arguments
 * @param suggestedParams The suggested transaction parameters
 * @returns The transaction parameters
 * @throws {McpError} If the parameters are invalid
 */
export function handleCloseOutTxn(args: Record<string, unknown>, suggestedParams: any): Record<string, any> {
  try {
    if (!args.from || !args.appIndex) {
      console.error('[MCP Error] Invalid application close-out parameters');
      throw new McpError(ErrorCode.InvalidParams, 'Invalid application close-out parameters');
    }

    // Create transaction with proper parameter handling
    const txnParams: Record<string, any> = {
      from: String(args.from),
      appIndex: Number(args.appIndex),
      fee: suggestedParams.fee,
      firstRound: suggestedParams.firstRound,
      lastRound: suggestedParams.lastRound,
      genesisID: suggestedParams.genesisID,
      genesisHash: suggestedParams.genesisHash,
      type: 'appl',
      onComplete: OnApplicationComplete.CloseOutOC
    };

    // Handle optional fields
    if (typeof args.note === 'string') {
      const noteBytes = new TextEncoder().encode(args.note);
      txnParams.note = Buffer.from(noteBytes).toString('base64');
    }
    if (typeof args.lease === 'string') {
      const leaseBytes = new TextEncoder().encode(args.lease);
      txnParams.lease = Buffer.from(leaseBytes).toString('base64');
    }
    if (typeof args.rekeyTo === 'string') {
      txnParams.rekeyTo = String(args.rekeyTo);
    }
    if (Array.isArray(args.appArgs)) {
      txnParams.appArgs = args.appArgs.map(arg => {
        const bytes = new TextEncoder().encode(String(arg));
        return Buffer.from(bytes).toString('base64');
      });
    }
    if (Array.isArray(args.accounts)) {
      txnParams.accounts = args.accounts.filter((acc): acc is string => typeof acc === 'string');
    }
    if (Array.isArray(args.foreignApps)) {
      txnParams.foreignApps = args.foreignApps.filter((app): app is number => typeof app === 'number');
    }
    if (Array.isArray(args.foreignAssets)) {
      txnParams.foreignAssets = args.foreignAssets.filter((asset): asset is number => typeof asset === 'number');
    }

    return txnParams;
  } catch (error) {
    if (error instanceof McpError) {
      throw error;
    }
    console.error('[MCP Error] Failed to handle application close-out:', error);
    throw new McpError(
      ErrorCode.InternalError,
      `Failed to handle application close-out: ${error instanceof Error ? error.message : 'Unknown error'}`
    );
  }
}

```

--------------------------------------------------------------------------------
/packages/server/src/tools/transactionManager/appTransactions/clearTxn.ts:
--------------------------------------------------------------------------------

```typescript
import { Transaction, makeApplicationClearStateTxnFromObject, OnApplicationComplete } from 'algosdk';
import { McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js';
import { AppClearStateTxnParams } from './types.js';

/**
 * Creates an application clear state transaction
 * @param params The parameters for clearing application state
 * @returns The created transaction
 * @throws {McpError} If the transaction creation fails
 */
export function makeApplicationClearStateTxn(params: AppClearStateTxnParams): Transaction {
  try {
    // Create a new object with the required structure
    const txnParams = {
      from: params.from,
      appIndex: params.appIndex,
      suggestedParams: params.suggestedParams,
      note: params.note,
      lease: params.lease,
      rekeyTo: params.rekeyTo,
      appArgs: params.appArgs,
      accounts: params.accounts,
      foreignApps: params.foreignApps,
      foreignAssets: params.foreignAssets,
      boxes: params.boxes
    };

    // Pass the onComplete parameter separately
    return makeApplicationClearStateTxnFromObject({
      ...txnParams,
      onComplete: OnApplicationComplete.ClearStateOC
    } as any); // Use type assertion since the types are not perfectly aligned
  } catch (error) {
    console.error('[MCP Error] Failed to create application clear state transaction:', error);
    throw new McpError(
      ErrorCode.InternalError,
      `Failed to create application clear state transaction: ${error instanceof Error ? error.message : 'Unknown error'}`
    );
  }
}

/**
 * Handles the application clear state tool request
 * @param args The tool arguments
 * @param suggestedParams The suggested transaction parameters
 * @returns The transaction parameters
 * @throws {McpError} If the parameters are invalid
 */
export function handleClearTxn(args: Record<string, unknown>, suggestedParams: any): Record<string, any> {
  try {
    if (!args.from || !args.appIndex) {
      console.error('[MCP Error] Invalid application clear state parameters');
      throw new McpError(ErrorCode.InvalidParams, 'Invalid application clear state parameters');
    }

    // Create transaction with proper parameter handling
    const txnParams: Record<string, any> = {
      from: String(args.from),
      appIndex: Number(args.appIndex),
      fee: suggestedParams.fee,
      firstRound: suggestedParams.firstRound,
      lastRound: suggestedParams.lastRound,
      genesisID: suggestedParams.genesisID,
      genesisHash: suggestedParams.genesisHash,
      type: 'appl',
      onComplete: OnApplicationComplete.ClearStateOC
    };

    // Handle optional fields
    if (typeof args.note === 'string') {
      const noteBytes = new TextEncoder().encode(args.note);
      txnParams.note = Buffer.from(noteBytes).toString('base64');
    }
    if (typeof args.lease === 'string') {
      const leaseBytes = new TextEncoder().encode(args.lease);
      txnParams.lease = Buffer.from(leaseBytes).toString('base64');
    }
    if (typeof args.rekeyTo === 'string') {
      txnParams.rekeyTo = String(args.rekeyTo);
    }
    if (Array.isArray(args.appArgs)) {
      txnParams.appArgs = args.appArgs.map(arg => {
        const bytes = new TextEncoder().encode(String(arg));
        return Buffer.from(bytes).toString('base64');
      });
    }
    if (Array.isArray(args.accounts)) {
      txnParams.accounts = args.accounts.filter((acc): acc is string => typeof acc === 'string');
    }
    if (Array.isArray(args.foreignApps)) {
      txnParams.foreignApps = args.foreignApps.filter((app): app is number => typeof app === 'number');
    }
    if (Array.isArray(args.foreignAssets)) {
      txnParams.foreignAssets = args.foreignAssets.filter((asset): asset is number => typeof asset === 'number');
    }

    return txnParams;
  } catch (error) {
    if (error instanceof McpError) {
      throw error;
    }
    console.error('[MCP Error] Failed to handle application clear state:', error);
    throw new McpError(
      ErrorCode.InternalError,
      `Failed to handle application clear state: ${error instanceof Error ? error.message : 'Unknown error'}`
    );
  }
}

```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/ARCs:specs:arc-0026.md:
--------------------------------------------------------------------------------

```markdown
---
arc: 26
title: URI scheme
description: A specification for encoding Transactions in a URI format.
author: Fabrice Benhamouda (@fabrice102), Ben Guidarelli (@barnjamin)
status: Final
type: Standards Track
category: Interface
sub-category: General
created: 2022-04-21
extended-by: 78, 79
---

## Abstract

This URI specification represents a standardized way for applications and websites to send requests and information through deeplinks, QR codes, etc. It is heavily based on Bitcoin’s <a href="https://github.com/bitcoin/bips/blob/master/bip-0021.mediawiki">BIP-0021</a> and should be seen as derivative of it. The decision to base it on BIP-0021 was made to make it easy and compatible as possible for any other application.

## Specification

### General format

Algorand URIs follow the general format for URIs as set forth in <a href="https://www.rfc-editor.org/rfc/rfc3986">RFC 3986</a>. The path component consists of an Algorand address, and the query component provides additional payment options.

Elements of the query component may contain characters outside the valid range. These must first be encoded according to UTF-8, and then each octet of the corresponding UTF-8 sequence must be percent-encoded as described in RFC 3986.

### ABNF Grammar

```
algorandurn     = "algorand://" algorandaddress [ "?" algorandparams ]
algorandaddress = *base32
algorandparams  = algorandparam [ "&" algorandparams ]
algorandparam   = [ amountparam / labelparam / noteparam / assetparam / otherparam ]
amountparam     = "amount=" *digit
labelparam      = "label=" *qchar
assetparam      = "asset=" *digit
noteparam       = (xnote | note)
xnote           = "xnote=" *qchar
note            = "note=" *qchar
otherparam      = qchar *qchar [ "=" *qchar ]
```

Here, "qchar" corresponds to valid characters of an RFC 3986 URI query component, excluding the "=" and "&" characters, which this specification takes as separators.

The scheme component ("algorand:") is case-insensitive, and implementations must accept any combination of uppercase and lowercase letters. The rest of the URI is case-sensitive, including the query parameter keys.

!!! Caveat
    When it comes to generation of an address' QR,  many exchanges and wallets encodes the address w/o the scheme component (“algorand:”). This is not a URI so it is OK.

### Query Keys

- label: Label for that address (e.g. name of receiver)

- address: Algorand address

- xnote: A URL-encoded notes field value that must not be modifiable by the user when displayed to users.

- note: A URL-encoded default notes field value that the the user interface may optionally make editable by the user.

- amount: microAlgos or smallest unit of asset

- asset: The asset id this request refers to (if Algos, simply omit this parameter)

- (others): optional, for future extensions

### Transfer amount/size

!!! Note
    This is DIFFERENT than Bitcoin’s BIP-0021

If an amount is provided, it MUST be specified in basic unit of the asset. For example, if it’s Algos (Algorand native unit), the amount should be specified in microAlgos. All amounts MUST NOT contain commas nor a period (.) Strictly non negative integers.

e.g. for 100 Algos, the amount needs to be 100000000, for 54.1354 Algos the amount needs to be 54135400.

Algorand Clients should display the amount in whole Algos. Where needed, microAlgos can be used as well. In any case, the units shall be clear for the user.

### Appendix

This section contains several examples

address -

```
algorand://TMTAD6N22HCS2LKH7677L2KFLT3PAQWY6M4JFQFXQS32ECBFC23F57RYX4
```

address with label -

```
algorand://TMTAD6N22HCS2LKH7677L2KFLT3PAQWY6M4JFQFXQS32ECBFC23F57RYX4?label=Silvio
```

Request 150.5 Algos from an address

```
algorand://TMTAD6N22HCS2LKH7677L2KFLT3PAQWY6M4JFQFXQS32ECBFC23F57RYX4?amount=150500000
```

Request 150 units of Asset ID 45 from an address

```
algorand://TMTAD6N22HCS2LKH7677L2KFLT3PAQWY6M4JFQFXQS32ECBFC23F57RYX4?amount=150&asset=45
```

## Rationale

## Security Considerations

None.

## Copyright

Copyright and related rights waived via <a href="https://creativecommons.org/publicdomain/zero/1.0/">CCO</a>.

```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/ARCs:ARC-template.md:
--------------------------------------------------------------------------------

```markdown
---
arc: <to be assigned>
title: <The ARC title is a few words, not a complete sentence>
description: <Description is one full (short) sentence>
author: <a comma separated list of the author's or authors' name + GitHub username (in parenthesis), or name and email (in angle brackets).  Example, FirstName LastName (@GitHubUsername), FirstName LastName <[email protected]>, FirstName (@GitHubUsername) and GitHubUsername (@GitHubUsername)>
discussions-to: <URL>
status: Draft
type: <Standards Track, Meta, or Informational>
category (*only required for Standards Track): <Interface, or ARC>
subcategory: <General, Asa, Application, Explorer or Wallet>
created: <date created on, in ISO 8601 (yyyy-mm-dd) format>
requires (*optional): <ARC number(s)>
---

This is the suggested template for new ARCs.

Note that an ARC number will be assigned by an editor. When opening a pull request to submit your ARC, please use an abbreviated title in the filename, `arc-draft_title_abbrev.md`.

The title should be 44 characters or less. It should not repeat the ARC number in title, irrespective of the category.

## Abstract
Abstract is a multi-sentence (short paragraph) technical summary. This should be a very terse and human-readable version of the specification section. Someone should be able to read only the abstract to get the gist of what this specification does.

## Motivation
The motivation section should describe the "why" of this ARC. What problem does it solve? Why should someone want to implement this standard? What benefit does it provide to the Algorand ecosystem? What use cases does this ARC address?

## Specification
The key words "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**", "**SHALL NOT**", "**SHOULD**", "**SHOULD NOT**", "**RECOMMENDED**", "**MAY**", and "**OPTIONAL**" in this document are to be interpreted as described in <a href="https://www.ietf.org/rfc/rfc2119.txt">RFC-2119</a>.

The technical specification should describe the syntax and semantics of any new feature. The specification should be detailed enough to allow competing, interoperable implementations for any of the current Algorand platforms (go-algorand, ...).

## Rationale
The rationale fleshes out the specification by describing what motivated the design and why particular design decisions were made. It should describe alternate designs that were considered and related work, e.g. how the feature is supported in other languages.

## Backwards Compatibility
All ARCs that introduce backwards incompatibilities must include a section describing these incompatibilities and their severity. The ARC must explain how the author proposes to deal with these incompatibilities. ARC submissions without a sufficient backwards compatibility treatise may be rejected outright.

## Test Cases
Test cases for an implementation are mandatory for ARCs that are affecting consensus changes.  If the test suite is too large to reasonably be included inline, then consider adding it as one or more files in `../assets/arc-####/`.

## Reference Implementation
An optional section that contains a reference/example implementation that people can use to assist in understanding or implementing this specification.  If the implementation is too large to reasonably be included inline, then consider adding it as one or more files in `../assets/arc-####/`.

## Security Considerations
All ARCs must contain a section that discusses the security implications/considerations relevant to the proposed change. Include information that might be important for security discussions, surfaces risks and can be used throughout the life cycle of the proposal. E.g. include security-relevant design decisions, concerns, important discussions, implementation-specific guidance and pitfalls, an outline of threats and risks and how they are being addressed. ARC submissions missing the "Security Considerations" section will be rejected. An ARC cannot proceed to status "Final" without a Security Considerations discussion deemed sufficient by the reviewers.

## Copyright
Copyright and related rights waived via <a href="https://creativecommons.org/publicdomain/zero/1.0/">CCO</a>.

```

--------------------------------------------------------------------------------
/packages/server/src/tools/transactionManager/appTransactions/updateTxn.ts:
--------------------------------------------------------------------------------

```typescript
import { Transaction, makeApplicationUpdateTxnFromObject, OnApplicationComplete } from 'algosdk';
import { McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js';
import { AppUpdateTxnParams } from './types.js';

/**
 * Creates an application update transaction
 * @param params The parameters for updating the application
 * @returns The created transaction
 * @throws {McpError} If the transaction creation fails
 */
export function makeApplicationUpdateTxn(params: AppUpdateTxnParams): Transaction {
  try {
    // Create a new object with the required structure
    const txnParams = {
      from: params.from,
      appIndex: params.appIndex,
      approvalProgram: params.approvalProgram,
      clearProgram: params.clearProgram,
      suggestedParams: params.suggestedParams,
      note: params.note,
      lease: params.lease,
      rekeyTo: params.rekeyTo,
      appArgs: params.appArgs,
      accounts: params.accounts,
      foreignApps: params.foreignApps,
      foreignAssets: params.foreignAssets,
      boxes: params.boxes,
      onComplete: 4
    };

    return makeApplicationUpdateTxnFromObject(txnParams);
  } catch (error) {
    console.error('[MCP Error] Failed to create application update transaction:', error);
    throw new McpError(
      ErrorCode.InternalError,
      `Failed to create application update transaction: ${error instanceof Error ? error.message : 'Unknown error'}`
    );
  }
}

/**
 * Handles the application update tool request
 * @param args The tool arguments
 * @param suggestedParams The suggested transaction parameters
 * @returns The transaction parameters
 * @throws {McpError} If the parameters are invalid
 */
export function handleUpdateTxn(args: Record<string, unknown>, suggestedParams: any): Record<string, any> {
  try {
    if (!args.from || !args.appIndex || !args.approvalProgram || !args.clearProgram) {
      console.error('[MCP Error] Invalid application update parameters');
      throw new McpError(ErrorCode.InvalidParams, 'Invalid application update parameters');
    }

    // Create transaction with proper parameter handling
    const txnParams: Record<string, any> = {
      from: String(args.from),
      appIndex: Number(args.appIndex),
      fee: suggestedParams.fee,
      firstRound: suggestedParams.firstRound,
      lastRound: suggestedParams.lastRound,
      genesisID: suggestedParams.genesisID,
      genesisHash: suggestedParams.genesisHash,
      type: 'appl',
      onComplete: 4,
      // Programs are already base64 encoded
      approvalProgram: args.approvalProgram as string,
      clearProgram: args.clearProgram as string
    };

    // Handle optional fields
    if (typeof args.note === 'string') {
      const noteBytes = new TextEncoder().encode(args.note);
      txnParams.note = Buffer.from(noteBytes).toString('base64');
    }
    if (typeof args.lease === 'string') {
      const leaseBytes = new TextEncoder().encode(args.lease);
      txnParams.lease = Buffer.from(leaseBytes).toString('base64');
    }
    if (typeof args.rekeyTo === 'string') {
      txnParams.rekeyTo = String(args.rekeyTo);
    }
    if (Array.isArray(args.appArgs)) {
      txnParams.appArgs = args.appArgs.map(arg => {
        const bytes = new TextEncoder().encode(String(arg));
        return Buffer.from(bytes).toString('base64');
      });
    }
    if (Array.isArray(args.accounts)) {
      txnParams.accounts = args.accounts.filter((acc): acc is string => typeof acc === 'string');
    }
    if (Array.isArray(args.foreignApps)) {
      txnParams.foreignApps = args.foreignApps.filter((app): app is number => typeof app === 'number');
    }
    if (Array.isArray(args.foreignAssets)) {
      txnParams.foreignAssets = args.foreignAssets.filter((asset): asset is number => typeof asset === 'number');
    }

    return txnParams;
  } catch (error) {
    if (error instanceof McpError) {
      throw error;
    }
    console.error('[MCP Error] Failed to handle application update:', error);
    throw new McpError(
      ErrorCode.InternalError,
      `Failed to handle application update: ${error instanceof Error ? error.message : 'Unknown error'}`
    );
  }
}

```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:indexerModels.BlockRewards.md:
--------------------------------------------------------------------------------

```markdown
[algosdk](../README.md) / [Exports](../modules.md) / [indexerModels](../modules/indexerModels.md) / BlockRewards

# Class: BlockRewards

[indexerModels](../modules/indexerModels.md).BlockRewards

Fields relating to rewards,

## Hierarchy

- `default`

  ↳ **`BlockRewards`**

## Table of contents

### Constructors

- [constructor](indexerModels.BlockRewards.md#constructor)

### Properties

- [attribute\_map](indexerModels.BlockRewards.md#attribute_map)
- [feeSink](indexerModels.BlockRewards.md#feesink)
- [rewardsCalculationRound](indexerModels.BlockRewards.md#rewardscalculationround)
- [rewardsLevel](indexerModels.BlockRewards.md#rewardslevel)
- [rewardsPool](indexerModels.BlockRewards.md#rewardspool)
- [rewardsRate](indexerModels.BlockRewards.md#rewardsrate)
- [rewardsResidue](indexerModels.BlockRewards.md#rewardsresidue)

### Methods

- [get\_obj\_for\_encoding](indexerModels.BlockRewards.md#get_obj_for_encoding)
- [from\_obj\_for\_encoding](indexerModels.BlockRewards.md#from_obj_for_encoding)

## Constructors

### constructor

• **new BlockRewards**(`«destructured»`)

Creates a new `BlockRewards` object.

#### Parameters

| Name | Type |
| :------ | :------ |
| `«destructured»` | `Object` |
| › `feeSink` | `string` |
| › `rewardsCalculationRound` | `number` \| `bigint` |
| › `rewardsLevel` | `number` \| `bigint` |
| › `rewardsPool` | `string` |
| › `rewardsRate` | `number` \| `bigint` |
| › `rewardsResidue` | `number` \| `bigint` |

#### Overrides

BaseModel.constructor

#### Defined in

client/v2/indexer/models/types.ts:2523

## Properties

### attribute\_map

• **attribute\_map**: `Record`\<`string`, `string`\>

#### Inherited from

BaseModel.attribute\_map

#### Defined in

client/v2/basemodel.ts:56

___

### feeSink

• **feeSink**: `string`

(fees) accepts transaction fees, it can only spend to the incentive pool.

#### Defined in

client/v2/indexer/models/types.ts:2477

___

### rewardsCalculationRound

• **rewardsCalculationRound**: `number` \| `bigint`

(rwcalr) number of leftover MicroAlgos after the distribution of rewards-rate
MicroAlgos for every reward unit in the next round.

#### Defined in

client/v2/indexer/models/types.ts:2483

___

### rewardsLevel

• **rewardsLevel**: `number` \| `bigint`

(earn) How many rewards, in MicroAlgos, have been distributed to each RewardUnit
of MicroAlgos since genesis.

#### Defined in

client/v2/indexer/models/types.ts:2489

___

### rewardsPool

• **rewardsPool**: `string`

(rwd) accepts periodic injections from the fee-sink and continually
redistributes them as rewards.

#### Defined in

client/v2/indexer/models/types.ts:2495

___

### rewardsRate

• **rewardsRate**: `number` \| `bigint`

(rate) Number of new MicroAlgos added to the participation stake from rewards at
the next round.

#### Defined in

client/v2/indexer/models/types.ts:2501

___

### rewardsResidue

• **rewardsResidue**: `number` \| `bigint`

(frac) Number of leftover MicroAlgos after the distribution of
RewardsRate/rewardUnits MicroAlgos for every reward unit in the next round.

#### Defined in

client/v2/indexer/models/types.ts:2507

## Methods

### get\_obj\_for\_encoding

▸ **get_obj_for_encoding**(`binary?`): `Record`\<`string`, `any`\>

Get an object ready for encoding to either JSON or msgpack.

#### Parameters

| Name | Type | Default value | Description |
| :------ | :------ | :------ | :------ |
| `binary` | `boolean` | `false` | Use true to indicate that the encoding can handle raw binary objects (Uint8Arrays). Use false to indicate that raw binary objects should be converted to base64 strings. True should be used for objects that will be encoded with msgpack, and false should be used for objects that will be encoded with JSON. |

#### Returns

`Record`\<`string`, `any`\>

#### Inherited from

BaseModel.get\_obj\_for\_encoding

#### Defined in

client/v2/basemodel.ts:65

___

### from\_obj\_for\_encoding

▸ `Static` **from_obj_for_encoding**(`data`): [`BlockRewards`](indexerModels.BlockRewards.md)

#### Parameters

| Name | Type |
| :------ | :------ |
| `data` | `Record`\<`string`, `any`\> |

#### Returns

[`BlockRewards`](indexerModels.BlockRewards.md)

#### Defined in

client/v2/indexer/models/types.ts:2557

```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/algokit:cli:features:tasks:sign.md:
--------------------------------------------------------------------------------

```markdown
# AlgoKit Task Sign

The AlgoKit Sign feature allows you to sign Algorand transaction(s) using the AlgoKit CLI. This feature supports signing single or multiple transactions, either provided directly as a base64 encoded string or from a binary file.

## Usage

Available commands and possible usage as follows:

```bash
$ ~ algokit task sign
Usage: algokit task sign [OPTIONS]

Sign goal clerk compatible Algorand transaction(s).

Options:
-a, --account TEXT Address or alias of the signer account. [required]
-f, --file PATH Single or multiple message pack encoded transactions from binary file to sign.
-t, --transaction TEXT Single base64 encoded transaction object to sign.
-o, --output PATH The output file path to store signed transaction(s).
--force Force signing without confirmation.
-h, --help Show this message and exit.
```

## Options

- `--account, -a TEXT`: Specifies the address or alias of the signer account. This option is required.
- `--file, -f PATH`: Specifies the path to a binary file containing single or multiple message pack encoded transactions to sign. Mutually exclusive with `--transaction` option.
- `--transaction, -t TEXT`: Specifies a single base64 encoded transaction object to sign. Mutually exclusive with `--file` option.
- `--output, -o PATH`: Specifies the output file path to store signed transaction(s).
- `--force`: If specified, it allows signing without interactive confirmation prompt.

> Please note, `--transaction` flag only supports signing a single transaction. If you want to sign multiple transactions, you can use the `--file` flag to specify a binary file containing multiple transactions.

## Example

To sign a transaction, you can use the `sign` command as follows:

```bash
$ algokit task sign --account {YOUR_ACCOUNT_ALIAS OR YOUR_ADDRESS} --file {PATH_TO_BINARY_FILE_CONTAINING_TRANSACTIONS}
```

This will prompt you to confirm the transaction details before signing. If you want to bypass the confirmation, you can use the `--force` flag:

```bash
$ algokit task sign --account {YOUR_ACCOUNT_ALIAS OR YOUR_ADDRESS} --transaction {YOUR_BASE64_ENCODED_TRANSACTION} --force
```

If the transaction is successfully signed, the signed transaction will be output to the console in a JSON format. If you want to write the signed transaction to a file, you can use the `--output` option:

```bash
$ algokit task sign --account {YOUR_ACCOUNT_ALIAS OR YOUR_ADDRESS} --transaction {YOUR_BASE64_ENCODED_TRANSACTION} --output /path/to/output/file
```

This will write the signed transaction to the specified file.

## Goal Compatibility

Please note, at the moment this feature only supports [`goal clerk`](https://developer.algorand.org/docs/clis/goal/clerk/clerk/) compatible transaction objects.

When `--output` option is not specified, the signed transaction(s) will be output to the console in a following JSON format:

```
[
  {transaction_id: "TRANSACTION_ID", content: "BASE64_ENCODED_SIGNED_TRANSACTION"},
]
```

On the other hand, when `--output` option is specified, the signed transaction(s) will be stored to a file as a message pack encoded binary file.

### Encoding transactins for signing

Algorand provides a set of options in [py-algorand-sdk](https://github.com/algorand/py-algorand-sdk) and [js-algorand-sdk](https://github.com/algorand/js-algorand-sdk) to encode transactions for signing.

Encoding simple txn object in python:

```py
# Encoding single transaction as a base64 encoded string
algosdk.encoding.msgpack_encode({"txn": {YOUR_TXN_OBJECT}.dictify()}) # Resulting string can be passed directy to algokit task sign with --transaction flag

# Encoding multiple transactions as a message pack encoded binary file
algosdk.transaction.write_to_file([{YOUR_TXN_OBJECT}], "some_file.txn") # Resulting file path can be passed directly to algokit sign with --file flag
```

Encoding simple txn object in javascript:

```ts
Buffer.from(algosdk.encodeObj({ txn: txn.get_obj_for_encoding() })).toString(
  "base64"
); // Resulting string can be passed directy to algokit task sign with --transaction flag
```

## Further Reading

For in-depth details, visit the [sign section](../../cli/index.md#sign) in the AlgoKit CLI reference documentation.

```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:modelsv2.AccountParticipation.md:
--------------------------------------------------------------------------------

```markdown
[algosdk](../README.md) / [Exports](../modules.md) / [modelsv2](../modules/modelsv2.md) / AccountParticipation

# Class: AccountParticipation

[modelsv2](../modules/modelsv2.md).AccountParticipation

AccountParticipation describes the parameters used by this account in consensus
protocol.

## Hierarchy

- `default`

  ↳ **`AccountParticipation`**

## Table of contents

### Constructors

- [constructor](modelsv2.AccountParticipation.md#constructor)

### Properties

- [attribute\_map](modelsv2.AccountParticipation.md#attribute_map)
- [selectionParticipationKey](modelsv2.AccountParticipation.md#selectionparticipationkey)
- [stateProofKey](modelsv2.AccountParticipation.md#stateproofkey)
- [voteFirstValid](modelsv2.AccountParticipation.md#votefirstvalid)
- [voteKeyDilution](modelsv2.AccountParticipation.md#votekeydilution)
- [voteLastValid](modelsv2.AccountParticipation.md#votelastvalid)
- [voteParticipationKey](modelsv2.AccountParticipation.md#voteparticipationkey)

### Methods

- [get\_obj\_for\_encoding](modelsv2.AccountParticipation.md#get_obj_for_encoding)
- [from\_obj\_for\_encoding](modelsv2.AccountParticipation.md#from_obj_for_encoding)

## Constructors

### constructor

• **new AccountParticipation**(`«destructured»`)

Creates a new `AccountParticipation` object.

#### Parameters

| Name | Type |
| :------ | :------ |
| `«destructured»` | `Object` |
| › `selectionParticipationKey` | `string` \| `Uint8Array` |
| › `stateProofKey?` | `string` \| `Uint8Array` |
| › `voteFirstValid` | `number` \| `bigint` |
| › `voteKeyDilution` | `number` \| `bigint` |
| › `voteLastValid` | `number` \| `bigint` |
| › `voteParticipationKey` | `string` \| `Uint8Array` |

#### Overrides

BaseModel.constructor

#### Defined in

client/v2/algod/models/types.ts:769

## Properties

### attribute\_map

• **attribute\_map**: `Record`\<`string`, `string`\>

#### Inherited from

BaseModel.attribute\_map

#### Defined in

client/v2/basemodel.ts:56

___

### selectionParticipationKey

• **selectionParticipationKey**: `Uint8Array`

(sel) Selection public key (if any) currently registered for this round.

#### Defined in

client/v2/algod/models/types.ts:731

___

### stateProofKey

• `Optional` **stateProofKey**: `Uint8Array`

(stprf) Root of the state proof key (if any)

#### Defined in

client/v2/algod/models/types.ts:757

___

### voteFirstValid

• **voteFirstValid**: `number` \| `bigint`

(voteFst) First round for which this participation is valid.

#### Defined in

client/v2/algod/models/types.ts:736

___

### voteKeyDilution

• **voteKeyDilution**: `number` \| `bigint`

(voteKD) Number of subkeys in each batch of participation keys.

#### Defined in

client/v2/algod/models/types.ts:741

___

### voteLastValid

• **voteLastValid**: `number` \| `bigint`

(voteLst) Last round for which this participation is valid.

#### Defined in

client/v2/algod/models/types.ts:746

___

### voteParticipationKey

• **voteParticipationKey**: `Uint8Array`

(vote) root participation public key (if any) currently registered for this
round.

#### Defined in

client/v2/algod/models/types.ts:752

## Methods

### get\_obj\_for\_encoding

▸ **get_obj_for_encoding**(`binary?`): `Record`\<`string`, `any`\>

Get an object ready for encoding to either JSON or msgpack.

#### Parameters

| Name | Type | Default value | Description |
| :------ | :------ | :------ | :------ |
| `binary` | `boolean` | `false` | Use true to indicate that the encoding can handle raw binary objects (Uint8Arrays). Use false to indicate that raw binary objects should be converted to base64 strings. True should be used for objects that will be encoded with msgpack, and false should be used for objects that will be encoded with JSON. |

#### Returns

`Record`\<`string`, `any`\>

#### Inherited from

BaseModel.get\_obj\_for\_encoding

#### Defined in

client/v2/basemodel.ts:65

___

### from\_obj\_for\_encoding

▸ `Static` **from_obj_for_encoding**(`data`): [`AccountParticipation`](modelsv2.AccountParticipation.md)

#### Parameters

| Name | Type |
| :------ | :------ |
| `data` | `Record`\<`string`, `any`\> |

#### Returns

[`AccountParticipation`](modelsv2.AccountParticipation.md)

#### Defined in

client/v2/algod/models/types.ts:812

```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:code:modules:types_transaction.md:
--------------------------------------------------------------------------------

```markdown
[@algorandfoundation/algokit-utils](../README.md) / types/transaction

# Module: types/transaction

## Table of contents

### Interfaces

- [AtomicTransactionComposerToSend](../interfaces/types_transaction.AtomicTransactionComposerToSend.md)
- [ConfirmedTransactionResult](../interfaces/types_transaction.ConfirmedTransactionResult.md)
- [ConfirmedTransactionResults](../interfaces/types_transaction.ConfirmedTransactionResults.md)
- [SendAtomicTransactionComposerResults](../interfaces/types_transaction.SendAtomicTransactionComposerResults.md)
- [SendParams](../interfaces/types_transaction.SendParams.md)
- [SendTransactionParams](../interfaces/types_transaction.SendTransactionParams.md)
- [SendTransactionResult](../interfaces/types_transaction.SendTransactionResult.md)
- [SendTransactionResults](../interfaces/types_transaction.SendTransactionResults.md)
- [TransactionGroupToSend](../interfaces/types_transaction.TransactionGroupToSend.md)
- [TransactionToSign](../interfaces/types_transaction.TransactionToSign.md)

### Type Aliases

- [Arc2TransactionNote](types_transaction.md#arc2transactionnote)
- [SendSingleTransactionResult](types_transaction.md#sendsingletransactionresult)
- [SendTransactionFrom](types_transaction.md#sendtransactionfrom)
- [TransactionNote](types_transaction.md#transactionnote)
- [TransactionNoteData](types_transaction.md#transactionnotedata)

## Type Aliases

### Arc2TransactionNote

Ƭ **Arc2TransactionNote**: \{ `dAppName`: `string` ; `data`: `string` ; `format`: ``"m"`` \| ``"b"`` \| ``"u"``  } \| \{ `dAppName`: `string` ; `data`: [`TransactionNoteData`](types_transaction.md#transactionnotedata) ; `format`: ``"j"``  }

ARC-0002 compatible transaction note components https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0002.md

#### Defined in

[src/types/transaction.ts:16](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L16)

___

### SendSingleTransactionResult

Ƭ **SendSingleTransactionResult**: [`Expand`](types_expand.md#expand)\<[`SendAtomicTransactionComposerResults`](../interfaces/types_transaction.SendAtomicTransactionComposerResults.md) & [`ConfirmedTransactionResult`](../interfaces/types_transaction.ConfirmedTransactionResult.md)\>

Result from sending a single transaction.

#### Defined in

[src/types/transaction.ts:50](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L50)

___

### SendTransactionFrom

Ƭ **SendTransactionFrom**: `Account` \| [`SigningAccount`](../classes/types_account.SigningAccount.md) \| `LogicSigAccount` \| [`MultisigAccount`](../classes/types_account.MultisigAccount.md) \| [`TransactionSignerAccount`](../interfaces/types_account.TransactionSignerAccount.md)

Core account abstraction when signing/sending transactions

This type is used across the entire AlgoKit Utils library and allows you to pass through
many types of accounts, including:
* `Account` - The in-built `algosdk.Account` type for mnemonic accounts
* `SigningAccount` - An AlgoKit Utils class that wraps Account to provide support for rekeyed accounts
* `LogicSigAccount` - The in-built `algosdk.LogicSigAccount` type for logic signatures
* `MultisigAccount` - An AlgoKit Utils class that wraps a multisig account and provides mechanisms to get a multisig account
* `TransactionSignerAccount` - An AlgoKit Utils class that wraps the in-built `algosdk.TransactionSigner` along with the sender address

#### Defined in

[src/types/transaction.ts:108](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L108)

___

### TransactionNote

Ƭ **TransactionNote**: `Uint8Array` \| [`TransactionNoteData`](types_transaction.md#transactionnotedata) \| [`Arc2TransactionNote`](types_transaction.md#arc2transactionnote)

#### Defined in

[src/types/transaction.ts:12](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L12)

___

### TransactionNoteData

Ƭ **TransactionNoteData**: `string` \| ``null`` \| `undefined` \| `number` \| `any`[] \| `Record`\<`string`, `any`\>

#### Defined in

[src/types/transaction.ts:14](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L14)

```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/developer:python:code:example:scratch_storage.md:
--------------------------------------------------------------------------------

```markdown
# Scratch Storage in Algorand Smart Contracts

This guide demonstrates how to use scratch storage in Algorand smart contracts. Scratch storage provides temporary storage slots that can be used during contract execution.

## Basic Implementation

```python
from algopy import ARC4Contract, Bytes, Contract, UInt64, op, urange
from algopy.arc4 import abimethod

TWO = 2
TWENTY = 20

class ScratchSlotsContract(ARC4Contract, scratch_slots=(1, TWO, urange(3, TWENTY))):
    @abimethod
    def store_data(self) -> bool:
        # Store values in scratch slots
        op.Scratch.store(1, UInt64(5))
        op.Scratch.store(2, Bytes(b"Hello World"))
        
        # Load and verify values
        assert op.Scratch.load_uint64(1) == UInt64(5)
        assert op.Scratch.load_bytes(2) == b"Hello World"
        return True
```

## Simplified Contract Example

```python
class SimpleScratchSlotsContract(Contract, scratch_slots=(1, TWO, urange(3, TWENTY))):
    def approval_program(self) -> UInt64:
        # Load and verify values from scratch storage
        assert op.Scratch.load_uint64(1) == UInt64(5)
        assert op.Scratch.load_bytes(2) == b"Hello World"
        return UInt64(1)

    def clear_state_program(self) -> UInt64:
        return UInt64(1)
```

## Key Features

### Scratch Slots Declaration

```python
# Define scratch slots in class definition
scratch_slots=(1, TWO, urange(3, TWENTY))
```
- Specify individual slots (1)
- Use constants (TWO)
- Define ranges (urange(3, TWENTY))

### Storage Operations

```python
# Store values
op.Scratch.store(1, UInt64(5))          # Store integer
op.Scratch.store(2, Bytes(b"Hello"))    # Store bytes

# Load values
value1 = op.Scratch.load_uint64(1)      # Load integer
value2 = op.Scratch.load_bytes(2)       # Load bytes
```

## Best Practices

1. **Slot Management**:
   - Define slots explicitly
   - Use meaningful constants
   - Document slot usage
   - Avoid slot conflicts

2. **Data Types**:
   - Use appropriate load methods
   - Verify data types
   - Handle type conversions
   - Check value ranges

3. **Memory Usage**:
   - Minimize slot usage
   - Clean up after use
   - Monitor memory limits
   - Optimize storage

4. **Error Handling**:
   - Verify loaded values
   - Handle missing data
   - Check slot bounds
   - Validate data types

## Common Patterns

1. **Temporary Calculations**:
```python
def calculate_total(self) -> UInt64:
    # Store intermediate results
    op.Scratch.store(1, UInt64(5))
    op.Scratch.store(2, UInt64(10))
    
    # Load and combine results
    value1 = op.Scratch.load_uint64(1)
    value2 = op.Scratch.load_uint64(2)
    return value1 + value2
```

2. **Data Validation**:
```python
def validate_input(self, input_data: Bytes) -> bool:
    # Store input for validation
    op.Scratch.store(1, input_data)
    
    # Load and validate
    stored_data = op.Scratch.load_bytes(1)
    return stored_data == input_data
```

## Technical Details

1. **Slot Allocation**:
   - Slots are numbered from 0
   - Maximum slot number is 255
   - Each slot can store any type
   - Slots are cleared after execution

2. **Data Types**:
   - UInt64 for integers
   - Bytes for byte strings
   - Type-specific load methods
   - Automatic type checking

3. **Memory Constraints**:
   - Limited number of slots
   - Temporary storage only
   - No persistence between calls
   - Efficient for calculations

4. **Performance**:
   - Fast access times
   - Low overhead
   - Efficient for loops
   - Good for temporary data

## Use Cases

1. **Complex Calculations**:
   - Store intermediate results
   - Break down computations
   - Reuse common values
   - Optimize performance

2. **Data Validation**:
   - Store input data
   - Compare values
   - Check constraints
   - Verify formats

3. **State Transitions**:
   - Store previous state
   - Calculate changes
   - Verify transitions
   - Update final state

4. **Loop Operations**:
   - Store counters
   - Accumulate results
   - Track iterations
   - Handle aggregations

This guide demonstrates how to effectively use scratch storage in Algorand smart contracts. Understanding scratch storage is crucial for optimizing contract performance and managing temporary data during execution.

```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:modelsv2.TransactionParametersResponse.md:
--------------------------------------------------------------------------------

```markdown
[algosdk](../README.md) / [Exports](../modules.md) / [modelsv2](../modules/modelsv2.md) / TransactionParametersResponse

# Class: TransactionParametersResponse

[modelsv2](../modules/modelsv2.md).TransactionParametersResponse

TransactionParams contains the parameters that help a client construct a new
transaction.

## Hierarchy

- `default`

  ↳ **`TransactionParametersResponse`**

## Table of contents

### Constructors

- [constructor](modelsv2.TransactionParametersResponse.md#constructor)

### Properties

- [attribute\_map](modelsv2.TransactionParametersResponse.md#attribute_map)
- [consensusVersion](modelsv2.TransactionParametersResponse.md#consensusversion)
- [fee](modelsv2.TransactionParametersResponse.md#fee)
- [genesisHash](modelsv2.TransactionParametersResponse.md#genesishash)
- [genesisId](modelsv2.TransactionParametersResponse.md#genesisid)
- [lastRound](modelsv2.TransactionParametersResponse.md#lastround)
- [minFee](modelsv2.TransactionParametersResponse.md#minfee)

### Methods

- [get\_obj\_for\_encoding](modelsv2.TransactionParametersResponse.md#get_obj_for_encoding)
- [from\_obj\_for\_encoding](modelsv2.TransactionParametersResponse.md#from_obj_for_encoding)

## Constructors

### constructor

• **new TransactionParametersResponse**(`«destructured»`)

Creates a new `TransactionParametersResponse` object.

#### Parameters

| Name | Type |
| :------ | :------ |
| `«destructured»` | `Object` |
| › `consensusVersion` | `string` |
| › `fee` | `number` \| `bigint` |
| › `genesisHash` | `string` \| `Uint8Array` |
| › `genesisId` | `string` |
| › `lastRound` | `number` \| `bigint` |
| › `minFee` | `number` \| `bigint` |

#### Overrides

BaseModel.constructor

#### Defined in

client/v2/algod/models/types.ts:5816

## Properties

### attribute\_map

• **attribute\_map**: `Record`\<`string`, `string`\>

#### Inherited from

BaseModel.attribute\_map

#### Defined in

client/v2/basemodel.ts:56

___

### consensusVersion

• **consensusVersion**: `string`

ConsensusVersion indicates the consensus protocol version
as of LastRound.

#### Defined in

client/v2/algod/models/types.ts:5771

___

### fee

• **fee**: `number` \| `bigint`

Fee is the suggested transaction fee
Fee is in units of micro-Algos per byte.
Fee may fall to zero but transactions must still have a fee of
at least MinTxnFee for the current network protocol.

#### Defined in

client/v2/algod/models/types.ts:5779

___

### genesisHash

• **genesisHash**: `Uint8Array`

GenesisHash is the hash of the genesis block.

#### Defined in

client/v2/algod/models/types.ts:5784

___

### genesisId

• **genesisId**: `string`

GenesisID is an ID listed in the genesis block.

#### Defined in

client/v2/algod/models/types.ts:5789

___

### lastRound

• **lastRound**: `number` \| `bigint`

LastRound indicates the last round seen

#### Defined in

client/v2/algod/models/types.ts:5794

___

### minFee

• **minFee**: `number` \| `bigint`

The minimum transaction fee (not per byte) required for the
txn to validate for the current network protocol.

#### Defined in

client/v2/algod/models/types.ts:5800

## Methods

### get\_obj\_for\_encoding

▸ **get_obj_for_encoding**(`binary?`): `Record`\<`string`, `any`\>

Get an object ready for encoding to either JSON or msgpack.

#### Parameters

| Name | Type | Default value | Description |
| :------ | :------ | :------ | :------ |
| `binary` | `boolean` | `false` | Use true to indicate that the encoding can handle raw binary objects (Uint8Arrays). Use false to indicate that raw binary objects should be converted to base64 strings. True should be used for objects that will be encoded with msgpack, and false should be used for objects that will be encoded with JSON. |

#### Returns

`Record`\<`string`, `any`\>

#### Inherited from

BaseModel.get\_obj\_for\_encoding

#### Defined in

client/v2/basemodel.ts:65

___

### from\_obj\_for\_encoding

▸ `Static` **from_obj_for_encoding**(`data`): [`TransactionParametersResponse`](modelsv2.TransactionParametersResponse.md)

#### Parameters

| Name | Type |
| :------ | :------ |
| `data` | `Record`\<`string`, `any`\> |

#### Returns

[`TransactionParametersResponse`](modelsv2.TransactionParametersResponse.md)

#### Defined in

client/v2/algod/models/types.ts:5853

```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/ARCs:specs:arc-0021.md:
--------------------------------------------------------------------------------

```markdown
---
arc: 21
title: Round based datafeed oracles on Algorand
description: Conventions for building round based datafeed oracles on Algorand
author: ori-shem-tov (@ori-shem-tov)
discussions-to: https://github.com/algorandfoundation/ARCs/issues/124
status: Final
type: Standards Track
category: Interface
sub-category: Application
created: 2022-03-09
requires: 4
---

# Round based datafeed oracles on Algorand

## Abstract

The following document introduces conventions for building round based datafeed oracles on Algorand using the ABI defined in [ARC-4](./arc-0004.md)

## Specification

The key words "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**", "**SHALL NOT**", "**SHOULD**", "**SHOULD NOT**", "**RECOMMENDED**", "**MAY**", and "**OPTIONAL**" in this document are to be interpreted as described in <a href="https://www.ietf.org/rfc/rfc2119.txt">RFC-2119</a>.

> Comments like this are non-normative.

An [ARC-21](./arc-0021.md) oracle **MUST** have an associated smart-contract implementaing the ABI interface described below.

### ABI Interface

Round based datafeed oracles allow smart-contracts to get data with relevancy to a specific block number, for example the ALGO price at a specific round.

The associated smart contract **MUST** implement the following ABI interface:
```json
{
  "name": "ARC_0021",
  "desc": "Interface for a round based datafeed oracle",
  "methods": [
    {
      "name": "get",
      "desc": "Get data from the oracle for a specific round",
      "args": [
        { "type": "uint64", "name": "round", "desc": "The desired round" },
        { "type": "byte[]", "name": "user_data", "desc": "Optional: Extra data provided by the user. Pass an empty slice if not used." }
      ],
      "returns": { "type": "byte[]", "desc": "The oracle's response. If the data doesn't exist, the response is an empty slice." }
    },
    {
      "name": "must_get",
      "desc": "Get data from the oracle for a specific round. Panics if the data doesn't exist.",
      "args": [
        { "type": "uint64", "name": "round", "desc": "The desired round" },
        { "type": "byte[]", "name": "user_data", "desc": "Optional: Extra data provided by the user. Pass an empty slice if not used." }
      ],
      "returns": { "type": "byte[]", "desc": "The oracle's response" }
    },
    /** Optional */
    {
      "name": "get_closest",
      "desc": "Get data from the oracle closest to a specified round by searching over past rounds.",
      "args": [
        { "type": "uint64", "name": "round", "desc": "The desired round" },
        { "type": "uint64", "name": "search_span", "desc": "Threshold for number of rounds in the past to search on." }
        { "type": "byte[]", "name": "user_data", "desc": "Optional: Extra data provided by the user. Pass an empty slice if not used." }
      ],
      "returns": { "type": "(uint64,byte[])", "desc": "The closest round and the oracle's response for that round. If the data doesn't exist, the round is set to 0 and the response is an empty slice." }
    },
    /** Optional */
    {
      "name": "must_get_closest",
      "desc": "Get data from the oracle closest to a specified round by searching over past rounds. Panics if no data is found within the specified range.",
      "args": [
        { "type": "uint64", "name": "round", "desc": "The desired round" },
        { "type": "uint64", "name": "search_span", "desc": "Threshold for number of rounds in the past to search on." }
        { "type": "byte[]", "name": "user_data", "desc": "Optional: Extra data provided by the user. Pass an empty slice if not used." }
      ],
      "returns": { "type": "(uint64,byte[])", "desc": "The closest round and the oracle's response for that round." }
    }
  ]
}
```

### Method boundaries

- All of `get`, `must_get`, `get_closest` and `must_get_closest` functions **MUST NOT** use local state.
- Optional arguments of type `byte[]` that are not used are expected to be passed as an empty byte slice.

## Rationale

The goal of these conventions is to make it easier for smart-contracts to interact with off-chain data sources.

## Security Considerations

None.

## Copyright

Copyright and related rights waived via <a href="https://creativecommons.org/publicdomain/zero/1.0/">CCO</a>.

```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/developer:docs:run-a-node:participate:offline.md:
--------------------------------------------------------------------------------

```markdown
title: Register offline

To mark an account **offline** send a key registration transaction to the network authorized by the account to be marked offline. The signal to mark the sending account offline is the issuance of a `"type": "keyreg"` transaction that does not contain any participation key-related fields (i.e. they are all set to null values)

!!! info "Important"
	Just like with online keyreg transactions. The moment a key registration transaction is confirmed by the network it takes 320 rounds for the change to take effect. So, if a key registration is confirmed in round 5000, the account will stop participating at round 5320.

# Create an offline key registration transaction

Create an offline key registration transaction for the address: `EW64GC6F24M7NDSC5R3ES4YUVE3ZXXNMARJHDCCCLIHZU6TBEOC7XRSBG4` by inserting the following code snippet into the construction portion of the example shown in [Authorizing Transactions Offline](../../../get-details/transactions/offline_transactions#unsigned-transaction-file-operations). The file produced and displayed with `goal clerk inspect` should look almost exactly the same as the output shown in the [constructing a register offline transaction example](../../../get-details/transactions#register-account-offline). 

=== "Python"
    <!-- ===PYSDK_TRANSACTION_KEYREG_OFFLINE_CREATE=== -->
	```python
	# get suggested parameters
	params = algod_client.suggested_params()
	
	# create keyreg transaction to take this account offline
	offline_keyreg = transaction.KeyregTxn(
	    sender="EW64GC6F24M7NDSC5R3ES4YUVE3ZXXNMARJHDCCCLIHZU6TBEOC7XRSBG4",
	    sp=params,
	    votekey=None,
	    selkey=None,
	    votefst=None,
	    votelst=None,
	    votekd=None,
	)
	print(online_keyreg.dictify())
	```
	[Snippet Source](https://github.com/algorand/py-algorand-sdk/blob/examples/examples/participation.py#L29-L43)
    <!-- ===PYSDK_TRANSACTION_KEYREG_OFFLINE_CREATE=== -->

=== "JavaScript"
    <!-- ===JSSDK_TRANSACTION_KEYREG_OFFLINE_CREATE=== -->
	```javascript
	// get suggested parameters
	const suggestedParams = await algodClient.getTransactionParams().do();
	// create keyreg transaction to take this account offline
	const offlineKeyReg = algosdk.makeKeyRegistrationTxnWithSuggestedParamsFromObject(
	  {
	    from: addr,
	    suggestedParams,
	  }
	);
	console.log(offlineKeyReg.get_obj_for_encoding());
	```
	[Snippet Source](https://github.com/algorand/js-algorand-sdk/blob/examples/examples/participation.ts#L44-L54)
    <!-- ===JSSDK_TRANSACTION_KEYREG_OFFLINE_CREATE=== -->

=== "Go"
    <!-- ===GOSDK_TRANSACTION_KEYREG_OFFLINE_CREATE=== -->
    <!-- ===GOSDK_TRANSACTION_KEYREG_OFFLINE_CREATE=== -->

=== "Java"
    <!-- ===JAVASDK_TRANSACTION_KEYREG_OFFLINE_CREATE=== -->
	```java
	// create keyreg transaction to take this account offline
	Transaction keyRegOfflineTxn = Transaction.KeyRegistrationTransactionBuilder().suggestedParams(sp)
	        .sender(address)
	        .build();
	```
	[Snippet Source](https://github.com/algorand/java-algorand-sdk/blob/examples/examples/src/main/java/com/algorand/examples/Participation.java#L37-L41)
    <!-- ===JAVASDK_TRANSACTION_KEYREG_OFFLINE_CREATE=== -->

=== "goal"
    <!-- ===GOAL_TRANSACTION_KEYREG_OFFLINE_CREATE=== -->
    ```zsh
    $ goal account changeonlinestatus --address=EW64GC6F24M7NDSC5R3ES4YUVE3ZXXNMARJHDCCCLIHZU6TBEOC7XRSBG4 --fee=1000 --firstvalid=7000000 --lastvalid=7001000 --online=false --txfile=offline.txn
    ```
    <!-- ===GOAL_TRANSACTION_KEYREG_OFFLINE_CREATE=== -->

# Authorize and Send the Transaction
Use the appropriate [authorization method](../../../get-details/transactions/signatures) to sign the transaction. 

!!! tip
    It is recommended that you authorize the transaction offline to protect the security of your private keys, especially for high-value participating accounts. 

Once the transaction is signed, wait for the network to reach the transaction's first valid round and then [submit](../../../archive/build-apps/hello_world#submit-the-transaction) and the SDK Method "wait for confirmation". 

**See also**

- [Key Registration Transactions](../../../get-details/transactions#key-registration-transaction)
- [Register account offline](../../../get-details/transactions#register-account-offline)
```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:README.md:
--------------------------------------------------------------------------------

```markdown
# js-algorand-sdk

[![CircleCI](https://dl.circleci.com/status-badge/img/gh/algorand/js-algorand-sdk/tree/develop.svg?style=svg)](https://dl.circleci.com/status-badge/redirect/gh/algorand/js-algorand-sdk/tree/develop) [![npm version](https://badge.fury.io/js/algosdk.svg)](https://www.npmjs.com/package/algosdk)

AlgoSDK is the official JavaScript library for communicating with the Algorand network. It's designed for modern browsers and Node.js.

## Installation

### [Node.js](https://nodejs.org/en/download/)

```
$ npm install algosdk
```

> This package provides TypeScript types, but you will need [TypeScript](https://www.typescriptlang.org/) version 4.2 or higher to use them properly.

### Browser

Include a minified browser bundle directly in your HTML like so:

```html
<script
  src="https://unpkg.com/[email protected]/dist/browser/algosdk.min.js"
  integrity="sha384-R84o0hH3cBFIzv9uqyKcDNfDi/6jgn1MrS1/tOMDWxeh8hWfOLuRoMy0LekUm2KL"
  crossorigin="anonymous"
></script>
```

or

```html
<script
  src="https://cdn.jsdelivr.net/npm/[email protected]/dist/browser/algosdk.min.js"
  integrity="sha384-R84o0hH3cBFIzv9uqyKcDNfDi/6jgn1MrS1/tOMDWxeh8hWfOLuRoMy0LekUm2KL"
  crossorigin="anonymous"
></script>
```

Information about hosting the package for yourself, finding the browser bundles of previous versions, and computing the SRI hash is [available here](FAQ.md).

## Quick Start

```javascript
const token = 'Your algod API token';
const server = 'http://127.0.0.1';
const port = 8080;
const client = new algosdk.Algodv2(token, server, port);

(async () => {
  console.log(await client.status().do());
})().catch((e) => {
  console.log(e);
});
```

## Documentation

Documentation for this SDK is available here: https://algorand.github.io/js-algorand-sdk/. Additional resources are available on https://developer.algorand.org.

## Examples

Running examples requires access to a running node. Follow the instructions in Algorand's [developer resources](https://developer.algorand.org/docs/run-a-node/setup/install/) to install a node on your computer.

**As portions of the codebase are written in TypeScript, example files cannot be run directly using `node`**. Please refer to the instructions described in the [examples/README.md](examples/README.md) file for more information regarding running the examples.

## SDK Development

### Building

To build a new version of the library, run:

```bash
npm run build
```

### Generating Documentation

To generate the documentation website, run:

```bash
npm run docs
```

The static website will be located in the `docs/` directory.

### Testing

We have two test suites: mocha tests in this repo, and the Algorand SDK test suite from https://github.com/algorand/algorand-sdk-testing.

#### Node.js

To run the mocha tests in Node.js, run:

```bash
npm test
```

To run the SDK test suite in Node.js, run:

```bash
make docker-test
```

#### Browsers

The test suites can also run in browsers. To do so, set the environment variable `TEST_BROWSER` to
one of our supported browsers. Currently we support testing in `chrome` and `firefox`. When
`TEST_BROWSER` is set, the mocha and SDK test suites will run in that browser.

For example, to run mocha tests in Chrome:

```bash
TEST_BROWSER=chrome npm test
```

And to run SDK tests in Firefox:

```bash
TEST_BROWSER=firefox make docker-test
```

### Code Style

This project enforces a modified version of the [Airbnb code style](https://github.com/airbnb/javascript).

We've setup linters and formatters to help catch errors and improve the development experience:

- [Prettier](https://prettier.io/) – ensures that code is formatted in a readable way.
- [ESLint](https://eslint.org/) — checks code for antipatterns as well as formatting.

> If using the Visual Studio Code editor with the [recommended extensions](.vscode/extensions.json), ESLint errors should be highlighted in red and the Prettier extension should format code on every save.

#### Precommit Hook

The linters and formatters listed above should run automatically on each commit to catch errors early and save CI running time.

## License

js-algorand-sdk is licensed under an MIT license. See the [LICENSE](https://github.com/algorand/js-algorand-sdk/blob/master/LICENSE) file for details.

```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:indexerModels.AccountParticipation.md:
--------------------------------------------------------------------------------

```markdown
[algosdk](../README.md) / [Exports](../modules.md) / [indexerModels](../modules/indexerModels.md) / AccountParticipation

# Class: AccountParticipation

[indexerModels](../modules/indexerModels.md).AccountParticipation

AccountParticipation describes the parameters used by this account in consensus
protocol.

## Hierarchy

- `default`

  ↳ **`AccountParticipation`**

## Table of contents

### Constructors

- [constructor](indexerModels.AccountParticipation.md#constructor)

### Properties

- [attribute\_map](indexerModels.AccountParticipation.md#attribute_map)
- [selectionParticipationKey](indexerModels.AccountParticipation.md#selectionparticipationkey)
- [stateProofKey](indexerModels.AccountParticipation.md#stateproofkey)
- [voteFirstValid](indexerModels.AccountParticipation.md#votefirstvalid)
- [voteKeyDilution](indexerModels.AccountParticipation.md#votekeydilution)
- [voteLastValid](indexerModels.AccountParticipation.md#votelastvalid)
- [voteParticipationKey](indexerModels.AccountParticipation.md#voteparticipationkey)

### Methods

- [get\_obj\_for\_encoding](indexerModels.AccountParticipation.md#get_obj_for_encoding)
- [from\_obj\_for\_encoding](indexerModels.AccountParticipation.md#from_obj_for_encoding)

## Constructors

### constructor

• **new AccountParticipation**(`«destructured»`)

Creates a new `AccountParticipation` object.

#### Parameters

| Name | Type |
| :------ | :------ |
| `«destructured»` | `Object` |
| › `selectionParticipationKey` | `string` \| `Uint8Array` |
| › `stateProofKey?` | `string` \| `Uint8Array` |
| › `voteFirstValid` | `number` \| `bigint` |
| › `voteKeyDilution` | `number` \| `bigint` |
| › `voteLastValid` | `number` \| `bigint` |
| › `voteParticipationKey` | `string` \| `Uint8Array` |

#### Overrides

BaseModel.constructor

#### Defined in

client/v2/indexer/models/types.ts:528

## Properties

### attribute\_map

• **attribute\_map**: `Record`\<`string`, `string`\>

#### Inherited from

BaseModel.attribute\_map

#### Defined in

client/v2/basemodel.ts:56

___

### selectionParticipationKey

• **selectionParticipationKey**: `Uint8Array`

Selection public key (if any) currently registered for this round.

#### Defined in

client/v2/indexer/models/types.ts:492

___

### stateProofKey

• `Optional` **stateProofKey**: `Uint8Array`

Root of the state proof key (if any)

#### Defined in

client/v2/indexer/models/types.ts:517

___

### voteFirstValid

• **voteFirstValid**: `number` \| `bigint`

First round for which this participation is valid.

#### Defined in

client/v2/indexer/models/types.ts:497

___

### voteKeyDilution

• **voteKeyDilution**: `number` \| `bigint`

Number of subkeys in each batch of participation keys.

#### Defined in

client/v2/indexer/models/types.ts:502

___

### voteLastValid

• **voteLastValid**: `number` \| `bigint`

Last round for which this participation is valid.

#### Defined in

client/v2/indexer/models/types.ts:507

___

### voteParticipationKey

• **voteParticipationKey**: `Uint8Array`

root participation public key (if any) currently registered for this round.

#### Defined in

client/v2/indexer/models/types.ts:512

## Methods

### get\_obj\_for\_encoding

▸ **get_obj_for_encoding**(`binary?`): `Record`\<`string`, `any`\>

Get an object ready for encoding to either JSON or msgpack.

#### Parameters

| Name | Type | Default value | Description |
| :------ | :------ | :------ | :------ |
| `binary` | `boolean` | `false` | Use true to indicate that the encoding can handle raw binary objects (Uint8Arrays). Use false to indicate that raw binary objects should be converted to base64 strings. True should be used for objects that will be encoded with msgpack, and false should be used for objects that will be encoded with JSON. |

#### Returns

`Record`\<`string`, `any`\>

#### Inherited from

BaseModel.get\_obj\_for\_encoding

#### Defined in

client/v2/basemodel.ts:65

___

### from\_obj\_for\_encoding

▸ `Static` **from_obj_for_encoding**(`data`): [`AccountParticipation`](indexerModels.AccountParticipation.md)

#### Parameters

| Name | Type |
| :------ | :------ |
| `data` | `Record`\<`string`, `any`\> |

#### Returns

[`AccountParticipation`](indexerModels.AccountParticipation.md)

#### Defined in

client/v2/indexer/models/types.ts:571

```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy-categories/arcs.json:
--------------------------------------------------------------------------------

```json
{
  "name": "Algorand Request for Comments",
  "description": "Specifications and standards for the Algorand blockchain",
  "path": "arcs",
  "documents": [
    {
      "name": "README",
      "description": "Overview of arcs",
      "path": "arcs:README.md"
    },
    {
      "name": "ARC Template",
      "description": "Template for creating new arcs",
      "path": "arcs:ARC-template.md"
    }
  ],
  "subcategories": {
    "specs": {
      "name": "Specifications",
      "description": "Individual ARC specifications",
      "path": "arcs:specs",
      "documents": [
        {"name": "ARC-0000", "path": "arcs:specs:arc-0000.md"},
        {"name": "ARC-0001", "path": "arcs:specs:arc-0001.md"},
        {"name": "ARC-0002", "path": "arcs:specs:arc-0002.md"},
        {"name": "ARC-0003", "path": "arcs:specs:arc-0003.md"},
        {"name": "ARC-0004", "path": "arcs:specs:arc-0004.md"},
        {"name": "ARC-0005", "path": "arcs:specs:arc-0005.md"},
        {"name": "ARC-0006", "path": "arcs:specs:arc-0006.md"},
        {"name": "ARC-0007", "path": "arcs:specs:arc-0007.md"},
        {"name": "ARC-0008", "path": "arcs:specs:arc-0008.md"},
        {"name": "ARC-0009", "path": "arcs:specs:arc-0009.md"},
        {"name": "ARC-0010", "path": "arcs:specs:arc-0010.md"},
        {"name": "ARC-0011", "path": "arcs:specs:arc-0011.md"},
        {"name": "ARC-0012", "path": "arcs:specs:arc-0012.md"},
        {"name": "ARC-0015", "path": "arcs:specs:arc-0015.md"},
        {"name": "ARC-0016", "path": "arcs:specs:arc-0016.md"},
        {"name": "ARC-0018", "path": "arcs:specs:arc-0018.md"},
        {"name": "ARC-0019", "path": "arcs:specs:arc-0019.md"},
        {"name": "ARC-0020", "path": "arcs:specs:arc-0020.md"},
        {"name": "ARC-0021", "path": "arcs:specs:arc-0021.md"},
        {"name": "ARC-0022", "path": "arcs:specs:arc-0022.md"},
        {"name": "ARC-0023", "path": "arcs:specs:arc-0023.md"},
        {"name": "ARC-0025", "path": "arcs:specs:arc-0025.md"},
        {"name": "ARC-0026", "path": "arcs:specs:arc-0026.md"},
        {"name": "ARC-0028", "path": "arcs:specs:arc-0028.md"},
        {"name": "ARC-0032", "path": "arcs:specs:arc-0032.md"},
        {"name": "ARC-0033", "path": "arcs:specs:arc-0033.md"},
        {"name": "ARC-0034", "path": "arcs:specs:arc-0034.md"},
        {"name": "ARC-0035", "path": "arcs:specs:arc-0035.md"},
        {"name": "ARC-0036", "path": "arcs:specs:arc-0036.md"},
        {"name": "ARC-0042", "path": "arcs:specs:arc-0042.md"},
        {"name": "ARC-0047", "path": "arcs:specs:arc-0047.md"},
        {"name": "ARC-0048", "path": "arcs:specs:arc-0048.md"},
        {"name": "ARC-0049", "path": "arcs:specs:arc-0049.md"},
        {"name": "ARC-0054", "path": "arcs:specs:arc-0054.md"},
        {"name": "ARC-0055", "path": "arcs:specs:arc-0055.md"},
        {"name": "ARC-0056", "path": "arcs:specs:arc-0056.md"},
        {"name": "ARC-0059", "path": "arcs:specs:arc-0059.md"},
        {"name": "ARC-0062", "path": "arcs:specs:arc-0062.md"},
        {"name": "ARC-0065", "path": "arcs:specs:arc-0065.md"},
        {"name": "ARC-0069", "path": "arcs:specs:arc-0069.md"},
        {"name": "ARC-0072", "path": "arcs:specs:arc-0072.md"},
        {"name": "ARC-0073", "path": "arcs:specs:arc-0073.md"},
        {"name": "ARC-0074", "path": "arcs:specs:arc-0074.md"},
        {"name": "ARC-0076", "path": "arcs:specs:arc-0076.md"},
        {"name": "ARC-0078", "path": "arcs:specs:arc-0078.md"},
        {"name": "ARC-0079", "path": "arcs:specs:arc-0079.md"},
        {"name": "ARC-0200", "path": "arcs:specs:arc-0200.md"}
      ]
    },
    "assets": {
      "name": "Assets",
      "description": "Asset-related ARC resources",
      "path": "arcs:assets",
      "documents": [
        {"name": "ARC-0012 README", "path": "arcs:assets:arc-0012:README.md"},
        {"name": "ARC-0062 README", "path": "arcs:assets:arc-0062:README.md"},
        {"name": "ARC-0034 Template Form", "path": "arcs:assets:arc-0034:TemplateForm.md"}
      ]
    },
    "pages": {
      "name": "Pages",
      "description": "Additional ARC documentation pages",
      "path": "arcs:pages",
      "documents": [
        {"name": "NFTs", "path": "arcs:pages:nfts.md"},
        {"name": "Wallets", "path": "arcs:pages:wallets.md"}
      ]
    }
  }
}

```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/developer:python:code:example:struct_in_box.md:
--------------------------------------------------------------------------------

```markdown
# Structs in Box Storage for Algorand Smart Contracts

This guide demonstrates how to use structs with box storage in Algorand smart contracts using Python. Box storage with structs provides a way to store complex data structures efficiently.

## Defining a Struct

```python
from algopy import BoxMap, arc4

class UserStruct(arc4.Struct):
    name: arc4.String
    id: arc4.UInt64
    asset: arc4.UInt64
```

The struct definition includes:
- Type annotations for each field
- ARC4-compatible data types
- Clear field naming

## Implementing Box Storage with Structs

```python
class StructInBoxMap(arc4.ARC4Contract):
    def __init__(self) -> None:
        # Initialize box map with UInt64 keys and UserStruct values
        self.user_map = BoxMap(
            arc4.UInt64,        # Key type
            UserStruct,         # Value type
            key_prefix="users"  # Optional prefix for organization
        )
```

## Basic Operations

### Setting Values

```python
@arc4.abimethod
def box_map_set(self, key: arc4.UInt64, value: UserStruct) -> bool:
    # Always use copy() when storing structs
    self.user_map[key] = value.copy()
    
    # Verify storage
    assert self.user_map[key] == value
    return True

@arc4.abimethod
def box_map_test(self) -> bool:
    key_0 = arc4.UInt64(0)
    
    # Create struct instance
    value = UserStruct(
        arc4.String("testName"),
        arc4.UInt64(70),
        arc4.UInt64(2)
    )

    # Store and verify
    self.user_map[key_0] = value.copy()
    
    # Verify byte length
    assert self.user_map[key_0].bytes.length == value.bytes.length
    assert self.user_map.length(key_0) == value.bytes.length
    return True
```

### Getting Values

```python
@arc4.abimethod
def box_map_get(self, key: arc4.UInt64) -> UserStruct:
    # Retrieve struct from box storage
    return self.user_map[key]
```

### Checking Existence

```python
@arc4.abimethod
def box_map_exists(self, key: arc4.UInt64) -> bool:
    # Check if key exists in box map
    return key in self.user_map
```

## Usage Examples

### Creating and Storing a User

```python
# Create user struct
user = UserStruct(
    name=arc4.String("Alice"),
    id=arc4.UInt64(1),
    asset=arc4.UInt64(100)
)

# Store in box map
key = arc4.UInt64(1)
box_map_set(key, user)
```

### Retrieving User Data

```python
# Get user by key
key = arc4.UInt64(1)
user = box_map_get(key)

# Access struct fields
name = user.name      # arc4.String
user_id = user.id     # arc4.UInt64
asset = user.asset    # arc4.UInt64
```

## Best Practices

1. **Struct Design**:
   - Use appropriate field types
   - Keep structs focused and organized
   - Consider field order for efficiency
   - Document struct purpose and usage

2. **Data Management**:
   - Always use copy() when storing structs
   - Verify stored data after writing
   - Check existence before reading
   - Handle missing data gracefully

3. **Storage Efficiency**:
   - Consider struct size limitations
   - Use appropriate key prefixes
   - Clean up unused storage
   - Monitor storage usage

4. **Type Safety**:
   - Use proper type annotations
   - Verify field types
   - Handle type conversions carefully
   - Test with various data types

5. **Error Handling**:
   - Check for missing keys
   - Validate struct data
   - Handle storage errors
   - Provide clear error messages

6. **Performance**:
   - Minimize storage operations
   - Use efficient data structures
   - Consider storage costs
   - Optimize access patterns

## Common Patterns

1. **User Data Storage**:
```python
user = UserStruct(
    arc4.String("username"),
    arc4.UInt64(user_id),
    arc4.UInt64(balance)
)
```

2. **Batch Operations**:
```python
def update_multiple_users(self, users: list[UserStruct]) -> None:
    for i, user in enumerate(users):
        self.user_map[arc4.UInt64(i)] = user.copy()
```

3. **Data Validation**:
```python
def validate_user(self, user: UserStruct) -> bool:
    return (
        user.name.native != ""
        and user.id.native > 0
        and user.asset.native >= 0
    )
```

This guide demonstrates how to effectively use structs with box storage in Algorand smart contracts. Understanding these concepts is crucial for developing applications that need to store and manage complex data structures efficiently.

```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:code:interfaces:types_transaction.SendTransactionParams.md:
--------------------------------------------------------------------------------

```markdown
[@algorandfoundation/algokit-utils](../README.md) / [types/transaction](../modules/types_transaction.md) / SendTransactionParams

# Interface: SendTransactionParams

[types/transaction](../modules/types_transaction.md).SendTransactionParams

The sending configuration for a transaction

## Hierarchy

- **`SendTransactionParams`**

  ↳ [`AppCallParams`](types_app.AppCallParams.md)

  ↳ [`CreateAssetParams`](types_asset.CreateAssetParams.md)

  ↳ [`AssetOptInParams`](types_asset.AssetOptInParams.md)

  ↳ [`AlgoTransferParams`](types_transfer.AlgoTransferParams.md)

  ↳ [`AlgoRekeyParams`](types_transfer.AlgoRekeyParams.md)

  ↳ [`EnsureFundedParams`](types_transfer.EnsureFundedParams.md)

  ↳ [`TransferAssetParams`](types_transfer.TransferAssetParams.md)

## Table of contents

### Properties

- [atc](types_transaction.SendTransactionParams.md#atc)
- [fee](types_transaction.SendTransactionParams.md#fee)
- [maxFee](types_transaction.SendTransactionParams.md#maxfee)
- [maxRoundsToWaitForConfirmation](types_transaction.SendTransactionParams.md#maxroundstowaitforconfirmation)
- [populateAppCallResources](types_transaction.SendTransactionParams.md#populateappcallresources)
- [skipSending](types_transaction.SendTransactionParams.md#skipsending)
- [skipWaiting](types_transaction.SendTransactionParams.md#skipwaiting)
- [suppressLog](types_transaction.SendTransactionParams.md#suppresslog)

## Properties

### atc

• `Optional` **atc**: `AtomicTransactionComposer`

An optional `AtomicTransactionComposer` to add the transaction to, if specified then `skipSending: undefined` has the same effect as `skipSending: true`

#### Defined in

[src/types/transaction.ts:36](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L36)

___

### fee

• `Optional` **fee**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md)

The flat fee you want to pay, useful for covering extra fees in a transaction group or app call

#### Defined in

[src/types/transaction.ts:40](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L40)

___

### maxFee

• `Optional` **maxFee**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md)

The maximum fee that you are happy to pay (default: unbounded) - if this is set it's possible the transaction could get rejected during network congestion

#### Defined in

[src/types/transaction.ts:42](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L42)

___

### maxRoundsToWaitForConfirmation

• `Optional` **maxRoundsToWaitForConfirmation**: `number`

The maximum number of rounds to wait for confirmation, only applies if `skipWaiting` is `undefined` or `false`, default: wait up to 5 rounds

#### Defined in

[src/types/transaction.ts:44](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L44)

___

### populateAppCallResources

• `Optional` **populateAppCallResources**: `boolean`

Whether to use simulate to automatically populate app call resources in the txn objects. Defaults to true when there are app calls in the group.

#### Defined in

[src/types/transaction.ts:46](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L46)

___

### skipSending

• `Optional` **skipSending**: `boolean`

Whether to skip signing and sending the transaction to the chain (default: transaction signed and sent to chain, unless `atc` specified)
and instead just return the raw transaction, e.g. so you can add it to a group of transactions

#### Defined in

[src/types/transaction.ts:32](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L32)

___

### skipWaiting

• `Optional` **skipWaiting**: `boolean`

Whether to skip waiting for the submitted transaction (only relevant if `skipSending` is `false` or unset)

#### Defined in

[src/types/transaction.ts:34](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L34)

___

### suppressLog

• `Optional` **suppressLog**: `boolean`

Whether to suppress log messages from transaction send, default: do not suppress

#### Defined in

[src/types/transaction.ts:38](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L38)

```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:modelsv2.DryrunRequest.md:
--------------------------------------------------------------------------------

```markdown
[algosdk](../README.md) / [Exports](../modules.md) / [modelsv2](../modules/modelsv2.md) / DryrunRequest

# Class: DryrunRequest

[modelsv2](../modules/modelsv2.md).DryrunRequest

Request data type for dryrun endpoint. Given the Transactions and simulated
ledger state upload, run TEAL scripts and return debugging information.

## Hierarchy

- `default`

  ↳ **`DryrunRequest`**

## Table of contents

### Constructors

- [constructor](modelsv2.DryrunRequest.md#constructor)

### Properties

- [accounts](modelsv2.DryrunRequest.md#accounts)
- [apps](modelsv2.DryrunRequest.md#apps)
- [attribute\_map](modelsv2.DryrunRequest.md#attribute_map)
- [latestTimestamp](modelsv2.DryrunRequest.md#latesttimestamp)
- [protocolVersion](modelsv2.DryrunRequest.md#protocolversion)
- [round](modelsv2.DryrunRequest.md#round)
- [sources](modelsv2.DryrunRequest.md#sources)
- [txns](modelsv2.DryrunRequest.md#txns)

### Methods

- [get\_obj\_for\_encoding](modelsv2.DryrunRequest.md#get_obj_for_encoding)
- [from\_obj\_for\_encoding](modelsv2.DryrunRequest.md#from_obj_for_encoding)

## Constructors

### constructor

• **new DryrunRequest**(`«destructured»`)

Creates a new `DryrunRequest` object.

#### Parameters

| Name | Type |
| :------ | :------ |
| `«destructured»` | `Object` |
| › `accounts` | [`Account`](modelsv2.Account.md)[] |
| › `apps` | [`Application`](modelsv2.Application.md)[] |
| › `latestTimestamp` | `number` \| `bigint` |
| › `protocolVersion` | `string` |
| › `round` | `number` \| `bigint` |
| › `sources` | [`DryrunSource`](modelsv2.DryrunSource.md)[] |
| › `txns` | [`EncodedSignedTransaction`](../interfaces/EncodedSignedTransaction.md)[] |

#### Overrides

BaseModel.constructor

#### Defined in

client/v2/algod/models/types.ts:2647

## Properties

### accounts

• **accounts**: [`Account`](modelsv2.Account.md)[]

#### Defined in

client/v2/algod/models/types.ts:2608

___

### apps

• **apps**: [`Application`](modelsv2.Application.md)[]

#### Defined in

client/v2/algod/models/types.ts:2610

___

### attribute\_map

• **attribute\_map**: `Record`\<`string`, `string`\>

#### Inherited from

BaseModel.attribute\_map

#### Defined in

client/v2/basemodel.ts:56

___

### latestTimestamp

• **latestTimestamp**: `number` \| `bigint`

LatestTimestamp is available to some TEAL scripts. Defaults to the latest
confirmed timestamp this algod is attached to.

#### Defined in

client/v2/algod/models/types.ts:2616

___

### protocolVersion

• **protocolVersion**: `string`

ProtocolVersion specifies a specific version string to operate under, otherwise
whatever the current protocol of the network this algod is running in.

#### Defined in

client/v2/algod/models/types.ts:2622

___

### round

• **round**: `number` \| `bigint`

Round is available to some TEAL scripts. Defaults to the current round on the
network this algod is attached to.

#### Defined in

client/v2/algod/models/types.ts:2628

___

### sources

• **sources**: [`DryrunSource`](modelsv2.DryrunSource.md)[]

#### Defined in

client/v2/algod/models/types.ts:2630

___

### txns

• **txns**: [`EncodedSignedTransaction`](../interfaces/EncodedSignedTransaction.md)[]

#### Defined in

client/v2/algod/models/types.ts:2632

## Methods

### get\_obj\_for\_encoding

▸ **get_obj_for_encoding**(`binary?`): `Record`\<`string`, `any`\>

Get an object ready for encoding to either JSON or msgpack.

#### Parameters

| Name | Type | Default value | Description |
| :------ | :------ | :------ | :------ |
| `binary` | `boolean` | `false` | Use true to indicate that the encoding can handle raw binary objects (Uint8Arrays). Use false to indicate that raw binary objects should be converted to base64 strings. True should be used for objects that will be encoded with msgpack, and false should be used for objects that will be encoded with JSON. |

#### Returns

`Record`\<`string`, `any`\>

#### Inherited from

BaseModel.get\_obj\_for\_encoding

#### Defined in

client/v2/basemodel.ts:65

___

### from\_obj\_for\_encoding

▸ `Static` **from_obj_for_encoding**(`data`): [`DryrunRequest`](modelsv2.DryrunRequest.md)

#### Parameters

| Name | Type |
| :------ | :------ |
| `data` | `Record`\<`string`, `any`\> |

#### Returns

[`DryrunRequest`](modelsv2.DryrunRequest.md)

#### Defined in

client/v2/algod/models/types.ts:2685

```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/algokit:cli:features:tasks:mint.md:
--------------------------------------------------------------------------------

```markdown
# AlgoKit Task Mint

The AlgoKit Mint feature allows you to mint new fungible or non-fungible assets on the Algorand blockchain. This feature supports the creation of assets, validation of asset parameters, and uploading of asset metadata and image to IPFS using the Piñata provider. Immutable assets are compliant with [ARC3](https://arc.algorand.foundation/ARCs/arc-0003), while mutable are based using [ARC19](https://arc.algorand.foundation/ARCs/arc-0019) standard.

## Usage

Available commands and possible usage as follows:

```bash
Usage: algokit task mint [OPTIONS]

  Mint new fungible or non-fungible assets on Algorand.

Options:
  --creator TEXT                  Address or alias of the asset creator.  [required]
  -n, --name TEXT                 Asset name.  [required]
  -u, --unit TEXT                 Unit name of the asset.  [required]
  -t, --total INTEGER             Total supply of the asset. Defaults to 1.
  -d, --decimals INTEGER          Number of decimals. Defaults to 0.
  -i, --image FILE                Path to the asset image file to be uploaded to IPFS.  [required]
  -m, --metadata FILE             Path to the ARC19 compliant asset metadata file to be uploaded to IPFS. If not
                                  provided, a default metadata object will be generated automatically based on asset-
                                  name, decimals and image. For more details refer to
                                  https://arc.algorand.foundation/ARCs/arc-0003#json-metadata-file-schema.
  --mutable / --immutable         Whether the asset should be mutable or immutable. Refers to `ARC19` by default.
  --nft / --ft                    Whether the asset should be validated as NFT or FT. Refers to NFT by default and
                                  validates canonical definitions of pure or fractional NFTs as per ARC3 standard.
  -n, --network [localnet|testnet|mainnet]
                                  Network to use. Refers to `localnet` by default.
  -h, --help                      Show this message and exit.
```

## Options

- `--creator TEXT`: Specifies the address or alias of the asset creator. This option is required.
- `-n, --name TEXT`: Specifies the asset name. This option is required.
- `-u, --unit TEXT`: Specifies the unit name of the asset. This option is required.
- `-t, --total INTEGER`: Specifies the total supply of the asset. Defaults to 1.
- `-d, --decimals INTEGER`: Specifies the number of decimals. Defaults to 0.
- `-i, --image PATH`: Specifies the path to the asset image file to be uploaded to IPFS. This option is required.
- `-m, --metadata PATH`: Specifies the path to the ARC19 compliant asset metadata file to be uploaded to IPFS. If not provided, a default metadata object will be generated automatically based on asset-name, decimals and image.
- `--mutable / --immutable`: Specifies whether the asset should be mutable or immutable. Refers to `ARC19` by default.
- `--nft / --ft`: Specifies whether the asset should be validated as NFT or FT. Refers to NFT by default and validates canonical definitions of pure or fractional NFTs as per ARC3 standard.
- `-n, --network [localnet|testnet|mainnet]`: Specifies the network to use. Refers to `localnet` by default.

## Example

To mint a new asset in interactive mode, you can use the mint command as follows:

```bash
$ algokit task mint
```

This will interactively prompt you for the required information, upload the asset image and metadata to IPFS using the Piñata provider and mint a new asset on the Algorand blockchain. The [asset's metadata](https://arc.algorand.foundation/ARCs/arc-0003#json-metadata-file-schema) will be generated automatically based on the provided asset name, decimals, and image.

If you want to provide a custom metadata file, you can use the --metadata flag:

```bash
$ algokit task mint --metadata {PATH_TO_METADATA}
```

If the minting process is successful, the asset ID and transaction ID will be output to the console.

For non interactive mode, refer to usage section above for available options.

> Please note, creator account must have at least 0.2 Algos available to cover minimum balance requirements.

## Further Reading

For in-depth details, visit the [mint section](../../cli/index.md#mint) in the AlgoKit CLI reference documentation.

```

--------------------------------------------------------------------------------
/llms-install.md:
--------------------------------------------------------------------------------

```markdown
# Algorand MCP Server Installation Guide

This guide is specifically designed for AI agents like Cursor and Claude Desktop to install and configure the Algorand MCP server for use with LLM applications like Claude Desktop, Cursor and Roo Code.

## Overview

The Algorand MCP server provides a comprehensive set of tools and resources for interacting with the Algorand blockchain through the Model Context Protocol (MCP). It enables AI assistants to perform operations like creating accounts, managing assets, deploying smart contracts, and executing transactions on the Algorand network.

## Prerequisites

Before installation, you need:

1. Node.js v23.6.1 or later
2. npm v10.2.4 or later
3. Access to Algorand node (mainnet or testnet)

## Installation and Configuration

### Configure MCP Settings

Add the Algorand MCP server configuration to your MCP settings file based on your LLM client:

#### Configuration File Locations

Add configuration to your chosen client's MCP settings file:

```json
{
  "mcpServers": {
    "algorand": {
      "command": "node",
      "args": ["/path/to/algorand-mcp/packages/server/dist/index.js"],
      "disabled": false,
      "autoApprove": [],
      "env": {
        "ALGORAND_NETWORK": "testnet",
        "ALGORAND_ALGOD_API": "https://testnet-api.algonode.cloud/v2",
        "ALGORAND_ALGOD": "https://testnet-api.algonode.cloud",
        "ALGORAND_INDEXER_API": "https://testnet-idx.algonode.cloud/v2",
        "ALGORAND_INDEXER": "https://testnet-idx.algonode.cloud",
        "ITEMS_PER_PAGE": "10",
        "ALGORAND_AGENT_WALLET": ""
      }
    }
  }
}
```

Replace `/path/to/algorand-mcp` with the actual path where the server is installed.

## Tool Categories

### 1. Transaction Tools
- Account Transactions (payments, key registration)
- Asset Transactions (create, configure, transfer)
- Application Transactions (deploy, update, call)
- General Transaction Tools (signing, grouping)

### 2. API Tools
- Algod API (node interaction, account info)
- Indexer API (blockchain queries, history)

### 3. Utility Tools
- Address Management
- Byte Conversion
- Application Tools

### 4. ARC-26 Tools
- URI Generation
- QR Code Creation

## Verify Installation

To verify the installation is working:

1. Restart your LLM application (Cursor, Claude Desktop, etc.)

2. Test Transaction Tools:
   ```
   Create a payment transaction using the transaction tools.
   ```

3. Test API Tools:
   ```
   Get account information using the Algod API tools.
   ```

4. Test Utility Tools:
   ```
   Validate an Algorand address using the utility tools.
   ```

5. Test Resources:
   ```
   Access wallet information using the wallet resources.
   ```

## Available Resources

### Wallet Resources
- Secret/Public Key Management
- Mnemonic Access
- Address Management
- Balance/Asset Tracking

### Knowledge Resources
- Algorand Documentation
- Development Guides
- SDK References
- Best Practices

## Troubleshooting

### Common Issues and Solutions

1. **Node Connection Issues**
   - Verify Algorand node URLs are correct
   - Check network selection (mainnet/testnet)
   - Ensure node is accessible

2. **Transaction Failures**
   - Verify account has sufficient funds
   - Check transaction parameters
   - Validate asset configurations

3. **Resource Access Issues**
   - Verify wallet configuration
   - Check environment variables
   - Validate resource URIs

### Tool-Specific Issues

#### Transaction Tools
- Group size limits
- Proper transaction ordering
- Signature requirements

#### API Tools
- Rate limiting considerations
- Response pagination
- Error handling

#### Utility Tools
- Input validation
- Encoding formats
- Type conversions

## Security Considerations

1. **Wallet Security**
   - Secure storage of mnemonics
   - Key management best practices
   - Access control

2. **Transaction Safety**
   - Parameter validation
   - Amount verification
   - Asset verification

3. **API Security**
   - Node authentication
   - Request validation
   - Error handling

## Additional Information

For more detailed information:
- [Visit the Algorand MCP Smithery](https://smithery.ai/server/@GoPlausible/algorand-mcp)
- Check the [Algorand MCP Server Documentation](https://github.com/GoPlausible/algorand-mcp)
- Visit the builder's website at [GoPlausible](https://goplausible.com/)

```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:modules:indexerModels.md:
--------------------------------------------------------------------------------

```markdown
[algosdk](../README.md) / [Exports](../modules.md) / indexerModels

# Namespace: indexerModels

## Table of contents

### Classes

- [Account](../classes/indexerModels.Account.md)
- [AccountParticipation](../classes/indexerModels.AccountParticipation.md)
- [AccountResponse](../classes/indexerModels.AccountResponse.md)
- [AccountStateDelta](../classes/indexerModels.AccountStateDelta.md)
- [AccountsResponse](../classes/indexerModels.AccountsResponse.md)
- [Application](../classes/indexerModels.Application.md)
- [ApplicationLocalState](../classes/indexerModels.ApplicationLocalState.md)
- [ApplicationLocalStatesResponse](../classes/indexerModels.ApplicationLocalStatesResponse.md)
- [ApplicationLogData](../classes/indexerModels.ApplicationLogData.md)
- [ApplicationLogsResponse](../classes/indexerModels.ApplicationLogsResponse.md)
- [ApplicationParams](../classes/indexerModels.ApplicationParams.md)
- [ApplicationResponse](../classes/indexerModels.ApplicationResponse.md)
- [ApplicationStateSchema](../classes/indexerModels.ApplicationStateSchema.md)
- [ApplicationsResponse](../classes/indexerModels.ApplicationsResponse.md)
- [Asset](../classes/indexerModels.Asset.md)
- [AssetBalancesResponse](../classes/indexerModels.AssetBalancesResponse.md)
- [AssetHolding](../classes/indexerModels.AssetHolding.md)
- [AssetHoldingsResponse](../classes/indexerModels.AssetHoldingsResponse.md)
- [AssetParams](../classes/indexerModels.AssetParams.md)
- [AssetResponse](../classes/indexerModels.AssetResponse.md)
- [AssetsResponse](../classes/indexerModels.AssetsResponse.md)
- [Block](../classes/indexerModels.Block.md)
- [BlockRewards](../classes/indexerModels.BlockRewards.md)
- [BlockUpgradeState](../classes/indexerModels.BlockUpgradeState.md)
- [BlockUpgradeVote](../classes/indexerModels.BlockUpgradeVote.md)
- [Box](../classes/indexerModels.Box.md)
- [BoxDescriptor](../classes/indexerModels.BoxDescriptor.md)
- [BoxesResponse](../classes/indexerModels.BoxesResponse.md)
- [ErrorResponse](../classes/indexerModels.ErrorResponse.md)
- [EvalDelta](../classes/indexerModels.EvalDelta.md)
- [EvalDeltaKeyValue](../classes/indexerModels.EvalDeltaKeyValue.md)
- [HashFactory](../classes/indexerModels.HashFactory.md)
- [HealthCheck](../classes/indexerModels.HealthCheck.md)
- [IndexerStateProofMessage](../classes/indexerModels.IndexerStateProofMessage.md)
- [MerkleArrayProof](../classes/indexerModels.MerkleArrayProof.md)
- [MiniAssetHolding](../classes/indexerModels.MiniAssetHolding.md)
- [ParticipationUpdates](../classes/indexerModels.ParticipationUpdates.md)
- [StateProofFields](../classes/indexerModels.StateProofFields.md)
- [StateProofParticipant](../classes/indexerModels.StateProofParticipant.md)
- [StateProofReveal](../classes/indexerModels.StateProofReveal.md)
- [StateProofSigSlot](../classes/indexerModels.StateProofSigSlot.md)
- [StateProofSignature](../classes/indexerModels.StateProofSignature.md)
- [StateProofTracking](../classes/indexerModels.StateProofTracking.md)
- [StateProofVerifier](../classes/indexerModels.StateProofVerifier.md)
- [StateSchema](../classes/indexerModels.StateSchema.md)
- [TealKeyValue](../classes/indexerModels.TealKeyValue.md)
- [TealValue](../classes/indexerModels.TealValue.md)
- [Transaction](../classes/indexerModels.Transaction.md)
- [TransactionApplication](../classes/indexerModels.TransactionApplication.md)
- [TransactionAssetConfig](../classes/indexerModels.TransactionAssetConfig.md)
- [TransactionAssetFreeze](../classes/indexerModels.TransactionAssetFreeze.md)
- [TransactionAssetTransfer](../classes/indexerModels.TransactionAssetTransfer.md)
- [TransactionKeyreg](../classes/indexerModels.TransactionKeyreg.md)
- [TransactionPayment](../classes/indexerModels.TransactionPayment.md)
- [TransactionResponse](../classes/indexerModels.TransactionResponse.md)
- [TransactionSignature](../classes/indexerModels.TransactionSignature.md)
- [TransactionSignatureLogicsig](../classes/indexerModels.TransactionSignatureLogicsig.md)
- [TransactionSignatureMultisig](../classes/indexerModels.TransactionSignatureMultisig.md)
- [TransactionSignatureMultisigSubsignature](../classes/indexerModels.TransactionSignatureMultisigSubsignature.md)
- [TransactionStateProof](../classes/indexerModels.TransactionStateProof.md)
- [TransactionsResponse](../classes/indexerModels.TransactionsResponse.md)

```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/SDKs:python:README.md:
--------------------------------------------------------------------------------

```markdown
# py-algorand-sdk

[![PyPI version](https://badge.fury.io/py/py-algorand-sdk.svg)](https://badge.fury.io/py/py-algorand-sdk)
[![Documentation Status](https://readthedocs.org/projects/py-algorand-sdk/badge/?version=latest&style=flat)](https://py-algorand-sdk.readthedocs.io/en/latest)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)

A python library for interacting with the Algorand network.

## Installation

Run `$ pip3 install py-algorand-sdk` to install the package.

Alternatively, choose a [distribution file](https://pypi.org/project/py-algorand-sdk/#files), and run `$ pip3 install [file name]`.

## Supported Python versions

py-algorand-sdk's minimum Python version policy attempts to balance several constraints.

* Make it easy for the community to use py-algorand-sdk by minimizing or excluding the need to customize Python installations.
* Provide maintainers with access to newer language features that produce more robust software.

Given these constraints, the minimum Python version policy is:
Target Python version on newest [Ubuntu LTS](https://wiki.ubuntu.com/Releases) released >= 6 months ago.

The rationale is:

* If a major Linux OS distribution bumps a Python version, then it's sufficiently available to the community for us to upgrade.
* The 6 month time buffer ensures we delay upgrades until the community starts using a recently released LTS version.

## SDK Development

Install dependencies

* `pip3 install -r requirements.txt`

Run tests

* `make docker-test`

Set up the Algorand Sandbox based test-harness without running the tests

* `make harness`

Format code

* `black .`

Update `algosdk/__init__.pyi` which allows downstream developers importing `algosdk` and using VSCode's PyLance to have improved type analysis

* `make generate-init`

Lint types

* `make mypy` (or `mypy algosdk`)

Check all lints required by the C.I. process

* `make lint`

Run non-test-harness related unit tests

* `make pytest-unit`

We use cucumber testing for all of our SDKs, including this one. Please refer to [algorand-sdk-testing](https://github.com/algorand/algorand-sdk-testing#readme) for guidance and existing tests that you may need to update. Depending on the type of update you wish to contribute, you may also need to have corresponding updates in the other SDKs (Go, JS, and Java). Feel welcome to ask for collaboration on that front. 

## Quick start

Here's a simple example you can run without a node.

```python
from algosdk import account, encoding

# generate an account
private_key, address = account.generate_account()
print("Private key:", private_key)
print("Address:", address)

# check if the address is valid
if encoding.is_valid_address(address):
    print("The address is valid!")
else:
    print("The address is invalid.")
```

## Node setup

Follow the instructions in Algorand's [developer resources](https://developer.algorand.org/docs/run-a-node/setup/install/) to install a node on your computer.
You can also set up a local [Algorand Sandbox](https://github.com/algorand/sandbox) with `make harness`.

## Running examples/example.py

Before running [example.py](https://github.com/algorand/py-algorand-sdk/blob/master/examples/example.py), start kmd on a private network or testnet node:

```bash
./goal kmd start -d [data directory]
```

Next, create a wallet and an account:

```bash
./goal wallet new [wallet name] -d [data directory]
```

```bash
./goal account new -d [data directory] -w [wallet name]
```

Visit the [Algorand dispenser](https://bank.testnet.algorand.network/) and enter the account address to fund your account.

Next, in [tokens.py](https://github.com/algorand/py-algorand-sdk/blob/master/examples/tokens.py), either update the tokens and addresses, or provide a path to the data directory. Alternatively, `tokens.py` also defaults to the sandbox harness configurations for algod and kmd, which can be brought up by running `make harness`.

You're now ready to run example.py!

## Documentation

Documentation for the Python SDK is available at [py-algorand-sdk.readthedocs.io](https://py-algorand-sdk.readthedocs.io/en/latest/).

## License

py-algorand-sdk is licensed under an MIT license. See the [LICENSE](https://github.com/algorand/py-algorand-sdk/blob/master/LICENSE) file for details.

```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:modelsv2.SimulationOpcodeTraceUnit.md:
--------------------------------------------------------------------------------

```markdown
[algosdk](../README.md) / [Exports](../modules.md) / [modelsv2](../modules/modelsv2.md) / SimulationOpcodeTraceUnit

# Class: SimulationOpcodeTraceUnit

[modelsv2](../modules/modelsv2.md).SimulationOpcodeTraceUnit

The set of trace information and effect from evaluating a single opcode.

## Hierarchy

- `default`

  ↳ **`SimulationOpcodeTraceUnit`**

## Table of contents

### Constructors

- [constructor](modelsv2.SimulationOpcodeTraceUnit.md#constructor)

### Properties

- [attribute\_map](modelsv2.SimulationOpcodeTraceUnit.md#attribute_map)
- [pc](modelsv2.SimulationOpcodeTraceUnit.md#pc)
- [scratchChanges](modelsv2.SimulationOpcodeTraceUnit.md#scratchchanges)
- [spawnedInners](modelsv2.SimulationOpcodeTraceUnit.md#spawnedinners)
- [stackAdditions](modelsv2.SimulationOpcodeTraceUnit.md#stackadditions)
- [stackPopCount](modelsv2.SimulationOpcodeTraceUnit.md#stackpopcount)
- [stateChanges](modelsv2.SimulationOpcodeTraceUnit.md#statechanges)

### Methods

- [get\_obj\_for\_encoding](modelsv2.SimulationOpcodeTraceUnit.md#get_obj_for_encoding)
- [from\_obj\_for\_encoding](modelsv2.SimulationOpcodeTraceUnit.md#from_obj_for_encoding)

## Constructors

### constructor

• **new SimulationOpcodeTraceUnit**(`«destructured»`)

Creates a new `SimulationOpcodeTraceUnit` object.

#### Parameters

| Name | Type |
| :------ | :------ |
| `«destructured»` | `Object` |
| › `pc` | `number` \| `bigint` |
| › `scratchChanges?` | [`ScratchChange`](modelsv2.ScratchChange.md)[] |
| › `spawnedInners?` | (`number` \| `bigint`)[] |
| › `stackAdditions?` | [`AvmValue`](modelsv2.AvmValue.md)[] |
| › `stackPopCount?` | `number` \| `bigint` |
| › `stateChanges?` | [`ApplicationStateOperation`](modelsv2.ApplicationStateOperation.md)[] |

#### Overrides

BaseModel.constructor

#### Defined in

client/v2/algod/models/types.ts:5155

## Properties

### attribute\_map

• **attribute\_map**: `Record`\<`string`, `string`\>

#### Inherited from

BaseModel.attribute\_map

#### Defined in

client/v2/basemodel.ts:56

___

### pc

• **pc**: `number` \| `bigint`

The program counter of the current opcode being evaluated.

#### Defined in

client/v2/algod/models/types.ts:5119

___

### scratchChanges

• `Optional` **scratchChanges**: [`ScratchChange`](modelsv2.ScratchChange.md)[]

The writes into scratch slots.

#### Defined in

client/v2/algod/models/types.ts:5124

___

### spawnedInners

• `Optional` **spawnedInners**: (`number` \| `bigint`)[]

The indexes of the traces for inner transactions spawned by this opcode, if any.

#### Defined in

client/v2/algod/models/types.ts:5129

___

### stackAdditions

• `Optional` **stackAdditions**: [`AvmValue`](modelsv2.AvmValue.md)[]

The values added by this opcode to the stack.

#### Defined in

client/v2/algod/models/types.ts:5134

___

### stackPopCount

• `Optional` **stackPopCount**: `number` \| `bigint`

The number of deleted stack values by this opcode.

#### Defined in

client/v2/algod/models/types.ts:5139

___

### stateChanges

• `Optional` **stateChanges**: [`ApplicationStateOperation`](modelsv2.ApplicationStateOperation.md)[]

The operations against the current application's states.

#### Defined in

client/v2/algod/models/types.ts:5144

## Methods

### get\_obj\_for\_encoding

▸ **get_obj_for_encoding**(`binary?`): `Record`\<`string`, `any`\>

Get an object ready for encoding to either JSON or msgpack.

#### Parameters

| Name | Type | Default value | Description |
| :------ | :------ | :------ | :------ |
| `binary` | `boolean` | `false` | Use true to indicate that the encoding can handle raw binary objects (Uint8Arrays). Use false to indicate that raw binary objects should be converted to base64 strings. True should be used for objects that will be encoded with msgpack, and false should be used for objects that will be encoded with JSON. |

#### Returns

`Record`\<`string`, `any`\>

#### Inherited from

BaseModel.get\_obj\_for\_encoding

#### Defined in

client/v2/basemodel.ts:65

___

### from\_obj\_for\_encoding

▸ `Static` **from_obj_for_encoding**(`data`): [`SimulationOpcodeTraceUnit`](modelsv2.SimulationOpcodeTraceUnit.md)

#### Parameters

| Name | Type |
| :------ | :------ |
| `data` | `Record`\<`string`, `any`\> |

#### Returns

[`SimulationOpcodeTraceUnit`](modelsv2.SimulationOpcodeTraceUnit.md)

#### Defined in

client/v2/algod/models/types.ts:5189

```
Page 12/74FirstPrevNextLast