#
tokens: 48264/50000 14/942 files (page 22/93)
lines: on (toggle) GitHub
raw markdown copy reset
This is page 22 of 93. Use http://codebase.md/goplausible/algorand-mcp?lines=true&page={x} to view the full context.

# Directory Structure

```
├── .gitignore
├── CONTRIBUTING.md
├── LICENSE
├── llms-install.md
├── llms.txt
├── package.json
├── packages
│   ├── client
│   │   ├── .env.example
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── src
│   │   │   ├── env.ts
│   │   │   ├── index.ts
│   │   │   └── LocalWallet.ts
│   │   └── tsconfig.json
│   └── server
│       ├── .env.example
│       ├── API specs
│       │   ├── algod_api.json
│       │   ├── indexer_api.json
│       │   ├── mcp.json
│       │   ├── nfd_api.json
│       │   ├── ultrade_api.json
│       │   ├── vestige_api.json
│       │   └── vestige_free_api.json
│       ├── Dockerfile
│       ├── jest.config.js
│       ├── package.json
│       ├── README.md
│       ├── smithery.yaml
│       ├── src
│       │   ├── algorand-client.ts
│       │   ├── env.ts
│       │   ├── index.ts
│       │   ├── resources
│       │   │   ├── index.ts
│       │   │   ├── knowledge
│       │   │   │   ├── ARCs.txt
│       │   │   │   ├── developers-algokit-architecture-decisions.txt
│       │   │   │   ├── developers-algokit-cli.txt
│       │   │   │   ├── developers-algokit-utils-python.txt
│       │   │   │   ├── developers-algokit-utils-typescript.txt
│       │   │   │   ├── developers-clis.txt
│       │   │   │   ├── developers-details.txt
│       │   │   │   ├── developers-liquid-auth.txt
│       │   │   │   ├── developers-nodes.txt
│       │   │   │   ├── developers-puya.txt
│       │   │   │   ├── developers-python.txt
│       │   │   │   ├── developers-sdks-js.txt
│       │   │   │   ├── developers-sdks-python.txt
│       │   │   │   ├── developers-tealscript.txt
│       │   │   │   ├── developers.txt
│       │   │   │   ├── index.ts
│       │   │   │   ├── taxonomy
│       │   │   │   │   ├── algokit-cli:README.md
│       │   │   │   │   ├── algokit:cli:algokit.md
│       │   │   │   │   ├── algokit:cli:architecture-decisions:2022-11-14_sandbox-approach.md
│       │   │   │   │   ├── algokit:cli:architecture-decisions:2022-11-22_beaker-testing-strategy.md
│       │   │   │   │   ├── algokit:cli:architecture-decisions:2023-01-11_beaker_productionisation_review.md
│       │   │   │   │   ├── algokit:cli:architecture-decisions:2023-01-11_brew_install.md
│       │   │   │   │   ├── algokit:cli:architecture-decisions:2023-01-12_smart-contract-deployment.md
│       │   │   │   │   ├── algokit:cli:architecture-decisions:2023-06-06_frontend-templates.md
│       │   │   │   │   ├── algokit:cli:architecture-decisions:2023-07-19_advanced_generate_command.md
│       │   │   │   │   ├── algokit:cli:architecture-decisions:2024-01-13_native_binaries.md
│       │   │   │   │   ├── algokit:cli:architecture-decisions:2024-01-23_init-wizard-v2.md
│       │   │   │   │   ├── algokit:cli:architecture-decisions:2024-01-31_binary_distribution.md
│       │   │   │   │   ├── algokit:cli:architecture-decisions:2024-03-06_local_dev_ui_packaging.md
│       │   │   │   │   ├── algokit:cli:articles:output_stability.md
│       │   │   │   │   ├── algokit:cli:cli:index.md
│       │   │   │   │   ├── algokit:cli:features:compile.md
│       │   │   │   │   ├── algokit:cli:features:completions.md
│       │   │   │   │   ├── algokit:cli:features:config.md
│       │   │   │   │   ├── algokit:cli:features:dispenser.md
│       │   │   │   │   ├── algokit:cli:features:doctor.md
│       │   │   │   │   ├── algokit:cli:features:explore.md
│       │   │   │   │   ├── algokit:cli:features:generate.md
│       │   │   │   │   ├── algokit:cli:features:goal.md
│       │   │   │   │   ├── algokit:cli:features:init.md
│       │   │   │   │   ├── algokit:cli:features:localnet.md
│       │   │   │   │   ├── algokit:cli:features:project:bootstrap.md
│       │   │   │   │   ├── algokit:cli:features:project:deploy.md
│       │   │   │   │   ├── algokit:cli:features:project:link.md
│       │   │   │   │   ├── algokit:cli:features:project:list.md
│       │   │   │   │   ├── algokit:cli:features:project:run.md
│       │   │   │   │   ├── algokit:cli:features:project.md
│       │   │   │   │   ├── algokit:cli:features:tasks:analyze.md
│       │   │   │   │   ├── algokit:cli:features:tasks:ipfs.md
│       │   │   │   │   ├── algokit:cli:features:tasks:mint.md
│       │   │   │   │   ├── algokit:cli:features:tasks:nfd.md
│       │   │   │   │   ├── algokit:cli:features:tasks:opt.md
│       │   │   │   │   ├── algokit:cli:features:tasks:send.md
│       │   │   │   │   ├── algokit:cli:features:tasks:sign.md
│       │   │   │   │   ├── algokit:cli:features:tasks:transfer.md
│       │   │   │   │   ├── algokit:cli:features:tasks:vanity_address.md
│       │   │   │   │   ├── algokit:cli:features:tasks:wallet.md
│       │   │   │   │   ├── algokit:cli:features:tasks.md
│       │   │   │   │   ├── algokit:cli:tutorials:algokit-template.md
│       │   │   │   │   ├── algokit:cli:tutorials:intro.md
│       │   │   │   │   ├── algokit:cli:tutorials:smart-contracts.md
│       │   │   │   │   ├── algokit:docs:testnet_api.md
│       │   │   │   │   ├── algokit:lora:README.md
│       │   │   │   │   ├── algokit:README.md
│       │   │   │   │   ├── algokit:utils:python:markdown:apidocs:algokit_utils:algokit_utils.md
│       │   │   │   │   ├── algokit:utils:python:markdown:capabilities:account.md
│       │   │   │   │   ├── algokit:utils:python:markdown:capabilities:app-client.md
│       │   │   │   │   ├── algokit:utils:python:markdown:capabilities:app-deploy.md
│       │   │   │   │   ├── algokit:utils:python:markdown:capabilities:client.md
│       │   │   │   │   ├── algokit:utils:python:markdown:capabilities:debugger.md
│       │   │   │   │   ├── algokit:utils:python:markdown:capabilities:dispenser-client.md
│       │   │   │   │   ├── algokit:utils:python:markdown:capabilities:transfer.md
│       │   │   │   │   ├── algokit:utils:python:markdown:index.md
│       │   │   │   │   ├── algokit:utils:python:README.md
│       │   │   │   │   ├── algokit:utils:python:source:capabilities:account.md
│       │   │   │   │   ├── algokit:utils:python:source:capabilities:app-client.md
│       │   │   │   │   ├── algokit:utils:python:source:capabilities:app-deploy.md
│       │   │   │   │   ├── algokit:utils:python:source:capabilities:client.md
│       │   │   │   │   ├── algokit:utils:python:source:capabilities:debugger.md
│       │   │   │   │   ├── algokit:utils:python:source:capabilities:dispenser-client.md
│       │   │   │   │   ├── algokit:utils:python:source:capabilities:transfer.md
│       │   │   │   │   ├── algokit:utils:python:source:index.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:account.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:algorand-client.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:amount.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:app-client.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:app-deploy.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:app.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:asset.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:client.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:debugging.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:dispenser-client.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:event-emitter.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:indexer.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:testing.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:transaction-composer.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:transaction.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:transfer.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:typed-app-clients.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:testing.TestLogger.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:testing.TransactionLogger.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_account_manager.AccountManager.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_account.MultisigAccount.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_account.SigningAccount.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_algorand_client_transaction_creator.AlgorandClientTransactionCreator.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_algorand_client_transaction_sender.AlgorandClientTransactionSender.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_algorand_client.AlgorandClient.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_amount.AlgoAmount.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_app_arc56.Arc56Method.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_app_client.AppClient.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_app_client.ApplicationClient.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_app_deployer.AppDeployer.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_app_factory.AppFactory.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_app_manager.AppManager.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_asset_manager.AssetManager.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_async_event_emitter.AsyncEventEmitter.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_client_manager.ClientManager.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_composer.TransactionComposer.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_config.UpdatableConfig.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_dispenser_client.TestNetDispenserApiClient.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_kmd_account_manager.KmdAccountManager.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_logic_error.LogicError.md
│       │   │   │   │   ├── algokit:utils:typescript:code:enums:types_app.OnSchemaBreak.md
│       │   │   │   │   ├── algokit:utils:typescript:code:enums:types_app.OnUpdate.md
│       │   │   │   │   ├── algokit:utils:typescript:code:enums:types_indexer.AccountStatus.md
│       │   │   │   │   ├── algokit:utils:typescript:code:enums:types_indexer.ApplicationOnComplete.md
│       │   │   │   │   ├── algokit:utils:typescript:code:enums:types_indexer.SignatureType.md
│       │   │   │   │   ├── algokit:utils:typescript:code:enums:types_lifecycle_events.EventType.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_account_manager.EnsureFundedResult.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_account.AccountConfig.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_account.TransactionSignerAccount.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_algorand_client_interface.AlgorandClientInterface.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_arc56.Arc56Contract.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_arc56.Event.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_arc56.Method.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_arc56.ProgramSourceInfo.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_arc56.StorageKey.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_arc56.StorageMap.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_arc56.StructField.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCallABIArgs.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCallCoreParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCompilationParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCompilationResult.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientDeployCallInterfaceParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientDeployCoreParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientDeployParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_client.AppSourceMaps.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_client.FundAppAccountParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_client.ResolveAppById.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_client.ResolveAppByIdBase.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_client.SourceMapExport.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_deployer.AppLookup.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_deployer.AppMetadata.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_factory.AppFactoryParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_manager.AppInformation.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_manager.BoxReference.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_manager.BoxValueRequestParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_manager.BoxValuesRequestParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_spec.AppSources.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_spec.AppSpec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_spec.CallConfig.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_spec.DeclaredSchemaValueSpec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_spec.Hint.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_spec.ReservedSchemaValueSpec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_spec.Schema.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_spec.SchemaSpec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_spec.StateSchemaSpec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_spec.Struct.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.AppCallParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.AppCallTransactionResultOfType.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.AppCompilationResult.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.AppDeploymentParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.AppDeployMetadata.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.AppLookup.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.AppMetadata.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.AppReference.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.AppState.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.AppStorageSchema.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.BoxName.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.BoxReference.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.BoxValueRequestParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.BoxValuesRequestParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.CompiledTeal.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.CoreAppCallArgs.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.CreateAppParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.RawAppCallArgs.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.TealTemplateParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.UpdateAppParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_asset_manager.AssetInformation.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_asset_manager.BulkAssetOptInOutResult.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_asset.AssetBulkOptInOutParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_asset.AssetOptInParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_asset.AssetOptOutParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_asset.CreateAssetParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_client_manager.AlgoSdkClients.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_client_manager.TypedAppClient.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_client_manager.TypedAppFactory.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_composer.BuiltTransactions.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_config.Config.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_debugging.AVMTracesEventData.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_debugging.TealSourceDebugEventData.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_debugging.TealSourcesDebugEventData.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_dispenser_client.DispenserFundResponse.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_dispenser_client.DispenserLimitResponse.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_dispenser_client.TestNetDispenserApiClientParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_indexer.LookupAssetHoldingsOptions.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_logic_error.LogicErrorDetails.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_network_client.AlgoClientConfig.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_network_client.AlgoConfig.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_network_client.NetworkDetails.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_testing.AlgoKitLogCaptureFixture.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_testing.AlgorandFixture.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_testing.AlgorandFixtureConfig.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_testing.AlgorandTestAutomationContext.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_testing.GetTestAccountParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_testing.LogSnapshotConfig.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transaction.AtomicTransactionComposerToSend.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transaction.ConfirmedTransactionResult.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transaction.ConfirmedTransactionResults.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transaction.SendAtomicTransactionComposerResults.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transaction.SendParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transaction.SendTransactionParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transaction.SendTransactionResult.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transaction.SendTransactionResults.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transaction.TransactionGroupToSend.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transaction.TransactionToSign.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transfer.AlgoRekeyParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transfer.AlgoTransferParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transfer.EnsureFundedParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transfer.EnsureFundedReturnType.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transfer.TransferAssetParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:index.indexer.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:index.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:testing.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_account_manager_spec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_account_manager.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_account.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_algo_http_client_with_retry.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_algorand_client_asset_spec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_algorand_client_interface.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_algorand_client_spec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_algorand_client_transaction_creator.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_algorand_client_transaction_sender.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_algorand_client_transfer_spec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_algorand_client.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_amount_spec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_amount.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_app_arc56.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_app_client_spec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_app_client.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_app_deployer.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_app_factory_and_client_spec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_app_factory.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_app_manager.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_app_spec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_app.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_asset_manager.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_asset.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_async_event_emitter_spec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_async_event_emitter.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_client_manager_spec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_client_manager.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_composer.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_config.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_debugging.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_dispenser_client_spec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_dispenser_client.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_expand.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_indexer.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_kmd_account_manager.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_lifecycle_events.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_logging.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_logic_error.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_network_client.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_testing.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_transaction.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_transfer.md
│       │   │   │   │   ├── algokit:utils:typescript:code:README.md
│       │   │   │   │   ├── algokit:utils:typescript:README.md
│       │   │   │   │   ├── algokit:utils:typescript:v7-migration.md
│       │   │   │   │   ├── algokit:utils:typescript:v8-migration.md
│       │   │   │   │   ├── ARCs:ARC-template.md
│       │   │   │   │   ├── ARCs:assets:arc-0012:README.md
│       │   │   │   │   ├── ARCs:assets:arc-0034:TemplateForm.md
│       │   │   │   │   ├── ARCs:assets:arc-0062:README.md
│       │   │   │   │   ├── ARCs:pages:nfts.md
│       │   │   │   │   ├── ARCs:pages:wallets.md
│       │   │   │   │   ├── ARCs:README.md
│       │   │   │   │   ├── ARCs:specs:arc-0000.md
│       │   │   │   │   ├── ARCs:specs:arc-0001.md
│       │   │   │   │   ├── ARCs:specs:arc-0002.md
│       │   │   │   │   ├── ARCs:specs:arc-0003.md
│       │   │   │   │   ├── ARCs:specs:arc-0004.md
│       │   │   │   │   ├── ARCs:specs:arc-0005.md
│       │   │   │   │   ├── ARCs:specs:arc-0006.md
│       │   │   │   │   ├── ARCs:specs:arc-0007.md
│       │   │   │   │   ├── ARCs:specs:arc-0008.md
│       │   │   │   │   ├── ARCs:specs:arc-0009.md
│       │   │   │   │   ├── ARCs:specs:arc-0010.md
│       │   │   │   │   ├── ARCs:specs:arc-0011.md
│       │   │   │   │   ├── ARCs:specs:arc-0012.md
│       │   │   │   │   ├── ARCs:specs:arc-0015.md
│       │   │   │   │   ├── ARCs:specs:arc-0016.md
│       │   │   │   │   ├── ARCs:specs:arc-0018.md
│       │   │   │   │   ├── ARCs:specs:arc-0019.md
│       │   │   │   │   ├── ARCs:specs:arc-0020.md
│       │   │   │   │   ├── ARCs:specs:arc-0021.md
│       │   │   │   │   ├── ARCs:specs:arc-0022.md
│       │   │   │   │   ├── ARCs:specs:arc-0023.md
│       │   │   │   │   ├── ARCs:specs:arc-0025.md
│       │   │   │   │   ├── ARCs:specs:arc-0026.md
│       │   │   │   │   ├── ARCs:specs:arc-0028.md
│       │   │   │   │   ├── ARCs:specs:arc-0032.md
│       │   │   │   │   ├── ARCs:specs:arc-0033.md
│       │   │   │   │   ├── ARCs:specs:arc-0034.md
│       │   │   │   │   ├── ARCs:specs:arc-0035.md
│       │   │   │   │   ├── ARCs:specs:arc-0036.md
│       │   │   │   │   ├── ARCs:specs:arc-0042.md
│       │   │   │   │   ├── ARCs:specs:arc-0047.md
│       │   │   │   │   ├── ARCs:specs:arc-0048.md
│       │   │   │   │   ├── ARCs:specs:arc-0049.md
│       │   │   │   │   ├── ARCs:specs:arc-0054.md
│       │   │   │   │   ├── ARCs:specs:arc-0055.md
│       │   │   │   │   ├── ARCs:specs:arc-0056.md
│       │   │   │   │   ├── ARCs:specs:arc-0059.md
│       │   │   │   │   ├── ARCs:specs:arc-0062.md
│       │   │   │   │   ├── ARCs:specs:arc-0065.md
│       │   │   │   │   ├── ARCs:specs:arc-0069.md
│       │   │   │   │   ├── ARCs:specs:arc-0072.md
│       │   │   │   │   ├── ARCs:specs:arc-0073.md
│       │   │   │   │   ├── ARCs:specs:arc-0074.md
│       │   │   │   │   ├── ARCs:specs:arc-0076.md
│       │   │   │   │   ├── ARCs:specs:arc-0078.md
│       │   │   │   │   ├── ARCs:specs:arc-0079.md
│       │   │   │   │   ├── ARCs:specs:arc-0200.md
│       │   │   │   │   ├── clis_index.md
│       │   │   │   │   ├── developer:docs:about.md
│       │   │   │   │   ├── developer:docs:clis:algokey:algokey.md
│       │   │   │   │   ├── developer:docs:clis:algokey:generate.md
│       │   │   │   │   ├── developer:docs:clis:algokey:import.md
│       │   │   │   │   ├── developer:docs:clis:algokey:multisig:append-auth-addr.md
│       │   │   │   │   ├── developer:docs:clis:algokey:multisig:multisig.md
│       │   │   │   │   ├── developer:docs:clis:algokey:part:info.md
│       │   │   │   │   ├── developer:docs:clis:algokey:part:part.md
│       │   │   │   │   ├── developer:docs:clis:algokey:part:reparent.md
│       │   │   │   │   ├── developer:docs:clis:algokey:sign.md
│       │   │   │   │   ├── developer:docs:clis:conduit:conduit.md
│       │   │   │   │   ├── developer:docs:clis:conduit:init.md
│       │   │   │   │   ├── developer:docs:clis:conduit:list:exporters.md
│       │   │   │   │   ├── developer:docs:clis:conduit:list:importers.md
│       │   │   │   │   ├── developer:docs:clis:conduit:list:list.md
│       │   │   │   │   ├── developer:docs:clis:conduit:list:processors.md
│       │   │   │   │   ├── developer:docs:clis:diagcfg:diagcfg.md
│       │   │   │   │   ├── developer:docs:clis:diagcfg:metric:disable.md
│       │   │   │   │   ├── developer:docs:clis:diagcfg:metric:enable.md
│       │   │   │   │   ├── developer:docs:clis:diagcfg:metric:metric.md
│       │   │   │   │   ├── developer:docs:clis:diagcfg:metric:status.md
│       │   │   │   │   ├── developer:docs:clis:diagcfg:telemetry:disable.md
│       │   │   │   │   ├── developer:docs:clis:diagcfg:telemetry:enable.md
│       │   │   │   │   ├── developer:docs:clis:diagcfg:telemetry:endpoint.md
│       │   │   │   │   ├── developer:docs:clis:diagcfg:telemetry:name.md
│       │   │   │   │   ├── developer:docs:clis:diagcfg:telemetry:status.md
│       │   │   │   │   ├── developer:docs:clis:diagcfg:telemetry:telemetry.md
│       │   │   │   │   ├── developer:docs:clis:goal:node:restart.md
│       │   │   │   │   ├── developer:docs:clis:goal:node:start.md
│       │   │   │   │   ├── developer:docs:clis:goal:node:status.md
│       │   │   │   │   ├── developer:docs:clis:goal:node:stop.md
│       │   │   │   │   ├── developer:docs:clis:goal:node:wait.md
│       │   │   │   │   ├── developer:docs:clis:goal:protocols.md
│       │   │   │   │   ├── developer:docs:clis:goal:report.md
│       │   │   │   │   ├── developer:docs:clis:goal:version.md
│       │   │   │   │   ├── developer:docs:clis:goal:wallet:list.md
│       │   │   │   │   ├── developer:docs:clis:goal:wallet:new.md
│       │   │   │   │   ├── developer:docs:clis:goal:wallet:wallet.md
│       │   │   │   │   ├── developer:docs:clis:indexer:api-config.md
│       │   │   │   │   ├── developer:docs:clis:indexer:daemon.md
│       │   │   │   │   ├── developer:docs:clis:indexer:indexer.md
│       │   │   │   │   ├── developer:docs:clis:indexer:util:util.md
│       │   │   │   │   ├── developer:docs:clis:indexer:util:validator.md
│       │   │   │   │   ├── developer:docs:clis:kmd.md
│       │   │   │   │   ├── developer:docs:clis:tealdbg:debug.md
│       │   │   │   │   ├── developer:docs:clis:tealdbg:remote.md
│       │   │   │   │   ├── developer:docs:clis:tealdbg:tealdbg.md
│       │   │   │   │   ├── developer:docs:details:accounts:create.md
│       │   │   │   │   ├── developer:docs:details:accounts:index.md
│       │   │   │   │   ├── developer:docs:details:accounts:rekey.md
│       │   │   │   │   ├── developer:docs:details:algorand_consensus.md
│       │   │   │   │   ├── developer:docs:details:algorand-networks:betanet.md
│       │   │   │   │   ├── developer:docs:details:algorand-networks:index.md
│       │   │   │   │   ├── developer:docs:details:algorand-networks:mainnet.md
│       │   │   │   │   ├── developer:docs:details:algorand-networks:testnet.md
│       │   │   │   │   ├── developer:docs:details:asa.md
│       │   │   │   │   ├── developer:docs:details:atc.md
│       │   │   │   │   ├── developer:docs:details:atomic_transfers.md
│       │   │   │   │   ├── developer:docs:details:conduit.md
│       │   │   │   │   ├── developer:docs:details:crust.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:index.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:guidelines.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:index.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:jsonspec.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:opcodes:index.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:opcodes:v1.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:opcodes:v10.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:opcodes:v2.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:opcodes:v3.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:opcodes:v4.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:opcodes:v5.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:opcodes:v6.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:opcodes:v7.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:opcodes:v8.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:opcodes:v9.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:specification.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:ABI:index.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:apps:create.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:apps:index.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:apps:innertx.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:apps:state.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:apps:txs.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:debugging.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:frontend:apps.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:frontend:smartsigs.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:guidelines.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:index.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:smartsigs:index.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:smartsigs:modes.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:smartsigs:walkthrough.md
│       │   │   │   │   ├── developer:docs:details:dapps:writing-contracts:beaker.md
│       │   │   │   │   ├── developer:docs:details:dapps:writing-contracts:pyteal.md
│       │   │   │   │   ├── developer:docs:details:dapps:writing-contracts:python.md
│       │   │   │   │   ├── developer:docs:details:encoding.md
│       │   │   │   │   ├── developer:docs:details:ethereum_to_algorand.md
│       │   │   │   │   ├── developer:docs:details:index.md
│       │   │   │   │   ├── developer:docs:details:indexer.md
│       │   │   │   │   ├── developer:docs:details:parameter_tables.md
│       │   │   │   │   ├── developer:docs:details:stateproofs:index.md
│       │   │   │   │   ├── developer:docs:details:stateproofs:light_client.md
│       │   │   │   │   ├── developer:docs:details:technical_faq.md
│       │   │   │   │   ├── developer:docs:details:transactions:index.md
│       │   │   │   │   ├── developer:docs:details:transactions:offline_transactions.md
│       │   │   │   │   ├── developer:docs:details:transactions:payment_prompts.md
│       │   │   │   │   ├── developer:docs:details:transactions:signatures.md
│       │   │   │   │   ├── developer:docs:details:transactions:transactions.md
│       │   │   │   │   ├── developer:docs:details:useful_resources.md
│       │   │   │   │   ├── developer:docs:get-started:algokit.md
│       │   │   │   │   ├── developer:docs:get-started:basics:what_is_blockchain.md
│       │   │   │   │   ├── developer:docs:get-started:basics:whats_a_dapp.md
│       │   │   │   │   ├── developer:docs:get-started:basics:where_to_start.md
│       │   │   │   │   ├── developer:docs:get-started:basics:why_algorand.md
│       │   │   │   │   ├── developer:docs:get-started:tokenization:ft.md
│       │   │   │   │   ├── developer:docs:get-started:tokenization:nft.md
│       │   │   │   │   ├── developer:docs:index.md
│       │   │   │   │   ├── developer:docs:rest-apis:algod.md
│       │   │   │   │   ├── developer:docs:rest-apis:indexer.md
│       │   │   │   │   ├── developer:docs:rest-apis:kmd.md
│       │   │   │   │   ├── developer:docs:rest-apis:restendpoints.md
│       │   │   │   │   ├── developer:docs:run-a-node:operations:catchup.md
│       │   │   │   │   ├── developer:docs:run-a-node:operations:switch_networks.md
│       │   │   │   │   ├── developer:docs:run-a-node:participate:generate_keys.md
│       │   │   │   │   ├── developer:docs:run-a-node:participate:index.md
│       │   │   │   │   ├── developer:docs:run-a-node:participate:offline.md
│       │   │   │   │   ├── developer:docs:run-a-node:participate:online.md
│       │   │   │   │   ├── developer:docs:run-a-node:participate:renew.md
│       │   │   │   │   ├── developer:docs:run-a-node:reference:artifacts.md
│       │   │   │   │   ├── developer:docs:run-a-node:reference:config.md
│       │   │   │   │   ├── developer:docs:run-a-node:reference:relay.md
│       │   │   │   │   ├── developer:docs:run-a-node:reference:telemetry-config.md
│       │   │   │   │   ├── developer:docs:run-a-node:setup:indexer.md
│       │   │   │   │   ├── developer:docs:run-a-node:setup:install.md
│       │   │   │   │   ├── developer:docs:run-a-node:setup:node-troubleshooting.md
│       │   │   │   │   ├── developer:docs:run-a-node:setup:types.md
│       │   │   │   │   ├── developer:docs:sdks:go:index.md
│       │   │   │   │   ├── developer:docs:sdks:index.md
│       │   │   │   │   ├── developer:docs:sdks:java:index.md
│       │   │   │   │   ├── developer:docs:sdks:javascript:index.md
│       │   │   │   │   ├── developer:docs:sdks:python:index.md
│       │   │   │   │   ├── developer:python:code:example:accounts.md
│       │   │   │   │   ├── developer:python:code:example:arc4_types.md
│       │   │   │   │   ├── developer:python:code:example:assets.md
│       │   │   │   │   ├── developer:python:code:example:box_storage.md
│       │   │   │   │   ├── developer:python:code:example:control_flow.md
│       │   │   │   │   ├── developer:python:code:example:crypto:merkle_tree.md
│       │   │   │   │   ├── developer:python:code:example:defi:amm.md
│       │   │   │   │   ├── developer:python:code:example:defi:auction.md
│       │   │   │   │   ├── developer:python:code:example:defi:htlc_logicsig.md
│       │   │   │   │   ├── developer:python:code:example:defi:marketplace.md
│       │   │   │   │   ├── developer:python:code:example:events:arc28_events.md
│       │   │   │   │   ├── developer:python:code:example:global_storage.md
│       │   │   │   │   ├── developer:python:code:example:governance:simple_voting.md
│       │   │   │   │   ├── developer:python:code:example:hello_world.md
│       │   │   │   │   ├── developer:python:code:example:inner_transactions.md
│       │   │   │   │   ├── developer:python:code:example:local_storage.md
│       │   │   │   │   ├── developer:python:code:example:nft:proof_of_attendance.md
│       │   │   │   │   ├── developer:python:code:example:privacy:zk_whitelist.md
│       │   │   │   │   ├── developer:python:code:example:scratch_storage.md
│       │   │   │   │   ├── developer:python:code:example:self_payment.md
│       │   │   │   │   ├── developer:python:code:example:struct_in_box.md
│       │   │   │   │   ├── developer:python:code:example:subsidize_app_call.md
│       │   │   │   │   ├── developer:python:code:example:transactions.md
│       │   │   │   │   ├── developer:python:code:example:utility:calculator.md
│       │   │   │   │   ├── devportal-code-examples:projects:python-contract-examples:README.md
│       │   │   │   │   ├── devportal-code-examples:README.md
│       │   │   │   │   ├── docs:.walletconnect:index.md
│       │   │   │   │   ├── docs:.walletconnect:walletconnect-schema.md
│       │   │   │   │   ├── docs:README.md
│       │   │   │   │   ├── docs:scripts:example_tracker:example_list.md
│       │   │   │   │   ├── docs:scripts:README.md
│       │   │   │   │   ├── index.md
│       │   │   │   │   ├── liquid_auth_index.md
│       │   │   │   │   ├── liquid-auth:ARCHITECTURE.md
│       │   │   │   │   ├── liquid-auth:decisions:1-Service-Authentication.md
│       │   │   │   │   ├── liquid-auth:decisions:2-Bidirectional-Communication.md
│       │   │   │   │   ├── liquid-auth:decisions:3-Peer-to-Peer-Signaling.md
│       │   │   │   │   ├── liquid-auth:decisions:4-Fido-Extension.md
│       │   │   │   │   ├── liquid-auth:decisions:README.md
│       │   │   │   │   ├── liquid-auth:docs:architecture.md
│       │   │   │   │   ├── liquid-auth:docs:clients:android:provider-service:authenticate.md
│       │   │   │   │   ├── liquid-auth:docs:clients:android:provider-service:register.md
│       │   │   │   │   ├── liquid-auth:docs:clients:browser:authentication.md
│       │   │   │   │   ├── liquid-auth:docs:clients:browser:example.md
│       │   │   │   │   ├── liquid-auth:docs:introduction.md
│       │   │   │   │   ├── liquid-auth:docs:README.md
│       │   │   │   │   ├── liquid-auth:docs:server:environment-variables.md
│       │   │   │   │   ├── liquid-auth:docs:server:integrations.md
│       │   │   │   │   ├── liquid-auth:docs:server:introduction.md
│       │   │   │   │   ├── liquid-auth:docs:server:running-locally.md
│       │   │   │   │   ├── liquid-auth:README.md
│       │   │   │   │   ├── liquid-auth:SEQUENCE.md
│       │   │   │   │   ├── liquid-auth:services:liquid-auth-api-js:src:assertion:assertion.controller.post.request.md
│       │   │   │   │   ├── liquid-auth:services:liquid-auth-api-js:src:assertion:assertion.controller.post.response.md
│       │   │   │   │   ├── liquid-auth:services:liquid-auth-api-js:src:attestation:attestation.controller.post.request.md
│       │   │   │   │   ├── liquid-auth:services:liquid-auth-api-js:src:auth:auth.controller.get.user.md
│       │   │   │   │   ├── liquid-auth:sites:express-dapp:README.md
│       │   │   │   │   ├── liquid-auth:VISION.md
│       │   │   │   │   ├── puya_index.md
│       │   │   │   │   ├── puya:docs:algopy_testing:index.md
│       │   │   │   │   ├── puya:docs:api-algopy.arc4.md
│       │   │   │   │   ├── puya:docs:api-algopy.gtxn.md
│       │   │   │   │   ├── puya:docs:api-algopy.itxn.md
│       │   │   │   │   ├── puya:docs:api-algopy.md
│       │   │   │   │   ├── puya:docs:api-algopy.op.md
│       │   │   │   │   ├── puya:docs:api.md
│       │   │   │   │   ├── puya:docs:compiler.md
│       │   │   │   │   ├── puya:docs:index.md
│       │   │   │   │   ├── puya:docs:language-guide.md
│       │   │   │   │   ├── puya:docs:lg-arc28.md
│       │   │   │   │   ├── puya:docs:lg-arc4.md
│       │   │   │   │   ├── puya:docs:lg-builtins.md
│       │   │   │   │   ├── puya:docs:lg-calling-apps.md
│       │   │   │   │   ├── puya:docs:lg-compile.md
│       │   │   │   │   ├── puya:docs:lg-control.md
│       │   │   │   │   ├── puya:docs:lg-errors.md
│       │   │   │   │   ├── puya:docs:lg-logs.md
│       │   │   │   │   ├── puya:docs:lg-modules.md
│       │   │   │   │   ├── puya:docs:lg-opcode-budget.md
│       │   │   │   │   ├── puya:docs:lg-ops.md
│       │   │   │   │   ├── puya:docs:lg-storage.md
│       │   │   │   │   ├── puya:docs:lg-structure.md
│       │   │   │   │   ├── puya:docs:lg-transactions.md
│       │   │   │   │   ├── puya:docs:lg-types.md
│       │   │   │   │   ├── puya:docs:lg-unsupported-python-features.md
│       │   │   │   │   ├── puya:docs:principles.md
│       │   │   │   │   ├── puya:examples:auction:README.md
│       │   │   │   │   ├── puya:python:testing:docs:algopy.md
│       │   │   │   │   ├── puya:python:testing:docs:api.md
│       │   │   │   │   ├── puya:python:testing:docs:coverage.md
│       │   │   │   │   ├── puya:python:testing:docs:examples.md
│       │   │   │   │   ├── puya:python:testing:docs:faq.md
│       │   │   │   │   ├── puya:python:testing:docs:index.md
│       │   │   │   │   ├── puya:python:testing:docs:testing-guide:arc4-types.md
│       │   │   │   │   ├── puya:python:testing:docs:testing-guide:avm-types.md
│       │   │   │   │   ├── puya:python:testing:docs:testing-guide:concepts.md
│       │   │   │   │   ├── puya:python:testing:docs:testing-guide:contract-testing.md
│       │   │   │   │   ├── puya:python:testing:docs:testing-guide:index.md
│       │   │   │   │   ├── puya:python:testing:docs:testing-guide:opcodes.md
│       │   │   │   │   ├── puya:python:testing:docs:testing-guide:signature-testing.md
│       │   │   │   │   ├── puya:python:testing:docs:testing-guide:state-management.md
│       │   │   │   │   ├── puya:python:testing:docs:testing-guide:subroutines.md
│       │   │   │   │   ├── puya:python:testing:docs:testing-guide:transactions.md
│       │   │   │   │   ├── puya:python:testing:examples:README.md
│       │   │   │   │   ├── puya:python:testing:README.md
│       │   │   │   │   ├── puya:README.md
│       │   │   │   │   ├── puya:src:puya:ARCHITECTURE.md
│       │   │   │   │   ├── puya:src:puyapy:_typeshed:README.md
│       │   │   │   │   ├── puya:src:puyapy:_vendor:mypy:typeshed:stdlib:_typeshed:README.md
│       │   │   │   │   ├── puya:src:puyapy:awst_build:README.md
│       │   │   │   │   ├── puya:stubs:README.md
│       │   │   │   │   ├── puya:tests:test_expected_output:README.md
│       │   │   │   │   ├── puya:typescript:docs:architecture-decisions:2024-05-21_primitive-bytes-and-strings.md
│       │   │   │   │   ├── puya:typescript:docs:architecture-decisions:2024-05-21_primitive-integer-types.md
│       │   │   │   │   ├── puya:typescript:docs:README.md
│       │   │   │   │   ├── puya:typescript:packages:algo-ts:readme.md
│       │   │   │   │   ├── puya:typescript:README.md
│       │   │   │   │   ├── SDKs:javascript:classes:ABIAddressType.md
│       │   │   │   │   ├── SDKs:javascript:classes:ABIArrayDynamicType.md
│       │   │   │   │   ├── SDKs:javascript:classes:ABIArrayStaticType.md
│       │   │   │   │   ├── SDKs:javascript:classes:ABIBoolType.md
│       │   │   │   │   ├── SDKs:javascript:classes:ABIByteType.md
│       │   │   │   │   ├── SDKs:javascript:classes:ABIContract.md
│       │   │   │   │   ├── SDKs:javascript:classes:ABIInterface.md
│       │   │   │   │   ├── SDKs:javascript:classes:ABIMethod.md
│       │   │   │   │   ├── SDKs:javascript:classes:ABIStringType.md
│       │   │   │   │   ├── SDKs:javascript:classes:ABITupleType.md
│       │   │   │   │   ├── SDKs:javascript:classes:ABIType.md
│       │   │   │   │   ├── SDKs:javascript:classes:ABIUfixedType.md
│       │   │   │   │   ├── SDKs:javascript:classes:ABIUintType.md
│       │   │   │   │   ├── SDKs:javascript:classes:Algodv2.md
│       │   │   │   │   ├── SDKs:javascript:classes:AtomicTransactionComposer.md
│       │   │   │   │   ├── SDKs:javascript:classes:DryrunResult.md
│       │   │   │   │   ├── SDKs:javascript:classes:Indexer.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.Account.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.AccountParticipation.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.AccountResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.AccountsResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.AccountStateDelta.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.Application.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.ApplicationLocalState.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.ApplicationLocalStatesResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.ApplicationLogData.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.ApplicationLogsResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.ApplicationParams.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.ApplicationResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.ApplicationsResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.ApplicationStateSchema.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.Asset.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.AssetBalancesResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.AssetHolding.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.AssetHoldingsResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.AssetParams.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.AssetResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.AssetsResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.Block.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.BlockRewards.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.BlockUpgradeState.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.BlockUpgradeVote.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.Box.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.BoxDescriptor.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.BoxesResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.ErrorResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.EvalDelta.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.EvalDeltaKeyValue.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.HashFactory.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.HealthCheck.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.IndexerStateProofMessage.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.MerkleArrayProof.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.MiniAssetHolding.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.ParticipationUpdates.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.StateProofFields.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.StateProofParticipant.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.StateProofReveal.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.StateProofSignature.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.StateProofSigSlot.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.StateProofTracking.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.StateProofVerifier.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.StateSchema.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TealKeyValue.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TealValue.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.Transaction.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TransactionApplication.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TransactionAssetConfig.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TransactionAssetFreeze.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TransactionAssetTransfer.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TransactionKeyreg.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TransactionPayment.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TransactionResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TransactionSignature.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TransactionSignatureLogicsig.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TransactionSignatureMultisig.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TransactionSignatureMultisigSubsignature.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TransactionsResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TransactionStateProof.md
│       │   │   │   │   ├── SDKs:javascript:classes:Kmd.md
│       │   │   │   │   ├── SDKs:javascript:classes:LogicSig.md
│       │   │   │   │   ├── SDKs:javascript:classes:LogicSigAccount.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.Account.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.AccountApplicationResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.AccountAssetHolding.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.AccountAssetResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.AccountAssetsInformationResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.AccountParticipation.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.AccountStateDelta.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.AppCallLogs.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.Application.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.ApplicationInitialStates.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.ApplicationKVStorage.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.ApplicationLocalReference.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.ApplicationLocalState.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.ApplicationParams.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.ApplicationStateOperation.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.ApplicationStateSchema.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.Asset.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.AssetHolding.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.AssetHoldingReference.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.AssetParams.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.AvmKeyValue.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.AvmValue.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.BlockHashResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.BlockLogsResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.BlockResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.BlockTxidsResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.Box.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.BoxDescriptor.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.BoxesResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.BoxReference.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.BuildVersion.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.CompileResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.DisassembleResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.DryrunRequest.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.DryrunResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.DryrunSource.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.DryrunState.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.DryrunTxnResult.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.ErrorResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.EvalDelta.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.EvalDeltaKeyValue.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.GetBlockTimeStampOffsetResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.GetSyncRoundResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.KvDelta.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.LedgerStateDeltaForTransactionGroup.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.LightBlockHeaderProof.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.NodeStatusResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.PendingTransactionResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.PendingTransactionsResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.PostTransactionsResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.ScratchChange.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.SimulateInitialStates.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.SimulateRequest.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.SimulateRequestTransactionGroup.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.SimulateResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.SimulateTraceConfig.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.SimulateTransactionGroupResult.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.SimulateTransactionResult.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.SimulateUnnamedResourcesAccessed.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.SimulationEvalOverrides.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.SimulationOpcodeTraceUnit.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.SimulationTransactionExecTrace.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.StateProof.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.StateProofMessage.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.SupplyResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.TealKeyValue.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.TealValue.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.TransactionGroupLedgerStateDeltasForRoundResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.TransactionParametersResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.TransactionProofResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.Version.md
│       │   │   │   │   ├── SDKs:javascript:classes:SourceMap.md
│       │   │   │   │   ├── SDKs:javascript:classes:Transaction.md
│       │   │   │   │   ├── SDKs:javascript:enums:ABIReferenceType.md
│       │   │   │   │   ├── SDKs:javascript:enums:ABITransactionType.md
│       │   │   │   │   ├── SDKs:javascript:enums:AtomicTransactionComposerStatus.md
│       │   │   │   │   ├── SDKs:javascript:enums:IntDecoding.md
│       │   │   │   │   ├── SDKs:javascript:enums:OnApplicationComplete.md
│       │   │   │   │   ├── SDKs:javascript:enums:TransactionType.md
│       │   │   │   │   ├── SDKs:javascript:examples:README.md
│       │   │   │   │   ├── SDKs:javascript:FAQ.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:ABIContractNetworkInfo.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:ABIContractNetworks.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:ABIContractParams.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:ABIInterfaceParams.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:ABIMethodArgParams.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:ABIMethodParams.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:ABIMethodReturnParams.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:ABIResult.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:Account.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:Address.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:AlgodTokenHeader.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:BaseHTTPClient.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:BaseHTTPClientError.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:BaseHTTPClientResponse.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:BoxReference.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:CustomTokenHeader.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:EncodedAssetParams.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:EncodedBoxReference.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:EncodedGlobalStateSchema.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:EncodedLocalStateSchema.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:EncodedLogicSig.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:EncodedLogicSigAccount.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:EncodedMultisig.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:EncodedSignedTransaction.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:EncodedSubsig.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:EncodedTransaction.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:IndexerTokenHeader.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:KMDTokenHeader.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:MultisigMetadata.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:SignedTransaction.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:SuggestedParams.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:TransactionParams.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:TransactionWithSigner.md
│       │   │   │   │   ├── SDKs:javascript:modules:indexerModels.md
│       │   │   │   │   ├── SDKs:javascript:modules:modelsv2.md
│       │   │   │   │   ├── SDKs:javascript:modules.md
│       │   │   │   │   ├── SDKs:javascript:README.md
│       │   │   │   │   ├── SDKs:python:algosdk:v2client:harness:README.md
│       │   │   │   │   ├── SDKs:python:examples:README.md
│       │   │   │   │   ├── SDKs:python:README.md
│       │   │   │   │   ├── tealscript:examples_amm_README.md
│       │   │   │   │   ├── tealscript:examples_auction_README.md
│       │   │   │   │   ├── tealscript:examples_big_box_README.md
│       │   │   │   │   ├── tealscript:examples_itxns_README.md
│       │   │   │   │   ├── tealscript:examples_lsig_with_app_README.md
│       │   │   │   │   ├── tealscript:examples_reti_README.md
│       │   │   │   │   ├── tealscript:FEATURES.md
│       │   │   │   │   ├── tealscript:guides_atomic_txn.md
│       │   │   │   │   ├── tealscript:guides_features.md
│       │   │   │   │   ├── tealscript:guides_getting_started.md
│       │   │   │   │   ├── tealscript:guides_inner_transactions.md
│       │   │   │   │   ├── tealscript:guides_lifecycle.md
│       │   │   │   │   ├── tealscript:guides_math.md
│       │   │   │   │   ├── tealscript:guides_methods.md
│       │   │   │   │   ├── tealscript:guides_multiple_contracts.md
│       │   │   │   │   ├── tealscript:guides_pyteal.md
│       │   │   │   │   ├── tealscript:guides_storage.md
│       │   │   │   │   ├── tealscript:guides_Supported Types_arrays.md
│       │   │   │   │   ├── tealscript:guides_Supported Types_numbers.md
│       │   │   │   │   ├── TEALScript:README.md
│       │   │   │   │   ├── tealscript:tests_test_package_README.md
│       │   │   │   │   ├── tealscript:tutorials_Hello World_0001-intro.md
│       │   │   │   │   ├── tealscript:tutorials_Hello World_0002-init.md
│       │   │   │   │   ├── tealscript:tutorials_Hello World_0003-contract.md
│       │   │   │   │   ├── tealscript:tutorials_Hello World_0004-artifacts.md
│       │   │   │   │   ├── tealscript:tutorials_Hello World_0005-hello.md
│       │   │   │   │   └── tealscript:tutorials_Hello World_0006-test.md
│       │   │   │   └── taxonomy-categories
│       │   │   │       ├── algokit-utils.json
│       │   │   │       ├── algokit.json
│       │   │   │       ├── arcs.json
│       │   │   │       ├── clis.json
│       │   │   │       ├── details.json
│       │   │   │       ├── developers.json
│       │   │   │       ├── liquid-auth.json
│       │   │   │       ├── nodes.json
│       │   │   │       ├── puya.json
│       │   │   │       ├── python.json
│       │   │   │       ├── sdks.json
│       │   │   │       └── tealscript.json
│       │   │   └── wallet
│       │   │       └── index.ts
│       │   ├── tools
│       │   │   ├── accountManager.ts
│       │   │   ├── algodManager.ts
│       │   │   ├── apiManager
│       │   │   │   ├── algod
│       │   │   │   │   ├── account.ts
│       │   │   │   │   ├── application.ts
│       │   │   │   │   ├── asset.ts
│       │   │   │   │   ├── index.ts
│       │   │   │   │   └── transaction.ts
│       │   │   │   ├── example
│       │   │   │   │   ├── get-balance.ts
│       │   │   │   │   └── index.ts
│       │   │   │   ├── index.ts
│       │   │   │   ├── indexer
│       │   │   │   │   ├── account.ts
│       │   │   │   │   ├── application.ts
│       │   │   │   │   ├── asset.ts
│       │   │   │   │   ├── index.ts
│       │   │   │   │   └── transaction.ts
│       │   │   │   ├── nfd
│       │   │   │   │   └── index.ts
│       │   │   │   ├── tinyman
│       │   │   │   │   ├── analytics.ts
│       │   │   │   │   ├── bootstrap.ts
│       │   │   │   │   ├── index.ts
│       │   │   │   │   ├── liquidity.ts
│       │   │   │   │   ├── opt_in.ts
│       │   │   │   │   ├── pool.ts
│       │   │   │   │   ├── remove_liquidity.ts
│       │   │   │   │   └── swap.ts
│       │   │   │   ├── ultrade
│       │   │   │   │   ├── index.ts
│       │   │   │   │   ├── market.ts
│       │   │   │   │   ├── system.ts
│       │   │   │   │   └── wallet.ts
│       │   │   │   └── vestige
│       │   │   │       ├── assets.ts
│       │   │   │       ├── balances.ts
│       │   │   │       ├── index.ts
│       │   │   │       ├── networks.ts
│       │   │   │       ├── notes.ts
│       │   │   │       ├── pools.ts
│       │   │   │       ├── protocols.ts
│       │   │   │       ├── swaps.ts
│       │   │   │       └── vaults.ts
│       │   │   ├── arc26Manager.ts
│       │   │   ├── index.ts
│       │   │   ├── knowledgeManager.ts
│       │   │   ├── transactionManager
│       │   │   │   ├── accountTransactions.ts
│       │   │   │   ├── appTransactions
│       │   │   │   │   ├── callTxn.ts
│       │   │   │   │   ├── clearTxn.ts
│       │   │   │   │   ├── closeOutTxn.ts
│       │   │   │   │   ├── createTxn.ts
│       │   │   │   │   ├── deleteTxn.ts
│       │   │   │   │   ├── index.ts
│       │   │   │   │   ├── optInTxn.ts
│       │   │   │   │   ├── test
│       │   │   │   │   │   ├── counter_approval.teal
│       │   │   │   │   │   ├── counter_clear.teal
│       │   │   │   │   │   ├── storage_test_approval_v2.teal
│       │   │   │   │   │   ├── storage_test_approval.teal
│       │   │   │   │   │   └── storage_test_clear.teal
│       │   │   │   │   ├── types.ts
│       │   │   │   │   └── updateTxn.ts
│       │   │   │   ├── assetTransactions.ts
│       │   │   │   ├── generalTransaction.ts
│       │   │   │   └── index.ts
│       │   │   └── utilityManager.ts
│       │   ├── types.ts
│       │   └── utils
│       │       └── responseProcessor.ts
│       ├── tests
│       │   ├── resources
│       │   │   ├── algod
│       │   │   │   ├── account.test.ts
│       │   │   │   ├── application.test.ts
│       │   │   │   ├── asset.test.ts
│       │   │   │   └── transaction.test.ts
│       │   │   └── indexer
│       │   │       ├── account.test.ts
│       │   │       ├── application.test.ts
│       │   │       ├── asset.test.ts
│       │   │       └── transaction.test.ts
│       │   └── tools
│       │       ├── accountManager.test.ts
│       │       ├── algodManager.test.ts
│       │       ├── apiManager
│       │       │   └── example
│       │       │       └── get-balance.test.ts
│       │       ├── transactionManager
│       │       │   ├── accountTransactionManager.test.ts
│       │       │   ├── appTransactionManager.test.ts
│       │       │   ├── assetTransactionManager.test.ts
│       │       │   ├── generalTransactionManager.test.ts
│       │       │   └── transactionManager.test.ts
│       │       └── utilityManager.test.ts
│       └── tsconfig.json
├── README.md
├── rename_files.sh
└── tsconfig.json
```

