This is page 6 of 93. Use http://codebase.md/goplausible/algorand-mcp?lines=true&page={x} to view the full context. # Directory Structure ``` ├── .gitignore ├── CONTRIBUTING.md ├── LICENSE ├── llms-install.md ├── llms.txt ├── package.json ├── packages │ ├── client │ │ ├── .env.example │ │ ├── package.json │ │ ├── README.md │ │ ├── src │ │ │ ├── env.ts │ │ │ ├── index.ts │ │ │ └── LocalWallet.ts │ │ └── tsconfig.json │ └── server │ ├── .env.example │ ├── API specs │ │ ├── algod_api.json │ │ ├── indexer_api.json │ │ ├── mcp.json │ │ ├── nfd_api.json │ │ ├── ultrade_api.json │ │ ├── vestige_api.json │ │ └── vestige_free_api.json │ ├── Dockerfile │ ├── jest.config.js │ ├── package.json │ ├── README.md │ ├── smithery.yaml │ ├── src │ │ ├── algorand-client.ts │ │ ├── env.ts │ │ ├── index.ts │ │ ├── resources │ │ │ ├── index.ts │ │ │ ├── knowledge │ │ │ │ ├── ARCs.txt │ │ │ │ ├── developers-algokit-architecture-decisions.txt │ │ │ │ ├── developers-algokit-cli.txt │ │ │ │ ├── developers-algokit-utils-python.txt │ │ │ │ ├── developers-algokit-utils-typescript.txt │ │ │ │ ├── developers-clis.txt │ │ │ │ ├── developers-details.txt │ │ │ │ ├── developers-liquid-auth.txt │ │ │ │ ├── developers-nodes.txt │ │ │ │ ├── developers-puya.txt │ │ │ │ ├── developers-python.txt │ │ │ │ ├── developers-sdks-js.txt │ │ │ │ ├── developers-sdks-python.txt │ │ │ │ ├── developers-tealscript.txt │ │ │ │ ├── developers.txt │ │ │ │ ├── index.ts │ │ │ │ ├── taxonomy │ │ │ │ │ ├── algokit-cli:README.md │ │ │ │ │ ├── algokit:cli:algokit.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2022-11-14_sandbox-approach.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2022-11-22_beaker-testing-strategy.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2023-01-11_beaker_productionisation_review.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2023-01-11_brew_install.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2023-01-12_smart-contract-deployment.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2023-06-06_frontend-templates.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2023-07-19_advanced_generate_command.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2024-01-13_native_binaries.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2024-01-23_init-wizard-v2.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2024-01-31_binary_distribution.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2024-03-06_local_dev_ui_packaging.md │ │ │ │ │ ├── algokit:cli:articles:output_stability.md │ │ │ │ │ ├── algokit:cli:cli:index.md │ │ │ │ │ ├── algokit:cli:features:compile.md │ │ │ │ │ ├── algokit:cli:features:completions.md │ │ │ │ │ ├── algokit:cli:features:config.md │ │ │ │ │ ├── algokit:cli:features:dispenser.md │ │ │ │ │ ├── algokit:cli:features:doctor.md │ │ │ │ │ ├── algokit:cli:features:explore.md │ │ │ │ │ ├── algokit:cli:features:generate.md │ │ │ │ │ ├── algokit:cli:features:goal.md │ │ │ │ │ ├── algokit:cli:features:init.md │ │ │ │ │ ├── algokit:cli:features:localnet.md │ │ │ │ │ ├── algokit:cli:features:project:bootstrap.md │ │ │ │ │ ├── algokit:cli:features:project:deploy.md │ │ │ │ │ ├── algokit:cli:features:project:link.md │ │ │ │ │ ├── algokit:cli:features:project:list.md │ │ │ │ │ ├── algokit:cli:features:project:run.md │ │ │ │ │ ├── algokit:cli:features:project.md │ │ │ │ │ ├── algokit:cli:features:tasks:analyze.md │ │ │ │ │ ├── algokit:cli:features:tasks:ipfs.md │ │ │ │ │ ├── algokit:cli:features:tasks:mint.md │ │ │ │ │ ├── algokit:cli:features:tasks:nfd.md │ │ │ │ │ ├── algokit:cli:features:tasks:opt.md │ │ │ │ │ ├── algokit:cli:features:tasks:send.md │ │ │ │ │ ├── algokit:cli:features:tasks:sign.md │ │ │ │ │ ├── algokit:cli:features:tasks:transfer.md │ │ │ │ │ ├── algokit:cli:features:tasks:vanity_address.md │ │ │ │ │ ├── algokit:cli:features:tasks:wallet.md │ │ │ │ │ ├── algokit:cli:features:tasks.md │ │ │ │ │ ├── algokit:cli:tutorials:algokit-template.md │ │ │ │ │ ├── algokit:cli:tutorials:intro.md │ │ │ │ │ ├── algokit:cli:tutorials:smart-contracts.md │ │ │ │ │ ├── algokit:docs:testnet_api.md │ │ │ │ │ ├── algokit:lora:README.md │ │ │ │ │ ├── algokit:README.md │ │ │ │ │ ├── algokit:utils:python:markdown:apidocs:algokit_utils:algokit_utils.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:account.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:app-client.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:app-deploy.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:client.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:debugger.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:dispenser-client.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:transfer.md │ │ │ │ │ ├── algokit:utils:python:markdown:index.md │ │ │ │ │ ├── algokit:utils:python:README.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:account.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:app-client.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:app-deploy.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:client.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:debugger.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:dispenser-client.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:transfer.md │ │ │ │ │ ├── algokit:utils:python:source:index.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:account.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:algorand-client.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:amount.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:app-client.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:app-deploy.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:app.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:asset.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:client.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:debugging.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:dispenser-client.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:event-emitter.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:indexer.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:testing.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:transaction-composer.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:transaction.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:transfer.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:typed-app-clients.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:testing.TestLogger.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:testing.TransactionLogger.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_account_manager.AccountManager.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_account.MultisigAccount.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_account.SigningAccount.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_algorand_client_transaction_creator.AlgorandClientTransactionCreator.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_algorand_client_transaction_sender.AlgorandClientTransactionSender.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_algorand_client.AlgorandClient.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_amount.AlgoAmount.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_arc56.Arc56Method.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_client.AppClient.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_client.ApplicationClient.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_deployer.AppDeployer.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_factory.AppFactory.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_manager.AppManager.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_asset_manager.AssetManager.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_async_event_emitter.AsyncEventEmitter.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_client_manager.ClientManager.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_composer.TransactionComposer.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_config.UpdatableConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_dispenser_client.TestNetDispenserApiClient.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_kmd_account_manager.KmdAccountManager.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_logic_error.LogicError.md │ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_app.OnSchemaBreak.md │ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_app.OnUpdate.md │ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_indexer.AccountStatus.md │ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_indexer.ApplicationOnComplete.md │ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_indexer.SignatureType.md │ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_lifecycle_events.EventType.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_account_manager.EnsureFundedResult.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_account.AccountConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_account.TransactionSignerAccount.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_algorand_client_interface.AlgorandClientInterface.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.Arc56Contract.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.Event.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.Method.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.ProgramSourceInfo.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.StorageKey.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.StorageMap.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.StructField.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCallABIArgs.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCallCoreParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCompilationParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCompilationResult.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientDeployCallInterfaceParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientDeployCoreParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientDeployParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppSourceMaps.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.FundAppAccountParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.ResolveAppById.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.ResolveAppByIdBase.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.SourceMapExport.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_deployer.AppLookup.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_deployer.AppMetadata.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_factory.AppFactoryParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_manager.AppInformation.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_manager.BoxReference.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_manager.BoxValueRequestParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_manager.BoxValuesRequestParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.AppSources.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.AppSpec.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.CallConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.DeclaredSchemaValueSpec.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.Hint.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.ReservedSchemaValueSpec.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.Schema.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.SchemaSpec.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.StateSchemaSpec.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.Struct.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppCallParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppCallTransactionResultOfType.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppCompilationResult.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppDeploymentParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppDeployMetadata.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppLookup.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppMetadata.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppReference.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppState.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppStorageSchema.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.BoxName.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.BoxReference.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.BoxValueRequestParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.BoxValuesRequestParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.CompiledTeal.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.CoreAppCallArgs.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.CreateAppParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.RawAppCallArgs.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.TealTemplateParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.UpdateAppParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset_manager.AssetInformation.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset_manager.BulkAssetOptInOutResult.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset.AssetBulkOptInOutParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset.AssetOptInParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset.AssetOptOutParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset.CreateAssetParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_client_manager.AlgoSdkClients.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_client_manager.TypedAppClient.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_client_manager.TypedAppFactory.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_composer.BuiltTransactions.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_config.Config.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_debugging.AVMTracesEventData.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_debugging.TealSourceDebugEventData.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_debugging.TealSourcesDebugEventData.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_dispenser_client.DispenserFundResponse.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_dispenser_client.DispenserLimitResponse.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_dispenser_client.TestNetDispenserApiClientParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_indexer.LookupAssetHoldingsOptions.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_logic_error.LogicErrorDetails.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_network_client.AlgoClientConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_network_client.AlgoConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_network_client.NetworkDetails.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.AlgoKitLogCaptureFixture.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.AlgorandFixture.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.AlgorandFixtureConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.AlgorandTestAutomationContext.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.GetTestAccountParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.LogSnapshotConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.AtomicTransactionComposerToSend.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.ConfirmedTransactionResult.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.ConfirmedTransactionResults.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.SendAtomicTransactionComposerResults.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.SendParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.SendTransactionParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.SendTransactionResult.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.SendTransactionResults.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.TransactionGroupToSend.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.TransactionToSign.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transfer.AlgoRekeyParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transfer.AlgoTransferParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transfer.EnsureFundedParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transfer.EnsureFundedReturnType.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transfer.TransferAssetParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:index.indexer.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:index.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:testing.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_account_manager_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_account_manager.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_account.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algo_http_client_with_retry.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_asset_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_interface.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_transaction_creator.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_transaction_sender.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_transfer_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_amount_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_amount.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_arc56.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_client_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_client.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_deployer.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_factory_and_client_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_factory.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_manager.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_asset_manager.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_asset.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_async_event_emitter_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_async_event_emitter.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_client_manager_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_client_manager.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_composer.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_config.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_debugging.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_dispenser_client_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_dispenser_client.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_expand.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_indexer.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_kmd_account_manager.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_lifecycle_events.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_logging.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_logic_error.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_network_client.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_testing.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_transaction.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_transfer.md │ │ │ │ │ ├── algokit:utils:typescript:code:README.md │ │ │ │ │ ├── algokit:utils:typescript:README.md │ │ │ │ │ ├── algokit:utils:typescript:v7-migration.md │ │ │ │ │ ├── algokit:utils:typescript:v8-migration.md │ │ │ │ │ ├── ARCs:ARC-template.md │ │ │ │ │ ├── ARCs:assets:arc-0012:README.md │ │ │ │ │ ├── ARCs:assets:arc-0034:TemplateForm.md │ │ │ │ │ ├── ARCs:assets:arc-0062:README.md │ │ │ │ │ ├── ARCs:pages:nfts.md │ │ │ │ │ ├── ARCs:pages:wallets.md │ │ │ │ │ ├── ARCs:README.md │ │ │ │ │ ├── ARCs:specs:arc-0000.md │ │ │ │ │ ├── ARCs:specs:arc-0001.md │ │ │ │ │ ├── ARCs:specs:arc-0002.md │ │ │ │ │ ├── ARCs:specs:arc-0003.md │ │ │ │ │ ├── ARCs:specs:arc-0004.md │ │ │ │ │ ├── ARCs:specs:arc-0005.md │ │ │ │ │ ├── ARCs:specs:arc-0006.md │ │ │ │ │ ├── ARCs:specs:arc-0007.md │ │ │ │ │ ├── ARCs:specs:arc-0008.md │ │ │ │ │ ├── ARCs:specs:arc-0009.md │ │ │ │ │ ├── ARCs:specs:arc-0010.md │ │ │ │ │ ├── ARCs:specs:arc-0011.md │ │ │ │ │ ├── ARCs:specs:arc-0012.md │ │ │ │ │ ├── ARCs:specs:arc-0015.md │ │ │ │ │ ├── ARCs:specs:arc-0016.md │ │ │ │ │ ├── ARCs:specs:arc-0018.md │ │ │ │ │ ├── ARCs:specs:arc-0019.md │ │ │ │ │ ├── ARCs:specs:arc-0020.md │ │ │ │ │ ├── ARCs:specs:arc-0021.md │ │ │ │ │ ├── ARCs:specs:arc-0022.md │ │ │ │ │ ├── ARCs:specs:arc-0023.md │ │ │ │ │ ├── ARCs:specs:arc-0025.md │ │ │ │ │ ├── ARCs:specs:arc-0026.md │ │ │ │ │ ├── ARCs:specs:arc-0028.md │ │ │ │ │ ├── ARCs:specs:arc-0032.md │ │ │ │ │ ├── ARCs:specs:arc-0033.md │ │ │ │ │ ├── ARCs:specs:arc-0034.md │ │ │ │ │ ├── ARCs:specs:arc-0035.md │ │ │ │ │ ├── ARCs:specs:arc-0036.md │ │ │ │ │ ├── ARCs:specs:arc-0042.md │ │ │ │ │ ├── ARCs:specs:arc-0047.md │ │ │ │ │ ├── ARCs:specs:arc-0048.md │ │ │ │ │ ├── ARCs:specs:arc-0049.md │ │ │ │ │ ├── ARCs:specs:arc-0054.md │ │ │ │ │ ├── ARCs:specs:arc-0055.md │ │ │ │ │ ├── ARCs:specs:arc-0056.md │ │ │ │ │ ├── ARCs:specs:arc-0059.md │ │ │ │ │ ├── ARCs:specs:arc-0062.md │ │ │ │ │ ├── ARCs:specs:arc-0065.md │ │ │ │ │ ├── ARCs:specs:arc-0069.md │ │ │ │ │ ├── ARCs:specs:arc-0072.md │ │ │ │ │ ├── ARCs:specs:arc-0073.md │ │ │ │ │ ├── ARCs:specs:arc-0074.md │ │ │ │ │ ├── ARCs:specs:arc-0076.md │ │ │ │ │ ├── ARCs:specs:arc-0078.md │ │ │ │ │ ├── ARCs:specs:arc-0079.md │ │ │ │ │ ├── ARCs:specs:arc-0200.md │ │ │ │ │ ├── clis_index.md │ │ │ │ │ ├── developer:docs:about.md │ │ │ │ │ ├── developer:docs:clis:algokey:algokey.md │ │ │ │ │ ├── developer:docs:clis:algokey:generate.md │ │ │ │ │ ├── developer:docs:clis:algokey:import.md │ │ │ │ │ ├── developer:docs:clis:algokey:multisig:append-auth-addr.md │ │ │ │ │ ├── developer:docs:clis:algokey:multisig:multisig.md │ │ │ │ │ ├── developer:docs:clis:algokey:part:info.md │ │ │ │ │ ├── developer:docs:clis:algokey:part:part.md │ │ │ │ │ ├── developer:docs:clis:algokey:part:reparent.md │ │ │ │ │ ├── developer:docs:clis:algokey:sign.md │ │ │ │ │ ├── developer:docs:clis:conduit:conduit.md │ │ │ │ │ ├── developer:docs:clis:conduit:init.md │ │ │ │ │ ├── developer:docs:clis:conduit:list:exporters.md │ │ │ │ │ ├── developer:docs:clis:conduit:list:importers.md │ │ │ │ │ ├── developer:docs:clis:conduit:list:list.md │ │ │ │ │ ├── developer:docs:clis:conduit:list:processors.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:diagcfg.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:metric:disable.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:metric:enable.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:metric:metric.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:metric:status.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:disable.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:enable.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:endpoint.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:name.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:status.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:telemetry.md │ │ │ │ │ ├── developer:docs:clis:goal:node:restart.md │ │ │ │ │ ├── developer:docs:clis:goal:node:start.md │ │ │ │ │ ├── developer:docs:clis:goal:node:status.md │ │ │ │ │ ├── developer:docs:clis:goal:node:stop.md │ │ │ │ │ ├── developer:docs:clis:goal:node:wait.md │ │ │ │ │ ├── developer:docs:clis:goal:protocols.md │ │ │ │ │ ├── developer:docs:clis:goal:report.md │ │ │ │ │ ├── developer:docs:clis:goal:version.md │ │ │ │ │ ├── developer:docs:clis:goal:wallet:list.md │ │ │ │ │ ├── developer:docs:clis:goal:wallet:new.md │ │ │ │ │ ├── developer:docs:clis:goal:wallet:wallet.md │ │ │ │ │ ├── developer:docs:clis:indexer:api-config.md │ │ │ │ │ ├── developer:docs:clis:indexer:daemon.md │ │ │ │ │ ├── developer:docs:clis:indexer:indexer.md │ │ │ │ │ ├── developer:docs:clis:indexer:util:util.md │ │ │ │ │ ├── developer:docs:clis:indexer:util:validator.md │ │ │ │ │ ├── developer:docs:clis:kmd.md │ │ │ │ │ ├── developer:docs:clis:tealdbg:debug.md │ │ │ │ │ ├── developer:docs:clis:tealdbg:remote.md │ │ │ │ │ ├── developer:docs:clis:tealdbg:tealdbg.md │ │ │ │ │ ├── developer:docs:details:accounts:create.md │ │ │ │ │ ├── developer:docs:details:accounts:index.md │ │ │ │ │ ├── developer:docs:details:accounts:rekey.md │ │ │ │ │ ├── developer:docs:details:algorand_consensus.md │ │ │ │ │ ├── developer:docs:details:algorand-networks:betanet.md │ │ │ │ │ ├── developer:docs:details:algorand-networks:index.md │ │ │ │ │ ├── developer:docs:details:algorand-networks:mainnet.md │ │ │ │ │ ├── developer:docs:details:algorand-networks:testnet.md │ │ │ │ │ ├── developer:docs:details:asa.md │ │ │ │ │ ├── developer:docs:details:atc.md │ │ │ │ │ ├── developer:docs:details:atomic_transfers.md │ │ │ │ │ ├── developer:docs:details:conduit.md │ │ │ │ │ ├── developer:docs:details:crust.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:index.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:guidelines.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:index.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:jsonspec.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:index.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v1.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v10.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v2.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v3.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v4.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v5.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v6.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v7.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v8.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v9.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:specification.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:ABI:index.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:apps:create.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:apps:index.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:apps:innertx.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:apps:state.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:apps:txs.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:debugging.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:frontend:apps.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:frontend:smartsigs.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:guidelines.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:index.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:smartsigs:index.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:smartsigs:modes.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:smartsigs:walkthrough.md │ │ │ │ │ ├── developer:docs:details:dapps:writing-contracts:beaker.md │ │ │ │ │ ├── developer:docs:details:dapps:writing-contracts:pyteal.md │ │ │ │ │ ├── developer:docs:details:dapps:writing-contracts:python.md │ │ │ │ │ ├── developer:docs:details:encoding.md │ │ │ │ │ ├── developer:docs:details:ethereum_to_algorand.md │ │ │ │ │ ├── developer:docs:details:index.md │ │ │ │ │ ├── developer:docs:details:indexer.md │ │ │ │ │ ├── developer:docs:details:parameter_tables.md │ │ │ │ │ ├── developer:docs:details:stateproofs:index.md │ │ │ │ │ ├── developer:docs:details:stateproofs:light_client.md │ │ │ │ │ ├── developer:docs:details:technical_faq.md │ │ │ │ │ ├── developer:docs:details:transactions:index.md │ │ │ │ │ ├── developer:docs:details:transactions:offline_transactions.md │ │ │ │ │ ├── developer:docs:details:transactions:payment_prompts.md │ │ │ │ │ ├── developer:docs:details:transactions:signatures.md │ │ │ │ │ ├── developer:docs:details:transactions:transactions.md │ │ │ │ │ ├── developer:docs:details:useful_resources.md │ │ │ │ │ ├── developer:docs:get-started:algokit.md │ │ │ │ │ ├── developer:docs:get-started:basics:what_is_blockchain.md │ │ │ │ │ ├── developer:docs:get-started:basics:whats_a_dapp.md │ │ │ │ │ ├── developer:docs:get-started:basics:where_to_start.md │ │ │ │ │ ├── developer:docs:get-started:basics:why_algorand.md │ │ │ │ │ ├── developer:docs:get-started:tokenization:ft.md │ │ │ │ │ ├── developer:docs:get-started:tokenization:nft.md │ │ │ │ │ ├── developer:docs:index.md │ │ │ │ │ ├── developer:docs:rest-apis:algod.md │ │ │ │ │ ├── developer:docs:rest-apis:indexer.md │ │ │ │ │ ├── developer:docs:rest-apis:kmd.md │ │ │ │ │ ├── developer:docs:rest-apis:restendpoints.md │ │ │ │ │ ├── developer:docs:run-a-node:operations:catchup.md │ │ │ │ │ ├── developer:docs:run-a-node:operations:switch_networks.md │ │ │ │ │ ├── developer:docs:run-a-node:participate:generate_keys.md │ │ │ │ │ ├── developer:docs:run-a-node:participate:index.md │ │ │ │ │ ├── developer:docs:run-a-node:participate:offline.md │ │ │ │ │ ├── developer:docs:run-a-node:participate:online.md │ │ │ │ │ ├── developer:docs:run-a-node:participate:renew.md │ │ │ │ │ ├── developer:docs:run-a-node:reference:artifacts.md │ │ │ │ │ ├── developer:docs:run-a-node:reference:config.md │ │ │ │ │ ├── developer:docs:run-a-node:reference:relay.md │ │ │ │ │ ├── developer:docs:run-a-node:reference:telemetry-config.md │ │ │ │ │ ├── developer:docs:run-a-node:setup:indexer.md │ │ │ │ │ ├── developer:docs:run-a-node:setup:install.md │ │ │ │ │ ├── developer:docs:run-a-node:setup:node-troubleshooting.md │ │ │ │ │ ├── developer:docs:run-a-node:setup:types.md │ │ │ │ │ ├── developer:docs:sdks:go:index.md │ │ │ │ │ ├── developer:docs:sdks:index.md │ │ │ │ │ ├── developer:docs:sdks:java:index.md │ │ │ │ │ ├── developer:docs:sdks:javascript:index.md │ │ │ │ │ ├── developer:docs:sdks:python:index.md │ │ │ │ │ ├── developer:python:code:example:accounts.md │ │ │ │ │ ├── developer:python:code:example:arc4_types.md │ │ │ │ │ ├── developer:python:code:example:assets.md │ │ │ │ │ ├── developer:python:code:example:box_storage.md │ │ │ │ │ ├── developer:python:code:example:control_flow.md │ │ │ │ │ ├── developer:python:code:example:crypto:merkle_tree.md │ │ │ │ │ ├── developer:python:code:example:defi:amm.md │ │ │ │ │ ├── developer:python:code:example:defi:auction.md │ │ │ │ │ ├── developer:python:code:example:defi:htlc_logicsig.md │ │ │ │ │ ├── developer:python:code:example:defi:marketplace.md │ │ │ │ │ ├── developer:python:code:example:events:arc28_events.md │ │ │ │ │ ├── developer:python:code:example:global_storage.md │ │ │ │ │ ├── developer:python:code:example:governance:simple_voting.md │ │ │ │ │ ├── developer:python:code:example:hello_world.md │ │ │ │ │ ├── developer:python:code:example:inner_transactions.md │ │ │ │ │ ├── developer:python:code:example:local_storage.md │ │ │ │ │ ├── developer:python:code:example:nft:proof_of_attendance.md │ │ │ │ │ ├── developer:python:code:example:privacy:zk_whitelist.md │ │ │ │ │ ├── developer:python:code:example:scratch_storage.md │ │ │ │ │ ├── developer:python:code:example:self_payment.md │ │ │ │ │ ├── developer:python:code:example:struct_in_box.md │ │ │ │ │ ├── developer:python:code:example:subsidize_app_call.md │ │ │ │ │ ├── developer:python:code:example:transactions.md │ │ │ │ │ ├── developer:python:code:example:utility:calculator.md │ │ │ │ │ ├── devportal-code-examples:projects:python-contract-examples:README.md │ │ │ │ │ ├── devportal-code-examples:README.md │ │ │ │ │ ├── docs:.walletconnect:index.md │ │ │ │ │ ├── docs:.walletconnect:walletconnect-schema.md │ │ │ │ │ ├── docs:README.md │ │ │ │ │ ├── docs:scripts:example_tracker:example_list.md │ │ │ │ │ ├── docs:scripts:README.md │ │ │ │ │ ├── index.md │ │ │ │ │ ├── liquid_auth_index.md │ │ │ │ │ ├── liquid-auth:ARCHITECTURE.md │ │ │ │ │ ├── liquid-auth:decisions:1-Service-Authentication.md │ │ │ │ │ ├── liquid-auth:decisions:2-Bidirectional-Communication.md │ │ │ │ │ ├── liquid-auth:decisions:3-Peer-to-Peer-Signaling.md │ │ │ │ │ ├── liquid-auth:decisions:4-Fido-Extension.md │ │ │ │ │ ├── liquid-auth:decisions:README.md │ │ │ │ │ ├── liquid-auth:docs:architecture.md │ │ │ │ │ ├── liquid-auth:docs:clients:android:provider-service:authenticate.md │ │ │ │ │ ├── liquid-auth:docs:clients:android:provider-service:register.md │ │ │ │ │ ├── liquid-auth:docs:clients:browser:authentication.md │ │ │ │ │ ├── liquid-auth:docs:clients:browser:example.md │ │ │ │ │ ├── liquid-auth:docs:introduction.md │ │ │ │ │ ├── liquid-auth:docs:README.md │ │ │ │ │ ├── liquid-auth:docs:server:environment-variables.md │ │ │ │ │ ├── liquid-auth:docs:server:integrations.md │ │ │ │ │ ├── liquid-auth:docs:server:introduction.md │ │ │ │ │ ├── liquid-auth:docs:server:running-locally.md │ │ │ │ │ ├── liquid-auth:README.md │ │ │ │ │ ├── liquid-auth:SEQUENCE.md │ │ │ │ │ ├── liquid-auth:services:liquid-auth-api-js:src:assertion:assertion.controller.post.request.md │ │ │ │ │ ├── liquid-auth:services:liquid-auth-api-js:src:assertion:assertion.controller.post.response.md │ │ │ │ │ ├── liquid-auth:services:liquid-auth-api-js:src:attestation:attestation.controller.post.request.md │ │ │ │ │ ├── liquid-auth:services:liquid-auth-api-js:src:auth:auth.controller.get.user.md │ │ │ │ │ ├── liquid-auth:sites:express-dapp:README.md │ │ │ │ │ ├── liquid-auth:VISION.md │ │ │ │ │ ├── puya_index.md │ │ │ │ │ ├── puya:docs:algopy_testing:index.md │ │ │ │ │ ├── puya:docs:api-algopy.arc4.md │ │ │ │ │ ├── puya:docs:api-algopy.gtxn.md │ │ │ │ │ ├── puya:docs:api-algopy.itxn.md │ │ │ │ │ ├── puya:docs:api-algopy.md │ │ │ │ │ ├── puya:docs:api-algopy.op.md │ │ │ │ │ ├── puya:docs:api.md │ │ │ │ │ ├── puya:docs:compiler.md │ │ │ │ │ ├── puya:docs:index.md │ │ │ │ │ ├── puya:docs:language-guide.md │ │ │ │ │ ├── puya:docs:lg-arc28.md │ │ │ │ │ ├── puya:docs:lg-arc4.md │ │ │ │ │ ├── puya:docs:lg-builtins.md │ │ │ │ │ ├── puya:docs:lg-calling-apps.md │ │ │ │ │ ├── puya:docs:lg-compile.md │ │ │ │ │ ├── puya:docs:lg-control.md │ │ │ │ │ ├── puya:docs:lg-errors.md │ │ │ │ │ ├── puya:docs:lg-logs.md │ │ │ │ │ ├── puya:docs:lg-modules.md │ │ │ │ │ ├── puya:docs:lg-opcode-budget.md │ │ │ │ │ ├── puya:docs:lg-ops.md │ │ │ │ │ ├── puya:docs:lg-storage.md │ │ │ │ │ ├── puya:docs:lg-structure.md │ │ │ │ │ ├── puya:docs:lg-transactions.md │ │ │ │ │ ├── puya:docs:lg-types.md │ │ │ │ │ ├── puya:docs:lg-unsupported-python-features.md │ │ │ │ │ ├── puya:docs:principles.md │ │ │ │ │ ├── puya:examples:auction:README.md │ │ │ │ │ ├── puya:python:testing:docs:algopy.md │ │ │ │ │ ├── puya:python:testing:docs:api.md │ │ │ │ │ ├── puya:python:testing:docs:coverage.md │ │ │ │ │ ├── puya:python:testing:docs:examples.md │ │ │ │ │ ├── puya:python:testing:docs:faq.md │ │ │ │ │ ├── puya:python:testing:docs:index.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:arc4-types.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:avm-types.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:concepts.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:contract-testing.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:index.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:opcodes.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:signature-testing.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:state-management.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:subroutines.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:transactions.md │ │ │ │ │ ├── puya:python:testing:examples:README.md │ │ │ │ │ ├── puya:python:testing:README.md │ │ │ │ │ ├── puya:README.md │ │ │ │ │ ├── puya:src:puya:ARCHITECTURE.md │ │ │ │ │ ├── puya:src:puyapy:_typeshed:README.md │ │ │ │ │ ├── puya:src:puyapy:_vendor:mypy:typeshed:stdlib:_typeshed:README.md │ │ │ │ │ ├── puya:src:puyapy:awst_build:README.md │ │ │ │ │ ├── puya:stubs:README.md │ │ │ │ │ ├── puya:tests:test_expected_output:README.md │ │ │ │ │ ├── puya:typescript:docs:architecture-decisions:2024-05-21_primitive-bytes-and-strings.md │ │ │ │ │ ├── puya:typescript:docs:architecture-decisions:2024-05-21_primitive-integer-types.md │ │ │ │ │ ├── puya:typescript:docs:README.md │ │ │ │ │ ├── puya:typescript:packages:algo-ts:readme.md │ │ │ │ │ ├── puya:typescript:README.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIAddressType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIArrayDynamicType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIArrayStaticType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIBoolType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIByteType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIContract.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIInterface.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIMethod.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIStringType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABITupleType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIUfixedType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIUintType.md │ │ │ │ │ ├── SDKs:javascript:classes:Algodv2.md │ │ │ │ │ ├── SDKs:javascript:classes:AtomicTransactionComposer.md │ │ │ │ │ ├── SDKs:javascript:classes:DryrunResult.md │ │ │ │ │ ├── SDKs:javascript:classes:Indexer.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Account.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AccountParticipation.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AccountResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AccountsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AccountStateDelta.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Application.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationLocalState.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationLocalStatesResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationLogData.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationLogsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationParams.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationStateSchema.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Asset.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetBalancesResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetHolding.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetHoldingsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetParams.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Block.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.BlockRewards.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.BlockUpgradeState.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.BlockUpgradeVote.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Box.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.BoxDescriptor.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.BoxesResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ErrorResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.EvalDelta.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.EvalDeltaKeyValue.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.HashFactory.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.HealthCheck.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.IndexerStateProofMessage.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.MerkleArrayProof.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.MiniAssetHolding.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ParticipationUpdates.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofFields.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofParticipant.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofReveal.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofSignature.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofSigSlot.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofTracking.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofVerifier.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateSchema.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TealKeyValue.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TealValue.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Transaction.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionApplication.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionAssetConfig.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionAssetFreeze.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionAssetTransfer.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionKeyreg.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionPayment.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionSignature.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionSignatureLogicsig.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionSignatureMultisig.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionSignatureMultisigSubsignature.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionStateProof.md │ │ │ │ │ ├── SDKs:javascript:classes:Kmd.md │ │ │ │ │ ├── SDKs:javascript:classes:LogicSig.md │ │ │ │ │ ├── SDKs:javascript:classes:LogicSigAccount.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.Account.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountApplicationResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountAssetHolding.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountAssetResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountAssetsInformationResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountParticipation.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountStateDelta.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AppCallLogs.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.Application.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationInitialStates.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationKVStorage.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationLocalReference.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationLocalState.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationParams.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationStateOperation.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationStateSchema.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.Asset.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AssetHolding.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AssetHoldingReference.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AssetParams.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AvmKeyValue.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AvmValue.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BlockHashResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BlockLogsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BlockResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BlockTxidsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.Box.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BoxDescriptor.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BoxesResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BoxReference.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BuildVersion.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.CompileResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DisassembleResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DryrunRequest.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DryrunResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DryrunSource.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DryrunState.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DryrunTxnResult.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ErrorResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.EvalDelta.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.EvalDeltaKeyValue.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.GetBlockTimeStampOffsetResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.GetSyncRoundResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.KvDelta.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.LedgerStateDeltaForTransactionGroup.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.LightBlockHeaderProof.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.NodeStatusResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.PendingTransactionResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.PendingTransactionsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.PostTransactionsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ScratchChange.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateInitialStates.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateRequest.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateRequestTransactionGroup.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateTraceConfig.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateTransactionGroupResult.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateTransactionResult.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateUnnamedResourcesAccessed.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulationEvalOverrides.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulationOpcodeTraceUnit.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulationTransactionExecTrace.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.StateProof.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.StateProofMessage.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SupplyResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.TealKeyValue.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.TealValue.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.TransactionGroupLedgerStateDeltasForRoundResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.TransactionParametersResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.TransactionProofResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.Version.md │ │ │ │ │ ├── SDKs:javascript:classes:SourceMap.md │ │ │ │ │ ├── SDKs:javascript:classes:Transaction.md │ │ │ │ │ ├── SDKs:javascript:enums:ABIReferenceType.md │ │ │ │ │ ├── SDKs:javascript:enums:ABITransactionType.md │ │ │ │ │ ├── SDKs:javascript:enums:AtomicTransactionComposerStatus.md │ │ │ │ │ ├── SDKs:javascript:enums:IntDecoding.md │ │ │ │ │ ├── SDKs:javascript:enums:OnApplicationComplete.md │ │ │ │ │ ├── SDKs:javascript:enums:TransactionType.md │ │ │ │ │ ├── SDKs:javascript:examples:README.md │ │ │ │ │ ├── SDKs:javascript:FAQ.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIContractNetworkInfo.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIContractNetworks.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIContractParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIInterfaceParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIMethodArgParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIMethodParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIMethodReturnParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIResult.md │ │ │ │ │ ├── SDKs:javascript:interfaces:Account.md │ │ │ │ │ ├── SDKs:javascript:interfaces:Address.md │ │ │ │ │ ├── SDKs:javascript:interfaces:AlgodTokenHeader.md │ │ │ │ │ ├── SDKs:javascript:interfaces:BaseHTTPClient.md │ │ │ │ │ ├── SDKs:javascript:interfaces:BaseHTTPClientError.md │ │ │ │ │ ├── SDKs:javascript:interfaces:BaseHTTPClientResponse.md │ │ │ │ │ ├── SDKs:javascript:interfaces:BoxReference.md │ │ │ │ │ ├── SDKs:javascript:interfaces:CustomTokenHeader.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedAssetParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedBoxReference.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedGlobalStateSchema.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedLocalStateSchema.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedLogicSig.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedLogicSigAccount.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedMultisig.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedSignedTransaction.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedSubsig.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedTransaction.md │ │ │ │ │ ├── SDKs:javascript:interfaces:IndexerTokenHeader.md │ │ │ │ │ ├── SDKs:javascript:interfaces:KMDTokenHeader.md │ │ │ │ │ ├── SDKs:javascript:interfaces:MultisigMetadata.md │ │ │ │ │ ├── SDKs:javascript:interfaces:SignedTransaction.md │ │ │ │ │ ├── SDKs:javascript:interfaces:SuggestedParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:TransactionParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:TransactionWithSigner.md │ │ │ │ │ ├── SDKs:javascript:modules:indexerModels.md │ │ │ │ │ ├── SDKs:javascript:modules:modelsv2.md │ │ │ │ │ ├── SDKs:javascript:modules.md │ │ │ │ │ ├── SDKs:javascript:README.md │ │ │ │ │ ├── SDKs:python:algosdk:v2client:harness:README.md │ │ │ │ │ ├── SDKs:python:examples:README.md │ │ │ │ │ ├── SDKs:python:README.md │ │ │ │ │ ├── tealscript:examples_amm_README.md │ │ │ │ │ ├── tealscript:examples_auction_README.md │ │ │ │ │ ├── tealscript:examples_big_box_README.md │ │ │ │ │ ├── tealscript:examples_itxns_README.md │ │ │ │ │ ├── tealscript:examples_lsig_with_app_README.md │ │ │ │ │ ├── tealscript:examples_reti_README.md │ │ │ │ │ ├── tealscript:FEATURES.md │ │ │ │ │ ├── tealscript:guides_atomic_txn.md │ │ │ │ │ ├── tealscript:guides_features.md │ │ │ │ │ ├── tealscript:guides_getting_started.md │ │ │ │ │ ├── tealscript:guides_inner_transactions.md │ │ │ │ │ ├── tealscript:guides_lifecycle.md │ │ │ │ │ ├── tealscript:guides_math.md │ │ │ │ │ ├── tealscript:guides_methods.md │ │ │ │ │ ├── tealscript:guides_multiple_contracts.md │ │ │ │ │ ├── tealscript:guides_pyteal.md │ │ │ │ │ ├── tealscript:guides_storage.md │ │ │ │ │ ├── tealscript:guides_Supported Types_arrays.md │ │ │ │ │ ├── tealscript:guides_Supported Types_numbers.md │ │ │ │ │ ├── TEALScript:README.md │ │ │ │ │ ├── tealscript:tests_test_package_README.md │ │ │ │ │ ├── tealscript:tutorials_Hello World_0001-intro.md │ │ │ │ │ ├── tealscript:tutorials_Hello World_0002-init.md │ │ │ │ │ ├── tealscript:tutorials_Hello World_0003-contract.md │ │ │ │ │ ├── tealscript:tutorials_Hello World_0004-artifacts.md │ │ │ │ │ ├── tealscript:tutorials_Hello World_0005-hello.md │ │ │ │ │ └── tealscript:tutorials_Hello World_0006-test.md │ │ │ │ └── taxonomy-categories │ │ │ │ ├── algokit-utils.json │ │ │ │ ├── algokit.json │ │ │ │ ├── arcs.json │ │ │ │ ├── clis.json │ │ │ │ ├── details.json │ │ │ │ ├── developers.json │ │ │ │ ├── liquid-auth.json │ │ │ │ ├── nodes.json │ │ │ │ ├── puya.json │ │ │ │ ├── python.json │ │ │ │ ├── sdks.json │ │ │ │ └── tealscript.json │ │ │ └── wallet │ │ │ └── index.ts │ │ ├── tools │ │ │ ├── accountManager.ts │ │ │ ├── algodManager.ts │ │ │ ├── apiManager │ │ │ │ ├── algod │ │ │ │ │ ├── account.ts │ │ │ │ │ ├── application.ts │ │ │ │ │ ├── asset.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── transaction.ts │ │ │ │ ├── example │ │ │ │ │ ├── get-balance.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── indexer │ │ │ │ │ ├── account.ts │ │ │ │ │ ├── application.ts │ │ │ │ │ ├── asset.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── transaction.ts │ │ │ │ ├── nfd │ │ │ │ │ └── index.ts │ │ │ │ ├── tinyman │ │ │ │ │ ├── analytics.ts │ │ │ │ │ ├── bootstrap.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── liquidity.ts │ │ │ │ │ ├── opt_in.ts │ │ │ │ │ ├── pool.ts │ │ │ │ │ ├── remove_liquidity.ts │ │ │ │ │ └── swap.ts │ │ │ │ ├── ultrade │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── market.ts │ │ │ │ │ ├── system.ts │ │ │ │ │ └── wallet.ts │ │ │ │ └── vestige │ │ │ │ ├── assets.ts │ │ │ │ ├── balances.ts │ │ │ │ ├── index.ts │ │ │ │ ├── networks.ts │ │ │ │ ├── notes.ts │ │ │ │ ├── pools.ts │ │ │ │ ├── protocols.ts │ │ │ │ ├── swaps.ts │ │ │ │ └── vaults.ts │ │ │ ├── arc26Manager.ts │ │ │ ├── index.ts │ │ │ ├── knowledgeManager.ts │ │ │ ├── transactionManager │ │ │ │ ├── accountTransactions.ts │ │ │ │ ├── appTransactions │ │ │ │ │ ├── callTxn.ts │ │ │ │ │ ├── clearTxn.ts │ │ │ │ │ ├── closeOutTxn.ts │ │ │ │ │ ├── createTxn.ts │ │ │ │ │ ├── deleteTxn.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── optInTxn.ts │ │ │ │ │ ├── test │ │ │ │ │ │ ├── counter_approval.teal │ │ │ │ │ │ ├── counter_clear.teal │ │ │ │ │ │ ├── storage_test_approval_v2.teal │ │ │ │ │ │ ├── storage_test_approval.teal │ │ │ │ │ │ └── storage_test_clear.teal │ │ │ │ │ ├── types.ts │ │ │ │ │ └── updateTxn.ts │ │ │ │ ├── assetTransactions.ts │ │ │ │ ├── generalTransaction.ts │ │ │ │ └── index.ts │ │ │ └── utilityManager.ts │ │ ├── types.ts │ │ └── utils │ │ └── responseProcessor.ts │ ├── tests │ │ ├── resources │ │ │ ├── algod │ │ │ │ ├── account.test.ts │ │ │ │ ├── application.test.ts │ │ │ │ ├── asset.test.ts │ │ │ │ └── transaction.test.ts │ │ │ └── indexer │ │ │ ├── account.test.ts │ │ │ ├── application.test.ts │ │ │ ├── asset.test.ts │ │ │ └── transaction.test.ts │ │ └── tools │ │ ├── accountManager.test.ts │ │ ├── algodManager.test.ts │ │ ├── apiManager │ │ │ └── example │ │ │ └── get-balance.test.ts │ │ ├── transactionManager │ │ │ ├── accountTransactionManager.test.ts │ │ │ ├── appTransactionManager.test.ts │ │ │ ├── assetTransactionManager.test.ts │ │ │ ├── generalTransactionManager.test.ts │ │ │ └── transactionManager.test.ts │ │ └── utilityManager.test.ts │ └── tsconfig.json ├── README.md ├── rename_files.sh └── tsconfig.json ``` # Files -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/puya:docs:lg-modules.md: -------------------------------------------------------------------------------- ```markdown 1 | # Module level constructs 2 | 3 | You can write compile-time constant code at a module level and then use them in place of [Python built-in literal types](./lg-types.md#python-built-in-types). 4 | 5 | For a full example of what syntax is currently possible see the [test case example](https://github.com/algorandfoundation/puya/blob/main/test_cases/module_consts/contract.py). 6 | 7 | ## Module constants 8 | 9 | Module constants are compile-time constant, and can contain `bool`, `int`, `str` and `bytes`. 10 | 11 | You can use fstrings and other compile-time constant values in module constants too. 12 | 13 | For example: 14 | 15 | ```python 16 | from algopy import UInt64, subroutine 17 | 18 | SCALE = 100000 19 | SCALED_PI = 314159 20 | 21 | @subroutine 22 | def circle_area(radius: UInt64) -> UInt64: 23 | scaled_result = SCALED_PI * radius**2 24 | result = scaled_result // SCALE 25 | return result 26 | 27 | @subroutine 28 | def circle_area_100() -> UInt64: 29 | return circle_area(UInt64(100)) 30 | ``` 31 | 32 | ## If statements 33 | 34 | You can use if statements with compile-time constants in module constants. 35 | 36 | For example: 37 | 38 | ```python 39 | FOO = 42 40 | 41 | if FOO > 12: 42 | BAR = 123 43 | else: 44 | BAR = 456 45 | ``` 46 | 47 | ## Integer math 48 | 49 | Module constants can also be defined using common integer expressions. 50 | 51 | For example: 52 | 53 | ```python 54 | SEVEN = 7 55 | TEN = 7 + 3 56 | FORTY_NINE = 7 ** 2 57 | ``` 58 | 59 | ## Strings 60 | 61 | Module `str` constants can use f-string formatting and other common string expressions. 62 | 63 | For example: 64 | 65 | ```python 66 | NAME = "There" 67 | MY_FORMATTED_STRING = f"Hello {NAME}" # Hello There 68 | PADDED = f"{123:05}" # "00123" 69 | DUPLICATED = "5" * 3 # "555" 70 | ``` 71 | 72 | ## Type aliases 73 | 74 | You can create type aliases to make your contract terser and more expressive. 75 | 76 | For example: 77 | 78 | ```python 79 | import typing 80 | 81 | from algopy import arc4 82 | VoteIndexArray: typing.TypeAlias = arc4.DynamicArray[arc4.UInt8] 83 | 84 | Row: typing.TypeAlias = arc4.StaticArray[arc4.UInt8, typing.Literal[3]] 85 | Game: typing.TypeAlias = arc4.StaticArray[Row, typing.Literal[3]] 86 | Move: typing.TypeAlias = tuple[arc4.UInt64, arc4.UInt64] 87 | 88 | Bytes32: typing.TypeAlias = arc4.StaticArray[arc4.Byte, typing.Literal[32]] 89 | Proof: typing.TypeAlias = arc4.DynamicArray[Bytes32] 90 | ``` 91 | ``` -------------------------------------------------------------------------------- /packages/client/src/env.ts: -------------------------------------------------------------------------------- ```typescript 1 | import * as dotenv from 'dotenv'; 2 | import { resolve } from 'path'; 3 | 4 | // Try to load .env file from client package root 5 | dotenv.config({ path: resolve(__dirname, '../.env') }); 6 | 7 | interface EnvConfig { 8 | algorand_network: string; 9 | algorand_algod: string; 10 | algorand_algod_api: string; 11 | algorand_indexer: string; 12 | algorand_indexer_api: string; 13 | algorand_algod_port: string | null; 14 | algorand_indexer_port: string | null; 15 | algorand_token: string | null; 16 | goplausible_account: string; 17 | algorand_agent_wallet: string; 18 | } 19 | 20 | // Default values if .env is not present 21 | const defaultConfig: EnvConfig = { 22 | algorand_network: 'testnet', 23 | algorand_algod_api: 'https://testnet-api.algonode.cloud/v2', 24 | algorand_algod: 'https://testnet-api.algonode.cloud', 25 | algorand_indexer_api: 'https://testnet-idx.algonode.cloud/v2', 26 | algorand_indexer: 'https://testnet-idx.algonode.cloud', 27 | algorand_algod_port: null, 28 | algorand_indexer_port: null, 29 | algorand_token: null, 30 | goplausible_account: '', 31 | algorand_agent_wallet: '', 32 | }; 33 | 34 | // Get environment variable with fallback to default 35 | const getEnvVar = (key: keyof EnvConfig): string | null => { 36 | const envKey = `ALGORAND_${key.toUpperCase()}`; 37 | if (key === 'goplausible_account') { 38 | return process.env.GOPLAUSIBLE_ACCOUNT || defaultConfig[key]; 39 | } 40 | return process.env[envKey] || defaultConfig[key]; 41 | }; 42 | 43 | // Build config object using environment variables or defaults 44 | export const env: EnvConfig = { 45 | algorand_network: getEnvVar('algorand_network') as string, 46 | algorand_algod: getEnvVar('algorand_algod') as string, 47 | algorand_algod_api: getEnvVar('algorand_algod_api') as string, 48 | algorand_indexer: getEnvVar('algorand_indexer') as string, 49 | algorand_indexer_api: getEnvVar('algorand_indexer_api') as string, 50 | algorand_algod_port: getEnvVar('algorand_algod_port'), 51 | algorand_indexer_port: getEnvVar('algorand_indexer_port'), 52 | algorand_token: getEnvVar('algorand_token'), 53 | goplausible_account: getEnvVar('goplausible_account') as string, 54 | algorand_agent_wallet: getEnvVar('algorand_agent_wallet') as string, 55 | }; 56 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/liquid-auth:docs:server:environment-variables.md: -------------------------------------------------------------------------------- ```markdown 1 | --- 2 | title: "Server: Configuration" 3 | sidebar: 4 | order: 2 5 | label: 'Configuration' 6 | --- 7 | 8 | All configurations are set using environment variables. 9 | Creating a `.env.docker` file is recommended to store all the environment variables required to run the server. 10 | 11 | The following sections describe the environment variables required to run the server. 12 | 13 | ## Environment Variables 14 | 15 | Attestations and Assertions require a valid `RP_NAME`, `HOSTNAME`, and `ORIGIN` to be set. 16 | `ORIGIN` and `HOSTNAME` must be set to a valid domain secured with HTTPS. 17 | 18 | ```sh 19 | RP_NAME=<SERVICE_NAME> # Friendly name of the service 20 | HOSTNAME=<DOMAIN_NAME> # Hostname of the service 21 | ORIGIN=https://<DOMAIN_NAME> # Origin of the service 22 | ``` 23 | 24 | If you are using a custom Android client, make sure to update the `SHA256` fingerprint. 25 | 26 | ```bash 27 | ANDROID_SHA256HASH=<00:00:...> # SHA256 fingerprint of the Android client 28 | ANDROID_PACKAGENAME=<com.example.my-wallet> # Package name of the Android client 29 | ``` 30 | 31 | Configuration for MongoDB 32 | 33 | ```bash 34 | DB_HOST=<MONGO_DB_HOST:PORT> # Hostname of the MongoDB instance 35 | DB_USERNAME=<MONGO_DB_USERNAME> # Username for the MongoDB instance 36 | DB_PASSWORD=<MONGO_DB_PASSWORD> # Password for the MongoDB instance 37 | DB_NAME=<MONGO_DB_NAME> # Database name 38 | DB_ATLAS=false # Set to true if using MongoDB Atlas 39 | ``` 40 | 41 | Configuration for Redis 42 | 43 | ```bash 44 | REDIS_HOST=<REDIS_HOST> # Hostname of the Redis instance 45 | REDIS_PORT=<REDIS_PORT> # Port for the Redis instance 46 | REDIS_USERNAME=<REDIS_USERNAME> # Username for the Redis instance 47 | REDIS_PASSWORD= # Password for the Redis instance 48 | ``` 49 | 50 | ## Full Example 51 | 52 | ```bash 53 | # .env.docker 54 | 55 | # Database 56 | DB_HOST=mongo:27017 57 | DB_USERNAME=algorand 58 | DB_PASSWORD=algorand 59 | DB_NAME=fido 60 | DB_ATLAS=false 61 | 62 | # Events 63 | REDIS_HOST=redis 64 | REDIS_PORT=6379 65 | REDIS_USERNAME=default 66 | REDIS_PASSWORD= 67 | 68 | # FIDO2 69 | RP_NAME="Auth Server" 70 | HOSTNAME=my-static-domain.ngrok-free.app 71 | ORIGIN=https://my-static-domain.ngrok-free.app 72 | 73 | ANDROID_SHA256HASH=47:CC:4E:EE:B9:50:59:A5:8B:E0:19:45:CA:0A:6D:59:16:F9:A9:C2:96:75:F8:F3:64:86:92:46:2B:7D:5D:5C 74 | ANDROID_PACKAGENAME=foundation.algorand.demo 75 | ``` 76 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/tealscript:guides_multiple_contracts.md: -------------------------------------------------------------------------------- ```markdown 1 | --- 2 | title: Multiple Contracts 3 | --- 4 | 5 | ## Inheritance 6 | 7 | You can inherit another Contract or LogicSig in order to inherit all of the class properties (state, events, scratch, etc.) and methods. 8 | 9 | ```ts 10 | export class BaseContract extends Contract { 11 | favoriteNumber = GlobalStateKey<uint64>() 12 | 13 | private setNumber(n: uint64): void { 14 | this.favoriteNumber.value = n 15 | } 16 | } 17 | 18 | export class AnotherContract extends BaseContract { 19 | checkNumber(): void { 20 | this.setNumber(42) 21 | assert(this.favoriteNumber.value === 42) 22 | } 23 | } 24 | ``` 25 | 26 | ## Importing and Inheritance 27 | 28 | TEALScript supports importing any `Contract`, `LogicSig`, const, or type from another TEALScript file. 29 | 30 | ```ts 31 | // base_contract.algo.ts 32 | export class BaseContract extends Contract { 33 | favoriteNumber = GlobalStateKey<uint64>() 34 | 35 | private setNumber(n: uint64): void { 36 | this.favoriteNumber.value = n 37 | } 38 | } 39 | ``` 40 | 41 | ```ts 42 | // another_contract.algo.ts 43 | import { BaseContract } from './base_contract.algo.ts' 44 | 45 | export class AnotherContract extends BaseContract { 46 | checkNumber(): void { 47 | this.setNumber(42) 48 | assert(this.favoriteNumber.value === 42) 49 | } 50 | } 51 | ``` 52 | 53 | ## App Programs and Schema 54 | 55 | To access the program or schema of another TEALScript app you can use the `.approvalProgram()`. `.clearProgram()`, or `.schema` static methods. 56 | 57 | ```ts 58 | class TheApp extends Contract { 59 | favoriteNumber = GlobalStateKey<uint64>(); 60 | 61 | createApplication(): void { 62 | this.favoriteNumber.value = 42; 63 | } 64 | } 65 | 66 | class TheFactory extends Contract { 67 | createTheApp(): void { 68 | sendMethodCall<[], void>({ 69 | name: 'createApplication', 70 | approvalProgram: TheApp.approvalProgram(), 71 | clearStateProgram: TheApp.clearProgram(), 72 | globalNumUint: TheApp.schema.global.numUint, 73 | }); 74 | } 75 | } 76 | ``` 77 | 78 | ## Logic Signature Address and Program 79 | 80 | ```ts 81 | class TheLsig extends LogicSig { 82 | logic(): void { 83 | assert(this.txn.fee === 0); 84 | } 85 | } 86 | class TheApp extends Contract { 87 | createApplication(): void { 88 | assert(TheLsig.address().balance >= 10_000_000); 89 | log(TheLsig.program()); 90 | } 91 | } 92 | ``` ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/developer:docs:clis:tealdbg:debug.md: -------------------------------------------------------------------------------- ```markdown 1 | title: tealdbg debug 2 | --- 3 | ## tealdbg debug 4 | 5 | 6 | 7 | Debug TEAL program(s) off-chain 8 | 9 | 10 | 11 | ### Synopsis 12 | 13 | 14 | 15 | Debug TEAL program(s) in controlled environment using a local TEAL evaluator 16 | 17 | 18 | 19 | ``` 20 | 21 | tealdbg debug [program.tok [program.teal ...]] [flags] 22 | 23 | ``` 24 | 25 | 26 | 27 | ### Options 28 | 29 | 30 | 31 | ``` 32 | 33 | -a, --app-id uint Application ID for stateful TEAL if not set in transaction(s) (default 1380011588) 34 | 35 | -b, --balance string Balance records to evaluate stateful TEAL on in form of json or msgpack file 36 | 37 | -d, --dryrun-req string Program(s) and state(s) in dryrun REST request format 38 | 39 | -g, --group-index int Transaction index in a txn group 40 | 41 | -h, --help help for debug 42 | 43 | --indexer-token string API token for indexer to fetch Balance records from to evaluate stateful TEAL 44 | 45 | -i, --indexer-url string URL for indexer to fetch Balance records from to evaluate stateful TEAL 46 | 47 | -l, --latest-timestamp int Latest confirmed timestamp to evaluate stateful TEAL on 48 | 49 | -q, --listen-dr-req Listen for upcoming debugging dryrun request objects instead of taking program(s) from command line 50 | 51 | -m, --mode string TEAL evaluation mode: auto, signature, application (default "auto") 52 | 53 | --painless Automatically create balance record for all accounts and applications 54 | 55 | -p, --proto string Consensus protocol version for TEAL evaluation 56 | 57 | -r, --round uint Ledger round number to evaluate stateful TEAL on 58 | 59 | -t, --txn string Transaction(s) to evaluate TEAL on in form of json or msgpack file 60 | 61 | ``` 62 | 63 | 64 | 65 | ### Options inherited from parent commands 66 | 67 | 68 | 69 | ``` 70 | 71 | -f, --frontend string Frontend to use: cdt, web (default "cdt") 72 | 73 | --listen string Network interface to listen on (default "127.0.0.1") 74 | 75 | --no-source-map Do not generate source maps 76 | 77 | --remote-debugging-port int Port to listen on (default 9392) 78 | 79 | -v, --verbose Verbose output 80 | 81 | ``` 82 | 83 | 84 | 85 | ### SEE ALSO 86 | 87 | 88 | 89 | * [tealdbg](../../tealdbg/tealdbg/) - Algorand TEAL Debugger 90 | 91 | 92 | 93 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/developer:docs:details:dapps:avm:teal:jsonspec.md: -------------------------------------------------------------------------------- ```markdown 1 | <!-- markdownlint-disable MD024 --> 2 | 3 | # JSON Spec 4 | 5 | A valid JSON text must follow the grammar defined in [RFC7159](https://www.rfc-editor.org/rfc/rfc7159.html) 6 | 7 | Additional specifications used by **json_ref** that are extensions to the RFC7159 grammar are listed below. 8 | 9 | ## File Encoding 10 | 11 | - Only utf-8 encoded are accepted 12 | - The byte order mark (BOM), "\uFEFF", is not allowed at the beginning of a JSON text 13 | - Raw non-unicode characters not accepted 14 | 15 | ### Invalid JSON text 16 | 17 | ```json 18 | \uFEFF{"key0": 1} 19 | ``` 20 | 21 | ```json 22 | {"key0": "\uFF"} 23 | ``` 24 | 25 | ### Object 26 | 27 | #### duplicate key 28 | 29 | Duplicate keys at the top level result in an error; however, duplicate keys nested at a lower level are ignored. 30 | 31 | #### Invalid JSON text 32 | 33 | ```json 34 | {"key0": 1,"key0": 2} 35 | ``` 36 | 37 | #### Acceptable JSON text 38 | 39 | ```json 40 | {"key0": 1,"key1": {"key2":2,"key2":"10"}} 41 | ``` 42 | 43 | ### Numbers 44 | 45 | #### Range 46 | 47 | - Only integers between 0 and 2^64-1 are accepted 48 | - All other values result in an error 49 | 50 | #### Special Values 51 | 52 | - `null`, `true`, `false` are the only accepted special values. 53 | - other special values such as `NaN`,`+Inf`,`-Inf` are not accepted 54 | 55 | #### Exponential Notation 56 | 57 | Exponential notation is not accepted 58 | 59 | #### Invalid JSON text 60 | 61 | ```json 62 | {"key": 1.2E-6} 63 | ``` 64 | 65 | ```json 66 | {"key": 0.2E+8} 67 | ``` 68 | 69 | ##### Hex values 70 | 71 | Hex values are not accepted 72 | 73 | #### Invalid JSON text 74 | 75 | ```json 76 | {"key0": 0x1} 77 | ``` 78 | 79 | ```json 80 | {"key0": 0xFF} 81 | ``` 82 | 83 | ### Trailing Commas 84 | 85 | Trailing commas are not accepted. 86 | 87 | #### Invalid JSON text 88 | 89 | ```json 90 | {"key": 4160,,,} 91 | ``` 92 | 93 | ```json 94 | {"key": "algo",,,} 95 | ``` 96 | 97 | ### Comment 98 | 99 | Comment blocks are not accepted. 100 | 101 | #### Invalid JSON text 102 | 103 | ```json 104 | {"key0": /*comment*/"algo"} 105 | ``` 106 | 107 | ```json 108 | {"key0": [1,/*comment*/,3]} 109 | ``` 110 | 111 | ### White Spaces 112 | 113 | - space, tab(`\t`), new line(`\n`) and carriage return(`\r`) are allowed 114 | - form feed(`\f`) is not allowed 115 | 116 | ### Escaped Characters 117 | 118 | - control chars (U+0000 - U+001F) must be escaped 119 | - surrogate pairs are accepted 120 | - escaped invalid characters are replaced by replacement character (U+FFFD) 121 | 122 | #### Example 123 | 124 | a valid surrogate pair 125 | 126 | ```json 127 | {"key0": "\uD801\udc37"} 128 | ``` 129 | 130 | replaced by U+FFFD 131 | 132 | ```json 133 | {"key0": "\uD800\uD800n"} 134 | ``` 135 | ``` -------------------------------------------------------------------------------- /packages/server/src/tools/apiManager/vestige/networks.ts: -------------------------------------------------------------------------------- ```typescript 1 | import { Tool, ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js'; 2 | import { ResponseProcessor } from '../../../utils/responseProcessor.js'; 3 | import { env } from '../../../env.js'; 4 | 5 | export const networkTools: Tool[] = [ 6 | { 7 | name: 'api_vestige_view_networks', 8 | description: 'Get all networks', 9 | inputSchema: { 10 | type: 'object', 11 | properties: {} 12 | } 13 | }, 14 | { 15 | name: 'api_vestige_view_network_by_id', 16 | description: 'Get network by id', 17 | inputSchema: { 18 | type: 'object', 19 | properties: { 20 | network_id: { 21 | type: 'integer', 22 | description: 'Network ID' 23 | } 24 | }, 25 | required: ['network_id'] 26 | } 27 | } 28 | ]; 29 | 30 | export const handleNetworkTools = ResponseProcessor.wrapResourceHandler(async function handleNetworkTools(args: any): Promise<any> { 31 | const name = args.name; 32 | const baseUrl = env.vestige_api_url; 33 | let endpoint = ''; 34 | 35 | switch (name) { 36 | case 'api_vestige_view_networks': 37 | endpoint = '/networks'; 38 | break; 39 | case 'api_vestige_view_network_by_id': 40 | endpoint = `/networks/${args.network_id}`; 41 | break; 42 | default: 43 | throw new McpError( 44 | ErrorCode.MethodNotFound, 45 | `Unknown tool: ${name}` 46 | ); 47 | } 48 | 49 | try { 50 | // Add query parameters if they exist 51 | const queryParams = new URLSearchParams(); 52 | for (const [key, value] of Object.entries(args)) { 53 | if (value !== undefined && key !== 'network_id') { 54 | queryParams.append(key, String(value)); 55 | } 56 | } 57 | const url = `${baseUrl}${endpoint}${queryParams.toString() ? `?${queryParams.toString()}` : ''}`; 58 | 59 | const response = await fetch(url); 60 | if (!response.ok) { 61 | throw new McpError( 62 | ErrorCode.InternalError, 63 | `Vestige API error: ${response.status} ${response.statusText}` 64 | ); 65 | } 66 | const data = await response.json(); 67 | return data; 68 | } catch (error) { 69 | if (error instanceof McpError) { 70 | throw error; 71 | } 72 | throw new McpError( 73 | ErrorCode.InternalError, 74 | `Failed to fetch network data: ${error instanceof Error ? error.message : String(error)}` 75 | ); 76 | } 77 | }); 78 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:cli:features:tasks:ipfs.md: -------------------------------------------------------------------------------- ```markdown 1 | # AlgoKit Task IPFS 2 | 3 | The AlgoKit IPFS feature allows you to interact with the IPFS [InterPlanetary File System](https://ipfs.tech/) using the [Piñata provider](https://www.pinata.cloud/). This feature supports logging in and out of the Piñata provider, and uploading files to IPFS. 4 | 5 | ## Usage 6 | 7 | Available commands and possible usage as follows: 8 | 9 | ```bash 10 | $ ~ algokit task ipfs 11 | Usage: algokit task ipfs [OPTIONS] 12 | 13 | Upload files to IPFS using Pinata provider. 14 | 15 | Options: 16 | -f, --file PATH Path to the file to upload. [required] 17 | -n, --name TEXT Human readable name for this upload, for use in file listings. 18 | -h, --help Show this message and exit. 19 | ``` 20 | 21 | ## Options 22 | 23 | - `--file, -f PATH`: Specifies the path to the file to upload. This option is required. 24 | - `--name, -n TEXT`: Specifies a human readable name for this upload, for use in file listings. 25 | 26 | ## Prerequisites 27 | 28 | Before you can use this feature, you need to ensure that you have signed up for a Piñata account and have a JWT. You can sign up for a Piñata account by reading [quickstart](https://docs.pinata.cloud/docs/getting-started). 29 | 30 | ## Login 31 | 32 | Please note, you need to login to the Piñata provider before you can upload files. You can do this using the `login` command: 33 | 34 | ```bash 35 | $ algokit task ipfs login 36 | ``` 37 | 38 | This will prompt you to enter your Piñata JWT. Once you are logged in, you can upload files to IPFS. 39 | 40 | ## Upload 41 | 42 | To upload a file to IPFS, you can use the `ipfs` command as follows: 43 | 44 | ```bash 45 | $ algokit task ipfs --file {PATH_TO_YOUR_FILE} 46 | ``` 47 | 48 | This will upload the file to IPFS using the Piñata provider and return the CID (Content Identifier) of the uploaded file. 49 | 50 | ## Logout 51 | 52 | If you want to logout from the Piñata provider, you can use the `logout` command: 53 | 54 | ```bash 55 | $ algokit task ipfs logout 56 | ``` 57 | 58 | This will remove your Piñata JWT from the keyring. 59 | 60 | ## File Size Limit 61 | 62 | Please note, the maximum file size that can be uploaded is 100MB. If you try to upload a file larger than this, you will receive an error. 63 | 64 | ## Further Reading 65 | 66 | For in-depth details, visit the [ipfs section](../../cli/index.md#ipfs) in the AlgoKit CLI reference documentation. 67 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/developers-python.txt: -------------------------------------------------------------------------------- ``` 1 | developer:python:code:example:arc4_types.md 2 | developer:python:code:example:box_storage.md 3 | developer:python:code:example:control_flow.md 4 | developer:python:code:example:global_storage.md 5 | developer:python:code:example:hello_world.md 6 | developer:python:code:example:inner_transactions.md 7 | developer:python:code:example:local_storage.md 8 | developer:python:code:example:scratch_storage.md 9 | developer:python:code:example:self_payment.md 10 | developer:python:code:example:struct_in_box.md 11 | developer:python:code:example:subsidize_app_call.md 12 | developer:python:code:example:defi:amm.md 13 | developer:python:code:example:defi:auction.md 14 | developer:python:code:example:defi:marketplace.md 15 | developer:python:code:example:defi:htlc_logicsig.md 16 | developer:python:code:example:events:arc28_events.md 17 | developer:python:code:example:utility:calculator.md 18 | developer:python:code:example:crypto:merkle_tree.md 19 | developer:python:code:example:nft:proof_of_attendance.md 20 | developer:python:code:example:governance:simple_voting.md 21 | developer:python:code:example:privacy:zk_whitelist.md 22 | developer:python:code:example:accounts.md 23 | developer:python:code:example:assets.md 24 | developer:python:code:example:transactions.md 25 | puya:python:testing:docs:examples.md 26 | puya:python:testing:docs:api.md 27 | puya:python:testing:docs:algopy.md 28 | puya:python:testing:docs:faq.md 29 | puya:python:testing:docs:index.md 30 | puya:python:testing:docs:coverage.md 31 | puya:python:testing:docs:testing-guide:concepts.md 32 | puya:python:testing:docs:testing-guide:signature-testing.md 33 | puya:python:testing:docs:testing-guide:state-management.md 34 | puya:python:testing:docs:testing-guide:opcodes.md 35 | puya:python:testing:docs:testing-guide:index.md 36 | puya:python:testing:docs:testing-guide:contract-testing.md 37 | puya:python:testing:docs:testing-guide:avm-types.md 38 | puya:python:testing:docs:testing-guide:transactions.md 39 | puya:python:testing:docs:testing-guide:arc4-types.md 40 | puya:python:testing:docs:testing-guide:subroutines.md 41 | puya:python:testing:README.md 42 | puya:python:testing:examples:README.md 43 | puya:src:puyapy:_vendor:mypy:typeshed:stdlib:_typeshed:README.md 44 | puya:src:puyapy:awst_build:README.md 45 | puya:src:puyapy:_typeshed:README.md 46 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:code:interfaces:types_transaction.TransactionGroupToSend.md: -------------------------------------------------------------------------------- ```markdown 1 | [@algorandfoundation/algokit-utils](../README.md) / [types/transaction](../modules/types_transaction.md) / TransactionGroupToSend 2 | 3 | # Interface: TransactionGroupToSend 4 | 5 | [types/transaction](../modules/types_transaction.md).TransactionGroupToSend 6 | 7 | A group of transactions to send together as an atomic group 8 | https://developer.algorand.org/docs/get-details/atomic_transfers/ 9 | 10 | ## Table of contents 11 | 12 | ### Properties 13 | 14 | - [sendParams](types_transaction.TransactionGroupToSend.md#sendparams) 15 | - [signer](types_transaction.TransactionGroupToSend.md#signer) 16 | - [transactions](types_transaction.TransactionGroupToSend.md#transactions) 17 | 18 | ## Properties 19 | 20 | ### sendParams 21 | 22 | • `Optional` **sendParams**: `Omit`\<[`SendTransactionParams`](types_transaction.SendTransactionParams.md), ``"fee"`` \| ``"maxFee"`` \| ``"skipSending"`` \| ``"atc"``\> 23 | 24 | Any parameters to control the semantics of the send to the network 25 | 26 | #### Defined in 27 | 28 | [src/types/transaction.ts:123](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L123) 29 | 30 | ___ 31 | 32 | ### signer 33 | 34 | • `Optional` **signer**: [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom) 35 | 36 | Optional signer to pass in, required if at least one transaction provided is just the transaction, ignored otherwise 37 | 38 | #### Defined in 39 | 40 | [src/types/transaction.ts:130](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L130) 41 | 42 | ___ 43 | 44 | ### transactions 45 | 46 | • **transactions**: (`Transaction` \| [`TransactionToSign`](types_transaction.TransactionToSign.md) \| `Promise`\<[`SendTransactionResult`](types_transaction.SendTransactionResult.md)\>)[] 47 | 48 | The list of transactions to send, which can either be a raw transaction (in which case `signer` is required), 49 | the async result of an AlgoKit utils method that returns a `SendTransactionResult` (saves unwrapping the promise, be sure to pass `skipSending: true`, `signer` is also required) 50 | or the transaction with its signer (`signer` is ignored) 51 | 52 | #### Defined in 53 | 54 | [src/types/transaction.ts:128](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L128) 55 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:cli:features:project:list.md: -------------------------------------------------------------------------------- ```markdown 1 | # AlgoKit Project List Command 2 | 3 | The `algokit project list` command is designed to enumerate all projects within an AlgoKit workspace. This command is particularly useful in workspace environments where multiple projects are managed under a single root directory. It provides a straightforward way to view all the projects that are part of the workspace. 4 | 5 | ## Usage 6 | 7 | To use the `list` command, execute the following **anywhere** within an AlgoKit workspace: 8 | 9 | ```sh 10 | $ algokit project list [OPTIONS] [WORKSPACE_PATH] 11 | ``` 12 | 13 | - `WORKSPACE_PATH` is an optional argument that specifies the path to the workspace. If not provided, the current directory (`.`) is used as the default workspace path. 14 | 15 | ## How It Works 16 | 17 | 1. **Workspace Verification**: Initially, the command checks if the specified directory (or the current directory by default) is an AlgoKit workspace. This is determined by looking for a `.algokit.toml` configuration file and verifying if the `project.type` is set to `workspace`. 18 | 19 | 2. **Project Enumeration**: If the directory is confirmed as a workspace, the command proceeds to enumerate all projects within the workspace. This is achieved by scanning the workspace's subdirectories for `.algokit.toml` files and extracting project names. 20 | 21 | 3. **Output**: The names of all discovered projects are printed to the console. If the `-v` or `--verbose` option is used, additional details about each project are displayed. 22 | 23 | ## Example Output 24 | 25 | ```sh 26 | workspace: {path_to_workspace} 📁 27 | - myapp ({path_to_myapp}) 📜 28 | - myproject-app ({path_to_myproject_app}) 🖥️ 29 | ``` 30 | 31 | ## Error Handling 32 | 33 | If the command is executed in a directory that is not recognized as an AlgoKit workspace, it will issue a warning: 34 | 35 | ```sh 36 | WARNING: No AlgoKit workspace found. Check [project.type] definition at .algokit.toml 37 | ``` 38 | 39 | This message indicates that either the current directory does not contain a `.algokit.toml` file or the `project.type` within the file is not set to `workspace`. 40 | 41 | ## Further Reading 42 | 43 | To learn more about the `algokit project list` command, please refer to [list](../../cli/index.md#list) in the AlgoKit CLI reference documentation. 44 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/tealscript:guides_methods.md: -------------------------------------------------------------------------------- ```markdown 1 | --- 2 | title: Defining Methods 3 | --- 4 | 5 | ## Typing 6 | All method arguments MUST have a type and all methods MUST have an explicit return type. 7 | 8 | ### Examples 9 | 10 | #### Valid 11 | ```ts 12 | add(a: uint64, b: uint64): uint64 { 13 | return a + b 14 | } 15 | ``` 16 | 17 | #### Invalid 18 | 19 | ```ts 20 | add(a: uint64, b: uint64) { // missing return type 21 | return a + b 22 | } 23 | ``` 24 | 25 | ```ts 26 | add(a, b: uint64): uint64 { // missing argument type 27 | return a + b 28 | } 29 | ``` 30 | 31 | ## ABI Methods 32 | All methods defined in your contract will be routed as ABI methods, unless they have the `private` keyword. This means they will be exposed in the ABI and Application Spec generated by TEALScript. 33 | 34 | ## Private Subroutines 35 | A method defined with the `private` keyword will only be accessible within the contract itself via a subroutine. This means other contracts or end-users cannot call this method directly and it will not be exposed in the ABI or Application Spec. 36 | 37 | ### Example 38 | In this example, there is a single public ABI method `doMath` which will then call the `add` or `subtract` subroutines depending on the method given. `doMath` is the only method that is externally callable. 39 | 40 | ```ts 41 | class Calculator extends Contract { 42 | /** 43 | * Calculates the sum of two numbers 44 | * 45 | * @param a 46 | * @param b 47 | * @returns The sum of a and b 48 | */ 49 | private getSum(a: uint64, b: uint64): uint64 { 50 | return a + b; 51 | } 52 | 53 | /** 54 | * Calculates the difference between two numbers 55 | * 56 | * @param a 57 | * @param b 58 | * @returns The difference between a and b. 59 | */ 60 | private getDifference(a: uint64, b: uint64): uint64 { 61 | return a >= b ? a - b : b - a; 62 | } 63 | 64 | /** 65 | * A method that takes two numbers and does either addition or subtraction 66 | * 67 | * @param a The first number 68 | * @param b The second number 69 | * @param operation The operation to perform. Can be either 'sum' or 'difference' 70 | * 71 | * @returns The result of the operation 72 | */ 73 | doMath(a: uint64, b: uint64, operation: string): uint64 { 74 | let result: uint64; 75 | 76 | if (operation === 'sum') { 77 | result = this.getSum(a, b); 78 | } else if (operation === 'difference') { 79 | result = this.getDifference(a, b); 80 | } else throw Error('Invalid operation'); 81 | 82 | return result; 83 | } 84 | } 85 | ``` ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:ABIType.md: -------------------------------------------------------------------------------- ```markdown 1 | [algosdk](../README.md) / [Exports](../modules.md) / ABIType 2 | 3 | # Class: ABIType 4 | 5 | ## Hierarchy 6 | 7 | - **`ABIType`** 8 | 9 | ↳ [`ABIUintType`](ABIUintType.md) 10 | 11 | ↳ [`ABIUfixedType`](ABIUfixedType.md) 12 | 13 | ↳ [`ABIAddressType`](ABIAddressType.md) 14 | 15 | ↳ [`ABIBoolType`](ABIBoolType.md) 16 | 17 | ↳ [`ABIByteType`](ABIByteType.md) 18 | 19 | ↳ [`ABIStringType`](ABIStringType.md) 20 | 21 | ↳ [`ABIArrayStaticType`](ABIArrayStaticType.md) 22 | 23 | ↳ [`ABIArrayDynamicType`](ABIArrayDynamicType.md) 24 | 25 | ↳ [`ABITupleType`](ABITupleType.md) 26 | 27 | ## Table of contents 28 | 29 | ### Constructors 30 | 31 | - [constructor](ABIType.md#constructor) 32 | 33 | ### Methods 34 | 35 | - [byteLen](ABIType.md#bytelen) 36 | - [decode](ABIType.md#decode) 37 | - [encode](ABIType.md#encode) 38 | - [equals](ABIType.md#equals) 39 | - [isDynamic](ABIType.md#isdynamic) 40 | - [toString](ABIType.md#tostring) 41 | - [from](ABIType.md#from) 42 | 43 | ## Constructors 44 | 45 | ### constructor 46 | 47 | • **new ABIType**() 48 | 49 | ## Methods 50 | 51 | ### byteLen 52 | 53 | ▸ `Abstract` **byteLen**(): `number` 54 | 55 | #### Returns 56 | 57 | `number` 58 | 59 | #### Defined in 60 | 61 | abi/abi_type.ts:51 62 | 63 | ___ 64 | 65 | ### decode 66 | 67 | ▸ `Abstract` **decode**(`byteString`): [`ABIValue`](../modules.md#abivalue) 68 | 69 | #### Parameters 70 | 71 | | Name | Type | 72 | | :------ | :------ | 73 | | `byteString` | `Uint8Array` | 74 | 75 | #### Returns 76 | 77 | [`ABIValue`](../modules.md#abivalue) 78 | 79 | #### Defined in 80 | 81 | abi/abi_type.ts:55 82 | 83 | ___ 84 | 85 | ### encode 86 | 87 | ▸ `Abstract` **encode**(`value`): `Uint8Array` 88 | 89 | #### Parameters 90 | 91 | | Name | Type | 92 | | :------ | :------ | 93 | | `value` | [`ABIValue`](../modules.md#abivalue) | 94 | 95 | #### Returns 96 | 97 | `Uint8Array` 98 | 99 | #### Defined in 100 | 101 | abi/abi_type.ts:53 102 | 103 | ___ 104 | 105 | ### equals 106 | 107 | ▸ `Abstract` **equals**(`other`): `boolean` 108 | 109 | #### Parameters 110 | 111 | | Name | Type | 112 | | :------ | :------ | 113 | | `other` | [`ABIType`](ABIType.md) | 114 | 115 | #### Returns 116 | 117 | `boolean` 118 | 119 | #### Defined in 120 | 121 | abi/abi_type.ts:47 122 | 123 | ___ 124 | 125 | ### isDynamic 126 | 127 | ▸ `Abstract` **isDynamic**(): `boolean` 128 | 129 | #### Returns 130 | 131 | `boolean` 132 | 133 | #### Defined in 134 | 135 | abi/abi_type.ts:49 136 | 137 | ___ 138 | 139 | ### toString 140 | 141 | ▸ `Abstract` **toString**(): `string` 142 | 143 | #### Returns 144 | 145 | `string` 146 | 147 | #### Defined in 148 | 149 | abi/abi_type.ts:45 150 | 151 | ___ 152 | 153 | ### from 154 | 155 | ▸ `Static` **from**(`str`): [`ABIType`](ABIType.md) 156 | 157 | #### Parameters 158 | 159 | | Name | Type | 160 | | :------ | :------ | 161 | | `str` | `string` | 162 | 163 | #### Returns 164 | 165 | [`ABIType`](ABIType.md) 166 | 167 | #### Defined in 168 | 169 | abi/abi_type.ts:57 170 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:code:interfaces:types_app_client.AppClientCompilationResult.md: -------------------------------------------------------------------------------- ```markdown 1 | [@algorandfoundation/algokit-utils](../README.md) / [types/app-client](../modules/types_app_client.md) / AppClientCompilationResult 2 | 3 | # Interface: AppClientCompilationResult 4 | 5 | [types/app-client](../modules/types_app_client.md).AppClientCompilationResult 6 | 7 | The result of asking an `AppClient` to compile a program. 8 | 9 | Always contains the compiled bytecode, and may contain the result of compiling TEAL (including sourcemap) if it was available. 10 | 11 | ## Hierarchy 12 | 13 | - `Partial`\<[`AppCompilationResult`](types_app.AppCompilationResult.md)\> 14 | 15 | ↳ **`AppClientCompilationResult`** 16 | 17 | ## Table of contents 18 | 19 | ### Properties 20 | 21 | - [approvalProgram](types_app_client.AppClientCompilationResult.md#approvalprogram) 22 | - [clearStateProgram](types_app_client.AppClientCompilationResult.md#clearstateprogram) 23 | - [compiledApproval](types_app_client.AppClientCompilationResult.md#compiledapproval) 24 | - [compiledClear](types_app_client.AppClientCompilationResult.md#compiledclear) 25 | 26 | ## Properties 27 | 28 | ### approvalProgram 29 | 30 | • **approvalProgram**: `Uint8Array` 31 | 32 | The compiled bytecode of the approval program, ready to deploy to algod 33 | 34 | #### Defined in 35 | 36 | [src/types/app-client.ts:282](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L282) 37 | 38 | ___ 39 | 40 | ### clearStateProgram 41 | 42 | • **clearStateProgram**: `Uint8Array` 43 | 44 | The compiled bytecode of the clear state program, ready to deploy to algod 45 | 46 | #### Defined in 47 | 48 | [src/types/app-client.ts:284](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L284) 49 | 50 | ___ 51 | 52 | ### compiledApproval 53 | 54 | • `Optional` **compiledApproval**: [`CompiledTeal`](types_app.CompiledTeal.md) 55 | 56 | The result of compiling the approval program 57 | 58 | #### Inherited from 59 | 60 | Partial.compiledApproval 61 | 62 | #### Defined in 63 | 64 | [src/types/app.ts:335](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L335) 65 | 66 | ___ 67 | 68 | ### compiledClear 69 | 70 | • `Optional` **compiledClear**: [`CompiledTeal`](types_app.CompiledTeal.md) 71 | 72 | The result of compiling the clear state program 73 | 74 | #### Inherited from 75 | 76 | Partial.compiledClear 77 | 78 | #### Defined in 79 | 80 | [src/types/app.ts:337](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app.ts#L337) 81 | ``` -------------------------------------------------------------------------------- /packages/server/src/env.ts: -------------------------------------------------------------------------------- ```typescript 1 | interface EnvConfig { 2 | // Algorand Configuration 3 | algorand_network: string; 4 | algorand_algod_api: string; 5 | algorand_algod: string; 6 | algorand_indexer_api: string; 7 | algorand_indexer: string; 8 | algorand_algod_port: string; 9 | algorand_indexer_port: string; 10 | algorand_token: string; 11 | algorand_agent_wallet: string; 12 | 13 | // NFDomains Configuration 14 | nfd_api_url: string; 15 | nfd_api_key: string; 16 | 17 | // Tinyman Configuration 18 | tinyman_active: string; 19 | 20 | // Vestige Configuration 21 | vestige_active: string; 22 | vestige_api_url: string; 23 | vestige_api_key: string; 24 | 25 | // Ultrade Configuration 26 | ultrade_active: string; 27 | ultrade_api_url: string; 28 | 29 | 30 | // Pagination Configuration 31 | items_per_page: number; 32 | 33 | } 34 | 35 | export const env: EnvConfig = { 36 | // Algorand Configuration 37 | algorand_network: process.env.ALGORAND_NETWORK || 'testnet', 38 | algorand_algod_api: process.env.ALGORAND_ALGOD_API || 'https://testnet-api.algonode.cloud/v2', 39 | algorand_algod: process.env.ALGORAND_ALGOD || 'https://testnet-api.algonode.cloud', 40 | algorand_indexer_api: process.env.ALGORAND_INDEXER_API || 'https://testnet-idx.algonode.cloud/v2', 41 | algorand_indexer: process.env.ALGORAND_INDEXER || 'https://testnet-idx.algonode.cloud', 42 | algorand_algod_port: process.env.ALGORAND_ALGOD_PORT || '', 43 | algorand_indexer_port: process.env.ALGORAND_INDEXER_PORT || '', 44 | algorand_token: process.env.ALGORAND_TOKEN || '', 45 | algorand_agent_wallet: process.env.ALGORAND_AGENT_WALLET || process.env.ALGORAND_AGENT_WALLET_ACTIVE || '', 46 | 47 | // NFDomains Configuration 48 | nfd_api_url: process.env.NFD_API_URL || 'https://api.nf.domains', 49 | nfd_api_key: process.env.NFD_API_KEY || '', 50 | 51 | tinyman_active: process.env.TINYMAN_ACTIVE || 'false', 52 | // Vestige Configuration 53 | vestige_active: process.env.VESTIGE_ACTIVE || 'false', 54 | vestige_api_url: process.env.VESTIGE_API_URL || 'https://api.vestigelabs.org', 55 | vestige_api_key: process.env.VESTIGE_API_KEY || '', 56 | 57 | // Ultrade Configuration 58 | ultrade_active: process.env.ULTRADE_ACTIVE || 'false', 59 | ultrade_api_url: process.env.ULTRADE_API_URL || 'https://api.testnet.ultrade.org', 60 | 61 | 62 | // Pagination Configuration 63 | items_per_page: parseInt(process.env.ITEMS_PER_PAGE || '5', 10) 64 | }; 65 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/developer:docs:run-a-node:reference:relay.md: -------------------------------------------------------------------------------- ```markdown 1 | title: Configure node as a relay 2 | 3 | A benefit of Algorand's decentralized network implementation is that a relay is effectively the same as any other node. The distinction currently is made by configuring a node to actively listen for connections from other nodes and having itself advertised using SRV records available through DNS. 4 | 5 | It is possible to set up a relay for a personal network that does not require DNS entries. This is done using the following steps. 6 | 7 | 8 | 9 | # Install Node 10 | See this page for [node hardware requirements](../../setup/install/#hardware-requirements). 11 | Follow the [install instructions](../../run-a-node/setup/install.md) for the specific operating system that the relay will run on. 12 | 13 | # Edit the Configuration File 14 | Edit the configuration file for the node as described in the [configuration](../config) guide. Set the property `NetAddress` to `":4161"` for TestNet and to `":4160"` for MainNet. Then the file. Make sure the file is named `config.json`. 15 | 16 | Concretely, your `config.json` file should look like: 17 | 18 | ```json 19 | { 20 | "NetAddress": ":4161" 21 | } 22 | ``` 23 | 24 | for TestNet. 25 | 26 | !!! warning 27 | As a precaution, it is not recommended that relay nodes interact with accounts or participate in consensus. 28 | 29 | # Start the Node 30 | Start the node as described in the [install](../../run-a-node/setup/install.md) guide. The node will now listen for incoming traffic on port 4161 (for TestNet) or on port 4160 (for MainNet). Other nodes can now connect to this relay. 31 | 32 | # Connect a Node to Relay 33 | Any node can connect to this relay by specifying it in the `goal node start` command. 34 | 35 | ``` 36 | goal node start -p "ipaddress:4161" 37 | ``` 38 | 39 | The node can also be set up to connect to multiple relays using a `;` separated list of relays. 40 | 41 | ``` 42 | goal node start -p "ipaddress-1:4161;ipaddress-2:4161" 43 | ``` 44 | 45 | (4161 needs to be replaced by 4160 for MainNet.) 46 | 47 | !!! warning 48 | Using the above process will prevent the node from connecting to any of the Algorand networks. See the [Phonebook](../artifacts#phonebookjson) documentation for more information on how nodes connect to relays. 49 | 50 | See the [Algorand Foundation FAQ](https://www.algorand.foundation/general-faq#04-faq) for additional details about MainNet relays. 51 | 52 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/liquid-auth:decisions:3-Peer-to-Peer-Signaling.md: -------------------------------------------------------------------------------- ```markdown 1 | # Overview 2 | 3 | Communicating across platforms in a decentralized manner 4 | 5 | ## Decisions 6 | 7 | - Limit dependency on WebSockets to signaling 8 | - Allow bidirectional communication between peers 9 | - Enforce locality of device? 10 | 11 | ## Implementation 12 | 13 | A WebSocket Service should establish the SDP handshake and emit ICE candidates for WebRTC clients. 14 | 15 | This implementation should replace Wallet Connect with the following sequence 16 | ```mermaid 17 | sequenceDiagram 18 | participant Website 19 | participant Server 20 | participant Wallet 21 | Note over Website, Wallet: Link devices 22 | Website->>Server: GET Challenge Message 23 | Server->>Website: Send Challenge Message 24 | 25 | Website-->>Website: Display QR Connect Nonce 26 | Website->>Server: Subscribe to 'wss:link' 27 | Wallet->>Website: Scan QR Code 28 | Wallet->>Server: POST Nonce + Signature + Answer 29 | Server-->>Server: Validate Signature 30 | Server-->>Website: HTTPOnly Session 31 | Server->>Wallet: Ok Response + HTTPOnly Session 32 | Server->>Website: Emit to `wss:link` client 33 | Note over Website, Wallet: Passkeys/FIDO2 34 | Website-->>Website: Continue FIDO2 Flow 35 | Wallet-->>Wallet: Continue FIDO2 Flow 36 | Note over Website, Wallet: Signaling Peer Offer/Answer 37 | Website-->>Server: Subscribe to 'wss:answer-${address}' 38 | Wallet-->>Server: Subscribe to 'wss:offer-${address}' 39 | 40 | Website-->>Website: Create Peer Offer & DataChannel 41 | Website-->>Server: POST Offer 42 | Server-->>Wallet: Emit Offer 43 | 44 | Wallet-->>Wallet: Create Peer Answer with Offer & DataChannel 45 | 46 | Wallet-->>Server: POST Answer 47 | Server-->>Website: Emit Answer 48 | Website-->>Website: Set Remote SDP 49 | Website-->>Website: Discover ICE Candidates 50 | Website->>Server: Emit candidates to `wss:offer-${address}` 51 | Server->>Wallet: Emit candidates to `wss:offer-${address}` 52 | Wallet-->>Wallet: Set Candidates 53 | Wallet-->>Wallet: Discover ICE Candidates 54 | Wallet->>Server: Emit candidates to `wss:answer-${address}` 55 | Server->>Website: Emit to `wss:answer` 56 | Website->>Website: Set Candidates 57 | 58 | ``` 59 | 60 | *Note: This process may be deprecated in the future in favor of `libp2p` which allows for an agnostic discovery layer and also supports the WebRTC transport 61 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:cli:features:tasks:transfer.md: -------------------------------------------------------------------------------- ```markdown 1 | # AlgoKit Task Transfer 2 | 3 | The AlgoKit Transfer feature allows you to transfer algos and assets between two accounts. 4 | 5 | ## Usage 6 | 7 | Available commands and possible usage as follows: 8 | 9 | ```bash 10 | $ ~ algokit task transfer 11 | Usage: algokit task transfer [OPTIONS] 12 | 13 | Transfer algos or assets from one account to another. 14 | 15 | Options: 16 | -s, --sender TEXT Address or alias of the sender account [required] 17 | -r, --receiver TEXT Address or alias to an account that will receive the asset(s) [required] 18 | --asset, --id INTEGER ASA asset id to transfer 19 | -a, --amount INTEGER Amount to transfer [required] 20 | --whole-units Use whole units (Algos | ASAs) instead of smallest divisible units (for example, 21 | microAlgos). Disabled by default. 22 | -n, --network [localnet|testnet|mainnet] 23 | Network to use. Refers to `localnet` by default. 24 | -h, --help Show this message and exit. 25 | ``` 26 | 27 | > Note: If you use a wallet address for the `sender` argument, you'll be asked for the mnemonic phrase. To use a wallet alias instead, see the [wallet aliasing](wallet.md) task. For wallet aliases, the sender must have a stored `private key`, but the receiver doesn't need one. This is because the sender signs and sends the transfer transaction, while the receiver reference only needs a valid Algorand address. 28 | 29 | ## Examples 30 | 31 | ### Transfer algo between accounts on LocalNet 32 | 33 | ```bash 34 | $ ~ algokit task transfer -s {SENDER_ALIAS OR SENDER_ADDRESS} -r {RECEIVER_ALIAS OR RECEIVER_ADDRESS} -a {AMOUNT} 35 | ``` 36 | 37 | By default: 38 | 39 | - the `amount` is in microAlgos. To use whole units, use the `--whole-units` flag. 40 | - the `network` is `localnet`. 41 | 42 | ### Transfer asset between accounts on TestNet 43 | 44 | ```bash 45 | $ ~ algokit task transfer -s {SENDER_ALIAS OR SENDER_ADDRESS} -r {RECEIVER_ALIAS OR RECEIVER_ADDRESS} -a {AMOUNT} --id {ASSET_ID} --network testnet 46 | ``` 47 | 48 | By default: 49 | 50 | - the `amount` is smallest divisible unit of supplied `ASSET_ID`. To use whole units, use the `--whole-units` flag. 51 | 52 | ## Further Reading 53 | 54 | For in-depth details, visit the [transfer section](../../cli/index.md#transfer) in the AlgoKit CLI reference documentation. 55 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/tealscript:guides_math.md: -------------------------------------------------------------------------------- ```markdown 1 | --- 2 | title: Math 3 | --- 4 | 5 | ## Truncation 6 | 7 | It is important to note TEALScript only works with unsigned integers. This means that there are no fractional values or negative numbers. The AVM, and thus TEALScript, will always truncate the result of division operations. For example, `99 / 100 === 0` will be true. 8 | 9 | ## Opcode Cost 10 | 11 | Performing math operations with a integer width more than 64 bits can be up to **20x more expensive** (see table below). As such, if you find yourself running out of opcode budget, it is best to manually cast to `uint64` and then cast back when possible. 12 | 13 | ### Opcode Costs 14 | 15 | | Bit Width | Operations | Cost | 16 | | --------- | ---------- | ---- | 17 | | `<= 64` | `+` or `-` | 1 | 18 | | `<= 64` | `*` or `/` | 1 | 19 | | `> 64` | `+` or `-` | 10 | 20 | | `> 64` | `*` or `/` | 20 | 21 | 22 | ## Overflows 23 | 24 | ### Runtime 25 | 26 | During runtime, TEALscript will not perform overflow checks. This means you will only encouter an overflow panic when performing math operations and the following max values are exceeded 27 | 28 | | Bit Width | Max Value | 29 | | --------- | --------- | 30 | | `<= 64` | `2^64 - 1` | 31 | | `> 64` | `2^512 - 1` | 32 | 33 | ### Encoding 34 | 35 | Prior to encoding a number, TEALScript will ensure that the value does not exceed the respective max value. For example, it will check a `uint8` is not more than `2^8 - 1` prior to encoding it. 36 | 37 | ### Underflows 38 | 39 | Any operation that results in a value less than 0 will cause a panic in the AVM. 40 | 41 | ## Wide Ratio 42 | 43 | A common operation in contracts is to perform division to get the ratio between two numbers (ie. in a liquidty pool). If the numerator and/or divisor includes multiplication of `uint64` values, they might be larger than `uint64` (thus cause an overflow panic) even if the final result of the division would fit in a `uint64`. To handle such cases, TEALScript implements a global function called `wideRatio`. 44 | 45 | ### Example 46 | 47 | ```ts 48 | private tokensToSwap(inAmount: uint64, inSupply: uint64, outSupply: uint64): uint64 { 49 | const factor = SCALE - FEE; 50 | return wideRatio([inAmount, factor, outSupply], [inSupply * SCALE + inAmount * factor]); 51 | } 52 | ``` 53 | 54 | A full AMM example can be found [here](https://github.com/algorandfoundation/TEALScript/blob/dev/examples/amm/amm.algo.ts). ``` -------------------------------------------------------------------------------- /packages/server/src/algorand-client.ts: -------------------------------------------------------------------------------- ```typescript 1 | import algosdk from 'algosdk'; 2 | import { env } from './env.js'; 3 | 4 | // Helper function to build resource URIs using API URLs 5 | const buildAlgodUri = (path: string) => { 6 | return `${env.algorand_algod_api}${path}`; 7 | }; 8 | 9 | const buildIndexerUri = (path: string) => { 10 | return `${env.algorand_indexer_api}${path}`; 11 | }; 12 | 13 | // Resource URI templates using API URLs 14 | export const API_URIS = { 15 | // Algod resources 16 | ACCOUNT_DETAILS: buildAlgodUri('/accounts/{address}'), 17 | ASSET_HOLDINGS: buildAlgodUri('/accounts/{address}/assets'), 18 | APPLICATION_STATE: buildAlgodUri('/applications/{app-id}/state'), 19 | ASSET_INFO: buildAlgodUri('/assets/{asset-id}/info'), 20 | APPLICATION_INFO: buildAlgodUri('/applications/{app-id}'), 21 | APPLICATION_BOX: buildAlgodUri('/applications/{app-id}/box/{name}'), 22 | APPLICATION_BOXES: buildAlgodUri('/applications/{app-id}/boxes'), 23 | PENDING_TRANSACTION: buildAlgodUri('/transactions/pending/{txid}'), 24 | PENDING_TRANSACTIONS_BY_ADDRESS: buildAlgodUri('/accounts/{address}/transactions/pending'), 25 | PENDING_TRANSACTIONS: buildAlgodUri('/transactions/pending'), 26 | TRANSACTION_PARAMS: buildAlgodUri('/transactions/params'), 27 | NODE_STATUS: buildAlgodUri('/status'), 28 | NODE_STATUS_AFTER_BLOCK: buildAlgodUri('/status/wait-for-block-after/{round}'), 29 | 30 | // Indexer resources 31 | TRANSACTION_HISTORY: buildIndexerUri('/accounts/{address}/transactions'), 32 | ASSET_DETAILS: buildIndexerUri('/assets/{asset-id}'), 33 | ASSET_BALANCES: buildIndexerUri('/assets/{asset-id}/balances'), 34 | ASSET_TRANSACTIONS: buildIndexerUri('/assets/{asset-id}/transactions'), 35 | ASSET_BALANCES_BY_ID: buildIndexerUri('/assets/{asset-id}/balances/{address}'), 36 | ASSET_TRANSACTIONS_BY_ID: buildIndexerUri('/assets/{asset-id}/transactions/{txid}'), 37 | TRANSACTION_DETAILS: buildIndexerUri('/transactions/{txid}'), 38 | TRANSACTION_SEARCH: buildIndexerUri('/transactions') 39 | }; 40 | 41 | // Initialize the Algod client with base URL 42 | export const algodClient = new algosdk.Algodv2( 43 | env.algorand_token || '', 44 | env.algorand_algod, 45 | env.algorand_algod_port || '' 46 | ); 47 | 48 | // Initialize the Indexer client with base URL 49 | export const indexerClient = new algosdk.Indexer( 50 | env.algorand_token || '', 51 | env.algorand_indexer, 52 | env.algorand_indexer_port || '' 53 | ); 54 | 55 | export { indexerClient as indexer }; 56 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy-categories/developers.json: -------------------------------------------------------------------------------- ```json 1 | { 2 | "name": "Developer Documentation", 3 | "description": "Comprehensive developer documentation for Algorand blockchain", 4 | "categories": { 5 | "getting_started": { 6 | "name": "Getting Started", 7 | "description": "Basic concepts and introductory materials", 8 | "items": [ 9 | "developer:docs:get-started:basics:why_algorand.md", 10 | "developer:docs:get-started:basics:whats_a_dapp.md", 11 | "developer:docs:get-started:basics:what_is_blockchain.md", 12 | "developer:docs:get-started:basics:where_to_start.md", 13 | "developer:docs:get-started:algokit.md" 14 | ] 15 | }, 16 | "tokenization": { 17 | "name": "Tokenization", 18 | "description": "Token creation and management", 19 | "items": [ 20 | "developer:docs:get-started:tokenization:nft.md", 21 | "developer:docs:get-started:tokenization:ft.md" 22 | ] 23 | }, 24 | "sdks": { 25 | "name": "SDKs", 26 | "description": "Software Development Kits", 27 | "items": [ 28 | "developer:docs:sdks:index.md", 29 | "developer:docs:sdks:python:index.md", 30 | "developer:docs:sdks:javascript:index.md", 31 | "developer:docs:sdks:java:index.md", 32 | "developer:docs:sdks:go:index.md" 33 | ] 34 | }, 35 | "rest_apis": { 36 | "name": "REST APIs", 37 | "description": "API endpoints and usage", 38 | "items": [ 39 | "developer:docs:rest-apis:restendpoints.md", 40 | "developer:docs:rest-apis:algod.md", 41 | "developer:docs:rest-apis:indexer.md", 42 | "developer:docs:rest-apis:kmd.md" 43 | ] 44 | }, 45 | "wallet_connect": { 46 | "name": "WalletConnect", 47 | "description": "Wallet connection integration", 48 | "items": [ 49 | "docs:.walletconnect:index.md", 50 | "docs:.walletconnect:walletconnect-schema.md" 51 | ] 52 | }, 53 | "examples": { 54 | "name": "Code Examples", 55 | "description": "Example implementations and scripts", 56 | "items": [ 57 | "docs:scripts:README.md", 58 | "docs:scripts:example_tracker:example_list.md", 59 | "devportal-code-examples:projects:python-contract-examples:README.md", 60 | "devportal-code-examples:README.md" 61 | ] 62 | }, 63 | "models": { 64 | "name": "Models", 65 | "description": "Data models and structures", 66 | "items": [ 67 | "algo-models:README.md" 68 | ] 69 | } 70 | } 71 | } 72 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:code:interfaces:types_app_spec.AppSpec.md: -------------------------------------------------------------------------------- ```markdown 1 | [@algorandfoundation/algokit-utils](../README.md) / [types/app-spec](../modules/types_app_spec.md) / AppSpec 2 | 3 | # Interface: AppSpec 4 | 5 | [types/app-spec](../modules/types_app_spec.md).AppSpec 6 | 7 | An ARC-0032 Application Specification see https://github.com/algorandfoundation/ARCs/pull/150 8 | 9 | ## Table of contents 10 | 11 | ### Properties 12 | 13 | - [bare\_call\_config](types_app_spec.AppSpec.md#bare_call_config) 14 | - [contract](types_app_spec.AppSpec.md#contract) 15 | - [hints](types_app_spec.AppSpec.md#hints) 16 | - [schema](types_app_spec.AppSpec.md#schema) 17 | - [source](types_app_spec.AppSpec.md#source) 18 | - [state](types_app_spec.AppSpec.md#state) 19 | 20 | ## Properties 21 | 22 | ### bare\_call\_config 23 | 24 | • **bare\_call\_config**: [`CallConfig`](types_app_spec.CallConfig.md) 25 | 26 | The config of all BARE calls (i.e. non ABI calls with no args) 27 | 28 | #### Defined in 29 | 30 | [src/types/app-spec.ts:154](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L154) 31 | 32 | ___ 33 | 34 | ### contract 35 | 36 | • **contract**: `ABIContractParams` 37 | 38 | The ABI-0004 contract definition see https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0004.md 39 | 40 | #### Defined in 41 | 42 | [src/types/app-spec.ts:148](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L148) 43 | 44 | ___ 45 | 46 | ### hints 47 | 48 | • **hints**: [`HintSpec`](../modules/types_app_spec.md#hintspec) 49 | 50 | Method call hints 51 | 52 | #### Defined in 53 | 54 | [src/types/app-spec.ts:144](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L144) 55 | 56 | ___ 57 | 58 | ### schema 59 | 60 | • **schema**: [`SchemaSpec`](types_app_spec.SchemaSpec.md) 61 | 62 | The values that make up the local and global state 63 | 64 | #### Defined in 65 | 66 | [src/types/app-spec.ts:150](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L150) 67 | 68 | ___ 69 | 70 | ### source 71 | 72 | • **source**: [`AppSources`](types_app_spec.AppSources.md) 73 | 74 | The TEAL source 75 | 76 | #### Defined in 77 | 78 | [src/types/app-spec.ts:146](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L146) 79 | 80 | ___ 81 | 82 | ### state 83 | 84 | • **state**: [`StateSchemaSpec`](types_app_spec.StateSchemaSpec.md) 85 | 86 | The rolled-up schema allocation values for local and global state 87 | 88 | #### Defined in 89 | 90 | [src/types/app-spec.ts:152](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-spec.ts#L152) 91 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/puya:docs:lg-unsupported-python-features.md: -------------------------------------------------------------------------------- ```markdown 1 | # Unsupported Python features 2 | 3 | ## raise, try/except/finally 4 | 5 | Exception raising and exception handling constructs are not supported. 6 | 7 | Supporting user exceptions would be costly to implement in terms of op codes. 8 | 9 | Furthermore, AVM errors and exceptions are not "catch-able", they immediately terminate the 10 | program. 11 | 12 | Therefore, there is very little to no benefit of supporting exceptions and exception handling. 13 | 14 | The preferred method of raising an error that terminates is through the use of 15 | [assert statements](lg-errors.md). 16 | 17 | ## with 18 | 19 | Context managers are redundant without exception handling support. 20 | 21 | ## async 22 | 23 | The AVM is not just single threaded, but all operations are effectively "blocking", rendering 24 | asynchronous programming effectively useless. 25 | 26 | ## closures & lambdas 27 | 28 | Without the support of function pointers, or other methods of invoking an arbitrary function, 29 | it's not possible to return a function as a closure. 30 | 31 | Nested functions/lambdas as a means of repeating common operations within a given function may be 32 | supported in the future. 33 | 34 | ## global keyword 35 | 36 | Module level values are only allowed to be [constants](lg-modules.md#module-constants). No 37 | rebinding of module constants is allowed. It's not clear what the meaning here would be, since 38 | there's no real arbitrary means of storing state without associating it with a particular contract. 39 | If you do have need of such a thing, take a look at [gload_bytes](#algopy.op.gload_bytes) 40 | or [gload_uint64](#algopy.op.gload_uint64) if the contracts are within the same transaction, 41 | otherwise [AppGlobal.get_ex_bytes](#algopy.op.AppGlobal.get_ex_bytes) 42 | and [AppGlobal.get_ex_uint64](#algopy.op.AppGlobal.get_ex_uint64). 43 | 44 | ## Inheritance (outside of contract classes) 45 | 46 | Polymorphism is also impossible to support without function pointers, so data classes (such as 47 | [arc4.Struct](#algopy.arc4.Struct)) don't currently allow for inheritance. Member functions there 48 | are not supported because we're not sure yet whether it's better to not have inheritance but allow 49 | functions on data classes, or to allow inheritance and disallow member functions. 50 | 51 | Contract inheritance is a special case, since each concrete contract is compiled separately, true 52 | polymorphism isn't required as all references can be resolved at compile time. 53 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/developer:docs:run-a-node:participate:renew.md: -------------------------------------------------------------------------------- ```markdown 1 | title: Renew participation keys 2 | 3 | The process of renewing a participation key is simply creating a new participation key and registering it online before the previous key expires. 4 | 5 | You can renew a participation key anytime before it expires, and we recommend to do it at least two weeks (about 268,800 rounds) in advance so as not to risk [having an account marked as online that is not participating](./index.md#ensure-that-online-accounts-are-participating). 6 | 7 | The validity ranges of participation keys can overlap. For any account, at any time, at most one participation key is registered, namely the one included in the latest online key registration transaction for this account. 8 | 9 | 10 | # Step-by-Step 11 | 1. [Create a new participation key](./generate_keys.md) with a first voting round that is less than the last voting round of the current participation key. It should leave enough time to carry out this whole process (e.g. 40,000 rounds). 12 | 2. Once the network reaches the first voting round for the new key, [submit an online key registration transaction for the new participation key](./online.md). 13 | 3. Wait at least 320 rounds to [validate that the node is participating](./online.md#check-that-the-node-is-participating). 14 | 4. Once participation is confirmed, it is safe to [delete the old participation key](#removing-old-keys). 15 | 16 | <center>  </center> 17 | <center>*Example key rotation window* </center> 18 | 19 | !!! info 20 | `goal` supplies single commands to renew all participation keys on a node ([`goal account renewallpartkeys`](../../../clis/goal/account/renewallpartkeys)) or renew the participation key for a specific account ([`goal account renewpartkey`](../../../clis/goal/account/renewpartkey)). It is recommended that you only use these for testing purposes or for very low-stake accounts, since both of them require your private keys to be online. 21 | 22 | # Removing Old Keys 23 | 24 | When a participation key is no longer in use, you can remove it by running the following goal command with the participation ID of the key you want to remove. 25 | 26 | ```bash 27 | $ goal account deletepartkey --partkeyid IWBP2447JQIT54XWOZ7XKWOBVITS2AEIBOEZXDACX5Q6DZ4Z7VHA 28 | ``` 29 | Make sure to identify the correct key (i.e. make sure it is _not_ the currently registered key) before deleting. 30 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy-categories/nodes.json: -------------------------------------------------------------------------------- ```json 1 | { 2 | "name": "Node Management", 3 | "description": "Documentation for running and managing Algorand nodes", 4 | "path": "developer:docs:run-a-node", 5 | "subcategories": { 6 | "setup": { 7 | "name": "Setup", 8 | "description": "Node setup and installation", 9 | "path": "developer:docs:run-a-node:setup", 10 | "documents": [ 11 | {"name": "Installation", "path": "developer:docs:run-a-node:setup:install.md"}, 12 | {"name": "Indexer Setup", "path": "developer:docs:run-a-node:setup:indexer.md"}, 13 | {"name": "Node Types", "path": "developer:docs:run-a-node:setup:types.md"}, 14 | {"name": "Troubleshooting", "path": "developer:docs:run-a-node:setup:node-troubleshooting.md"} 15 | ] 16 | }, 17 | "operations": { 18 | "name": "Operations", 19 | "description": "Node operations and maintenance", 20 | "path": "developer:docs:run-a-node:operations", 21 | "documents": [ 22 | {"name": "Catchup", "path": "developer:docs:run-a-node:operations:catchup.md"}, 23 | {"name": "Switch Networks", "path": "developer:docs:run-a-node:operations:switch_networks.md"} 24 | ] 25 | }, 26 | "participate": { 27 | "name": "Participation", 28 | "description": "Node participation in consensus", 29 | "path": "developer:docs:run-a-node:participate", 30 | "documents": [ 31 | {"name": "Overview", "path": "developer:docs:run-a-node:participate:index.md"}, 32 | {"name": "Generate Keys", "path": "developer:docs:run-a-node:participate:generate_keys.md"}, 33 | {"name": "Offline", "path": "developer:docs:run-a-node:participate:offline.md"}, 34 | {"name": "Online", "path": "developer:docs:run-a-node:participate:online.md"}, 35 | {"name": "Renew", "path": "developer:docs:run-a-node:participate:renew.md"} 36 | ] 37 | }, 38 | "reference": { 39 | "name": "Reference", 40 | "description": "Reference documentation", 41 | "path": "developer:docs:run-a-node:reference", 42 | "documents": [ 43 | {"name": "Artifacts", "path": "developer:docs:run-a-node:reference:artifacts.md"}, 44 | {"name": "Configuration", "path": "developer:docs:run-a-node:reference:config.md"}, 45 | {"name": "Relay", "path": "developer:docs:run-a-node:reference:relay.md"}, 46 | {"name": "Telemetry Config", "path": "developer:docs:run-a-node:reference:telemetry-config.md"} 47 | ] 48 | } 49 | } 50 | } 51 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/developer:docs:run-a-node:operations:catchup.md: -------------------------------------------------------------------------------- ```markdown 1 | title: Catchup And status 2 | 3 | # Catchup 4 | 5 | When first starting a node it will process all blocks in the blockchain, even if it does not store all blocks locally. The node does so to verify every block in the blockchain thereby checking the validity of the chain. The process can be time-consuming but is essential when running a trusted node. 6 | 7 | With adequate [hardware and Internet connection](../../setup/install#hardware-requirements), syncing MainNet takes between 2 and 4 weeks in October 2022. 8 | 9 | If you cannot wait for catchup, there are multiple options: 10 | * [AlgoKit](/docs/get-started/algokit) allows quick setup of private network and public networks. For public networks, the node will be non-archival and use fast catchup. Sandbox should only be used for development purposes. 11 | * [Fast Catchup](../../setup/install#sync-node-network-using-fast-catchup) can be used to quickly sync a **non-archival** node, but requires trust in the entity providing the catchpoint. 12 | * Third-party snapshots such [AlgoNode.io snapshots](https://algonode.io/extras/) may be used for **archival** nodes, but requires trust in the third party. Algorand denies any responsibility if any such snapshot is used. 13 | 14 | !!! info 15 | If a node is stopped it will stop processing blocks. Once the node is restarted, it will start processing blocks where it left off. 16 | 17 | !!! info 18 | The terms "sync" and "catchup/catch up" are used interchangeably. 19 | 20 | # Node Status 21 | 22 | It is possible to check the status of the catchup process by checking a node's status. 23 | 24 | ``` 25 | goal node status [-d <data directory>] 26 | ``` 27 | 28 | After running this status check, monitor the `Sync Time:` property that is returned. If this value is incrementing, the node is still synching. The `Sync Time:` will display `Sync Time: 0.0s` when the node is fully caught up. The status also reports the last block process by the node in the `Last committed block:` property. Comparing this block number to what is shown using an Algorand [Block Explorer](https://developer.algorand.org/ecosystem-projects/#block-explorers) will indicate how much more time catchup will take. 29 | 30 | !!! info 31 | Progress of last committed block is not linear. Earlier blocks usually have much fewer transactions than more recent blocks and catchup usually slows down the closer to the current block you are. 32 | 33 | 34 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:ABIByteType.md: -------------------------------------------------------------------------------- ```markdown 1 | [algosdk](../README.md) / [Exports](../modules.md) / ABIByteType 2 | 3 | # Class: ABIByteType 4 | 5 | ## Hierarchy 6 | 7 | - [`ABIType`](ABIType.md) 8 | 9 | ↳ **`ABIByteType`** 10 | 11 | ## Table of contents 12 | 13 | ### Constructors 14 | 15 | - [constructor](ABIByteType.md#constructor) 16 | 17 | ### Methods 18 | 19 | - [byteLen](ABIByteType.md#bytelen) 20 | - [decode](ABIByteType.md#decode) 21 | - [encode](ABIByteType.md#encode) 22 | - [equals](ABIByteType.md#equals) 23 | - [isDynamic](ABIByteType.md#isdynamic) 24 | - [toString](ABIByteType.md#tostring) 25 | - [from](ABIByteType.md#from) 26 | 27 | ## Constructors 28 | 29 | ### constructor 30 | 31 | • **new ABIByteType**() 32 | 33 | #### Inherited from 34 | 35 | [ABIType](ABIType.md).[constructor](ABIType.md#constructor) 36 | 37 | ## Methods 38 | 39 | ### byteLen 40 | 41 | ▸ **byteLen**(): `number` 42 | 43 | #### Returns 44 | 45 | `number` 46 | 47 | #### Overrides 48 | 49 | [ABIType](ABIType.md).[byteLen](ABIType.md#bytelen) 50 | 51 | #### Defined in 52 | 53 | abi/abi_type.ts:336 54 | 55 | ___ 56 | 57 | ### decode 58 | 59 | ▸ **decode**(`byteString`): `number` 60 | 61 | #### Parameters 62 | 63 | | Name | Type | 64 | | :------ | :------ | 65 | | `byteString` | `Uint8Array` | 66 | 67 | #### Returns 68 | 69 | `number` 70 | 71 | #### Overrides 72 | 73 | [ABIType](ABIType.md).[decode](ABIType.md#decode) 74 | 75 | #### Defined in 76 | 77 | abi/abi_type.ts:354 78 | 79 | ___ 80 | 81 | ### encode 82 | 83 | ▸ **encode**(`value`): `Uint8Array` 84 | 85 | #### Parameters 86 | 87 | | Name | Type | 88 | | :------ | :------ | 89 | | `value` | [`ABIValue`](../modules.md#abivalue) | 90 | 91 | #### Returns 92 | 93 | `Uint8Array` 94 | 95 | #### Overrides 96 | 97 | [ABIType](ABIType.md).[encode](ABIType.md#encode) 98 | 99 | #### Defined in 100 | 101 | abi/abi_type.ts:340 102 | 103 | ___ 104 | 105 | ### equals 106 | 107 | ▸ **equals**(`other`): `boolean` 108 | 109 | #### Parameters 110 | 111 | | Name | Type | 112 | | :------ | :------ | 113 | | `other` | [`ABIType`](ABIType.md) | 114 | 115 | #### Returns 116 | 117 | `boolean` 118 | 119 | #### Overrides 120 | 121 | [ABIType](ABIType.md).[equals](ABIType.md#equals) 122 | 123 | #### Defined in 124 | 125 | abi/abi_type.ts:328 126 | 127 | ___ 128 | 129 | ### isDynamic 130 | 131 | ▸ **isDynamic**(): `boolean` 132 | 133 | #### Returns 134 | 135 | `boolean` 136 | 137 | #### Overrides 138 | 139 | [ABIType](ABIType.md).[isDynamic](ABIType.md#isdynamic) 140 | 141 | #### Defined in 142 | 143 | abi/abi_type.ts:332 144 | 145 | ___ 146 | 147 | ### toString 148 | 149 | ▸ **toString**(): `string` 150 | 151 | #### Returns 152 | 153 | `string` 154 | 155 | #### Overrides 156 | 157 | [ABIType](ABIType.md).[toString](ABIType.md#tostring) 158 | 159 | #### Defined in 160 | 161 | abi/abi_type.ts:324 162 | 163 | ___ 164 | 165 | ### from 166 | 167 | ▸ `Static` **from**(`str`): [`ABIType`](ABIType.md) 168 | 169 | #### Parameters 170 | 171 | | Name | Type | 172 | | :------ | :------ | 173 | | `str` | `string` | 174 | 175 | #### Returns 176 | 177 | [`ABIType`](ABIType.md) 178 | 179 | #### Inherited from 180 | 181 | [ABIType](ABIType.md).[from](ABIType.md#from) 182 | 183 | #### Defined in 184 | 185 | abi/abi_type.ts:57 186 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:ABIBoolType.md: -------------------------------------------------------------------------------- ```markdown 1 | [algosdk](../README.md) / [Exports](../modules.md) / ABIBoolType 2 | 3 | # Class: ABIBoolType 4 | 5 | ## Hierarchy 6 | 7 | - [`ABIType`](ABIType.md) 8 | 9 | ↳ **`ABIBoolType`** 10 | 11 | ## Table of contents 12 | 13 | ### Constructors 14 | 15 | - [constructor](ABIBoolType.md#constructor) 16 | 17 | ### Methods 18 | 19 | - [byteLen](ABIBoolType.md#bytelen) 20 | - [decode](ABIBoolType.md#decode) 21 | - [encode](ABIBoolType.md#encode) 22 | - [equals](ABIBoolType.md#equals) 23 | - [isDynamic](ABIBoolType.md#isdynamic) 24 | - [toString](ABIBoolType.md#tostring) 25 | - [from](ABIBoolType.md#from) 26 | 27 | ## Constructors 28 | 29 | ### constructor 30 | 31 | • **new ABIBoolType**() 32 | 33 | #### Inherited from 34 | 35 | [ABIType](ABIType.md).[constructor](ABIType.md#constructor) 36 | 37 | ## Methods 38 | 39 | ### byteLen 40 | 41 | ▸ **byteLen**(): `number` 42 | 43 | #### Returns 44 | 45 | `number` 46 | 47 | #### Overrides 48 | 49 | [ABIType](ABIType.md).[byteLen](ABIType.md#bytelen) 50 | 51 | #### Defined in 52 | 53 | abi/abi_type.ts:294 54 | 55 | ___ 56 | 57 | ### decode 58 | 59 | ▸ **decode**(`byteString`): `boolean` 60 | 61 | #### Parameters 62 | 63 | | Name | Type | 64 | | :------ | :------ | 65 | | `byteString` | `Uint8Array` | 66 | 67 | #### Returns 68 | 69 | `boolean` 70 | 71 | #### Overrides 72 | 73 | [ABIType](ABIType.md).[decode](ABIType.md#decode) 74 | 75 | #### Defined in 76 | 77 | abi/abi_type.ts:308 78 | 79 | ___ 80 | 81 | ### encode 82 | 83 | ▸ **encode**(`value`): `Uint8Array` 84 | 85 | #### Parameters 86 | 87 | | Name | Type | 88 | | :------ | :------ | 89 | | `value` | [`ABIValue`](../modules.md#abivalue) | 90 | 91 | #### Returns 92 | 93 | `Uint8Array` 94 | 95 | #### Overrides 96 | 97 | [ABIType](ABIType.md).[encode](ABIType.md#encode) 98 | 99 | #### Defined in 100 | 101 | abi/abi_type.ts:298 102 | 103 | ___ 104 | 105 | ### equals 106 | 107 | ▸ **equals**(`other`): `boolean` 108 | 109 | #### Parameters 110 | 111 | | Name | Type | 112 | | :------ | :------ | 113 | | `other` | [`ABIType`](ABIType.md) | 114 | 115 | #### Returns 116 | 117 | `boolean` 118 | 119 | #### Overrides 120 | 121 | [ABIType](ABIType.md).[equals](ABIType.md#equals) 122 | 123 | #### Defined in 124 | 125 | abi/abi_type.ts:286 126 | 127 | ___ 128 | 129 | ### isDynamic 130 | 131 | ▸ **isDynamic**(): `boolean` 132 | 133 | #### Returns 134 | 135 | `boolean` 136 | 137 | #### Overrides 138 | 139 | [ABIType](ABIType.md).[isDynamic](ABIType.md#isdynamic) 140 | 141 | #### Defined in 142 | 143 | abi/abi_type.ts:290 144 | 145 | ___ 146 | 147 | ### toString 148 | 149 | ▸ **toString**(): `string` 150 | 151 | #### Returns 152 | 153 | `string` 154 | 155 | #### Overrides 156 | 157 | [ABIType](ABIType.md).[toString](ABIType.md#tostring) 158 | 159 | #### Defined in 160 | 161 | abi/abi_type.ts:282 162 | 163 | ___ 164 | 165 | ### from 166 | 167 | ▸ `Static` **from**(`str`): [`ABIType`](ABIType.md) 168 | 169 | #### Parameters 170 | 171 | | Name | Type | 172 | | :------ | :------ | 173 | | `str` | `string` | 174 | 175 | #### Returns 176 | 177 | [`ABIType`](ABIType.md) 178 | 179 | #### Inherited from 180 | 181 | [ABIType](ABIType.md).[from](ABIType.md#from) 182 | 183 | #### Defined in 184 | 185 | abi/abi_type.ts:57 186 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:cli:features:tasks:vanity_address.md: -------------------------------------------------------------------------------- ```markdown 1 | # AlgoKit Task Vanity Address 2 | 3 | The AlgoKit Vanity Address feature allows you to generate a vanity Algorand address. A vanity address is an address that contains a specific keyword in it. The keyword can only include uppercase letters A-Z and numbers 2-7. The longer the keyword, the longer it may take to generate a matching address. 4 | 5 | ## Usage 6 | 7 | Available commands and possible usage as follows: 8 | 9 | ```bash 10 | $ ~ algokit task vanity-address 11 | Usage: algokit task vanity-address [OPTIONS] KEYWORD 12 | 13 | Generate a vanity Algorand address. Your KEYWORD can only include letters A - Z and numbers 2 - 7. Keeping your 14 | KEYWORD under 5 characters will usually result in faster generation. Note: The longer the KEYWORD, the longer it may 15 | take to generate a matching address. Please be patient if you choose a long keyword. 16 | 17 | Options: 18 | -m, --match [start|anywhere|end] 19 | Location where the keyword will be included. Default is start. 20 | -o, --output [stdout|alias|file] 21 | How the output will be presented. 22 | -a, --alias TEXT Alias for the address. Required if output is "alias". 23 | --file-path PATH File path where to dump the output. Required if output is "file". 24 | -f, --force Allow overwriting an aliases without confirmation, if output option is 'alias'. 25 | -h, --help Show this message and exit. 26 | ``` 27 | 28 | ## Examples 29 | 30 | Generate a vanity address with the keyword "ALGO" at the start of the address with default output to `stdout`: 31 | 32 | ```bash 33 | $ ~ algokit task vanity-address ALGO 34 | ``` 35 | 36 | Generate a vanity address with the keyword "ALGO" at the start of the address with output to a file: 37 | 38 | ```bash 39 | $ ~ algokit task vanity-address ALGO -o file -f vanity-address.txt 40 | ``` 41 | 42 | Generate a vanity address with the keyword "ALGO" anywhere in the address with output to a file: 43 | 44 | ```bash 45 | $ ~ algokit task vanity-address ALGO -m anywhere -o file -f vanity-address.txt 46 | ``` 47 | 48 | Generate a vanity address with the keyword "ALGO" at the start of the address and store into a [wallet alias](wallet.md): 49 | 50 | ```bash 51 | $ ~ algokit task vanity-address ALGO -o alias -a my-vanity-address 52 | ``` 53 | 54 | ## Further Reading 55 | 56 | For in-depth details, visit the [vanity-address section](../../cli/index.md#vanity-address) in the AlgoKit CLI reference documentation. 57 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:ABIStringType.md: -------------------------------------------------------------------------------- ```markdown 1 | [algosdk](../README.md) / [Exports](../modules.md) / ABIStringType 2 | 3 | # Class: ABIStringType 4 | 5 | ## Hierarchy 6 | 7 | - [`ABIType`](ABIType.md) 8 | 9 | ↳ **`ABIStringType`** 10 | 11 | ## Table of contents 12 | 13 | ### Constructors 14 | 15 | - [constructor](ABIStringType.md#constructor) 16 | 17 | ### Methods 18 | 19 | - [byteLen](ABIStringType.md#bytelen) 20 | - [decode](ABIStringType.md#decode) 21 | - [encode](ABIStringType.md#encode) 22 | - [equals](ABIStringType.md#equals) 23 | - [isDynamic](ABIStringType.md#isdynamic) 24 | - [toString](ABIStringType.md#tostring) 25 | - [from](ABIStringType.md#from) 26 | 27 | ## Constructors 28 | 29 | ### constructor 30 | 31 | • **new ABIStringType**() 32 | 33 | #### Inherited from 34 | 35 | [ABIType](ABIType.md).[constructor](ABIType.md#constructor) 36 | 37 | ## Methods 38 | 39 | ### byteLen 40 | 41 | ▸ **byteLen**(): `never` 42 | 43 | #### Returns 44 | 45 | `never` 46 | 47 | #### Overrides 48 | 49 | [ABIType](ABIType.md).[byteLen](ABIType.md#bytelen) 50 | 51 | #### Defined in 52 | 53 | abi/abi_type.ts:375 54 | 55 | ___ 56 | 57 | ### decode 58 | 59 | ▸ **decode**(`byteString`): `string` 60 | 61 | #### Parameters 62 | 63 | | Name | Type | 64 | | :------ | :------ | 65 | | `byteString` | `Uint8Array` | 66 | 67 | #### Returns 68 | 69 | `string` 70 | 71 | #### Overrides 72 | 73 | [ABIType](ABIType.md).[decode](ABIType.md#decode) 74 | 75 | #### Defined in 76 | 77 | abi/abi_type.ts:396 78 | 79 | ___ 80 | 81 | ### encode 82 | 83 | ▸ **encode**(`value`): `Uint8Array` 84 | 85 | #### Parameters 86 | 87 | | Name | Type | 88 | | :------ | :------ | 89 | | `value` | [`ABIValue`](../modules.md#abivalue) | 90 | 91 | #### Returns 92 | 93 | `Uint8Array` 94 | 95 | #### Overrides 96 | 97 | [ABIType](ABIType.md).[encode](ABIType.md#encode) 98 | 99 | #### Defined in 100 | 101 | abi/abi_type.ts:379 102 | 103 | ___ 104 | 105 | ### equals 106 | 107 | ▸ **equals**(`other`): `boolean` 108 | 109 | #### Parameters 110 | 111 | | Name | Type | 112 | | :------ | :------ | 113 | | `other` | [`ABIType`](ABIType.md) | 114 | 115 | #### Returns 116 | 117 | `boolean` 118 | 119 | #### Overrides 120 | 121 | [ABIType](ABIType.md).[equals](ABIType.md#equals) 122 | 123 | #### Defined in 124 | 125 | abi/abi_type.ts:367 126 | 127 | ___ 128 | 129 | ### isDynamic 130 | 131 | ▸ **isDynamic**(): `boolean` 132 | 133 | #### Returns 134 | 135 | `boolean` 136 | 137 | #### Overrides 138 | 139 | [ABIType](ABIType.md).[isDynamic](ABIType.md#isdynamic) 140 | 141 | #### Defined in 142 | 143 | abi/abi_type.ts:371 144 | 145 | ___ 146 | 147 | ### toString 148 | 149 | ▸ **toString**(): `string` 150 | 151 | #### Returns 152 | 153 | `string` 154 | 155 | #### Overrides 156 | 157 | [ABIType](ABIType.md).[toString](ABIType.md#tostring) 158 | 159 | #### Defined in 160 | 161 | abi/abi_type.ts:363 162 | 163 | ___ 164 | 165 | ### from 166 | 167 | ▸ `Static` **from**(`str`): [`ABIType`](ABIType.md) 168 | 169 | #### Parameters 170 | 171 | | Name | Type | 172 | | :------ | :------ | 173 | | `str` | `string` | 174 | 175 | #### Returns 176 | 177 | [`ABIType`](ABIType.md) 178 | 179 | #### Inherited from 180 | 181 | [ABIType](ABIType.md).[from](ABIType.md#from) 182 | 183 | #### Defined in 184 | 185 | abi/abi_type.ts:57 186 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:ABIAddressType.md: -------------------------------------------------------------------------------- ```markdown 1 | [algosdk](../README.md) / [Exports](../modules.md) / ABIAddressType 2 | 3 | # Class: ABIAddressType 4 | 5 | ## Hierarchy 6 | 7 | - [`ABIType`](ABIType.md) 8 | 9 | ↳ **`ABIAddressType`** 10 | 11 | ## Table of contents 12 | 13 | ### Constructors 14 | 15 | - [constructor](ABIAddressType.md#constructor) 16 | 17 | ### Methods 18 | 19 | - [byteLen](ABIAddressType.md#bytelen) 20 | - [decode](ABIAddressType.md#decode) 21 | - [encode](ABIAddressType.md#encode) 22 | - [equals](ABIAddressType.md#equals) 23 | - [isDynamic](ABIAddressType.md#isdynamic) 24 | - [toString](ABIAddressType.md#tostring) 25 | - [from](ABIAddressType.md#from) 26 | 27 | ## Constructors 28 | 29 | ### constructor 30 | 31 | • **new ABIAddressType**() 32 | 33 | #### Inherited from 34 | 35 | [ABIType](ABIType.md).[constructor](ABIType.md#constructor) 36 | 37 | ## Methods 38 | 39 | ### byteLen 40 | 41 | ▸ **byteLen**(): `number` 42 | 43 | #### Returns 44 | 45 | `number` 46 | 47 | #### Overrides 48 | 49 | [ABIType](ABIType.md).[byteLen](ABIType.md#bytelen) 50 | 51 | #### Defined in 52 | 53 | abi/abi_type.ts:254 54 | 55 | ___ 56 | 57 | ### decode 58 | 59 | ▸ **decode**(`byteString`): `string` 60 | 61 | #### Parameters 62 | 63 | | Name | Type | 64 | | :------ | :------ | 65 | | `byteString` | `Uint8Array` | 66 | 67 | #### Returns 68 | 69 | `string` 70 | 71 | #### Overrides 72 | 73 | [ABIType](ABIType.md).[decode](ABIType.md#decode) 74 | 75 | #### Defined in 76 | 77 | abi/abi_type.ts:273 78 | 79 | ___ 80 | 81 | ### encode 82 | 83 | ▸ **encode**(`value`): `Uint8Array` 84 | 85 | #### Parameters 86 | 87 | | Name | Type | 88 | | :------ | :------ | 89 | | `value` | [`ABIValue`](../modules.md#abivalue) | 90 | 91 | #### Returns 92 | 93 | `Uint8Array` 94 | 95 | #### Overrides 96 | 97 | [ABIType](ABIType.md).[encode](ABIType.md#encode) 98 | 99 | #### Defined in 100 | 101 | abi/abi_type.ts:258 102 | 103 | ___ 104 | 105 | ### equals 106 | 107 | ▸ **equals**(`other`): `boolean` 108 | 109 | #### Parameters 110 | 111 | | Name | Type | 112 | | :------ | :------ | 113 | | `other` | [`ABIType`](ABIType.md) | 114 | 115 | #### Returns 116 | 117 | `boolean` 118 | 119 | #### Overrides 120 | 121 | [ABIType](ABIType.md).[equals](ABIType.md#equals) 122 | 123 | #### Defined in 124 | 125 | abi/abi_type.ts:246 126 | 127 | ___ 128 | 129 | ### isDynamic 130 | 131 | ▸ **isDynamic**(): `boolean` 132 | 133 | #### Returns 134 | 135 | `boolean` 136 | 137 | #### Overrides 138 | 139 | [ABIType](ABIType.md).[isDynamic](ABIType.md#isdynamic) 140 | 141 | #### Defined in 142 | 143 | abi/abi_type.ts:250 144 | 145 | ___ 146 | 147 | ### toString 148 | 149 | ▸ **toString**(): `string` 150 | 151 | #### Returns 152 | 153 | `string` 154 | 155 | #### Overrides 156 | 157 | [ABIType](ABIType.md).[toString](ABIType.md#tostring) 158 | 159 | #### Defined in 160 | 161 | abi/abi_type.ts:242 162 | 163 | ___ 164 | 165 | ### from 166 | 167 | ▸ `Static` **from**(`str`): [`ABIType`](ABIType.md) 168 | 169 | #### Parameters 170 | 171 | | Name | Type | 172 | | :------ | :------ | 173 | | `str` | `string` | 174 | 175 | #### Returns 176 | 177 | [`ABIType`](ABIType.md) 178 | 179 | #### Inherited from 180 | 181 | [ABIType](ABIType.md).[from](ABIType.md#from) 182 | 183 | #### Defined in 184 | 185 | abi/abi_type.ts:57 186 | ``` -------------------------------------------------------------------------------- /packages/server/src/tools/apiManager/vestige/index.ts: -------------------------------------------------------------------------------- ```typescript 1 | import { Tool, ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js'; 2 | import { networkTools, handleNetworkTools } from './networks.js'; 3 | import { protocolTools, handleProtocolTools } from './protocols.js'; 4 | import { assetTools, handleAssetTools } from './assets.js'; 5 | import { poolTools, handlePoolTools } from './pools.js'; 6 | import { vaultTools, handleVaultTools } from './vaults.js'; 7 | import { balanceTools, handleBalanceTools } from './balances.js'; 8 | import { noteTools, handleNoteTools } from './notes.js'; 9 | import { swapTools, handleSwapTools } from './swaps.js'; 10 | 11 | // Export all Vestige tools 12 | export const vestigeTools: Tool[] = [ 13 | ...networkTools, 14 | ...protocolTools, 15 | ...assetTools, 16 | ...poolTools, 17 | ...vaultTools, 18 | ...balanceTools, 19 | ...noteTools, 20 | ...swapTools 21 | ]; 22 | 23 | // Handle all Vestige tools 24 | export async function handleVestigeTools(name: string, args: any): Promise<any> { 25 | try { 26 | const combinedArgs = { name, ...args }; 27 | // Network tools 28 | if (name.startsWith('api_vestige_view_network')) { 29 | return handleNetworkTools(combinedArgs); 30 | } 31 | 32 | // Protocol tools 33 | if (name.startsWith('api_vestige_view_protocol')) { 34 | return handleProtocolTools(combinedArgs); 35 | } 36 | 37 | 38 | 39 | // Pool tools 40 | if (name.startsWith('api_vestige_view_pool')) { 41 | return handlePoolTools(combinedArgs); 42 | } 43 | 44 | // Vault tools 45 | if (name.startsWith('api_vestige_view_vault')) { 46 | return handleVaultTools(combinedArgs); 47 | } 48 | 49 | // Balance tools 50 | if (name.startsWith('api_vestige_view_balance')) { 51 | return handleBalanceTools(combinedArgs); 52 | } 53 | 54 | // Note tools 55 | if (name.includes("_notes")) { 56 | return handleNoteTools(combinedArgs); 57 | } 58 | // Asset tools 59 | if (name.startsWith('api_vestige_view_asset')) { 60 | return handleAssetTools(combinedArgs); 61 | } 62 | 63 | // Swap tools 64 | if (name.startsWith('api_vestige_') && 65 | (name.includes('_swap') || name.includes('_swaps') || name.includes('get_aggregator_stats'))) { 66 | return handleSwapTools(combinedArgs); 67 | } 68 | 69 | throw new McpError( 70 | ErrorCode.MethodNotFound, 71 | `Unknown tool: ${name}` 72 | ); 73 | } catch (error) { 74 | if (error instanceof McpError) { 75 | throw error; 76 | } 77 | throw new McpError( 78 | ErrorCode.InternalError, 79 | `Failed to handle Vestige tool: ${error instanceof Error ? error.message : String(error)}` 80 | ); 81 | } 82 | } 83 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/developer:docs:get-started:tokenization:ft.md: -------------------------------------------------------------------------------- ```markdown 1 | title: Create a fungible token 2 | 3 | # What are fungible tokens? 4 | Fungible tokens, or FTs for short, are a type of asset split into multiple units that are fundamentally the same and interchangeable one-to-one with each other. Algos are fungible, but since they are also a utility token for the Algorand network, they are implemented differently from the types of fungible tokens we’ll talk about in this guide. 5 | 6 | <center> 7 | {: style="width:500px" align=center } 8 | <figcaption style="font-size:12px">Examples of fungible token use cases: local currencies, travel program loyalty points, in-game tokens.</figcaption> 9 | </center> 10 | 11 | Loyalty programs that offer reward points that can be traded in for merchandise or services are considered fungible. Fiat currencies are fungible and can be represented on the blockchain as stablecoins (a token that maintains a steady value usually by having backed reserves or through some stabilization algorithms) or by direct issuance on the blockchain (central bank digital currencies). Tokenized shares in real estate, a company, or a fund are usually fungible too. 12 | 13 | Tokenizing a fungible asset is an onramp to all the benefits of a blockchain ecosystem that we learned about in the first section of this getting started guide (security, trust, immutability, efficiency, low costs, composability). 14 | 15 | # How to create fungible tokens 16 | Fungible tokens, like NFTs, are implemented as Algorand Standard Assets (ASAs). Also like NFTs, you do not need to write smart contract code. You just need to specify a few parameters to identify it as an FT (e.g. total count is greater than 1) and attach metadata so that potential owners have the information they need to validate the integrity of the asset. See Algorand Request for Comments for standards used by the Algorand community to properly format properties of an FT. 17 | 18 | This asset creation transaction can be created using any of [Algorands SDKs](../../sdks/index.md). Code demonstrating creating an Asset is available in the [ASA documentation](../../get-details/asa.md#creating-an-asset). 19 | 20 | 21 | # Other fungible token resources 22 | 23 | - Detailed documentation on [Algorand Standard Assets (ASAs)](../../../get-details/asa/){: target="blank"} and related [transaction types](../../../get-details/transactions/#asset-configuration-transaction){: target="blank"}. 24 | 25 | ```