This is page 4 of 74. Use http://codebase.md/goplausible/algorand-mcp?page={x} to view the full context. # Directory Structure ``` ├── .gitignore ├── CONTRIBUTING.md ├── LICENSE ├── llms-install.md ├── llms.txt ├── package.json ├── packages │ ├── client │ │ ├── .env.example │ │ ├── package.json │ │ ├── README.md │ │ ├── src │ │ │ ├── env.ts │ │ │ ├── index.ts │ │ │ └── LocalWallet.ts │ │ └── tsconfig.json │ └── server │ ├── .env.example │ ├── API specs │ │ ├── algod_api.json │ │ ├── indexer_api.json │ │ ├── mcp.json │ │ ├── nfd_api.json │ │ ├── ultrade_api.json │ │ ├── vestige_api.json │ │ └── vestige_free_api.json │ ├── Dockerfile │ ├── jest.config.js │ ├── package.json │ ├── README.md │ ├── smithery.yaml │ ├── src │ │ ├── algorand-client.ts │ │ ├── env.ts │ │ ├── index.ts │ │ ├── resources │ │ │ ├── index.ts │ │ │ ├── knowledge │ │ │ │ ├── ARCs.txt │ │ │ │ ├── developers-algokit-architecture-decisions.txt │ │ │ │ ├── developers-algokit-cli.txt │ │ │ │ ├── developers-algokit-utils-python.txt │ │ │ │ ├── developers-algokit-utils-typescript.txt │ │ │ │ ├── developers-clis.txt │ │ │ │ ├── developers-details.txt │ │ │ │ ├── developers-liquid-auth.txt │ │ │ │ ├── developers-nodes.txt │ │ │ │ ├── developers-puya.txt │ │ │ │ ├── developers-python.txt │ │ │ │ ├── developers-sdks-js.txt │ │ │ │ ├── developers-sdks-python.txt │ │ │ │ ├── developers-tealscript.txt │ │ │ │ ├── developers.txt │ │ │ │ ├── index.ts │ │ │ │ ├── taxonomy │ │ │ │ │ ├── algokit-cli:README.md │ │ │ │ │ ├── algokit:cli:algokit.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2022-11-14_sandbox-approach.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2022-11-22_beaker-testing-strategy.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2023-01-11_beaker_productionisation_review.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2023-01-11_brew_install.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2023-01-12_smart-contract-deployment.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2023-06-06_frontend-templates.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2023-07-19_advanced_generate_command.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2024-01-13_native_binaries.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2024-01-23_init-wizard-v2.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2024-01-31_binary_distribution.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2024-03-06_local_dev_ui_packaging.md │ │ │ │ │ ├── algokit:cli:articles:output_stability.md │ │ │ │ │ ├── algokit:cli:cli:index.md │ │ │ │ │ ├── algokit:cli:features:compile.md │ │ │ │ │ ├── algokit:cli:features:completions.md │ │ │ │ │ ├── algokit:cli:features:config.md │ │ │ │ │ ├── algokit:cli:features:dispenser.md │ │ │ │ │ ├── algokit:cli:features:doctor.md │ │ │ │ │ ├── algokit:cli:features:explore.md │ │ │ │ │ ├── algokit:cli:features:generate.md │ │ │ │ │ ├── algokit:cli:features:goal.md │ │ │ │ │ ├── algokit:cli:features:init.md │ │ │ │ │ ├── algokit:cli:features:localnet.md │ │ │ │ │ ├── algokit:cli:features:project:bootstrap.md │ │ │ │ │ ├── algokit:cli:features:project:deploy.md │ │ │ │ │ ├── algokit:cli:features:project:link.md │ │ │ │ │ ├── algokit:cli:features:project:list.md │ │ │ │ │ ├── algokit:cli:features:project:run.md │ │ │ │ │ ├── algokit:cli:features:project.md │ │ │ │ │ ├── algokit:cli:features:tasks:analyze.md │ │ │ │ │ ├── algokit:cli:features:tasks:ipfs.md │ │ │ │ │ ├── algokit:cli:features:tasks:mint.md │ │ │ │ │ ├── algokit:cli:features:tasks:nfd.md │ │ │ │ │ ├── algokit:cli:features:tasks:opt.md │ │ │ │ │ ├── algokit:cli:features:tasks:send.md │ │ │ │ │ ├── algokit:cli:features:tasks:sign.md │ │ │ │ │ ├── algokit:cli:features:tasks:transfer.md │ │ │ │ │ ├── algokit:cli:features:tasks:vanity_address.md │ │ │ │ │ ├── algokit:cli:features:tasks:wallet.md │ │ │ │ │ ├── algokit:cli:features:tasks.md │ │ │ │ │ ├── algokit:cli:tutorials:algokit-template.md │ │ │ │ │ ├── algokit:cli:tutorials:intro.md │ │ │ │ │ ├── algokit:cli:tutorials:smart-contracts.md │ │ │ │ │ ├── algokit:docs:testnet_api.md │ │ │ │ │ ├── algokit:lora:README.md │ │ │ │ │ ├── algokit:README.md │ │ │ │ │ ├── algokit:utils:python:markdown:apidocs:algokit_utils:algokit_utils.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:account.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:app-client.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:app-deploy.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:client.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:debugger.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:dispenser-client.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:transfer.md │ │ │ │ │ ├── algokit:utils:python:markdown:index.md │ │ │ │ │ ├── algokit:utils:python:README.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:account.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:app-client.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:app-deploy.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:client.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:debugger.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:dispenser-client.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:transfer.md │ │ │ │ │ ├── algokit:utils:python:source:index.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:account.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:algorand-client.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:amount.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:app-client.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:app-deploy.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:app.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:asset.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:client.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:debugging.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:dispenser-client.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:event-emitter.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:indexer.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:testing.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:transaction-composer.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:transaction.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:transfer.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:typed-app-clients.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:testing.TestLogger.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:testing.TransactionLogger.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_account_manager.AccountManager.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_account.MultisigAccount.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_account.SigningAccount.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_algorand_client_transaction_creator.AlgorandClientTransactionCreator.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_algorand_client_transaction_sender.AlgorandClientTransactionSender.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_algorand_client.AlgorandClient.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_amount.AlgoAmount.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_arc56.Arc56Method.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_client.AppClient.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_client.ApplicationClient.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_deployer.AppDeployer.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_factory.AppFactory.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_manager.AppManager.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_asset_manager.AssetManager.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_async_event_emitter.AsyncEventEmitter.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_client_manager.ClientManager.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_composer.TransactionComposer.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_config.UpdatableConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_dispenser_client.TestNetDispenserApiClient.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_kmd_account_manager.KmdAccountManager.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_logic_error.LogicError.md │ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_app.OnSchemaBreak.md │ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_app.OnUpdate.md │ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_indexer.AccountStatus.md │ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_indexer.ApplicationOnComplete.md │ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_indexer.SignatureType.md │ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_lifecycle_events.EventType.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_account_manager.EnsureFundedResult.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_account.AccountConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_account.TransactionSignerAccount.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_algorand_client_interface.AlgorandClientInterface.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.Arc56Contract.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.Event.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.Method.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.ProgramSourceInfo.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.StorageKey.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.StorageMap.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.StructField.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCallABIArgs.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCallCoreParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCompilationParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCompilationResult.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientDeployCallInterfaceParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientDeployCoreParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientDeployParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppSourceMaps.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.FundAppAccountParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.ResolveAppById.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.ResolveAppByIdBase.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.SourceMapExport.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_deployer.AppLookup.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_deployer.AppMetadata.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_factory.AppFactoryParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_manager.AppInformation.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_manager.BoxReference.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_manager.BoxValueRequestParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_manager.BoxValuesRequestParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.AppSources.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.AppSpec.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.CallConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.DeclaredSchemaValueSpec.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.Hint.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.ReservedSchemaValueSpec.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.Schema.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.SchemaSpec.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.StateSchemaSpec.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.Struct.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppCallParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppCallTransactionResultOfType.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppCompilationResult.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppDeploymentParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppDeployMetadata.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppLookup.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppMetadata.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppReference.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppState.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppStorageSchema.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.BoxName.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.BoxReference.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.BoxValueRequestParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.BoxValuesRequestParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.CompiledTeal.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.CoreAppCallArgs.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.CreateAppParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.RawAppCallArgs.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.TealTemplateParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.UpdateAppParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset_manager.AssetInformation.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset_manager.BulkAssetOptInOutResult.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset.AssetBulkOptInOutParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset.AssetOptInParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset.AssetOptOutParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset.CreateAssetParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_client_manager.AlgoSdkClients.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_client_manager.TypedAppClient.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_client_manager.TypedAppFactory.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_composer.BuiltTransactions.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_config.Config.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_debugging.AVMTracesEventData.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_debugging.TealSourceDebugEventData.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_debugging.TealSourcesDebugEventData.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_dispenser_client.DispenserFundResponse.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_dispenser_client.DispenserLimitResponse.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_dispenser_client.TestNetDispenserApiClientParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_indexer.LookupAssetHoldingsOptions.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_logic_error.LogicErrorDetails.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_network_client.AlgoClientConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_network_client.AlgoConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_network_client.NetworkDetails.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.AlgoKitLogCaptureFixture.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.AlgorandFixture.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.AlgorandFixtureConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.AlgorandTestAutomationContext.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.GetTestAccountParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.LogSnapshotConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.AtomicTransactionComposerToSend.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.ConfirmedTransactionResult.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.ConfirmedTransactionResults.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.SendAtomicTransactionComposerResults.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.SendParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.SendTransactionParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.SendTransactionResult.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.SendTransactionResults.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.TransactionGroupToSend.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.TransactionToSign.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transfer.AlgoRekeyParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transfer.AlgoTransferParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transfer.EnsureFundedParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transfer.EnsureFundedReturnType.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transfer.TransferAssetParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:index.indexer.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:index.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:testing.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_account_manager_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_account_manager.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_account.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algo_http_client_with_retry.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_asset_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_interface.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_transaction_creator.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_transaction_sender.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_transfer_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_amount_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_amount.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_arc56.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_client_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_client.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_deployer.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_factory_and_client_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_factory.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_manager.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_asset_manager.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_asset.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_async_event_emitter_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_async_event_emitter.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_client_manager_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_client_manager.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_composer.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_config.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_debugging.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_dispenser_client_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_dispenser_client.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_expand.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_indexer.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_kmd_account_manager.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_lifecycle_events.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_logging.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_logic_error.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_network_client.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_testing.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_transaction.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_transfer.md │ │ │ │ │ ├── algokit:utils:typescript:code:README.md │ │ │ │ │ ├── algokit:utils:typescript:README.md │ │ │ │ │ ├── algokit:utils:typescript:v7-migration.md │ │ │ │ │ ├── algokit:utils:typescript:v8-migration.md │ │ │ │ │ ├── ARCs:ARC-template.md │ │ │ │ │ ├── ARCs:assets:arc-0012:README.md │ │ │ │ │ ├── ARCs:assets:arc-0034:TemplateForm.md │ │ │ │ │ ├── ARCs:assets:arc-0062:README.md │ │ │ │ │ ├── ARCs:pages:nfts.md │ │ │ │ │ ├── ARCs:pages:wallets.md │ │ │ │ │ ├── ARCs:README.md │ │ │ │ │ ├── ARCs:specs:arc-0000.md │ │ │ │ │ ├── ARCs:specs:arc-0001.md │ │ │ │ │ ├── ARCs:specs:arc-0002.md │ │ │ │ │ ├── ARCs:specs:arc-0003.md │ │ │ │ │ ├── ARCs:specs:arc-0004.md │ │ │ │ │ ├── ARCs:specs:arc-0005.md │ │ │ │ │ ├── ARCs:specs:arc-0006.md │ │ │ │ │ ├── ARCs:specs:arc-0007.md │ │ │ │ │ ├── ARCs:specs:arc-0008.md │ │ │ │ │ ├── ARCs:specs:arc-0009.md │ │ │ │ │ ├── ARCs:specs:arc-0010.md │ │ │ │ │ ├── ARCs:specs:arc-0011.md │ │ │ │ │ ├── ARCs:specs:arc-0012.md │ │ │ │ │ ├── ARCs:specs:arc-0015.md │ │ │ │ │ ├── ARCs:specs:arc-0016.md │ │ │ │ │ ├── ARCs:specs:arc-0018.md │ │ │ │ │ ├── ARCs:specs:arc-0019.md │ │ │ │ │ ├── ARCs:specs:arc-0020.md │ │ │ │ │ ├── ARCs:specs:arc-0021.md │ │ │ │ │ ├── ARCs:specs:arc-0022.md │ │ │ │ │ ├── ARCs:specs:arc-0023.md │ │ │ │ │ ├── ARCs:specs:arc-0025.md │ │ │ │ │ ├── ARCs:specs:arc-0026.md │ │ │ │ │ ├── ARCs:specs:arc-0028.md │ │ │ │ │ ├── ARCs:specs:arc-0032.md │ │ │ │ │ ├── ARCs:specs:arc-0033.md │ │ │ │ │ ├── ARCs:specs:arc-0034.md │ │ │ │ │ ├── ARCs:specs:arc-0035.md │ │ │ │ │ ├── ARCs:specs:arc-0036.md │ │ │ │ │ ├── ARCs:specs:arc-0042.md │ │ │ │ │ ├── ARCs:specs:arc-0047.md │ │ │ │ │ ├── ARCs:specs:arc-0048.md │ │ │ │ │ ├── ARCs:specs:arc-0049.md │ │ │ │ │ ├── ARCs:specs:arc-0054.md │ │ │ │ │ ├── ARCs:specs:arc-0055.md │ │ │ │ │ ├── ARCs:specs:arc-0056.md │ │ │ │ │ ├── ARCs:specs:arc-0059.md │ │ │ │ │ ├── ARCs:specs:arc-0062.md │ │ │ │ │ ├── ARCs:specs:arc-0065.md │ │ │ │ │ ├── ARCs:specs:arc-0069.md │ │ │ │ │ ├── ARCs:specs:arc-0072.md │ │ │ │ │ ├── ARCs:specs:arc-0073.md │ │ │ │ │ ├── ARCs:specs:arc-0074.md │ │ │ │ │ ├── ARCs:specs:arc-0076.md │ │ │ │ │ ├── ARCs:specs:arc-0078.md │ │ │ │ │ ├── ARCs:specs:arc-0079.md │ │ │ │ │ ├── ARCs:specs:arc-0200.md │ │ │ │ │ ├── clis_index.md │ │ │ │ │ ├── developer:docs:about.md │ │ │ │ │ ├── developer:docs:clis:algokey:algokey.md │ │ │ │ │ ├── developer:docs:clis:algokey:generate.md │ │ │ │ │ ├── developer:docs:clis:algokey:import.md │ │ │ │ │ ├── developer:docs:clis:algokey:multisig:append-auth-addr.md │ │ │ │ │ ├── developer:docs:clis:algokey:multisig:multisig.md │ │ │ │ │ ├── developer:docs:clis:algokey:part:info.md │ │ │ │ │ ├── developer:docs:clis:algokey:part:part.md │ │ │ │ │ ├── developer:docs:clis:algokey:part:reparent.md │ │ │ │ │ ├── developer:docs:clis:algokey:sign.md │ │ │ │ │ ├── developer:docs:clis:conduit:conduit.md │ │ │ │ │ ├── developer:docs:clis:conduit:init.md │ │ │ │ │ ├── developer:docs:clis:conduit:list:exporters.md │ │ │ │ │ ├── developer:docs:clis:conduit:list:importers.md │ │ │ │ │ ├── developer:docs:clis:conduit:list:list.md │ │ │ │ │ ├── developer:docs:clis:conduit:list:processors.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:diagcfg.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:metric:disable.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:metric:enable.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:metric:metric.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:metric:status.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:disable.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:enable.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:endpoint.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:name.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:status.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:telemetry.md │ │ │ │ │ ├── developer:docs:clis:goal:node:restart.md │ │ │ │ │ ├── developer:docs:clis:goal:node:start.md │ │ │ │ │ ├── developer:docs:clis:goal:node:status.md │ │ │ │ │ ├── developer:docs:clis:goal:node:stop.md │ │ │ │ │ ├── developer:docs:clis:goal:node:wait.md │ │ │ │ │ ├── developer:docs:clis:goal:protocols.md │ │ │ │ │ ├── developer:docs:clis:goal:report.md │ │ │ │ │ ├── developer:docs:clis:goal:version.md │ │ │ │ │ ├── developer:docs:clis:goal:wallet:list.md │ │ │ │ │ ├── developer:docs:clis:goal:wallet:new.md │ │ │ │ │ ├── developer:docs:clis:goal:wallet:wallet.md │ │ │ │ │ ├── developer:docs:clis:indexer:api-config.md │ │ │ │ │ ├── developer:docs:clis:indexer:daemon.md │ │ │ │ │ ├── developer:docs:clis:indexer:indexer.md │ │ │ │ │ ├── developer:docs:clis:indexer:util:util.md │ │ │ │ │ ├── developer:docs:clis:indexer:util:validator.md │ │ │ │ │ ├── developer:docs:clis:kmd.md │ │ │ │ │ ├── developer:docs:clis:tealdbg:debug.md │ │ │ │ │ ├── developer:docs:clis:tealdbg:remote.md │ │ │ │ │ ├── developer:docs:clis:tealdbg:tealdbg.md │ │ │ │ │ ├── developer:docs:details:accounts:create.md │ │ │ │ │ ├── developer:docs:details:accounts:index.md │ │ │ │ │ ├── developer:docs:details:accounts:rekey.md │ │ │ │ │ ├── developer:docs:details:algorand_consensus.md │ │ │ │ │ ├── developer:docs:details:algorand-networks:betanet.md │ │ │ │ │ ├── developer:docs:details:algorand-networks:index.md │ │ │ │ │ ├── developer:docs:details:algorand-networks:mainnet.md │ │ │ │ │ ├── developer:docs:details:algorand-networks:testnet.md │ │ │ │ │ ├── developer:docs:details:asa.md │ │ │ │ │ ├── developer:docs:details:atc.md │ │ │ │ │ ├── developer:docs:details:atomic_transfers.md │ │ │ │ │ ├── developer:docs:details:conduit.md │ │ │ │ │ ├── developer:docs:details:crust.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:index.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:guidelines.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:index.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:jsonspec.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:index.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v1.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v10.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v2.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v3.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v4.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v5.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v6.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v7.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v8.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v9.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:specification.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:ABI:index.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:apps:create.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:apps:index.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:apps:innertx.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:apps:state.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:apps:txs.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:debugging.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:frontend:apps.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:frontend:smartsigs.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:guidelines.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:index.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:smartsigs:index.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:smartsigs:modes.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:smartsigs:walkthrough.md │ │ │ │ │ ├── developer:docs:details:dapps:writing-contracts:beaker.md │ │ │ │ │ ├── developer:docs:details:dapps:writing-contracts:pyteal.md │ │ │ │ │ ├── developer:docs:details:dapps:writing-contracts:python.md │ │ │ │ │ ├── developer:docs:details:encoding.md │ │ │ │ │ ├── developer:docs:details:ethereum_to_algorand.md │ │ │ │ │ ├── developer:docs:details:index.md │ │ │ │ │ ├── developer:docs:details:indexer.md │ │ │ │ │ ├── developer:docs:details:parameter_tables.md │ │ │ │ │ ├── developer:docs:details:stateproofs:index.md │ │ │ │ │ ├── developer:docs:details:stateproofs:light_client.md │ │ │ │ │ ├── developer:docs:details:technical_faq.md │ │ │ │ │ ├── developer:docs:details:transactions:index.md │ │ │ │ │ ├── developer:docs:details:transactions:offline_transactions.md │ │ │ │ │ ├── developer:docs:details:transactions:payment_prompts.md │ │ │ │ │ ├── developer:docs:details:transactions:signatures.md │ │ │ │ │ ├── developer:docs:details:transactions:transactions.md │ │ │ │ │ ├── developer:docs:details:useful_resources.md │ │ │ │ │ ├── developer:docs:get-started:algokit.md │ │ │ │ │ ├── developer:docs:get-started:basics:what_is_blockchain.md │ │ │ │ │ ├── developer:docs:get-started:basics:whats_a_dapp.md │ │ │ │ │ ├── developer:docs:get-started:basics:where_to_start.md │ │ │ │ │ ├── developer:docs:get-started:basics:why_algorand.md │ │ │ │ │ ├── developer:docs:get-started:tokenization:ft.md │ │ │ │ │ ├── developer:docs:get-started:tokenization:nft.md │ │ │ │ │ ├── developer:docs:index.md │ │ │ │ │ ├── developer:docs:rest-apis:algod.md │ │ │ │ │ ├── developer:docs:rest-apis:indexer.md │ │ │ │ │ ├── developer:docs:rest-apis:kmd.md │ │ │ │ │ ├── developer:docs:rest-apis:restendpoints.md │ │ │ │ │ ├── developer:docs:run-a-node:operations:catchup.md │ │ │ │ │ ├── developer:docs:run-a-node:operations:switch_networks.md │ │ │ │ │ ├── developer:docs:run-a-node:participate:generate_keys.md │ │ │ │ │ ├── developer:docs:run-a-node:participate:index.md │ │ │ │ │ ├── developer:docs:run-a-node:participate:offline.md │ │ │ │ │ ├── developer:docs:run-a-node:participate:online.md │ │ │ │ │ ├── developer:docs:run-a-node:participate:renew.md │ │ │ │ │ ├── developer:docs:run-a-node:reference:artifacts.md │ │ │ │ │ ├── developer:docs:run-a-node:reference:config.md │ │ │ │ │ ├── developer:docs:run-a-node:reference:relay.md │ │ │ │ │ ├── developer:docs:run-a-node:reference:telemetry-config.md │ │ │ │ │ ├── developer:docs:run-a-node:setup:indexer.md │ │ │ │ │ ├── developer:docs:run-a-node:setup:install.md │ │ │ │ │ ├── developer:docs:run-a-node:setup:node-troubleshooting.md │ │ │ │ │ ├── developer:docs:run-a-node:setup:types.md │ │ │ │ │ ├── developer:docs:sdks:go:index.md │ │ │ │ │ ├── developer:docs:sdks:index.md │ │ │ │ │ ├── developer:docs:sdks:java:index.md │ │ │ │ │ ├── developer:docs:sdks:javascript:index.md │ │ │ │ │ ├── developer:docs:sdks:python:index.md │ │ │ │ │ ├── developer:python:code:example:accounts.md │ │ │ │ │ ├── developer:python:code:example:arc4_types.md │ │ │ │ │ ├── developer:python:code:example:assets.md │ │ │ │ │ ├── developer:python:code:example:box_storage.md │ │ │ │ │ ├── developer:python:code:example:control_flow.md │ │ │ │ │ ├── developer:python:code:example:crypto:merkle_tree.md │ │ │ │ │ ├── developer:python:code:example:defi:amm.md │ │ │ │ │ ├── developer:python:code:example:defi:auction.md │ │ │ │ │ ├── developer:python:code:example:defi:htlc_logicsig.md │ │ │ │ │ ├── developer:python:code:example:defi:marketplace.md │ │ │ │ │ ├── developer:python:code:example:events:arc28_events.md │ │ │ │ │ ├── developer:python:code:example:global_storage.md │ │ │ │ │ ├── developer:python:code:example:governance:simple_voting.md │ │ │ │ │ ├── developer:python:code:example:hello_world.md │ │ │ │ │ ├── developer:python:code:example:inner_transactions.md │ │ │ │ │ ├── developer:python:code:example:local_storage.md │ │ │ │ │ ├── developer:python:code:example:nft:proof_of_attendance.md │ │ │ │ │ ├── developer:python:code:example:privacy:zk_whitelist.md │ │ │ │ │ ├── developer:python:code:example:scratch_storage.md │ │ │ │ │ ├── developer:python:code:example:self_payment.md │ │ │ │ │ ├── developer:python:code:example:struct_in_box.md │ │ │ │ │ ├── developer:python:code:example:subsidize_app_call.md │ │ │ │ │ ├── developer:python:code:example:transactions.md │ │ │ │ │ ├── developer:python:code:example:utility:calculator.md │ │ │ │ │ ├── devportal-code-examples:projects:python-contract-examples:README.md │ │ │ │ │ ├── devportal-code-examples:README.md │ │ │ │ │ ├── docs:.walletconnect:index.md │ │ │ │ │ ├── docs:.walletconnect:walletconnect-schema.md │ │ │ │ │ ├── docs:README.md │ │ │ │ │ ├── docs:scripts:example_tracker:example_list.md │ │ │ │ │ ├── docs:scripts:README.md │ │ │ │ │ ├── index.md │ │ │ │ │ ├── liquid_auth_index.md │ │ │ │ │ ├── liquid-auth:ARCHITECTURE.md │ │ │ │ │ ├── liquid-auth:decisions:1-Service-Authentication.md │ │ │ │ │ ├── liquid-auth:decisions:2-Bidirectional-Communication.md │ │ │ │ │ ├── liquid-auth:decisions:3-Peer-to-Peer-Signaling.md │ │ │ │ │ ├── liquid-auth:decisions:4-Fido-Extension.md │ │ │ │ │ ├── liquid-auth:decisions:README.md │ │ │ │ │ ├── liquid-auth:docs:architecture.md │ │ │ │ │ ├── liquid-auth:docs:clients:android:provider-service:authenticate.md │ │ │ │ │ ├── liquid-auth:docs:clients:android:provider-service:register.md │ │ │ │ │ ├── liquid-auth:docs:clients:browser:authentication.md │ │ │ │ │ ├── liquid-auth:docs:clients:browser:example.md │ │ │ │ │ ├── liquid-auth:docs:introduction.md │ │ │ │ │ ├── liquid-auth:docs:README.md │ │ │ │ │ ├── liquid-auth:docs:server:environment-variables.md │ │ │ │ │ ├── liquid-auth:docs:server:integrations.md │ │ │ │ │ ├── liquid-auth:docs:server:introduction.md │ │ │ │ │ ├── liquid-auth:docs:server:running-locally.md │ │ │ │ │ ├── liquid-auth:README.md │ │ │ │ │ ├── liquid-auth:SEQUENCE.md │ │ │ │ │ ├── liquid-auth:services:liquid-auth-api-js:src:assertion:assertion.controller.post.request.md │ │ │ │ │ ├── liquid-auth:services:liquid-auth-api-js:src:assertion:assertion.controller.post.response.md │ │ │ │ │ ├── liquid-auth:services:liquid-auth-api-js:src:attestation:attestation.controller.post.request.md │ │ │ │ │ ├── liquid-auth:services:liquid-auth-api-js:src:auth:auth.controller.get.user.md │ │ │ │ │ ├── liquid-auth:sites:express-dapp:README.md │ │ │ │ │ ├── liquid-auth:VISION.md │ │ │ │ │ ├── puya_index.md │ │ │ │ │ ├── puya:docs:algopy_testing:index.md │ │ │ │ │ ├── puya:docs:api-algopy.arc4.md │ │ │ │ │ ├── puya:docs:api-algopy.gtxn.md │ │ │ │ │ ├── puya:docs:api-algopy.itxn.md │ │ │ │ │ ├── puya:docs:api-algopy.md │ │ │ │ │ ├── puya:docs:api-algopy.op.md │ │ │ │ │ ├── puya:docs:api.md │ │ │ │ │ ├── puya:docs:compiler.md │ │ │ │ │ ├── puya:docs:index.md │ │ │ │ │ ├── puya:docs:language-guide.md │ │ │ │ │ ├── puya:docs:lg-arc28.md │ │ │ │ │ ├── puya:docs:lg-arc4.md │ │ │ │ │ ├── puya:docs:lg-builtins.md │ │ │ │ │ ├── puya:docs:lg-calling-apps.md │ │ │ │ │ ├── puya:docs:lg-compile.md │ │ │ │ │ ├── puya:docs:lg-control.md │ │ │ │ │ ├── puya:docs:lg-errors.md │ │ │ │ │ ├── puya:docs:lg-logs.md │ │ │ │ │ ├── puya:docs:lg-modules.md │ │ │ │ │ ├── puya:docs:lg-opcode-budget.md │ │ │ │ │ ├── puya:docs:lg-ops.md │ │ │ │ │ ├── puya:docs:lg-storage.md │ │ │ │ │ ├── puya:docs:lg-structure.md │ │ │ │ │ ├── puya:docs:lg-transactions.md │ │ │ │ │ ├── puya:docs:lg-types.md │ │ │ │ │ ├── puya:docs:lg-unsupported-python-features.md │ │ │ │ │ ├── puya:docs:principles.md │ │ │ │ │ ├── puya:examples:auction:README.md │ │ │ │ │ ├── puya:python:testing:docs:algopy.md │ │ │ │ │ ├── puya:python:testing:docs:api.md │ │ │ │ │ ├── puya:python:testing:docs:coverage.md │ │ │ │ │ ├── puya:python:testing:docs:examples.md │ │ │ │ │ ├── puya:python:testing:docs:faq.md │ │ │ │ │ ├── puya:python:testing:docs:index.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:arc4-types.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:avm-types.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:concepts.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:contract-testing.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:index.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:opcodes.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:signature-testing.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:state-management.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:subroutines.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:transactions.md │ │ │ │ │ ├── puya:python:testing:examples:README.md │ │ │ │ │ ├── puya:python:testing:README.md │ │ │ │ │ ├── puya:README.md │ │ │ │ │ ├── puya:src:puya:ARCHITECTURE.md │ │ │ │ │ ├── puya:src:puyapy:_typeshed:README.md │ │ │ │ │ ├── puya:src:puyapy:_vendor:mypy:typeshed:stdlib:_typeshed:README.md │ │ │ │ │ ├── puya:src:puyapy:awst_build:README.md │ │ │ │ │ ├── puya:stubs:README.md │ │ │ │ │ ├── puya:tests:test_expected_output:README.md │ │ │ │ │ ├── puya:typescript:docs:architecture-decisions:2024-05-21_primitive-bytes-and-strings.md │ │ │ │ │ ├── puya:typescript:docs:architecture-decisions:2024-05-21_primitive-integer-types.md │ │ │ │ │ ├── puya:typescript:docs:README.md │ │ │ │ │ ├── puya:typescript:packages:algo-ts:readme.md │ │ │ │ │ ├── puya:typescript:README.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIAddressType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIArrayDynamicType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIArrayStaticType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIBoolType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIByteType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIContract.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIInterface.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIMethod.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIStringType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABITupleType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIUfixedType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIUintType.md │ │ │ │ │ ├── SDKs:javascript:classes:Algodv2.md │ │ │ │ │ ├── SDKs:javascript:classes:AtomicTransactionComposer.md │ │ │ │ │ ├── SDKs:javascript:classes:DryrunResult.md │ │ │ │ │ ├── SDKs:javascript:classes:Indexer.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Account.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AccountParticipation.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AccountResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AccountsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AccountStateDelta.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Application.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationLocalState.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationLocalStatesResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationLogData.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationLogsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationParams.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationStateSchema.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Asset.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetBalancesResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetHolding.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetHoldingsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetParams.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Block.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.BlockRewards.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.BlockUpgradeState.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.BlockUpgradeVote.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Box.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.BoxDescriptor.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.BoxesResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ErrorResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.EvalDelta.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.EvalDeltaKeyValue.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.HashFactory.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.HealthCheck.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.IndexerStateProofMessage.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.MerkleArrayProof.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.MiniAssetHolding.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ParticipationUpdates.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofFields.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofParticipant.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofReveal.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofSignature.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofSigSlot.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofTracking.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofVerifier.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateSchema.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TealKeyValue.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TealValue.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Transaction.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionApplication.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionAssetConfig.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionAssetFreeze.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionAssetTransfer.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionKeyreg.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionPayment.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionSignature.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionSignatureLogicsig.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionSignatureMultisig.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionSignatureMultisigSubsignature.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionStateProof.md │ │ │ │ │ ├── SDKs:javascript:classes:Kmd.md │ │ │ │ │ ├── SDKs:javascript:classes:LogicSig.md │ │ │ │ │ ├── SDKs:javascript:classes:LogicSigAccount.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.Account.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountApplicationResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountAssetHolding.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountAssetResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountAssetsInformationResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountParticipation.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountStateDelta.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AppCallLogs.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.Application.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationInitialStates.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationKVStorage.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationLocalReference.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationLocalState.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationParams.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationStateOperation.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationStateSchema.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.Asset.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AssetHolding.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AssetHoldingReference.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AssetParams.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AvmKeyValue.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AvmValue.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BlockHashResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BlockLogsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BlockResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BlockTxidsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.Box.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BoxDescriptor.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BoxesResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BoxReference.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BuildVersion.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.CompileResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DisassembleResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DryrunRequest.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DryrunResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DryrunSource.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DryrunState.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DryrunTxnResult.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ErrorResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.EvalDelta.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.EvalDeltaKeyValue.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.GetBlockTimeStampOffsetResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.GetSyncRoundResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.KvDelta.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.LedgerStateDeltaForTransactionGroup.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.LightBlockHeaderProof.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.NodeStatusResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.PendingTransactionResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.PendingTransactionsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.PostTransactionsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ScratchChange.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateInitialStates.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateRequest.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateRequestTransactionGroup.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateTraceConfig.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateTransactionGroupResult.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateTransactionResult.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateUnnamedResourcesAccessed.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulationEvalOverrides.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulationOpcodeTraceUnit.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulationTransactionExecTrace.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.StateProof.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.StateProofMessage.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SupplyResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.TealKeyValue.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.TealValue.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.TransactionGroupLedgerStateDeltasForRoundResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.TransactionParametersResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.TransactionProofResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.Version.md │ │ │ │ │ ├── SDKs:javascript:classes:SourceMap.md │ │ │ │ │ ├── SDKs:javascript:classes:Transaction.md │ │ │ │ │ ├── SDKs:javascript:enums:ABIReferenceType.md │ │ │ │ │ ├── SDKs:javascript:enums:ABITransactionType.md │ │ │ │ │ ├── SDKs:javascript:enums:AtomicTransactionComposerStatus.md │ │ │ │ │ ├── SDKs:javascript:enums:IntDecoding.md │ │ │ │ │ ├── SDKs:javascript:enums:OnApplicationComplete.md │ │ │ │ │ ├── SDKs:javascript:enums:TransactionType.md │ │ │ │ │ ├── SDKs:javascript:examples:README.md │ │ │ │ │ ├── SDKs:javascript:FAQ.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIContractNetworkInfo.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIContractNetworks.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIContractParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIInterfaceParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIMethodArgParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIMethodParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIMethodReturnParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIResult.md │ │ │ │ │ ├── SDKs:javascript:interfaces:Account.md │ │ │ │ │ ├── SDKs:javascript:interfaces:Address.md │ │ │ │ │ ├── SDKs:javascript:interfaces:AlgodTokenHeader.md │ │ │ │ │ ├── SDKs:javascript:interfaces:BaseHTTPClient.md │ │ │ │ │ ├── SDKs:javascript:interfaces:BaseHTTPClientError.md │ │ │ │ │ ├── SDKs:javascript:interfaces:BaseHTTPClientResponse.md │ │ │ │ │ ├── SDKs:javascript:interfaces:BoxReference.md │ │ │ │ │ ├── SDKs:javascript:interfaces:CustomTokenHeader.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedAssetParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedBoxReference.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedGlobalStateSchema.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedLocalStateSchema.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedLogicSig.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedLogicSigAccount.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedMultisig.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedSignedTransaction.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedSubsig.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedTransaction.md │ │ │ │ │ ├── SDKs:javascript:interfaces:IndexerTokenHeader.md │ │ │ │ │ ├── SDKs:javascript:interfaces:KMDTokenHeader.md │ │ │ │ │ ├── SDKs:javascript:interfaces:MultisigMetadata.md │ │ │ │ │ ├── SDKs:javascript:interfaces:SignedTransaction.md │ │ │ │ │ ├── SDKs:javascript:interfaces:SuggestedParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:TransactionParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:TransactionWithSigner.md │ │ │ │ │ ├── SDKs:javascript:modules:indexerModels.md │ │ │ │ │ ├── SDKs:javascript:modules:modelsv2.md │ │ │ │ │ ├── SDKs:javascript:modules.md │ │ │ │ │ ├── SDKs:javascript:README.md │ │ │ │ │ ├── SDKs:python:algosdk:v2client:harness:README.md │ │ │ │ │ ├── SDKs:python:examples:README.md │ │ │ │ │ ├── SDKs:python:README.md │ │ │ │ │ ├── tealscript:examples_amm_README.md │ │ │ │ │ ├── tealscript:examples_auction_README.md │ │ │ │ │ ├── tealscript:examples_big_box_README.md │ │ │ │ │ ├── tealscript:examples_itxns_README.md │ │ │ │ │ ├── tealscript:examples_lsig_with_app_README.md │ │ │ │ │ ├── tealscript:examples_reti_README.md │ │ │ │ │ ├── tealscript:FEATURES.md │ │ │ │ │ ├── tealscript:guides_atomic_txn.md │ │ │ │ │ ├── tealscript:guides_features.md │ │ │ │ │ ├── tealscript:guides_getting_started.md │ │ │ │ │ ├── tealscript:guides_inner_transactions.md │ │ │ │ │ ├── tealscript:guides_lifecycle.md │ │ │ │ │ ├── tealscript:guides_math.md │ │ │ │ │ ├── tealscript:guides_methods.md │ │ │ │ │ ├── tealscript:guides_multiple_contracts.md │ │ │ │ │ ├── tealscript:guides_pyteal.md │ │ │ │ │ ├── tealscript:guides_storage.md │ │ │ │ │ ├── tealscript:guides_Supported Types_arrays.md │ │ │ │ │ ├── tealscript:guides_Supported Types_numbers.md │ │ │ │ │ ├── TEALScript:README.md │ │ │ │ │ ├── tealscript:tests_test_package_README.md │ │ │ │ │ ├── tealscript:tutorials_Hello World_0001-intro.md │ │ │ │ │ ├── tealscript:tutorials_Hello World_0002-init.md │ │ │ │ │ ├── tealscript:tutorials_Hello World_0003-contract.md │ │ │ │ │ ├── tealscript:tutorials_Hello World_0004-artifacts.md │ │ │ │ │ ├── tealscript:tutorials_Hello World_0005-hello.md │ │ │ │ │ └── tealscript:tutorials_Hello World_0006-test.md │ │ │ │ └── taxonomy-categories │ │ │ │ ├── algokit-utils.json │ │ │ │ ├── algokit.json │ │ │ │ ├── arcs.json │ │ │ │ ├── clis.json │ │ │ │ ├── details.json │ │ │ │ ├── developers.json │ │ │ │ ├── liquid-auth.json │ │ │ │ ├── nodes.json │ │ │ │ ├── puya.json │ │ │ │ ├── python.json │ │ │ │ ├── sdks.json │ │ │ │ └── tealscript.json │ │ │ └── wallet │ │ │ └── index.ts │ │ ├── tools │ │ │ ├── accountManager.ts │ │ │ ├── algodManager.ts │ │ │ ├── apiManager │ │ │ │ ├── algod │ │ │ │ │ ├── account.ts │ │ │ │ │ ├── application.ts │ │ │ │ │ ├── asset.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── transaction.ts │ │ │ │ ├── example │ │ │ │ │ ├── get-balance.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── indexer │ │ │ │ │ ├── account.ts │ │ │ │ │ ├── application.ts │ │ │ │ │ ├── asset.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── transaction.ts │ │ │ │ ├── nfd │ │ │ │ │ └── index.ts │ │ │ │ ├── tinyman │ │ │ │ │ ├── analytics.ts │ │ │ │ │ ├── bootstrap.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── liquidity.ts │ │ │ │ │ ├── opt_in.ts │ │ │ │ │ ├── pool.ts │ │ │ │ │ ├── remove_liquidity.ts │ │ │ │ │ └── swap.ts │ │ │ │ ├── ultrade │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── market.ts │ │ │ │ │ ├── system.ts │ │ │ │ │ └── wallet.ts │ │ │ │ └── vestige │ │ │ │ ├── assets.ts │ │ │ │ ├── balances.ts │ │ │ │ ├── index.ts │ │ │ │ ├── networks.ts │ │ │ │ ├── notes.ts │ │ │ │ ├── pools.ts │ │ │ │ ├── protocols.ts │ │ │ │ ├── swaps.ts │ │ │ │ └── vaults.ts │ │ │ ├── arc26Manager.ts │ │ │ ├── index.ts │ │ │ ├── knowledgeManager.ts │ │ │ ├── transactionManager │ │ │ │ ├── accountTransactions.ts │ │ │ │ ├── appTransactions │ │ │ │ │ ├── callTxn.ts │ │ │ │ │ ├── clearTxn.ts │ │ │ │ │ ├── closeOutTxn.ts │ │ │ │ │ ├── createTxn.ts │ │ │ │ │ ├── deleteTxn.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── optInTxn.ts │ │ │ │ │ ├── test │ │ │ │ │ │ ├── counter_approval.teal │ │ │ │ │ │ ├── counter_clear.teal │ │ │ │ │ │ ├── storage_test_approval_v2.teal │ │ │ │ │ │ ├── storage_test_approval.teal │ │ │ │ │ │ └── storage_test_clear.teal │ │ │ │ │ ├── types.ts │ │ │ │ │ └── updateTxn.ts │ │ │ │ ├── assetTransactions.ts │ │ │ │ ├── generalTransaction.ts │ │ │ │ └── index.ts │ │ │ └── utilityManager.ts │ │ ├── types.ts │ │ └── utils │ │ └── responseProcessor.ts │ ├── tests │ │ ├── resources │ │ │ ├── algod │ │ │ │ ├── account.test.ts │ │ │ │ ├── application.test.ts │ │ │ │ ├── asset.test.ts │ │ │ │ └── transaction.test.ts │ │ │ └── indexer │ │ │ ├── account.test.ts │ │ │ ├── application.test.ts │ │ │ ├── asset.test.ts │ │ │ └── transaction.test.ts │ │ └── tools │ │ ├── accountManager.test.ts │ │ ├── algodManager.test.ts │ │ ├── apiManager │ │ │ └── example │ │ │ └── get-balance.test.ts │ │ ├── transactionManager │ │ │ ├── accountTransactionManager.test.ts │ │ │ ├── appTransactionManager.test.ts │ │ │ ├── assetTransactionManager.test.ts │ │ │ ├── generalTransactionManager.test.ts │ │ │ └── transactionManager.test.ts │ │ └── utilityManager.test.ts │ └── tsconfig.json ├── README.md ├── rename_files.sh └── tsconfig.json ``` # Files -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:code:interfaces:types_app_client.ResolveAppById.md: -------------------------------------------------------------------------------- ```markdown [@algorandfoundation/algokit-utils](../README.md) / [types/app-client](../modules/types_app_client.md) / ResolveAppById # Interface: ResolveAppById [types/app-client](../modules/types_app_client.md).ResolveAppById Configuration to resolve app by ID ## Hierarchy - [`ResolveAppByIdBase`](types_app_client.ResolveAppByIdBase.md) ↳ **`ResolveAppById`** ## Table of contents ### Properties - [id](types_app_client.ResolveAppById.md#id) - [name](types_app_client.ResolveAppById.md#name) - [resolveBy](types_app_client.ResolveAppById.md#resolveby) ## Properties ### id • **id**: `number` \| `bigint` The id of an existing app to call using this client, or 0 if the app hasn't been created yet #### Inherited from [ResolveAppByIdBase](types_app_client.ResolveAppByIdBase.md).[id](types_app_client.ResolveAppByIdBase.md#id) #### Defined in [src/types/app-client.ts:112](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L112) ___ ### name • `Optional` **name**: `string` The optional name to use to mark the app when deploying `ApplicationClient.deploy` (default: uses the name in the ABI contract) #### Inherited from [ResolveAppByIdBase](types_app_client.ResolveAppByIdBase.md).[name](types_app_client.ResolveAppByIdBase.md#name) #### Defined in [src/types/app-client.ts:114](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L114) ___ ### resolveBy • **resolveBy**: ``"id"`` How the app ID is resolved, either by `'id'` or `'creatorAndName'`; must be `'creatorAndName'` if you want to use `deploy` #### Defined in [src/types/app-client.ts:119](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L119) ``` -------------------------------------------------------------------------------- /packages/server/src/tools/transactionManager/index.ts: -------------------------------------------------------------------------------- ```typescript import { McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js'; import { AccountTransactionManager, accountTransactionTools } from './accountTransactions.js'; import { AssetTransactionManager, assetTransactionTools } from './assetTransactions.js'; import { AppTransactionManager, appTransactionTools } from './appTransactions/index.js'; import { GeneralTransactionManager, generalTransactionTools } from './generalTransaction.js'; // Combine all transaction tools export const transactionTools = [ ...accountTransactionTools, ...assetTransactionTools, ...appTransactionTools, ...generalTransactionTools ]; export class TransactionManager { // Tool handlers static async handleTool(name: string, args: Record<string, unknown>) { // Account transactions if (name.startsWith('make_payment_') || name.startsWith('make_keyreg_')) { return AccountTransactionManager.handleTool(name, args); } // Asset transactions if (name.startsWith('make_asset_')) { return AssetTransactionManager.handleTool(name, args); } // Application transactions if (name.startsWith('make_app_')) { return AppTransactionManager.handleTool(name, args); } // General transactions if (name === 'assign_group_id' || name === 'sign_transaction' || name === 'sign_bytes' || name === 'encode_obj' || name === 'decode_obj') { return GeneralTransactionManager.handleTool(name, args); } throw new McpError( ErrorCode.MethodNotFound, `Unknown transaction tool: ${name}` ); } } // Re-export all transaction managers export { AccountTransactionManager, AssetTransactionManager, AppTransactionManager, GeneralTransactionManager }; ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:code:interfaces:types_testing.GetTestAccountParams.md: -------------------------------------------------------------------------------- ```markdown [@algorandfoundation/algokit-utils](../README.md) / [types/testing](../modules/types_testing.md) / GetTestAccountParams # Interface: GetTestAccountParams [types/testing](../modules/types_testing.md).GetTestAccountParams Parameters for the `getTestAccount` function. ## Table of contents ### Properties - [accountGetter](types_testing.GetTestAccountParams.md#accountgetter) - [initialFunds](types_testing.GetTestAccountParams.md#initialfunds) - [suppressLog](types_testing.GetTestAccountParams.md#suppresslog) ## Properties ### accountGetter • `Optional` **accountGetter**: (`algorand`: [`AlgorandClient`](../classes/types_algorand_client.AlgorandClient.md)) => `Promise`\<`default`\> Optional override for how to get a test account; this allows you to retrieve accounts from a known or cached list of accounts. #### Type declaration ▸ (`algorand`): `Promise`\<`default`\> ##### Parameters | Name | Type | | :------ | :------ | | `algorand` | [`AlgorandClient`](../classes/types_algorand_client.AlgorandClient.md) | ##### Returns `Promise`\<`default`\> #### Defined in [src/types/testing.ts:48](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L48) ___ ### initialFunds • **initialFunds**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) Initial funds to ensure the account has #### Defined in [src/types/testing.ts:44](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L44) ___ ### suppressLog • `Optional` **suppressLog**: `boolean` Whether to suppress the log (which includes a mnemonic) or not (default: do not suppress the log) #### Defined in [src/types/testing.ts:46](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L46) ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/developers-algokit-architecture-decisions.txt: -------------------------------------------------------------------------------- ``` algokit:cli:architecture-decisions:2024-01-13_native_binaries.md algokit:cli:architecture-decisions:2024-03-06_local_dev_ui_packaging.md algokit:cli:architecture-decisions:2023-07-19_advanced_generate_command.md algokit:cli:architecture-decisions:2022-11-22_beaker-testing-strategy.md algokit:cli:architecture-decisions:2023-01-11_brew_install.md algokit:cli:architecture-decisions:2024-01-31_binary_distribution.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-01-11_beaker_productionisation_review.md algokit:cli:architecture-decisions:2022-11-14_sandbox-approach.md algokit:cli:architecture-decisions:2024-01-23_init-wizard-v2.md developer:docs:details:algokit:architecture-decisions:2024-01-13_native_binaries.md developer:docs:details:algokit:architecture-decisions:2023-07-19_advanced_generate_command.md developer:docs:details:algokit:architecture-decisions:2022-11-22_beaker-testing-strategy.md developer:docs:details:algokit:architecture-decisions:2023-01-11_brew_install.md developer:docs:details:algokit:architecture-decisions:2024-01-31_binary_distribution.md developer:docs:details:algokit:architecture-decisions:2023-01-12_smart-contract-deployment.md developer:docs:details:algokit:architecture-decisions:2023-06-06_frontend-templates.md developer:docs:details:algokit:architecture-decisions:2023-01-11_beaker_productionisation_review.md developer:docs:details:algokit:architecture-decisions:2022-11-14_sandbox-approach.md developer:docs:details:algokit:architecture-decisions:2024-01-23_init-wizard-v2.md puya:docs:architecture-decisions:2024-12-10_arrays.md puya:docs:architecture-decisions:2024-05-22_teal-compilation.md ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:code:interfaces:types_app_client.FundAppAccountParams.md: -------------------------------------------------------------------------------- ```markdown [@algorandfoundation/algokit-utils](../README.md) / [types/app-client](../modules/types_app_client.md) / FundAppAccountParams # Interface: FundAppAccountParams [types/app-client](../modules/types_app_client.md).FundAppAccountParams Parameters for funding an app account ## Table of contents ### Properties - [amount](types_app_client.FundAppAccountParams.md#amount) - [note](types_app_client.FundAppAccountParams.md#note) - [sendParams](types_app_client.FundAppAccountParams.md#sendparams) - [sender](types_app_client.FundAppAccountParams.md#sender) ## Properties ### amount • **amount**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) #### Defined in [src/types/app-client.ts:251](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L251) ___ ### note • `Optional` **note**: [`TransactionNote`](../modules/types_transaction.md#transactionnote) The transaction note for the smart contract call #### Defined in [src/types/app-client.ts:255](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L255) ___ ### sendParams • `Optional` **sendParams**: [`SendTransactionParams`](types_transaction.SendTransactionParams.md) Parameters to control transaction sending #### Defined in [src/types/app-client.ts:257](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L257) ___ ### sender • `Optional` **sender**: [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom) The optional sender to send the transaction from, will use the application client's default sender by default if specified #### Defined in [src/types/app-client.ts:253](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L253) ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:interfaces:EncodedAssetParams.md: -------------------------------------------------------------------------------- ```markdown [algosdk](../README.md) / [Exports](../modules.md) / EncodedAssetParams # Interface: EncodedAssetParams Interfaces for the encoded transaction object. Every property is labelled with its associated Transaction type property ## Table of contents ### Properties - [am](EncodedAssetParams.md#am) - [an](EncodedAssetParams.md#an) - [au](EncodedAssetParams.md#au) - [c](EncodedAssetParams.md#c) - [dc](EncodedAssetParams.md#dc) - [df](EncodedAssetParams.md#df) - [f](EncodedAssetParams.md#f) - [m](EncodedAssetParams.md#m) - [r](EncodedAssetParams.md#r) - [t](EncodedAssetParams.md#t) - [un](EncodedAssetParams.md#un) ## Properties ### am • `Optional` **am**: `Buffer` assetMetadataHash #### Defined in types/transactions/encoded.ts:61 ___ ### an • `Optional` **an**: `string` assetName #### Defined in types/transactions/encoded.ts:46 ___ ### au • `Optional` **au**: `string` assetURL #### Defined in types/transactions/encoded.ts:56 ___ ### c • `Optional` **c**: `Buffer` assetClawback #### Defined in types/transactions/encoded.ts:41 ___ ### dc • **dc**: `number` assetDecimals #### Defined in types/transactions/encoded.ts:21 ___ ### df • **df**: `boolean` assetDefaultFrozen #### Defined in types/transactions/encoded.ts:16 ___ ### f • `Optional` **f**: `Buffer` assetFreeze #### Defined in types/transactions/encoded.ts:36 ___ ### m • `Optional` **m**: `Buffer` assetManager #### Defined in types/transactions/encoded.ts:26 ___ ### r • `Optional` **r**: `Buffer` assetReserve #### Defined in types/transactions/encoded.ts:31 ___ ### t • **t**: `number` \| `bigint` assetTotal #### Defined in types/transactions/encoded.ts:11 ___ ### un • `Optional` **un**: `string` assetUnitName #### Defined in types/transactions/encoded.ts:51 ``` -------------------------------------------------------------------------------- /packages/server/src/resources/index.ts: -------------------------------------------------------------------------------- ```typescript import { McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js'; import { walletResources } from './wallet/index.js'; import { knowledgeResources } from './knowledge/index.js'; // Resource handler type type ResourceHandler = (uri: string) => Promise<{ contents: Array<{ uri: string; mimeType: string; text: string; }>; }>; // Resource module interface interface ResourceModule { canHandle: (uri: string) => boolean; handle: ResourceHandler; getResourceDefinitions: () => Array<{ uri: string; name: string; description: string; schema?: any; }>; } // Resource modules registry const resourceModules: ResourceModule[] = [ walletResources, knowledgeResources ]; export class ResourceManager { // Get all resource definitions from all modules static get resources() { return resourceModules.flatMap(module => module.getResourceDefinitions()); } // Get schemas for all resources static get schemas() { return this.resources.reduce((acc, resource) => ({ ...acc, [resource.uri]: resource.schema }), {} as Record<string, any>); } // Handle resource request static async handleResource(uri: string) { // Find module that can handle this URI const module = resourceModules.find(m => m.canHandle(uri)); if (!module) { throw new McpError( ErrorCode.InvalidRequest, `No module found to handle resource: ${uri}` ); } try { return await module.handle(uri); } catch (error: unknown) { if (error instanceof McpError) { throw error; } const message = error instanceof Error ? error.message : 'Unknown error'; throw new McpError( ErrorCode.InternalError, `Failed to handle resource: ${message}` ); } } } ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/puya:docs:lg-ops.md: -------------------------------------------------------------------------------- ```markdown # AVM operations Algorand Python allows you to do express [every op code the AVM has available](https://developer.algorand.org/docs/get-details/dapps/avm/teal/specification/#operations) apart from ops that manipulate the stack (to avoid conflicts with the compiler), and `log` (to avoid confusion with the superior [Algorand Python log function](./lg-logs.md)). These ops are exposed via the [`algopy.op`](#algopy.op) submodule. We generally recommend importing this entire submodule so you can use intellisense to discover the available methods: ```python from algopy import UInt64, op, subroutine @subroutine def sqrt_16() -> UInt64: return op.sqrt(16) ``` All ops are typed using Algorand Python types and have correct static type representations. Many ops have higher-order functionality that Algorand Python exposes and would limit the need to reach for the underlying ops. For instance, there is first-class support for local and global storage so there is little need to use the likes of `app_local_get` et. al. But they are still exposed just in case you want to do something that Algorand Python's abstractions don't support. ## Txn The `Txn` opcodes are so commonly used they have been exposed directly in the `algopy` module and can be easily imported to make it terser to access: ```python from algopy import subroutine, Txn @subroutine def has_no_app_args() -> bool: return Txn.num_app_args == 0 ``` ## Global The `Global` opcodes are so commonly used they have been exposed directly in the `algopy` module and can be easily imported to make it terser to access: ```python from algopy import subroutine, Global, Txn @subroutine def only_allow_creator() -> None: assert Txn.sender == Global.creator_address, "Only the contract creator can perform this operation" ``` ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:ABIContract.md: -------------------------------------------------------------------------------- ```markdown [algosdk](../README.md) / [Exports](../modules.md) / ABIContract # Class: ABIContract ## Table of contents ### Constructors - [constructor](ABIContract.md#constructor) ### Properties - [description](ABIContract.md#description) - [events](ABIContract.md#events) - [methods](ABIContract.md#methods) - [name](ABIContract.md#name) - [networks](ABIContract.md#networks) ### Methods - [getMethodByName](ABIContract.md#getmethodbyname) - [toJSON](ABIContract.md#tojson) ## Constructors ### constructor • **new ABIContract**(`params`) #### Parameters | Name | Type | | :------ | :------ | | `params` | [`ABIContractParams`](../interfaces/ABIContractParams.md) | #### Defined in abi/contract.ts:28 ## Properties ### description • `Optional` `Readonly` **description**: `string` #### Defined in abi/contract.ts:22 ___ ### events • `Optional` `Readonly` **events**: `ARC28Event`[] [ARC-28](https://arc.algorand.foundation/ARCs/arc-0028) events that MAY be emitted by this contract #### Defined in abi/contract.ts:26 ___ ### methods • `Readonly` **methods**: [`ABIMethod`](ABIMethod.md)[] #### Defined in abi/contract.ts:24 ___ ### name • `Readonly` **name**: `string` #### Defined in abi/contract.ts:21 ___ ### networks • `Readonly` **networks**: [`ABIContractNetworks`](../interfaces/ABIContractNetworks.md) #### Defined in abi/contract.ts:23 ## Methods ### getMethodByName ▸ **getMethodByName**(`name`): [`ABIMethod`](ABIMethod.md) #### Parameters | Name | Type | | :------ | :------ | | `name` | `string` | #### Returns [`ABIMethod`](ABIMethod.md) #### Defined in abi/contract.ts:54 ___ ### toJSON ▸ **toJSON**(): [`ABIContractParams`](../interfaces/ABIContractParams.md) #### Returns [`ABIContractParams`](../interfaces/ABIContractParams.md) #### Defined in abi/contract.ts:44 ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:cli:features:tasks:analyze.md: -------------------------------------------------------------------------------- ```markdown # AlgoKit Task Analyze The `analyze` task is a command-line utility that analyzes TEAL programs for common vulnerabilities using [Tealer](https://github.com/crytic/tealer) integration. It allows you to detect a range of common vulnerabilities in code written in TEAL. For full list of vulnerability detectors refer to [Tealer documentation](https://github.com/crytic/tealer?tab=readme-ov-file#detectors). ## Usage ```bash algokit task analyze INPUT_PATHS [OPTIONS] ``` ### Arguments - `INPUT_PATHS`: Paths to the TEAL files or directories containing TEAL files to be analyzed. This argument is required. ### Options - `-r, --recursive`: Recursively search for all TEAL files within any provided directories. - `--force`: Force verification without the disclaimer confirmation prompt. - `--diff`: Exit with a non-zero code if differences are found between current and last reports. - `-o, --output OUTPUT_PATH`: Directory path where to store the reports of the static analysis. - `-e, --exclude DETECTORS`: Exclude specific vulnerabilities from the analysis. Supports multiple exclusions in a single run. ## Example ```bash algokit task analyze ./contracts -r --exclude rekey-to --exclude missing-fee-check ``` This command will recursively analyze all TEAL files in the `contracts` directory and exclude the `missing-fee-check` vulnerability from the analysis. ## Security considerations This task uses [`tealer`](https://github.com/crytic/tealer), a third-party tool, to suggest improvements for your TEAL programs, but remember to always test your smart contracts code, follow modern software engineering practices and use the [guidelines for smart contract development](https://developer.algorand.org/docs/get-details/dapps/smart-contracts/guidelines/). This should not be used as a substitute for an actual audit. ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:SourceMap.md: -------------------------------------------------------------------------------- ```markdown [algosdk](../README.md) / [Exports](../modules.md) / SourceMap # Class: SourceMap ## Table of contents ### Constructors - [constructor](SourceMap.md#constructor) ### Properties - [lineToPc](SourceMap.md#linetopc) - [mappings](SourceMap.md#mappings) - [names](SourceMap.md#names) - [pcToLine](SourceMap.md#pctoline) - [sources](SourceMap.md#sources) - [version](SourceMap.md#version) ### Methods - [getLineForPc](SourceMap.md#getlineforpc) - [getPcsForLine](SourceMap.md#getpcsforline) ## Constructors ### constructor • **new SourceMap**(`«destructured»`) #### Parameters | Name | Type | | :------ | :------ | | `«destructured»` | `Object` | | › `mappings` | `string` | | › `names` | `string`[] | | › `sources` | `string`[] | | › `version` | `number` | #### Defined in logic/sourcemap.ts:12 ## Properties ### lineToPc • **lineToPc**: `Object` #### Index signature ▪ [key: `number`]: `number`[] #### Defined in logic/sourcemap.ts:10 ___ ### mappings • **mappings**: `string` #### Defined in logic/sourcemap.ts:7 ___ ### names • **names**: `string`[] #### Defined in logic/sourcemap.ts:6 ___ ### pcToLine • **pcToLine**: `Object` #### Index signature ▪ [key: `number`]: `number` #### Defined in logic/sourcemap.ts:9 ___ ### sources • **sources**: `string`[] #### Defined in logic/sourcemap.ts:5 ___ ### version • **version**: `number` #### Defined in logic/sourcemap.ts:4 ## Methods ### getLineForPc ▸ **getLineForPc**(`pc`): `number` #### Parameters | Name | Type | | :------ | :------ | | `pc` | `number` | #### Returns `number` #### Defined in logic/sourcemap.ts:60 ___ ### getPcsForLine ▸ **getPcsForLine**(`line`): `number`[] #### Parameters | Name | Type | | :------ | :------ | | `line` | `number` | #### Returns `number`[] #### Defined in logic/sourcemap.ts:64 ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:code:interfaces:types_network_client.NetworkDetails.md: -------------------------------------------------------------------------------- ```markdown [@algorandfoundation/algokit-utils](../README.md) / [types/network-client](../modules/types_network_client.md) / NetworkDetails # Interface: NetworkDetails [types/network-client](../modules/types_network_client.md).NetworkDetails Details of the current network. ## Table of contents ### Properties - [genesisHash](types_network_client.NetworkDetails.md#genesishash) - [genesisId](types_network_client.NetworkDetails.md#genesisid) - [isLocalNet](types_network_client.NetworkDetails.md#islocalnet) - [isMainNet](types_network_client.NetworkDetails.md#ismainnet) - [isTestNet](types_network_client.NetworkDetails.md#istestnet) ## Properties ### genesisHash • **genesisHash**: `string` The base64 genesis hash of the current network. #### Defined in [src/types/network-client.ts:34](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/network-client.ts#L34) ___ ### genesisId • **genesisId**: `string` The genesis ID of the current network. #### Defined in [src/types/network-client.ts:32](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/network-client.ts#L32) ___ ### isLocalNet • **isLocalNet**: `boolean` Whether or not the network is LocalNet. #### Defined in [src/types/network-client.ts:30](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/network-client.ts#L30) ___ ### isMainNet • **isMainNet**: `boolean` Whether or not the network is MainNet. #### Defined in [src/types/network-client.ts:28](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/network-client.ts#L28) ___ ### isTestNet • **isTestNet**: `boolean` Whether or not the network is TestNet. #### Defined in [src/types/network-client.ts:26](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/network-client.ts#L26) ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/liquid-auth:docs:clients:browser:example.md: -------------------------------------------------------------------------------- ```markdown --- title: 'Browser: Example' next: false --- You can check the example in the <a href="https://github.com/algorandfoundation/liquid-auth-js/tree/develop/example" target="blank">GitHub repository</a> for a working browser based application ## Answer Client A dApp that wants a remote wallet to log into the service and create a peer-to-peer connection. ```typescript import { SignalClient } from "@algorandfoundation/liquid-client"; const client = new SignalClient(window.origin); const requestId = SignalClient.generateRequestId() // 12345 // Wait for the Offer Client to connect client.peer(requestId, 'offer').then((dc)=>{ // Handle Peer Messages dc.onmessage = (event: MessageEvent) => { console.log(event.data) } // Send Messages to Peer dc.send('Hello World') }) // Generate a QR Code const qrData = await client.qrCode() ``` ## Offer Client The remote browser-based wallet. This could be an extension or hybrid mobile application. ```typescript import * as nacl from 'tweetnacl' import { SignalClient, toBase64URL } from "@algorandfoundation/liquid-client"; const requestId = 12345 // A known request ID from a Answer Client const origin = "https://example.com" // Some known origin const address = "encoded-address" // Some known address const secretKey = new Uint8Array(32) // Some secret key // Sign in to the service with a new credential await client.attestation(async (challenge: Uint8Array) => ({ type: 'algorand', requestId, origin, address, signature: toBase64URL(nacl.sign.detached(challenge, secretKey)), device: 'Demo Web Wallet' })) // Wait for the Answer Client to connect client.peer(requestId, 'answer').then((dc)=>{ // Handle Peer Messages dc.onmessage = (event: MessageEvent) => { console.log(event.data) } // Send Messages to Peer dc.send('Hello World') }) ``` ``` -------------------------------------------------------------------------------- /packages/server/src/tools/apiManager/example/get-balance.ts: -------------------------------------------------------------------------------- ```typescript import { McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js'; import { ResponseProcessor } from '../../../utils/responseProcessor.js'; import { algodClient } from '../../../algorand-client.js'; /** * Example tool to demonstrate implementation patterns * Gets account balance and assets for a given address * * @param {Object} args - Tool arguments * @param {string} args.address - Algorand address to check * @returns {Promise<Object>} Account balance information including assets * @throws {McpError} If address is invalid or operation fails */ export const getBalanceToolSchema: { type: "object", properties: any, required: string[] } = { type: "object", properties: { address: { type: 'string', description: 'Algorand address in standard format (58 characters)' } }, required: ['address'] }; export const getBalanceTool = async (args: { address: string }) => { try { // Input validation if (!args.address) { throw new McpError( ErrorCode.InvalidParams, 'Missing required parameter: address' ); } if (!/^[A-Z2-7]{58}$/.test(args.address)) { throw new McpError( ErrorCode.InvalidParams, 'Invalid Algorand address format' ); } // Get account information using Algorand client const accountInfo = await algodClient.accountInformation(args.address).do(); // Return complete response without pagination return accountInfo; } catch (error: unknown) { // Handle specific Algorand API errors if (error instanceof McpError) { throw error; } // Format error response const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred'; throw new McpError( ErrorCode.InternalError, `Failed to get account balance: ${errorMessage}` ); } }; ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/devportal-code-examples:README.md: -------------------------------------------------------------------------------- ```markdown # Algorand Developer Portal Code Examples Welcome to your new AlgoKit project! This is your workspace root. A `workspace` in AlgoKit is an orchestrated collection of standalone projects (backends, smart contracts, frontend apps and etc). By default, `projects_root_path` parameter is set to `projects`. Which instructs AlgoKit CLI to create a new directory under `projects` directory when new project is instantiated via `algokit init` at the root of the workspace. ## Prerequisites - [Install AlgoKit](https://github.com/algorandfoundation/algokit-cli/tree/main?tab=readme-ov-file#install) - Install [Docker](https://www.docker.com/products/docker-desktop/) - Install [Node.JS / npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) ## Project Setup - Run `algokit project bootstrap all` from the root of this repository to bootstrap all subprojects under the `projects` folder. - Open Docker Desktop and then launch AlgoKit localnet by running `algokit localnet start` ## Getting Started To get started refer to `README.md` files in respective sub-projects in the `projects` directory. To learn more about algokit, visit [documentation](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/algokit.md). ### GitHub Codespaces To get started execute: 1. `algokit generate devcontainer` - invoking this command from the root of this repository will create a `devcontainer.json` file with all the configuration needed to run this project in a GitHub codespace. [Run the repository inside a codespace](https://docs.github.com/en/codespaces/getting-started/quickstart) to get started. 2. `algokit init` - invoke this command inside a github codespace to launch an interactive wizard to guide you through the process of creating a new AlgoKit project Powered by [Copier templates](https://copier.readthedocs.io/en/stable/). ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:code:enums:types_indexer.ApplicationOnComplete.md: -------------------------------------------------------------------------------- ```markdown [@algorandfoundation/algokit-utils](../README.md) / [types/indexer](../modules/types_indexer.md) / ApplicationOnComplete # Enumeration: ApplicationOnComplete [types/indexer](../modules/types_indexer.md).ApplicationOnComplete Defines the what additional actions occur with the transaction https://developer.algorand.org/docs/rest-apis/indexer/#oncompletion ## Table of contents ### Enumeration Members - [clear](types_indexer.ApplicationOnComplete.md#clear) - [closeout](types_indexer.ApplicationOnComplete.md#closeout) - [delete](types_indexer.ApplicationOnComplete.md#delete) - [noop](types_indexer.ApplicationOnComplete.md#noop) - [optin](types_indexer.ApplicationOnComplete.md#optin) - [update](types_indexer.ApplicationOnComplete.md#update) ## Enumeration Members ### clear • **clear** = ``"clear"`` #### Defined in [src/types/indexer.ts:171](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L171) ___ ### closeout • **closeout** = ``"closeout"`` #### Defined in [src/types/indexer.ts:170](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L170) ___ ### delete • **delete** = ``"delete"`` #### Defined in [src/types/indexer.ts:173](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L173) ___ ### noop • **noop** = ``"noop"`` #### Defined in [src/types/indexer.ts:168](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L168) ___ ### optin • **optin** = ``"optin"`` #### Defined in [src/types/indexer.ts:169](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L169) ___ ### update • **update** = ``"update"`` #### Defined in [src/types/indexer.ts:172](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/indexer.ts#L172) ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:code:interfaces:types_app.AppStorageSchema.md: -------------------------------------------------------------------------------- ```markdown [@algorandfoundation/algokit-utils](../README.md) / [types/app](../modules/types_app.md) / AppStorageSchema # Interface: AppStorageSchema [types/app](../modules/types_app.md).AppStorageSchema Parameters representing the storage schema of an app. ## Table of contents ### Properties - [extraPages](types_app.AppStorageSchema.md#extrapages) - [globalByteSlices](types_app.AppStorageSchema.md#globalbyteslices) - [globalInts](types_app.AppStorageSchema.md#globalints) - [localByteSlices](types_app.AppStorageSchema.md#localbyteslices) - [localInts](types_app.AppStorageSchema.md#localints) ## Properties ### extraPages • `Optional` **extraPages**: `number` Any extra pages that are needed for the smart contract; if left blank then the right number of pages will be calculated based on the teal code size #### Defined in [src/types/app.ts:209](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L209) ___ ### globalByteSlices • **globalByteSlices**: `number` Restricts number of byte slices in global state #### Defined in [src/types/app.ts:207](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L207) ___ ### globalInts • **globalInts**: `number` Restricts number of ints in global state #### Defined in [src/types/app.ts:205](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L205) ___ ### localByteSlices • **localByteSlices**: `number` Restricts number of byte slices in per-user local state #### Defined in [src/types/app.ts:203](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L203) ___ ### localInts • **localInts**: `number` Restricts number of ints in per-user local state #### Defined in [src/types/app.ts:201](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L201) ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/developer:docs:details:dapps:smart-contracts:smartsigs:index.md: -------------------------------------------------------------------------------- ```markdown title: SmartSig details **Algorand Smart Contracts (ASC1)**, provides both smart contracts and smart signatures. The intended use case for the contract will determine the appropriate type to use. Smart signatures are primarily used to delegate signature authority. Smart signatures can also be used as escrow or contract accounts, but in most cases it is preferable to use a [smart contract](../apps/) when an escrow is required. Most Algorand transactions are authorized by a [signature from a single account](../../../transactions/signatures.md#single-signatures) or a [multisignature account](../../../transactions/signatures#multisignatures). Algorand’s smart signatures allow for a third type of signature using a **Transaction Execution Approval Language (TEAL)** program, called a **logic signature (LogicSig)**. Smart signatures provide two modes for TEAL logic to operate as a LogicSig, to create a contract account that functions similar to an escrow or to delegate signature authority to another account. These two modes are discussed in detail in [Usage Modes](./modes/). These smart signatures can be written in [TEAL](/docs/get-details/dapps/avm/teal/) or in Python using the [PyTeal library](/docs/get-details/dapps/writing-contracts/pyteal). If written in Python the library will return the automatically generated TEAL to be used by either the SDKs or the `goal` command-line tool. To learn more about the TEAL language specification see the [TEAL Specification Reference](../../avm/teal/specification.md). To get a high-level understanding of how TEAL is processed see the [TEAL Overview guide](../../avm/teal/). To compile and use a TEAL program as a smart signature with `goal`, see [CLI smart signatures](walkthrough). To start working with smart signatures with the SDKs, visit the [Interact with smart signatures](../frontend/smartsigs/) section. ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:code:interfaces:types_testing.AlgorandFixture.md: -------------------------------------------------------------------------------- ```markdown [@algorandfoundation/algokit-utils](../README.md) / [types/testing](../modules/types_testing.md) / AlgorandFixture # Interface: AlgorandFixture [types/testing](../modules/types_testing.md).AlgorandFixture An Algorand automated testing fixture ## Table of contents ### Properties - [beforeEach](types_testing.AlgorandFixture.md#beforeeach) ### Accessors - [algorand](types_testing.AlgorandFixture.md#algorand) - [context](types_testing.AlgorandFixture.md#context) ## Properties ### beforeEach • **beforeEach**: () => `Promise`\<`void`\> Testing framework agnostic handler method to run before each test to prepare the `context` for that test. #### Type declaration ▸ (): `Promise`\<`void`\> ##### Returns `Promise`\<`void`\> #### Defined in [src/types/testing.ts:87](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L87) ## Accessors ### algorand • `get` **algorand**(): [`AlgorandClient`](../classes/types_algorand_client.AlgorandClient.md) Retrieve an `AlgorandClient` loaded with the current context, including testAccount and any generated accounts loaded as signers. #### Returns [`AlgorandClient`](../classes/types_algorand_client.AlgorandClient.md) #### Defined in [src/types/testing.ts:82](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L82) ___ ### context • `get` **context**(): [`AlgorandTestAutomationContext`](types_testing.AlgorandTestAutomationContext.md) Retrieve the current context. Useful with destructuring. #### Returns [`AlgorandTestAutomationContext`](types_testing.AlgorandTestAutomationContext.md) **`Example`** ```typescript test('My test', () => { const {algod, indexer, testAccount, ...} = algorand.context }) ``` #### Defined in [src/types/testing.ts:77](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/testing.ts#L77) ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/liquid-auth:decisions:4-Fido-Extension.md: -------------------------------------------------------------------------------- ```markdown # Overview Deprecate ARC-31/Arbitrary Auth Message in favor of custom FIDO2 extension ## Decisions - Remove connect module and endpoints - Use FIDO2 Attestation/Assertions for device linking ## Implementation ```mermaid sequenceDiagram participant Website participant Server participant Wallet Note over Website, Wallet: Link devices Website->>Server: Subscribe to 'wss:link' Website-->>Website: Display QR Connect Request ID Wallet->>Website: Scan QR Code Server-->>Wallet: Get Challenge/Options Wallet->>Server: POST FIDO2 Credential + Liquid Auth Signature Server-->>Server: Validate Signatures Server-->>Website: HTTPOnly Session Server->>Wallet: Ok Response + HTTPOnly Session Server->>Website: Emit to `wss:link` client Note over Website, Wallet: Signaling Channels Website-->>Server: Subscribe to 'wss:offer-description' Website-->>Server: Subscribe to 'wss:offer-candidate' Wallet-->>Server: Subscribe to 'wss:answer-description' Wallet-->>Server: Subscribe to 'wss:answer-candidate' Note over Website, Wallet: Peer Offer Wallet-->>Wallet: On answer-description, set Remote SDP Wallet-->>Wallet: On answer-candidate, add ICE Candidate Wallet-->>Wallet: Create Peer Offer & DataChannel Wallet-->>Server: Emit `wss:offer-description` Wallet-->>Server: Emit `wss:offer-candidate` Note over Website, Wallet: Peer Answer Website-->>Website: On offer-description, set Remote SDP and create Answer Website-->>Website: On offer-candidate, add ICE Candidate Website-->>Server: Emit `wss:answer-description` Website-->>Server: Emit `wss:answer-candidate` Note over Website, Wallet: Data Channel Website-->>Wallet: On DataChannel, Emit Messages ``` *Note: It may be possible to handle signaling in a fully decentralized manner in the future. ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:cli:features:tasks:nfd.md: -------------------------------------------------------------------------------- ```markdown # AlgoKit Task NFD Lookup The AlgoKit NFD Lookup feature allows you to perform a lookup via NFD domain or address, returning the associated address or domain respectively using the AlgoKit CLI. The feature is powered by [NFDomains MainNet API](https://api-docs.nf.domains/). ## Usage Available commands and possible usage as follows: ```bash $ ~ algokit task nfd-lookup Usage: algokit task nfd-lookup [OPTIONS] VALUE Perform a lookup via NFD domain or address, returning the associated address or domain respectively. Options: -o, --output [full|tiny|address] Output format for NFD API response. Defaults to address|domain resolved. -h, --help Show this message and exit. ``` ## Options - `VALUE`: Specifies the NFD domain or Algorand address to lookup. This argument is required. - `--output, -o [full|tiny|address]`: Specifies the output format for NFD API response. Defaults to address|domain resolved. > When using the `full` and `tiny` output formats, please be aware that these match the [views in get requests of the NFD API](https://api-docs.nf.domains/quick-start#views-in-get-requests). The `address` output format, which is used by default, refers to the respective domain name or address resolved and outputs it as a string (if found). ## Example To perform a lookup, you can use the nfd-lookup command as follows: ```bash $ algokit task nfd-lookup {NFD_DOMAIN_OR_ALGORAND_ADDRESS} ``` This will perform a lookup and return the associated address or domain. If you want to specify the output format, you can use the --output flag: ```bash $ algokit task nfd-lookup {NFD_DOMAIN_OR_ALGORAND_ADDRESS} --output full ``` If the lookup is successful, the result will be output to the console in a JSON format. ## Further Reading For in-depth details, visit the [nfd-lookup section](../../cli/index.md#nfd-lookup) in the AlgoKit CLI reference documentation. ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:utils:python:source:capabilities:account.md: -------------------------------------------------------------------------------- ```markdown # Account management Account management is one of the core capabilities provided by AlgoKit Utils. It allows you to create mnemonic, idempotent KMD and environment variable injected accounts that can be used to sign transactions as well as representing a sender address at the same time. (account)= ## `Account` Encapsulates a private key with convenience properties for `address`, `signer` and `public_key`. There are various methods of obtaining an `Account` instance * `get_account`: Returns an `Account` instance with the private key loaded by convention based on the given name identifier: * from an environment variable containing a mnemonic `{NAME}_MNEMONIC` OR * loading the account from KMD ny name if it exists (LocalNet only) OR * creating the account in KMD with associated name (LocalNet only) This allows you to have powerful code that will automatically create and fund an account by name locally and when deployed against TestNet/MainNet will automatically resolve from environment variables * `Account.new_account`: Returns a new `Account` using `algosdk.account.generate_account()` * `Account(private_key)`: Load an existing account from a private key * `Account(private_key, address)`: Load an existing account from a private key and address, useful for re-keyed accounts * `get_account_from_mnemonic`: Load an existing account from a mnemonic * `get_dispenser_account`: Gets a dispenser account that is funded by either: * Using the LocalNet default account (LocalNet only) OR * Loading an account from `DISPENSER_MNEMONIC` If working with a LocalNet instance, there are some additional functions that rely on a KMD service being exposed: * `create_kmd_wallet_account`, `get_kmd_wallet_account` or `get_or_create_kmd_wallet_account`: These functions allow retrieving a KMD wallet account by name, * `get_localnet_default_account`: Gets default localnet account that is funded with algos ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:utils:python:markdown:capabilities:account.md: -------------------------------------------------------------------------------- ```markdown # Account management Account management is one of the core capabilities provided by AlgoKit Utils. It allows you to create mnemonic, idempotent KMD and environment variable injected accounts that can be used to sign transactions as well as representing a sender address at the same time. <a id="account"></a> ## `Account` Encapsulates a private key with convenience properties for `address`, `signer` and `public_key`. There are various methods of obtaining an `Account` instance * `get_account`: Returns an `Account` instance with the private key loaded by convention based on the given name identifier: * from an environment variable containing a mnemonic `{NAME}_MNEMONIC` OR * loading the account from KMD ny name if it exists (LocalNet only) OR * creating the account in KMD with associated name (LocalNet only) This allows you to have powerful code that will automatically create and fund an account by name locally and when deployed against TestNet/MainNet will automatically resolve from environment variables * `Account.new_account`: Returns a new `Account` using `algosdk.account.generate_account()` * `Account(private_key)`: Load an existing account from a private key * `Account(private_key, address)`: Load an existing account from a private key and address, useful for re-keyed accounts * `get_account_from_mnemonic`: Load an existing account from a mnemonic * `get_dispenser_account`: Gets a dispenser account that is funded by either: * Using the LocalNet default account (LocalNet only) OR * Loading an account from `DISPENSER_MNEMONIC` If working with a LocalNet instance, there are some additional functions that rely on a KMD service being exposed: * `create_kmd_wallet_account`, `get_kmd_wallet_account` or `get_or_create_kmd_wallet_account`: These functions allow retrieving a KMD wallet account by name, * `get_localnet_default_account`: Gets default localnet account that is funded with algos ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/tealscript:tutorials_Hello World_0002-init.md: -------------------------------------------------------------------------------- ```markdown --- title: "2. Initializing The Template" --- ## Algokit Init To get started, run the following Algokit command to initialize a template: ```bash $ algokit init --template tealscript --name hello_world ``` For this tutorial, I have chosen the name `hello_world` for my project, which will be reflected throughout the rest of this content. If you choose a different name, some parts might be different for you. ## Template Layout After the init command finishes, you should have the following directory structure: ``` . ├── README.md ├── __test__ │ └── hello_world.test.ts ├── contracts │ ├── artifacts │ │ └── components │ ├── clients │ └── hello_world.algo.ts ├── jest.config.js ├── package-lock.json ├── package.json └── tsconfig.json ``` If you have experience with web development, most of this should look familiar. Below are the key directory and files ### __test__/ #### hello_world.test.ts `hello_world.test.ts` is a test for our contract written with Jest. This tutorial won't go too in-depth into testing, but it is a good example on how client-side contract interaction works ### contracts/ #### hello_world.algo.ts `hello_world.algo.ts` is the most important file in the template. This is where our contract logic is defined. You might notice that this file has a `.ts` extension, but also an `.algo.ts`. The `.algo.` is there solely to help tools like ESLint and TypeScript differentiate between regular TypeScript files and TEALScript files. The TEALScript compiler does not require the `.algo.ts` extension but it is highly recommended to use. Any files without `.algo.ts` extension in this template may be mistaken for TypeScript files that should be compiled into JavaScript (instead of TEAL), which may cause errors. #### artifacts/ `artifacts/` is the directory where all the files generated by the TEALScript compiler and algokit will go. We will go further in-depth on these artifacts in the next step of this tutorial. ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:enums:OnApplicationComplete.md: -------------------------------------------------------------------------------- ```markdown [algosdk](../README.md) / [Exports](../modules.md) / OnApplicationComplete # Enumeration: OnApplicationComplete Enums for application transactions on-transaction-complete behavior ## Table of contents ### Enumeration Members - [ClearStateOC](OnApplicationComplete.md#clearstateoc) - [CloseOutOC](OnApplicationComplete.md#closeoutoc) - [DeleteApplicationOC](OnApplicationComplete.md#deleteapplicationoc) - [NoOpOC](OnApplicationComplete.md#noopoc) - [OptInOC](OnApplicationComplete.md#optinoc) - [UpdateApplicationOC](OnApplicationComplete.md#updateapplicationoc) ## Enumeration Members ### ClearStateOC • **ClearStateOC** = ``3`` ClearStateOC is similar to CloseOutOC, but may never fail. This allows users to reclaim their minimum balance from an application they no longer wish to opt in to. #### Defined in types/transactions/base.ts:81 ___ ### CloseOutOC • **CloseOutOC** = ``2`` CloseOutOC indicates that an application transaction will deallocate some LocalState for the application from the user's account #### Defined in types/transactions/base.ts:74 ___ ### DeleteApplicationOC • **DeleteApplicationOC** = ``5`` DeleteApplicationOC indicates that an application transaction will delete the AppParams for the application from the creator's balance record #### Defined in types/transactions/base.ts:94 ___ ### NoOpOC • **NoOpOC** = ``0`` NoOpOC indicates that an application transaction will simply call its ApprovalProgram #### Defined in types/transactions/base.ts:62 ___ ### OptInOC • **OptInOC** = ``1`` OptInOC indicates that an application transaction will allocate some LocalState for the application in the sender's account #### Defined in types/transactions/base.ts:68 ___ ### UpdateApplicationOC • **UpdateApplicationOC** = ``4`` UpdateApplicationOC indicates that an application transaction will update the ApprovalProgram and ClearStateProgram for the application #### Defined in types/transactions/base.ts:87 ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:code:interfaces:types_app_spec.CallConfig.md: -------------------------------------------------------------------------------- ```markdown [@algorandfoundation/algokit-utils](../README.md) / [types/app-spec](../modules/types_app_spec.md) / CallConfig # Interface: CallConfig [types/app-spec](../modules/types_app_spec.md).CallConfig Call configuration for a method ## Table of contents ### Properties - [close\_out](types_app_spec.CallConfig.md#close_out) - [delete\_application](types_app_spec.CallConfig.md#delete_application) - [no\_op](types_app_spec.CallConfig.md#no_op) - [opt\_in](types_app_spec.CallConfig.md#opt_in) - [update\_application](types_app_spec.CallConfig.md#update_application) ## Properties ### close\_out • `Optional` **close\_out**: [`CallConfigValue`](../modules/types_app_spec.md#callconfigvalue) Close out call config #### Defined in [src/types/app-spec.ts:183](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L183) ___ ### delete\_application • `Optional` **delete\_application**: [`CallConfigValue`](../modules/types_app_spec.md#callconfigvalue) Delete call config #### Defined in [src/types/app-spec.ts:187](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L187) ___ ### no\_op • `Optional` **no\_op**: [`CallConfigValue`](../modules/types_app_spec.md#callconfigvalue) NoOp call config #### Defined in [src/types/app-spec.ts:179](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L179) ___ ### opt\_in • `Optional` **opt\_in**: [`CallConfigValue`](../modules/types_app_spec.md#callconfigvalue) Opt-in call config #### Defined in [src/types/app-spec.ts:181](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L181) ___ ### update\_application • `Optional` **update\_application**: [`CallConfigValue`](../modules/types_app_spec.md#callconfigvalue) Update call config #### Defined in [src/types/app-spec.ts:185](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L185) ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/developer:docs:get-started:basics:where_to_start.md: -------------------------------------------------------------------------------- ```markdown title: Where do I start? # Smart contracts & dApps If you are interested in building an application([dApp](whats_a_dapp.md)) on Algorand, checkout [Algokit](/docs/get-started/algokit), which is a tool for quickly building, testing, and deploying Algorand smart contracts. > [Tell me more about Algorand smart contracts!](/docs/get-details/dapps/smart-contracts/) # Tokenization This section will walk you through the basics of tokenizing assets on Algorand. We’ll start with showing you how Alice and Bob tokenize their NFT, and then walk through creating fungible tokens. You don’t need to write smart contract code to tokenize assets on Algorand. Assets are a layer-1 primitive, built right into the protocol itself. > [I want to learn how to mint NFTs.](/docs/get-started/tokenization/nft/){: target="_blank} > [I want to learn how to create fungible tokens.](/docs/get-started/tokenization/ft){: target="_blank} ----- # Detailed feature documentation If you are looking for detailed feature explanations and reference documentation, check out the “Get details” section or just search for what you’re looking for using the search box in the top left corner of the site. > [Get all the details on layer-1 features and capabilities.](/docs/get-details/){: target="_blank} ----- # Developer Blog Here you can find code tutorials and prototypes from the Algorand developer community. This is also where big features will be announced. > [See the latest articles and code from Algorand and the community.](../../../../blog/){: target="_blank} ----- # Participate in Algorand Consensus Most of this getting started section is targeted towards application developers. If you’re interested in running a MainNet node and participating in Algorand consensus, refer to the "Run a node" section. > [I want to run a node.](/docs/run-a-node/setup/types/){: target="_blank} > [I want to participate in Algorand consensus.](/docs/run-a-node/participate/){: target="_blank} ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/developer:docs:details:algorand-networks:index.md: -------------------------------------------------------------------------------- ```markdown title: Overview Algorand has three public networks: [**MainNet**](mainnet), [**TestNet**](testnet), and [**BetaNet**](betanet). This section provides details about each of these networks that will help you validate the integrity of your connection to them. <center> **Diagram of the relationship between the three public networks.**  </center> Each network page, contains the following information: - **What's New** ([M](mainnet#whats-new), [T](testnet#whats-new), [B](betanet#whats-new))- An optional section where new features are highlighted with links to accompanying documentation. - **Version** ([M](mainnet#version), [T](testnet#version), [B](betanet#version)) - The latest protocol software version. Should match `goal -v` or `GET /versions` [build version](/docs/rest-apis/algod#buildversion). - **Release Version** ([M](mainnet#release-version), [T](testnet#release-version), [B](betanet#release-version)) - A link to the official release notes where you can view all the latest changes. - **Genesis ID** ([M](mainnet#genesis-id), [T](testnet#genesis-id), [B](betanet#genesis-id)) - A human-readable identifier for the network. This should not be used as a unique identifier. - **Genesis Hash** ([M](mainnet#genesis-hash), [T](testnet#genesis-hash), [B](betanet#genesis-hash)) - The unique identifier for the network, present in every transaction. Validate that your transactions match the network you plan to submit them to. - **FeeSink Address** ([M](mainnet#feesink-address), [T](testnet#feesink-address), [B](betanet#feesink-address)) - Read more about special accounts [here](/docs/get-details/accounts#special-accounts). - **RewardsPool Address** ([M](mainnet#rewardspool-address), [T](testnet#rewardspool-address), [B](betanet#rewardspool-address)) - Read more about special accounts [here](../accounts#special-accounts). - **Faucet** ([T](testnet#faucet), [B](betanet#faucet)) - Link to a faucet (TestNet and BetaNet only). ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:code:modules:types_debugging.md: -------------------------------------------------------------------------------- ```markdown [@algorandfoundation/algokit-utils](../README.md) / types/debugging # Module: types/debugging ## Table of contents ### Interfaces - [AVMTracesEventData](../interfaces/types_debugging.AVMTracesEventData.md) - [TealSourceDebugEventData](../interfaces/types_debugging.TealSourceDebugEventData.md) - [TealSourcesDebugEventData](../interfaces/types_debugging.TealSourcesDebugEventData.md) ### Variables - [ALGOKIT\_DIR](types_debugging.md#algokit_dir) - [DEFAULT\_MAX\_SEARCH\_DEPTH](types_debugging.md#default_max_search_depth) - [SOURCES\_DIR](types_debugging.md#sources_dir) - [TEAL\_FILE\_EXT](types_debugging.md#teal_file_ext) - [TEAL\_SOURCEMAP\_EXT](types_debugging.md#teal_sourcemap_ext) ## Variables ### ALGOKIT\_DIR • `Const` **ALGOKIT\_DIR**: ``".algokit"`` The directory name for AlgoKit project related files #### Defined in [src/types/debugging.ts:9](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/debugging.ts#L9) ___ ### DEFAULT\_MAX\_SEARCH\_DEPTH • `Const` **DEFAULT\_MAX\_SEARCH\_DEPTH**: ``10`` The default maximum search depth for file operations #### Defined in [src/types/debugging.ts:21](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/debugging.ts#L21) ___ ### SOURCES\_DIR • `Const` **SOURCES\_DIR**: ``"sources"`` The directory name for debug source files #### Defined in [src/types/debugging.ts:12](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/debugging.ts#L12) ___ ### TEAL\_FILE\_EXT • `Const` **TEAL\_FILE\_EXT**: ``".teal"`` The file extension for TEAL files #### Defined in [src/types/debugging.ts:15](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/debugging.ts#L15) ___ ### TEAL\_SOURCEMAP\_EXT • `Const` **TEAL\_SOURCEMAP\_EXT**: ``".teal.map"`` The file extension for TEAL source map files #### Defined in [src/types/debugging.ts:18](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/debugging.ts#L18) ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:cli:features:completions.md: -------------------------------------------------------------------------------- ```markdown # AlgoKit Completions AlgoKit supports shell completions for zsh and bash shells, e.g. **bash** ``` $ algokit <Press Tab> bootstrap completions config doctor explore goal init sandbox ``` **zsh** ``` $ ~ algokit <Press Tab> bootstrap -- Bootstrap AlgoKit project dependencies. completions -- Install and Uninstall AlgoKit shell integration. config -- Configure AlgoKit options. doctor -- Run the Algorand doctor CLI. explore -- Explore the specified network in the... goal -- Run the Algorand goal CLI against the AlgoKit Sandbox. init -- Initializes a new project. sandbox -- Manage the AlgoKit sandbox. ``` ## Installing To setup the completions, AlgoKit provides commands that will modify the current users interactive shell script (`.bashrc`/`.zshrc`). > **Note** > If you would prefer AlgoKit to not modify your interactive shell scripts you can install the completions yourself by following the instructions [here](https://click.palletsprojects.com/en/8.1.x/shell-completion/). To [install](../cli/index.md#install) completions for the current shell execute `algokit completions install`. You should see output similar to below: ``` $ ~ algokit completions install AlgoKit completions installed for zsh 🎉 Restart shell or run `. ~/.zshrc` to enable completions ``` After installing the completions don't forget to restart the shell to begin using them! ## Uninstalling To [uninstall](../cli/index.md#uninstall) completions for the current shell run `algokit completions uninstall`: ``` $ ~ algokit completions uninstall AlgoKit completions uninstalled for zsh 🎉 ``` ## Shell Option To install/uninstall the completions for a specific [shell](../cli/index.md#shell) the `--shell` option can be used e.g. `algokit completions install --shell bash`. To learn more about the `algokit completions` command, please refer to [completions](../cli/index.md#completions) in the AlgoKit CLI reference documentation. ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/puya:docs:lg-logs.md: -------------------------------------------------------------------------------- ```markdown # Logging Algorand Python provides a [`log` method](./api-algopy.md#algopy.log) that allows you to emit debugging and event information as well as return values from your contracts to the caller. This `log` method is a superset of the [AVM `log` method](./lg-ops.md) that adds extra functionality: - You can log multiple items rather than a single item - Items are concatenated together with an optional separator (which defaults to: `""`) - Items are automatically converted to bytes for you - Support for: - `int` literals / module variables (encoded as raw bytes, not ASCII) - `UInt64` values (encoded as raw bytes, not ASCII) - `str` literals / module variables (encoded as UTF-8) - `bytes` literals / module variables (encoded as is) - `Bytes` values (encoded as is) - `BytesBacked` values, which includes [`String`](./api-algopy.md#algopy.String), [`BigUInt`](./api-algopy.md#algopy.BigUInt), [`Account`](./api-algopy.md#algopy.Account) and all of the [ARC-4 types](./api-algopy.arc4.md) (encoded as their underlying bytes values) Logged values are [available to the calling client](https://developer.algorand.org/docs/rest-apis/algod/#pendingtransactionresponse) and attached to the transaction record stored on the blockchain ledger. If you want to emit ARC-28 events in the logs then there is a [purpose-built function for that](./lg-arc28.md). Here's an example contract that uses the log method in various ways: ```python from algopy import BigUInt, Bytes, Contract, log, op class MyContract(Contract): def approval_program(self) -> bool: log(0) log(b"1") log("2") log(op.Txn.num_app_args + 3) log(Bytes(b"4") if op.Txn.num_app_args else Bytes()) log( b"5", 6, op.Txn.num_app_args + 7, BigUInt(8), Bytes(b"9") if op.Txn.num_app_args else Bytes(), sep="_", ) return True def clear_state_program(self) -> bool: return True ``` ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/puya:docs:lg-modules.md: -------------------------------------------------------------------------------- ```markdown # Module level constructs You can write compile-time constant code at a module level and then use them in place of [Python built-in literal types](./lg-types.md#python-built-in-types). For a full example of what syntax is currently possible see the [test case example](https://github.com/algorandfoundation/puya/blob/main/test_cases/module_consts/contract.py). ## Module constants Module constants are compile-time constant, and can contain `bool`, `int`, `str` and `bytes`. You can use fstrings and other compile-time constant values in module constants too. For example: ```python from algopy import UInt64, subroutine SCALE = 100000 SCALED_PI = 314159 @subroutine def circle_area(radius: UInt64) -> UInt64: scaled_result = SCALED_PI * radius**2 result = scaled_result // SCALE return result @subroutine def circle_area_100() -> UInt64: return circle_area(UInt64(100)) ``` ## If statements You can use if statements with compile-time constants in module constants. For example: ```python FOO = 42 if FOO > 12: BAR = 123 else: BAR = 456 ``` ## Integer math Module constants can also be defined using common integer expressions. For example: ```python SEVEN = 7 TEN = 7 + 3 FORTY_NINE = 7 ** 2 ``` ## Strings Module `str` constants can use f-string formatting and other common string expressions. For example: ```python NAME = "There" MY_FORMATTED_STRING = f"Hello {NAME}" # Hello There PADDED = f"{123:05}" # "00123" DUPLICATED = "5" * 3 # "555" ``` ## Type aliases You can create type aliases to make your contract terser and more expressive. For example: ```python import typing from algopy import arc4 VoteIndexArray: typing.TypeAlias = arc4.DynamicArray[arc4.UInt8] Row: typing.TypeAlias = arc4.StaticArray[arc4.UInt8, typing.Literal[3]] Game: typing.TypeAlias = arc4.StaticArray[Row, typing.Literal[3]] Move: typing.TypeAlias = tuple[arc4.UInt64, arc4.UInt64] Bytes32: typing.TypeAlias = arc4.StaticArray[arc4.Byte, typing.Literal[32]] Proof: typing.TypeAlias = arc4.DynamicArray[Bytes32] ``` ``` -------------------------------------------------------------------------------- /packages/client/src/env.ts: -------------------------------------------------------------------------------- ```typescript import * as dotenv from 'dotenv'; import { resolve } from 'path'; // Try to load .env file from client package root dotenv.config({ path: resolve(__dirname, '../.env') }); interface EnvConfig { algorand_network: string; algorand_algod: string; algorand_algod_api: string; algorand_indexer: string; algorand_indexer_api: string; algorand_algod_port: string | null; algorand_indexer_port: string | null; algorand_token: string | null; goplausible_account: string; algorand_agent_wallet: string; } // Default values if .env is not present const defaultConfig: EnvConfig = { algorand_network: 'testnet', algorand_algod_api: 'https://testnet-api.algonode.cloud/v2', algorand_algod: 'https://testnet-api.algonode.cloud', algorand_indexer_api: 'https://testnet-idx.algonode.cloud/v2', algorand_indexer: 'https://testnet-idx.algonode.cloud', algorand_algod_port: null, algorand_indexer_port: null, algorand_token: null, goplausible_account: '', algorand_agent_wallet: '', }; // Get environment variable with fallback to default const getEnvVar = (key: keyof EnvConfig): string | null => { const envKey = `ALGORAND_${key.toUpperCase()}`; if (key === 'goplausible_account') { return process.env.GOPLAUSIBLE_ACCOUNT || defaultConfig[key]; } return process.env[envKey] || defaultConfig[key]; }; // Build config object using environment variables or defaults export const env: EnvConfig = { algorand_network: getEnvVar('algorand_network') as string, algorand_algod: getEnvVar('algorand_algod') as string, algorand_algod_api: getEnvVar('algorand_algod_api') as string, algorand_indexer: getEnvVar('algorand_indexer') as string, algorand_indexer_api: getEnvVar('algorand_indexer_api') as string, algorand_algod_port: getEnvVar('algorand_algod_port'), algorand_indexer_port: getEnvVar('algorand_indexer_port'), algorand_token: getEnvVar('algorand_token'), goplausible_account: getEnvVar('goplausible_account') as string, algorand_agent_wallet: getEnvVar('algorand_agent_wallet') as string, }; ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/liquid-auth:docs:server:environment-variables.md: -------------------------------------------------------------------------------- ```markdown --- title: "Server: Configuration" sidebar: order: 2 label: 'Configuration' --- All configurations are set using environment variables. Creating a `.env.docker` file is recommended to store all the environment variables required to run the server. The following sections describe the environment variables required to run the server. ## Environment Variables Attestations and Assertions require a valid `RP_NAME`, `HOSTNAME`, and `ORIGIN` to be set. `ORIGIN` and `HOSTNAME` must be set to a valid domain secured with HTTPS. ```sh RP_NAME=<SERVICE_NAME> # Friendly name of the service HOSTNAME=<DOMAIN_NAME> # Hostname of the service ORIGIN=https://<DOMAIN_NAME> # Origin of the service ``` If you are using a custom Android client, make sure to update the `SHA256` fingerprint. ```bash ANDROID_SHA256HASH=<00:00:...> # SHA256 fingerprint of the Android client ANDROID_PACKAGENAME=<com.example.my-wallet> # Package name of the Android client ``` Configuration for MongoDB ```bash DB_HOST=<MONGO_DB_HOST:PORT> # Hostname of the MongoDB instance DB_USERNAME=<MONGO_DB_USERNAME> # Username for the MongoDB instance DB_PASSWORD=<MONGO_DB_PASSWORD> # Password for the MongoDB instance DB_NAME=<MONGO_DB_NAME> # Database name DB_ATLAS=false # Set to true if using MongoDB Atlas ``` Configuration for Redis ```bash REDIS_HOST=<REDIS_HOST> # Hostname of the Redis instance REDIS_PORT=<REDIS_PORT> # Port for the Redis instance REDIS_USERNAME=<REDIS_USERNAME> # Username for the Redis instance REDIS_PASSWORD= # Password for the Redis instance ``` ## Full Example ```bash # .env.docker # Database DB_HOST=mongo:27017 DB_USERNAME=algorand DB_PASSWORD=algorand DB_NAME=fido DB_ATLAS=false # Events REDIS_HOST=redis REDIS_PORT=6379 REDIS_USERNAME=default REDIS_PASSWORD= # FIDO2 RP_NAME="Auth Server" HOSTNAME=my-static-domain.ngrok-free.app ORIGIN=https://my-static-domain.ngrok-free.app ANDROID_SHA256HASH=47:CC:4E:EE:B9:50:59:A5:8B:E0:19:45:CA:0A:6D:59:16:F9:A9:C2:96:75:F8:F3:64:86:92:46:2B:7D:5D:5C ANDROID_PACKAGENAME=foundation.algorand.demo ``` ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/tealscript:guides_multiple_contracts.md: -------------------------------------------------------------------------------- ```markdown --- title: Multiple Contracts --- ## Inheritance You can inherit another Contract or LogicSig in order to inherit all of the class properties (state, events, scratch, etc.) and methods. ```ts export class BaseContract extends Contract { favoriteNumber = GlobalStateKey<uint64>() private setNumber(n: uint64): void { this.favoriteNumber.value = n } } export class AnotherContract extends BaseContract { checkNumber(): void { this.setNumber(42) assert(this.favoriteNumber.value === 42) } } ``` ## Importing and Inheritance TEALScript supports importing any `Contract`, `LogicSig`, const, or type from another TEALScript file. ```ts // base_contract.algo.ts export class BaseContract extends Contract { favoriteNumber = GlobalStateKey<uint64>() private setNumber(n: uint64): void { this.favoriteNumber.value = n } } ``` ```ts // another_contract.algo.ts import { BaseContract } from './base_contract.algo.ts' export class AnotherContract extends BaseContract { checkNumber(): void { this.setNumber(42) assert(this.favoriteNumber.value === 42) } } ``` ## App Programs and Schema To access the program or schema of another TEALScript app you can use the `.approvalProgram()`. `.clearProgram()`, or `.schema` static methods. ```ts class TheApp extends Contract { favoriteNumber = GlobalStateKey<uint64>(); createApplication(): void { this.favoriteNumber.value = 42; } } class TheFactory extends Contract { createTheApp(): void { sendMethodCall<[], void>({ name: 'createApplication', approvalProgram: TheApp.approvalProgram(), clearStateProgram: TheApp.clearProgram(), globalNumUint: TheApp.schema.global.numUint, }); } } ``` ## Logic Signature Address and Program ```ts class TheLsig extends LogicSig { logic(): void { assert(this.txn.fee === 0); } } class TheApp extends Contract { createApplication(): void { assert(TheLsig.address().balance >= 10_000_000); log(TheLsig.program()); } } ``` ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/developer:docs:clis:tealdbg:debug.md: -------------------------------------------------------------------------------- ```markdown title: tealdbg debug --- ## tealdbg debug Debug TEAL program(s) off-chain ### Synopsis Debug TEAL program(s) in controlled environment using a local TEAL evaluator ``` tealdbg debug [program.tok [program.teal ...]] [flags] ``` ### Options ``` -a, --app-id uint Application ID for stateful TEAL if not set in transaction(s) (default 1380011588) -b, --balance string Balance records to evaluate stateful TEAL on in form of json or msgpack file -d, --dryrun-req string Program(s) and state(s) in dryrun REST request format -g, --group-index int Transaction index in a txn group -h, --help help for debug --indexer-token string API token for indexer to fetch Balance records from to evaluate stateful TEAL -i, --indexer-url string URL for indexer to fetch Balance records from to evaluate stateful TEAL -l, --latest-timestamp int Latest confirmed timestamp to evaluate stateful TEAL on -q, --listen-dr-req Listen for upcoming debugging dryrun request objects instead of taking program(s) from command line -m, --mode string TEAL evaluation mode: auto, signature, application (default "auto") --painless Automatically create balance record for all accounts and applications -p, --proto string Consensus protocol version for TEAL evaluation -r, --round uint Ledger round number to evaluate stateful TEAL on -t, --txn string Transaction(s) to evaluate TEAL on in form of json or msgpack file ``` ### Options inherited from parent commands ``` -f, --frontend string Frontend to use: cdt, web (default "cdt") --listen string Network interface to listen on (default "127.0.0.1") --no-source-map Do not generate source maps --remote-debugging-port int Port to listen on (default 9392) -v, --verbose Verbose output ``` ### SEE ALSO * [tealdbg](../../tealdbg/tealdbg/) - Algorand TEAL Debugger ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/developer:docs:details:dapps:avm:teal:jsonspec.md: -------------------------------------------------------------------------------- ```markdown <!-- markdownlint-disable MD024 --> # JSON Spec A valid JSON text must follow the grammar defined in [RFC7159](https://www.rfc-editor.org/rfc/rfc7159.html) Additional specifications used by **json_ref** that are extensions to the RFC7159 grammar are listed below. ## File Encoding - Only utf-8 encoded are accepted - The byte order mark (BOM), "\uFEFF", is not allowed at the beginning of a JSON text - Raw non-unicode characters not accepted ### Invalid JSON text ```json \uFEFF{"key0": 1} ``` ```json {"key0": "\uFF"} ``` ### Object #### duplicate key Duplicate keys at the top level result in an error; however, duplicate keys nested at a lower level are ignored. #### Invalid JSON text ```json {"key0": 1,"key0": 2} ``` #### Acceptable JSON text ```json {"key0": 1,"key1": {"key2":2,"key2":"10"}} ``` ### Numbers #### Range - Only integers between 0 and 2^64-1 are accepted - All other values result in an error #### Special Values - `null`, `true`, `false` are the only accepted special values. - other special values such as `NaN`,`+Inf`,`-Inf` are not accepted #### Exponential Notation Exponential notation is not accepted #### Invalid JSON text ```json {"key": 1.2E-6} ``` ```json {"key": 0.2E+8} ``` ##### Hex values Hex values are not accepted #### Invalid JSON text ```json {"key0": 0x1} ``` ```json {"key0": 0xFF} ``` ### Trailing Commas Trailing commas are not accepted. #### Invalid JSON text ```json {"key": 4160,,,} ``` ```json {"key": "algo",,,} ``` ### Comment Comment blocks are not accepted. #### Invalid JSON text ```json {"key0": /*comment*/"algo"} ``` ```json {"key0": [1,/*comment*/,3]} ``` ### White Spaces - space, tab(`\t`), new line(`\n`) and carriage return(`\r`) are allowed - form feed(`\f`) is not allowed ### Escaped Characters - control chars (U+0000 - U+001F) must be escaped - surrogate pairs are accepted - escaped invalid characters are replaced by replacement character (U+FFFD) #### Example a valid surrogate pair ```json {"key0": "\uD801\udc37"} ``` replaced by U+FFFD ```json {"key0": "\uD800\uD800n"} ``` ``` -------------------------------------------------------------------------------- /packages/server/src/tools/apiManager/vestige/networks.ts: -------------------------------------------------------------------------------- ```typescript import { Tool, ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js'; import { ResponseProcessor } from '../../../utils/responseProcessor.js'; import { env } from '../../../env.js'; export const networkTools: Tool[] = [ { name: 'api_vestige_view_networks', description: 'Get all networks', inputSchema: { type: 'object', properties: {} } }, { name: 'api_vestige_view_network_by_id', description: 'Get network by id', inputSchema: { type: 'object', properties: { network_id: { type: 'integer', description: 'Network ID' } }, required: ['network_id'] } } ]; export const handleNetworkTools = ResponseProcessor.wrapResourceHandler(async function handleNetworkTools(args: any): Promise<any> { const name = args.name; const baseUrl = env.vestige_api_url; let endpoint = ''; switch (name) { case 'api_vestige_view_networks': endpoint = '/networks'; break; case 'api_vestige_view_network_by_id': endpoint = `/networks/${args.network_id}`; break; default: throw new McpError( ErrorCode.MethodNotFound, `Unknown tool: ${name}` ); } try { // Add query parameters if they exist const queryParams = new URLSearchParams(); for (const [key, value] of Object.entries(args)) { if (value !== undefined && key !== 'network_id') { queryParams.append(key, String(value)); } } const url = `${baseUrl}${endpoint}${queryParams.toString() ? `?${queryParams.toString()}` : ''}`; const response = await fetch(url); if (!response.ok) { throw new McpError( ErrorCode.InternalError, `Vestige API error: ${response.status} ${response.statusText}` ); } const data = await response.json(); return data; } catch (error) { if (error instanceof McpError) { throw error; } throw new McpError( ErrorCode.InternalError, `Failed to fetch network data: ${error instanceof Error ? error.message : String(error)}` ); } }); ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:cli:features:tasks:ipfs.md: -------------------------------------------------------------------------------- ```markdown # AlgoKit Task IPFS The AlgoKit IPFS feature allows you to interact with the IPFS [InterPlanetary File System](https://ipfs.tech/) using the [Piñata provider](https://www.pinata.cloud/). This feature supports logging in and out of the Piñata provider, and uploading files to IPFS. ## Usage Available commands and possible usage as follows: ```bash $ ~ algokit task ipfs Usage: algokit task ipfs [OPTIONS] Upload files to IPFS using Pinata provider. Options: -f, --file PATH Path to the file to upload. [required] -n, --name TEXT Human readable name for this upload, for use in file listings. -h, --help Show this message and exit. ``` ## Options - `--file, -f PATH`: Specifies the path to the file to upload. This option is required. - `--name, -n TEXT`: Specifies a human readable name for this upload, for use in file listings. ## Prerequisites Before you can use this feature, you need to ensure that you have signed up for a Piñata account and have a JWT. You can sign up for a Piñata account by reading [quickstart](https://docs.pinata.cloud/docs/getting-started). ## Login Please note, you need to login to the Piñata provider before you can upload files. You can do this using the `login` command: ```bash $ algokit task ipfs login ``` This will prompt you to enter your Piñata JWT. Once you are logged in, you can upload files to IPFS. ## Upload To upload a file to IPFS, you can use the `ipfs` command as follows: ```bash $ algokit task ipfs --file {PATH_TO_YOUR_FILE} ``` This will upload the file to IPFS using the Piñata provider and return the CID (Content Identifier) of the uploaded file. ## Logout If you want to logout from the Piñata provider, you can use the `logout` command: ```bash $ algokit task ipfs logout ``` This will remove your Piñata JWT from the keyring. ## File Size Limit Please note, the maximum file size that can be uploaded is 100MB. If you try to upload a file larger than this, you will receive an error. ## Further Reading For in-depth details, visit the [ipfs section](../../cli/index.md#ipfs) in the AlgoKit CLI reference documentation. ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/developers-python.txt: -------------------------------------------------------------------------------- ``` developer:python:code:example:arc4_types.md developer:python:code:example:box_storage.md developer:python:code:example:control_flow.md developer:python:code:example:global_storage.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: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:defi:amm.md developer:python:code:example:defi:auction.md developer:python:code:example:defi:marketplace.md developer:python:code:example:defi:htlc_logicsig.md developer:python:code:example:events:arc28_events.md developer:python:code:example:utility:calculator.md developer:python:code:example:crypto:merkle_tree.md developer:python:code:example:nft:proof_of_attendance.md developer:python:code:example:governance:simple_voting.md developer:python:code:example:privacy:zk_whitelist.md developer:python:code:example:accounts.md developer:python:code:example:assets.md developer:python:code:example:transactions.md puya:python:testing:docs:examples.md puya:python:testing:docs:api.md puya:python:testing:docs:algopy.md puya:python:testing:docs:faq.md puya:python:testing:docs:index.md puya:python:testing:docs:coverage.md puya:python:testing:docs:testing-guide:concepts.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:opcodes.md puya:python:testing:docs:testing-guide:index.md puya:python:testing:docs:testing-guide:contract-testing.md puya:python:testing:docs:testing-guide:avm-types.md puya:python:testing:docs:testing-guide:transactions.md puya:python:testing:docs:testing-guide:arc4-types.md puya:python:testing:docs:testing-guide:subroutines.md puya:python:testing:README.md puya:python:testing:examples:README.md puya:src:puyapy:_vendor:mypy:typeshed:stdlib:_typeshed:README.md puya:src:puyapy:awst_build:README.md puya:src:puyapy:_typeshed:README.md ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:code:interfaces:types_transaction.TransactionGroupToSend.md: -------------------------------------------------------------------------------- ```markdown [@algorandfoundation/algokit-utils](../README.md) / [types/transaction](../modules/types_transaction.md) / TransactionGroupToSend # Interface: TransactionGroupToSend [types/transaction](../modules/types_transaction.md).TransactionGroupToSend A group of transactions to send together as an atomic group https://developer.algorand.org/docs/get-details/atomic_transfers/ ## Table of contents ### Properties - [sendParams](types_transaction.TransactionGroupToSend.md#sendparams) - [signer](types_transaction.TransactionGroupToSend.md#signer) - [transactions](types_transaction.TransactionGroupToSend.md#transactions) ## Properties ### sendParams • `Optional` **sendParams**: `Omit`\<[`SendTransactionParams`](types_transaction.SendTransactionParams.md), ``"fee"`` \| ``"maxFee"`` \| ``"skipSending"`` \| ``"atc"``\> Any parameters to control the semantics of the send to the network #### Defined in [src/types/transaction.ts:123](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L123) ___ ### signer • `Optional` **signer**: [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom) Optional signer to pass in, required if at least one transaction provided is just the transaction, ignored otherwise #### Defined in [src/types/transaction.ts:130](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L130) ___ ### transactions • **transactions**: (`Transaction` \| [`TransactionToSign`](types_transaction.TransactionToSign.md) \| `Promise`\<[`SendTransactionResult`](types_transaction.SendTransactionResult.md)\>)[] The list of transactions to send, which can either be a raw transaction (in which case `signer` is required), the async result of an AlgoKit utils method that returns a `SendTransactionResult` (saves unwrapping the promise, be sure to pass `skipSending: true`, `signer` is also required) or the transaction with its signer (`signer` is ignored) #### Defined in [src/types/transaction.ts:128](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L128) ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:cli:features:project:list.md: -------------------------------------------------------------------------------- ```markdown # AlgoKit Project List Command The `algokit project list` command is designed to enumerate all projects within an AlgoKit workspace. This command is particularly useful in workspace environments where multiple projects are managed under a single root directory. It provides a straightforward way to view all the projects that are part of the workspace. ## Usage To use the `list` command, execute the following **anywhere** within an AlgoKit workspace: ```sh $ algokit project list [OPTIONS] [WORKSPACE_PATH] ``` - `WORKSPACE_PATH` is an optional argument that specifies the path to the workspace. If not provided, the current directory (`.`) is used as the default workspace path. ## How It Works 1. **Workspace Verification**: Initially, the command checks if the specified directory (or the current directory by default) is an AlgoKit workspace. This is determined by looking for a `.algokit.toml` configuration file and verifying if the `project.type` is set to `workspace`. 2. **Project Enumeration**: If the directory is confirmed as a workspace, the command proceeds to enumerate all projects within the workspace. This is achieved by scanning the workspace's subdirectories for `.algokit.toml` files and extracting project names. 3. **Output**: The names of all discovered projects are printed to the console. If the `-v` or `--verbose` option is used, additional details about each project are displayed. ## Example Output ```sh workspace: {path_to_workspace} 📁 - myapp ({path_to_myapp}) 📜 - myproject-app ({path_to_myproject_app}) 🖥️ ``` ## Error Handling If the command is executed in a directory that is not recognized as an AlgoKit workspace, it will issue a warning: ```sh WARNING: No AlgoKit workspace found. Check [project.type] definition at .algokit.toml ``` This message indicates that either the current directory does not contain a `.algokit.toml` file or the `project.type` within the file is not set to `workspace`. ## Further Reading To learn more about the `algokit project list` command, please refer to [list](../../cli/index.md#list) in the AlgoKit CLI reference documentation. ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/tealscript:guides_methods.md: -------------------------------------------------------------------------------- ```markdown --- title: Defining Methods --- ## Typing All method arguments MUST have a type and all methods MUST have an explicit return type. ### Examples #### Valid ```ts add(a: uint64, b: uint64): uint64 { return a + b } ``` #### Invalid ```ts add(a: uint64, b: uint64) { // missing return type return a + b } ``` ```ts add(a, b: uint64): uint64 { // missing argument type return a + b } ``` ## ABI Methods All methods defined in your contract will be routed as ABI methods, unless they have the `private` keyword. This means they will be exposed in the ABI and Application Spec generated by TEALScript. ## Private Subroutines A method defined with the `private` keyword will only be accessible within the contract itself via a subroutine. This means other contracts or end-users cannot call this method directly and it will not be exposed in the ABI or Application Spec. ### Example In this example, there is a single public ABI method `doMath` which will then call the `add` or `subtract` subroutines depending on the method given. `doMath` is the only method that is externally callable. ```ts class Calculator extends Contract { /** * Calculates the sum of two numbers * * @param a * @param b * @returns The sum of a and b */ private getSum(a: uint64, b: uint64): uint64 { return a + b; } /** * Calculates the difference between two numbers * * @param a * @param b * @returns The difference between a and b. */ private getDifference(a: uint64, b: uint64): uint64 { return a >= b ? a - b : b - a; } /** * A method that takes two numbers and does either addition or subtraction * * @param a The first number * @param b The second number * @param operation The operation to perform. Can be either 'sum' or 'difference' * * @returns The result of the operation */ doMath(a: uint64, b: uint64, operation: string): uint64 { let result: uint64; if (operation === 'sum') { result = this.getSum(a, b); } else if (operation === 'difference') { result = this.getDifference(a, b); } else throw Error('Invalid operation'); return result; } } ``` ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:ABIType.md: -------------------------------------------------------------------------------- ```markdown [algosdk](../README.md) / [Exports](../modules.md) / ABIType # Class: ABIType ## Hierarchy - **`ABIType`** ↳ [`ABIUintType`](ABIUintType.md) ↳ [`ABIUfixedType`](ABIUfixedType.md) ↳ [`ABIAddressType`](ABIAddressType.md) ↳ [`ABIBoolType`](ABIBoolType.md) ↳ [`ABIByteType`](ABIByteType.md) ↳ [`ABIStringType`](ABIStringType.md) ↳ [`ABIArrayStaticType`](ABIArrayStaticType.md) ↳ [`ABIArrayDynamicType`](ABIArrayDynamicType.md) ↳ [`ABITupleType`](ABITupleType.md) ## Table of contents ### Constructors - [constructor](ABIType.md#constructor) ### Methods - [byteLen](ABIType.md#bytelen) - [decode](ABIType.md#decode) - [encode](ABIType.md#encode) - [equals](ABIType.md#equals) - [isDynamic](ABIType.md#isdynamic) - [toString](ABIType.md#tostring) - [from](ABIType.md#from) ## Constructors ### constructor • **new ABIType**() ## Methods ### byteLen ▸ `Abstract` **byteLen**(): `number` #### Returns `number` #### Defined in abi/abi_type.ts:51 ___ ### decode ▸ `Abstract` **decode**(`byteString`): [`ABIValue`](../modules.md#abivalue) #### Parameters | Name | Type | | :------ | :------ | | `byteString` | `Uint8Array` | #### Returns [`ABIValue`](../modules.md#abivalue) #### Defined in abi/abi_type.ts:55 ___ ### encode ▸ `Abstract` **encode**(`value`): `Uint8Array` #### Parameters | Name | Type | | :------ | :------ | | `value` | [`ABIValue`](../modules.md#abivalue) | #### Returns `Uint8Array` #### Defined in abi/abi_type.ts:53 ___ ### equals ▸ `Abstract` **equals**(`other`): `boolean` #### Parameters | Name | Type | | :------ | :------ | | `other` | [`ABIType`](ABIType.md) | #### Returns `boolean` #### Defined in abi/abi_type.ts:47 ___ ### isDynamic ▸ `Abstract` **isDynamic**(): `boolean` #### Returns `boolean` #### Defined in abi/abi_type.ts:49 ___ ### toString ▸ `Abstract` **toString**(): `string` #### Returns `string` #### Defined in abi/abi_type.ts:45 ___ ### from ▸ `Static` **from**(`str`): [`ABIType`](ABIType.md) #### Parameters | Name | Type | | :------ | :------ | | `str` | `string` | #### Returns [`ABIType`](ABIType.md) #### Defined in abi/abi_type.ts:57 ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:code:interfaces:types_app_client.AppClientCompilationResult.md: -------------------------------------------------------------------------------- ```markdown [@algorandfoundation/algokit-utils](../README.md) / [types/app-client](../modules/types_app_client.md) / AppClientCompilationResult # Interface: AppClientCompilationResult [types/app-client](../modules/types_app_client.md).AppClientCompilationResult The result of asking an `AppClient` to compile a program. Always contains the compiled bytecode, and may contain the result of compiling TEAL (including sourcemap) if it was available. ## Hierarchy - `Partial`\<[`AppCompilationResult`](types_app.AppCompilationResult.md)\> ↳ **`AppClientCompilationResult`** ## Table of contents ### Properties - [approvalProgram](types_app_client.AppClientCompilationResult.md#approvalprogram) - [clearStateProgram](types_app_client.AppClientCompilationResult.md#clearstateprogram) - [compiledApproval](types_app_client.AppClientCompilationResult.md#compiledapproval) - [compiledClear](types_app_client.AppClientCompilationResult.md#compiledclear) ## Properties ### approvalProgram • **approvalProgram**: `Uint8Array` The compiled bytecode of the approval program, ready to deploy to algod #### Defined in [src/types/app-client.ts:282](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L282) ___ ### clearStateProgram • **clearStateProgram**: `Uint8Array` The compiled bytecode of the clear state program, ready to deploy to algod #### Defined in [src/types/app-client.ts:284](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L284) ___ ### compiledApproval • `Optional` **compiledApproval**: [`CompiledTeal`](types_app.CompiledTeal.md) The result of compiling the approval program #### Inherited from Partial.compiledApproval #### Defined in [src/types/app.ts:335](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L335) ___ ### compiledClear • `Optional` **compiledClear**: [`CompiledTeal`](types_app.CompiledTeal.md) The result of compiling the clear state program #### Inherited from Partial.compiledClear #### Defined in [src/types/app.ts:337](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L337) ``` -------------------------------------------------------------------------------- /packages/server/src/env.ts: -------------------------------------------------------------------------------- ```typescript interface EnvConfig { // Algorand Configuration algorand_network: string; algorand_algod_api: string; algorand_algod: string; algorand_indexer_api: string; algorand_indexer: string; algorand_algod_port: string; algorand_indexer_port: string; algorand_token: string; algorand_agent_wallet: string; // NFDomains Configuration nfd_api_url: string; nfd_api_key: string; // Tinyman Configuration tinyman_active: string; // Vestige Configuration vestige_active: string; vestige_api_url: string; vestige_api_key: string; // Ultrade Configuration ultrade_active: string; ultrade_api_url: string; // Pagination Configuration items_per_page: number; } export const env: EnvConfig = { // Algorand Configuration algorand_network: process.env.ALGORAND_NETWORK || 'testnet', algorand_algod_api: process.env.ALGORAND_ALGOD_API || 'https://testnet-api.algonode.cloud/v2', algorand_algod: process.env.ALGORAND_ALGOD || 'https://testnet-api.algonode.cloud', algorand_indexer_api: process.env.ALGORAND_INDEXER_API || 'https://testnet-idx.algonode.cloud/v2', algorand_indexer: process.env.ALGORAND_INDEXER || 'https://testnet-idx.algonode.cloud', algorand_algod_port: process.env.ALGORAND_ALGOD_PORT || '', algorand_indexer_port: process.env.ALGORAND_INDEXER_PORT || '', algorand_token: process.env.ALGORAND_TOKEN || '', algorand_agent_wallet: process.env.ALGORAND_AGENT_WALLET || process.env.ALGORAND_AGENT_WALLET_ACTIVE || '', // NFDomains Configuration nfd_api_url: process.env.NFD_API_URL || 'https://api.nf.domains', nfd_api_key: process.env.NFD_API_KEY || '', tinyman_active: process.env.TINYMAN_ACTIVE || 'false', // Vestige Configuration vestige_active: process.env.VESTIGE_ACTIVE || 'false', vestige_api_url: process.env.VESTIGE_API_URL || 'https://api.vestigelabs.org', vestige_api_key: process.env.VESTIGE_API_KEY || '', // Ultrade Configuration ultrade_active: process.env.ULTRADE_ACTIVE || 'false', ultrade_api_url: process.env.ULTRADE_API_URL || 'https://api.testnet.ultrade.org', // Pagination Configuration items_per_page: parseInt(process.env.ITEMS_PER_PAGE || '5', 10) }; ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/developer:docs:run-a-node:reference:relay.md: -------------------------------------------------------------------------------- ```markdown title: Configure node as a relay A benefit of Algorand's decentralized network implementation is that a relay is effectively the same as any other node. The distinction currently is made by configuring a node to actively listen for connections from other nodes and having itself advertised using SRV records available through DNS. It is possible to set up a relay for a personal network that does not require DNS entries. This is done using the following steps. # Install Node See this page for [node hardware requirements](../../setup/install/#hardware-requirements). Follow the [install instructions](../../run-a-node/setup/install.md) for the specific operating system that the relay will run on. # Edit the Configuration File Edit the configuration file for the node as described in the [configuration](../config) guide. Set the property `NetAddress` to `":4161"` for TestNet and to `":4160"` for MainNet. Then the file. Make sure the file is named `config.json`. Concretely, your `config.json` file should look like: ```json { "NetAddress": ":4161" } ``` for TestNet. !!! warning As a precaution, it is not recommended that relay nodes interact with accounts or participate in consensus. # Start the Node Start the node as described in the [install](../../run-a-node/setup/install.md) guide. The node will now listen for incoming traffic on port 4161 (for TestNet) or on port 4160 (for MainNet). Other nodes can now connect to this relay. # Connect a Node to Relay Any node can connect to this relay by specifying it in the `goal node start` command. ``` goal node start -p "ipaddress:4161" ``` The node can also be set up to connect to multiple relays using a `;` separated list of relays. ``` goal node start -p "ipaddress-1:4161;ipaddress-2:4161" ``` (4161 needs to be replaced by 4160 for MainNet.) !!! warning Using the above process will prevent the node from connecting to any of the Algorand networks. See the [Phonebook](../artifacts#phonebookjson) documentation for more information on how nodes connect to relays. See the [Algorand Foundation FAQ](https://www.algorand.foundation/general-faq#04-faq) for additional details about MainNet relays. ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/liquid-auth:decisions:3-Peer-to-Peer-Signaling.md: -------------------------------------------------------------------------------- ```markdown # Overview Communicating across platforms in a decentralized manner ## Decisions - Limit dependency on WebSockets to signaling - Allow bidirectional communication between peers - Enforce locality of device? ## Implementation A WebSocket Service should establish the SDP handshake and emit ICE candidates for WebRTC clients. This implementation should replace Wallet Connect with the following sequence ```mermaid sequenceDiagram participant Website participant Server participant Wallet Note over Website, Wallet: Link devices Website->>Server: GET Challenge Message Server->>Website: Send Challenge Message Website-->>Website: Display QR Connect Nonce Website->>Server: Subscribe to 'wss:link' Wallet->>Website: Scan QR Code Wallet->>Server: POST Nonce + Signature + Answer Server-->>Server: Validate Signature Server-->>Website: HTTPOnly Session Server->>Wallet: Ok Response + HTTPOnly Session Server->>Website: Emit to `wss:link` client Note over Website, Wallet: Passkeys/FIDO2 Website-->>Website: Continue FIDO2 Flow Wallet-->>Wallet: Continue FIDO2 Flow Note over Website, Wallet: Signaling Peer Offer/Answer Website-->>Server: Subscribe to 'wss:answer-${address}' Wallet-->>Server: Subscribe to 'wss:offer-${address}' Website-->>Website: Create Peer Offer & DataChannel Website-->>Server: POST Offer Server-->>Wallet: Emit Offer Wallet-->>Wallet: Create Peer Answer with Offer & DataChannel Wallet-->>Server: POST Answer Server-->>Website: Emit Answer Website-->>Website: Set Remote SDP Website-->>Website: Discover ICE Candidates Website->>Server: Emit candidates to `wss:offer-${address}` Server->>Wallet: Emit candidates to `wss:offer-${address}` Wallet-->>Wallet: Set Candidates Wallet-->>Wallet: Discover ICE Candidates Wallet->>Server: Emit candidates to `wss:answer-${address}` Server->>Website: Emit to `wss:answer` Website->>Website: Set Candidates ``` *Note: This process may be deprecated in the future in favor of `libp2p` which allows for an agnostic discovery layer and also supports the WebRTC transport ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:cli:features:tasks:transfer.md: -------------------------------------------------------------------------------- ```markdown # AlgoKit Task Transfer The AlgoKit Transfer feature allows you to transfer algos and assets between two accounts. ## Usage Available commands and possible usage as follows: ```bash $ ~ algokit task transfer Usage: algokit task transfer [OPTIONS] Transfer algos or assets from one account to another. Options: -s, --sender TEXT Address or alias of the sender account [required] -r, --receiver TEXT Address or alias to an account that will receive the asset(s) [required] --asset, --id INTEGER ASA asset id to transfer -a, --amount INTEGER Amount to transfer [required] --whole-units Use whole units (Algos | ASAs) instead of smallest divisible units (for example, microAlgos). Disabled by default. -n, --network [localnet|testnet|mainnet] Network to use. Refers to `localnet` by default. -h, --help Show this message and exit. ``` > Note: If you use a wallet address for the `sender` argument, you'll be asked for the mnemonic phrase. To use a wallet alias instead, see the [wallet aliasing](wallet.md) task. For wallet aliases, the sender must have a stored `private key`, but the receiver doesn't need one. This is because the sender signs and sends the transfer transaction, while the receiver reference only needs a valid Algorand address. ## Examples ### Transfer algo between accounts on LocalNet ```bash $ ~ algokit task transfer -s {SENDER_ALIAS OR SENDER_ADDRESS} -r {RECEIVER_ALIAS OR RECEIVER_ADDRESS} -a {AMOUNT} ``` By default: - the `amount` is in microAlgos. To use whole units, use the `--whole-units` flag. - the `network` is `localnet`. ### Transfer asset between accounts on TestNet ```bash $ ~ algokit task transfer -s {SENDER_ALIAS OR SENDER_ADDRESS} -r {RECEIVER_ALIAS OR RECEIVER_ADDRESS} -a {AMOUNT} --id {ASSET_ID} --network testnet ``` By default: - the `amount` is smallest divisible unit of supplied `ASSET_ID`. To use whole units, use the `--whole-units` flag. ## Further Reading For in-depth details, visit the [transfer section](../../cli/index.md#transfer) in the AlgoKit CLI reference documentation. ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/tealscript:guides_math.md: -------------------------------------------------------------------------------- ```markdown --- title: Math --- ## Truncation It is important to note TEALScript only works with unsigned integers. This means that there are no fractional values or negative numbers. The AVM, and thus TEALScript, will always truncate the result of division operations. For example, `99 / 100 === 0` will be true. ## Opcode Cost Performing math operations with a integer width more than 64 bits can be up to **20x more expensive** (see table below). As such, if you find yourself running out of opcode budget, it is best to manually cast to `uint64` and then cast back when possible. ### Opcode Costs | Bit Width | Operations | Cost | | --------- | ---------- | ---- | | `<= 64` | `+` or `-` | 1 | | `<= 64` | `*` or `/` | 1 | | `> 64` | `+` or `-` | 10 | | `> 64` | `*` or `/` | 20 | ## Overflows ### Runtime During runtime, TEALscript will not perform overflow checks. This means you will only encouter an overflow panic when performing math operations and the following max values are exceeded | Bit Width | Max Value | | --------- | --------- | | `<= 64` | `2^64 - 1` | | `> 64` | `2^512 - 1` | ### Encoding Prior to encoding a number, TEALScript will ensure that the value does not exceed the respective max value. For example, it will check a `uint8` is not more than `2^8 - 1` prior to encoding it. ### Underflows Any operation that results in a value less than 0 will cause a panic in the AVM. ## Wide Ratio A common operation in contracts is to perform division to get the ratio between two numbers (ie. in a liquidty pool). If the numerator and/or divisor includes multiplication of `uint64` values, they might be larger than `uint64` (thus cause an overflow panic) even if the final result of the division would fit in a `uint64`. To handle such cases, TEALScript implements a global function called `wideRatio`. ### Example ```ts private tokensToSwap(inAmount: uint64, inSupply: uint64, outSupply: uint64): uint64 { const factor = SCALE - FEE; return wideRatio([inAmount, factor, outSupply], [inSupply * SCALE + inAmount * factor]); } ``` A full AMM example can be found [here](https://github.com/algorandfoundation/TEALScript/blob/dev/examples/amm/amm.algo.ts). ``` -------------------------------------------------------------------------------- /packages/server/src/algorand-client.ts: -------------------------------------------------------------------------------- ```typescript import algosdk from 'algosdk'; import { env } from './env.js'; // Helper function to build resource URIs using API URLs const buildAlgodUri = (path: string) => { return `${env.algorand_algod_api}${path}`; }; const buildIndexerUri = (path: string) => { return `${env.algorand_indexer_api}${path}`; }; // Resource URI templates using API URLs export const API_URIS = { // Algod resources ACCOUNT_DETAILS: buildAlgodUri('/accounts/{address}'), ASSET_HOLDINGS: buildAlgodUri('/accounts/{address}/assets'), APPLICATION_STATE: buildAlgodUri('/applications/{app-id}/state'), ASSET_INFO: buildAlgodUri('/assets/{asset-id}/info'), APPLICATION_INFO: buildAlgodUri('/applications/{app-id}'), APPLICATION_BOX: buildAlgodUri('/applications/{app-id}/box/{name}'), APPLICATION_BOXES: buildAlgodUri('/applications/{app-id}/boxes'), PENDING_TRANSACTION: buildAlgodUri('/transactions/pending/{txid}'), PENDING_TRANSACTIONS_BY_ADDRESS: buildAlgodUri('/accounts/{address}/transactions/pending'), PENDING_TRANSACTIONS: buildAlgodUri('/transactions/pending'), TRANSACTION_PARAMS: buildAlgodUri('/transactions/params'), NODE_STATUS: buildAlgodUri('/status'), NODE_STATUS_AFTER_BLOCK: buildAlgodUri('/status/wait-for-block-after/{round}'), // Indexer resources TRANSACTION_HISTORY: buildIndexerUri('/accounts/{address}/transactions'), ASSET_DETAILS: buildIndexerUri('/assets/{asset-id}'), ASSET_BALANCES: buildIndexerUri('/assets/{asset-id}/balances'), ASSET_TRANSACTIONS: buildIndexerUri('/assets/{asset-id}/transactions'), ASSET_BALANCES_BY_ID: buildIndexerUri('/assets/{asset-id}/balances/{address}'), ASSET_TRANSACTIONS_BY_ID: buildIndexerUri('/assets/{asset-id}/transactions/{txid}'), TRANSACTION_DETAILS: buildIndexerUri('/transactions/{txid}'), TRANSACTION_SEARCH: buildIndexerUri('/transactions') }; // Initialize the Algod client with base URL export const algodClient = new algosdk.Algodv2( env.algorand_token || '', env.algorand_algod, env.algorand_algod_port || '' ); // Initialize the Indexer client with base URL export const indexerClient = new algosdk.Indexer( env.algorand_token || '', env.algorand_indexer, env.algorand_indexer_port || '' ); export { indexerClient as indexer }; ```