This is page 15 of 74. Use http://codebase.md/goplausible/algorand-mcp?page={x} to view the full context. # Directory Structure ``` ├── .gitignore ├── CONTRIBUTING.md ├── LICENSE ├── llms-install.md ├── llms.txt ├── package.json ├── packages │ ├── client │ │ ├── .env.example │ │ ├── package.json │ │ ├── README.md │ │ ├── src │ │ │ ├── env.ts │ │ │ ├── index.ts │ │ │ └── LocalWallet.ts │ │ └── tsconfig.json │ └── server │ ├── .env.example │ ├── API specs │ │ ├── algod_api.json │ │ ├── indexer_api.json │ │ ├── mcp.json │ │ ├── nfd_api.json │ │ ├── ultrade_api.json │ │ ├── vestige_api.json │ │ └── vestige_free_api.json │ ├── Dockerfile │ ├── jest.config.js │ ├── package.json │ ├── README.md │ ├── smithery.yaml │ ├── src │ │ ├── algorand-client.ts │ │ ├── env.ts │ │ ├── index.ts │ │ ├── resources │ │ │ ├── index.ts │ │ │ ├── knowledge │ │ │ │ ├── ARCs.txt │ │ │ │ ├── developers-algokit-architecture-decisions.txt │ │ │ │ ├── developers-algokit-cli.txt │ │ │ │ ├── developers-algokit-utils-python.txt │ │ │ │ ├── developers-algokit-utils-typescript.txt │ │ │ │ ├── developers-clis.txt │ │ │ │ ├── developers-details.txt │ │ │ │ ├── developers-liquid-auth.txt │ │ │ │ ├── developers-nodes.txt │ │ │ │ ├── developers-puya.txt │ │ │ │ ├── developers-python.txt │ │ │ │ ├── developers-sdks-js.txt │ │ │ │ ├── developers-sdks-python.txt │ │ │ │ ├── developers-tealscript.txt │ │ │ │ ├── developers.txt │ │ │ │ ├── index.ts │ │ │ │ ├── taxonomy │ │ │ │ │ ├── algokit-cli:README.md │ │ │ │ │ ├── algokit:cli:algokit.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2022-11-14_sandbox-approach.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2022-11-22_beaker-testing-strategy.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2023-01-11_beaker_productionisation_review.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2023-01-11_brew_install.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2023-01-12_smart-contract-deployment.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2023-06-06_frontend-templates.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2023-07-19_advanced_generate_command.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2024-01-13_native_binaries.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2024-01-23_init-wizard-v2.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2024-01-31_binary_distribution.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2024-03-06_local_dev_ui_packaging.md │ │ │ │ │ ├── algokit:cli:articles:output_stability.md │ │ │ │ │ ├── algokit:cli:cli:index.md │ │ │ │ │ ├── algokit:cli:features:compile.md │ │ │ │ │ ├── algokit:cli:features:completions.md │ │ │ │ │ ├── algokit:cli:features:config.md │ │ │ │ │ ├── algokit:cli:features:dispenser.md │ │ │ │ │ ├── algokit:cli:features:doctor.md │ │ │ │ │ ├── algokit:cli:features:explore.md │ │ │ │ │ ├── algokit:cli:features:generate.md │ │ │ │ │ ├── algokit:cli:features:goal.md │ │ │ │ │ ├── algokit:cli:features:init.md │ │ │ │ │ ├── algokit:cli:features:localnet.md │ │ │ │ │ ├── algokit:cli:features:project:bootstrap.md │ │ │ │ │ ├── algokit:cli:features:project:deploy.md │ │ │ │ │ ├── algokit:cli:features:project:link.md │ │ │ │ │ ├── algokit:cli:features:project:list.md │ │ │ │ │ ├── algokit:cli:features:project:run.md │ │ │ │ │ ├── algokit:cli:features:project.md │ │ │ │ │ ├── algokit:cli:features:tasks:analyze.md │ │ │ │ │ ├── algokit:cli:features:tasks:ipfs.md │ │ │ │ │ ├── algokit:cli:features:tasks:mint.md │ │ │ │ │ ├── algokit:cli:features:tasks:nfd.md │ │ │ │ │ ├── algokit:cli:features:tasks:opt.md │ │ │ │ │ ├── algokit:cli:features:tasks:send.md │ │ │ │ │ ├── algokit:cli:features:tasks:sign.md │ │ │ │ │ ├── algokit:cli:features:tasks:transfer.md │ │ │ │ │ ├── algokit:cli:features:tasks:vanity_address.md │ │ │ │ │ ├── algokit:cli:features:tasks:wallet.md │ │ │ │ │ ├── algokit:cli:features:tasks.md │ │ │ │ │ ├── algokit:cli:tutorials:algokit-template.md │ │ │ │ │ ├── algokit:cli:tutorials:intro.md │ │ │ │ │ ├── algokit:cli:tutorials:smart-contracts.md │ │ │ │ │ ├── algokit:docs:testnet_api.md │ │ │ │ │ ├── algokit:lora:README.md │ │ │ │ │ ├── algokit:README.md │ │ │ │ │ ├── algokit:utils:python:markdown:apidocs:algokit_utils:algokit_utils.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:account.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:app-client.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:app-deploy.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:client.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:debugger.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:dispenser-client.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:transfer.md │ │ │ │ │ ├── algokit:utils:python:markdown:index.md │ │ │ │ │ ├── algokit:utils:python:README.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:account.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:app-client.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:app-deploy.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:client.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:debugger.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:dispenser-client.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:transfer.md │ │ │ │ │ ├── algokit:utils:python:source:index.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:account.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:algorand-client.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:amount.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:app-client.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:app-deploy.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:app.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:asset.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:client.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:debugging.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:dispenser-client.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:event-emitter.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:indexer.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:testing.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:transaction-composer.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:transaction.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:transfer.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:typed-app-clients.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:testing.TestLogger.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:testing.TransactionLogger.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_account_manager.AccountManager.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_account.MultisigAccount.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_account.SigningAccount.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_algorand_client_transaction_creator.AlgorandClientTransactionCreator.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_algorand_client_transaction_sender.AlgorandClientTransactionSender.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_algorand_client.AlgorandClient.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_amount.AlgoAmount.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_arc56.Arc56Method.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_client.AppClient.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_client.ApplicationClient.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_deployer.AppDeployer.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_factory.AppFactory.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_manager.AppManager.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_asset_manager.AssetManager.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_async_event_emitter.AsyncEventEmitter.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_client_manager.ClientManager.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_composer.TransactionComposer.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_config.UpdatableConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_dispenser_client.TestNetDispenserApiClient.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_kmd_account_manager.KmdAccountManager.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_logic_error.LogicError.md │ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_app.OnSchemaBreak.md │ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_app.OnUpdate.md │ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_indexer.AccountStatus.md │ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_indexer.ApplicationOnComplete.md │ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_indexer.SignatureType.md │ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_lifecycle_events.EventType.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_account_manager.EnsureFundedResult.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_account.AccountConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_account.TransactionSignerAccount.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_algorand_client_interface.AlgorandClientInterface.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.Arc56Contract.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.Event.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.Method.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.ProgramSourceInfo.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.StorageKey.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.StorageMap.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.StructField.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCallABIArgs.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCallCoreParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCompilationParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCompilationResult.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientDeployCallInterfaceParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientDeployCoreParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientDeployParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppSourceMaps.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.FundAppAccountParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.ResolveAppById.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.ResolveAppByIdBase.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.SourceMapExport.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_deployer.AppLookup.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_deployer.AppMetadata.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_factory.AppFactoryParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_manager.AppInformation.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_manager.BoxReference.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_manager.BoxValueRequestParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_manager.BoxValuesRequestParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.AppSources.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.AppSpec.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.CallConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.DeclaredSchemaValueSpec.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.Hint.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.ReservedSchemaValueSpec.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.Schema.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.SchemaSpec.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.StateSchemaSpec.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.Struct.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppCallParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppCallTransactionResultOfType.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppCompilationResult.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppDeploymentParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppDeployMetadata.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppLookup.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppMetadata.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppReference.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppState.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppStorageSchema.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.BoxName.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.BoxReference.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.BoxValueRequestParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.BoxValuesRequestParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.CompiledTeal.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.CoreAppCallArgs.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.CreateAppParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.RawAppCallArgs.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.TealTemplateParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.UpdateAppParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset_manager.AssetInformation.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset_manager.BulkAssetOptInOutResult.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset.AssetBulkOptInOutParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset.AssetOptInParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset.AssetOptOutParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset.CreateAssetParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_client_manager.AlgoSdkClients.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_client_manager.TypedAppClient.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_client_manager.TypedAppFactory.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_composer.BuiltTransactions.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_config.Config.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_debugging.AVMTracesEventData.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_debugging.TealSourceDebugEventData.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_debugging.TealSourcesDebugEventData.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_dispenser_client.DispenserFundResponse.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_dispenser_client.DispenserLimitResponse.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_dispenser_client.TestNetDispenserApiClientParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_indexer.LookupAssetHoldingsOptions.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_logic_error.LogicErrorDetails.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_network_client.AlgoClientConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_network_client.AlgoConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_network_client.NetworkDetails.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.AlgoKitLogCaptureFixture.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.AlgorandFixture.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.AlgorandFixtureConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.AlgorandTestAutomationContext.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.GetTestAccountParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.LogSnapshotConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.AtomicTransactionComposerToSend.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.ConfirmedTransactionResult.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.ConfirmedTransactionResults.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.SendAtomicTransactionComposerResults.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.SendParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.SendTransactionParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.SendTransactionResult.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.SendTransactionResults.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.TransactionGroupToSend.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.TransactionToSign.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transfer.AlgoRekeyParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transfer.AlgoTransferParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transfer.EnsureFundedParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transfer.EnsureFundedReturnType.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transfer.TransferAssetParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:index.indexer.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:index.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:testing.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_account_manager_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_account_manager.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_account.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algo_http_client_with_retry.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_asset_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_interface.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_transaction_creator.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_transaction_sender.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_transfer_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_amount_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_amount.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_arc56.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_client_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_client.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_deployer.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_factory_and_client_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_factory.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_manager.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_asset_manager.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_asset.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_async_event_emitter_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_async_event_emitter.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_client_manager_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_client_manager.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_composer.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_config.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_debugging.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_dispenser_client_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_dispenser_client.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_expand.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_indexer.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_kmd_account_manager.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_lifecycle_events.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_logging.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_logic_error.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_network_client.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_testing.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_transaction.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_transfer.md │ │ │ │ │ ├── algokit:utils:typescript:code:README.md │ │ │ │ │ ├── algokit:utils:typescript:README.md │ │ │ │ │ ├── algokit:utils:typescript:v7-migration.md │ │ │ │ │ ├── algokit:utils:typescript:v8-migration.md │ │ │ │ │ ├── ARCs:ARC-template.md │ │ │ │ │ ├── ARCs:assets:arc-0012:README.md │ │ │ │ │ ├── ARCs:assets:arc-0034:TemplateForm.md │ │ │ │ │ ├── ARCs:assets:arc-0062:README.md │ │ │ │ │ ├── ARCs:pages:nfts.md │ │ │ │ │ ├── ARCs:pages:wallets.md │ │ │ │ │ ├── ARCs:README.md │ │ │ │ │ ├── ARCs:specs:arc-0000.md │ │ │ │ │ ├── ARCs:specs:arc-0001.md │ │ │ │ │ ├── ARCs:specs:arc-0002.md │ │ │ │ │ ├── ARCs:specs:arc-0003.md │ │ │ │ │ ├── ARCs:specs:arc-0004.md │ │ │ │ │ ├── ARCs:specs:arc-0005.md │ │ │ │ │ ├── ARCs:specs:arc-0006.md │ │ │ │ │ ├── ARCs:specs:arc-0007.md │ │ │ │ │ ├── ARCs:specs:arc-0008.md │ │ │ │ │ ├── ARCs:specs:arc-0009.md │ │ │ │ │ ├── ARCs:specs:arc-0010.md │ │ │ │ │ ├── ARCs:specs:arc-0011.md │ │ │ │ │ ├── ARCs:specs:arc-0012.md │ │ │ │ │ ├── ARCs:specs:arc-0015.md │ │ │ │ │ ├── ARCs:specs:arc-0016.md │ │ │ │ │ ├── ARCs:specs:arc-0018.md │ │ │ │ │ ├── ARCs:specs:arc-0019.md │ │ │ │ │ ├── ARCs:specs:arc-0020.md │ │ │ │ │ ├── ARCs:specs:arc-0021.md │ │ │ │ │ ├── ARCs:specs:arc-0022.md │ │ │ │ │ ├── ARCs:specs:arc-0023.md │ │ │ │ │ ├── ARCs:specs:arc-0025.md │ │ │ │ │ ├── ARCs:specs:arc-0026.md │ │ │ │ │ ├── ARCs:specs:arc-0028.md │ │ │ │ │ ├── ARCs:specs:arc-0032.md │ │ │ │ │ ├── ARCs:specs:arc-0033.md │ │ │ │ │ ├── ARCs:specs:arc-0034.md │ │ │ │ │ ├── ARCs:specs:arc-0035.md │ │ │ │ │ ├── ARCs:specs:arc-0036.md │ │ │ │ │ ├── ARCs:specs:arc-0042.md │ │ │ │ │ ├── ARCs:specs:arc-0047.md │ │ │ │ │ ├── ARCs:specs:arc-0048.md │ │ │ │ │ ├── ARCs:specs:arc-0049.md │ │ │ │ │ ├── ARCs:specs:arc-0054.md │ │ │ │ │ ├── ARCs:specs:arc-0055.md │ │ │ │ │ ├── ARCs:specs:arc-0056.md │ │ │ │ │ ├── ARCs:specs:arc-0059.md │ │ │ │ │ ├── ARCs:specs:arc-0062.md │ │ │ │ │ ├── ARCs:specs:arc-0065.md │ │ │ │ │ ├── ARCs:specs:arc-0069.md │ │ │ │ │ ├── ARCs:specs:arc-0072.md │ │ │ │ │ ├── ARCs:specs:arc-0073.md │ │ │ │ │ ├── ARCs:specs:arc-0074.md │ │ │ │ │ ├── ARCs:specs:arc-0076.md │ │ │ │ │ ├── ARCs:specs:arc-0078.md │ │ │ │ │ ├── ARCs:specs:arc-0079.md │ │ │ │ │ ├── ARCs:specs:arc-0200.md │ │ │ │ │ ├── clis_index.md │ │ │ │ │ ├── developer:docs:about.md │ │ │ │ │ ├── developer:docs:clis:algokey:algokey.md │ │ │ │ │ ├── developer:docs:clis:algokey:generate.md │ │ │ │ │ ├── developer:docs:clis:algokey:import.md │ │ │ │ │ ├── developer:docs:clis:algokey:multisig:append-auth-addr.md │ │ │ │ │ ├── developer:docs:clis:algokey:multisig:multisig.md │ │ │ │ │ ├── developer:docs:clis:algokey:part:info.md │ │ │ │ │ ├── developer:docs:clis:algokey:part:part.md │ │ │ │ │ ├── developer:docs:clis:algokey:part:reparent.md │ │ │ │ │ ├── developer:docs:clis:algokey:sign.md │ │ │ │ │ ├── developer:docs:clis:conduit:conduit.md │ │ │ │ │ ├── developer:docs:clis:conduit:init.md │ │ │ │ │ ├── developer:docs:clis:conduit:list:exporters.md │ │ │ │ │ ├── developer:docs:clis:conduit:list:importers.md │ │ │ │ │ ├── developer:docs:clis:conduit:list:list.md │ │ │ │ │ ├── developer:docs:clis:conduit:list:processors.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:diagcfg.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:metric:disable.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:metric:enable.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:metric:metric.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:metric:status.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:disable.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:enable.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:endpoint.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:name.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:status.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:telemetry.md │ │ │ │ │ ├── developer:docs:clis:goal:node:restart.md │ │ │ │ │ ├── developer:docs:clis:goal:node:start.md │ │ │ │ │ ├── developer:docs:clis:goal:node:status.md │ │ │ │ │ ├── developer:docs:clis:goal:node:stop.md │ │ │ │ │ ├── developer:docs:clis:goal:node:wait.md │ │ │ │ │ ├── developer:docs:clis:goal:protocols.md │ │ │ │ │ ├── developer:docs:clis:goal:report.md │ │ │ │ │ ├── developer:docs:clis:goal:version.md │ │ │ │ │ ├── developer:docs:clis:goal:wallet:list.md │ │ │ │ │ ├── developer:docs:clis:goal:wallet:new.md │ │ │ │ │ ├── developer:docs:clis:goal:wallet:wallet.md │ │ │ │ │ ├── developer:docs:clis:indexer:api-config.md │ │ │ │ │ ├── developer:docs:clis:indexer:daemon.md │ │ │ │ │ ├── developer:docs:clis:indexer:indexer.md │ │ │ │ │ ├── developer:docs:clis:indexer:util:util.md │ │ │ │ │ ├── developer:docs:clis:indexer:util:validator.md │ │ │ │ │ ├── developer:docs:clis:kmd.md │ │ │ │ │ ├── developer:docs:clis:tealdbg:debug.md │ │ │ │ │ ├── developer:docs:clis:tealdbg:remote.md │ │ │ │ │ ├── developer:docs:clis:tealdbg:tealdbg.md │ │ │ │ │ ├── developer:docs:details:accounts:create.md │ │ │ │ │ ├── developer:docs:details:accounts:index.md │ │ │ │ │ ├── developer:docs:details:accounts:rekey.md │ │ │ │ │ ├── developer:docs:details:algorand_consensus.md │ │ │ │ │ ├── developer:docs:details:algorand-networks:betanet.md │ │ │ │ │ ├── developer:docs:details:algorand-networks:index.md │ │ │ │ │ ├── developer:docs:details:algorand-networks:mainnet.md │ │ │ │ │ ├── developer:docs:details:algorand-networks:testnet.md │ │ │ │ │ ├── developer:docs:details:asa.md │ │ │ │ │ ├── developer:docs:details:atc.md │ │ │ │ │ ├── developer:docs:details:atomic_transfers.md │ │ │ │ │ ├── developer:docs:details:conduit.md │ │ │ │ │ ├── developer:docs:details:crust.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:index.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:guidelines.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:index.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:jsonspec.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:index.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v1.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v10.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v2.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v3.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v4.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v5.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v6.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v7.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v8.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v9.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:specification.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:ABI:index.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:apps:create.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:apps:index.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:apps:innertx.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:apps:state.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:apps:txs.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:debugging.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:frontend:apps.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:frontend:smartsigs.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:guidelines.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:index.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:smartsigs:index.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:smartsigs:modes.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:smartsigs:walkthrough.md │ │ │ │ │ ├── developer:docs:details:dapps:writing-contracts:beaker.md │ │ │ │ │ ├── developer:docs:details:dapps:writing-contracts:pyteal.md │ │ │ │ │ ├── developer:docs:details:dapps:writing-contracts:python.md │ │ │ │ │ ├── developer:docs:details:encoding.md │ │ │ │ │ ├── developer:docs:details:ethereum_to_algorand.md │ │ │ │ │ ├── developer:docs:details:index.md │ │ │ │ │ ├── developer:docs:details:indexer.md │ │ │ │ │ ├── developer:docs:details:parameter_tables.md │ │ │ │ │ ├── developer:docs:details:stateproofs:index.md │ │ │ │ │ ├── developer:docs:details:stateproofs:light_client.md │ │ │ │ │ ├── developer:docs:details:technical_faq.md │ │ │ │ │ ├── developer:docs:details:transactions:index.md │ │ │ │ │ ├── developer:docs:details:transactions:offline_transactions.md │ │ │ │ │ ├── developer:docs:details:transactions:payment_prompts.md │ │ │ │ │ ├── developer:docs:details:transactions:signatures.md │ │ │ │ │ ├── developer:docs:details:transactions:transactions.md │ │ │ │ │ ├── developer:docs:details:useful_resources.md │ │ │ │ │ ├── developer:docs:get-started:algokit.md │ │ │ │ │ ├── developer:docs:get-started:basics:what_is_blockchain.md │ │ │ │ │ ├── developer:docs:get-started:basics:whats_a_dapp.md │ │ │ │ │ ├── developer:docs:get-started:basics:where_to_start.md │ │ │ │ │ ├── developer:docs:get-started:basics:why_algorand.md │ │ │ │ │ ├── developer:docs:get-started:tokenization:ft.md │ │ │ │ │ ├── developer:docs:get-started:tokenization:nft.md │ │ │ │ │ ├── developer:docs:index.md │ │ │ │ │ ├── developer:docs:rest-apis:algod.md │ │ │ │ │ ├── developer:docs:rest-apis:indexer.md │ │ │ │ │ ├── developer:docs:rest-apis:kmd.md │ │ │ │ │ ├── developer:docs:rest-apis:restendpoints.md │ │ │ │ │ ├── developer:docs:run-a-node:operations:catchup.md │ │ │ │ │ ├── developer:docs:run-a-node:operations:switch_networks.md │ │ │ │ │ ├── developer:docs:run-a-node:participate:generate_keys.md │ │ │ │ │ ├── developer:docs:run-a-node:participate:index.md │ │ │ │ │ ├── developer:docs:run-a-node:participate:offline.md │ │ │ │ │ ├── developer:docs:run-a-node:participate:online.md │ │ │ │ │ ├── developer:docs:run-a-node:participate:renew.md │ │ │ │ │ ├── developer:docs:run-a-node:reference:artifacts.md │ │ │ │ │ ├── developer:docs:run-a-node:reference:config.md │ │ │ │ │ ├── developer:docs:run-a-node:reference:relay.md │ │ │ │ │ ├── developer:docs:run-a-node:reference:telemetry-config.md │ │ │ │ │ ├── developer:docs:run-a-node:setup:indexer.md │ │ │ │ │ ├── developer:docs:run-a-node:setup:install.md │ │ │ │ │ ├── developer:docs:run-a-node:setup:node-troubleshooting.md │ │ │ │ │ ├── developer:docs:run-a-node:setup:types.md │ │ │ │ │ ├── developer:docs:sdks:go:index.md │ │ │ │ │ ├── developer:docs:sdks:index.md │ │ │ │ │ ├── developer:docs:sdks:java:index.md │ │ │ │ │ ├── developer:docs:sdks:javascript:index.md │ │ │ │ │ ├── developer:docs:sdks:python:index.md │ │ │ │ │ ├── developer:python:code:example:accounts.md │ │ │ │ │ ├── developer:python:code:example:arc4_types.md │ │ │ │ │ ├── developer:python:code:example:assets.md │ │ │ │ │ ├── developer:python:code:example:box_storage.md │ │ │ │ │ ├── developer:python:code:example:control_flow.md │ │ │ │ │ ├── developer:python:code:example:crypto:merkle_tree.md │ │ │ │ │ ├── developer:python:code:example:defi:amm.md │ │ │ │ │ ├── developer:python:code:example:defi:auction.md │ │ │ │ │ ├── developer:python:code:example:defi:htlc_logicsig.md │ │ │ │ │ ├── developer:python:code:example:defi:marketplace.md │ │ │ │ │ ├── developer:python:code:example:events:arc28_events.md │ │ │ │ │ ├── developer:python:code:example:global_storage.md │ │ │ │ │ ├── developer:python:code:example:governance:simple_voting.md │ │ │ │ │ ├── developer:python:code:example:hello_world.md │ │ │ │ │ ├── developer:python:code:example:inner_transactions.md │ │ │ │ │ ├── developer:python:code:example:local_storage.md │ │ │ │ │ ├── developer:python:code:example:nft:proof_of_attendance.md │ │ │ │ │ ├── developer:python:code:example:privacy:zk_whitelist.md │ │ │ │ │ ├── developer:python:code:example:scratch_storage.md │ │ │ │ │ ├── developer:python:code:example:self_payment.md │ │ │ │ │ ├── developer:python:code:example:struct_in_box.md │ │ │ │ │ ├── developer:python:code:example:subsidize_app_call.md │ │ │ │ │ ├── developer:python:code:example:transactions.md │ │ │ │ │ ├── developer:python:code:example:utility:calculator.md │ │ │ │ │ ├── devportal-code-examples:projects:python-contract-examples:README.md │ │ │ │ │ ├── devportal-code-examples:README.md │ │ │ │ │ ├── docs:.walletconnect:index.md │ │ │ │ │ ├── docs:.walletconnect:walletconnect-schema.md │ │ │ │ │ ├── docs:README.md │ │ │ │ │ ├── docs:scripts:example_tracker:example_list.md │ │ │ │ │ ├── docs:scripts:README.md │ │ │ │ │ ├── index.md │ │ │ │ │ ├── liquid_auth_index.md │ │ │ │ │ ├── liquid-auth:ARCHITECTURE.md │ │ │ │ │ ├── liquid-auth:decisions:1-Service-Authentication.md │ │ │ │ │ ├── liquid-auth:decisions:2-Bidirectional-Communication.md │ │ │ │ │ ├── liquid-auth:decisions:3-Peer-to-Peer-Signaling.md │ │ │ │ │ ├── liquid-auth:decisions:4-Fido-Extension.md │ │ │ │ │ ├── liquid-auth:decisions:README.md │ │ │ │ │ ├── liquid-auth:docs:architecture.md │ │ │ │ │ ├── liquid-auth:docs:clients:android:provider-service:authenticate.md │ │ │ │ │ ├── liquid-auth:docs:clients:android:provider-service:register.md │ │ │ │ │ ├── liquid-auth:docs:clients:browser:authentication.md │ │ │ │ │ ├── liquid-auth:docs:clients:browser:example.md │ │ │ │ │ ├── liquid-auth:docs:introduction.md │ │ │ │ │ ├── liquid-auth:docs:README.md │ │ │ │ │ ├── liquid-auth:docs:server:environment-variables.md │ │ │ │ │ ├── liquid-auth:docs:server:integrations.md │ │ │ │ │ ├── liquid-auth:docs:server:introduction.md │ │ │ │ │ ├── liquid-auth:docs:server:running-locally.md │ │ │ │ │ ├── liquid-auth:README.md │ │ │ │ │ ├── liquid-auth:SEQUENCE.md │ │ │ │ │ ├── liquid-auth:services:liquid-auth-api-js:src:assertion:assertion.controller.post.request.md │ │ │ │ │ ├── liquid-auth:services:liquid-auth-api-js:src:assertion:assertion.controller.post.response.md │ │ │ │ │ ├── liquid-auth:services:liquid-auth-api-js:src:attestation:attestation.controller.post.request.md │ │ │ │ │ ├── liquid-auth:services:liquid-auth-api-js:src:auth:auth.controller.get.user.md │ │ │ │ │ ├── liquid-auth:sites:express-dapp:README.md │ │ │ │ │ ├── liquid-auth:VISION.md │ │ │ │ │ ├── puya_index.md │ │ │ │ │ ├── puya:docs:algopy_testing:index.md │ │ │ │ │ ├── puya:docs:api-algopy.arc4.md │ │ │ │ │ ├── puya:docs:api-algopy.gtxn.md │ │ │ │ │ ├── puya:docs:api-algopy.itxn.md │ │ │ │ │ ├── puya:docs:api-algopy.md │ │ │ │ │ ├── puya:docs:api-algopy.op.md │ │ │ │ │ ├── puya:docs:api.md │ │ │ │ │ ├── puya:docs:compiler.md │ │ │ │ │ ├── puya:docs:index.md │ │ │ │ │ ├── puya:docs:language-guide.md │ │ │ │ │ ├── puya:docs:lg-arc28.md │ │ │ │ │ ├── puya:docs:lg-arc4.md │ │ │ │ │ ├── puya:docs:lg-builtins.md │ │ │ │ │ ├── puya:docs:lg-calling-apps.md │ │ │ │ │ ├── puya:docs:lg-compile.md │ │ │ │ │ ├── puya:docs:lg-control.md │ │ │ │ │ ├── puya:docs:lg-errors.md │ │ │ │ │ ├── puya:docs:lg-logs.md │ │ │ │ │ ├── puya:docs:lg-modules.md │ │ │ │ │ ├── puya:docs:lg-opcode-budget.md │ │ │ │ │ ├── puya:docs:lg-ops.md │ │ │ │ │ ├── puya:docs:lg-storage.md │ │ │ │ │ ├── puya:docs:lg-structure.md │ │ │ │ │ ├── puya:docs:lg-transactions.md │ │ │ │ │ ├── puya:docs:lg-types.md │ │ │ │ │ ├── puya:docs:lg-unsupported-python-features.md │ │ │ │ │ ├── puya:docs:principles.md │ │ │ │ │ ├── puya:examples:auction:README.md │ │ │ │ │ ├── puya:python:testing:docs:algopy.md │ │ │ │ │ ├── puya:python:testing:docs:api.md │ │ │ │ │ ├── puya:python:testing:docs:coverage.md │ │ │ │ │ ├── puya:python:testing:docs:examples.md │ │ │ │ │ ├── puya:python:testing:docs:faq.md │ │ │ │ │ ├── puya:python:testing:docs:index.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:arc4-types.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:avm-types.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:concepts.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:contract-testing.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:index.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:opcodes.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:signature-testing.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:state-management.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:subroutines.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:transactions.md │ │ │ │ │ ├── puya:python:testing:examples:README.md │ │ │ │ │ ├── puya:python:testing:README.md │ │ │ │ │ ├── puya:README.md │ │ │ │ │ ├── puya:src:puya:ARCHITECTURE.md │ │ │ │ │ ├── puya:src:puyapy:_typeshed:README.md │ │ │ │ │ ├── puya:src:puyapy:_vendor:mypy:typeshed:stdlib:_typeshed:README.md │ │ │ │ │ ├── puya:src:puyapy:awst_build:README.md │ │ │ │ │ ├── puya:stubs:README.md │ │ │ │ │ ├── puya:tests:test_expected_output:README.md │ │ │ │ │ ├── puya:typescript:docs:architecture-decisions:2024-05-21_primitive-bytes-and-strings.md │ │ │ │ │ ├── puya:typescript:docs:architecture-decisions:2024-05-21_primitive-integer-types.md │ │ │ │ │ ├── puya:typescript:docs:README.md │ │ │ │ │ ├── puya:typescript:packages:algo-ts:readme.md │ │ │ │ │ ├── puya:typescript:README.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIAddressType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIArrayDynamicType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIArrayStaticType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIBoolType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIByteType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIContract.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIInterface.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIMethod.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIStringType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABITupleType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIUfixedType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIUintType.md │ │ │ │ │ ├── SDKs:javascript:classes:Algodv2.md │ │ │ │ │ ├── SDKs:javascript:classes:AtomicTransactionComposer.md │ │ │ │ │ ├── SDKs:javascript:classes:DryrunResult.md │ │ │ │ │ ├── SDKs:javascript:classes:Indexer.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Account.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AccountParticipation.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AccountResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AccountsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AccountStateDelta.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Application.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationLocalState.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationLocalStatesResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationLogData.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationLogsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationParams.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationStateSchema.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Asset.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetBalancesResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetHolding.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetHoldingsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetParams.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Block.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.BlockRewards.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.BlockUpgradeState.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.BlockUpgradeVote.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Box.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.BoxDescriptor.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.BoxesResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ErrorResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.EvalDelta.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.EvalDeltaKeyValue.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.HashFactory.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.HealthCheck.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.IndexerStateProofMessage.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.MerkleArrayProof.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.MiniAssetHolding.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ParticipationUpdates.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofFields.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofParticipant.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofReveal.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofSignature.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofSigSlot.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofTracking.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofVerifier.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateSchema.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TealKeyValue.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TealValue.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Transaction.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionApplication.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionAssetConfig.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionAssetFreeze.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionAssetTransfer.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionKeyreg.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionPayment.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionSignature.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionSignatureLogicsig.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionSignatureMultisig.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionSignatureMultisigSubsignature.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionStateProof.md │ │ │ │ │ ├── SDKs:javascript:classes:Kmd.md │ │ │ │ │ ├── SDKs:javascript:classes:LogicSig.md │ │ │ │ │ ├── SDKs:javascript:classes:LogicSigAccount.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.Account.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountApplicationResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountAssetHolding.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountAssetResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountAssetsInformationResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountParticipation.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountStateDelta.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AppCallLogs.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.Application.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationInitialStates.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationKVStorage.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationLocalReference.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationLocalState.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationParams.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationStateOperation.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationStateSchema.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.Asset.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AssetHolding.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AssetHoldingReference.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AssetParams.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AvmKeyValue.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AvmValue.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BlockHashResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BlockLogsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BlockResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BlockTxidsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.Box.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BoxDescriptor.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BoxesResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BoxReference.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BuildVersion.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.CompileResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DisassembleResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DryrunRequest.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DryrunResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DryrunSource.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DryrunState.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DryrunTxnResult.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ErrorResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.EvalDelta.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.EvalDeltaKeyValue.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.GetBlockTimeStampOffsetResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.GetSyncRoundResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.KvDelta.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.LedgerStateDeltaForTransactionGroup.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.LightBlockHeaderProof.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.NodeStatusResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.PendingTransactionResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.PendingTransactionsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.PostTransactionsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ScratchChange.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateInitialStates.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateRequest.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateRequestTransactionGroup.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateTraceConfig.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateTransactionGroupResult.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateTransactionResult.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateUnnamedResourcesAccessed.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulationEvalOverrides.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulationOpcodeTraceUnit.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulationTransactionExecTrace.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.StateProof.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.StateProofMessage.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SupplyResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.TealKeyValue.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.TealValue.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.TransactionGroupLedgerStateDeltasForRoundResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.TransactionParametersResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.TransactionProofResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.Version.md │ │ │ │ │ ├── SDKs:javascript:classes:SourceMap.md │ │ │ │ │ ├── SDKs:javascript:classes:Transaction.md │ │ │ │ │ ├── SDKs:javascript:enums:ABIReferenceType.md │ │ │ │ │ ├── SDKs:javascript:enums:ABITransactionType.md │ │ │ │ │ ├── SDKs:javascript:enums:AtomicTransactionComposerStatus.md │ │ │ │ │ ├── SDKs:javascript:enums:IntDecoding.md │ │ │ │ │ ├── SDKs:javascript:enums:OnApplicationComplete.md │ │ │ │ │ ├── SDKs:javascript:enums:TransactionType.md │ │ │ │ │ ├── SDKs:javascript:examples:README.md │ │ │ │ │ ├── SDKs:javascript:FAQ.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIContractNetworkInfo.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIContractNetworks.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIContractParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIInterfaceParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIMethodArgParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIMethodParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIMethodReturnParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIResult.md │ │ │ │ │ ├── SDKs:javascript:interfaces:Account.md │ │ │ │ │ ├── SDKs:javascript:interfaces:Address.md │ │ │ │ │ ├── SDKs:javascript:interfaces:AlgodTokenHeader.md │ │ │ │ │ ├── SDKs:javascript:interfaces:BaseHTTPClient.md │ │ │ │ │ ├── SDKs:javascript:interfaces:BaseHTTPClientError.md │ │ │ │ │ ├── SDKs:javascript:interfaces:BaseHTTPClientResponse.md │ │ │ │ │ ├── SDKs:javascript:interfaces:BoxReference.md │ │ │ │ │ ├── SDKs:javascript:interfaces:CustomTokenHeader.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedAssetParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedBoxReference.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedGlobalStateSchema.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedLocalStateSchema.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedLogicSig.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedLogicSigAccount.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedMultisig.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedSignedTransaction.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedSubsig.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedTransaction.md │ │ │ │ │ ├── SDKs:javascript:interfaces:IndexerTokenHeader.md │ │ │ │ │ ├── SDKs:javascript:interfaces:KMDTokenHeader.md │ │ │ │ │ ├── SDKs:javascript:interfaces:MultisigMetadata.md │ │ │ │ │ ├── SDKs:javascript:interfaces:SignedTransaction.md │ │ │ │ │ ├── SDKs:javascript:interfaces:SuggestedParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:TransactionParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:TransactionWithSigner.md │ │ │ │ │ ├── SDKs:javascript:modules:indexerModels.md │ │ │ │ │ ├── SDKs:javascript:modules:modelsv2.md │ │ │ │ │ ├── SDKs:javascript:modules.md │ │ │ │ │ ├── SDKs:javascript:README.md │ │ │ │ │ ├── SDKs:python:algosdk:v2client:harness:README.md │ │ │ │ │ ├── SDKs:python:examples:README.md │ │ │ │ │ ├── SDKs:python:README.md │ │ │ │ │ ├── tealscript:examples_amm_README.md │ │ │ │ │ ├── tealscript:examples_auction_README.md │ │ │ │ │ ├── tealscript:examples_big_box_README.md │ │ │ │ │ ├── tealscript:examples_itxns_README.md │ │ │ │ │ ├── tealscript:examples_lsig_with_app_README.md │ │ │ │ │ ├── tealscript:examples_reti_README.md │ │ │ │ │ ├── tealscript:FEATURES.md │ │ │ │ │ ├── tealscript:guides_atomic_txn.md │ │ │ │ │ ├── tealscript:guides_features.md │ │ │ │ │ ├── tealscript:guides_getting_started.md │ │ │ │ │ ├── tealscript:guides_inner_transactions.md │ │ │ │ │ ├── tealscript:guides_lifecycle.md │ │ │ │ │ ├── tealscript:guides_math.md │ │ │ │ │ ├── tealscript:guides_methods.md │ │ │ │ │ ├── tealscript:guides_multiple_contracts.md │ │ │ │ │ ├── tealscript:guides_pyteal.md │ │ │ │ │ ├── tealscript:guides_storage.md │ │ │ │ │ ├── tealscript:guides_Supported Types_arrays.md │ │ │ │ │ ├── tealscript:guides_Supported Types_numbers.md │ │ │ │ │ ├── TEALScript:README.md │ │ │ │ │ ├── tealscript:tests_test_package_README.md │ │ │ │ │ ├── tealscript:tutorials_Hello World_0001-intro.md │ │ │ │ │ ├── tealscript:tutorials_Hello World_0002-init.md │ │ │ │ │ ├── tealscript:tutorials_Hello World_0003-contract.md │ │ │ │ │ ├── tealscript:tutorials_Hello World_0004-artifacts.md │ │ │ │ │ ├── tealscript:tutorials_Hello World_0005-hello.md │ │ │ │ │ └── tealscript:tutorials_Hello World_0006-test.md │ │ │ │ └── taxonomy-categories │ │ │ │ ├── algokit-utils.json │ │ │ │ ├── algokit.json │ │ │ │ ├── arcs.json │ │ │ │ ├── clis.json │ │ │ │ ├── details.json │ │ │ │ ├── developers.json │ │ │ │ ├── liquid-auth.json │ │ │ │ ├── nodes.json │ │ │ │ ├── puya.json │ │ │ │ ├── python.json │ │ │ │ ├── sdks.json │ │ │ │ └── tealscript.json │ │ │ └── wallet │ │ │ └── index.ts │ │ ├── tools │ │ │ ├── accountManager.ts │ │ │ ├── algodManager.ts │ │ │ ├── apiManager │ │ │ │ ├── algod │ │ │ │ │ ├── account.ts │ │ │ │ │ ├── application.ts │ │ │ │ │ ├── asset.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── transaction.ts │ │ │ │ ├── example │ │ │ │ │ ├── get-balance.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── indexer │ │ │ │ │ ├── account.ts │ │ │ │ │ ├── application.ts │ │ │ │ │ ├── asset.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── transaction.ts │ │ │ │ ├── nfd │ │ │ │ │ └── index.ts │ │ │ │ ├── tinyman │ │ │ │ │ ├── analytics.ts │ │ │ │ │ ├── bootstrap.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── liquidity.ts │ │ │ │ │ ├── opt_in.ts │ │ │ │ │ ├── pool.ts │ │ │ │ │ ├── remove_liquidity.ts │ │ │ │ │ └── swap.ts │ │ │ │ ├── ultrade │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── market.ts │ │ │ │ │ ├── system.ts │ │ │ │ │ └── wallet.ts │ │ │ │ └── vestige │ │ │ │ ├── assets.ts │ │ │ │ ├── balances.ts │ │ │ │ ├── index.ts │ │ │ │ ├── networks.ts │ │ │ │ ├── notes.ts │ │ │ │ ├── pools.ts │ │ │ │ ├── protocols.ts │ │ │ │ ├── swaps.ts │ │ │ │ └── vaults.ts │ │ │ ├── arc26Manager.ts │ │ │ ├── index.ts │ │ │ ├── knowledgeManager.ts │ │ │ ├── transactionManager │ │ │ │ ├── accountTransactions.ts │ │ │ │ ├── appTransactions │ │ │ │ │ ├── callTxn.ts │ │ │ │ │ ├── clearTxn.ts │ │ │ │ │ ├── closeOutTxn.ts │ │ │ │ │ ├── createTxn.ts │ │ │ │ │ ├── deleteTxn.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── optInTxn.ts │ │ │ │ │ ├── test │ │ │ │ │ │ ├── counter_approval.teal │ │ │ │ │ │ ├── counter_clear.teal │ │ │ │ │ │ ├── storage_test_approval_v2.teal │ │ │ │ │ │ ├── storage_test_approval.teal │ │ │ │ │ │ └── storage_test_clear.teal │ │ │ │ │ ├── types.ts │ │ │ │ │ └── updateTxn.ts │ │ │ │ ├── assetTransactions.ts │ │ │ │ ├── generalTransaction.ts │ │ │ │ └── index.ts │ │ │ └── utilityManager.ts │ │ ├── types.ts │ │ └── utils │ │ └── responseProcessor.ts │ ├── tests │ │ ├── resources │ │ │ ├── algod │ │ │ │ ├── account.test.ts │ │ │ │ ├── application.test.ts │ │ │ │ ├── asset.test.ts │ │ │ │ └── transaction.test.ts │ │ │ └── indexer │ │ │ ├── account.test.ts │ │ │ ├── application.test.ts │ │ │ ├── asset.test.ts │ │ │ └── transaction.test.ts │ │ └── tools │ │ ├── accountManager.test.ts │ │ ├── algodManager.test.ts │ │ ├── apiManager │ │ │ └── example │ │ │ └── get-balance.test.ts │ │ ├── transactionManager │ │ │ ├── accountTransactionManager.test.ts │ │ │ ├── appTransactionManager.test.ts │ │ │ ├── assetTransactionManager.test.ts │ │ │ ├── generalTransactionManager.test.ts │ │ │ └── transactionManager.test.ts │ │ └── utilityManager.test.ts │ └── tsconfig.json ├── README.md ├── rename_files.sh └── tsconfig.json ``` # Files -------------------------------------------------------------------------------- /packages/server/src/tools/apiManager/tinyman/remove_liquidity.ts: -------------------------------------------------------------------------------- ```typescript import { Tool, ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js'; import { RemoveLiquidity, poolUtils, SupportedNetwork } from '@tinymanorg/tinyman-js-sdk'; import { algodClient } from '../../../algorand-client.js'; import { env } from '../../../env.js'; async function getAssetDecimals(assetId: number): Promise<number> { try { if (assetId === 0) return 6; // Algo has 6 decimals const assetInfo = await algodClient.getAssetByID(assetId).do(); return assetInfo.params.decimals; } catch (error) { console.error(`Failed to get decimals for asset ${assetId}:`, error); return 6; // Default to 6 decimals if we can't get the info } } export const removeLiquidityTools: Tool[] = [ { name: 'api_tinyman_get_remove_liquidity_quote', description: 'Get quote for removing liquidity from a pool', inputSchema: { type: 'object', properties: { asset1Id: { type: 'integer', description: 'ID of the first asset' }, asset2Id: { type: 'integer', description: 'ID of the second asset' }, poolTokenAmount: { type: 'integer', description: 'Amount of pool tokens to burn' }, initiatorAddr: { type: 'string', description: 'Address of the account removing liquidity' }, slippage: { type: 'number', description: 'Maximum acceptable slippage (e.g., 0.01 for 1%)', default: 0.01 }, singleAssetMode: { type: 'boolean', description: 'Whether to remove liquidity in single asset mode (v2 only)', default: false }, version: { type: 'string', enum: ['v1_1', 'v2'], description: 'Tinyman protocol version', default: 'v2' } }, required: ['asset1Id', 'asset2Id', 'poolTokenAmount', 'initiatorAddr'] } } ]; export async function handleRemoveLiquidityTools(args: any): Promise<any> { const { name, asset1Id, asset2Id, poolTokenAmount, initiatorAddr, slippage = 0.01, singleAssetMode = false, version = 'v2' } = args; if (name === 'api_tinyman_get_remove_liquidity_quote') { try { // Get pool information first const poolInfo = await (version === 'v2' ? poolUtils.v2.getPoolInfo({ client: algodClient, network: env.algorand_network as SupportedNetwork, asset1ID: asset1Id, asset2ID: asset2Id }) : poolUtils.v1_1.getPoolInfo({ client: algodClient, network: env.algorand_network as SupportedNetwork, asset1ID: asset1Id, asset2ID: asset2Id })); // Get pool reserves const reserves = await (version === 'v2' ? poolUtils.v2.getPoolReserves(algodClient, poolInfo) : poolUtils.v1_1.getPoolReserves(algodClient, poolInfo)); // Get asset decimals const [asset1Decimals, asset2Decimals] = await Promise.all([ getAssetDecimals(asset1Id), getAssetDecimals(asset2Id) ]); let quote; if (version === 'v2') { if (singleAssetMode) { quote = await RemoveLiquidity.v2.generateSingleAssetOutTxns({ client: algodClient, pool: poolInfo, outputAssetId: asset1Id, poolTokenIn: BigInt(poolTokenAmount), initiatorAddr, minOutputAssetAmount: BigInt(0), // Will be calculated based on slippage slippage }); } else { quote = await RemoveLiquidity.v2.generateTxns({ client: algodClient, pool: poolInfo, poolTokenIn: BigInt(poolTokenAmount), initiatorAddr, minAsset1Amount: BigInt(0), // Will be calculated based on slippage minAsset2Amount: BigInt(0), // Will be calculated based on slippage slippage }); } } else { // Calculate expected output amounts based on pool reserves and input amount const poolShare = poolUtils.getPoolShare(reserves.issuedLiquidity, BigInt(poolTokenAmount)); const asset1Out = (reserves.asset1 * BigInt(Math.floor(poolShare * 1000))) / BigInt(1000); const asset2Out = (reserves.asset2 * BigInt(Math.floor(poolShare * 1000))) / BigInt(1000); quote = await RemoveLiquidity.v1_1.generateTxns({ client: algodClient, pool: poolInfo, poolTokenIn: BigInt(poolTokenAmount), asset1Out, asset2Out, slippage, initiatorAddr }); } return { version, asset1Id, asset2Id, poolTokenAmount, singleAssetMode, quote }; } catch (error) { throw new McpError( ErrorCode.InternalError, `Failed to get remove liquidity quote: ${error instanceof Error ? error.message : String(error)}` ); } } throw new McpError( ErrorCode.MethodNotFound, `Unknown remove liquidity tool: ${name}` ); } ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:docs:testnet_api.md: -------------------------------------------------------------------------------- ```markdown # AlgoKit TestNet Dispenser API Documentation ## Overview The AlgoKit TestNet Dispenser API provides functionalities to interact with the Dispenser service. This service enables users to fund and refund assets. ## Base URLs - **Production Instance (publicly available):** `https://api.dispenser.algorandfoundation.tools` ## Authorization All API endpoints require an `Authorization` header containing a valid JWT token. > Refer to [algokit dispenser](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/features/dispenser.md#login) command documentation to learn how to obtain a valid JWT token by executing `algokit dispenser login --ci` command. ## Endpoints ### 1. `POST /fund/{assetID}` Funds a user's wallet with a specified asset. **URL Parameters:** | Parameter | Description | | --------- | ------------------------------------------------------------------------ | | `assetID` | ID of the asset for which the funding limit is sought. Use `0` for ALGO. | **Request Body:** | Parameter | Description | | --------- | ----------------------------------- | | receiver | Address of the wallet to be funded. | | amount | Amount of the asset to be funded. | **Response Body:** ```json { "txID": "string", "amount": "number" } ``` | Parameter | Description | | --------- | ------------------------------------------------------------------------ | | `txID` | ID of the fund transaction from the dispenser to the requesting address. | | `amount` | Amount of the asset to be funded. | ### 2. `GET /fund/{assetID}/limit` Fetches the funding limit for a specified asset. **URL Parameters:** | Parameter | Description | | --------- | ------------------------------------------------------------------------ | | `assetID` | ID of the asset for which the funding limit is sought. Use `0` for ALGO. | **Response Body:** ```json { "amount": "number" } ``` | Parameter | Description | | --------- | --------------------------------------------------- | | `amount` | Current daily amount limit for the requested asset. | ### 3. `POST /refund` Allows refunding a transaction. A status code `200` indicates a successful refund. **Request Body:** ```json { "refundTransactionID": "string" } ``` | Parameter | Description | | ------------------- | ----------------------------- | | refundTransactionID | ID of the refund transaction. | --- ## Error Handling If an error occurs, the API returns a specific status and error code. **Error Codes Table:** | Status Code | Error Code | Description | | ----------- | ------------------------ | --------------------------------- | | 400 | `dispenser_out_of_funds` | Dispenser is out of funds | | 403 | `forbidden` | Dispenser access is forbidden | | 400 | `fund_limit_exceeded` | Dispenser fund limit exceeded | | 400 | `missing_params` | Missing required input parameters | | 403 | `authorization_error` | Authorization error | | 400 | `txn_expired` | Transaction expired | | 400 | `txn_invalid` | Invalid transaction | | 400 | `txn_already_processed` | Transaction already processed | | 404 | `txn_not_found` | Transaction not found | | 400 | `invalid_asset` | Unsupported asset ID | | 500 | `unexpected_error` | Unexpected internal error | For more detailed error information, please refer to the error code in the response body. ## Common Error Response All error responses have the following common format: ```json { "code": "string", "message": "string" } ``` | Error Parameter | Description | | --------------- | ------------------------------------------------- | | `code` | Error code as described in the error codes table. | | `message` | Error message. | ### `missing_params` error response ```json { "code": "missing_params", "message": "string", "parameters": ["string"] } ``` | Error Parameter | Description | | --------------- | --------------------------- | | `parameters` | List of missing parameters. | ### `fund_limit_exceeded` error response ```json { "code": "dispenser_fund_limit_exceeded", "message": "string", "limit": "number", "resetsAt": "string" } ``` | Error Parameter | Description | | --------------- | --------------------------------------------------- | | `limit` | Current daily amount limit for the requested asset. | | `resetsAt` | Timestamp when the daily limit resets. | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/index.ts: -------------------------------------------------------------------------------- ```typescript import { McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js'; import fs from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); // Load JSON files const loadJson = (filename: string) => JSON.parse(fs.readFileSync(path.join(__dirname, 'taxonomy-categories', filename), 'utf-8')); const arcs = loadJson('arcs.json'); const sdks = loadJson('sdks.json'); const algokit = loadJson('algokit.json'); const algokitUtils = loadJson('algokit-utils.json'); const tealscript = loadJson('tealscript.json'); const puya = loadJson('puya.json'); const liquidAuth = loadJson('liquid-auth.json'); const python = loadJson('python.json'); const developers = loadJson('developers.json'); const clis = loadJson('clis.json'); const nodes = loadJson('nodes.json'); const details = loadJson('details.json'); // Common schema for category resources const categorySchema = { type: 'object', properties: { name: { type: 'string' }, description: { type: 'string' }, subcategories: { type: 'object' }, documents: { type: 'array', items: { type: 'object', properties: { name: { type: 'string' }, description: { type: 'string' }, path: { type: 'string' } } } } } }; // Resource definitions const resourceDefinitions = [ { uri: 'algorand://knowledge/taxonomy', name: 'Algorand Knowledge Full Taxonomy', description: 'Markdown-based knowledge taxonomy', schema: { type: 'object', properties: { categories: { type: 'array', items: { type: 'object', properties: { name: { type: 'string' }, description: { type: 'string' }, content: { type: 'string' } } } } } } }, { uri: 'algorand://knowledge/taxonomy/arcs', name: arcs.name, description: arcs.description, schema: categorySchema }, { uri: 'algorand://knowledge/taxonomy/sdks', name: sdks.name, description: sdks.description, schema: categorySchema }, { uri: 'algorand://knowledge/taxonomy/algokit', name: algokit.name, description: algokit.description, schema: categorySchema }, { uri: 'algorand://knowledge/taxonomy/algokit-utils', name: algokitUtils.name, description: algokitUtils.description, schema: categorySchema }, { uri: 'algorand://knowledge/taxonomy/tealscript', name: tealscript.name, description: tealscript.description, schema: categorySchema }, { uri: 'algorand://knowledge/taxonomy/puya', name: puya.name, description: puya.description, schema: categorySchema }, { uri: 'algorand://knowledge/taxonomy/liquid-auth', name: liquidAuth.name, description: liquidAuth.description, schema: categorySchema }, { uri: 'algorand://knowledge/taxonomy/python', name: python.name, description: python.description, schema: categorySchema }, { uri: 'algorand://knowledge/taxonomy/developers', name: developers.name, description: developers.description, schema: categorySchema }, { uri: 'algorand://knowledge/taxonomy/clis', name: clis.name, description: clis.description, schema: categorySchema }, { uri: 'algorand://knowledge/taxonomy/nodes', name: nodes.name, description: nodes.description, schema: categorySchema }, { uri: 'algorand://knowledge/taxonomy/details', name: details.name, description: details.description, schema: categorySchema } ]; // Resource module implementation export const knowledgeResources = { canHandle: (uri: string): boolean => { return uri.startsWith('algorand://knowledge/'); }, handle: async (uri: string) => { // Category const categoryMatch = uri.match(/^algorand:\/\/knowledge\/taxonomy\/([^/]+)$/); if (categoryMatch) { const category = categoryMatch[1]; const categoryData = { arcs, sdks, algokit, 'algokit-utils': algokitUtils, tealscript, puya, 'liquid-auth': liquidAuth, python, developers, clis, nodes, details }[category]; if (!categoryData) { throw new McpError( ErrorCode.InvalidRequest, `Unknown category: ${category}` ); } return { contents: [{ uri, mimeType: 'application/json', text: JSON.stringify(categoryData, null, 2) }] }; } // Full taxonomy if (uri === 'algorand://knowledge/taxonomy') { return { contents: [{ uri, mimeType: 'application/json', text: JSON.stringify({ categories: [ arcs, sdks, algokit, algokitUtils, tealscript, puya, liquidAuth, python, developers, clis, nodes, details ] }, null, 2) }] }; } throw new McpError( ErrorCode.InvalidRequest, `Invalid knowledge URI: ${uri}` ); }, getResourceDefinitions: () => resourceDefinitions }; ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/developer:python:code:example:subsidize_app_call.md: -------------------------------------------------------------------------------- ```markdown # Subsidizing Application Calls in Algorand This guide demonstrates how to implement a logic signature (LogicSig) that subsidizes application calls in Algorand smart contracts. This allows a contract account to pay the transaction fees for application calls to a specific application. ## Implementation ```python from algopy import ( Application, Bytes, Global, TemplateVar, TransactionType, Txn, UInt64, logicsig, ) from algopy.op import GTxn @logicsig def subsidize_app_call() -> bool: """ This Contract Account will subsidize the fees for any AppCall transaction directed to a known application. """ return ( # Payment Transaction Validation Txn.type_enum == TransactionType.Payment and Txn.receiver == Txn.sender and Txn.amount == 0 and Txn.rekey_to == Global.zero_address and Txn.close_remainder_to == Global.zero_address and Txn.fee == 2 * Global.min_txn_fee and Txn.last_valid <= TemplateVar[UInt64]("EXPIRATION_ROUND") and Global.genesis_hash == TemplateVar[Bytes]("TARGET_NETWORK_GENESIS") # Application Call Validation and GTxn.type_enum(Txn.group_index - 1) == TransactionType.ApplicationCall and GTxn.application_id(Txn.group_index - 1) == TemplateVar[Application]("KNOWN_APP") and GTxn.fee(Txn.group_index - 1) == 0 ) ``` ## Key Components ### Payment Transaction Validation 1. **Transaction Type**: ```python Txn.type_enum == TransactionType.Payment ``` - Ensures the transaction is a payment type - Required for fee subsidization 2. **Self Payment**: ```python Txn.receiver == Txn.sender and Txn.amount == 0 ``` - Verifies transaction is to self - Ensures no funds are transferred 3. **Security Measures**: ```python Txn.rekey_to == Global.zero_address and Txn.close_remainder_to == Global.zero_address ``` - Prevents account rekeying - Prevents account closure 4. **Fee Structure**: ```python Txn.fee == 2 * Global.min_txn_fee ``` - Sets fee to cover both transactions - Uses minimum transaction fee as base ### Application Call Validation 1. **Previous Transaction Check**: ```python GTxn.type_enum(Txn.group_index - 1) == TransactionType.ApplicationCall ``` - Verifies previous transaction is app call - Uses group transaction index 2. **Application Verification**: ```python GTxn.application_id(Txn.group_index - 1) == TemplateVar[Application]("KNOWN_APP") ``` - Validates target application - Uses template variable for flexibility 3. **Fee Verification**: ```python GTxn.fee(Txn.group_index - 1) == 0 ``` - Ensures app call has zero fee - Required for subsidization ### Time and Network Controls 1. **Expiration Control**: ```python Txn.last_valid <= TemplateVar[UInt64]("EXPIRATION_ROUND") ``` - Sets transaction validity period - Prevents indefinite usage 2. **Network Verification**: ```python Global.genesis_hash == TemplateVar[Bytes]("TARGET_NETWORK_GENESIS") ``` - Ensures correct network - Prevents cross-network usage ## Usage Pattern 1. **Create Transaction Group**: ```python # First transaction: Application call with zero fee app_call_txn = ApplicationCallTxn( sender=user_address, app_id=known_app_id, fee=0 ) # Second transaction: Payment for fees payment_txn = PaymentTxn( sender=subsidy_address, receiver=subsidy_address, amt=0, fee=2 * min_fee ) # Group transactions grouped_txns = assign_group_id([app_call_txn, payment_txn]) ``` 2. **Sign and Submit**: ```python # Sign application call with user's key signed_app_call = app_call_txn.sign(user_private_key) # Sign payment with logic signature signed_payment = LogicSigTransaction(payment_txn, logic_sig) # Submit group txid = algod_client.send_transactions([signed_app_call, signed_payment]) ``` ## Best Practices 1. **Security**: - Validate all transaction parameters - Use appropriate template variables - Implement proper access controls - Monitor subsidy account balance 2. **Fee Management**: - Calculate fees correctly - Consider network congestion - Monitor fee changes - Handle fee updates 3. **Application Control**: - Verify application IDs - Limit subsidized applications - Monitor application usage - Track subsidization costs 4. **Time Management**: - Set appropriate expiration rounds - Consider network timing - Handle round transitions - Update expiration as needed 5. **Error Handling**: - Validate all parameters - Handle rejection cases - Provide clear error messages - Monitor failed transactions 6. **Monitoring**: - Track usage patterns - Monitor account balance - Log subsidized calls - Analyze cost metrics This guide demonstrates how to implement a logic signature for subsidizing application calls in Algorand. The implementation includes security measures, fee management, and proper validation to ensure safe and efficient operation. ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:code:classes:types_logic_error.LogicError.md: -------------------------------------------------------------------------------- ```markdown [@algorandfoundation/algokit-utils](../README.md) / [types/logic-error](../modules/types_logic_error.md) / LogicError # Class: LogicError [types/logic-error](../modules/types_logic_error.md).LogicError Wraps key functionality around processing logic errors ## Hierarchy - `Error` ↳ **`LogicError`** ## Table of contents ### Constructors - [constructor](types_logic_error.LogicError.md#constructor) ### Properties - [cause](types_logic_error.LogicError.md#cause) - [led](types_logic_error.LogicError.md#led) - [lines](types_logic_error.LogicError.md#lines) - [message](types_logic_error.LogicError.md#message) - [name](types_logic_error.LogicError.md#name) - [program](types_logic_error.LogicError.md#program) - [stack](types_logic_error.LogicError.md#stack) - [teal\_line](types_logic_error.LogicError.md#teal_line) - [prepareStackTrace](types_logic_error.LogicError.md#preparestacktrace) - [stackTraceLimit](types_logic_error.LogicError.md#stacktracelimit) ### Methods - [captureStackTrace](types_logic_error.LogicError.md#capturestacktrace) - [parseLogicError](types_logic_error.LogicError.md#parselogicerror) ## Constructors ### constructor • **new LogicError**(`errorDetails`, `program`, `getLineForPc`): [`LogicError`](types_logic_error.LogicError.md) Create a new logic error object. #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `errorDetails` | [`LogicErrorDetails`](../interfaces/types_logic_error.LogicErrorDetails.md) | The details of the logic error | | `program` | `string`[] | The TEAL source code, split by line | | `getLineForPc` | (`pc`: `number`) => `undefined` \| `number` | The source map of the TEAL source code | #### Returns [`LogicError`](types_logic_error.LogicError.md) #### Overrides Error.constructor #### Defined in [src/types/logic-error.ts:52](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L52) ## Properties ### cause • `Optional` **cause**: `unknown` #### Inherited from Error.cause #### Defined in node_modules/typescript/lib/lib.es2022.error.d.ts:24 ___ ### led • **led**: [`LogicErrorDetails`](../interfaces/types_logic_error.LogicErrorDetails.md) #### Defined in [src/types/logic-error.ts:40](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L40) ___ ### lines • **lines**: `number` = `5` #### Defined in [src/types/logic-error.ts:42](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L42) ___ ### message • **message**: `string` #### Inherited from Error.message #### Defined in node_modules/typescript/lib/lib.es5.d.ts:1077 ___ ### name • **name**: `string` #### Inherited from Error.name #### Defined in node_modules/typescript/lib/lib.es5.d.ts:1076 ___ ### program • **program**: `string`[] #### Defined in [src/types/logic-error.ts:41](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L41) ___ ### stack • `Optional` **stack**: `string` #### Overrides Error.stack #### Defined in [src/types/logic-error.ts:44](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L44) ___ ### teal\_line • **teal\_line**: `number` = `0` #### Defined in [src/types/logic-error.ts:43](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L43) ___ ### prepareStackTrace ▪ `Static` `Optional` **prepareStackTrace**: (`err`: `Error`, `stackTraces`: `CallSite`[]) => `any` Optional override for formatting stack traces **`See`** https://v8.dev/docs/stack-trace-api#customizing-stack-traces #### Type declaration ▸ (`err`, `stackTraces`): `any` ##### Parameters | Name | Type | | :------ | :------ | | `err` | `Error` | | `stackTraces` | `CallSite`[] | ##### Returns `any` #### Inherited from Error.prepareStackTrace #### Defined in node_modules/@types/node/globals.d.ts:28 ___ ### stackTraceLimit ▪ `Static` **stackTraceLimit**: `number` #### Inherited from Error.stackTraceLimit #### Defined in node_modules/@types/node/globals.d.ts:30 ## Methods ### captureStackTrace ▸ **captureStackTrace**(`targetObject`, `constructorOpt?`): `void` Create .stack property on a target object #### Parameters | Name | Type | | :------ | :------ | | `targetObject` | `object` | | `constructorOpt?` | `Function` | #### Returns `void` #### Inherited from Error.captureStackTrace #### Defined in node_modules/@types/node/globals.d.ts:21 ___ ### parseLogicError ▸ **parseLogicError**(`error`): `undefined` \| [`LogicErrorDetails`](../interfaces/types_logic_error.LogicErrorDetails.md) Takes an error message and parses out the details of any logic errors in there. #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `error` | `any` | The error message to parse | #### Returns `undefined` \| [`LogicErrorDetails`](../interfaces/types_logic_error.LogicErrorDetails.md) The logic error details if any, or undefined #### Defined in [src/types/logic-error.ts:26](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L26) ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:cli:architecture-decisions:2022-11-14_sandbox-approach.md: -------------------------------------------------------------------------------- ```markdown # AlgoKit sandbox approach - **Status**: Approved - **Owner:** Rob Moore - **Deciders**: Anne Kenyon (Algorand Inc.), Alessandro Cappellato (Algorand Foundation), Will Winder (Algorand Inc.) - **Date created**: 2022-11-14 - **Date decided:** 2022-11-14 - **Date updated**: 2022-11-16 ## Context In order for AlgoKit to facilitate a productive development experience it needs to provide a managed Algorand sandbox experience. This allows developers to run an offline (local-only) private instance of Algorand that they can privately experiment with, run automated tests against and reset at will. ## Requirements - The sandbox works cross-platform (i.e. runs natively on Windows, Mac and Linux) - You can spin up algod and indexer since both have useful use cases when developing - The sandbox is kept up to date with the latest version of algod / indexer - There is access to KMD so that you can programmatically fund accounts to improve the developer experience and reduce manual effort - There is access to the tealdbg port outside of algod so you can attach a debugger to it - The sandbox is isolated and (once running) works offline so the workload is private, allows development when there is no internet (e.g. when on a plane) and allows for multiple instances to be run in parallel (e.g. when developing multiple independent projects simultaneously) - Works in continuous integration and local development environments so you can facilitate automated testing ## Principles - **[AlgoKit Guiding Principles](../../docs/algokit.md#Guiding-Principles)** - specifically Seamless onramp, Leverage existing ecosystem, Meet devs where they are - **Lightweight** - the solution should have as low an impact as possible on resources on the developers machine - **Fast** - the solution should start quickly, which makes for a nicer experience locally and also allows it to be used for continuous integration automation testing ## Options ### Option 1 - Pre-built DockerHub images Pre-built application developer-optimised DockerHub images that work cross-platform; aka an evolved AlgoKit version of <https://github.com/MakerXStudio/algorand-sandbox-dev>. **Pros** - It's quick to download the images and quick to start the container since you don't need to compile Algod / indexer and the images are optimised for small size - The only dependency needed is Docker, which is a fairly common dependency for most developers to use these days - The images are reasonably lightweight - The images provide an optimised application developer experience with: (devmode) algo, KMD, tealdbg, indexer - It natively works cross-platform **Cons** - Some people have reported problems running WSL 2 on a small proportion of Windows environments (to get the latest Docker experience) - Docker within Docker can be a problem in some CI environments that run agents on Docker in the first place - Work needs to be done to create an automated CI/CD that automatically releases new versions to keep it up to date with latest algod/indexer versions ### Option 2 - Lightweight algod client implementation Work with the Algorand Inc. team to get a lightweight algod client that can run outside of a Docker container cross-platform. **Pros** - Likely to be the most lightweight and fastest option - opening up better/easier isolated/parallelised automated testing options - Wouldn't need Docker as a dependency **Cons** - Indexer wouldn't be supported (Postgres would require Docker anyway) - Algorand Inc. does not distribute Windows binaries. ### Option 3 - Sandbox Use the existing [Algorand Sandbox](https://github.com/algorand/sandbox). **Pros** - Implicitly kept up to date with Algorand - no extra thing to maintain - Battle-tested by the core Algorand team day-in-day-out - Supports all environments including unreleased feature branches (because it can target a git repo / commit hash) **Cons** - Sandbox is designed for network testing, not application development - it's much more complex than the needs of application developers - Slow to start because it has to download and built algod and indexer (this is particularly problematic for ephemeral CI/CD build agents) - It's not cross-platform (it requires bash to run sandbox.sh, although a sandbox.ps1 version could be created) ## Preferred option Option 1 and Option 2. Option 1 provides a fully-featured experience that will work great in most scenarios, having option 2 as a second option would open up more advanced parallel automated testing scenarios in addition to that. ## Selected option Option 1 We're aiming to release the first version of AlgoKit within a short timeframe, which won't give time for Option 2 to be developed. Sandbox itself has been ruled out since it's not cross-platform and is too slow for both development and continuous integration. Option 1 also results in a similar result to running Sandbox, so existing Algorand documentation, libraries and approaches should work well with this option making it a good slot-in replacement for Sandbox for application developers. AlgoKit is designed to be modular: we can add in other approaches over time such as Option 2 when/if it becomes available. ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:modelsv2.DryrunTxnResult.md: -------------------------------------------------------------------------------- ```markdown [algosdk](../README.md) / [Exports](../modules.md) / [modelsv2](../modules/modelsv2.md) / DryrunTxnResult # Class: DryrunTxnResult [modelsv2](../modules/modelsv2.md).DryrunTxnResult DryrunTxnResult contains any LogicSig or ApplicationCall program debug information and state updates from a dryrun. ## Hierarchy - `default` ↳ **`DryrunTxnResult`** ## Table of contents ### Constructors - [constructor](modelsv2.DryrunTxnResult.md#constructor) ### Properties - [appCallMessages](modelsv2.DryrunTxnResult.md#appcallmessages) - [appCallTrace](modelsv2.DryrunTxnResult.md#appcalltrace) - [attribute\_map](modelsv2.DryrunTxnResult.md#attribute_map) - [budgetAdded](modelsv2.DryrunTxnResult.md#budgetadded) - [budgetConsumed](modelsv2.DryrunTxnResult.md#budgetconsumed) - [disassembly](modelsv2.DryrunTxnResult.md#disassembly) - [globalDelta](modelsv2.DryrunTxnResult.md#globaldelta) - [localDeltas](modelsv2.DryrunTxnResult.md#localdeltas) - [logicSigDisassembly](modelsv2.DryrunTxnResult.md#logicsigdisassembly) - [logicSigMessages](modelsv2.DryrunTxnResult.md#logicsigmessages) - [logicSigTrace](modelsv2.DryrunTxnResult.md#logicsigtrace) - [logs](modelsv2.DryrunTxnResult.md#logs) ### Methods - [get\_obj\_for\_encoding](modelsv2.DryrunTxnResult.md#get_obj_for_encoding) - [from\_obj\_for\_encoding](modelsv2.DryrunTxnResult.md#from_obj_for_encoding) ## Constructors ### constructor • **new DryrunTxnResult**(`«destructured»`) Creates a new `DryrunTxnResult` object. #### Parameters | Name | Type | | :------ | :------ | | `«destructured»` | `Object` | | › `appCallMessages?` | `string`[] | | › `appCallTrace?` | [`DryrunState`](modelsv2.DryrunState.md)[] | | › `budgetAdded?` | `number` \| `bigint` | | › `budgetConsumed?` | `number` \| `bigint` | | › `disassembly` | `string`[] | | › `globalDelta?` | [`EvalDeltaKeyValue`](modelsv2.EvalDeltaKeyValue.md)[] | | › `localDeltas?` | [`AccountStateDelta`](modelsv2.AccountStateDelta.md)[] | | › `logicSigDisassembly?` | `string`[] | | › `logicSigMessages?` | `string`[] | | › `logicSigTrace?` | [`DryrunState`](modelsv2.DryrunState.md)[] | | › `logs?` | `Uint8Array`[] | #### Overrides BaseModel.constructor #### Defined in client/v2/algod/models/types.ts:3008 ## Properties ### appCallMessages • `Optional` **appCallMessages**: `string`[] #### Defined in client/v2/algod/models/types.ts:2962 ___ ### appCallTrace • `Optional` **appCallTrace**: [`DryrunState`](modelsv2.DryrunState.md)[] #### Defined in client/v2/algod/models/types.ts:2964 ___ ### attribute\_map • **attribute\_map**: `Record`\<`string`, `string`\> #### Inherited from BaseModel.attribute\_map #### Defined in client/v2/basemodel.ts:56 ___ ### budgetAdded • `Optional` **budgetAdded**: `number` \| `bigint` Budget added during execution of app call transaction. #### Defined in client/v2/algod/models/types.ts:2969 ___ ### budgetConsumed • `Optional` **budgetConsumed**: `number` \| `bigint` Budget consumed during execution of app call transaction. #### Defined in client/v2/algod/models/types.ts:2974 ___ ### disassembly • **disassembly**: `string`[] Disassembled program line by line. #### Defined in client/v2/algod/models/types.ts:2960 ___ ### globalDelta • `Optional` **globalDelta**: [`EvalDeltaKeyValue`](modelsv2.EvalDeltaKeyValue.md)[] Application state delta. #### Defined in client/v2/algod/models/types.ts:2979 ___ ### localDeltas • `Optional` **localDeltas**: [`AccountStateDelta`](modelsv2.AccountStateDelta.md)[] #### Defined in client/v2/algod/models/types.ts:2981 ___ ### logicSigDisassembly • `Optional` **logicSigDisassembly**: `string`[] Disassembled lsig program line by line. #### Defined in client/v2/algod/models/types.ts:2986 ___ ### logicSigMessages • `Optional` **logicSigMessages**: `string`[] #### Defined in client/v2/algod/models/types.ts:2988 ___ ### logicSigTrace • `Optional` **logicSigTrace**: [`DryrunState`](modelsv2.DryrunState.md)[] #### Defined in client/v2/algod/models/types.ts:2990 ___ ### logs • `Optional` **logs**: `Uint8Array`[] #### Defined in client/v2/algod/models/types.ts:2992 ## Methods ### get\_obj\_for\_encoding ▸ **get_obj_for_encoding**(`binary?`): `Record`\<`string`, `any`\> Get an object ready for encoding to either JSON or msgpack. #### Parameters | Name | Type | Default value | Description | | :------ | :------ | :------ | :------ | | `binary` | `boolean` | `false` | Use true to indicate that the encoding can handle raw binary objects (Uint8Arrays). Use false to indicate that raw binary objects should be converted to base64 strings. True should be used for objects that will be encoded with msgpack, and false should be used for objects that will be encoded with JSON. | #### Returns `Record`\<`string`, `any`\> #### Inherited from BaseModel.get\_obj\_for\_encoding #### Defined in client/v2/basemodel.ts:65 ___ ### from\_obj\_for\_encoding ▸ `Static` **from_obj_for_encoding**(`data`): [`DryrunTxnResult`](modelsv2.DryrunTxnResult.md) #### Parameters | Name | Type | | :------ | :------ | | `data` | `Record`\<`string`, `any`\> | #### Returns [`DryrunTxnResult`](modelsv2.DryrunTxnResult.md) #### Defined in client/v2/algod/models/types.ts:3062 ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:code:classes:types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md: -------------------------------------------------------------------------------- ```markdown [@algorandfoundation/algokit-utils](../README.md) / [types/algo-http-client-with-retry](../modules/types_algo_http_client_with_retry.md) / AlgoHttpClientWithRetry # Class: AlgoHttpClientWithRetry [types/algo-http-client-with-retry](../modules/types_algo_http_client_with_retry.md).AlgoHttpClientWithRetry A HTTP Client that wraps the Algorand SDK HTTP Client with retries ## Hierarchy - `URLTokenBaseHTTPClient` ↳ **`AlgoHttpClientWithRetry`** ## Table of contents ### Constructors - [constructor](types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md#constructor) ### Properties - [MAX\_BACKOFF\_MS](types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md#max_backoff_ms) - [MAX\_TRIES](types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md#max_tries) - [RETRY\_ERROR\_CODES](types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md#retry_error_codes) - [RETRY\_STATUS\_CODES](types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md#retry_status_codes) ### Methods - [callWithRetry](types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md#callwithretry) - [delete](types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md#delete) - [get](types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md#get) - [post](types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md#post) ## Constructors ### constructor • **new AlgoHttpClientWithRetry**(`tokenHeader`, `baseServer`, `port?`, `defaultHeaders?`): [`AlgoHttpClientWithRetry`](types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md) #### Parameters | Name | Type | | :------ | :------ | | `tokenHeader` | `TokenHeader` | | `baseServer` | `string` | | `port?` | `string` \| `number` | | `defaultHeaders?` | `Record`\<`string`, `any`\> | #### Returns [`AlgoHttpClientWithRetry`](types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md) #### Inherited from URLTokenBaseHTTPClient.constructor #### Defined in node_modules/algosdk/dist/types/client/urlTokenBaseHTTPClient.d.ts:27 ## Properties ### MAX\_BACKOFF\_MS ▪ `Static` `Private` `Readonly` **MAX\_BACKOFF\_MS**: ``10000`` #### Defined in [src/types/algo-http-client-with-retry.ts:8](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algo-http-client-with-retry.ts#L8) ___ ### MAX\_TRIES ▪ `Static` `Private` `Readonly` **MAX\_TRIES**: ``5`` #### Defined in [src/types/algo-http-client-with-retry.ts:7](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algo-http-client-with-retry.ts#L7) ___ ### RETRY\_ERROR\_CODES ▪ `Static` `Private` `Readonly` **RETRY\_ERROR\_CODES**: `string`[] #### Defined in [src/types/algo-http-client-with-retry.ts:13](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algo-http-client-with-retry.ts#L13) ___ ### RETRY\_STATUS\_CODES ▪ `Static` `Private` `Readonly` **RETRY\_STATUS\_CODES**: `number`[] #### Defined in [src/types/algo-http-client-with-retry.ts:12](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algo-http-client-with-retry.ts#L12) ## Methods ### callWithRetry ▸ **callWithRetry**(`func`): `Promise`\<`BaseHTTPClientResponse`\> #### Parameters | Name | Type | | :------ | :------ | | `func` | () => `Promise`\<`BaseHTTPClientResponse`\> | #### Returns `Promise`\<`BaseHTTPClientResponse`\> #### Defined in [src/types/algo-http-client-with-retry.ts:25](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algo-http-client-with-retry.ts#L25) ___ ### delete ▸ **delete**(`relativePath`, `data`, `query?`, `requestHeaders?`): `Promise`\<`BaseHTTPClientResponse`\> #### Parameters | Name | Type | | :------ | :------ | | `relativePath` | `string` | | `data` | `Uint8Array` | | `query?` | `Query`\<`string`\> | | `requestHeaders` | `Record`\<`string`, `string`\> | #### Returns `Promise`\<`BaseHTTPClientResponse`\> #### Overrides URLTokenBaseHTTPClient.delete #### Defined in [src/types/algo-http-client-with-retry.ts:100](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algo-http-client-with-retry.ts#L100) ___ ### get ▸ **get**(`relativePath`, `query?`, `requestHeaders?`): `Promise`\<`BaseHTTPClientResponse`\> #### Parameters | Name | Type | | :------ | :------ | | `relativePath` | `string` | | `query?` | `Query`\<`string`\> | | `requestHeaders` | `Record`\<`string`, `string`\> | #### Returns `Promise`\<`BaseHTTPClientResponse`\> #### Overrides URLTokenBaseHTTPClient.get #### Defined in [src/types/algo-http-client-with-retry.ts:57](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algo-http-client-with-retry.ts#L57) ___ ### post ▸ **post**(`relativePath`, `data`, `query?`, `requestHeaders?`): `Promise`\<`BaseHTTPClientResponse`\> #### Parameters | Name | Type | | :------ | :------ | | `relativePath` | `string` | | `data` | `Uint8Array` | | `query?` | `Query`\<`string`\> | | `requestHeaders` | `Record`\<`string`, `string`\> | #### Returns `Promise`\<`BaseHTTPClientResponse`\> #### Overrides URLTokenBaseHTTPClient.post #### Defined in [src/types/algo-http-client-with-retry.ts:91](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algo-http-client-with-retry.ts#L91) ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:README.md: -------------------------------------------------------------------------------- ```markdown <div align="center"> <a href="https://github.com/algorandfoundation/algokit"><img src="https://bafybeickjkfl4mbrhmgr67kentvjr3meixppy2ziqyvpjpkvrlyjacjvua.ipfs.nftstorage.link/"></a> </div> <br/> <div align="center"> Welcome to the AlgoKit Developer Universe repo, the one-stop shop for all <a href="https://github.com/algorandfoundation/algokit-cli#what-is-algokit"> AlgoKit</a> related repositories and information </div> <br/> <p align="center"> <a target="_blank" href="https://github.com/algorandfoundation/algokit-cli"><img src="https://img.shields.io/badge/algokit-cli-00dc94?logo=algorand&mac=flat.svg" /></a> <a target="_blank" href="https://github.com/algorandfoundation/algokit-utils-py#readme"><img src="https://img.shields.io/badge/algokit-utils-00dc94?logo=python&mac=flat.svg" /></a> <a target="_blank" href="https://github.com/algorandfoundation/algokit-utils-ts#algokit-typescript-utilities"><img src="https://img.shields.io/badge/algokit-utils-00dc94?logo=typescript&mac=flat.svg" /></a> <a target="_blank" href="https://github.com/algorandfoundation/algokit-client-generator-py"><img src="https://img.shields.io/badge/algokit-client generator-00dc94?logo=python&mac=flat.svg" /></a> <a target="_blank" href="https://github.com/algorandfoundation/algokit-client-generator-ts"><img src="https://img.shields.io/badge/algokit-client generator-00dc94?logo=typescript&mac=flat.svg" /></a> </p> ### AlgoKit CLI <img alt="PyPI - Downloads" src="https://img.shields.io/pypi/dm/algokit?logo=pypi"> <img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/algorandfoundation/algokit-cli?logo=github"> AlgoKit CLI is the one-stop shop tool for developers building on the [Algorand network](https://www.algorand.com/). AlgoKit gets developers of all levels up and running with a familiar, fun and productive development environment in minutes. The goal of AlgoKit is to help developers build and launch secure, automated production-ready applications rapidly. [Repo](https://github.com/algorandfoundation/algokit-cli) | [Quick Start Tutorial](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/tutorials/intro.md) | [Documentation](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/algokit.md) >[!NOTE] > By using the AlgoKit cli you will use all the below listed packages, no need to install them separately ### Algorand Python Algorand Python is a semantically and syntactically compatible, typed Python language that works with standard Python tooling and allows you to express smart contracts (apps) and smart signatures (logic signatures) for deployment on the Algorand Virtual Machine (AVM). [See how to get started](https://github.com/algorandfoundation/puya). ### AlgoKit Utils A set of core Algorand utilities available in both Python and TypeScript that make it easier to build solutions on Algorand. The goal of this library is to provide intuitive, productive utility functions that make it easier, quicker and safer to build applications on Algorand. Largely these functions wrap the underlying Algorand SDK, but provide a higher level interface with sensible defaults and capabilities for common tasks. ##### Python <img alt="PyPI - Downloads" src="https://img.shields.io/pypi/dm/algokit-utils?logo=pypi"> [Repo](https://github.com/algorandfoundation/algokit-utils-py#readme) | [Documentation](https://algorandfoundation.github.io/algokit-utils-py/html/index.html) ##### TypeScript <img alt="npm" src="https://img.shields.io/npm/dm/%40algorandfoundation/algokit-utils?logo=npm"> [Repo](https://github.com/algorandfoundation/algokit-utils-ts#algokit-typescript-utilities) | [Documentation](https://github.com/algorandfoundation/algokit-utils-ts/tree/main/docs) ### Client Generators This project generates a type-safe smart contract client in both Python TypeScript for the Algorand Blockchain that wraps the [application client](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/docs/capabilities/app-client.md) in AlgoKit Utils. It does this by reading an [ARC-0032](https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0032.md) application spec file. ##### Python <img alt="PyPI - Downloads" src="https://img.shields.io/pypi/dm/algokit-client-generator?logo=pypi"> [Repo](https://github.com/algorandfoundation/algokit-client-generator-py) | [Examples](https://github.com/algorandfoundation/algokit-client-generator-py/tree/main/examples) ##### TypeScript <img alt="npm" src="https://img.shields.io/npm/dm/%40algorandfoundation/algokit-client-generator?logo=npm"> [Repo](https://github.com/algorandfoundation/algokit-client-generator-ts) | [Examples](https://github.com/algorandfoundation/algokit-client-generator-ts/tree/main/examples) ### AVM Debugger The AlgoKit AVM VS Code debugger extension provides a convenient way to debug any Algorand Smart Contracts written in TEAL [more info](https://marketplace.visualstudio.com/items?itemName=AlgorandFoundation.algokit-avm-vscode-debugger) ### TestNet Dispenser The AlgoKit TestNet Dispenser API provides functionalities to interact with the Dispenser service. This service enables users to fund and refund assets, testnet Algos only for now. [Documentation](./docs/testnet_api.md) ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:cli:algokit.md: -------------------------------------------------------------------------------- ```markdown # AlgoKit The Algorand AlgoKit CLI is the one-stop shop tool for developers building on the Algorand network. The goal of AlgoKit is to help developers build and launch secure, automated production-ready applications rapidly. ## AlgoKit CLI commands For details on how to use individual features see the following - [Bootstrap](./features/project/bootstrap.md) - Bootstrap AlgoKit project dependencies - [Compile](./features/compile.md) - Compile Algorand Python code - [Completions](./features/completions.md) - Install shell completions for AlgoKit - [Deploy](./features/project/deploy.md) - Deploy your smart contracts effortlessly to various networks - [Dispenser](./features/dispenser.md) - Fund your TestNet account with ALGOs from the AlgoKit TestNet Dispenser - [Doctor](./features/doctor.md) - Check AlgoKit installation and dependencies - [Explore](./features/explore.md) - Explore Algorand Blockchains using lora - [Generate](./features/generate.md) - Generate code for an Algorand project - [Goal](./features/goal.md) - Run the Algorand goal CLI against the AlgoKit Sandbox - [Init](./features/init.md) - Quickly initialize new projects using official Algorand Templates or community provided templates - [LocalNet](./features/localnet.md) - Manage a locally sandboxed private Algorand network - [Project](./features/project.md) - Manage an AlgoKit project workspace on your file system - [Tasks](./features/tasks.md) - Perform a variety of useful operations on the Algorand blockchain ## Common AlgoKit CLI options AlgoKit has a number of global options that can impact all commands. Note: these global options must be appended to `algokit` and appear before a command, e.g. `algokit -v localnet start`, but not `algokit localnet start -v`. The exception to this is `-h`, which can be appended to any command or sub-command to see contextual help information. - `-h, --help` The help option can be used on any command to get details on any command, its sub-commands and options. - `-v, --verbose` Enables DEBUG logging, useful when troubleshooting or if you want to peek under the covers and learn what AlgoKit CLI is doing. - `--color / --no-color` Enables or disables output of console styling, we also support the [NO_COLOR](https://no-color.org) environment variable. - `--skip-version-check` Skips updated AlgoKit version checking and prompting for that execution, this can also be disabled [permanently on a given machine](./cli/index.md#version-prompt) with `algokit config version-prompt disable`. See also the [AlgoKit CLI Reference](./cli/index.md), which details every command, sub-command and option. ## AlgoKit Tutorials The following tutorials guide you through various scenarios: - [AlgoKit quick start](./tutorials/intro.md) - [Creating AlgoKit templates](./tutorials/algokit-template.md) ## Guiding Principles AlgoKit is guided by the following solution principles which flow through to the applications created by developers. 1. **Cohesive developer tool suite**: Using AlgoKit should feel professional and cohesive, like it was designed to work together, for the developer; not against them. Developers are guided towards delivering end-to-end, high quality outcomes on MainNet so they and Algorand are more likely to be successful. 2. **Seamless onramp**: New developers have a seamless experience to get started and they are guided into a pit of success with best practices, supported by great training collateral; you should be able to go from nothing to debugging code in 5 minutes. 3. **Leverage existing ecosystem**: AlgoKit functionality gets into the hands of Algorand developers quickly by building on top of the existing ecosystem wherever possible and aligned to these principles. 4. **Sustainable**: AlgoKit should be built in a flexible fashion with long-term maintenance in mind. Updates to latest patches in dependencies, Algorand protocol development updates, and community contributions and feedback will all feed in to the evolution of the software. 5. **Secure by default**: Include defaults, patterns and tooling that help developers write secure code and reduce the likelihood of security incidents in the Algorand ecosystem. This solution should help Algorand be the most secure Blockchain ecosystem. 6. **Extensible**: Be extensible for community contribution rather than stifling innovation, bottle-necking all changes through the Algorand Foundation and preventing the opportunity for other ecosystems being represented (e.g. Go, Rust, etc.). This helps make developers feel welcome and is part of the developer experience, plus it makes it easier to add features sustainably. 7. **Meet developers where they are**: Make Blockchain development mainstream by giving all developers an idiomatic development experience in the operating system, IDE and language they are comfortable with so they can dive in quickly and have less they need to learn before being productive. 8. **Modular components**: Solution components should be modular and loosely coupled to facilitate efficient parallel development by small, effective teams, reduced architectural complexity and allowing developers to pick and choose the specific tools and capabilities they want to use based on their needs and what they are comfortable with. ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/developer:docs:run-a-node:setup:indexer.md: -------------------------------------------------------------------------------- ```markdown title: Install the indexer The Algorand Indexer is a feature that enables searching the blockchain for transactions, assets, accounts, and blocks with various criteria. Currently, Algorand has a V1 and V2 Indexer. The V1 Indexer is deprecated and can significantly slow down nodes. Users should now use the V2 Indexer. The V2 Indexer runs as an independent process that must connect to a [PostgreSQL](https://www.postgresql.org/) compatible database that contains the ledger data. The PostgreSQL database is populated by the indexer which connects to an Algorand node and processes all the ledger data and loads the database. The node the Indexer connects to must be an archival node to get all the ledger data. Alternatively, the Indexer can just connect to a PostgresSQL database that is populated by another instance of Indexer. This allows reader instances to be set up that provide the [REST APIs](../../../rest-apis/indexer) for searching the database and another Indexer to be responsible for loading the ledger data. The V2 Indexer is network agnostic, meaning it can point at BetaNet, TestNet, or MainNet. The source code for the Indexer is provided on [github](https://github.com/algorand/indexer). For details on Indexer usage, read the [Searching the Blockchain](../../../get-details/indexer) feature guide and the [REST API Indexer reference](../../../rest-apis/indexer). See [Indexer README](https://github.com/algorand/indexer) for more details on running the Indexer. # Indexer V2 ## Download the Indexer Binaries To Install the new Indexer follow the instructions below. The Indexer binaries are available on [github](https://github.com/algorand/indexer/releases). !!! info Additional install methods will be available in the near future. ## Extract the binaries to a specific directory The binary can be placed in any directory you choose. In these instructions, an indexer folder is used which is located in the current user's home directory. ```bash $ mkdir ~/indexer $ cd /path/to/download-dir $ tar -xf <your-os-tarfile> -C ~/indexer $ cd ~/indexer/<tarfile-name> ``` ## Run the Indexer The Indexer primarily provides two services, loading a PostgreSQL database with ledger data and supplying a REST API to search this ledger data. You can set the Indexer to point at a database that was loaded by another instance of the Indexer. The database does not have to be on the current node. In fact, you can have one Indexer that loads the database and many Indexers that share this data through their REST APIs. How the Indexer operates is determined with parameters that are passed to the Indexer as it is started. The Indexer has many options which can be seen using the -h option when running the [Indexer binary](../../clis/indexer/indexer.md). To start the Indexer as a reader (ie not connecting to an Algorand node), supply the `--postgres` or `-P` option when running the indexer. The value should be a valid connection string for a postgres database. ```bash $ ./algorand-indexer daemon --data-dir /tmp -P "host=[your-host] port=[your-port] user=[uname] password=[password] dbname=[ledgerdb] sslmode=disable" --no-algod ``` To start the Indexer so it populates the PostgreSQL database, supply the Algorand Archival node connection details. This can be done by either specifying the Algorand Node data directory (with `--algod`), if the node is on the same machine as the Indexer, or by supplying the algod network host and port string (`--algod-net`) and the proper API token (`--algod-token`). The database needs to be created and running prior to starting the Indexer. !!! note The indexer has a flag `--data-dir` for where to write it's data, which is distinct from the algod data directory in the above paragraph. ```bash # start with local data directory $ ./algorand-indexer daemon --data-dir /tmp -P "host=[your-host] port=[your-port] user=[uname] password=[password] dbname=[ledgerdb] sslmode=disable" --algod=~/node/data # start with networked Algorand node $ ./algorand-indexer daemon --data-dir /tmp -P "host=[your-host] port=[your-port] user=[uname] password=[password] dbname=[ledgerdb] sslmode=disable" --algod-net="http://[your-host]:[your-port]" --algod-token="[your-api-token]" ``` !!! info The initial loading of the Indexer Database will take a considerable amount of time. ## REST API Token and Server When starting the Indexer, a REST API is exposed. To control access to this API you can you use the `--token` parameter, which allows specifying any desired token. REST API clients will be required to pass this token in their calls in order to return successful searches. The REST API defaults to serving on port 8980. This can be changed by supply a [host:port] value to the Indexer with the `--server` option. [Click here for Indexer Rest Endpoint specfiles.](../../../rest-apis/restendpoints/) To turn on indexing for a node, the `isIndexerActive` configuration parameter must be set to `true`. The [Node Configuration](../../reference/config) guide describes setting node configuration properties. !!! warning Turning on indexing with a node will increase the disk space required by the node. !!! info Indexing on a node is only allowed with nodes that have archival mode turned on. ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:LogicSigAccount.md: -------------------------------------------------------------------------------- ```markdown [algosdk](../README.md) / [Exports](../modules.md) / LogicSigAccount # Class: LogicSigAccount Represents an account that can sign with a LogicSig program. ## Table of contents ### Constructors - [constructor](LogicSigAccount.md#constructor) ### Properties - [lsig](LogicSigAccount.md#lsig) - [sigkey](LogicSigAccount.md#sigkey) ### Methods - [address](LogicSigAccount.md#address) - [appendToMultisig](LogicSigAccount.md#appendtomultisig) - [get\_obj\_for\_encoding](LogicSigAccount.md#get_obj_for_encoding) - [isDelegated](LogicSigAccount.md#isdelegated) - [sign](LogicSigAccount.md#sign) - [signMultisig](LogicSigAccount.md#signmultisig) - [toByte](LogicSigAccount.md#tobyte) - [verify](LogicSigAccount.md#verify) - [fromByte](LogicSigAccount.md#frombyte) - [from\_obj\_for\_encoding](LogicSigAccount.md#from_obj_for_encoding) ## Constructors ### constructor • **new LogicSigAccount**(`program`, `args?`) Create a new LogicSigAccount. By default this will create an escrow LogicSig account. Call `sign` or `signMultisig` on the newly created LogicSigAccount to make it a delegated account. #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `program` | `Uint8Array` | The compiled TEAL program which contains the logic for this LogicSig. | | `args?` | (`Uint8Array` \| `Buffer`)[] | An optional array of arguments for the program. | #### Defined in logicsig.ts:246 ## Properties ### lsig • **lsig**: [`LogicSig`](LogicSig.md) #### Defined in logicsig.ts:234 ___ ### sigkey • `Optional` **sigkey**: `Uint8Array` #### Defined in logicsig.ts:235 ## Methods ### address ▸ **address**(): `string` Get the address of this LogicSigAccount. If the LogicSig is delegated to another account, this will return the address of that account. If the LogicSig is not delegated to another account, this will return an escrow address that is the hash of the LogicSig's program code. #### Returns `string` #### Defined in logicsig.ts:315 ___ ### appendToMultisig ▸ **appendToMultisig**(`secretKey`): `void` Adds an additional signature from a member of the delegating multisig account. #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `secretKey` | `Uint8Array` | The secret key of one of the members of the delegating multisig account. | #### Returns `void` #### Defined in logicsig.ts:363 ___ ### get\_obj\_for\_encoding ▸ **get_obj_for_encoding**(): [`EncodedLogicSigAccount`](../interfaces/EncodedLogicSigAccount.md) #### Returns [`EncodedLogicSigAccount`](../interfaces/EncodedLogicSigAccount.md) #### Defined in logicsig.ts:252 ___ ### isDelegated ▸ **isDelegated**(): `boolean` Check if this LogicSigAccount has been delegated to another account with a signature. Note this function only checks for the presence of a delegation signature. To verify the delegation signature, use `verify`. #### Returns `boolean` #### Defined in logicsig.ts:293 ___ ### sign ▸ **sign**(`secretKey`): `void` Turns this LogicSigAccount into a delegated LogicSig. This type of LogicSig has the authority to sign transactions on behalf of another account, called the delegating account. If the delegating account is a multisig account, use `signMultisig` instead. #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `secretKey` | `Uint8Array` | The secret key of the delegating account. | #### Returns `void` #### Defined in logicsig.ts:375 ___ ### signMultisig ▸ **signMultisig**(`msig`, `secretKey`): `void` Turns this LogicSigAccount into a delegated LogicSig. This type of LogicSig has the authority to sign transactions on behalf of another account, called the delegating account. Use this function if the delegating account is a multisig account. #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `msig` | [`MultisigMetadata`](../interfaces/MultisigMetadata.md) | The multisig delegating account | | `secretKey` | `Uint8Array` | The secret key of one of the members of the delegating multisig account. Use `appendToMultisig` to add additional signatures from other members. | #### Returns `void` #### Defined in logicsig.ts:352 ___ ### toByte ▸ **toByte**(): `Uint8Array` Encode this object into msgpack. #### Returns `Uint8Array` #### Defined in logicsig.ts:273 ___ ### verify ▸ **verify**(): `boolean` Verifies this LogicSig's program and signatures. #### Returns `boolean` true if and only if the LogicSig program and signatures are valid. #### Defined in logicsig.ts:301 ___ ### fromByte ▸ `Static` **fromByte**(`encoded`): [`LogicSigAccount`](LogicSigAccount.md) Decode a msgpack object into a LogicSigAccount. #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `encoded` | `ArrayLike`\<`any`\> | The encoded LogicSigAccount. | #### Returns [`LogicSigAccount`](LogicSigAccount.md) #### Defined in logicsig.ts:281 ___ ### from\_obj\_for\_encoding ▸ `Static` **from_obj_for_encoding**(`encoded`): [`LogicSigAccount`](LogicSigAccount.md) #### Parameters | Name | Type | | :------ | :------ | | `encoded` | [`EncodedLogicSigAccount`](../interfaces/EncodedLogicSigAccount.md) | #### Returns [`LogicSigAccount`](LogicSigAccount.md) #### Defined in logicsig.ts:263 ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/developer:docs:rest-apis:restendpoints.md: -------------------------------------------------------------------------------- ```markdown title: REST Endpoints Algorand maintains SDK support in [JavaScript](../../sdks/javascript/#install-sdk-for-runtime), [Python](../../sdks/python/#install-sdk), [Java](../../sdks/java/#install-sdk-for-runtime) and [Go](../../sdks/go/#install-go-sdk). More languages are also available through [Community Provided SDKs](https://developer.algorand.org/ecosystem-projects/?from_query=sdk#net-sdk). The Algorand SDKs offer both standalone and network-connected development functionality. # Algod, Indexer and KMD REST Endpoints Integration with the Algorand protocol daemon (`algod`), Algorand key management daemon (`kmd`) or Algorand Indexer daemon (`algorand-indexer`) is performed using a set of REST APIs. All REST methods and models are fully described within reference documentation. - [Algod REST APIs](../../rest-apis/algod/) - [Indexer REST APIs](../../rest-apis/indexer/) - [KMD REST APIs](../../rest-apis/kmd/) _**Algod REST Endpoints**_ !!! info Algorand provides endpoints for [Open API Specification version 2 (OAS2)](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md) and [OAS3](https://github.com/OAI/OpenAPI-Specification/tree/main/versions). These APIs are described using the [Open API Specification version 3 (OAS3)](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md). [Algod REST Endpoints OAS3 specfile](https://github.com/algorand/go-algorand/blob/master/daemon/algod/api/algod.oas3.yml?raw=true)(.yml) Run Algod in Postman OAS3. [](https://app.getpostman.com/run-collection/7417958-60ff1bfc-b5f2-42aa-83b0-6888f0d4c2f4?action=collection%2Ffork&collection-url=entityId%3D7417958-60ff1bfc-b5f2-42aa-83b0-6888f0d4c2f4%26entityType%3Dcollection%26workspaceId%3Dab8846ef-efa3-4872-a5e5-c2992de6b69c) OAS2 Algod specfile [here](https://github.com/algorand/go-algorand/blob/master/daemon/algod/api/algod.oas2.json?raw=true) _**Indexer REST Endpoints**_ The `algorand-indexer` daemon provides its API from the _host:port_ defined by the _--server_ flag specified at start up. The default port is 8980. [Indexer REST Endpoints OAS3 specfile](https://www.github.com/algorand/indexer/blob/develop/api/indexer.oas3.yml?raw=true)(.yml) Run Indexer in Postman OAS3. [](https://app.getpostman.com/run-collection/7417958-2e088cf0-8c78-44b0-8b08-9a832b120d1a?action=collection%2Ffork&collection-url=entityId%3D7417958-2e088cf0-8c78-44b0-8b08-9a832b120d1a%26entityType%3Dcollection%26workspaceId%3Dab8846ef-efa3-4872-a5e5-c2992de6b69c) OAS2 Indexer specfile [here](https://github.com/algorand/indexer/blob/develop/api/indexer.oas2.json?raw=true) _**KMD REST Endpoints**_ !!! info All examples in this section assume the data directory is ~/node/data This API is described using the [Open API Specification version 2 (OAS 2)](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md). The `kmd` daemon serves it's API from the _kmd.net_ files found in the _~/node/data_ and _~/node/data/kmd-{version}_ directories. The `kmd` daemons provide their API specifications in a [swagger json](https://github.com/algorand/go-algorand/blob/master/daemon/kmd/api/swagger.json) format available from this endpoint: Algorand Key Management Daemon (`kmd`) ```zsh curl http://$(cat ~/node/data/kmd-v0.5/kmd.net)/swagger.json ``` !!! info The `kmd` daemon is only automatically started when using the `goal` command line tool with specific commands requiring key management access. If you require API access to `kmd` you will need to manually start the process with `goal` using the command: `goal kmd start -d <data-dir>`. If the kmd is started with the above command it never times out and stops running unless a timeout flag is specified with the -t flag. The default of 0 is no timeout. # Security Token Most REST calls will also require an API token header to authenticate with the API server. For both `algod` and `kmd` the token is automatically generated by the daemon at startup and stored in a file. `algod` places _algod.token_ in the _~/node/data_ directory. `kmd` places _kmd.token_ the _~/node/data/kmd-{version}_ directory. Security tokens can be regenerated for both using the `goal node generatetoken` command. | Daemon | Header Identifier | Header Value Defined Via | | --------- | ------------------- | ------------------------------------------- | | `algod` | X-Algo-API-Token | file: ~/node/data/algod.token | | `kmd` | X-KMD-API-Token | file: ~/node/data/kmd-\{version\}/kmd.token | | `indexer` | X-Indexer-API-Token | | Each SDK provides a method for setting these headers. Most REST tools provide a method for setting additional headers. To set the header with a `curl` command use the `-H` parameter. For example, to make a call to retrieve a specific block, use the following curl command: ```zsh curl http://$(cat ~/node/data/algod.net)/v2/blocks/16486179 -H "X-Algo-API-Token: $(cat ~/node/data/algod.token)" ``` In the above example, the block information will be displayed if the block exists on the local node. If the node is a non-Archival node, blocks older than 1000 blocks will not be available. ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:code:classes:testing.TestLogger.md: -------------------------------------------------------------------------------- ```markdown [@algorandfoundation/algokit-utils](../README.md) / [testing](../modules/testing.md) / TestLogger # Class: TestLogger [testing](../modules/testing.md).TestLogger Exposes an AlgoKit logger which captures log messages, while wrapping an original logger. This is useful for automated testing. ## Implements - [`Logger`](../modules/types_logging.md#logger) ## Table of contents ### Constructors - [constructor](testing.TestLogger.md#constructor) ### Properties - [logs](testing.TestLogger.md#logs) - [originalLogger](testing.TestLogger.md#originallogger) ### Accessors - [capturedLogs](testing.TestLogger.md#capturedlogs) ### Methods - [clear](testing.TestLogger.md#clear) - [debug](testing.TestLogger.md#debug) - [error](testing.TestLogger.md#error) - [getLogSnapshot](testing.TestLogger.md#getlogsnapshot) - [info](testing.TestLogger.md#info) - [verbose](testing.TestLogger.md#verbose) - [warn](testing.TestLogger.md#warn) ## Constructors ### constructor • **new TestLogger**(`originalLogger?`): [`TestLogger`](testing.TestLogger.md) Create a new test logger that wraps the given logger if provided. #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `originalLogger?` | [`Logger`](../modules/types_logging.md#logger) | The optional original logger to wrap. | #### Returns [`TestLogger`](testing.TestLogger.md) #### Defined in [src/testing/test-logger.ts:16](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/test-logger.ts#L16) ## Properties ### logs • `Private` **logs**: `string`[] #### Defined in [src/testing/test-logger.ts:10](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/test-logger.ts#L10) ___ ### originalLogger • `Private` **originalLogger**: `undefined` \| [`Logger`](../modules/types_logging.md#logger) #### Defined in [src/testing/test-logger.ts:9](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/test-logger.ts#L9) ## Accessors ### capturedLogs • `get` **capturedLogs**(): `string`[] Returns all logs captured thus far. #### Returns `string`[] #### Defined in [src/testing/test-logger.ts:22](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/test-logger.ts#L22) ## Methods ### clear ▸ **clear**(): `void` Clears all logs captured so far. #### Returns `void` #### Defined in [src/testing/test-logger.ts:27](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/test-logger.ts#L27) ___ ### debug ▸ **debug**(`message`, `...optionalParams`): `void` #### Parameters | Name | Type | | :------ | :------ | | `message` | `string` | | `...optionalParams` | `unknown`[] | #### Returns `void` #### Implementation of Logger.debug #### Defined in [src/testing/test-logger.ts:89](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/test-logger.ts#L89) ___ ### error ▸ **error**(`message`, `...optionalParams`): `void` #### Parameters | Name | Type | | :------ | :------ | | `message` | `string` | | `...optionalParams` | `unknown`[] | #### Returns `void` #### Implementation of Logger.error #### Defined in [src/testing/test-logger.ts:73](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/test-logger.ts#L73) ___ ### getLogSnapshot ▸ **getLogSnapshot**(`config?`): `string` Returns a captured log snapshot. This helps ensure that the provided configuration items won't appear with random values in the log snapshot, but rather will get substituted with predictable ids. https://jestjs.io/docs/snapshot-testing#2-tests-should-be-deterministic #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `config?` | [`LogSnapshotConfig`](../interfaces/types_testing.LogSnapshotConfig.md) | The snapshot configuration | #### Returns `string` The snapshotted logs. **`Example`** ```typescript const logger = new TestLogger() ... expect(logger.getLogSnapshot()).toMatchSnapshot() ``` #### Defined in [src/testing/test-logger.ts:47](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/test-logger.ts#L47) ___ ### info ▸ **info**(`message`, `...optionalParams`): `void` #### Parameters | Name | Type | | :------ | :------ | | `message` | `string` | | `...optionalParams` | `unknown`[] | #### Returns `void` #### Implementation of Logger.info #### Defined in [src/testing/test-logger.ts:81](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/test-logger.ts#L81) ___ ### verbose ▸ **verbose**(`message`, `...optionalParams`): `void` #### Parameters | Name | Type | | :------ | :------ | | `message` | `string` | | `...optionalParams` | `unknown`[] | #### Returns `void` #### Implementation of Logger.verbose #### Defined in [src/testing/test-logger.ts:85](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/test-logger.ts#L85) ___ ### warn ▸ **warn**(`message`, `...optionalParams`): `void` #### Parameters | Name | Type | | :------ | :------ | | `message` | `string` | | `...optionalParams` | `unknown`[] | #### Returns `void` #### Implementation of Logger.warn #### Defined in [src/testing/test-logger.ts:77](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/test-logger.ts#L77) ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:code:modules:types_account.md: -------------------------------------------------------------------------------- ```markdown [@algorandfoundation/algokit-utils](../README.md) / types/account # Module: types/account ## Table of contents ### Classes - [MultisigAccount](../classes/types_account.MultisigAccount.md) - [SigningAccount](../classes/types_account.SigningAccount.md) ### Interfaces - [AccountConfig](../interfaces/types_account.AccountConfig.md) - [TransactionSignerAccount](../interfaces/types_account.TransactionSignerAccount.md) ### Type Aliases - [AccountAssetInformation](types_account.md#accountassetinformation) - [AccountInformation](types_account.md#accountinformation) ### Variables - [DISPENSER\_ACCOUNT](types_account.md#dispenser_account) ## Type Aliases ### AccountAssetInformation Ƭ **AccountAssetInformation**: `Object` Account asset holding information at a given round. #### Type declaration | Name | Type | Description | | :------ | :------ | :------ | | `assetId` | `bigint` | The ID of the asset held. | | `balance` | `bigint` | The current balance of that asset holding. | | `frozen` | `boolean` | Whether or not the asset is frozen for the account. | | `round` | `bigint` | The round as at which the holding was correct. | #### Defined in [src/types/account.ts:273](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L273) ___ ### AccountInformation Ƭ **AccountInformation**: `Object` Account information at a given round. #### Type declaration | Name | Type | Description | | :------ | :------ | :------ | | `address` | `Address` | The account public key | | `amountWithoutPendingRewards` | [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) | The amount of Algo in the account, without the pending rewards. | | `appsLocalState?` | `ApplicationLocalState`[] | Applications local data stored in this account. | | `appsTotalExtraPages?` | `number` | The sum of all extra application program pages for this account. | | `appsTotalSchema?` | `ApplicationStateSchema` | (tsch) stores the sum of all of the local schemas and global schemas in this account. Note: the raw account uses `StateSchema` for this type. | | `assets?` | `AssetHolding`[] | Assets held by this account. | | `authAddr?` | `Address` | The address against which signing should be checked. If empty, the address of the current account is used. This field can be updated in any transaction by setting the `RekeyTo` field. | | `balance` | [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) | The balance of Algo currently held by the account. | | `createdApps?` | `Application`[] | Parameters of applications created by this account including app global data. | | `createdAssets?` | `Asset`[] | (apar) parameters of assets created by this account. Note: the raw account uses `map[int] -> Asset` for this type. | | `lastHeartbeatRound?` | `bigint` | The round in which this account last went online, or explicitly renewed their online status. | | `lastProposedRound?` | `bigint` | The round in which this account last proposed the block. | | `minBalance` | [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) | Algo balance required to be held by the account. The requirement grows based on asset and application usage. | | `participation?` | `AccountParticipation` | AccountParticipation describes the parameters used by this account in consensus protocol. | | `pendingRewards` | [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) | Amount of Algo of pending rewards in this account. | | `rewardBase?` | `number` | Used as part of the rewards computation. Only applicable to accounts which are participating. | | `rewards` | [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) | Total rewards of Algo the account has received, including pending rewards. | | `sigType?` | `string` | Indicates what type of signature is used by this account, must be one of: * sig * msig * lsig | | `status` | `string` | Delegation status of the account's Algo: * Offline - indicates that the associated account is delegated. * Online - indicates that the associated account used as part of the delegation pool. * NotParticipating - indicates that the associated account is neither a delegator nor a delegate. | | `totalAppsOptedIn` | `number` | The count of all applications that have been opted in, equivalent to the count of application local data (AppLocalState objects) stored in this account. | | `totalAssetsOptedIn` | `number` | The count of all assets that have been opted in, equivalent to the count of AssetHolding objects held by this account. | | `totalBoxBytes?` | `number` | The total number of bytes used by this account's app's box keys and values. | | `totalBoxes?` | `number` | The number of existing boxes created by this account's app. | | `totalCreatedApps` | `number` | The count of all apps (AppParams objects) created by this account. | | `totalCreatedAssets` | `number` | The count of all assets (AssetParams objects) created by this account. | | `validAsOfRound` | `bigint` | The round number for which this information is relevant. | #### Defined in [src/types/account.ts:124](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L124) ## Variables ### DISPENSER\_ACCOUNT • `Const` **DISPENSER\_ACCOUNT**: ``"DISPENSER"`` The account name identifier used for fund dispensing in test environments #### Defined in [src/types/account.ts:17](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/account.ts#L17) ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:modelsv2.SimulateTransactionGroupResult.md: -------------------------------------------------------------------------------- ```markdown [algosdk](../README.md) / [Exports](../modules.md) / [modelsv2](../modules/modelsv2.md) / SimulateTransactionGroupResult # Class: SimulateTransactionGroupResult [modelsv2](../modules/modelsv2.md).SimulateTransactionGroupResult Simulation result for an atomic transaction group ## Hierarchy - `default` ↳ **`SimulateTransactionGroupResult`** ## Table of contents ### Constructors - [constructor](modelsv2.SimulateTransactionGroupResult.md#constructor) ### Properties - [appBudgetAdded](modelsv2.SimulateTransactionGroupResult.md#appbudgetadded) - [appBudgetConsumed](modelsv2.SimulateTransactionGroupResult.md#appbudgetconsumed) - [attribute\_map](modelsv2.SimulateTransactionGroupResult.md#attribute_map) - [failedAt](modelsv2.SimulateTransactionGroupResult.md#failedat) - [failureMessage](modelsv2.SimulateTransactionGroupResult.md#failuremessage) - [txnResults](modelsv2.SimulateTransactionGroupResult.md#txnresults) - [unnamedResourcesAccessed](modelsv2.SimulateTransactionGroupResult.md#unnamedresourcesaccessed) ### Methods - [get\_obj\_for\_encoding](modelsv2.SimulateTransactionGroupResult.md#get_obj_for_encoding) - [from\_obj\_for\_encoding](modelsv2.SimulateTransactionGroupResult.md#from_obj_for_encoding) ## Constructors ### constructor • **new SimulateTransactionGroupResult**(`«destructured»`) Creates a new `SimulateTransactionGroupResult` object. #### Parameters | Name | Type | | :------ | :------ | | `«destructured»` | `Object` | | › `appBudgetAdded?` | `number` \| `bigint` | | › `appBudgetConsumed?` | `number` \| `bigint` | | › `failedAt?` | (`number` \| `bigint`)[] | | › `failureMessage?` | `string` | | › `txnResults` | [`SimulateTransactionResult`](modelsv2.SimulateTransactionResult.md)[] | | › `unnamedResourcesAccessed?` | [`SimulateUnnamedResourcesAccessed`](modelsv2.SimulateUnnamedResourcesAccessed.md) | #### Overrides BaseModel.constructor #### Defined in client/v2/algod/models/types.ts:4684 ## Properties ### appBudgetAdded • `Optional` **appBudgetAdded**: `number` \| `bigint` Total budget added during execution of app calls in the transaction group. #### Defined in client/v2/algod/models/types.ts:4629 ___ ### appBudgetConsumed • `Optional` **appBudgetConsumed**: `number` \| `bigint` Total budget consumed during execution of app calls in the transaction group. #### Defined in client/v2/algod/models/types.ts:4634 ___ ### attribute\_map • **attribute\_map**: `Record`\<`string`, `string`\> #### Inherited from BaseModel.attribute\_map #### Defined in client/v2/basemodel.ts:56 ___ ### failedAt • `Optional` **failedAt**: (`number` \| `bigint`)[] If present, indicates which transaction in this group caused the failure. This array represents the path to the failing transaction. Indexes are zero based, the first element indicates the top-level transaction, and successive elements indicate deeper inner transactions. #### Defined in client/v2/algod/models/types.ts:4642 ___ ### failureMessage • `Optional` **failureMessage**: `string` If present, indicates that the transaction group failed and specifies why that happened #### Defined in client/v2/algod/models/types.ts:4648 ___ ### txnResults • **txnResults**: [`SimulateTransactionResult`](modelsv2.SimulateTransactionResult.md)[] Simulation result for individual transactions #### Defined in client/v2/algod/models/types.ts:4624 ___ ### unnamedResourcesAccessed • `Optional` **unnamedResourcesAccessed**: [`SimulateUnnamedResourcesAccessed`](modelsv2.SimulateUnnamedResourcesAccessed.md) These are resources that were accessed by this group that would normally have caused failure, but were allowed in simulation. Depending on where this object is in the response, the unnamed resources it contains may or may not qualify for group resource sharing. If this is a field in SimulateTransactionGroupResult, the resources do qualify, but if this is a field in SimulateTransactionResult, they do not qualify. In order to make this group valid for actual submission, resources that qualify for group sharing can be made available by any transaction of the group; otherwise, resources must be placed in the same transaction which accessed them. #### Defined in client/v2/algod/models/types.ts:4661 ## Methods ### get\_obj\_for\_encoding ▸ **get_obj_for_encoding**(`binary?`): `Record`\<`string`, `any`\> Get an object ready for encoding to either JSON or msgpack. #### Parameters | Name | Type | Default value | Description | | :------ | :------ | :------ | :------ | | `binary` | `boolean` | `false` | Use true to indicate that the encoding can handle raw binary objects (Uint8Arrays). Use false to indicate that raw binary objects should be converted to base64 strings. True should be used for objects that will be encoded with msgpack, and false should be used for objects that will be encoded with JSON. | #### Returns `Record`\<`string`, `any`\> #### Inherited from BaseModel.get\_obj\_for\_encoding #### Defined in client/v2/basemodel.ts:65 ___ ### from\_obj\_for\_encoding ▸ `Static` **from_obj_for_encoding**(`data`): [`SimulateTransactionGroupResult`](modelsv2.SimulateTransactionGroupResult.md) #### Parameters | Name | Type | | :------ | :------ | | `data` | `Record`\<`string`, `any`\> | #### Returns [`SimulateTransactionGroupResult`](modelsv2.SimulateTransactionGroupResult.md) #### Defined in client/v2/algod/models/types.ts:4718 ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/docs:scripts:example_tracker:example_list.md: -------------------------------------------------------------------------------- ```markdown The Examples are critical to have in working order and up to date. Runnable source files should be placed in the `examples` directory of the respective SDKs as well as in PyTeal and Beaker. ## SDKs - ACCOUNT_GENERATE - Generate a new account - ALGOD_CREATE_CLIENT - Create Algod client - ALGOD_FETCH_ACCOUNT_INFO - Grab account information - TRANSACTION_PAYMENT_CREATE - Create single Payment transaction - TRANSACTION_PAYMENT_SIGN - Sign single Payment transaction - TRANSACTION_PAYMENT_SUBMIT - Submit transaction and display result - TRANSACTION_FEE_OVERRIDE - show how to override the fee - SP_MIN_FEE - Show that the suggested params contain the min fee - CONST_MIN_FEE - show that the SDK has consts that can be used ## REST APIs ### Algod Client: - ALGOD_CREATE_CLIENT - show how to init client and connect to algod and pass api keys in header - ALGOD_USE_CLIENT - fetch some data like suggested params ### Indexer Client: - CREATE_INDEXER_CLIENT - show how to init client and connect to indexer and pass api keys in header ( TODO: rename to INDEXER_CREATE_CLIENT ) - INDEXER_LOOKUP_ASSET - Find asset by id, print details - INDEXER_PAGINATE_RESULTS - Iterate over pages in results - INDEXER_PREFIX_SEARCH - Show searching by note prefix - INDEXER_SEARCH_MIN_AMOUNT - Show searching for accounts with min amount ### KMD: - KMD_CREATE_CLIENT - Show how to init client and connect to kmd - KMD_CREATE_WALLET - Show how to create a new wallet - KMD_RECOVER_WALLET - show how to recover a wallet - KMD_CREATE_ACCOUNT - Show how to create a new account - KMD_IMPORT_ACCOUNT - Show how to create a new account - KMD_EXPORT_ACCOUNT - show how to get the list of accounts in a wallet ## Accounts - ACCOUNT_GENERATE - generate a new account with the SDK (mirrors SDK reference page) - ACCOUNT_RECOVER_MNEMONIC - Create an account from a known mnemonic and print pubkey/privatekey - ACCOUNT_RECOVER_PRIVATE_KEY - Create an account from a known private key and print pubkey/mnemonic - ACCOUNT_MULTISIG_CREATE - Create a multisig account from a list of accounts - ACCOUNT_REKEY - show how to rekey an account ### Multisig Accounts - MULTISIG_CREATE - Create a multisig from 3 accounts - MULTISIG_SIGN - Sign a transaction with the multisig ### Lsig Accounts - LSIG_COMPILE - Read a TEAL file and compile it - LSIG_INIT - Create a LogicSig object from the compiled TEAL - LSIG_PASS_ARGS - Pass arguments to the LogicSig - LSIG_SIGN_FULL - Sign a transaction with the LogicSig - LSIG_DELEGATE_FULL - Delegate the LogicSig to another account ## ASAs - ASSET_CREATE - Create an Asset from acct1 - ASSET_OPTIN - Opt acct2 in to the newly created asset - ASSET_XFER - Send asset from acct1 to acct2 - ASSET_FREEZE - Freeze the asset in acct2 and then unfreeze the asset in acct2 - ASSET_CONFIG - Reconfigure Asset to remove the freeze address - ASSET_CLAWBACK - Clawback Asset from acct2 - ASSET_OPT_OUT - Opt out of the asset - ASSET_DELETE - Delete the asset - ASSET_INFO - Show how to query the asset info from algod ## Applications - APP_SCHEMA - Show setting schema for the app - APP_SOURCE - Show reading teal file - APP_COMPILE - Show compile teal source - APP_CREATE - App call to create the app - APP_CALL - App call to call the app - APP_READ_STATE - Read state for the app from the algod - APP_OPTIN - Opt in to the app - APP_CLEAR - Clear state for the app - APP_CLOSEOUT - Close out of the app - APP_NOOP - Noop call to the app - APP_UPDATE - Update the app source - APP_DELETE - Delete the app ## Atomic Transactions ### No ATC - ATOMIC_CREATE_TXNS - Create a couple Payment transactions - ATOMIC_GROUP_TXNS - Group them - ATOMIC_GROUP_DEBUG - print the group ids and txids #TODO - ATOMIC_GROUP_SIGN - sign them - ATOMIC_GROUP_ASSEMBLE - re-assemble signed transaction (??) - ATOMIC_GROUP_SEND - send them - ATOMIC*GROUP_RESULTS - Show how to get \_all* the results back (not just the first txid) # TODO ### With ATC - ATC_CREATE - Create a new instance of the ATC - ATC_CREATE_SIGNER - Show how to create a TransactionSigner - ATC_ADD_TRANSACTION - Add a simple transaction to the ATC - ATC_CONTRACT_INIT - Create a Contract object - ATC_ADD_METHOD_CALL - Call a method using the Contract object - ATC_GROUP_TXIDS - Show how you can get the transaction group and print the group ids and txids - ATC_RESULTS - Execute the group, Show how to get the results (esp for non method calls) - ATC_BOX_REF - Show how to set a reference to the box ## Encoding/Decoding - CODEC_ADDRESS - Address - CODEC_BASE64 - arbitrary byte slices encoded as b64 - CODEC_UINT64 - Uint64 - CODEC_STATE - Global/local state - how to decode, what the types mean - CODEC_ABI_TYPES - ABI types (using something like ABIType.from("(uint64,address)")) - CODEC_TRANSACTION_UNSIGNED - Show how to read/write unsigned transactions - CODEC_TRANSACTION_SIGNED- Show how to read/write signed transactions - CODEC_ABI - Show how to encode/decode from an ABI type - CODEC_BLOCKS - Blocks [not implemented yet] ## Transactions - TRANSACTION_SIGN_OFFLINE - Show how to create and sign a transaction using cold wallet - TRANSACTION_KEYREG_OFFLINE_CREATE - Create a keyreg txn to take an account offline - TRANSACTION_KEYREG_ONLINE_CREATE - Create a keyreg txn to take an account online ## Debugging - DEBUG_DRYRUN_DUMP - Create a file with a dryrun request object encoded as msgpack - DEBUG_DRYRUN_SUBMIT - Create a dryrun request and submit it to the algod ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/developer:python:code:example:assets.md: -------------------------------------------------------------------------------- ```markdown # Algorand Standard Assets (ASA) in Python This guide demonstrates how to work with Algorand Standard Assets (ASAs) using Python, including creation, management, transfer, and deletion operations. ## Creating Assets ### Creating a Fungible Token ```python from algokit_utils import AssetCreateParams # Create fungible token with 10 million units txn_result = algorand_client.send.asset_create( AssetCreateParams( sender=account_a.address, total=10_000_000, decimals=6, default_frozen=False, # optional manager=account_a.address, # optional reserve=account_a.address, # optional freeze=account_a.address, # optional clawback=account_a.address, # optional unit_name="MYA", asset_name="My Asset", ) ) ``` ### Creating an NFT ```python # Create a 1/1 NFT txn_result = algorand_client.send.asset_create( AssetCreateParams( sender=account_a.address, total=1, asset_name="My NFT", unit_name="MNFT", decimals=0, url="metadata URL", metadata_hash=b"Hash of the metadata URL", ) ) ``` ## Asset Transfers ### Basic Transfer ```python from algokit_utils import AssetTransferParams # Transfer 1 unit of asset txn_result = algorand_client.send.asset_transfer( AssetTransferParams( sender=account_a.address, asset_id=1234, receiver=account_b.address, amount=1, ) ) ``` ## Asset Participation ### Opt-In ```python from algokit_utils import AssetOptInParams # Opt-in to an asset txn_result = algorand_client.send.asset_opt_in( AssetOptInParams( sender=account_a.address, asset_id=1234, ) ) ``` ### Opt-Out ```python from algokit_utils import AssetOptOutParams # Opt-out of an asset txn_result = algorand_client.send.asset_opt_out( params=AssetOptOutParams( sender=account_a.address, asset_id=1234, creator=account_b.address, ), ensure_zero_balance=True, # Verify zero balance before opt-out ) ``` ## Asset Management ### Freezing Assets ```python from algokit_utils import AssetFreezeParams # Freeze assets txn_result = algorand_client.send.asset_freeze( AssetFreezeParams( sender=account_a.address, asset_id=1234, account=account_b.address, # Account to freeze frozen=True, ) ) # Unfreeze assets txn_result = algorand_client.send.asset_freeze( AssetFreezeParams( sender=account_a.address, asset_id=1234, account=account_b.address, frozen=False, ) ) ``` ### Clawback ```python # Clawback assets from an account txn_result = algorand_client.send.asset_transfer( AssetTransferParams( sender=manager.address, asset_id=1234, amount=1, receiver=manager.address, clawback_target=account_to_be_clawbacked.address, ) ) ``` ### Updating Asset Configuration ```python from algokit_utils import AssetConfigParams # Update asset configuration txn_result = algorand_client.send.asset_config( AssetConfigParams( sender=account_a.address, asset_id=1234, manager=account_b.address, reserve=account_b.address, freeze=account_b.address, clawback=account_b.address, ) ) ``` ### Destroying Assets ```python from algokit_utils import AssetDestroyParams # Destroy an asset txn_result = algorand_client.send.asset_destroy( AssetDestroyParams( sender=account_a.address, asset_id=1234, ) ) ``` ## Best Practices 1. **Asset Creation**: - Choose appropriate decimals for fungible tokens - Set meaningful unit names and asset names - Consider immutability requirements - Document metadata URLs and hashes 2. **Asset Transfer**: - Verify opt-in status before transfers - Handle transfer failures gracefully - Consider minimum balance requirements - Track transfer status 3. **Asset Management**: - Carefully assign management roles - Document role assignments - Implement proper access controls - Monitor asset operations 4. **Freezing and Clawback**: - Use freeze capability judiciously - Document freeze/clawback policies - Implement proper authorization - Monitor frozen accounts 5. **Configuration Updates**: - Plan configuration changes carefully - Document configuration history - Verify manager authorization - Test configuration changes 6. **Asset Deletion**: - Verify creator ownership - Ensure zero circulation - Document deletion reasons - Handle deletion failures ## Security Considerations 1. **Access Control**: - Verify transaction sender authorization - Implement role-based controls - Protect management keys - Monitor suspicious activity 2. **Asset Parameters**: - Choose parameters carefully - Consider immutability implications - Document parameter decisions - Test parameter effects 3. **Operational Security**: - Implement proper error handling - Log important operations - Monitor asset activities - Regular security audits 4. **User Protection**: - Clear documentation - Proper error messages - User notifications - Recovery procedures This guide demonstrates the various operations available for Algorand Standard Assets using Python. Understanding these operations is crucial for developing applications that work with ASAs effectively and securely. ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:modelsv2.SimulateTransactionResult.md: -------------------------------------------------------------------------------- ```markdown [algosdk](../README.md) / [Exports](../modules.md) / [modelsv2](../modules/modelsv2.md) / SimulateTransactionResult # Class: SimulateTransactionResult [modelsv2](../modules/modelsv2.md).SimulateTransactionResult Simulation result for an individual transaction ## Hierarchy - `default` ↳ **`SimulateTransactionResult`** ## Table of contents ### Constructors - [constructor](modelsv2.SimulateTransactionResult.md#constructor) ### Properties - [appBudgetConsumed](modelsv2.SimulateTransactionResult.md#appbudgetconsumed) - [attribute\_map](modelsv2.SimulateTransactionResult.md#attribute_map) - [execTrace](modelsv2.SimulateTransactionResult.md#exectrace) - [fixedSigner](modelsv2.SimulateTransactionResult.md#fixedsigner) - [logicSigBudgetConsumed](modelsv2.SimulateTransactionResult.md#logicsigbudgetconsumed) - [txnResult](modelsv2.SimulateTransactionResult.md#txnresult) - [unnamedResourcesAccessed](modelsv2.SimulateTransactionResult.md#unnamedresourcesaccessed) ### Methods - [get\_obj\_for\_encoding](modelsv2.SimulateTransactionResult.md#get_obj_for_encoding) - [from\_obj\_for\_encoding](modelsv2.SimulateTransactionResult.md#from_obj_for_encoding) ## Constructors ### constructor • **new SimulateTransactionResult**(`«destructured»`) Creates a new `SimulateTransactionResult` object. #### Parameters | Name | Type | | :------ | :------ | | `«destructured»` | `Object` | | › `appBudgetConsumed?` | `number` \| `bigint` | | › `execTrace?` | [`SimulationTransactionExecTrace`](modelsv2.SimulationTransactionExecTrace.md) | | › `fixedSigner?` | `string` | | › `logicSigBudgetConsumed?` | `number` \| `bigint` | | › `txnResult` | [`PendingTransactionResponse`](modelsv2.PendingTransactionResponse.md) | | › `unnamedResourcesAccessed?` | [`SimulateUnnamedResourcesAccessed`](modelsv2.SimulateUnnamedResourcesAccessed.md) | #### Overrides BaseModel.constructor #### Defined in client/v2/algod/models/types.ts:4812 ## Properties ### appBudgetConsumed • `Optional` **appBudgetConsumed**: `number` \| `bigint` Budget used during execution of an app call transaction. This value includes budged used by inner app calls spawned by this transaction. #### Defined in client/v2/algod/models/types.ts:4759 ___ ### attribute\_map • **attribute\_map**: `Record`\<`string`, `string`\> #### Inherited from BaseModel.attribute\_map #### Defined in client/v2/basemodel.ts:56 ___ ### execTrace • `Optional` **execTrace**: [`SimulationTransactionExecTrace`](modelsv2.SimulationTransactionExecTrace.md) The execution trace of calling an app or a logic sig, containing the inner app call trace in a recursive way. #### Defined in client/v2/algod/models/types.ts:4765 ___ ### fixedSigner • `Optional` **fixedSigner**: `string` The account that needed to sign this transaction when no signature was provided and the provided signer was incorrect. #### Defined in client/v2/algod/models/types.ts:4771 ___ ### logicSigBudgetConsumed • `Optional` **logicSigBudgetConsumed**: `number` \| `bigint` Budget used during execution of a logic sig transaction. #### Defined in client/v2/algod/models/types.ts:4776 ___ ### txnResult • **txnResult**: [`PendingTransactionResponse`](modelsv2.PendingTransactionResponse.md) Details about a pending transaction. If the transaction was recently confirmed, includes confirmation details like the round and reward details. #### Defined in client/v2/algod/models/types.ts:4753 ___ ### unnamedResourcesAccessed • `Optional` **unnamedResourcesAccessed**: [`SimulateUnnamedResourcesAccessed`](modelsv2.SimulateUnnamedResourcesAccessed.md) These are resources that were accessed by this group that would normally have caused failure, but were allowed in simulation. Depending on where this object is in the response, the unnamed resources it contains may or may not qualify for group resource sharing. If this is a field in SimulateTransactionGroupResult, the resources do qualify, but if this is a field in SimulateTransactionResult, they do not qualify. In order to make this group valid for actual submission, resources that qualify for group sharing can be made available by any transaction of the group; otherwise, resources must be placed in the same transaction which accessed them. #### Defined in client/v2/algod/models/types.ts:4789 ## Methods ### get\_obj\_for\_encoding ▸ **get_obj_for_encoding**(`binary?`): `Record`\<`string`, `any`\> Get an object ready for encoding to either JSON or msgpack. #### Parameters | Name | Type | Default value | Description | | :------ | :------ | :------ | :------ | | `binary` | `boolean` | `false` | Use true to indicate that the encoding can handle raw binary objects (Uint8Arrays). Use false to indicate that raw binary objects should be converted to base64 strings. True should be used for objects that will be encoded with msgpack, and false should be used for objects that will be encoded with JSON. | #### Returns `Record`\<`string`, `any`\> #### Inherited from BaseModel.get\_obj\_for\_encoding #### Defined in client/v2/basemodel.ts:65 ___ ### from\_obj\_for\_encoding ▸ `Static` **from_obj_for_encoding**(`data`): [`SimulateTransactionResult`](modelsv2.SimulateTransactionResult.md) #### Parameters | Name | Type | | :------ | :------ | | `data` | `Record`\<`string`, `any`\> | #### Returns [`SimulateTransactionResult`](modelsv2.SimulateTransactionResult.md) #### Defined in client/v2/algod/models/types.ts:4846 ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/ARCs:specs:arc-0049.md: -------------------------------------------------------------------------------- ```markdown --- arc: 49 title: NFT Rewards description: NFT Rewards, Terms and Conditions author: Stéphane BARROSO (@SudoWeezy) discussions-to: https://github.com/algorandfoundation/ARCs/issues/228 status: Deprecated type: Informational created: 2023-07-19 --- ## Abstract The NFT Rewards is a temporary incentive program that distributes ALGO to be deployed in targeted activities to attract new NFT users from within and outside the ecosystem. ## Specification The key words "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**", "**SHALL NOT**", "**SHOULD**", "**SHOULD NOT**", "**RECOMMENDED**", "**MAY**", and "**OPTIONAL**" in this document are to be interpreted as described in <a href="https://www.ietf.org/rfc/rfc2119.txt">RFC-2119</a>. ### Pilot program qualification for NFT marketplaces To be eligible to apply to this program, projects must abide by the <a href="https://www.algorand.foundation/disclaimers">Disclaimers</a> (in particular the “Excluded Jurisdictions” section) and be willing to enter into a binding contract in the form of the template provided by the Algorand Foundation. NFT marketplaces applying for this program: - Must be an NFT marketplace on Algorand that coordinates the selling of NFTs. An NFT marketplace is defined as an online platform that facilitates third-party non-fungible token listings and transactions in ALGO on the Algorand blockchain. - Must have transaction volume (over the previous 6 months leading up to the application for the program) that is equivalent to at least 10% of total rewards being distributed. For example, if the total rewards amount is 500K ALGO, then the minimum volume must be 50K ALGO.P #### Important Note *NFT Rewards Program for US entities:* >For 2024 | Q2 we will be allowing US-based entities that fit the Program Criteria to apply for the NFT Rewards program. Their allocated ALGO will be converted to USDCa post prior to the payment transfer. This change will be reviewed on a periodic basis. ### Allocation of rewards - Rewards will be allocated proportionally based on volume for each qualified NFT marketplace. - For qualifying marketplaces with more than 50% of total NFT marketplace volume, rewards will be capped at 35%. ### Requirements for initiatives 1. The rewards (ALGO) must ultimately go to NFT collectors/end users and creators. 2. NFT marketplaces must share their campaign plans publicly in advance in order to qualify for the rewards. 3. The rewards (ALGO) should be held in a separate wallet from operating funds to track on-chain transactions of how funds are being spent. 4. The NFT marketplace must make public data that shows its trading volume in the last quarter. 5. Proposals that incentivize wash trading* will not be approved to participate in the Program. 6. NFT marketplaces must reward creators whose NFTs are purchased with a 5% minimum royalty. >* By definition, the term “wash trading” means a form of market manipulation where the same user simultaneously buys and sells the same asset with the intention of giving false or misleading signals about its demand or price ### Process for launching initiative - To apply, a qualifying NFT marketplace must provide detailed information on the specifics of initiatives they are planning in that period, as well as any documentation proving the location of its headquarters. - If approved by the Algorand Foundation team, rewards will be distributed proportionally based on the allocation defined above. - The qualifying NFT marketplaces must provide a detailed 1-page report following the initiative to Algorand Foundation and on the Forum: 1. Summary of the initiatives implemented; 1. Amount of rewards paid out (including any unspent rewards, which must be returned), and wallet addresses; 1. Total volume of transactions directly as a result of the campaign; 1. New wallets interacting with the marketplace; 1. Total volume of transactions compared to the previous quarter; 1. Any other relevant information. ### Evaluation From GP10 (Q1/2024) proposals will be added to the governance portal and approved or rejected directly by the community. A proposal passes when it reaches a majority of "Yes" votes. The proposals and results are available at <a href="https://governance.algorand.foundation">governance.algorand.foundation</a>. NFT marketplaces that do not fulfill their campaign plan cannot apply for further incentives. NFT team will review overall results and discuss whether this program is having the desired impact and, together with the community, will help evaluate whether it should be extended and expanded to the next period. ### Important to note - Marketplaces that fit the above criteria will be required to sign a legal contract with the Algorand Foundation. - Rewards are only paid out in ALGO or USDCa for US-based entities.. - Legal entities based in other jurisdictions where receiving ALGO is not allowed are not able to partake in this program. - Participants and the Algorand Foundation will all agree on the source of data and metrics to be used for calculating the allocation and measuring the results. ## Rationale This document was versioned using google doc, it made more sense to move it on github. ## Security Considerations Disclaimer: This document may be revised until the day before the voting session opens, as we are still collecting community feedback. ## Copyright Copyright and related rights waived via <a href="https://creativecommons.org/publicdomain/zero/1.0/">CCO</a>. ```