# Files

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

```markdown
  1 | # Algorand Standard Assets (ASA) in Python
  2 | 
  3 | This guide demonstrates how to work with Algorand Standard Assets (ASAs) using Python, including creation, management, transfer, and deletion operations.
  4 | 
  5 | ## Creating Assets
  6 | 
  7 | ### Creating a Fungible Token
  8 | 
  9 | ```python
 10 | from algokit_utils import AssetCreateParams
 11 | 
 12 | # Create fungible token with 10 million units
 13 | txn_result = algorand_client.send.asset_create(
 14 |     AssetCreateParams(
 15 |         sender=account_a.address,
 16 |         total=10_000_000,
 17 |         decimals=6,
 18 |         default_frozen=False,  # optional
 19 |         manager=account_a.address,  # optional
 20 |         reserve=account_a.address,  # optional
 21 |         freeze=account_a.address,  # optional
 22 |         clawback=account_a.address,  # optional
 23 |         unit_name="MYA",
 24 |         asset_name="My Asset",
 25 |     )
 26 | )
 27 | ```
 28 | 
 29 | ### Creating an NFT
 30 | 
 31 | ```python
 32 | # Create a 1/1 NFT
 33 | txn_result = algorand_client.send.asset_create(
 34 |     AssetCreateParams(
 35 |         sender=account_a.address,
 36 |         total=1,
 37 |         asset_name="My NFT",
 38 |         unit_name="MNFT",
 39 |         decimals=0,
 40 |         url="metadata URL",
 41 |         metadata_hash=b"Hash of the metadata URL",
 42 |     )
 43 | )
 44 | ```
 45 | 
 46 | ## Asset Transfers
 47 | 
 48 | ### Basic Transfer
 49 | 
 50 | ```python
 51 | from algokit_utils import AssetTransferParams
 52 | 
 53 | # Transfer 1 unit of asset
 54 | txn_result = algorand_client.send.asset_transfer(
 55 |     AssetTransferParams(
 56 |         sender=account_a.address,
 57 |         asset_id=1234,
 58 |         receiver=account_b.address,
 59 |         amount=1,
 60 |     )
 61 | )
 62 | ```
 63 | 
 64 | ## Asset Participation
 65 | 
 66 | ### Opt-In
 67 | 
 68 | ```python
 69 | from algokit_utils import AssetOptInParams
 70 | 
 71 | # Opt-in to an asset
 72 | txn_result = algorand_client.send.asset_opt_in(
 73 |     AssetOptInParams(
 74 |         sender=account_a.address,
 75 |         asset_id=1234,
 76 |     )
 77 | )
 78 | ```
 79 | 
 80 | ### Opt-Out
 81 | 
 82 | ```python
 83 | from algokit_utils import AssetOptOutParams
 84 | 
 85 | # Opt-out of an asset
 86 | txn_result = algorand_client.send.asset_opt_out(
 87 |     params=AssetOptOutParams(
 88 |         sender=account_a.address,
 89 |         asset_id=1234,
 90 |         creator=account_b.address,
 91 |     ),
 92 |     ensure_zero_balance=True,  # Verify zero balance before opt-out
 93 | )
 94 | ```
 95 | 
 96 | ## Asset Management
 97 | 
 98 | ### Freezing Assets
 99 | 
100 | ```python
101 | from algokit_utils import AssetFreezeParams
102 | 
103 | # Freeze assets
104 | txn_result = algorand_client.send.asset_freeze(
105 |     AssetFreezeParams(
106 |         sender=account_a.address,
107 |         asset_id=1234,
108 |         account=account_b.address,  # Account to freeze
109 |         frozen=True,
110 |     )
111 | )
112 | 
113 | # Unfreeze assets
114 | txn_result = algorand_client.send.asset_freeze(
115 |     AssetFreezeParams(
116 |         sender=account_a.address,
117 |         asset_id=1234,
118 |         account=account_b.address,
119 |         frozen=False,
120 |     )
121 | )
122 | ```
123 | 
124 | ### Clawback
125 | 
126 | ```python
127 | # Clawback assets from an account
128 | txn_result = algorand_client.send.asset_transfer(
129 |     AssetTransferParams(
130 |         sender=manager.address,
131 |         asset_id=1234,
132 |         amount=1,
133 |         receiver=manager.address,
134 |         clawback_target=account_to_be_clawbacked.address,
135 |     )
136 | )
137 | ```
138 | 
139 | ### Updating Asset Configuration
140 | 
141 | ```python
142 | from algokit_utils import AssetConfigParams
143 | 
144 | # Update asset configuration
145 | txn_result = algorand_client.send.asset_config(
146 |     AssetConfigParams(
147 |         sender=account_a.address,
148 |         asset_id=1234,
149 |         manager=account_b.address,
150 |         reserve=account_b.address,
151 |         freeze=account_b.address,
152 |         clawback=account_b.address,
153 |     )
154 | )
155 | ```
156 | 
157 | ### Destroying Assets
158 | 
159 | ```python
160 | from algokit_utils import AssetDestroyParams
161 | 
162 | # Destroy an asset
163 | txn_result = algorand_client.send.asset_destroy(
164 |     AssetDestroyParams(
165 |         sender=account_a.address,
166 |         asset_id=1234,
167 |     )
168 | )
169 | ```
170 | 
171 | ## Best Practices
172 | 
173 | 1. **Asset Creation**:
174 |    - Choose appropriate decimals for fungible tokens
175 |    - Set meaningful unit names and asset names
176 |    - Consider immutability requirements
177 |    - Document metadata URLs and hashes
178 | 
179 | 2. **Asset Transfer**:
180 |    - Verify opt-in status before transfers
181 |    - Handle transfer failures gracefully
182 |    - Consider minimum balance requirements
183 |    - Track transfer status
184 | 
185 | 3. **Asset Management**:
186 |    - Carefully assign management roles
187 |    - Document role assignments
188 |    - Implement proper access controls
189 |    - Monitor asset operations
190 | 
191 | 4. **Freezing and Clawback**:
192 |    - Use freeze capability judiciously
193 |    - Document freeze/clawback policies
194 |    - Implement proper authorization
195 |    - Monitor frozen accounts
196 | 
197 | 5. **Configuration Updates**:
198 |    - Plan configuration changes carefully
199 |    - Document configuration history
200 |    - Verify manager authorization
201 |    - Test configuration changes
202 | 
203 | 6. **Asset Deletion**:
204 |    - Verify creator ownership
205 |    - Ensure zero circulation
206 |    - Document deletion reasons
207 |    - Handle deletion failures
208 | 
209 | ## Security Considerations
210 | 
211 | 1. **Access Control**:
212 |    - Verify transaction sender authorization
213 |    - Implement role-based controls
214 |    - Protect management keys
215 |    - Monitor suspicious activity
216 | 
217 | 2. **Asset Parameters**:
218 |    - Choose parameters carefully
219 |    - Consider immutability implications
220 |    - Document parameter decisions
221 |    - Test parameter effects
222 | 
223 | 3. **Operational Security**:
224 |    - Implement proper error handling
225 |    - Log important operations
226 |    - Monitor asset activities
227 |    - Regular security audits
228 | 
229 | 4. **User Protection**:
230 |    - Clear documentation
231 |    - Proper error messages
232 |    - User notifications
233 |    - Recovery procedures
234 | 
235 | This guide demonstrates the various operations available for Algorand Standard Assets using Python. Understanding these operations is crucial for developing applications that work with ASAs effectively and securely.
236 | 
```

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

