This is page 17 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/SDKs:javascript:classes:indexerModels.BlockRewards.md: -------------------------------------------------------------------------------- ```markdown 1 | [algosdk](../README.md) / [Exports](../modules.md) / [indexerModels](../modules/indexerModels.md) / BlockRewards 2 | 3 | # Class: BlockRewards 4 | 5 | [indexerModels](../modules/indexerModels.md).BlockRewards 6 | 7 | Fields relating to rewards, 8 | 9 | ## Hierarchy 10 | 11 | - `default` 12 | 13 | ↳ **`BlockRewards`** 14 | 15 | ## Table of contents 16 | 17 | ### Constructors 18 | 19 | - [constructor](indexerModels.BlockRewards.md#constructor) 20 | 21 | ### Properties 22 | 23 | - [attribute\_map](indexerModels.BlockRewards.md#attribute_map) 24 | - [feeSink](indexerModels.BlockRewards.md#feesink) 25 | - [rewardsCalculationRound](indexerModels.BlockRewards.md#rewardscalculationround) 26 | - [rewardsLevel](indexerModels.BlockRewards.md#rewardslevel) 27 | - [rewardsPool](indexerModels.BlockRewards.md#rewardspool) 28 | - [rewardsRate](indexerModels.BlockRewards.md#rewardsrate) 29 | - [rewardsResidue](indexerModels.BlockRewards.md#rewardsresidue) 30 | 31 | ### Methods 32 | 33 | - [get\_obj\_for\_encoding](indexerModels.BlockRewards.md#get_obj_for_encoding) 34 | - [from\_obj\_for\_encoding](indexerModels.BlockRewards.md#from_obj_for_encoding) 35 | 36 | ## Constructors 37 | 38 | ### constructor 39 | 40 | • **new BlockRewards**(`«destructured»`) 41 | 42 | Creates a new `BlockRewards` object. 43 | 44 | #### Parameters 45 | 46 | | Name | Type | 47 | | :------ | :------ | 48 | | `«destructured»` | `Object` | 49 | | › `feeSink` | `string` | 50 | | › `rewardsCalculationRound` | `number` \| `bigint` | 51 | | › `rewardsLevel` | `number` \| `bigint` | 52 | | › `rewardsPool` | `string` | 53 | | › `rewardsRate` | `number` \| `bigint` | 54 | | › `rewardsResidue` | `number` \| `bigint` | 55 | 56 | #### Overrides 57 | 58 | BaseModel.constructor 59 | 60 | #### Defined in 61 | 62 | client/v2/indexer/models/types.ts:2523 63 | 64 | ## Properties 65 | 66 | ### attribute\_map 67 | 68 | • **attribute\_map**: `Record`\<`string`, `string`\> 69 | 70 | #### Inherited from 71 | 72 | BaseModel.attribute\_map 73 | 74 | #### Defined in 75 | 76 | client/v2/basemodel.ts:56 77 | 78 | ___ 79 | 80 | ### feeSink 81 | 82 | • **feeSink**: `string` 83 | 84 | (fees) accepts transaction fees, it can only spend to the incentive pool. 85 | 86 | #### Defined in 87 | 88 | client/v2/indexer/models/types.ts:2477 89 | 90 | ___ 91 | 92 | ### rewardsCalculationRound 93 | 94 | • **rewardsCalculationRound**: `number` \| `bigint` 95 | 96 | (rwcalr) number of leftover MicroAlgos after the distribution of rewards-rate 97 | MicroAlgos for every reward unit in the next round. 98 | 99 | #### Defined in 100 | 101 | client/v2/indexer/models/types.ts:2483 102 | 103 | ___ 104 | 105 | ### rewardsLevel 106 | 107 | • **rewardsLevel**: `number` \| `bigint` 108 | 109 | (earn) How many rewards, in MicroAlgos, have been distributed to each RewardUnit 110 | of MicroAlgos since genesis. 111 | 112 | #### Defined in 113 | 114 | client/v2/indexer/models/types.ts:2489 115 | 116 | ___ 117 | 118 | ### rewardsPool 119 | 120 | • **rewardsPool**: `string` 121 | 122 | (rwd) accepts periodic injections from the fee-sink and continually 123 | redistributes them as rewards. 124 | 125 | #### Defined in 126 | 127 | client/v2/indexer/models/types.ts:2495 128 | 129 | ___ 130 | 131 | ### rewardsRate 132 | 133 | • **rewardsRate**: `number` \| `bigint` 134 | 135 | (rate) Number of new MicroAlgos added to the participation stake from rewards at 136 | the next round. 137 | 138 | #### Defined in 139 | 140 | client/v2/indexer/models/types.ts:2501 141 | 142 | ___ 143 | 144 | ### rewardsResidue 145 | 146 | • **rewardsResidue**: `number` \| `bigint` 147 | 148 | (frac) Number of leftover MicroAlgos after the distribution of 149 | RewardsRate/rewardUnits MicroAlgos for every reward unit in the next round. 150 | 151 | #### Defined in 152 | 153 | client/v2/indexer/models/types.ts:2507 154 | 155 | ## Methods 156 | 157 | ### get\_obj\_for\_encoding 158 | 159 | ▸ **get_obj_for_encoding**(`binary?`): `Record`\<`string`, `any`\> 160 | 161 | Get an object ready for encoding to either JSON or msgpack. 162 | 163 | #### Parameters 164 | 165 | | Name | Type | Default value | Description | 166 | | :------ | :------ | :------ | :------ | 167 | | `binary` | `boolean` | `false` | Use true to indicate that the encoding can handle raw binary objects (Uint8Arrays). Use false to indicate that raw binary objects should be converted to base64 strings. True should be used for objects that will be encoded with msgpack, and false should be used for objects that will be encoded with JSON. | 168 | 169 | #### Returns 170 | 171 | `Record`\<`string`, `any`\> 172 | 173 | #### Inherited from 174 | 175 | BaseModel.get\_obj\_for\_encoding 176 | 177 | #### Defined in 178 | 179 | client/v2/basemodel.ts:65 180 | 181 | ___ 182 | 183 | ### from\_obj\_for\_encoding 184 | 185 | ▸ `Static` **from_obj_for_encoding**(`data`): [`BlockRewards`](indexerModels.BlockRewards.md) 186 | 187 | #### Parameters 188 | 189 | | Name | Type | 190 | | :------ | :------ | 191 | | `data` | `Record`\<`string`, `any`\> | 192 | 193 | #### Returns 194 | 195 | [`BlockRewards`](indexerModels.BlockRewards.md) 196 | 197 | #### Defined in 198 | 199 | client/v2/indexer/models/types.ts:2557 200 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:cli:features:tasks:sign.md: -------------------------------------------------------------------------------- ```markdown 1 | # AlgoKit Task Sign 2 | 3 | The AlgoKit Sign feature allows you to sign Algorand transaction(s) using the AlgoKit CLI. This feature supports signing single or multiple transactions, either provided directly as a base64 encoded string or from a binary file. 4 | 5 | ## Usage 6 | 7 | Available commands and possible usage as follows: 8 | 9 | ```bash 10 | $ ~ algokit task sign 11 | Usage: algokit task sign [OPTIONS] 12 | 13 | Sign goal clerk compatible Algorand transaction(s). 14 | 15 | Options: 16 | -a, --account TEXT Address or alias of the signer account. [required] 17 | -f, --file PATH Single or multiple message pack encoded transactions from binary file to sign. 18 | -t, --transaction TEXT Single base64 encoded transaction object to sign. 19 | -o, --output PATH The output file path to store signed transaction(s). 20 | --force Force signing without confirmation. 21 | -h, --help Show this message and exit. 22 | ``` 23 | 24 | ## Options 25 | 26 | - `--account, -a TEXT`: Specifies the address or alias of the signer account. This option is required. 27 | - `--file, -f PATH`: Specifies the path to a binary file containing single or multiple message pack encoded transactions to sign. Mutually exclusive with `--transaction` option. 28 | - `--transaction, -t TEXT`: Specifies a single base64 encoded transaction object to sign. Mutually exclusive with `--file` option. 29 | - `--output, -o PATH`: Specifies the output file path to store signed transaction(s). 30 | - `--force`: If specified, it allows signing without interactive confirmation prompt. 31 | 32 | > Please note, `--transaction` flag only supports signing a single transaction. If you want to sign multiple transactions, you can use the `--file` flag to specify a binary file containing multiple transactions. 33 | 34 | ## Example 35 | 36 | To sign a transaction, you can use the `sign` command as follows: 37 | 38 | ```bash 39 | $ algokit task sign --account {YOUR_ACCOUNT_ALIAS OR YOUR_ADDRESS} --file {PATH_TO_BINARY_FILE_CONTAINING_TRANSACTIONS} 40 | ``` 41 | 42 | This will prompt you to confirm the transaction details before signing. If you want to bypass the confirmation, you can use the `--force` flag: 43 | 44 | ```bash 45 | $ algokit task sign --account {YOUR_ACCOUNT_ALIAS OR YOUR_ADDRESS} --transaction {YOUR_BASE64_ENCODED_TRANSACTION} --force 46 | ``` 47 | 48 | If the transaction is successfully signed, the signed transaction will be output to the console in a JSON format. If you want to write the signed transaction to a file, you can use the `--output` option: 49 | 50 | ```bash 51 | $ algokit task sign --account {YOUR_ACCOUNT_ALIAS OR YOUR_ADDRESS} --transaction {YOUR_BASE64_ENCODED_TRANSACTION} --output /path/to/output/file 52 | ``` 53 | 54 | This will write the signed transaction to the specified file. 55 | 56 | ## Goal Compatibility 57 | 58 | Please note, at the moment this feature only supports [`goal clerk`](https://developer.algorand.org/docs/clis/goal/clerk/clerk/) compatible transaction objects. 59 | 60 | When `--output` option is not specified, the signed transaction(s) will be output to the console in a following JSON format: 61 | 62 | ``` 63 | [ 64 | {transaction_id: "TRANSACTION_ID", content: "BASE64_ENCODED_SIGNED_TRANSACTION"}, 65 | ] 66 | ``` 67 | 68 | On the other hand, when `--output` option is specified, the signed transaction(s) will be stored to a file as a message pack encoded binary file. 69 | 70 | ### Encoding transactins for signing 71 | 72 | Algorand provides a set of options in [py-algorand-sdk](https://github.com/algorand/py-algorand-sdk) and [js-algorand-sdk](https://github.com/algorand/js-algorand-sdk) to encode transactions for signing. 73 | 74 | Encoding simple txn object in python: 75 | 76 | ```py 77 | # Encoding single transaction as a base64 encoded string 78 | algosdk.encoding.msgpack_encode({"txn": {YOUR_TXN_OBJECT}.dictify()}) # Resulting string can be passed directy to algokit task sign with --transaction flag 79 | 80 | # Encoding multiple transactions as a message pack encoded binary file 81 | algosdk.transaction.write_to_file([{YOUR_TXN_OBJECT}], "some_file.txn") # Resulting file path can be passed directly to algokit sign with --file flag 82 | ``` 83 | 84 | Encoding simple txn object in javascript: 85 | 86 | ```ts 87 | Buffer.from(algosdk.encodeObj({ txn: txn.get_obj_for_encoding() })).toString( 88 | "base64" 89 | ); // Resulting string can be passed directy to algokit task sign with --transaction flag 90 | ``` 91 | 92 | ## Further Reading 93 | 94 | For in-depth details, visit the [sign section](../../cli/index.md#sign) in the AlgoKit CLI reference documentation. 95 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:modelsv2.AccountParticipation.md: -------------------------------------------------------------------------------- ```markdown 1 | [algosdk](../README.md) / [Exports](../modules.md) / [modelsv2](../modules/modelsv2.md) / AccountParticipation 2 | 3 | # Class: AccountParticipation 4 | 5 | [modelsv2](../modules/modelsv2.md).AccountParticipation 6 | 7 | AccountParticipation describes the parameters used by this account in consensus 8 | protocol. 9 | 10 | ## Hierarchy 11 | 12 | - `default` 13 | 14 | ↳ **`AccountParticipation`** 15 | 16 | ## Table of contents 17 | 18 | ### Constructors 19 | 20 | - [constructor](modelsv2.AccountParticipation.md#constructor) 21 | 22 | ### Properties 23 | 24 | - [attribute\_map](modelsv2.AccountParticipation.md#attribute_map) 25 | - [selectionParticipationKey](modelsv2.AccountParticipation.md#selectionparticipationkey) 26 | - [stateProofKey](modelsv2.AccountParticipation.md#stateproofkey) 27 | - [voteFirstValid](modelsv2.AccountParticipation.md#votefirstvalid) 28 | - [voteKeyDilution](modelsv2.AccountParticipation.md#votekeydilution) 29 | - [voteLastValid](modelsv2.AccountParticipation.md#votelastvalid) 30 | - [voteParticipationKey](modelsv2.AccountParticipation.md#voteparticipationkey) 31 | 32 | ### Methods 33 | 34 | - [get\_obj\_for\_encoding](modelsv2.AccountParticipation.md#get_obj_for_encoding) 35 | - [from\_obj\_for\_encoding](modelsv2.AccountParticipation.md#from_obj_for_encoding) 36 | 37 | ## Constructors 38 | 39 | ### constructor 40 | 41 | • **new AccountParticipation**(`«destructured»`) 42 | 43 | Creates a new `AccountParticipation` object. 44 | 45 | #### Parameters 46 | 47 | | Name | Type | 48 | | :------ | :------ | 49 | | `«destructured»` | `Object` | 50 | | › `selectionParticipationKey` | `string` \| `Uint8Array` | 51 | | › `stateProofKey?` | `string` \| `Uint8Array` | 52 | | › `voteFirstValid` | `number` \| `bigint` | 53 | | › `voteKeyDilution` | `number` \| `bigint` | 54 | | › `voteLastValid` | `number` \| `bigint` | 55 | | › `voteParticipationKey` | `string` \| `Uint8Array` | 56 | 57 | #### Overrides 58 | 59 | BaseModel.constructor 60 | 61 | #### Defined in 62 | 63 | client/v2/algod/models/types.ts:769 64 | 65 | ## Properties 66 | 67 | ### attribute\_map 68 | 69 | • **attribute\_map**: `Record`\<`string`, `string`\> 70 | 71 | #### Inherited from 72 | 73 | BaseModel.attribute\_map 74 | 75 | #### Defined in 76 | 77 | client/v2/basemodel.ts:56 78 | 79 | ___ 80 | 81 | ### selectionParticipationKey 82 | 83 | • **selectionParticipationKey**: `Uint8Array` 84 | 85 | (sel) Selection public key (if any) currently registered for this round. 86 | 87 | #### Defined in 88 | 89 | client/v2/algod/models/types.ts:731 90 | 91 | ___ 92 | 93 | ### stateProofKey 94 | 95 | • `Optional` **stateProofKey**: `Uint8Array` 96 | 97 | (stprf) Root of the state proof key (if any) 98 | 99 | #### Defined in 100 | 101 | client/v2/algod/models/types.ts:757 102 | 103 | ___ 104 | 105 | ### voteFirstValid 106 | 107 | • **voteFirstValid**: `number` \| `bigint` 108 | 109 | (voteFst) First round for which this participation is valid. 110 | 111 | #### Defined in 112 | 113 | client/v2/algod/models/types.ts:736 114 | 115 | ___ 116 | 117 | ### voteKeyDilution 118 | 119 | • **voteKeyDilution**: `number` \| `bigint` 120 | 121 | (voteKD) Number of subkeys in each batch of participation keys. 122 | 123 | #### Defined in 124 | 125 | client/v2/algod/models/types.ts:741 126 | 127 | ___ 128 | 129 | ### voteLastValid 130 | 131 | • **voteLastValid**: `number` \| `bigint` 132 | 133 | (voteLst) Last round for which this participation is valid. 134 | 135 | #### Defined in 136 | 137 | client/v2/algod/models/types.ts:746 138 | 139 | ___ 140 | 141 | ### voteParticipationKey 142 | 143 | • **voteParticipationKey**: `Uint8Array` 144 | 145 | (vote) root participation public key (if any) currently registered for this 146 | round. 147 | 148 | #### Defined in 149 | 150 | client/v2/algod/models/types.ts:752 151 | 152 | ## Methods 153 | 154 | ### get\_obj\_for\_encoding 155 | 156 | ▸ **get_obj_for_encoding**(`binary?`): `Record`\<`string`, `any`\> 157 | 158 | Get an object ready for encoding to either JSON or msgpack. 159 | 160 | #### Parameters 161 | 162 | | Name | Type | Default value | Description | 163 | | :------ | :------ | :------ | :------ | 164 | | `binary` | `boolean` | `false` | Use true to indicate that the encoding can handle raw binary objects (Uint8Arrays). Use false to indicate that raw binary objects should be converted to base64 strings. True should be used for objects that will be encoded with msgpack, and false should be used for objects that will be encoded with JSON. | 165 | 166 | #### Returns 167 | 168 | `Record`\<`string`, `any`\> 169 | 170 | #### Inherited from 171 | 172 | BaseModel.get\_obj\_for\_encoding 173 | 174 | #### Defined in 175 | 176 | client/v2/basemodel.ts:65 177 | 178 | ___ 179 | 180 | ### from\_obj\_for\_encoding 181 | 182 | ▸ `Static` **from_obj_for_encoding**(`data`): [`AccountParticipation`](modelsv2.AccountParticipation.md) 183 | 184 | #### Parameters 185 | 186 | | Name | Type | 187 | | :------ | :------ | 188 | | `data` | `Record`\<`string`, `any`\> | 189 | 190 | #### Returns 191 | 192 | [`AccountParticipation`](modelsv2.AccountParticipation.md) 193 | 194 | #### Defined in 195 | 196 | client/v2/algod/models/types.ts:812 197 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:code:modules:types_transaction.md: -------------------------------------------------------------------------------- ```markdown 1 | [@algorandfoundation/algokit-utils](../README.md) / types/transaction 2 | 3 | # Module: types/transaction 4 | 5 | ## Table of contents 6 | 7 | ### Interfaces 8 | 9 | - [AtomicTransactionComposerToSend](../interfaces/types_transaction.AtomicTransactionComposerToSend.md) 10 | - [ConfirmedTransactionResult](../interfaces/types_transaction.ConfirmedTransactionResult.md) 11 | - [ConfirmedTransactionResults](../interfaces/types_transaction.ConfirmedTransactionResults.md) 12 | - [SendAtomicTransactionComposerResults](../interfaces/types_transaction.SendAtomicTransactionComposerResults.md) 13 | - [SendParams](../interfaces/types_transaction.SendParams.md) 14 | - [SendTransactionParams](../interfaces/types_transaction.SendTransactionParams.md) 15 | - [SendTransactionResult](../interfaces/types_transaction.SendTransactionResult.md) 16 | - [SendTransactionResults](../interfaces/types_transaction.SendTransactionResults.md) 17 | - [TransactionGroupToSend](../interfaces/types_transaction.TransactionGroupToSend.md) 18 | - [TransactionToSign](../interfaces/types_transaction.TransactionToSign.md) 19 | 20 | ### Type Aliases 21 | 22 | - [Arc2TransactionNote](types_transaction.md#arc2transactionnote) 23 | - [SendSingleTransactionResult](types_transaction.md#sendsingletransactionresult) 24 | - [SendTransactionFrom](types_transaction.md#sendtransactionfrom) 25 | - [TransactionNote](types_transaction.md#transactionnote) 26 | - [TransactionNoteData](types_transaction.md#transactionnotedata) 27 | 28 | ## Type Aliases 29 | 30 | ### Arc2TransactionNote 31 | 32 | Ƭ **Arc2TransactionNote**: \{ `dAppName`: `string` ; `data`: `string` ; `format`: ``"m"`` \| ``"b"`` \| ``"u"`` } \| \{ `dAppName`: `string` ; `data`: [`TransactionNoteData`](types_transaction.md#transactionnotedata) ; `format`: ``"j"`` } 33 | 34 | ARC-0002 compatible transaction note components https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0002.md 35 | 36 | #### Defined in 37 | 38 | [src/types/transaction.ts:16](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L16) 39 | 40 | ___ 41 | 42 | ### SendSingleTransactionResult 43 | 44 | Ƭ **SendSingleTransactionResult**: [`Expand`](types_expand.md#expand)\<[`SendAtomicTransactionComposerResults`](../interfaces/types_transaction.SendAtomicTransactionComposerResults.md) & [`ConfirmedTransactionResult`](../interfaces/types_transaction.ConfirmedTransactionResult.md)\> 45 | 46 | Result from sending a single transaction. 47 | 48 | #### Defined in 49 | 50 | [src/types/transaction.ts:50](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L50) 51 | 52 | ___ 53 | 54 | ### SendTransactionFrom 55 | 56 | Ƭ **SendTransactionFrom**: `Account` \| [`SigningAccount`](../classes/types_account.SigningAccount.md) \| `LogicSigAccount` \| [`MultisigAccount`](../classes/types_account.MultisigAccount.md) \| [`TransactionSignerAccount`](../interfaces/types_account.TransactionSignerAccount.md) 57 | 58 | Core account abstraction when signing/sending transactions 59 | 60 | This type is used across the entire AlgoKit Utils library and allows you to pass through 61 | many types of accounts, including: 62 | * `Account` - The in-built `algosdk.Account` type for mnemonic accounts 63 | * `SigningAccount` - An AlgoKit Utils class that wraps Account to provide support for rekeyed accounts 64 | * `LogicSigAccount` - The in-built `algosdk.LogicSigAccount` type for logic signatures 65 | * `MultisigAccount` - An AlgoKit Utils class that wraps a multisig account and provides mechanisms to get a multisig account 66 | * `TransactionSignerAccount` - An AlgoKit Utils class that wraps the in-built `algosdk.TransactionSigner` along with the sender address 67 | 68 | #### Defined in 69 | 70 | [src/types/transaction.ts:108](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L108) 71 | 72 | ___ 73 | 74 | ### TransactionNote 75 | 76 | Ƭ **TransactionNote**: `Uint8Array` \| [`TransactionNoteData`](types_transaction.md#transactionnotedata) \| [`Arc2TransactionNote`](types_transaction.md#arc2transactionnote) 77 | 78 | #### Defined in 79 | 80 | [src/types/transaction.ts:12](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L12) 81 | 82 | ___ 83 | 84 | ### TransactionNoteData 85 | 86 | Ƭ **TransactionNoteData**: `string` \| ``null`` \| `undefined` \| `number` \| `any`[] \| `Record`\<`string`, `any`\> 87 | 88 | #### Defined in 89 | 90 | [src/types/transaction.ts:14](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L14) 91 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/developer:python:code:example:scratch_storage.md: -------------------------------------------------------------------------------- ```markdown 1 | # Scratch Storage in Algorand Smart Contracts 2 | 3 | This guide demonstrates how to use scratch storage in Algorand smart contracts. Scratch storage provides temporary storage slots that can be used during contract execution. 4 | 5 | ## Basic Implementation 6 | 7 | ```python 8 | from algopy import ARC4Contract, Bytes, Contract, UInt64, op, urange 9 | from algopy.arc4 import abimethod 10 | 11 | TWO = 2 12 | TWENTY = 20 13 | 14 | class ScratchSlotsContract(ARC4Contract, scratch_slots=(1, TWO, urange(3, TWENTY))): 15 | @abimethod 16 | def store_data(self) -> bool: 17 | # Store values in scratch slots 18 | op.Scratch.store(1, UInt64(5)) 19 | op.Scratch.store(2, Bytes(b"Hello World")) 20 | 21 | # Load and verify values 22 | assert op.Scratch.load_uint64(1) == UInt64(5) 23 | assert op.Scratch.load_bytes(2) == b"Hello World" 24 | return True 25 | ``` 26 | 27 | ## Simplified Contract Example 28 | 29 | ```python 30 | class SimpleScratchSlotsContract(Contract, scratch_slots=(1, TWO, urange(3, TWENTY))): 31 | def approval_program(self) -> UInt64: 32 | # Load and verify values from scratch storage 33 | assert op.Scratch.load_uint64(1) == UInt64(5) 34 | assert op.Scratch.load_bytes(2) == b"Hello World" 35 | return UInt64(1) 36 | 37 | def clear_state_program(self) -> UInt64: 38 | return UInt64(1) 39 | ``` 40 | 41 | ## Key Features 42 | 43 | ### Scratch Slots Declaration 44 | 45 | ```python 46 | # Define scratch slots in class definition 47 | scratch_slots=(1, TWO, urange(3, TWENTY)) 48 | ``` 49 | - Specify individual slots (1) 50 | - Use constants (TWO) 51 | - Define ranges (urange(3, TWENTY)) 52 | 53 | ### Storage Operations 54 | 55 | ```python 56 | # Store values 57 | op.Scratch.store(1, UInt64(5)) # Store integer 58 | op.Scratch.store(2, Bytes(b"Hello")) # Store bytes 59 | 60 | # Load values 61 | value1 = op.Scratch.load_uint64(1) # Load integer 62 | value2 = op.Scratch.load_bytes(2) # Load bytes 63 | ``` 64 | 65 | ## Best Practices 66 | 67 | 1. **Slot Management**: 68 | - Define slots explicitly 69 | - Use meaningful constants 70 | - Document slot usage 71 | - Avoid slot conflicts 72 | 73 | 2. **Data Types**: 74 | - Use appropriate load methods 75 | - Verify data types 76 | - Handle type conversions 77 | - Check value ranges 78 | 79 | 3. **Memory Usage**: 80 | - Minimize slot usage 81 | - Clean up after use 82 | - Monitor memory limits 83 | - Optimize storage 84 | 85 | 4. **Error Handling**: 86 | - Verify loaded values 87 | - Handle missing data 88 | - Check slot bounds 89 | - Validate data types 90 | 91 | ## Common Patterns 92 | 93 | 1. **Temporary Calculations**: 94 | ```python 95 | def calculate_total(self) -> UInt64: 96 | # Store intermediate results 97 | op.Scratch.store(1, UInt64(5)) 98 | op.Scratch.store(2, UInt64(10)) 99 | 100 | # Load and combine results 101 | value1 = op.Scratch.load_uint64(1) 102 | value2 = op.Scratch.load_uint64(2) 103 | return value1 + value2 104 | ``` 105 | 106 | 2. **Data Validation**: 107 | ```python 108 | def validate_input(self, input_data: Bytes) -> bool: 109 | # Store input for validation 110 | op.Scratch.store(1, input_data) 111 | 112 | # Load and validate 113 | stored_data = op.Scratch.load_bytes(1) 114 | return stored_data == input_data 115 | ``` 116 | 117 | ## Technical Details 118 | 119 | 1. **Slot Allocation**: 120 | - Slots are numbered from 0 121 | - Maximum slot number is 255 122 | - Each slot can store any type 123 | - Slots are cleared after execution 124 | 125 | 2. **Data Types**: 126 | - UInt64 for integers 127 | - Bytes for byte strings 128 | - Type-specific load methods 129 | - Automatic type checking 130 | 131 | 3. **Memory Constraints**: 132 | - Limited number of slots 133 | - Temporary storage only 134 | - No persistence between calls 135 | - Efficient for calculations 136 | 137 | 4. **Performance**: 138 | - Fast access times 139 | - Low overhead 140 | - Efficient for loops 141 | - Good for temporary data 142 | 143 | ## Use Cases 144 | 145 | 1. **Complex Calculations**: 146 | - Store intermediate results 147 | - Break down computations 148 | - Reuse common values 149 | - Optimize performance 150 | 151 | 2. **Data Validation**: 152 | - Store input data 153 | - Compare values 154 | - Check constraints 155 | - Verify formats 156 | 157 | 3. **State Transitions**: 158 | - Store previous state 159 | - Calculate changes 160 | - Verify transitions 161 | - Update final state 162 | 163 | 4. **Loop Operations**: 164 | - Store counters 165 | - Accumulate results 166 | - Track iterations 167 | - Handle aggregations 168 | 169 | This guide demonstrates how to effectively use scratch storage in Algorand smart contracts. Understanding scratch storage is crucial for optimizing contract performance and managing temporary data during execution. 170 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:modelsv2.TransactionParametersResponse.md: -------------------------------------------------------------------------------- ```markdown 1 | [algosdk](../README.md) / [Exports](../modules.md) / [modelsv2](../modules/modelsv2.md) / TransactionParametersResponse 2 | 3 | # Class: TransactionParametersResponse 4 | 5 | [modelsv2](../modules/modelsv2.md).TransactionParametersResponse 6 | 7 | TransactionParams contains the parameters that help a client construct a new 8 | transaction. 9 | 10 | ## Hierarchy 11 | 12 | - `default` 13 | 14 | ↳ **`TransactionParametersResponse`** 15 | 16 | ## Table of contents 17 | 18 | ### Constructors 19 | 20 | - [constructor](modelsv2.TransactionParametersResponse.md#constructor) 21 | 22 | ### Properties 23 | 24 | - [attribute\_map](modelsv2.TransactionParametersResponse.md#attribute_map) 25 | - [consensusVersion](modelsv2.TransactionParametersResponse.md#consensusversion) 26 | - [fee](modelsv2.TransactionParametersResponse.md#fee) 27 | - [genesisHash](modelsv2.TransactionParametersResponse.md#genesishash) 28 | - [genesisId](modelsv2.TransactionParametersResponse.md#genesisid) 29 | - [lastRound](modelsv2.TransactionParametersResponse.md#lastround) 30 | - [minFee](modelsv2.TransactionParametersResponse.md#minfee) 31 | 32 | ### Methods 33 | 34 | - [get\_obj\_for\_encoding](modelsv2.TransactionParametersResponse.md#get_obj_for_encoding) 35 | - [from\_obj\_for\_encoding](modelsv2.TransactionParametersResponse.md#from_obj_for_encoding) 36 | 37 | ## Constructors 38 | 39 | ### constructor 40 | 41 | • **new TransactionParametersResponse**(`«destructured»`) 42 | 43 | Creates a new `TransactionParametersResponse` object. 44 | 45 | #### Parameters 46 | 47 | | Name | Type | 48 | | :------ | :------ | 49 | | `«destructured»` | `Object` | 50 | | › `consensusVersion` | `string` | 51 | | › `fee` | `number` \| `bigint` | 52 | | › `genesisHash` | `string` \| `Uint8Array` | 53 | | › `genesisId` | `string` | 54 | | › `lastRound` | `number` \| `bigint` | 55 | | › `minFee` | `number` \| `bigint` | 56 | 57 | #### Overrides 58 | 59 | BaseModel.constructor 60 | 61 | #### Defined in 62 | 63 | client/v2/algod/models/types.ts:5816 64 | 65 | ## Properties 66 | 67 | ### attribute\_map 68 | 69 | • **attribute\_map**: `Record`\<`string`, `string`\> 70 | 71 | #### Inherited from 72 | 73 | BaseModel.attribute\_map 74 | 75 | #### Defined in 76 | 77 | client/v2/basemodel.ts:56 78 | 79 | ___ 80 | 81 | ### consensusVersion 82 | 83 | • **consensusVersion**: `string` 84 | 85 | ConsensusVersion indicates the consensus protocol version 86 | as of LastRound. 87 | 88 | #### Defined in 89 | 90 | client/v2/algod/models/types.ts:5771 91 | 92 | ___ 93 | 94 | ### fee 95 | 96 | • **fee**: `number` \| `bigint` 97 | 98 | Fee is the suggested transaction fee 99 | Fee is in units of micro-Algos per byte. 100 | Fee may fall to zero but transactions must still have a fee of 101 | at least MinTxnFee for the current network protocol. 102 | 103 | #### Defined in 104 | 105 | client/v2/algod/models/types.ts:5779 106 | 107 | ___ 108 | 109 | ### genesisHash 110 | 111 | • **genesisHash**: `Uint8Array` 112 | 113 | GenesisHash is the hash of the genesis block. 114 | 115 | #### Defined in 116 | 117 | client/v2/algod/models/types.ts:5784 118 | 119 | ___ 120 | 121 | ### genesisId 122 | 123 | • **genesisId**: `string` 124 | 125 | GenesisID is an ID listed in the genesis block. 126 | 127 | #### Defined in 128 | 129 | client/v2/algod/models/types.ts:5789 130 | 131 | ___ 132 | 133 | ### lastRound 134 | 135 | • **lastRound**: `number` \| `bigint` 136 | 137 | LastRound indicates the last round seen 138 | 139 | #### Defined in 140 | 141 | client/v2/algod/models/types.ts:5794 142 | 143 | ___ 144 | 145 | ### minFee 146 | 147 | • **minFee**: `number` \| `bigint` 148 | 149 | The minimum transaction fee (not per byte) required for the 150 | txn to validate for the current network protocol. 151 | 152 | #### Defined in 153 | 154 | client/v2/algod/models/types.ts:5800 155 | 156 | ## Methods 157 | 158 | ### get\_obj\_for\_encoding 159 | 160 | ▸ **get_obj_for_encoding**(`binary?`): `Record`\<`string`, `any`\> 161 | 162 | Get an object ready for encoding to either JSON or msgpack. 163 | 164 | #### Parameters 165 | 166 | | Name | Type | Default value | Description | 167 | | :------ | :------ | :------ | :------ | 168 | | `binary` | `boolean` | `false` | Use true to indicate that the encoding can handle raw binary objects (Uint8Arrays). Use false to indicate that raw binary objects should be converted to base64 strings. True should be used for objects that will be encoded with msgpack, and false should be used for objects that will be encoded with JSON. | 169 | 170 | #### Returns 171 | 172 | `Record`\<`string`, `any`\> 173 | 174 | #### Inherited from 175 | 176 | BaseModel.get\_obj\_for\_encoding 177 | 178 | #### Defined in 179 | 180 | client/v2/basemodel.ts:65 181 | 182 | ___ 183 | 184 | ### from\_obj\_for\_encoding 185 | 186 | ▸ `Static` **from_obj_for_encoding**(`data`): [`TransactionParametersResponse`](modelsv2.TransactionParametersResponse.md) 187 | 188 | #### Parameters 189 | 190 | | Name | Type | 191 | | :------ | :------ | 192 | | `data` | `Record`\<`string`, `any`\> | 193 | 194 | #### Returns 195 | 196 | [`TransactionParametersResponse`](modelsv2.TransactionParametersResponse.md) 197 | 198 | #### Defined in 199 | 200 | client/v2/algod/models/types.ts:5853 201 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/ARCs:specs:arc-0021.md: -------------------------------------------------------------------------------- ```markdown 1 | --- 2 | arc: 21 3 | title: Round based datafeed oracles on Algorand 4 | description: Conventions for building round based datafeed oracles on Algorand 5 | author: ori-shem-tov (@ori-shem-tov) 6 | discussions-to: https://github.com/algorandfoundation/ARCs/issues/124 7 | status: Final 8 | type: Standards Track 9 | category: Interface 10 | sub-category: Application 11 | created: 2022-03-09 12 | requires: 4 13 | --- 14 | 15 | # Round based datafeed oracles on Algorand 16 | 17 | ## Abstract 18 | 19 | The following document introduces conventions for building round based datafeed oracles on Algorand using the ABI defined in [ARC-4](./arc-0004.md) 20 | 21 | ## Specification 22 | 23 | The key words "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**", "**SHALL NOT**", "**SHOULD**", "**SHOULD NOT**", "**RECOMMENDED**", "**MAY**", and "**OPTIONAL**" in this document are to be interpreted as described in <a href="https://www.ietf.org/rfc/rfc2119.txt">RFC-2119</a>. 24 | 25 | > Comments like this are non-normative. 26 | 27 | An [ARC-21](./arc-0021.md) oracle **MUST** have an associated smart-contract implementaing the ABI interface described below. 28 | 29 | ### ABI Interface 30 | 31 | Round based datafeed oracles allow smart-contracts to get data with relevancy to a specific block number, for example the ALGO price at a specific round. 32 | 33 | The associated smart contract **MUST** implement the following ABI interface: 34 | ```json 35 | { 36 | "name": "ARC_0021", 37 | "desc": "Interface for a round based datafeed oracle", 38 | "methods": [ 39 | { 40 | "name": "get", 41 | "desc": "Get data from the oracle for a specific round", 42 | "args": [ 43 | { "type": "uint64", "name": "round", "desc": "The desired round" }, 44 | { "type": "byte[]", "name": "user_data", "desc": "Optional: Extra data provided by the user. Pass an empty slice if not used." } 45 | ], 46 | "returns": { "type": "byte[]", "desc": "The oracle's response. If the data doesn't exist, the response is an empty slice." } 47 | }, 48 | { 49 | "name": "must_get", 50 | "desc": "Get data from the oracle for a specific round. Panics if the data doesn't exist.", 51 | "args": [ 52 | { "type": "uint64", "name": "round", "desc": "The desired round" }, 53 | { "type": "byte[]", "name": "user_data", "desc": "Optional: Extra data provided by the user. Pass an empty slice if not used." } 54 | ], 55 | "returns": { "type": "byte[]", "desc": "The oracle's response" } 56 | }, 57 | /** Optional */ 58 | { 59 | "name": "get_closest", 60 | "desc": "Get data from the oracle closest to a specified round by searching over past rounds.", 61 | "args": [ 62 | { "type": "uint64", "name": "round", "desc": "The desired round" }, 63 | { "type": "uint64", "name": "search_span", "desc": "Threshold for number of rounds in the past to search on." } 64 | { "type": "byte[]", "name": "user_data", "desc": "Optional: Extra data provided by the user. Pass an empty slice if not used." } 65 | ], 66 | "returns": { "type": "(uint64,byte[])", "desc": "The closest round and the oracle's response for that round. If the data doesn't exist, the round is set to 0 and the response is an empty slice." } 67 | }, 68 | /** Optional */ 69 | { 70 | "name": "must_get_closest", 71 | "desc": "Get data from the oracle closest to a specified round by searching over past rounds. Panics if no data is found within the specified range.", 72 | "args": [ 73 | { "type": "uint64", "name": "round", "desc": "The desired round" }, 74 | { "type": "uint64", "name": "search_span", "desc": "Threshold for number of rounds in the past to search on." } 75 | { "type": "byte[]", "name": "user_data", "desc": "Optional: Extra data provided by the user. Pass an empty slice if not used." } 76 | ], 77 | "returns": { "type": "(uint64,byte[])", "desc": "The closest round and the oracle's response for that round." } 78 | } 79 | ] 80 | } 81 | ``` 82 | 83 | ### Method boundaries 84 | 85 | - All of `get`, `must_get`, `get_closest` and `must_get_closest` functions **MUST NOT** use local state. 86 | - Optional arguments of type `byte[]` that are not used are expected to be passed as an empty byte slice. 87 | 88 | ## Rationale 89 | 90 | The goal of these conventions is to make it easier for smart-contracts to interact with off-chain data sources. 91 | 92 | ## Security Considerations 93 | 94 | None. 95 | 96 | ## Copyright 97 | 98 | Copyright and related rights waived via <a href="https://creativecommons.org/publicdomain/zero/1.0/">CCO</a>. 99 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/developer:docs:run-a-node:participate:offline.md: -------------------------------------------------------------------------------- ```markdown 1 | title: Register offline 2 | 3 | To mark an account **offline** send a key registration transaction to the network authorized by the account to be marked offline. The signal to mark the sending account offline is the issuance of a `"type": "keyreg"` transaction that does not contain any participation key-related fields (i.e. they are all set to null values) 4 | 5 | !!! info "Important" 6 | Just like with online keyreg transactions. The moment a key registration transaction is confirmed by the network it takes 320 rounds for the change to take effect. So, if a key registration is confirmed in round 5000, the account will stop participating at round 5320. 7 | 8 | # Create an offline key registration transaction 9 | 10 | Create an offline key registration transaction for the address: `EW64GC6F24M7NDSC5R3ES4YUVE3ZXXNMARJHDCCCLIHZU6TBEOC7XRSBG4` by inserting the following code snippet into the construction portion of the example shown in [Authorizing Transactions Offline](../../../get-details/transactions/offline_transactions#unsigned-transaction-file-operations). The file produced and displayed with `goal clerk inspect` should look almost exactly the same as the output shown in the [constructing a register offline transaction example](../../../get-details/transactions#register-account-offline). 11 | 12 | === "Python" 13 | <!-- ===PYSDK_TRANSACTION_KEYREG_OFFLINE_CREATE=== --> 14 | ```python 15 | # get suggested parameters 16 | params = algod_client.suggested_params() 17 | 18 | # create keyreg transaction to take this account offline 19 | offline_keyreg = transaction.KeyregTxn( 20 | sender="EW64GC6F24M7NDSC5R3ES4YUVE3ZXXNMARJHDCCCLIHZU6TBEOC7XRSBG4", 21 | sp=params, 22 | votekey=None, 23 | selkey=None, 24 | votefst=None, 25 | votelst=None, 26 | votekd=None, 27 | ) 28 | print(online_keyreg.dictify()) 29 | ``` 30 | [Snippet Source](https://github.com/algorand/py-algorand-sdk/blob/examples/examples/participation.py#L29-L43) 31 | <!-- ===PYSDK_TRANSACTION_KEYREG_OFFLINE_CREATE=== --> 32 | 33 | === "JavaScript" 34 | <!-- ===JSSDK_TRANSACTION_KEYREG_OFFLINE_CREATE=== --> 35 | ```javascript 36 | // get suggested parameters 37 | const suggestedParams = await algodClient.getTransactionParams().do(); 38 | // create keyreg transaction to take this account offline 39 | const offlineKeyReg = algosdk.makeKeyRegistrationTxnWithSuggestedParamsFromObject( 40 | { 41 | from: addr, 42 | suggestedParams, 43 | } 44 | ); 45 | console.log(offlineKeyReg.get_obj_for_encoding()); 46 | ``` 47 | [Snippet Source](https://github.com/algorand/js-algorand-sdk/blob/examples/examples/participation.ts#L44-L54) 48 | <!-- ===JSSDK_TRANSACTION_KEYREG_OFFLINE_CREATE=== --> 49 | 50 | === "Go" 51 | <!-- ===GOSDK_TRANSACTION_KEYREG_OFFLINE_CREATE=== --> 52 | <!-- ===GOSDK_TRANSACTION_KEYREG_OFFLINE_CREATE=== --> 53 | 54 | === "Java" 55 | <!-- ===JAVASDK_TRANSACTION_KEYREG_OFFLINE_CREATE=== --> 56 | ```java 57 | // create keyreg transaction to take this account offline 58 | Transaction keyRegOfflineTxn = Transaction.KeyRegistrationTransactionBuilder().suggestedParams(sp) 59 | .sender(address) 60 | .build(); 61 | ``` 62 | [Snippet Source](https://github.com/algorand/java-algorand-sdk/blob/examples/examples/src/main/java/com/algorand/examples/Participation.java#L37-L41) 63 | <!-- ===JAVASDK_TRANSACTION_KEYREG_OFFLINE_CREATE=== --> 64 | 65 | === "goal" 66 | <!-- ===GOAL_TRANSACTION_KEYREG_OFFLINE_CREATE=== --> 67 | ```zsh 68 | $ goal account changeonlinestatus --address=EW64GC6F24M7NDSC5R3ES4YUVE3ZXXNMARJHDCCCLIHZU6TBEOC7XRSBG4 --fee=1000 --firstvalid=7000000 --lastvalid=7001000 --online=false --txfile=offline.txn 69 | ``` 70 | <!-- ===GOAL_TRANSACTION_KEYREG_OFFLINE_CREATE=== --> 71 | 72 | # Authorize and Send the Transaction 73 | Use the appropriate [authorization method](../../../get-details/transactions/signatures) to sign the transaction. 74 | 75 | !!! tip 76 | It is recommended that you authorize the transaction offline to protect the security of your private keys, especially for high-value participating accounts. 77 | 78 | Once the transaction is signed, wait for the network to reach the transaction's first valid round and then [submit](../../../archive/build-apps/hello_world#submit-the-transaction) and the SDK Method "wait for confirmation". 79 | 80 | **See also** 81 | 82 | - [Key Registration Transactions](../../../get-details/transactions#key-registration-transaction) 83 | - [Register account offline](../../../get-details/transactions#register-account-offline) ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:README.md: -------------------------------------------------------------------------------- ```markdown 1 | # js-algorand-sdk 2 | 3 | [](https://dl.circleci.com/status-badge/redirect/gh/algorand/js-algorand-sdk/tree/develop) [](https://www.npmjs.com/package/algosdk) 4 | 5 | AlgoSDK is the official JavaScript library for communicating with the Algorand network. It's designed for modern browsers and Node.js. 6 | 7 | ## Installation 8 | 9 | ### [Node.js](https://nodejs.org/en/download/) 10 | 11 | ``` 12 | $ npm install algosdk 13 | ``` 14 | 15 | > This package provides TypeScript types, but you will need [TypeScript](https://www.typescriptlang.org/) version 4.2 or higher to use them properly. 16 | 17 | ### Browser 18 | 19 | Include a minified browser bundle directly in your HTML like so: 20 | 21 | ```html 22 | <script 23 | src="https://unpkg.com/[email protected]/dist/browser/algosdk.min.js" 24 | integrity="sha384-R84o0hH3cBFIzv9uqyKcDNfDi/6jgn1MrS1/tOMDWxeh8hWfOLuRoMy0LekUm2KL" 25 | crossorigin="anonymous" 26 | ></script> 27 | ``` 28 | 29 | or 30 | 31 | ```html 32 | <script 33 | src="https://cdn.jsdelivr.net/npm/[email protected]/dist/browser/algosdk.min.js" 34 | integrity="sha384-R84o0hH3cBFIzv9uqyKcDNfDi/6jgn1MrS1/tOMDWxeh8hWfOLuRoMy0LekUm2KL" 35 | crossorigin="anonymous" 36 | ></script> 37 | ``` 38 | 39 | Information about hosting the package for yourself, finding the browser bundles of previous versions, and computing the SRI hash is [available here](FAQ.md). 40 | 41 | ## Quick Start 42 | 43 | ```javascript 44 | const token = 'Your algod API token'; 45 | const server = 'http://127.0.0.1'; 46 | const port = 8080; 47 | const client = new algosdk.Algodv2(token, server, port); 48 | 49 | (async () => { 50 | console.log(await client.status().do()); 51 | })().catch((e) => { 52 | console.log(e); 53 | }); 54 | ``` 55 | 56 | ## Documentation 57 | 58 | Documentation for this SDK is available here: https://algorand.github.io/js-algorand-sdk/. Additional resources are available on https://developer.algorand.org. 59 | 60 | ## Examples 61 | 62 | Running examples requires access to a running node. Follow the instructions in Algorand's [developer resources](https://developer.algorand.org/docs/run-a-node/setup/install/) to install a node on your computer. 63 | 64 | **As portions of the codebase are written in TypeScript, example files cannot be run directly using `node`**. Please refer to the instructions described in the [examples/README.md](examples/README.md) file for more information regarding running the examples. 65 | 66 | ## SDK Development 67 | 68 | ### Building 69 | 70 | To build a new version of the library, run: 71 | 72 | ```bash 73 | npm run build 74 | ``` 75 | 76 | ### Generating Documentation 77 | 78 | To generate the documentation website, run: 79 | 80 | ```bash 81 | npm run docs 82 | ``` 83 | 84 | The static website will be located in the `docs/` directory. 85 | 86 | ### Testing 87 | 88 | We have two test suites: mocha tests in this repo, and the Algorand SDK test suite from https://github.com/algorand/algorand-sdk-testing. 89 | 90 | #### Node.js 91 | 92 | To run the mocha tests in Node.js, run: 93 | 94 | ```bash 95 | npm test 96 | ``` 97 | 98 | To run the SDK test suite in Node.js, run: 99 | 100 | ```bash 101 | make docker-test 102 | ``` 103 | 104 | #### Browsers 105 | 106 | The test suites can also run in browsers. To do so, set the environment variable `TEST_BROWSER` to 107 | one of our supported browsers. Currently we support testing in `chrome` and `firefox`. When 108 | `TEST_BROWSER` is set, the mocha and SDK test suites will run in that browser. 109 | 110 | For example, to run mocha tests in Chrome: 111 | 112 | ```bash 113 | TEST_BROWSER=chrome npm test 114 | ``` 115 | 116 | And to run SDK tests in Firefox: 117 | 118 | ```bash 119 | TEST_BROWSER=firefox make docker-test 120 | ``` 121 | 122 | ### Code Style 123 | 124 | This project enforces a modified version of the [Airbnb code style](https://github.com/airbnb/javascript). 125 | 126 | We've setup linters and formatters to help catch errors and improve the development experience: 127 | 128 | - [Prettier](https://prettier.io/) – ensures that code is formatted in a readable way. 129 | - [ESLint](https://eslint.org/) — checks code for antipatterns as well as formatting. 130 | 131 | > If using the Visual Studio Code editor with the [recommended extensions](.vscode/extensions.json), ESLint errors should be highlighted in red and the Prettier extension should format code on every save. 132 | 133 | #### Precommit Hook 134 | 135 | The linters and formatters listed above should run automatically on each commit to catch errors early and save CI running time. 136 | 137 | ## License 138 | 139 | js-algorand-sdk is licensed under an MIT license. See the [LICENSE](https://github.com/algorand/js-algorand-sdk/blob/master/LICENSE) file for details. 140 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:indexerModels.AccountParticipation.md: -------------------------------------------------------------------------------- ```markdown 1 | [algosdk](../README.md) / [Exports](../modules.md) / [indexerModels](../modules/indexerModels.md) / AccountParticipation 2 | 3 | # Class: AccountParticipation 4 | 5 | [indexerModels](../modules/indexerModels.md).AccountParticipation 6 | 7 | AccountParticipation describes the parameters used by this account in consensus 8 | protocol. 9 | 10 | ## Hierarchy 11 | 12 | - `default` 13 | 14 | ↳ **`AccountParticipation`** 15 | 16 | ## Table of contents 17 | 18 | ### Constructors 19 | 20 | - [constructor](indexerModels.AccountParticipation.md#constructor) 21 | 22 | ### Properties 23 | 24 | - [attribute\_map](indexerModels.AccountParticipation.md#attribute_map) 25 | - [selectionParticipationKey](indexerModels.AccountParticipation.md#selectionparticipationkey) 26 | - [stateProofKey](indexerModels.AccountParticipation.md#stateproofkey) 27 | - [voteFirstValid](indexerModels.AccountParticipation.md#votefirstvalid) 28 | - [voteKeyDilution](indexerModels.AccountParticipation.md#votekeydilution) 29 | - [voteLastValid](indexerModels.AccountParticipation.md#votelastvalid) 30 | - [voteParticipationKey](indexerModels.AccountParticipation.md#voteparticipationkey) 31 | 32 | ### Methods 33 | 34 | - [get\_obj\_for\_encoding](indexerModels.AccountParticipation.md#get_obj_for_encoding) 35 | - [from\_obj\_for\_encoding](indexerModels.AccountParticipation.md#from_obj_for_encoding) 36 | 37 | ## Constructors 38 | 39 | ### constructor 40 | 41 | • **new AccountParticipation**(`«destructured»`) 42 | 43 | Creates a new `AccountParticipation` object. 44 | 45 | #### Parameters 46 | 47 | | Name | Type | 48 | | :------ | :------ | 49 | | `«destructured»` | `Object` | 50 | | › `selectionParticipationKey` | `string` \| `Uint8Array` | 51 | | › `stateProofKey?` | `string` \| `Uint8Array` | 52 | | › `voteFirstValid` | `number` \| `bigint` | 53 | | › `voteKeyDilution` | `number` \| `bigint` | 54 | | › `voteLastValid` | `number` \| `bigint` | 55 | | › `voteParticipationKey` | `string` \| `Uint8Array` | 56 | 57 | #### Overrides 58 | 59 | BaseModel.constructor 60 | 61 | #### Defined in 62 | 63 | client/v2/indexer/models/types.ts:528 64 | 65 | ## Properties 66 | 67 | ### attribute\_map 68 | 69 | • **attribute\_map**: `Record`\<`string`, `string`\> 70 | 71 | #### Inherited from 72 | 73 | BaseModel.attribute\_map 74 | 75 | #### Defined in 76 | 77 | client/v2/basemodel.ts:56 78 | 79 | ___ 80 | 81 | ### selectionParticipationKey 82 | 83 | • **selectionParticipationKey**: `Uint8Array` 84 | 85 | Selection public key (if any) currently registered for this round. 86 | 87 | #### Defined in 88 | 89 | client/v2/indexer/models/types.ts:492 90 | 91 | ___ 92 | 93 | ### stateProofKey 94 | 95 | • `Optional` **stateProofKey**: `Uint8Array` 96 | 97 | Root of the state proof key (if any) 98 | 99 | #### Defined in 100 | 101 | client/v2/indexer/models/types.ts:517 102 | 103 | ___ 104 | 105 | ### voteFirstValid 106 | 107 | • **voteFirstValid**: `number` \| `bigint` 108 | 109 | First round for which this participation is valid. 110 | 111 | #### Defined in 112 | 113 | client/v2/indexer/models/types.ts:497 114 | 115 | ___ 116 | 117 | ### voteKeyDilution 118 | 119 | • **voteKeyDilution**: `number` \| `bigint` 120 | 121 | Number of subkeys in each batch of participation keys. 122 | 123 | #### Defined in 124 | 125 | client/v2/indexer/models/types.ts:502 126 | 127 | ___ 128 | 129 | ### voteLastValid 130 | 131 | • **voteLastValid**: `number` \| `bigint` 132 | 133 | Last round for which this participation is valid. 134 | 135 | #### Defined in 136 | 137 | client/v2/indexer/models/types.ts:507 138 | 139 | ___ 140 | 141 | ### voteParticipationKey 142 | 143 | • **voteParticipationKey**: `Uint8Array` 144 | 145 | root participation public key (if any) currently registered for this round. 146 | 147 | #### Defined in 148 | 149 | client/v2/indexer/models/types.ts:512 150 | 151 | ## Methods 152 | 153 | ### get\_obj\_for\_encoding 154 | 155 | ▸ **get_obj_for_encoding**(`binary?`): `Record`\<`string`, `any`\> 156 | 157 | Get an object ready for encoding to either JSON or msgpack. 158 | 159 | #### Parameters 160 | 161 | | Name | Type | Default value | Description | 162 | | :------ | :------ | :------ | :------ | 163 | | `binary` | `boolean` | `false` | Use true to indicate that the encoding can handle raw binary objects (Uint8Arrays). Use false to indicate that raw binary objects should be converted to base64 strings. True should be used for objects that will be encoded with msgpack, and false should be used for objects that will be encoded with JSON. | 164 | 165 | #### Returns 166 | 167 | `Record`\<`string`, `any`\> 168 | 169 | #### Inherited from 170 | 171 | BaseModel.get\_obj\_for\_encoding 172 | 173 | #### Defined in 174 | 175 | client/v2/basemodel.ts:65 176 | 177 | ___ 178 | 179 | ### from\_obj\_for\_encoding 180 | 181 | ▸ `Static` **from_obj_for_encoding**(`data`): [`AccountParticipation`](indexerModels.AccountParticipation.md) 182 | 183 | #### Parameters 184 | 185 | | Name | Type | 186 | | :------ | :------ | 187 | | `data` | `Record`\<`string`, `any`\> | 188 | 189 | #### Returns 190 | 191 | [`AccountParticipation`](indexerModels.AccountParticipation.md) 192 | 193 | #### Defined in 194 | 195 | client/v2/indexer/models/types.ts:571 196 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy-categories/arcs.json: -------------------------------------------------------------------------------- ```json 1 | { 2 | "name": "Algorand Request for Comments", 3 | "description": "Specifications and standards for the Algorand blockchain", 4 | "path": "arcs", 5 | "documents": [ 6 | { 7 | "name": "README", 8 | "description": "Overview of arcs", 9 | "path": "arcs:README.md" 10 | }, 11 | { 12 | "name": "ARC Template", 13 | "description": "Template for creating new arcs", 14 | "path": "arcs:ARC-template.md" 15 | } 16 | ], 17 | "subcategories": { 18 | "specs": { 19 | "name": "Specifications", 20 | "description": "Individual ARC specifications", 21 | "path": "arcs:specs", 22 | "documents": [ 23 | {"name": "ARC-0000", "path": "arcs:specs:arc-0000.md"}, 24 | {"name": "ARC-0001", "path": "arcs:specs:arc-0001.md"}, 25 | {"name": "ARC-0002", "path": "arcs:specs:arc-0002.md"}, 26 | {"name": "ARC-0003", "path": "arcs:specs:arc-0003.md"}, 27 | {"name": "ARC-0004", "path": "arcs:specs:arc-0004.md"}, 28 | {"name": "ARC-0005", "path": "arcs:specs:arc-0005.md"}, 29 | {"name": "ARC-0006", "path": "arcs:specs:arc-0006.md"}, 30 | {"name": "ARC-0007", "path": "arcs:specs:arc-0007.md"}, 31 | {"name": "ARC-0008", "path": "arcs:specs:arc-0008.md"}, 32 | {"name": "ARC-0009", "path": "arcs:specs:arc-0009.md"}, 33 | {"name": "ARC-0010", "path": "arcs:specs:arc-0010.md"}, 34 | {"name": "ARC-0011", "path": "arcs:specs:arc-0011.md"}, 35 | {"name": "ARC-0012", "path": "arcs:specs:arc-0012.md"}, 36 | {"name": "ARC-0015", "path": "arcs:specs:arc-0015.md"}, 37 | {"name": "ARC-0016", "path": "arcs:specs:arc-0016.md"}, 38 | {"name": "ARC-0018", "path": "arcs:specs:arc-0018.md"}, 39 | {"name": "ARC-0019", "path": "arcs:specs:arc-0019.md"}, 40 | {"name": "ARC-0020", "path": "arcs:specs:arc-0020.md"}, 41 | {"name": "ARC-0021", "path": "arcs:specs:arc-0021.md"}, 42 | {"name": "ARC-0022", "path": "arcs:specs:arc-0022.md"}, 43 | {"name": "ARC-0023", "path": "arcs:specs:arc-0023.md"}, 44 | {"name": "ARC-0025", "path": "arcs:specs:arc-0025.md"}, 45 | {"name": "ARC-0026", "path": "arcs:specs:arc-0026.md"}, 46 | {"name": "ARC-0028", "path": "arcs:specs:arc-0028.md"}, 47 | {"name": "ARC-0032", "path": "arcs:specs:arc-0032.md"}, 48 | {"name": "ARC-0033", "path": "arcs:specs:arc-0033.md"}, 49 | {"name": "ARC-0034", "path": "arcs:specs:arc-0034.md"}, 50 | {"name": "ARC-0035", "path": "arcs:specs:arc-0035.md"}, 51 | {"name": "ARC-0036", "path": "arcs:specs:arc-0036.md"}, 52 | {"name": "ARC-0042", "path": "arcs:specs:arc-0042.md"}, 53 | {"name": "ARC-0047", "path": "arcs:specs:arc-0047.md"}, 54 | {"name": "ARC-0048", "path": "arcs:specs:arc-0048.md"}, 55 | {"name": "ARC-0049", "path": "arcs:specs:arc-0049.md"}, 56 | {"name": "ARC-0054", "path": "arcs:specs:arc-0054.md"}, 57 | {"name": "ARC-0055", "path": "arcs:specs:arc-0055.md"}, 58 | {"name": "ARC-0056", "path": "arcs:specs:arc-0056.md"}, 59 | {"name": "ARC-0059", "path": "arcs:specs:arc-0059.md"}, 60 | {"name": "ARC-0062", "path": "arcs:specs:arc-0062.md"}, 61 | {"name": "ARC-0065", "path": "arcs:specs:arc-0065.md"}, 62 | {"name": "ARC-0069", "path": "arcs:specs:arc-0069.md"}, 63 | {"name": "ARC-0072", "path": "arcs:specs:arc-0072.md"}, 64 | {"name": "ARC-0073", "path": "arcs:specs:arc-0073.md"}, 65 | {"name": "ARC-0074", "path": "arcs:specs:arc-0074.md"}, 66 | {"name": "ARC-0076", "path": "arcs:specs:arc-0076.md"}, 67 | {"name": "ARC-0078", "path": "arcs:specs:arc-0078.md"}, 68 | {"name": "ARC-0079", "path": "arcs:specs:arc-0079.md"}, 69 | {"name": "ARC-0200", "path": "arcs:specs:arc-0200.md"} 70 | ] 71 | }, 72 | "assets": { 73 | "name": "Assets", 74 | "description": "Asset-related ARC resources", 75 | "path": "arcs:assets", 76 | "documents": [ 77 | {"name": "ARC-0012 README", "path": "arcs:assets:arc-0012:README.md"}, 78 | {"name": "ARC-0062 README", "path": "arcs:assets:arc-0062:README.md"}, 79 | {"name": "ARC-0034 Template Form", "path": "arcs:assets:arc-0034:TemplateForm.md"} 80 | ] 81 | }, 82 | "pages": { 83 | "name": "Pages", 84 | "description": "Additional ARC documentation pages", 85 | "path": "arcs:pages", 86 | "documents": [ 87 | {"name": "NFTs", "path": "arcs:pages:nfts.md"}, 88 | {"name": "Wallets", "path": "arcs:pages:wallets.md"} 89 | ] 90 | } 91 | } 92 | } 93 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/developer:python:code:example:struct_in_box.md: -------------------------------------------------------------------------------- ```markdown 1 | # Structs in Box Storage for Algorand Smart Contracts 2 | 3 | This guide demonstrates how to use structs with box storage in Algorand smart contracts using Python. Box storage with structs provides a way to store complex data structures efficiently. 4 | 5 | ## Defining a Struct 6 | 7 | ```python 8 | from algopy import BoxMap, arc4 9 | 10 | class UserStruct(arc4.Struct): 11 | name: arc4.String 12 | id: arc4.UInt64 13 | asset: arc4.UInt64 14 | ``` 15 | 16 | The struct definition includes: 17 | - Type annotations for each field 18 | - ARC4-compatible data types 19 | - Clear field naming 20 | 21 | ## Implementing Box Storage with Structs 22 | 23 | ```python 24 | class StructInBoxMap(arc4.ARC4Contract): 25 | def __init__(self) -> None: 26 | # Initialize box map with UInt64 keys and UserStruct values 27 | self.user_map = BoxMap( 28 | arc4.UInt64, # Key type 29 | UserStruct, # Value type 30 | key_prefix="users" # Optional prefix for organization 31 | ) 32 | ``` 33 | 34 | ## Basic Operations 35 | 36 | ### Setting Values 37 | 38 | ```python 39 | @arc4.abimethod 40 | def box_map_set(self, key: arc4.UInt64, value: UserStruct) -> bool: 41 | # Always use copy() when storing structs 42 | self.user_map[key] = value.copy() 43 | 44 | # Verify storage 45 | assert self.user_map[key] == value 46 | return True 47 | 48 | @arc4.abimethod 49 | def box_map_test(self) -> bool: 50 | key_0 = arc4.UInt64(0) 51 | 52 | # Create struct instance 53 | value = UserStruct( 54 | arc4.String("testName"), 55 | arc4.UInt64(70), 56 | arc4.UInt64(2) 57 | ) 58 | 59 | # Store and verify 60 | self.user_map[key_0] = value.copy() 61 | 62 | # Verify byte length 63 | assert self.user_map[key_0].bytes.length == value.bytes.length 64 | assert self.user_map.length(key_0) == value.bytes.length 65 | return True 66 | ``` 67 | 68 | ### Getting Values 69 | 70 | ```python 71 | @arc4.abimethod 72 | def box_map_get(self, key: arc4.UInt64) -> UserStruct: 73 | # Retrieve struct from box storage 74 | return self.user_map[key] 75 | ``` 76 | 77 | ### Checking Existence 78 | 79 | ```python 80 | @arc4.abimethod 81 | def box_map_exists(self, key: arc4.UInt64) -> bool: 82 | # Check if key exists in box map 83 | return key in self.user_map 84 | ``` 85 | 86 | ## Usage Examples 87 | 88 | ### Creating and Storing a User 89 | 90 | ```python 91 | # Create user struct 92 | user = UserStruct( 93 | name=arc4.String("Alice"), 94 | id=arc4.UInt64(1), 95 | asset=arc4.UInt64(100) 96 | ) 97 | 98 | # Store in box map 99 | key = arc4.UInt64(1) 100 | box_map_set(key, user) 101 | ``` 102 | 103 | ### Retrieving User Data 104 | 105 | ```python 106 | # Get user by key 107 | key = arc4.UInt64(1) 108 | user = box_map_get(key) 109 | 110 | # Access struct fields 111 | name = user.name # arc4.String 112 | user_id = user.id # arc4.UInt64 113 | asset = user.asset # arc4.UInt64 114 | ``` 115 | 116 | ## Best Practices 117 | 118 | 1. **Struct Design**: 119 | - Use appropriate field types 120 | - Keep structs focused and organized 121 | - Consider field order for efficiency 122 | - Document struct purpose and usage 123 | 124 | 2. **Data Management**: 125 | - Always use copy() when storing structs 126 | - Verify stored data after writing 127 | - Check existence before reading 128 | - Handle missing data gracefully 129 | 130 | 3. **Storage Efficiency**: 131 | - Consider struct size limitations 132 | - Use appropriate key prefixes 133 | - Clean up unused storage 134 | - Monitor storage usage 135 | 136 | 4. **Type Safety**: 137 | - Use proper type annotations 138 | - Verify field types 139 | - Handle type conversions carefully 140 | - Test with various data types 141 | 142 | 5. **Error Handling**: 143 | - Check for missing keys 144 | - Validate struct data 145 | - Handle storage errors 146 | - Provide clear error messages 147 | 148 | 6. **Performance**: 149 | - Minimize storage operations 150 | - Use efficient data structures 151 | - Consider storage costs 152 | - Optimize access patterns 153 | 154 | ## Common Patterns 155 | 156 | 1. **User Data Storage**: 157 | ```python 158 | user = UserStruct( 159 | arc4.String("username"), 160 | arc4.UInt64(user_id), 161 | arc4.UInt64(balance) 162 | ) 163 | ``` 164 | 165 | 2. **Batch Operations**: 166 | ```python 167 | def update_multiple_users(self, users: list[UserStruct]) -> None: 168 | for i, user in enumerate(users): 169 | self.user_map[arc4.UInt64(i)] = user.copy() 170 | ``` 171 | 172 | 3. **Data Validation**: 173 | ```python 174 | def validate_user(self, user: UserStruct) -> bool: 175 | return ( 176 | user.name.native != "" 177 | and user.id.native > 0 178 | and user.asset.native >= 0 179 | ) 180 | ``` 181 | 182 | This guide demonstrates how to effectively use structs with box storage in Algorand smart contracts. Understanding these concepts is crucial for developing applications that need to store and manage complex data structures efficiently. 183 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:code:interfaces:types_transaction.SendTransactionParams.md: -------------------------------------------------------------------------------- ```markdown 1 | [@algorandfoundation/algokit-utils](../README.md) / [types/transaction](../modules/types_transaction.md) / SendTransactionParams 2 | 3 | # Interface: SendTransactionParams 4 | 5 | [types/transaction](../modules/types_transaction.md).SendTransactionParams 6 | 7 | The sending configuration for a transaction 8 | 9 | ## Hierarchy 10 | 11 | - **`SendTransactionParams`** 12 | 13 | ↳ [`AppCallParams`](types_app.AppCallParams.md) 14 | 15 | ↳ [`CreateAssetParams`](types_asset.CreateAssetParams.md) 16 | 17 | ↳ [`AssetOptInParams`](types_asset.AssetOptInParams.md) 18 | 19 | ↳ [`AlgoTransferParams`](types_transfer.AlgoTransferParams.md) 20 | 21 | ↳ [`AlgoRekeyParams`](types_transfer.AlgoRekeyParams.md) 22 | 23 | ↳ [`EnsureFundedParams`](types_transfer.EnsureFundedParams.md) 24 | 25 | ↳ [`TransferAssetParams`](types_transfer.TransferAssetParams.md) 26 | 27 | ## Table of contents 28 | 29 | ### Properties 30 | 31 | - [atc](types_transaction.SendTransactionParams.md#atc) 32 | - [fee](types_transaction.SendTransactionParams.md#fee) 33 | - [maxFee](types_transaction.SendTransactionParams.md#maxfee) 34 | - [maxRoundsToWaitForConfirmation](types_transaction.SendTransactionParams.md#maxroundstowaitforconfirmation) 35 | - [populateAppCallResources](types_transaction.SendTransactionParams.md#populateappcallresources) 36 | - [skipSending](types_transaction.SendTransactionParams.md#skipsending) 37 | - [skipWaiting](types_transaction.SendTransactionParams.md#skipwaiting) 38 | - [suppressLog](types_transaction.SendTransactionParams.md#suppresslog) 39 | 40 | ## Properties 41 | 42 | ### atc 43 | 44 | • `Optional` **atc**: `AtomicTransactionComposer` 45 | 46 | An optional `AtomicTransactionComposer` to add the transaction to, if specified then `skipSending: undefined` has the same effect as `skipSending: true` 47 | 48 | #### Defined in 49 | 50 | [src/types/transaction.ts:36](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L36) 51 | 52 | ___ 53 | 54 | ### fee 55 | 56 | • `Optional` **fee**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) 57 | 58 | The flat fee you want to pay, useful for covering extra fees in a transaction group or app call 59 | 60 | #### Defined in 61 | 62 | [src/types/transaction.ts:40](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L40) 63 | 64 | ___ 65 | 66 | ### maxFee 67 | 68 | • `Optional` **maxFee**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) 69 | 70 | The maximum fee that you are happy to pay (default: unbounded) - if this is set it's possible the transaction could get rejected during network congestion 71 | 72 | #### Defined in 73 | 74 | [src/types/transaction.ts:42](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L42) 75 | 76 | ___ 77 | 78 | ### maxRoundsToWaitForConfirmation 79 | 80 | • `Optional` **maxRoundsToWaitForConfirmation**: `number` 81 | 82 | The maximum number of rounds to wait for confirmation, only applies if `skipWaiting` is `undefined` or `false`, default: wait up to 5 rounds 83 | 84 | #### Defined in 85 | 86 | [src/types/transaction.ts:44](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L44) 87 | 88 | ___ 89 | 90 | ### populateAppCallResources 91 | 92 | • `Optional` **populateAppCallResources**: `boolean` 93 | 94 | Whether to use simulate to automatically populate app call resources in the txn objects. Defaults to true when there are app calls in the group. 95 | 96 | #### Defined in 97 | 98 | [src/types/transaction.ts:46](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L46) 99 | 100 | ___ 101 | 102 | ### skipSending 103 | 104 | • `Optional` **skipSending**: `boolean` 105 | 106 | Whether to skip signing and sending the transaction to the chain (default: transaction signed and sent to chain, unless `atc` specified) 107 | and instead just return the raw transaction, e.g. so you can add it to a group of transactions 108 | 109 | #### Defined in 110 | 111 | [src/types/transaction.ts:32](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L32) 112 | 113 | ___ 114 | 115 | ### skipWaiting 116 | 117 | • `Optional` **skipWaiting**: `boolean` 118 | 119 | Whether to skip waiting for the submitted transaction (only relevant if `skipSending` is `false` or unset) 120 | 121 | #### Defined in 122 | 123 | [src/types/transaction.ts:34](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L34) 124 | 125 | ___ 126 | 127 | ### suppressLog 128 | 129 | • `Optional` **suppressLog**: `boolean` 130 | 131 | Whether to suppress log messages from transaction send, default: do not suppress 132 | 133 | #### Defined in 134 | 135 | [src/types/transaction.ts:38](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L38) 136 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:modelsv2.DryrunRequest.md: -------------------------------------------------------------------------------- ```markdown 1 | [algosdk](../README.md) / [Exports](../modules.md) / [modelsv2](../modules/modelsv2.md) / DryrunRequest 2 | 3 | # Class: DryrunRequest 4 | 5 | [modelsv2](../modules/modelsv2.md).DryrunRequest 6 | 7 | Request data type for dryrun endpoint. Given the Transactions and simulated 8 | ledger state upload, run TEAL scripts and return debugging information. 9 | 10 | ## Hierarchy 11 | 12 | - `default` 13 | 14 | ↳ **`DryrunRequest`** 15 | 16 | ## Table of contents 17 | 18 | ### Constructors 19 | 20 | - [constructor](modelsv2.DryrunRequest.md#constructor) 21 | 22 | ### Properties 23 | 24 | - [accounts](modelsv2.DryrunRequest.md#accounts) 25 | - [apps](modelsv2.DryrunRequest.md#apps) 26 | - [attribute\_map](modelsv2.DryrunRequest.md#attribute_map) 27 | - [latestTimestamp](modelsv2.DryrunRequest.md#latesttimestamp) 28 | - [protocolVersion](modelsv2.DryrunRequest.md#protocolversion) 29 | - [round](modelsv2.DryrunRequest.md#round) 30 | - [sources](modelsv2.DryrunRequest.md#sources) 31 | - [txns](modelsv2.DryrunRequest.md#txns) 32 | 33 | ### Methods 34 | 35 | - [get\_obj\_for\_encoding](modelsv2.DryrunRequest.md#get_obj_for_encoding) 36 | - [from\_obj\_for\_encoding](modelsv2.DryrunRequest.md#from_obj_for_encoding) 37 | 38 | ## Constructors 39 | 40 | ### constructor 41 | 42 | • **new DryrunRequest**(`«destructured»`) 43 | 44 | Creates a new `DryrunRequest` object. 45 | 46 | #### Parameters 47 | 48 | | Name | Type | 49 | | :------ | :------ | 50 | | `«destructured»` | `Object` | 51 | | › `accounts` | [`Account`](modelsv2.Account.md)[] | 52 | | › `apps` | [`Application`](modelsv2.Application.md)[] | 53 | | › `latestTimestamp` | `number` \| `bigint` | 54 | | › `protocolVersion` | `string` | 55 | | › `round` | `number` \| `bigint` | 56 | | › `sources` | [`DryrunSource`](modelsv2.DryrunSource.md)[] | 57 | | › `txns` | [`EncodedSignedTransaction`](../interfaces/EncodedSignedTransaction.md)[] | 58 | 59 | #### Overrides 60 | 61 | BaseModel.constructor 62 | 63 | #### Defined in 64 | 65 | client/v2/algod/models/types.ts:2647 66 | 67 | ## Properties 68 | 69 | ### accounts 70 | 71 | • **accounts**: [`Account`](modelsv2.Account.md)[] 72 | 73 | #### Defined in 74 | 75 | client/v2/algod/models/types.ts:2608 76 | 77 | ___ 78 | 79 | ### apps 80 | 81 | • **apps**: [`Application`](modelsv2.Application.md)[] 82 | 83 | #### Defined in 84 | 85 | client/v2/algod/models/types.ts:2610 86 | 87 | ___ 88 | 89 | ### attribute\_map 90 | 91 | • **attribute\_map**: `Record`\<`string`, `string`\> 92 | 93 | #### Inherited from 94 | 95 | BaseModel.attribute\_map 96 | 97 | #### Defined in 98 | 99 | client/v2/basemodel.ts:56 100 | 101 | ___ 102 | 103 | ### latestTimestamp 104 | 105 | • **latestTimestamp**: `number` \| `bigint` 106 | 107 | LatestTimestamp is available to some TEAL scripts. Defaults to the latest 108 | confirmed timestamp this algod is attached to. 109 | 110 | #### Defined in 111 | 112 | client/v2/algod/models/types.ts:2616 113 | 114 | ___ 115 | 116 | ### protocolVersion 117 | 118 | • **protocolVersion**: `string` 119 | 120 | ProtocolVersion specifies a specific version string to operate under, otherwise 121 | whatever the current protocol of the network this algod is running in. 122 | 123 | #### Defined in 124 | 125 | client/v2/algod/models/types.ts:2622 126 | 127 | ___ 128 | 129 | ### round 130 | 131 | • **round**: `number` \| `bigint` 132 | 133 | Round is available to some TEAL scripts. Defaults to the current round on the 134 | network this algod is attached to. 135 | 136 | #### Defined in 137 | 138 | client/v2/algod/models/types.ts:2628 139 | 140 | ___ 141 | 142 | ### sources 143 | 144 | • **sources**: [`DryrunSource`](modelsv2.DryrunSource.md)[] 145 | 146 | #### Defined in 147 | 148 | client/v2/algod/models/types.ts:2630 149 | 150 | ___ 151 | 152 | ### txns 153 | 154 | • **txns**: [`EncodedSignedTransaction`](../interfaces/EncodedSignedTransaction.md)[] 155 | 156 | #### Defined in 157 | 158 | client/v2/algod/models/types.ts:2632 159 | 160 | ## Methods 161 | 162 | ### get\_obj\_for\_encoding 163 | 164 | ▸ **get_obj_for_encoding**(`binary?`): `Record`\<`string`, `any`\> 165 | 166 | Get an object ready for encoding to either JSON or msgpack. 167 | 168 | #### Parameters 169 | 170 | | Name | Type | Default value | Description | 171 | | :------ | :------ | :------ | :------ | 172 | | `binary` | `boolean` | `false` | Use true to indicate that the encoding can handle raw binary objects (Uint8Arrays). Use false to indicate that raw binary objects should be converted to base64 strings. True should be used for objects that will be encoded with msgpack, and false should be used for objects that will be encoded with JSON. | 173 | 174 | #### Returns 175 | 176 | `Record`\<`string`, `any`\> 177 | 178 | #### Inherited from 179 | 180 | BaseModel.get\_obj\_for\_encoding 181 | 182 | #### Defined in 183 | 184 | client/v2/basemodel.ts:65 185 | 186 | ___ 187 | 188 | ### from\_obj\_for\_encoding 189 | 190 | ▸ `Static` **from_obj_for_encoding**(`data`): [`DryrunRequest`](modelsv2.DryrunRequest.md) 191 | 192 | #### Parameters 193 | 194 | | Name | Type | 195 | | :------ | :------ | 196 | | `data` | `Record`\<`string`, `any`\> | 197 | 198 | #### Returns 199 | 200 | [`DryrunRequest`](modelsv2.DryrunRequest.md) 201 | 202 | #### Defined in 203 | 204 | client/v2/algod/models/types.ts:2685 205 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:cli:features:tasks:mint.md: -------------------------------------------------------------------------------- ```markdown 1 | # AlgoKit Task Mint 2 | 3 | The AlgoKit Mint feature allows you to mint new fungible or non-fungible assets on the Algorand blockchain. This feature supports the creation of assets, validation of asset parameters, and uploading of asset metadata and image to IPFS using the Piñata provider. Immutable assets are compliant with [ARC3](https://arc.algorand.foundation/ARCs/arc-0003), while mutable are based using [ARC19](https://arc.algorand.foundation/ARCs/arc-0019) standard. 4 | 5 | ## Usage 6 | 7 | Available commands and possible usage as follows: 8 | 9 | ```bash 10 | Usage: algokit task mint [OPTIONS] 11 | 12 | Mint new fungible or non-fungible assets on Algorand. 13 | 14 | Options: 15 | --creator TEXT Address or alias of the asset creator. [required] 16 | -n, --name TEXT Asset name. [required] 17 | -u, --unit TEXT Unit name of the asset. [required] 18 | -t, --total INTEGER Total supply of the asset. Defaults to 1. 19 | -d, --decimals INTEGER Number of decimals. Defaults to 0. 20 | -i, --image FILE Path to the asset image file to be uploaded to IPFS. [required] 21 | -m, --metadata FILE Path to the ARC19 compliant asset metadata file to be uploaded to IPFS. If not 22 | provided, a default metadata object will be generated automatically based on asset- 23 | name, decimals and image. For more details refer to 24 | https://arc.algorand.foundation/ARCs/arc-0003#json-metadata-file-schema. 25 | --mutable / --immutable Whether the asset should be mutable or immutable. Refers to `ARC19` by default. 26 | --nft / --ft Whether the asset should be validated as NFT or FT. Refers to NFT by default and 27 | validates canonical definitions of pure or fractional NFTs as per ARC3 standard. 28 | -n, --network [localnet|testnet|mainnet] 29 | Network to use. Refers to `localnet` by default. 30 | -h, --help Show this message and exit. 31 | ``` 32 | 33 | ## Options 34 | 35 | - `--creator TEXT`: Specifies the address or alias of the asset creator. This option is required. 36 | - `-n, --name TEXT`: Specifies the asset name. This option is required. 37 | - `-u, --unit TEXT`: Specifies the unit name of the asset. This option is required. 38 | - `-t, --total INTEGER`: Specifies the total supply of the asset. Defaults to 1. 39 | - `-d, --decimals INTEGER`: Specifies the number of decimals. Defaults to 0. 40 | - `-i, --image PATH`: Specifies the path to the asset image file to be uploaded to IPFS. This option is required. 41 | - `-m, --metadata PATH`: Specifies the path to the ARC19 compliant asset metadata file to be uploaded to IPFS. If not provided, a default metadata object will be generated automatically based on asset-name, decimals and image. 42 | - `--mutable / --immutable`: Specifies whether the asset should be mutable or immutable. Refers to `ARC19` by default. 43 | - `--nft / --ft`: Specifies whether the asset should be validated as NFT or FT. Refers to NFT by default and validates canonical definitions of pure or fractional NFTs as per ARC3 standard. 44 | - `-n, --network [localnet|testnet|mainnet]`: Specifies the network to use. Refers to `localnet` by default. 45 | 46 | ## Example 47 | 48 | To mint a new asset in interactive mode, you can use the mint command as follows: 49 | 50 | ```bash 51 | $ algokit task mint 52 | ``` 53 | 54 | This will interactively prompt you for the required information, upload the asset image and metadata to IPFS using the Piñata provider and mint a new asset on the Algorand blockchain. The [asset's metadata](https://arc.algorand.foundation/ARCs/arc-0003#json-metadata-file-schema) will be generated automatically based on the provided asset name, decimals, and image. 55 | 56 | If you want to provide a custom metadata file, you can use the --metadata flag: 57 | 58 | ```bash 59 | $ algokit task mint --metadata {PATH_TO_METADATA} 60 | ``` 61 | 62 | If the minting process is successful, the asset ID and transaction ID will be output to the console. 63 | 64 | For non interactive mode, refer to usage section above for available options. 65 | 66 | > Please note, creator account must have at least 0.2 Algos available to cover minimum balance requirements. 67 | 68 | ## Further Reading 69 | 70 | For in-depth details, visit the [mint section](../../cli/index.md#mint) in the AlgoKit CLI reference documentation. 71 | ``` -------------------------------------------------------------------------------- /llms-install.md: -------------------------------------------------------------------------------- ```markdown 1 | # Algorand MCP Server Installation Guide 2 | 3 | This guide is specifically designed for AI agents like Cursor and Claude Desktop to install and configure the Algorand MCP server for use with LLM applications like Claude Desktop, Cursor and Roo Code. 4 | 5 | ## Overview 6 | 7 | The Algorand MCP server provides a comprehensive set of tools and resources for interacting with the Algorand blockchain through the Model Context Protocol (MCP). It enables AI assistants to perform operations like creating accounts, managing assets, deploying smart contracts, and executing transactions on the Algorand network. 8 | 9 | ## Prerequisites 10 | 11 | Before installation, you need: 12 | 13 | 1. Node.js v23.6.1 or later 14 | 2. npm v10.2.4 or later 15 | 3. Access to Algorand node (mainnet or testnet) 16 | 17 | ## Installation and Configuration 18 | 19 | ### Configure MCP Settings 20 | 21 | Add the Algorand MCP server configuration to your MCP settings file based on your LLM client: 22 | 23 | #### Configuration File Locations 24 | 25 | Add configuration to your chosen client's MCP settings file: 26 | 27 | ```json 28 | { 29 | "mcpServers": { 30 | "algorand": { 31 | "command": "node", 32 | "args": ["/path/to/algorand-mcp/packages/server/dist/index.js"], 33 | "disabled": false, 34 | "autoApprove": [], 35 | "env": { 36 | "ALGORAND_NETWORK": "testnet", 37 | "ALGORAND_ALGOD_API": "https://testnet-api.algonode.cloud/v2", 38 | "ALGORAND_ALGOD": "https://testnet-api.algonode.cloud", 39 | "ALGORAND_INDEXER_API": "https://testnet-idx.algonode.cloud/v2", 40 | "ALGORAND_INDEXER": "https://testnet-idx.algonode.cloud", 41 | "ITEMS_PER_PAGE": "10", 42 | "ALGORAND_AGENT_WALLET": "" 43 | } 44 | } 45 | } 46 | } 47 | ``` 48 | 49 | Replace `/path/to/algorand-mcp` with the actual path where the server is installed. 50 | 51 | ## Tool Categories 52 | 53 | ### 1. Transaction Tools 54 | - Account Transactions (payments, key registration) 55 | - Asset Transactions (create, configure, transfer) 56 | - Application Transactions (deploy, update, call) 57 | - General Transaction Tools (signing, grouping) 58 | 59 | ### 2. API Tools 60 | - Algod API (node interaction, account info) 61 | - Indexer API (blockchain queries, history) 62 | 63 | ### 3. Utility Tools 64 | - Address Management 65 | - Byte Conversion 66 | - Application Tools 67 | 68 | ### 4. ARC-26 Tools 69 | - URI Generation 70 | - QR Code Creation 71 | 72 | ## Verify Installation 73 | 74 | To verify the installation is working: 75 | 76 | 1. Restart your LLM application (Cursor, Claude Desktop, etc.) 77 | 78 | 2. Test Transaction Tools: 79 | ``` 80 | Create a payment transaction using the transaction tools. 81 | ``` 82 | 83 | 3. Test API Tools: 84 | ``` 85 | Get account information using the Algod API tools. 86 | ``` 87 | 88 | 4. Test Utility Tools: 89 | ``` 90 | Validate an Algorand address using the utility tools. 91 | ``` 92 | 93 | 5. Test Resources: 94 | ``` 95 | Access wallet information using the wallet resources. 96 | ``` 97 | 98 | ## Available Resources 99 | 100 | ### Wallet Resources 101 | - Secret/Public Key Management 102 | - Mnemonic Access 103 | - Address Management 104 | - Balance/Asset Tracking 105 | 106 | ### Knowledge Resources 107 | - Algorand Documentation 108 | - Development Guides 109 | - SDK References 110 | - Best Practices 111 | 112 | ## Troubleshooting 113 | 114 | ### Common Issues and Solutions 115 | 116 | 1. **Node Connection Issues** 117 | - Verify Algorand node URLs are correct 118 | - Check network selection (mainnet/testnet) 119 | - Ensure node is accessible 120 | 121 | 2. **Transaction Failures** 122 | - Verify account has sufficient funds 123 | - Check transaction parameters 124 | - Validate asset configurations 125 | 126 | 3. **Resource Access Issues** 127 | - Verify wallet configuration 128 | - Check environment variables 129 | - Validate resource URIs 130 | 131 | ### Tool-Specific Issues 132 | 133 | #### Transaction Tools 134 | - Group size limits 135 | - Proper transaction ordering 136 | - Signature requirements 137 | 138 | #### API Tools 139 | - Rate limiting considerations 140 | - Response pagination 141 | - Error handling 142 | 143 | #### Utility Tools 144 | - Input validation 145 | - Encoding formats 146 | - Type conversions 147 | 148 | ## Security Considerations 149 | 150 | 1. **Wallet Security** 151 | - Secure storage of mnemonics 152 | - Key management best practices 153 | - Access control 154 | 155 | 2. **Transaction Safety** 156 | - Parameter validation 157 | - Amount verification 158 | - Asset verification 159 | 160 | 3. **API Security** 161 | - Node authentication 162 | - Request validation 163 | - Error handling 164 | 165 | ## Additional Information 166 | 167 | For more detailed information: 168 | - [Visit the Algorand MCP Smithery](https://smithery.ai/server/@GoPlausible/algorand-mcp) 169 | - Check the [Algorand MCP Server Documentation](https://github.com/GoPlausible/algorand-mcp) 170 | - Visit the builder's website at [GoPlausible](https://goplausible.com/) 171 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:modules:indexerModels.md: -------------------------------------------------------------------------------- ```markdown 1 | [algosdk](../README.md) / [Exports](../modules.md) / indexerModels 2 | 3 | # Namespace: indexerModels 4 | 5 | ## Table of contents 6 | 7 | ### Classes 8 | 9 | - [Account](../classes/indexerModels.Account.md) 10 | - [AccountParticipation](../classes/indexerModels.AccountParticipation.md) 11 | - [AccountResponse](../classes/indexerModels.AccountResponse.md) 12 | - [AccountStateDelta](../classes/indexerModels.AccountStateDelta.md) 13 | - [AccountsResponse](../classes/indexerModels.AccountsResponse.md) 14 | - [Application](../classes/indexerModels.Application.md) 15 | - [ApplicationLocalState](../classes/indexerModels.ApplicationLocalState.md) 16 | - [ApplicationLocalStatesResponse](../classes/indexerModels.ApplicationLocalStatesResponse.md) 17 | - [ApplicationLogData](../classes/indexerModels.ApplicationLogData.md) 18 | - [ApplicationLogsResponse](../classes/indexerModels.ApplicationLogsResponse.md) 19 | - [ApplicationParams](../classes/indexerModels.ApplicationParams.md) 20 | - [ApplicationResponse](../classes/indexerModels.ApplicationResponse.md) 21 | - [ApplicationStateSchema](../classes/indexerModels.ApplicationStateSchema.md) 22 | - [ApplicationsResponse](../classes/indexerModels.ApplicationsResponse.md) 23 | - [Asset](../classes/indexerModels.Asset.md) 24 | - [AssetBalancesResponse](../classes/indexerModels.AssetBalancesResponse.md) 25 | - [AssetHolding](../classes/indexerModels.AssetHolding.md) 26 | - [AssetHoldingsResponse](../classes/indexerModels.AssetHoldingsResponse.md) 27 | - [AssetParams](../classes/indexerModels.AssetParams.md) 28 | - [AssetResponse](../classes/indexerModels.AssetResponse.md) 29 | - [AssetsResponse](../classes/indexerModels.AssetsResponse.md) 30 | - [Block](../classes/indexerModels.Block.md) 31 | - [BlockRewards](../classes/indexerModels.BlockRewards.md) 32 | - [BlockUpgradeState](../classes/indexerModels.BlockUpgradeState.md) 33 | - [BlockUpgradeVote](../classes/indexerModels.BlockUpgradeVote.md) 34 | - [Box](../classes/indexerModels.Box.md) 35 | - [BoxDescriptor](../classes/indexerModels.BoxDescriptor.md) 36 | - [BoxesResponse](../classes/indexerModels.BoxesResponse.md) 37 | - [ErrorResponse](../classes/indexerModels.ErrorResponse.md) 38 | - [EvalDelta](../classes/indexerModels.EvalDelta.md) 39 | - [EvalDeltaKeyValue](../classes/indexerModels.EvalDeltaKeyValue.md) 40 | - [HashFactory](../classes/indexerModels.HashFactory.md) 41 | - [HealthCheck](../classes/indexerModels.HealthCheck.md) 42 | - [IndexerStateProofMessage](../classes/indexerModels.IndexerStateProofMessage.md) 43 | - [MerkleArrayProof](../classes/indexerModels.MerkleArrayProof.md) 44 | - [MiniAssetHolding](../classes/indexerModels.MiniAssetHolding.md) 45 | - [ParticipationUpdates](../classes/indexerModels.ParticipationUpdates.md) 46 | - [StateProofFields](../classes/indexerModels.StateProofFields.md) 47 | - [StateProofParticipant](../classes/indexerModels.StateProofParticipant.md) 48 | - [StateProofReveal](../classes/indexerModels.StateProofReveal.md) 49 | - [StateProofSigSlot](../classes/indexerModels.StateProofSigSlot.md) 50 | - [StateProofSignature](../classes/indexerModels.StateProofSignature.md) 51 | - [StateProofTracking](../classes/indexerModels.StateProofTracking.md) 52 | - [StateProofVerifier](../classes/indexerModels.StateProofVerifier.md) 53 | - [StateSchema](../classes/indexerModels.StateSchema.md) 54 | - [TealKeyValue](../classes/indexerModels.TealKeyValue.md) 55 | - [TealValue](../classes/indexerModels.TealValue.md) 56 | - [Transaction](../classes/indexerModels.Transaction.md) 57 | - [TransactionApplication](../classes/indexerModels.TransactionApplication.md) 58 | - [TransactionAssetConfig](../classes/indexerModels.TransactionAssetConfig.md) 59 | - [TransactionAssetFreeze](../classes/indexerModels.TransactionAssetFreeze.md) 60 | - [TransactionAssetTransfer](../classes/indexerModels.TransactionAssetTransfer.md) 61 | - [TransactionKeyreg](../classes/indexerModels.TransactionKeyreg.md) 62 | - [TransactionPayment](../classes/indexerModels.TransactionPayment.md) 63 | - [TransactionResponse](../classes/indexerModels.TransactionResponse.md) 64 | - [TransactionSignature](../classes/indexerModels.TransactionSignature.md) 65 | - [TransactionSignatureLogicsig](../classes/indexerModels.TransactionSignatureLogicsig.md) 66 | - [TransactionSignatureMultisig](../classes/indexerModels.TransactionSignatureMultisig.md) 67 | - [TransactionSignatureMultisigSubsignature](../classes/indexerModels.TransactionSignatureMultisigSubsignature.md) 68 | - [TransactionStateProof](../classes/indexerModels.TransactionStateProof.md) 69 | - [TransactionsResponse](../classes/indexerModels.TransactionsResponse.md) 70 | ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:python:README.md: -------------------------------------------------------------------------------- ```markdown 1 | # py-algorand-sdk 2 | 3 | [](https://badge.fury.io/py/py-algorand-sdk) 4 | [](https://py-algorand-sdk.readthedocs.io/en/latest) 5 | [](https://github.com/psf/black) 6 | 7 | A python library for interacting with the Algorand network. 8 | 9 | ## Installation 10 | 11 | Run `$ pip3 install py-algorand-sdk` to install the package. 12 | 13 | Alternatively, choose a [distribution file](https://pypi.org/project/py-algorand-sdk/#files), and run `$ pip3 install [file name]`. 14 | 15 | ## Supported Python versions 16 | 17 | py-algorand-sdk's minimum Python version policy attempts to balance several constraints. 18 | 19 | * Make it easy for the community to use py-algorand-sdk by minimizing or excluding the need to customize Python installations. 20 | * Provide maintainers with access to newer language features that produce more robust software. 21 | 22 | Given these constraints, the minimum Python version policy is: 23 | Target Python version on newest [Ubuntu LTS](https://wiki.ubuntu.com/Releases) released >= 6 months ago. 24 | 25 | The rationale is: 26 | 27 | * If a major Linux OS distribution bumps a Python version, then it's sufficiently available to the community for us to upgrade. 28 | * The 6 month time buffer ensures we delay upgrades until the community starts using a recently released LTS version. 29 | 30 | ## SDK Development 31 | 32 | Install dependencies 33 | 34 | * `pip3 install -r requirements.txt` 35 | 36 | Run tests 37 | 38 | * `make docker-test` 39 | 40 | Set up the Algorand Sandbox based test-harness without running the tests 41 | 42 | * `make harness` 43 | 44 | Format code 45 | 46 | * `black .` 47 | 48 | Update `algosdk/__init__.pyi` which allows downstream developers importing `algosdk` and using VSCode's PyLance to have improved type analysis 49 | 50 | * `make generate-init` 51 | 52 | Lint types 53 | 54 | * `make mypy` (or `mypy algosdk`) 55 | 56 | Check all lints required by the C.I. process 57 | 58 | * `make lint` 59 | 60 | Run non-test-harness related unit tests 61 | 62 | * `make pytest-unit` 63 | 64 | We use cucumber testing for all of our SDKs, including this one. Please refer to [algorand-sdk-testing](https://github.com/algorand/algorand-sdk-testing#readme) for guidance and existing tests that you may need to update. Depending on the type of update you wish to contribute, you may also need to have corresponding updates in the other SDKs (Go, JS, and Java). Feel welcome to ask for collaboration on that front. 65 | 66 | ## Quick start 67 | 68 | Here's a simple example you can run without a node. 69 | 70 | ```python 71 | from algosdk import account, encoding 72 | 73 | # generate an account 74 | private_key, address = account.generate_account() 75 | print("Private key:", private_key) 76 | print("Address:", address) 77 | 78 | # check if the address is valid 79 | if encoding.is_valid_address(address): 80 | print("The address is valid!") 81 | else: 82 | print("The address is invalid.") 83 | ``` 84 | 85 | ## Node setup 86 | 87 | Follow the instructions in Algorand's [developer resources](https://developer.algorand.org/docs/run-a-node/setup/install/) to install a node on your computer. 88 | You can also set up a local [Algorand Sandbox](https://github.com/algorand/sandbox) with `make harness`. 89 | 90 | ## Running examples/example.py 91 | 92 | Before running [example.py](https://github.com/algorand/py-algorand-sdk/blob/master/examples/example.py), start kmd on a private network or testnet node: 93 | 94 | ```bash 95 | ./goal kmd start -d [data directory] 96 | ``` 97 | 98 | Next, create a wallet and an account: 99 | 100 | ```bash 101 | ./goal wallet new [wallet name] -d [data directory] 102 | ``` 103 | 104 | ```bash 105 | ./goal account new -d [data directory] -w [wallet name] 106 | ``` 107 | 108 | Visit the [Algorand dispenser](https://bank.testnet.algorand.network/) and enter the account address to fund your account. 109 | 110 | Next, in [tokens.py](https://github.com/algorand/py-algorand-sdk/blob/master/examples/tokens.py), either update the tokens and addresses, or provide a path to the data directory. Alternatively, `tokens.py` also defaults to the sandbox harness configurations for algod and kmd, which can be brought up by running `make harness`. 111 | 112 | You're now ready to run example.py! 113 | 114 | ## Documentation 115 | 116 | Documentation for the Python SDK is available at [py-algorand-sdk.readthedocs.io](https://py-algorand-sdk.readthedocs.io/en/latest/). 117 | 118 | ## License 119 | 120 | py-algorand-sdk is licensed under an MIT license. See the [LICENSE](https://github.com/algorand/py-algorand-sdk/blob/master/LICENSE) file for details. 121 | ```