```markdown
  1 | [algosdk](../README.md) / [Exports](../modules.md) / [modelsv2](../modules/modelsv2.md) / SimulateTransactionResult
  2 | 
  3 | # Class: SimulateTransactionResult
  4 | 
  5 | [modelsv2](../modules/modelsv2.md).SimulateTransactionResult
  6 | 
  7 | Simulation result for an individual transaction
  8 | 
  9 | ## Hierarchy
 10 | 
 11 | - `default`
 12 | 
 13 |   ↳ **`SimulateTransactionResult`**
 14 | 
 15 | ## Table of contents
 16 | 
 17 | ### Constructors
 18 | 
 19 | - [constructor](modelsv2.SimulateTransactionResult.md#constructor)
 20 | 
 21 | ### Properties
 22 | 
 23 | - [appBudgetConsumed](modelsv2.SimulateTransactionResult.md#appbudgetconsumed)
 24 | - [attribute\_map](modelsv2.SimulateTransactionResult.md#attribute_map)
 25 | - [execTrace](modelsv2.SimulateTransactionResult.md#exectrace)
 26 | - [fixedSigner](modelsv2.SimulateTransactionResult.md#fixedsigner)
 27 | - [logicSigBudgetConsumed](modelsv2.SimulateTransactionResult.md#logicsigbudgetconsumed)
 28 | - [txnResult](modelsv2.SimulateTransactionResult.md#txnresult)
 29 | - [unnamedResourcesAccessed](modelsv2.SimulateTransactionResult.md#unnamedresourcesaccessed)
 30 | 
 31 | ### Methods
 32 | 
 33 | - [get\_obj\_for\_encoding](modelsv2.SimulateTransactionResult.md#get_obj_for_encoding)
 34 | - [from\_obj\_for\_encoding](modelsv2.SimulateTransactionResult.md#from_obj_for_encoding)
 35 | 
 36 | ## Constructors
 37 | 
 38 | ### constructor
 39 | 
 40 | • **new SimulateTransactionResult**(`«destructured»`)
 41 | 
 42 | Creates a new `SimulateTransactionResult` object.
 43 | 
 44 | #### Parameters
 45 | 
 46 | | Name | Type |
 47 | | :------ | :------ |
 48 | | `«destructured»` | `Object` |
 49 | | › `appBudgetConsumed?` | `number` \| `bigint` |
 50 | | › `execTrace?` | [`SimulationTransactionExecTrace`](modelsv2.SimulationTransactionExecTrace.md) |
 51 | | › `fixedSigner?` | `string` |
 52 | | › `logicSigBudgetConsumed?` | `number` \| `bigint` |
 53 | | › `txnResult` | [`PendingTransactionResponse`](modelsv2.PendingTransactionResponse.md) |
 54 | | › `unnamedResourcesAccessed?` | [`SimulateUnnamedResourcesAccessed`](modelsv2.SimulateUnnamedResourcesAccessed.md) |
 55 | 
 56 | #### Overrides
 57 | 
 58 | BaseModel.constructor
 59 | 
 60 | #### Defined in
 61 | 
 62 | client/v2/algod/models/types.ts:4812
 63 | 
 64 | ## Properties
 65 | 
 66 | ### appBudgetConsumed
 67 | 
 68 | • `Optional` **appBudgetConsumed**: `number` \| `bigint`
 69 | 
 70 | Budget used during execution of an app call transaction. This value includes
 71 | budged used by inner app calls spawned by this transaction.
 72 | 
 73 | #### Defined in
 74 | 
 75 | client/v2/algod/models/types.ts:4759
 76 | 
 77 | ___
 78 | 
 79 | ### attribute\_map
 80 | 
 81 | • **attribute\_map**: `Record`\<`string`, `string`\>
 82 | 
 83 | #### Inherited from
 84 | 
 85 | BaseModel.attribute\_map
 86 | 
 87 | #### Defined in
 88 | 
 89 | client/v2/basemodel.ts:56
 90 | 
 91 | ___
 92 | 
 93 | ### execTrace
 94 | 
 95 | • `Optional` **execTrace**: [`SimulationTransactionExecTrace`](modelsv2.SimulationTransactionExecTrace.md)
 96 | 
 97 | The execution trace of calling an app or a logic sig, containing the inner app
 98 | call trace in a recursive way.
 99 | 
100 | #### Defined in
101 | 
102 | client/v2/algod/models/types.ts:4765
103 | 
104 | ___
105 | 
106 | ### fixedSigner
107 | 
108 | • `Optional` **fixedSigner**: `string`
109 | 
110 | The account that needed to sign this transaction when no signature was provided
111 | and the provided signer was incorrect.
112 | 
113 | #### Defined in
114 | 
115 | client/v2/algod/models/types.ts:4771
116 | 
117 | ___
118 | 
119 | ### logicSigBudgetConsumed
120 | 
121 | • `Optional` **logicSigBudgetConsumed**: `number` \| `bigint`
122 | 
123 | Budget used during execution of a logic sig transaction.
124 | 
125 | #### Defined in
126 | 
127 | client/v2/algod/models/types.ts:4776
128 | 
129 | ___
130 | 
131 | ### txnResult
132 | 
133 | • **txnResult**: [`PendingTransactionResponse`](modelsv2.PendingTransactionResponse.md)
134 | 
135 | Details about a pending transaction. If the transaction was recently confirmed,
136 | includes confirmation details like the round and reward details.
137 | 
138 | #### Defined in
139 | 
140 | client/v2/algod/models/types.ts:4753
141 | 
142 | ___
143 | 
144 | ### unnamedResourcesAccessed
145 | 
146 | • `Optional` **unnamedResourcesAccessed**: [`SimulateUnnamedResourcesAccessed`](modelsv2.SimulateUnnamedResourcesAccessed.md)
147 | 
148 | These are resources that were accessed by this group that would normally have
149 | caused failure, but were allowed in simulation. Depending on where this object
150 | is in the response, the unnamed resources it contains may or may not qualify for
151 | group resource sharing. If this is a field in SimulateTransactionGroupResult,
152 | the resources do qualify, but if this is a field in SimulateTransactionResult,
153 | they do not qualify. In order to make this group valid for actual submission,
154 | resources that qualify for group sharing can be made available by any
155 | transaction of the group; otherwise, resources must be placed in the same
156 | transaction which accessed them.
157 | 
158 | #### Defined in
159 | 
160 | client/v2/algod/models/types.ts:4789
161 | 
162 | ## Methods
163 | 
164 | ### get\_obj\_for\_encoding
165 | 
166 | ▸ **get_obj_for_encoding**(`binary?`): `Record`\<`string`, `any`\>
167 | 
168 | Get an object ready for encoding to either JSON or msgpack.
169 | 
170 | #### Parameters
171 | 
172 | | Name | Type | Default value | Description |
173 | | :------ | :------ | :------ | :------ |
174 | | `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. |
175 | 
176 | #### Returns
177 | 
178 | `Record`\<`string`, `any`\>
179 | 
180 | #### Inherited from
181 | 
182 | BaseModel.get\_obj\_for\_encoding
183 | 
184 | #### Defined in
185 | 
186 | client/v2/basemodel.ts:65
187 | 
188 | ___
189 | 
190 | ### from\_obj\_for\_encoding
191 | 
192 | ▸ `Static` **from_obj_for_encoding**(`data`): [`SimulateTransactionResult`](modelsv2.SimulateTransactionResult.md)
193 | 
194 | #### Parameters
195 | 
196 | | Name | Type |
197 | | :------ | :------ |
198 | | `data` | `Record`\<`string`, `any`\> |
199 | 
200 | #### Returns
201 | 
202 | [`SimulateTransactionResult`](modelsv2.SimulateTransactionResult.md)
203 | 
204 | #### Defined in
205 | 
206 | client/v2/algod/models/types.ts:4846
207 | 
```

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

```markdown
 1 | ---
 2 | arc: 49
 3 | title: NFT Rewards
 4 | description: NFT Rewards, Terms and Conditions
 5 | author: Stéphane BARROSO (@SudoWeezy)
 6 | discussions-to: https://github.com/algorandfoundation/ARCs/issues/228
 7 | status: Deprecated
 8 | type: Informational
 9 | created: 2023-07-19
10 | ---
11 | 
12 | ## Abstract
13 | The NFT Rewards is a temporary incentive program that distributes ALGO to be deployed in targeted activities to attract new NFT users from within and outside the ecosystem.
14 | 
15 | ## Specification
16 | 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>.
17 | 
18 | ### Pilot program qualification for NFT marketplaces
19 | 
20 | To be eligible to apply to this program, projects must abide by the <a href="https://www.algorand.foundation/disclaimers">Disclaimers</a> (in particular the “Excluded Jurisdictions” section) and be willing to enter into a binding contract in the form of the template provided by the Algorand Foundation.
21 | 
22 | NFT marketplaces applying for this program:
23 | - Must be an NFT marketplace on Algorand that coordinates the selling of NFTs. An NFT marketplace is defined as an online platform that facilitates third-party non-fungible token listings and transactions in ALGO on the Algorand blockchain.
24 | - Must have transaction volume (over the previous 6 months leading up to the application for the program) that is equivalent to at least 10% of total rewards being distributed. For example, if the total rewards amount is 500K ALGO, then the minimum volume must be 50K ALGO.P
25 | 
26 | #### Important Note
27 | 
28 | *NFT Rewards Program for US entities:*
29 | 
30 | >For 2024 | Q2 we will be allowing US-based entities that fit the Program Criteria to apply for the NFT Rewards program.
31 | Their allocated ALGO will be converted to USDCa post prior to the payment transfer. This change will be reviewed on a periodic basis.
32 | 
33 | ### Allocation of rewards
34 | - Rewards will be allocated proportionally based on volume for each qualified NFT marketplace.
35 | - For qualifying marketplaces with more than 50% of total NFT marketplace volume, rewards will be capped at 35%.
36 | 
37 | ### Requirements for initiatives
38 | 1. The rewards (ALGO) must ultimately go to NFT collectors/end users and creators.
39 | 2. NFT marketplaces must share their campaign plans publicly in advance in order to qualify for the rewards.
40 | 3. The rewards (ALGO) should be held in a separate wallet from operating funds to track on-chain transactions of how funds are being spent.
41 | 4. The NFT marketplace must make public data that shows its trading volume in the last quarter.
42 | 5. Proposals that incentivize wash trading* will not be approved to participate in the Program.
43 | 6. NFT marketplaces must reward creators whose NFTs are purchased with a 5% minimum royalty.
44 | 
45 | >* By definition, the term “wash trading” means a form of market manipulation where the same user simultaneously buys and sells the same asset with the intention of giving false or misleading signals about its demand or price
46 | 
47 | 
48 | ### Process for launching initiative
49 | 
50 | - To apply, a qualifying NFT marketplace must provide detailed information on the specifics of initiatives they are planning in that period, as well as any documentation proving the location of its headquarters.
51 | - If approved by the Algorand Foundation team, rewards will be distributed proportionally based on the allocation defined above.
52 | - The qualifying NFT marketplaces must provide a detailed 1-page report following the initiative to Algorand Foundation and on the Forum:
53 | 1. Summary of the initiatives implemented;
54 | 1. Amount of rewards paid out (including any unspent rewards, which must be returned), and wallet addresses;
55 | 1. Total volume of transactions directly as a result of the campaign;
56 | 1. New wallets interacting with the marketplace;
57 | 1. Total volume of transactions compared to the previous quarter;
58 | 1. Any other relevant information.
59 | 
60 | ### Evaluation
61 | From GP10 (Q1/2024) proposals will be added to the governance portal and approved or rejected directly by the community. A proposal passes when it reaches a majority of "Yes" votes. The proposals and results are available at <a href="https://governance.algorand.foundation">governance.algorand.foundation</a>.
62 | 
63 | NFT marketplaces that do not fulfill their campaign plan cannot apply for further incentives.
64 | 
65 | NFT team will review overall results and discuss whether this program is having the desired impact and, together with the community, will help evaluate whether it should be extended and expanded to the next period.
66 | 
67 | ### Important to note
68 | - Marketplaces that fit the above criteria will be required to sign a legal contract with the Algorand Foundation.
69 | - Rewards are only paid out in ALGO or USDCa for US-based entities..
70 | - Legal entities based in other jurisdictions where receiving ALGO is not allowed are not able to partake in this program.
71 | - Participants and the Algorand Foundation will all agree on the source of data and metrics to be used for calculating the allocation and measuring the results.
72 | 
73 | ## Rationale
74 | This document was versioned using google doc, it made more sense to move it on github.
75 | 
76 | ## Security Considerations
77 | Disclaimer: This document may be revised until the day before the voting session opens, as we are still collecting community feedback.
78 | 
79 | ## Copyright
80 | Copyright and related rights waived via <a href="https://creativecommons.org/publicdomain/zero/1.0/">CCO</a>.
81 | 
```

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

```json
  1 | {
  2 |   "name": "Liquid Auth",
  3 |   "description": "Authentication system for Algorand applications",
  4 |   "path": "liquid-auth",
  5 |   "documents": [
  6 |     {"name": "README", "path": "liquid-auth:README.md"},
  7 |     {"name": "Architecture", "path": "liquid-auth:ARCHITECTURE.md"},
  8 |     {"name": "Vision", "path": "liquid-auth:VISION.md"},
  9 |     {"name": "Sequence", "path": "liquid-auth:SEQUENCE.md"}
 10 |   ],
 11 |   "subcategories": {
 12 |     "decisions": {
 13 |       "name": "Architecture Decisions",
 14 |       "description": "Architecture decision records",
 15 |       "path": "liquid-auth:decisions",
 16 |       "documents": [
 17 |         {"name": "Overview", "path": "liquid-auth:decisions:README.md"},
 18 |         {"name": "Service Authentication", "path": "liquid-auth:decisions:1-Service-Authentication.md"},
 19 |         {"name": "Bidirectional Communication", "path": "liquid-auth:decisions:2-Bidirectional-Communication.md"},
 20 |         {"name": "Peer to Peer Signaling", "path": "liquid-auth:decisions:3-Peer-to-Peer-Signaling.md"},
 21 |         {"name": "FIDO Extension", "path": "liquid-auth:decisions:4-Fido-Extension.md"}
 22 |       ]
 23 |     },
 24 |     "docs": {
 25 |       "name": "Documentation",
 26 |       "description": "General documentation",
 27 |       "path": "liquid-auth:docs",
 28 |       "documents": [
 29 |         {"name": "Overview", "path": "liquid-auth:docs:README.md"},
 30 |         {"name": "Architecture", "path": "liquid-auth:docs:architecture.md"},
 31 |         {"name": "Introduction", "path": "liquid-auth:docs:introduction.md"}
 32 |       ],
 33 |       "subcategories": {
 34 |         "clients": {
 35 |           "name": "Client Documentation",
 36 |           "description": "Client implementation guides",
 37 |           "path": "liquid-auth:docs:clients",
 38 |           "subcategories": {
 39 |             "browser": {
 40 |               "name": "Browser Client",
 41 |               "description": "Browser client documentation",
 42 |               "path": "liquid-auth:docs:clients:browser",
 43 |               "documents": [
 44 |                 {"name": "Authentication", "path": "liquid-auth:docs:clients:browser:authentication.md"},
 45 |                 {"name": "Example", "path": "liquid-auth:docs:clients:browser:example.md"}
 46 |               ]
 47 |             },
 48 |             "android": {
 49 |               "name": "Android Client",
 50 |               "description": "Android client documentation",
 51 |               "path": "liquid-auth:docs:clients:android",
 52 |               "subcategories": {
 53 |                 "provider-service": {
 54 |                   "name": "Provider Service",
 55 |                   "description": "Android provider service documentation",
 56 |                   "path": "liquid-auth:docs:clients:android:provider-service",
 57 |                   "documents": [
 58 |                     {"name": "Authentication", "path": "liquid-auth:docs:clients:android:provider-service:authenticate.md"},
 59 |                     {"name": "Registration", "path": "liquid-auth:docs:clients:android:provider-service:register.md"}
 60 |                   ]
 61 |                 }
 62 |               }
 63 |             }
 64 |           }
 65 |         },
 66 |         "server": {
 67 |           "name": "Server Documentation",
 68 |           "description": "Server implementation guides",
 69 |           "path": "liquid-auth:docs:server",
 70 |           "documents": [
 71 |             {"name": "Environment Variables", "path": "liquid-auth:docs:server:environment-variables.md"},
 72 |             {"name": "Integrations", "path": "liquid-auth:docs:server:integrations.md"},
 73 |             {"name": "Introduction", "path": "liquid-auth:docs:server:introduction.md"},
 74 |             {"name": "Running Locally", "path": "liquid-auth:docs:server:running-locally.md"}
 75 |           ]
 76 |         }
 77 |       }
 78 |     },
 79 |     "services": {
 80 |       "name": "Services",
 81 |       "description": "Service implementations",
 82 |       "path": "liquid-auth:services",
 83 |       "subcategories": {
 84 |         "api": {
 85 |           "name": "JavaScript API",
 86 |           "description": "JavaScript API implementation",
 87 |           "path": "liquid-auth:services:liquid-auth-api-js:src",
 88 |           "subcategories": {
 89 |             "auth": {
 90 |               "name": "Auth Controllers",
 91 |               "description": "Authentication controllers",
 92 |               "path": "liquid-auth:services:liquid-auth-api-js:src:auth",
 93 |               "documents": [
 94 |                 {"name": "Get User", "path": "liquid-auth:services:liquid-auth-api-js:src:auth:auth.controller.get.user.md"}
 95 |               ]
 96 |             },
 97 |             "assertion": {
 98 |               "name": "Assertion Controllers",
 99 |               "description": "Assertion controllers",
100 |               "path": "liquid-auth:services:liquid-auth-api-js:src:assertion",
101 |               "documents": [
102 |                 {"name": "Request", "path": "liquid-auth:services:liquid-auth-api-js:src:assertion:assertion.controller.post.request.md"},
103 |                 {"name": "Response", "path": "liquid-auth:services:liquid-auth-api-js:src:assertion:assertion.controller.post.response.md"}
104 |               ]
105 |             },
106 |             "attestation": {
107 |               "name": "Attestation Controllers",
108 |               "description": "Attestation controllers",
109 |               "path": "liquid-auth:services:liquid-auth-api-js:src:attestation",
110 |               "documents": [
111 |                 {"name": "Request", "path": "liquid-auth:services:liquid-auth-api-js:src:attestation:attestation.controller.post.request.md"}
112 |               ]
113 |             }
114 |           }
115 |         }
116 |       }
117 |     },
118 |     "sites": {
119 |       "name": "Example Sites",
120 |       "description": "Example implementations",
121 |       "path": "liquid-auth:sites",
122 |       "documents": [
123 |         {"name": "Express dApp", "path": "liquid-auth:sites:express-dapp:README.md"}
124 |       ]
125 |     }
126 |   }
127 | }
128 | 
```

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

```typescript
  1 | import { Transaction, makeApplicationCreateTxnFromObject, OnApplicationComplete } from 'algosdk';
  2 | import { McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js';
  3 | import { AppCreateTxnParams } from './types.js';
  4 | 
  5 | /**
  6 |  * Creates an application creation transaction
  7 |  * @param params The parameters for creating the application
  8 |  * @returns The created transaction
  9 |  * @throws {McpError} If the transaction creation fails
 10 |  */
 11 | export function makeApplicationCreateTxn(params: AppCreateTxnParams): Transaction {
 12 |   try {
 13 |     // Validate schema parameters
 14 |     if (typeof params.numGlobalInts !== 'number' || params.numGlobalInts < 0) {
 15 |       throw new Error('Invalid numGlobalInts');
 16 |     }
 17 |     if (typeof params.numGlobalByteSlices !== 'number' || params.numGlobalByteSlices < 0) {
 18 |       throw new Error('Invalid numGlobalByteSlices');
 19 |     }
 20 |     if (typeof params.numLocalInts !== 'number' || params.numLocalInts < 0) {
 21 |       throw new Error('Invalid numLocalInts');
 22 |     }
 23 |     if (typeof params.numLocalByteSlices !== 'number' || params.numLocalByteSlices < 0) {
 24 |       throw new Error('Invalid numLocalByteSlices');
 25 |     }
 26 | 
 27 |     // Create a new object with the required structure
 28 |     const txnParams = {
 29 |       from: params.from,
 30 |       approvalProgram: params.approvalProgram,
 31 |       clearProgram: params.clearProgram,
 32 |       suggestedParams: params.suggestedParams,
 33 |       note: params.note,
 34 |       lease: params.lease,
 35 |       rekeyTo: params.rekeyTo,
 36 |       appArgs: params.appArgs,
 37 |       accounts: params.accounts,
 38 |       foreignApps: params.foreignApps,
 39 |       foreignAssets: params.foreignAssets,
 40 |       boxes: params.boxes,
 41 |       extraPages: params.extraPages,
 42 |       onComplete: OnApplicationComplete.NoOpOC,
 43 |       // Schema parameters
 44 |       numGlobalInts: params.numGlobalInts,
 45 |       numGlobalByteSlices: params.numGlobalByteSlices,
 46 |       numLocalInts: params.numLocalInts,
 47 |       numLocalByteSlices: params.numLocalByteSlices
 48 |     };
 49 | 
 50 |     return makeApplicationCreateTxnFromObject(txnParams);
 51 |   } catch (error) {
 52 |     console.error('[MCP Error] Failed to create application transaction:', error);
 53 |     throw new McpError(
 54 |       ErrorCode.InternalError,
 55 |       `Failed to create application transaction: ${error instanceof Error ? error.message : 'Unknown error'}`
 56 |     );
 57 |   }
 58 | }
 59 | 
 60 | /**
 61 |  * Handles the application creation tool request
 62 |  * @param args The tool arguments
 63 |  * @param suggestedParams The suggested transaction parameters
 64 |  * @returns The transaction parameters
 65 |  * @throws {McpError} If the parameters are invalid
 66 |  */
 67 | export function handleCreateTxn(args: Record<string, unknown>, suggestedParams: any): Record<string, any> {
 68 |   try {
 69 |     if (!args.from || !args.approvalProgram || !args.clearProgram ||
 70 |         typeof args.numGlobalInts !== 'number' || typeof args.numGlobalByteSlices !== 'number' ||
 71 |         typeof args.numLocalInts !== 'number' || typeof args.numLocalByteSlices !== 'number') {
 72 |       console.error('[MCP Error] Invalid application creation parameters');
 73 |       throw new McpError(ErrorCode.InvalidParams, 'Invalid application creation parameters');
 74 |     }
 75 | 
 76 |     // Create transaction with proper parameter handling
 77 |     const txnParams: Record<string, any> = {
 78 |       from: String(args.from),
 79 |       fee: suggestedParams.fee,
 80 |       firstRound: suggestedParams.firstRound,
 81 |       lastRound: suggestedParams.lastRound,
 82 |       genesisID: suggestedParams.genesisID,
 83 |       genesisHash: suggestedParams.genesisHash,
 84 |       type: 'appl',
 85 |       onComplete: OnApplicationComplete.NoOpOC,
 86 |       // Schema parameters
 87 |       numGlobalInts: Number(args.numGlobalInts),
 88 |       numGlobalByteSlices: Number(args.numGlobalByteSlices),
 89 |       numLocalInts: Number(args.numLocalInts),
 90 |       numLocalByteSlices: Number(args.numLocalByteSlices)
 91 |     };
 92 | 
 93 |     // Handle required program fields - keep as base64 strings
 94 |     txnParams.approvalProgram = args.approvalProgram as string;
 95 |     txnParams.clearProgram = args.clearProgram as string;
 96 | 
 97 |     // Handle optional fields
 98 |     if (typeof args.extraPages === 'number') {
 99 |       txnParams.extraPages = args.extraPages;
100 |     }
101 |     
102 |     if (typeof args.note === 'string') {
103 |       const noteBytes = new TextEncoder().encode(args.note);
104 |       txnParams.note = Buffer.from(noteBytes).toString('base64');
105 |     }
106 |     if (typeof args.lease === 'string') {
107 |       const leaseBytes = new TextEncoder().encode(args.lease);
108 |       txnParams.lease = Buffer.from(leaseBytes).toString('base64');
109 |     }
110 |     if (typeof args.rekeyTo === 'string') {
111 |       txnParams.rekeyTo = String(args.rekeyTo);
112 |     }
113 |     if (Array.isArray(args.appArgs)) {
114 |       txnParams.appArgs = args.appArgs.map(arg => {
115 |         const bytes = new TextEncoder().encode(String(arg));
116 |         return Buffer.from(bytes).toString('base64');
117 |       });
118 |     }
119 |     if (Array.isArray(args.accounts)) {
120 |       txnParams.accounts = args.accounts.filter((acc): acc is string => typeof acc === 'string');
121 |     }
122 |     if (Array.isArray(args.foreignApps)) {
123 |       txnParams.foreignApps = args.foreignApps.filter((app): app is number => typeof app === 'number');
124 |     }
125 |     if (Array.isArray(args.foreignAssets)) {
126 |       txnParams.foreignAssets = args.foreignAssets.filter((asset): asset is number => typeof asset === 'number');
127 |     }
128 | 
129 |     return txnParams;
130 |   } catch (error) {
131 |     if (error instanceof McpError) {
132 |       throw error;
133 |     }
134 |     console.error('[MCP Error] Failed to handle application creation:', error);
135 |     throw new McpError(
136 |       ErrorCode.InternalError,
137 |       `Failed to handle application creation: ${error instanceof Error ? error.message : 'Unknown error'}`
138 |     );
139 |   }
140 | }
141 | 
```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:code:classes:types_config.UpdatableConfig.md:
--------------------------------------------------------------------------------

```markdown
  1 | [@algorandfoundation/algokit-utils](../README.md) / [types/config](../modules/types_config.md) / UpdatableConfig
  2 | 
  3 | # Class: UpdatableConfig
  4 | 
  5 | [types/config](../modules/types_config.md).UpdatableConfig
  6 | 
  7 | Updatable AlgoKit config
  8 | 
  9 | ## Implements
 10 | 
 11 | - `Readonly`\<[`Config`](../interfaces/types_config.Config.md)\>
 12 | 
 13 | ## Table of contents
 14 | 
 15 | ### Constructors
 16 | 
 17 | - [constructor](types_config.UpdatableConfig.md#constructor)
 18 | 
 19 | ### Properties
 20 | 
 21 | - [config](types_config.UpdatableConfig.md#config)
 22 | 
 23 | ### Accessors
 24 | 
 25 | - [debug](types_config.UpdatableConfig.md#debug)
 26 | - [events](types_config.UpdatableConfig.md#events)
 27 | - [logger](types_config.UpdatableConfig.md#logger)
 28 | - [maxSearchDepth](types_config.UpdatableConfig.md#maxsearchdepth)
 29 | - [populateAppCallResources](types_config.UpdatableConfig.md#populateappcallresources)
 30 | - [projectRoot](types_config.UpdatableConfig.md#projectroot)
 31 | - [traceAll](types_config.UpdatableConfig.md#traceall)
 32 | - [traceBufferSizeMb](types_config.UpdatableConfig.md#tracebuffersizemb)
 33 | 
 34 | ### Methods
 35 | 
 36 | - [configure](types_config.UpdatableConfig.md#configure)
 37 | - [getLogger](types_config.UpdatableConfig.md#getlogger)
 38 | - [withDebug](types_config.UpdatableConfig.md#withdebug)
 39 | 
 40 | ## Constructors
 41 | 
 42 | ### constructor
 43 | 
 44 | • **new UpdatableConfig**(): [`UpdatableConfig`](types_config.UpdatableConfig.md)
 45 | 
 46 | #### Returns
 47 | 
 48 | [`UpdatableConfig`](types_config.UpdatableConfig.md)
 49 | 
 50 | #### Defined in
 51 | 
 52 | [src/types/config.ts:90](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/config.ts#L90)
 53 | 
 54 | ## Properties
 55 | 
 56 | ### config
 57 | 
 58 | • `Private` **config**: [`Config`](../interfaces/types_config.Config.md)
 59 | 
 60 | #### Defined in
 61 | 
 62 | [src/types/config.ts:29](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/config.ts#L29)
 63 | 
 64 | ## Accessors
 65 | 
 66 | ### debug
 67 | 
 68 | • `get` **debug**(): `boolean`
 69 | 
 70 | #### Returns
 71 | 
 72 | `boolean`
 73 | 
 74 | #### Implementation of
 75 | 
 76 | Readonly.debug
 77 | 
 78 | #### Defined in
 79 | 
 80 | [src/types/config.ts:39](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/config.ts#L39)
 81 | 
 82 | ___
 83 | 
 84 | ### events
 85 | 
 86 | • `get` **events**(): [`AsyncEventEmitter`](types_async_event_emitter.AsyncEventEmitter.md)
 87 | 
 88 | #### Returns
 89 | 
 90 | [`AsyncEventEmitter`](types_async_event_emitter.AsyncEventEmitter.md)
 91 | 
 92 | #### Implementation of
 93 | 
 94 | Readonly.events
 95 | 
 96 | #### Defined in
 97 | 
 98 | [src/types/config.ts:59](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/config.ts#L59)
 99 | 
100 | ___
101 | 
102 | ### logger
103 | 
104 | • `get` **logger**(): [`Logger`](../modules/types_logging.md#logger)
105 | 
106 | #### Returns
107 | 
108 | [`Logger`](../modules/types_logging.md#logger)
109 | 
110 | #### Implementation of
111 | 
112 | Readonly.logger
113 | 
114 | #### Defined in
115 | 
116 | [src/types/config.ts:35](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/config.ts#L35)
117 | 
118 | ___
119 | 
120 | ### maxSearchDepth
121 | 
122 | • `get` **maxSearchDepth**(): `number`
123 | 
124 | #### Returns
125 | 
126 | `number`
127 | 
128 | #### Implementation of
129 | 
130 | Readonly.maxSearchDepth
131 | 
132 | #### Defined in
133 | 
134 | [src/types/config.ts:55](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/config.ts#L55)
135 | 
136 | ___
137 | 
138 | ### populateAppCallResources
139 | 
140 | • `get` **populateAppCallResources**(): `boolean`
141 | 
142 | #### Returns
143 | 
144 | `boolean`
145 | 
146 | #### Implementation of
147 | 
148 | Readonly.populateAppCallResources
149 | 
150 | #### Defined in
151 | 
152 | [src/types/config.ts:31](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/config.ts#L31)
153 | 
154 | ___
155 | 
156 | ### projectRoot
157 | 
158 | • `get` **projectRoot**(): ``null`` \| `string`
159 | 
160 | #### Returns
161 | 
162 | ``null`` \| `string`
163 | 
164 | #### Implementation of
165 | 
166 | Readonly.projectRoot
167 | 
168 | #### Defined in
169 | 
170 | [src/types/config.ts:43](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/config.ts#L43)
171 | 
172 | ___
173 | 
174 | ### traceAll
175 | 
176 | • `get` **traceAll**(): `boolean`
177 | 
178 | #### Returns
179 | 
180 | `boolean`
181 | 
182 | #### Implementation of
183 | 
184 | Readonly.traceAll
185 | 
186 | #### Defined in
187 | 
188 | [src/types/config.ts:47](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/config.ts#L47)
189 | 
190 | ___
191 | 
192 | ### traceBufferSizeMb
193 | 
194 | • `get` **traceBufferSizeMb**(): `number`
195 | 
196 | #### Returns
197 | 
198 | `number`
199 | 
200 | #### Implementation of
201 | 
202 | Readonly.traceBufferSizeMb
203 | 
204 | #### Defined in
205 | 
206 | [src/types/config.ts:51](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/config.ts#L51)
207 | 
208 | ## Methods
209 | 
210 | ### configure
211 | 
212 | ▸ **configure**(`newConfig`): `void`
213 | 
214 | Update the AlgoKit configuration with your own configuration settings
215 | 
216 | #### Parameters
217 | 
218 | | Name | Type | Description |
219 | | :------ | :------ | :------ |
220 | | `newConfig` | `Partial`\<[`Config`](../interfaces/types_config.Config.md)\> | Partial or complete config to replace |
221 | 
222 | #### Returns
223 | 
224 | `void`
225 | 
226 | #### Defined in
227 | 
228 | [src/types/config.ts:107](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/config.ts#L107)
229 | 
230 | ___
231 | 
232 | ### getLogger
233 | 
234 | ▸ **getLogger**(`returnNullLogger?`): [`Logger`](../modules/types_logging.md#logger)
235 | 
236 | Returns the current logger, or the null logger if true is passed in to `returnNullLogger`
237 | 
238 | #### Parameters
239 | 
240 | | Name | Type | Description |
241 | | :------ | :------ | :------ |
242 | | `returnNullLogger?` | `boolean` | Whether or not to return the null logger |
243 | 
244 | #### Returns
245 | 
246 | [`Logger`](../modules/types_logging.md#logger)
247 | 
248 | The requested logger
249 | 
250 | #### Defined in
251 | 
252 | [src/types/config.ts:68](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/config.ts#L68)
253 | 
254 | ___
255 | 
256 | ### withDebug
257 | 
258 | ▸ **withDebug**(`lambda`): `void`
259 | 
260 | Temporarily run with debug set to true.
261 | 
262 | #### Parameters
263 | 
264 | | Name | Type | Description |
265 | | :------ | :------ | :------ |
266 | | `lambda` | () => `unknown` | A lambda expression with code to run with debug config set to true |
267 | 
268 | #### Returns
269 | 
270 | `void`
271 | 
272 | #### Defined in
273 | 
274 | [src/types/config.ts:80](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/config.ts#L80)
275 | 
```

--------------------------------------------------------------------------------
/llms.txt:
--------------------------------------------------------------------------------

```
  1 | # llms.txt - Optimized Documentation for AI Developer Tools
  2 | 
  3 | project_name: algorand-mcp
  4 | version: 2.7.6
  5 | description: Model Context Protocol (MCP) server for Algorand blockchain interactions, providing tools and resources for account management, asset operations, application interactions, and transaction handling
  6 | base_url: https://github.com/GoPlausible/algorand-mcp
  7 | docs_url: https://github.com/GoPlausible/algorand-mcp/blob/main/packages/server/README.md
  8 | 
  9 | # API Endpoints
 10 | 
 11 | ## Tools
 12 | 
 13 | ### Transaction Tools
 14 |   - /tools/transaction/account
 15 |     - make_payment_txn - Create payment transactions
 16 |     - make_keyreg_txn - Create key registration transactions
 17 |   
 18 |   - /tools/transaction/asset
 19 |     - make_asset_create_txn - Create new assets
 20 |     - make_asset_config_txn - Modify asset configuration
 21 |     - make_asset_destroy_txn - Remove assets
 22 |     - make_asset_freeze_txn - Freeze/unfreeze assets
 23 |     - make_asset_transfer_txn - Transfer assets between accounts
 24 |   
 25 |   - /tools/transaction/application
 26 |     - make_app_create_txn - Deploy new applications
 27 |     - make_app_update_txn - Update application code
 28 |     - make_app_delete_txn - Remove applications
 29 |     - make_app_optin_txn - Opt into applications
 30 |     - make_app_closeout_txn - Close out from applications
 31 |     - make_app_clear_txn - Clear application state
 32 |     - make_app_call_txn - Call application methods
 33 |   
 34 |   - /tools/transaction/general
 35 |     - assign_group_id - Assign group ID to transactions
 36 |     - sign_transaction - Sign transactions
 37 |     - sign_bytes - Sign arbitrary bytes
 38 |     - encode_obj - Encode objects to msgpack
 39 |     - decode_obj - Decode msgpack to objects
 40 | 
 41 | ### API Tools
 42 |   - /tools/algod
 43 |     - api_algod_get_account_info - Get account information
 44 |     - api_algod_get_account_application_info - Get account's application info
 45 |     - api_algod_get_account_asset_info - Get account's asset info
 46 |     - api_algod_get_application_by_id - Get application information
 47 |     - api_algod_get_application_box - Get application box
 48 |     - api_algod_get_application_boxes - Get all application boxes
 49 |     - api_algod_get_asset_by_id - Get asset information
 50 |     - api_algod_get_pending_transaction - Get pending transaction
 51 |     - api_algod_get_pending_transactions - Get all pending transactions
 52 |     - api_algod_get_transaction_params - Get suggested parameters
 53 |     - api_algod_get_node_status - Get node status
 54 |   
 55 |   - /tools/indexer
 56 |     - api_indexer_lookup_account_by_id - Get account details
 57 |     - api_indexer_lookup_account_assets - Get account assets
 58 |     - api_indexer_lookup_account_created_applications - Get created apps
 59 |     - api_indexer_lookup_applications - Get application info
 60 |     - api_indexer_lookup_asset_by_id - Get asset details
 61 |     - api_indexer_lookup_asset_balances - Get asset holders
 62 |     - api_indexer_search_for_transactions - Search transactions
 63 |     - api_indexer_lookup_transaction_by_id - Get transaction details
 64 | 
 65 | ### Utility Tools
 66 |   - /tools/utility
 67 |     - validate_address - Validate Algorand addresses
 68 |     - encode_address - Encode public key to address
 69 |     - decode_address - Decode address to public key
 70 |     - get_application_address - Get app address from ID
 71 |     - bytes_to_bigint - Convert bytes to BigInt
 72 |     - bigint_to_bytes - Convert BigInt to bytes
 73 |     - encode_uint64 - Encode uint64 to bytes
 74 |     - decode_uint64 - Decode bytes to uint64
 75 | 
 76 | ### ARC-26 Tools
 77 |   - /tools/arc26
 78 |     - generate_algorand_uri - Generate Algorand URI
 79 |     - generate_qr_code - Generate QR code for URI
 80 | 
 81 | ## Resources
 82 | 
 83 | ### Wallet Resources
 84 |   - algorand://wallet/secretkey
 85 |     - Secret key of the wallet in hex format
 86 |   - algorand://wallet/publickey
 87 |     - Public key of the wallet in hex format
 88 |   - algorand://wallet/mnemonic
 89 |     - Mnemonic phrase of the wallet
 90 |   - algorand://wallet/address
 91 |     - Algorand address of the wallet
 92 |   - algorand://wallet/account
 93 |     - Algorand account balance and asset holdings
 94 |   - algorand://wallet/assets
 95 |     - Asset holdings for Wallet account
 96 | 
 97 | ### Knowledge Resources
 98 |   - algorand://knowledge/taxonomy
 99 |     - Full knowledge taxonomy
100 |   - algorand://knowledge/taxonomy/arcs
101 |     - Algorand Request for Comments (ARCs)
102 |   - algorand://knowledge/taxonomy/sdks
103 |     - Software Development Kits documentation
104 |   - algorand://knowledge/taxonomy/algokit
105 |     - AlgoKit development tools and CLI
106 |   - algorand://knowledge/taxonomy/algokit-utils
107 |     - AlgoKit utility libraries
108 |   - algorand://knowledge/taxonomy/tealscript
109 |     - TEALScript smart contract language
110 |   - algorand://knowledge/taxonomy/puya
111 |     - Puya smart contract language
112 |   - algorand://knowledge/taxonomy/liquid-auth
113 |     - Liquid authentication system
114 |   - algorand://knowledge/taxonomy/python
115 |     - Python development resources
116 |   - algorand://knowledge/taxonomy/developers
117 |     - Comprehensive developer documentation
118 |   - algorand://knowledge/taxonomy/clis
119 |     - CLI tools documentation
120 |   - algorand://knowledge/taxonomy/nodes
121 |     - Node management documentation
122 |   - algorand://knowledge/taxonomy/details
123 |     - Detailed technical documentation
124 | 
125 | # Authentication
126 | auth_method: Environment Variables
127 | auth_details: Requires Algorand node access credentials configured via environment variables
128 | 
129 | # Rate Limits
130 | rate_limit: Determined by connected Algorand node
131 | rate_limit_upgrade_url: N/A - Self-hosted
132 | 
133 | # SDKs
134 | sdks:
135 |   - language: JavaScript/TypeScript
136 |     sdk_url: https://www.npmjs.com/package/algosdk
137 |     version: 2.9.0
138 |   - language: TypeScript
139 |     sdk_url: https://www.npmjs.com/package/@modelcontextprotocol/sdk
140 |     version: 1.6.1
141 | 
142 | # Support
143 | support_contact: GitHub Issues
144 | support_url: https://github.com/GoPlausible/algorand-mcp/issues
145 | 
```

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

```markdown
  1 | [algosdk](../README.md) / [Exports](../modules.md) / [modelsv2](../modules/modelsv2.md) / SimulateUnnamedResourcesAccessed
  2 | 
  3 | # Class: SimulateUnnamedResourcesAccessed
  4 | 
  5 | [modelsv2](../modules/modelsv2.md).SimulateUnnamedResourcesAccessed
  6 | 
  7 | These are resources that were accessed by this group that would normally have
  8 | caused failure, but were allowed in simulation. Depending on where this object
  9 | is in the response, the unnamed resources it contains may or may not qualify for
 10 | group resource sharing. If this is a field in SimulateTransactionGroupResult,
 11 | the resources do qualify, but if this is a field in SimulateTransactionResult,
 12 | they do not qualify. In order to make this group valid for actual submission,
 13 | resources that qualify for group sharing can be made available by any
 14 | transaction of the group; otherwise, resources must be placed in the same
 15 | transaction which accessed them.
 16 | 
 17 | ## Hierarchy
 18 | 
 19 | - `default`
 20 | 
 21 |   ↳ **`SimulateUnnamedResourcesAccessed`**
 22 | 
 23 | ## Table of contents
 24 | 
 25 | ### Constructors
 26 | 
 27 | - [constructor](modelsv2.SimulateUnnamedResourcesAccessed.md#constructor)
 28 | 
 29 | ### Properties
 30 | 
 31 | - [accounts](modelsv2.SimulateUnnamedResourcesAccessed.md#accounts)
 32 | - [appLocals](modelsv2.SimulateUnnamedResourcesAccessed.md#applocals)
 33 | - [apps](modelsv2.SimulateUnnamedResourcesAccessed.md#apps)
 34 | - [assetHoldings](modelsv2.SimulateUnnamedResourcesAccessed.md#assetholdings)
 35 | - [assets](modelsv2.SimulateUnnamedResourcesAccessed.md#assets)
 36 | - [attribute\_map](modelsv2.SimulateUnnamedResourcesAccessed.md#attribute_map)
 37 | - [boxes](modelsv2.SimulateUnnamedResourcesAccessed.md#boxes)
 38 | - [extraBoxRefs](modelsv2.SimulateUnnamedResourcesAccessed.md#extraboxrefs)
 39 | 
 40 | ### Methods
 41 | 
 42 | - [get\_obj\_for\_encoding](modelsv2.SimulateUnnamedResourcesAccessed.md#get_obj_for_encoding)
 43 | - [from\_obj\_for\_encoding](modelsv2.SimulateUnnamedResourcesAccessed.md#from_obj_for_encoding)
 44 | 
 45 | ## Constructors
 46 | 
 47 | ### constructor
 48 | 
 49 | • **new SimulateUnnamedResourcesAccessed**(`«destructured»`)
 50 | 
 51 | Creates a new `SimulateUnnamedResourcesAccessed` object.
 52 | 
 53 | #### Parameters
 54 | 
 55 | | Name | Type |
 56 | | :------ | :------ |
 57 | | `«destructured»` | `Object` |
 58 | | › `accounts?` | `string`[] |
 59 | | › `appLocals?` | [`ApplicationLocalReference`](modelsv2.ApplicationLocalReference.md)[] |
 60 | | › `apps?` | (`number` \| `bigint`)[] |
 61 | | › `assetHoldings?` | [`AssetHoldingReference`](modelsv2.AssetHoldingReference.md)[] |
 62 | | › `assets?` | (`number` \| `bigint`)[] |
 63 | | › `boxes?` | [`BoxReference`](modelsv2.BoxReference.md)[] |
 64 | | › `extraBoxRefs?` | `number` \| `bigint` |
 65 | 
 66 | #### Overrides
 67 | 
 68 | BaseModel.constructor
 69 | 
 70 | #### Defined in
 71 | 
 72 | client/v2/algod/models/types.ts:4945
 73 | 
 74 | ## Properties
 75 | 
 76 | ### accounts
 77 | 
 78 | • `Optional` **accounts**: `string`[]
 79 | 
 80 | The unnamed accounts that were referenced. The order of this array is arbitrary.
 81 | 
 82 | #### Defined in
 83 | 
 84 | client/v2/algod/models/types.ts:4893
 85 | 
 86 | ___
 87 | 
 88 | ### appLocals
 89 | 
 90 | • `Optional` **appLocals**: [`ApplicationLocalReference`](modelsv2.ApplicationLocalReference.md)[]
 91 | 
 92 | The unnamed application local states that were referenced. The order of this
 93 | array is arbitrary.
 94 | 
 95 | #### Defined in
 96 | 
 97 | client/v2/algod/models/types.ts:4899
 98 | 
 99 | ___
100 | 
101 | ### apps
102 | 
103 | • `Optional` **apps**: (`number` \| `bigint`)[]
104 | 
105 | The unnamed applications that were referenced. The order of this array is
106 | arbitrary.
107 | 
108 | #### Defined in
109 | 
110 | client/v2/algod/models/types.ts:4905
111 | 
112 | ___
113 | 
114 | ### assetHoldings
115 | 
116 | • `Optional` **assetHoldings**: [`AssetHoldingReference`](modelsv2.AssetHoldingReference.md)[]
117 | 
118 | The unnamed asset holdings that were referenced. The order of this array is
119 | arbitrary.
120 | 
121 | #### Defined in
122 | 
123 | client/v2/algod/models/types.ts:4911
124 | 
125 | ___
126 | 
127 | ### assets
128 | 
129 | • `Optional` **assets**: (`number` \| `bigint`)[]
130 | 
131 | The unnamed assets that were referenced. The order of this array is arbitrary.
132 | 
133 | #### Defined in
134 | 
135 | client/v2/algod/models/types.ts:4916
136 | 
137 | ___
138 | 
139 | ### attribute\_map
140 | 
141 | • **attribute\_map**: `Record`\<`string`, `string`\>
142 | 
143 | #### Inherited from
144 | 
145 | BaseModel.attribute\_map
146 | 
147 | #### Defined in
148 | 
149 | client/v2/basemodel.ts:56
150 | 
151 | ___
152 | 
153 | ### boxes
154 | 
155 | • `Optional` **boxes**: [`BoxReference`](modelsv2.BoxReference.md)[]
156 | 
157 | The unnamed boxes that were referenced. The order of this array is arbitrary.
158 | 
159 | #### Defined in
160 | 
161 | client/v2/algod/models/types.ts:4921
162 | 
163 | ___
164 | 
165 | ### extraBoxRefs
166 | 
167 | • `Optional` **extraBoxRefs**: `number` \| `bigint`
168 | 
169 | The number of extra box references used to increase the IO budget. This is in
170 | addition to the references defined in the input transaction group and any
171 | referenced to unnamed boxes.
172 | 
173 | #### Defined in
174 | 
175 | client/v2/algod/models/types.ts:4928
176 | 
177 | ## Methods
178 | 
179 | ### get\_obj\_for\_encoding
180 | 
181 | ▸ **get_obj_for_encoding**(`binary?`): `Record`\<`string`, `any`\>
182 | 
183 | Get an object ready for encoding to either JSON or msgpack.
184 | 
185 | #### Parameters
186 | 
187 | | Name | Type | Default value | Description |
188 | | :------ | :------ | :------ | :------ |
189 | | `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. |
190 | 
191 | #### Returns
192 | 
193 | `Record`\<`string`, `any`\>
194 | 
195 | #### Inherited from
196 | 
197 | BaseModel.get\_obj\_for\_encoding
198 | 
199 | #### Defined in
200 | 
201 | client/v2/basemodel.ts:65
202 | 
203 | ___
204 | 
205 | ### from\_obj\_for\_encoding
206 | 
207 | ▸ `Static` **from_obj_for_encoding**(`data`): [`SimulateUnnamedResourcesAccessed`](modelsv2.SimulateUnnamedResourcesAccessed.md)
208 | 
209 | #### Parameters
210 | 
211 | | Name | Type |
212 | | :------ | :------ |
213 | | `data` | `Record`\<`string`, `any`\> |
214 | 
215 | #### Returns
216 | 
217 | [`SimulateUnnamedResourcesAccessed`](modelsv2.SimulateUnnamedResourcesAccessed.md)
218 | 
219 | #### Defined in
220 | 
221 | client/v2/algod/models/types.ts:4983
222 | 
```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:capabilities:indexer.md:
--------------------------------------------------------------------------------

```markdown
 1 | # Indexer lookups / searching
 2 | 
 3 | Indexer lookups / searching is a higher-order use case capability provided by AlgoKit Utils that builds on top of the core capabilities. It provides type-safe indexer API wrappers (no more `Record<string, any>` pain), including automatic pagination control.
 4 | 
 5 | To see some usage examples check out the [automated tests](../../src/indexer-lookup.spec.ts).
 6 | 
 7 | To import the indexer functions you can:
 8 | 
 9 | ```typescript
10 | import { indexer } from '@algorandfoundation/algokit-utils'
11 | ```
12 | 
13 | All of the indexer functions require you to pass in an indexer SDK client, which you can get from [`AlgorandClient`](./algorand-client.md) via `algorand.client.indexer`. These calls are not made more easy to call by exposing via `AlgorandClient` and thus not requiring the indexer SDK client to be passed in. This is because we want to add a tiny bit of friction to using indexer, given it's an expensive API to run for node providers, the data from it can sometimes be slow and stale, and there are alternatives [that](https://github.com/algorandfoundation/algokit-subscriber-ts) [allow](https://github.com/algorand/conduit) individual projects to index subsets of chain data specific to them as a preferred option. In saying that, it's a very useful API for doing ad hoc data retrieval, writing automated tests, and many other uses.
14 | 
15 | ## Indexer wrapper functions
16 | 
17 | There is a subset of [indexer API calls](https://developer.algorand.org/docs/rest-apis/indexer) that are exposed as easy to use methods with correct typing exposed and automatic pagination for multi item returns.
18 | 
19 | - [`indexer.lookupTransactionById(transactionId, algorand.client.indexer)`](../code/modules/index.md#lookuptransactionbyid) - Finds a transaction by ID
20 | - [`indexer.lookupAccountByAddress(accountAddress, algorand.client.indexer)`](../code/modules/index.md#lookupaccountbyaddress) - Finds an account by address
21 | - [`indexer.lookupAccountCreatedApplicationByAddress(algorand.client.indexer, address, getAll?, paginationLimit?)`](../code/modules/index.md#lookupaccountcreatedapplicationbyaddress) - Finds all applications created for an account
22 | - [`indexer.lookupAssetHoldings(algorand.client.indexer, assetId, options?, paginationLimit?)`](../code/modules/index.md#lookupassetholdings) - Finds all asset holdings for the given asset
23 | - [`indexer.searchTransactions(algorand.client.indexer, searchCriteria, paginationLimit?)`](../code/modules/index.md#searchtransactions) - Search for transactions with a given set of criteria
24 | - [`indexer.executePaginatedRequest(extractItems, buildRequest)`](../code/modules/index.md#executepaginatedrequest) - Execute the given indexer request with automatic pagination
25 | 
26 | ### Search transactions example
27 | 
28 | To use the `indexer.searchTransaction` method, you can follow this example as a starting point:
29 | 
30 | ```typescript
31 | const transactions = await indexer.searchTransactions(algorand.client.indexer, (s) =>
32 |   s.txType('pay').addressRole('sender').address(myAddress),
33 | )
34 | ```
35 | 
36 | ### Automatic pagination example
37 | 
38 | To use the `indexer.executePaginatedRequest` method, you can follow this example as a starting point:
39 | 
40 | ```typescript
41 | const transactions = await executePaginatedRequest(
42 |   (response: TransactionSearchResults) => {
43 |     return response.transactions
44 |   },
45 |   (nextToken) => {
46 |     let s = algorand.client.indexer.searchForTransactions().txType('pay').address(myAddress).limit(1000)
47 |     if (nextToken) {
48 |       s = s.nextToken(nextToken)
49 |     }
50 |     return s
51 |   },
52 | )
53 | ```
54 | 
55 | It takes the first lambda to translate the raw response into the array that should keep getting appended as the pagination is followed and the second lambda constructs the request (without the `.do()` call), including populating the pagination token.
56 | 
57 | ## Indexer API response types
58 | 
59 | The response model type definitions for the majority of [indexer API](https://developer.algorand.org/docs/rest-apis/indexer) are exposed from the `types/indexer` namespace in AlgoKit Utils. This is so that you can have a much better experience than the default response type of `Record<string, any>` from the indexer client in `algosdk`. If there is a type you want to use that is missing feel free to [submit a pull request](https://github.com/algorandfoundation/algokit-utils-ts/pulls) to [add the type(s)](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts).
60 | 
61 | To access these types you can import them:
62 | 
63 | ```typescript
64 | import { /* ... */ } '@algorandfoundation/algokit-utils/types/indexer'
65 | ```
66 | 
67 | As a general convention, the response types are named `{TypeName}Result` for a single item result and `{TypeName}Results` for a multiple item result where `{TypeName}` is:
68 | 
69 | - `{Entity}Lookup` for an API call response that returns a lookup for a single entity e.g. `AssetLookupResult`
70 | - `{Entity}Search` for an API call response that searches for a type of entity e.g. `TransactionSearchResults`
71 | - The `UpperCamelCase` name of a given model type as specified in the [official documentation](https://developer.algorand.org/docs/rest-apis/indexer) for any sub-types within a response e.g. `ApplicationResult`
72 | 
73 | The reason `Result/Results` is suffixed to the type is to avoid type name clashes for commonly used types from `algosdk` like `Transaction`.
74 | 
75 | To use these types with an indexer call you simply need to find the right result type and cast the response from `.do()` for the call in question, e.g.:
76 | 
77 | ```typescript
78 | import { TransactionLookupResult } from '@algorandfoundation/algokit-utils/types/indexer'
79 | 
80 | ...
81 | 
82 | const transaction = (await algorand.client.indexer.lookupTransactionByID(transactionId).do()) as TransactionLookupResult
83 | ```
84 | 
```

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

```markdown
  1 | ---
  2 | arc: 79
  3 | title: URI scheme, App NoOp call extension
  4 | description: A specification for encoding NoOp Application call Transactions in a URI format.
  5 | author: MG (@emg110)
  6 | discussions-to: https://github.com/algorandfoundation/ARCs/issues/319
  7 | status: Final
  8 | type: Standards Track
  9 | category: Interface
 10 | sub-category: General
 11 | created: 2024-09-11
 12 | extends: 26
 13 | ---
 14 | 
 15 | ## Abstract
 16 | NoOp calls are Generic application calls to execute the Algorand smart contract ApprovalPrograms.
 17 | 
 18 | This URI specification proposes an extension to the base Algorand URI encoding standard ([ARC-26](./arc-0026.md)) that specifies encoding of application NoOp transactions into <a href="https://www.rfc-editor.org/rfc/rfc3986">RFC 3986</a> standard URIs.
 19 | 
 20 | ## Specification
 21 | 
 22 | ### General format
 23 | 
 24 | As in [ARC-26](./arc-0026.md), 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 transaction parameters.
 25 | 
 26 | Elements of the query component may contain characters outside the valid range. These are encoded differently depending on their expected character set. The text components (note, xnote) 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. The binary components (args, refs, etc.) **MUST** be encoded with base64url as specified in <a href="https://www.rfc-editor.org/rfc/rfc4648.html#section-5">RFC 4648 section 5</a>.
 27 | 
 28 | ### ABNF Grammar
 29 | 
 30 | ```
 31 | algorandurn     = "algorand://" algorandaddress [ "?" noopparams ]
 32 | algorandaddress = *base32
 33 | noopparams      = noopparam [ "&" noopparams ]
 34 | noopparam       = [ typeparam / appparam /  methodparam / argparam / boxparam / assetarrayparam / accountarrayparam / apparrayparam / feeparam / otherparam ]
 35 | typeparam       = "type=appl"
 36 | appparam        = "app=" *digit
 37 | methodparam     = "method=" *qchar
 38 | boxparam        = "box=" *qbase64url
 39 | argparam        = "arg=" (*qchar | *digit)
 40 | feeparam        = "fee=" *digit
 41 | accountparam    = "account=" *base32
 42 | assetparam      = "asset=" *digit
 43 | otherparam      = qchar *qchar [ "=" *qchar ]
 44 | ```
 45 | 
 46 | - "qchar" corresponds to valid characters of an RFC 3986 URI query component, excluding the "=" and "&" characters, which this specification takes as separators.
 47 | - "qbase64url" corresponds to valid characters of "base64url" encoding, as defined in <a href="https://www.rfc-editor.org/rfc/rfc4648.html#section-5">RFC 4648 section 5</a>
 48 | - All params from the base [ARC-26](./arc-0026.md) standard, are supported and usable if fit the NoOp application call context (e.g. note)
 49 | - As in the base [ARC-26](./arc-0026.md) standard, 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.
 50 | 
 51 | ### Query Keys
 52 | 
 53 | - address: Algorand address of transaction sender
 54 | 
 55 | - type: fixed to "appl". Used to disambiguate the transaction type from the base [ARC-26](./arc-0026.md) standard and other possible extensions
 56 | 
 57 | - app: The first reference is set to specify the called application (Algorand Smart Contract) ID and is mandatory. Additional references are optional and will be used in the Application NoOp call's foreign applications array.
 58 | 
 59 | - method: Specify the full method expression (e.g "example_method(uint64,uint64)void").
 60 | 
 61 | - arg: specify args used for calling NoOp method, to be encoded within URI.
 62 | 
 63 | - box: Box references to be used in Application NoOp method call box array.
 64 | 
 65 | - asset: Asset reference to be used in Application NoOp method call foreign assets array.
 66 | 
 67 | - account: Account or nfd address to be used in Application NoOp method call foreign accounts array.
 68 | 
 69 | - fee: Optional. An optional static fee to set for the transaction in microAlgos.
 70 | 
 71 | - (others): optional, for future extensions
 72 | 
 73 | Note 1: If the fee is omitted , it means that Minimum Fee is preferred to be used for transaction.
 74 | 
 75 | ### Template URI vs actionable URI
 76 | 
 77 | If the URI is constructed so that other dApps, wallets or protocols could use it with their runtime Algorand entities of interest, then :
 78 | 
 79 | - The placeholder account/app address in URI **MUST** be ZeroAddress ("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY5HFKQ"). Since ZeroAddress cannot initiate any action this approach is considered non-vulnerable and secure.
 80 | 
 81 | 
 82 | ### Example
 83 | 
 84 | Call claim(uint64,uint64)byte[] method on contract 11111111 paying a fee of 10000 micro ALGO from an specific address
 85 | 
 86 | ```
 87 | algorand://TMTAD6N22HCS2LKH7677L2KFLT3PAQWY6M4JFQFXQS32ECBFC23F57RYX4?type=appl&app=11111111&method=claim(uint64,uint64)byte[]&arg=20000&arg=474567&asset=45&fee=10000
 88 | ```
 89 | 
 90 | Call the same claim(uint64,uint64)byte[] method on contract 11111111 paying a default 1000 micro algo fee
 91 | 
 92 | ```
 93 | algorand://TMTAD6N22HCS2LKH7677L2KFLT3PAQWY6M4JFQFXQS32ECBFC23F57RYX4?type=appl&app=11111111&method=claim(uint64,uint64)byte[]&arg=20000&arg=474567&asset=45&app=22222222&app=33333333
 94 | ```
 95 | 
 96 | 
 97 | 
 98 | ## Rationale
 99 | 
100 | Algorand application NoOp method calls cover the majority of application transactions in Algorand and have a wide range of use-cases.
101 | For use-cases where the runtime knows exactly what the called application needs in terms of arguments and transaction arrays and there are no direct interactions, this extension will be required since ARC-26 standard does not currently support application calls.
102 | 
103 | ## Security Considerations
104 | 
105 | None.
106 | 
107 | ## Copyright
108 | 
109 | Copyright and related rights waived via <a href="https://creativecommons.org/publicdomain/zero/1.0/">CCO</a>.
110 | 
```

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

```markdown
  1 | [@algorandfoundation/algokit-utils](../README.md) / [index](index.md) / indexer
  2 | 
  3 | # Namespace: indexer
  4 | 
  5 | [index](index.md).indexer
  6 | 
  7 | ## Table of contents
  8 | 
  9 | ### Type Aliases
 10 | 
 11 | - [SearchForTransactions](index.indexer.md#searchfortransactions)
 12 | 
 13 | ### Functions
 14 | 
 15 | - [executePaginatedRequest](index.indexer.md#executepaginatedrequest)
 16 | - [lookupAccountByAddress](index.indexer.md#lookupaccountbyaddress)
 17 | - [lookupAccountCreatedApplicationByAddress](index.indexer.md#lookupaccountcreatedapplicationbyaddress)
 18 | - [lookupAssetHoldings](index.indexer.md#lookupassetholdings)
 19 | - [lookupTransactionById](index.indexer.md#lookuptransactionbyid)
 20 | - [searchTransactions](index.indexer.md#searchtransactions)
 21 | 
 22 | ## Type Aliases
 23 | 
 24 | ### SearchForTransactions
 25 | 
 26 | Ƭ **SearchForTransactions**: `ReturnType`\<`Indexer`[``"searchForTransactions"``]\>
 27 | 
 28 | #### Defined in
 29 | 
 30 | [src/indexer-lookup.ts:4](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/indexer-lookup.ts#L4)
 31 | 
 32 | ## Functions
 33 | 
 34 | ### executePaginatedRequest
 35 | 
 36 | ▸ **executePaginatedRequest**\<`TResult`, `TRequest`\>(`extractItems`, `buildRequest`): `Promise`\<`TResult`[]\>
 37 | 
 38 | #### Type parameters
 39 | 
 40 | | Name | Type |
 41 | | :------ | :------ |
 42 | | `TResult` | `TResult` |
 43 | | `TRequest` | extends `Object` |
 44 | 
 45 | #### Parameters
 46 | 
 47 | | Name | Type |
 48 | | :------ | :------ |
 49 | | `extractItems` | (`response`: `any`) => `TResult`[] |
 50 | | `buildRequest` | (`nextToken?`: `string`) => `TRequest` |
 51 | 
 52 | #### Returns
 53 | 
 54 | `Promise`\<`TResult`[]\>
 55 | 
 56 | #### Defined in
 57 | 
 58 | [src/indexer-lookup.ts:145](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/indexer-lookup.ts#L145)
 59 | 
 60 | ___
 61 | 
 62 | ### lookupAccountByAddress
 63 | 
 64 | ▸ **lookupAccountByAddress**(`accountAddress`, `indexer`): `Promise`\<`AccountResponse`\>
 65 | 
 66 | #### Parameters
 67 | 
 68 | | Name | Type | Description |
 69 | | :------ | :------ | :------ |
 70 | | `accountAddress` | `string` \| `Address` | The address of the account to look up |
 71 | | `indexer` | `IndexerClient` | An indexer client |
 72 | 
 73 | #### Returns
 74 | 
 75 | `Promise`\<`AccountResponse`\>
 76 | 
 77 | The result of the look-up
 78 | 
 79 | **`Deprecated`**
 80 | 
 81 | Use `indexer.lookupAccountByID(accountAddress).do()`.
 82 | Looks up an account by address using Indexer.
 83 | 
 84 | #### Defined in
 85 | 
 86 | [src/indexer-lookup.ts:26](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/indexer-lookup.ts#L26)
 87 | 
 88 | ___
 89 | 
 90 | ### lookupAccountCreatedApplicationByAddress
 91 | 
 92 | ▸ **lookupAccountCreatedApplicationByAddress**(`indexer`, `address`, `getAll?`, `paginationLimit?`): `Promise`\<`algosdk.indexerModels.Application`[]\>
 93 | 
 94 | Looks up applications that were created by the given address; will automatically paginate through all data.
 95 | 
 96 | #### Parameters
 97 | 
 98 | | Name | Type | Default value | Description |
 99 | | :------ | :------ | :------ | :------ |
100 | | `indexer` | `IndexerClient` | `undefined` | An indexer instance |
101 | | `address` | `string` \| `Address` | `undefined` | The address of the creator to look up |
102 | | `getAll` | `undefined` \| `boolean` | `undefined` | Whether or not to include deleted applications |
103 | | `paginationLimit?` | `number` | `undefined` | The number of records to return per paginated request, default 1000 |
104 | 
105 | #### Returns
106 | 
107 | `Promise`\<`algosdk.indexerModels.Application`[]\>
108 | 
109 | The list of application results
110 | 
111 | #### Defined in
112 | 
113 | [src/indexer-lookup.ts:38](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/indexer-lookup.ts#L38)
114 | 
115 | ___
116 | 
117 | ### lookupAssetHoldings
118 | 
119 | ▸ **lookupAssetHoldings**(`indexer`, `assetId`, `options?`, `paginationLimit?`): `Promise`\<`algosdk.indexerModels.MiniAssetHolding`[]\>
120 | 
121 | Looks up asset holdings for the given asset; will automatically paginate through all data.
122 | 
123 | #### Parameters
124 | 
125 | | Name | Type | Description |
126 | | :------ | :------ | :------ |
127 | | `indexer` | `IndexerClient` | An indexer instance |
128 | | `assetId` | `number` \| `bigint` | The ID of the asset to look up holdings for |
129 | | `options?` | [`LookupAssetHoldingsOptions`](../interfaces/types_indexer.LookupAssetHoldingsOptions.md) | Optional options to control the lookup |
130 | | `paginationLimit?` | `number` | The number of records to return per paginated request, default 1000 |
131 | 
132 | #### Returns
133 | 
134 | `Promise`\<`algosdk.indexerModels.MiniAssetHolding`[]\>
135 | 
136 | The list of application results
137 | 
138 | #### Defined in
139 | 
140 | [src/indexer-lookup.ts:72](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/indexer-lookup.ts#L72)
141 | 
142 | ___
143 | 
144 | ### lookupTransactionById
145 | 
146 | ▸ **lookupTransactionById**(`transactionId`, `indexer`): `Promise`\<`TransactionResponse`\>
147 | 
148 | #### Parameters
149 | 
150 | | Name | Type | Description |
151 | | :------ | :------ | :------ |
152 | | `transactionId` | `string` | The ID of the transaction to look up |
153 | | `indexer` | `IndexerClient` | An indexer client |
154 | 
155 | #### Returns
156 | 
157 | `Promise`\<`TransactionResponse`\>
158 | 
159 | The result of the look-up
160 | 
161 | **`Deprecated`**
162 | 
163 | Use `indexer.lookupTransactionByID(transactionId).do()`.
164 | Looks up a transaction by ID using Indexer.
165 | 
166 | #### Defined in
167 | 
168 | [src/indexer-lookup.ts:15](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/indexer-lookup.ts#L15)
169 | 
170 | ___
171 | 
172 | ### searchTransactions
173 | 
174 | ▸ **searchTransactions**(`indexer`, `searchCriteria`, `paginationLimit?`): `Promise`\<`algosdk.indexerModels.TransactionsResponse`\>
175 | 
176 | Allows transactions to be searched for the given criteria.
177 | 
178 | #### Parameters
179 | 
180 | | Name | Type | Description |
181 | | :------ | :------ | :------ |
182 | | `indexer` | `IndexerClient` | An indexer client |
183 | | `searchCriteria` | (`s`: `default`) => `default` | The criteria to search for |
184 | | `paginationLimit?` | `number` | The number of records to return per paginated request, default 1000 |
185 | 
186 | #### Returns
187 | 
188 | `Promise`\<`algosdk.indexerModels.TransactionsResponse`\>
189 | 
190 | The search results
191 | 
192 | #### Defined in
193 | 
194 | [src/indexer-lookup.ts:111](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/indexer-lookup.ts#L111)
195 | 
```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/docs:.walletconnect:walletconnect-schema.md:
--------------------------------------------------------------------------------

```markdown
  1 | title: Schema
  2 | 
  3 | # Background
  4 | 
  5 | - [WalletConnect](https://docs.walletconnect.org/) is an open protocol to communicate securely between mobile wallets and decentralized applications (dApps) using QR code scanning (desktop) or deep linking (mobile). It’s main use case allows users to sign transactions on web apps using a mobile wallet.
  6 | - v1 of WC (currently deployed) has first-party support for Ethereum chains, but it can be extended to other chains through custom message schema. [Binance Chain does this with their custom schema](https://docs.binance.org/guides/concepts/walletconnect.html#protocol-differences).
  7 | 
  8 | # Purpose
  9 | 
 10 | The purpose of this document is to define a custom WalletConnect schema for Algorand. The schema in this document is based on the [Algorand Foundation’s Wallet Transaction Signing API](https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0001.md), and it attempts to be as similar to that as possible. The main contribution of this document is to define how that schema can be used with WalletConnect.
 11 | 
 12 | # Schema
 13 | 
 14 | !!! Note
 15 |     All interfaces are defined in TypeScript. These interfaces are designed to be serializable to and from valid JSON objects.
 16 | 
 17 | A WalletConnect schema is a set of JSON-RPC 2.0 requests and responses. WalletConnect will send requests to the Algorand Wallet and will receive either signed transactions or failures as responses. All requests adhere to the following structure:
 18 | 
 19 | ```
 20 | interface JsonRpcRequest {
 21 |   id: number;
 22 |   jsonrpc: "2.0";
 23 |   method: string;
 24 |   params: any[];
 25 | }
 26 | ```
 27 | 
 28 | A successful request will return a response that adheres to the following structure:
 29 | 
 30 | ```
 31 | interface JsonRpcResponse {
 32 |   id: number; // will be the same as the request's id
 33 |   jsonrpc: "2.0";
 34 |   result: any;
 35 | }
 36 | ```
 37 | 
 38 | The Algorand schema consists of the requests and responses below.
 39 | 
 40 | ## algo_signTxn
 41 | 
 42 | This request is used to ask a wallet to sign one or more transactions in an atomic transaction group.
 43 | 
 44 | ### Request
 45 | 
 46 | This request adheres to the following structure:
 47 | 
 48 | ```
 49 | interface AlgoSignTxnRequest {
 50 |   id: number;
 51 |   jsonrpc: "2.0";
 52 |   method: "algo_signTxn";
 53 |   params: SignTxnParams;
 54 | }
 55 | ```
 56 | 
 57 | The parameters `SignTxnParams`, are defined as:
 58 | `type SignTxnParams = [WalletTransaction[], SignTxnOpts?];`
 59 | 
 60 | !!! Note 
 61 |     `SignTxnParams` is a [tuple with an optional element](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-0.html#optional-elements-in-tuple-types), meaning its length can be 1 or 2.
 62 | 
 63 | The first element in the tuple is an array of `WalletTransaction` objects. The length of this array must be between 1 and 16 (inclusive on both ends). Each transaction in the group (even ones not being signed by the wallet) must be an element in this array.
 64 | 
 65 | The second element in the tuple is an `SignTxnOpts` object, which is optional.
 66 | 
 67 | The `WalletTransaction` and `SignTxnOpts` types are defined as:
 68 | 
 69 | ```
 70 | interface WalletTransaction {
 71 |   /**
 72 |    * Base64 encoding of the canonical msgpack encoding of a     
 73 |    * Transaction.
 74 |    */
 75 |   txn: string;
 76 |  
 77 |   /**
 78 |    * Optional authorized address used to sign the transaction when 
 79 |    * the account is rekeyed. Also called the signor/sgnr.
 80 |    */
 81 |   authAddr?: AlgorandAddress;
 82 |  
 83 |   /**
 84 |    * Optional multisig metadata used to sign the transaction
 85 |    */
 86 |   msig?: MultisigMetadata;
 87 |  
 88 |   /**
 89 |    * Optional list of addresses that must sign the transactions
 90 |    */
 91 |   signers?: AlgorandAddress[];
 92 |  
 93 |   /**
 94 |    * Optional message explaining the reason of the transaction
 95 |    */
 96 |   message?: string;
 97 | }
 98 |  
 99 | interface SignTxnOpts {
100 |   /**
101 |    * Optional message explaining the reason of the group of 
102 |    * transactions.
103 |    */
104 |   message?: string;
105 |   
106 |   // other options may be present, but are not standard
107 | }
108 | ```
109 | 
110 | The above interfaces reference AlgorandAddress and MultisigMetadata types. These are defined as:
111 | 
112 | ```
113 | /**
114 |  * AlgorandAddress is a 58-character base32 string that represents an
115 |  * Algorand address with a checksum.
116 |  */
117 | type AlgorandAddress = string;
118 |  
119 | /**
120 |  * Options for creating and using a multisignature account.
121 |  */
122 | interface MultisigMetadata {
123 |   /**
124 |    * Multisig version.
125 |    */
126 |   version: number;
127 |  
128 |   /**
129 |    * Multisig threshold value. Authorization requires a subset of 
130 |    * signatures, equal to or greater than the threshold value.
131 |    */
132 |   threshold: number;
133 |  
134 |   /**
135 |    * List of Algorand addresses of possible signers for this
136 |    * multisig. Order is important.
137 |    */
138 |   addrs: AlgorandAddress[];
139 | }
140 | ```
141 | 
142 | A description for each parameter in `WalletTransaction` can be found here: https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0001.md#interface-wallettransaction
143 | 
144 | ### Response
145 | 
146 | If the wallet approves the request, it will send back the following response:
147 | 
148 | ```
149 | interface AlgoSignTxnResponse {
150 |   id: number;
151 |   jsonrpc: "2.0";
152 |   result: Array<string | null>;
153 | }
154 | ```
155 | 
156 | In this response, result is an array with the same length as the request params. For every integer `i` such that `0 <= i < result.length`:
157 | 
158 | - If the transaction at index `i` in the group should be signed by the wallet (i.e. `params[0][i].signers` is not an empty array) : `result[i]` will be a base64-encoded string containing the msgpack-encoded signed transaction `params[i].txn`.
159 | - Otherwise: `result[i]` will be null, since the wallet was not requested to sign this transaction.
160 | 
161 | If the wallet does not approve signing every transaction whose signature is being requested, the request must fail. A failure like this should be indicated in the rejection message as described [here](https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0001.md#error-standards).
162 | 
163 | # Future Additions
164 | 
165 | Possible future additions to the schema may include:
166 | 
167 | - A request type for wallets to sign a LogicSig program, resulting in a delegated LogicSig spending program for an account.
```

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

```markdown
  1 | # Global Storage in Algorand Smart Contracts
  2 | 
  3 | This guide demonstrates how to work with global state in Algorand smart contracts using Python. Global state allows contracts to store and manage data that is accessible across all interactions with the contract.
  4 | 
  5 | ## Initializing Global State
  6 | 
  7 | ```python
  8 | from algopy import (
  9 |     Account,
 10 |     Application,
 11 |     ARC4Contract,
 12 |     Asset,
 13 |     Bytes,
 14 |     GlobalState,
 15 |     UInt64,
 16 |     arc4,
 17 | )
 18 | 
 19 | class GlobalStorage(ARC4Contract):
 20 |     def __init__(self) -> None:
 21 |         # Integer storage
 22 |         self.global_int_full = GlobalState(UInt64(50))        # With default value
 23 |         self.global_int_simplified = UInt64(10)               # Simplified syntax
 24 |         self.global_int_no_default = GlobalState(UInt64)      # No default value
 25 | 
 26 |         # Bytes storage
 27 |         self.global_bytes_full = GlobalState(Bytes(b"Hello")) # With default value
 28 |         self.global_bytes_simplified = Bytes(b"Hello")        # Simplified syntax
 29 |         self.global_bytes_no_default = GlobalState(Bytes)     # No default value
 30 | 
 31 |         # Boolean storage
 32 |         self.global_bool_simplified = True                    # Simplified boolean
 33 |         self.global_bool_no_default = GlobalState(bool)       # No default value
 34 | 
 35 |         # Special types
 36 |         self.global_asset = GlobalState(Asset)               # Asset reference
 37 |         self.global_application = GlobalState(Application)    # Application reference
 38 |         self.global_account = GlobalState(Account)           # Account reference
 39 | ```
 40 | 
 41 | ### Key Points about Initialization
 42 | - Can use `GlobalState` with or without default values
 43 | - Simplified syntax available for basic types
 44 | - Supports various data types including integers, bytes, booleans
 45 | - Special types for assets, applications, and accounts
 46 | 
 47 | ## Reading Global State
 48 | 
 49 | ### Basic Reading
 50 | 
 51 | ```python
 52 | @arc4.abimethod
 53 | def get_global_state(self) -> UInt64:
 54 |     # Get value with default if not set
 55 |     return self.global_int_full.get(default=UInt64(0))
 56 | 
 57 | @arc4.abimethod
 58 | def maybe_global_state(self) -> tuple[UInt64, bool]:
 59 |     # Get value and existence flag
 60 |     int_value, int_exists = self.global_int_full.maybe()
 61 |     if not int_exists:
 62 |         int_value = UInt64(0)
 63 |     return int_value, int_exists
 64 | ```
 65 | 
 66 | ### Reading Different Types
 67 | 
 68 | ```python
 69 | @arc4.abimethod
 70 | def get_global_state_example(self) -> bool:
 71 |     # Reading integers
 72 |     assert self.global_int_full.get(default=UInt64(0)) == 50
 73 |     assert self.global_int_simplified == UInt64(10)
 74 |     
 75 |     # Reading bytes
 76 |     assert self.global_bytes_full.get(Bytes(b"default")) == b"Hello"
 77 |     
 78 |     # Reading special types
 79 |     asset_value, exists = self.global_asset.maybe()
 80 |     assert asset_value == Asset(UInt64(10))
 81 |     
 82 |     app_value, exists = self.global_application.maybe()
 83 |     assert app_value == Application(UInt64(10))
 84 |     
 85 |     return True
 86 | ```
 87 | 
 88 | ## Writing Global State
 89 | 
 90 | ### Basic Writing
 91 | 
 92 | ```python
 93 | @arc4.abimethod
 94 | def set_global_state(self, value: Bytes) -> None:
 95 |     self.global_bytes_full.value = value
 96 | 
 97 | @arc4.abimethod
 98 | def set_global_state_example(
 99 |     self,
100 |     value_bytes: Bytes,
101 |     value_asset: Asset,
102 |     *,
103 |     value_bool: bool,
104 | ) -> None:
105 |     # Setting different types
106 |     self.global_bytes_no_default.value = value_bytes
107 |     self.global_bool_no_default.value = value_bool
108 |     self.global_asset.value = value_asset
109 | ```
110 | 
111 | ## Deleting Global State
112 | 
113 | ```python
114 | @arc4.abimethod
115 | def del_global_state(self) -> bool:
116 |     # Delete a single value
117 |     del self.global_int_full.value
118 |     return True
119 | 
120 | @arc4.abimethod
121 | def del_global_state_example(self) -> bool:
122 |     # Delete multiple values
123 |     del self.global_bytes_no_default.value
124 |     del self.global_bool_no_default.value
125 |     del self.global_asset.value
126 |     return True
127 | ```
128 | 
129 | ## Value Property Access
130 | 
131 | ```python
132 | @arc4.abimethod
133 | def check_global_state_example(self) -> bool:
134 |     # Direct value access
135 |     assert self.global_int_full.value == 50
136 |     assert self.global_bytes_full.value == Bytes(b"Hello")
137 |     
138 |     # Simplified syntax access
139 |     assert self.global_int_simplified == 10
140 |     assert self.global_bytes_simplified == b"Hello"
141 |     assert bool(self.global_bool_simplified)
142 |     
143 |     # Check existence
144 |     assert not self.global_int_no_default
145 |     assert not self.global_bytes_no_default
146 |     
147 |     # Special types access
148 |     assert self.global_asset.value == Asset(UInt64(10))
149 |     assert self.global_application.value == Application(UInt64(10))
150 |     assert self.global_account.value == Account(Bytes(b"Hello"))
151 |     return True
152 | ```
153 | 
154 | ## Best Practices
155 | 
156 | 1. **Initialization**:
157 |    - Use appropriate types for your data
158 |    - Consider whether default values are needed
159 |    - Use simplified syntax when appropriate
160 |    - Document the purpose of each state variable
161 | 
162 | 2. **Reading State**:
163 |    - Use `get()` with default values for safe access
164 |    - Use `maybe()` when you need to check existence
165 |    - Handle non-existent values gracefully
166 |    - Verify type consistency
167 | 
168 | 3. **Writing State**:
169 |    - Validate data before writing
170 |    - Use appropriate type conversions
171 |    - Consider storage costs
172 |    - Update related state consistently
173 | 
174 | 4. **Deleting State**:
175 |    - Clean up unused state to save storage
176 |    - Verify deletion success
177 |    - Handle deletion errors gracefully
178 |    - Consider impact on related state
179 | 
180 | 5. **Type Safety**:
181 |    - Use proper type annotations
182 |    - Verify type compatibility
183 |    - Handle type conversions explicitly
184 |    - Test with various data types
185 | 
186 | 6. **Performance**:
187 |    - Minimize state operations
188 |    - Use appropriate data structures
189 |    - Consider storage costs
190 |    - Optimize state access patterns
191 | 
192 | This guide demonstrates the various aspects of working with global state in Algorand smart contracts using Python. Understanding these concepts is crucial for developing efficient and reliable smart contracts.
193 | 
```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/docs:.walletconnect:index.md:
--------------------------------------------------------------------------------

```markdown
  1 | title: WalletConnect
  2 | 
  3 | ## What is WalletConnect protocol?
  4 | 
  5 | [WalletConnect](https://walletconnect.org/) is an open protocol to communicate securely between mobile wallets and decentralized applications (dApps) using QR code scanning (desktop) or deep linking (mobile); It’s not an app, not a blockchain and has no token. The protocol is implemented directly within the official Algorand Wallet and allows any dApp developer to add it to their application workflows.
  6 | 
  7 | ## Why should I care?
  8 | 
  9 | From an end user standpoint, they really don’t need to understand _how_ it works, but they will need to accept the _connection request_ initiated by the dApp within their mobile wallet. As a dApp developer you’ll want to understand some basics about the protocol for a successful integration and provide a seamless user experience. Algorand provides a [custom WalletConnect schema](./walletconnect-schema.md) and a [quick start guide](#quick-start-for-dapp-devs) for accelerating integrations.
 10 | 
 11 | <center>![WalletConnect Header](../../imgs/walletconnect-header.png)</center>
 12 | 
 13 | The official Algorand Wallet is among the leading crypto wallets supporting the WalletConnect protocol as the industry standard for secure payment prompts and application call transactions. Importantly, user's private keys never leave their mobile device and are never exposed to connected dApps. Adding a Ledger Nano device to the Algorand Wallet further extends the user's security profile while maintaining connection simplicity enabled by the WalletConnect integration.
 14 | 
 15 | ## How it works
 16 | 
 17 | Communication between the dApp and the mobile wallet (_peers_) happens over a _bridge server_ that relays messages without access to their content. Message contents are symmetrically encrypted through a shared key between the two peers using session data. The connection is initiated by the dApp displaying a QR Code or deep link with a standard WalletConnect URI and is established when the user approves this connection request within their Algorand Wallet. Public bridge servers are maintained by WalletConnect and dApp developers may also deploy their own.
 18 | 
 19 | Information exchange between the peers typically consists of an unsigned atomic transaction group from the dApp to the mobile wallet, which is then inspected by the user, signed and returned back to the dApp. The dApp will submit the signed object for confirmation by the Algorand network which will effect balances and state accordingly.
 20 | 
 21 | <center>![WalletConnect Header](../../imgs/walletconnect-establishing-connection.png)</center>
 22 | 
 23 | ## Quick start for dApp devs
 24 | 
 25 | The TypeScript sample code below should allow a dApp developer to establish a connection and request a simple payment transaction for signature.
 26 | 
 27 | ### Install
 28 | 
 29 | === "yarn"
 30 |   ```bash
 31 |   yarn add @walletconnect/client algorand-walletconnect-qrcode-modal algosdk @json-rpc-tools/utils
 32 |   ```
 33 | 
 34 | === "npm"
 35 |   ```bash
 36 |   npm install --save @walletconnect/client algorand-walletconnect-qrcode-modal algosdk @json-rpc-tools/utils
 37 |   ```
 38 | 
 39 | !!! Info
 40 |     Developers are encouraged to watch the [walletconnect-monorepo](https://github.com/WalletConnect/walletconnect-monorepo/releases) for new releases. Rebuild and deploy your dApp to utilize new features and performance enhancements. 
 41 | 
 42 | ### Initiate Connection
 43 | 
 44 | ```typescript
 45 | import WalletConnect from "@walletconnect/client";
 46 | import QRCodeModal from "algorand-walletconnect-qrcode-modal";
 47 | import algosdk from "algosdk";
 48 | import { formatJsonRpcRequest } from "@json-rpc-tools/utils";
 49 | 
 50 | // Create a connector
 51 | const connector = new WalletConnect({
 52 |   bridge: "https://bridge.walletconnect.org", // Required
 53 |   qrcodeModal: QRCodeModal,
 54 | });
 55 | 
 56 | // Check if connection is already established
 57 | if (!connector.connected) {
 58 |   // create new session
 59 |   connector.createSession();
 60 | }
 61 | 
 62 | // Subscribe to connection events
 63 | connector.on("connect", (error, payload) => {
 64 |   if (error) {
 65 |     throw error;
 66 |   }
 67 | 
 68 |   // Get provided accounts
 69 |   const { accounts } = payload.params[0];
 70 | });
 71 | 
 72 | connector.on("session_update", (error, payload) => {
 73 |   if (error) {
 74 |     throw error;
 75 |   }
 76 | 
 77 |   // Get updated accounts 
 78 |   const { accounts } = payload.params[0];
 79 | });
 80 | 
 81 | connector.on("disconnect", (error, payload) => {
 82 |   if (error) {
 83 |     throw error;
 84 |   }
 85 | });
 86 | ```
 87 | 
 88 | ### Sign Transaction
 89 | 
 90 | ```typescript
 91 | // Draft transaction
 92 | const txn = algosdk.makePaymentTxnWithSuggestedParamsFromObject({
 93 |     from: "ALICEU3WMO5XYJVSODKJSYLFILIXXBEXHKIVSMX7GMGXJAYGFCJKVSQTUE",
 94 |     to: "HZ57J3K46JIJXILONBBZOHX6BKPXEM2VVXNRFSUED6DKFD5ZD24PMJ3MVA",
 95 |     amount: 100000,
 96 |     suggestedParams,
 97 | });
 98 | 
 99 | // Sign transaction
100 | // txns is an array of algosdk.Transaction like below
101 | // i.e txns = [txn, ...someotherTxns], but we've only built one transaction in our case
102 | const txns = [txn]
103 | const txnsToSign = txns.map(txn => {
104 |   const encodedTxn = Buffer.from(algosdk.encodeUnsignedTransaction(txn)).toString("base64");
105 | 
106 |   return {
107 |     txn: encodedTxn,
108 |     message: 'Description of transaction being signed',
109 |     // Note: if the transaction does not need to be signed (because it's part of an atomic group
110 |     // that will be signed by another party), specify an empty singers array like so:
111 |     // signers: [],
112 |   };
113 | });
114 | 
115 | const requestParams = [txnsToSign];
116 | 
117 | const request = formatJsonRpcRequest("algo_signTxn", requestParams);
118 | const result: Array<string | null> = await this.connector.sendCustomRequest(request);
119 | const decodedResult = result.map(element => {
120 |   return element ? new Uint8Array(Buffer.from(element, "base64")) : null;
121 | });
122 | ```
123 | 
124 | ### Close Connection
125 | 
126 | ```TypeScript
127 | // Delete connector
128 | connector.killSession();
129 | ```
130 | 
131 | ## Next Steps
132 | 
133 | A [detailed example](https://github.com/algorand/walletconnect-example-dapp) is offered in React and a [live demo](https://algorand.github.io/walletconnect-example-dapp/) is available on TestNet. 
134 | 
```
Page 22/93FirstPrevNextLast