This is page 12 of 74. Use http://codebase.md/goplausible/algorand-mcp?page={x} to view the full context. # Directory Structure ``` ├── .gitignore ├── CONTRIBUTING.md ├── LICENSE ├── llms-install.md ├── llms.txt ├── package.json ├── packages │ ├── client │ │ ├── .env.example │ │ ├── package.json │ │ ├── README.md │ │ ├── src │ │ │ ├── env.ts │ │ │ ├── index.ts │ │ │ └── LocalWallet.ts │ │ └── tsconfig.json │ └── server │ ├── .env.example │ ├── API specs │ │ ├── algod_api.json │ │ ├── indexer_api.json │ │ ├── mcp.json │ │ ├── nfd_api.json │ │ ├── ultrade_api.json │ │ ├── vestige_api.json │ │ └── vestige_free_api.json │ ├── Dockerfile │ ├── jest.config.js │ ├── package.json │ ├── README.md │ ├── smithery.yaml │ ├── src │ │ ├── algorand-client.ts │ │ ├── env.ts │ │ ├── index.ts │ │ ├── resources │ │ │ ├── index.ts │ │ │ ├── knowledge │ │ │ │ ├── ARCs.txt │ │ │ │ ├── developers-algokit-architecture-decisions.txt │ │ │ │ ├── developers-algokit-cli.txt │ │ │ │ ├── developers-algokit-utils-python.txt │ │ │ │ ├── developers-algokit-utils-typescript.txt │ │ │ │ ├── developers-clis.txt │ │ │ │ ├── developers-details.txt │ │ │ │ ├── developers-liquid-auth.txt │ │ │ │ ├── developers-nodes.txt │ │ │ │ ├── developers-puya.txt │ │ │ │ ├── developers-python.txt │ │ │ │ ├── developers-sdks-js.txt │ │ │ │ ├── developers-sdks-python.txt │ │ │ │ ├── developers-tealscript.txt │ │ │ │ ├── developers.txt │ │ │ │ ├── index.ts │ │ │ │ ├── taxonomy │ │ │ │ │ ├── algokit-cli:README.md │ │ │ │ │ ├── algokit:cli:algokit.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2022-11-14_sandbox-approach.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2022-11-22_beaker-testing-strategy.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2023-01-11_beaker_productionisation_review.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2023-01-11_brew_install.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2023-01-12_smart-contract-deployment.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2023-06-06_frontend-templates.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2023-07-19_advanced_generate_command.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2024-01-13_native_binaries.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2024-01-23_init-wizard-v2.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2024-01-31_binary_distribution.md │ │ │ │ │ ├── algokit:cli:architecture-decisions:2024-03-06_local_dev_ui_packaging.md │ │ │ │ │ ├── algokit:cli:articles:output_stability.md │ │ │ │ │ ├── algokit:cli:cli:index.md │ │ │ │ │ ├── algokit:cli:features:compile.md │ │ │ │ │ ├── algokit:cli:features:completions.md │ │ │ │ │ ├── algokit:cli:features:config.md │ │ │ │ │ ├── algokit:cli:features:dispenser.md │ │ │ │ │ ├── algokit:cli:features:doctor.md │ │ │ │ │ ├── algokit:cli:features:explore.md │ │ │ │ │ ├── algokit:cli:features:generate.md │ │ │ │ │ ├── algokit:cli:features:goal.md │ │ │ │ │ ├── algokit:cli:features:init.md │ │ │ │ │ ├── algokit:cli:features:localnet.md │ │ │ │ │ ├── algokit:cli:features:project:bootstrap.md │ │ │ │ │ ├── algokit:cli:features:project:deploy.md │ │ │ │ │ ├── algokit:cli:features:project:link.md │ │ │ │ │ ├── algokit:cli:features:project:list.md │ │ │ │ │ ├── algokit:cli:features:project:run.md │ │ │ │ │ ├── algokit:cli:features:project.md │ │ │ │ │ ├── algokit:cli:features:tasks:analyze.md │ │ │ │ │ ├── algokit:cli:features:tasks:ipfs.md │ │ │ │ │ ├── algokit:cli:features:tasks:mint.md │ │ │ │ │ ├── algokit:cli:features:tasks:nfd.md │ │ │ │ │ ├── algokit:cli:features:tasks:opt.md │ │ │ │ │ ├── algokit:cli:features:tasks:send.md │ │ │ │ │ ├── algokit:cli:features:tasks:sign.md │ │ │ │ │ ├── algokit:cli:features:tasks:transfer.md │ │ │ │ │ ├── algokit:cli:features:tasks:vanity_address.md │ │ │ │ │ ├── algokit:cli:features:tasks:wallet.md │ │ │ │ │ ├── algokit:cli:features:tasks.md │ │ │ │ │ ├── algokit:cli:tutorials:algokit-template.md │ │ │ │ │ ├── algokit:cli:tutorials:intro.md │ │ │ │ │ ├── algokit:cli:tutorials:smart-contracts.md │ │ │ │ │ ├── algokit:docs:testnet_api.md │ │ │ │ │ ├── algokit:lora:README.md │ │ │ │ │ ├── algokit:README.md │ │ │ │ │ ├── algokit:utils:python:markdown:apidocs:algokit_utils:algokit_utils.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:account.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:app-client.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:app-deploy.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:client.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:debugger.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:dispenser-client.md │ │ │ │ │ ├── algokit:utils:python:markdown:capabilities:transfer.md │ │ │ │ │ ├── algokit:utils:python:markdown:index.md │ │ │ │ │ ├── algokit:utils:python:README.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:account.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:app-client.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:app-deploy.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:client.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:debugger.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:dispenser-client.md │ │ │ │ │ ├── algokit:utils:python:source:capabilities:transfer.md │ │ │ │ │ ├── algokit:utils:python:source:index.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:account.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:algorand-client.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:amount.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:app-client.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:app-deploy.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:app.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:asset.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:client.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:debugging.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:dispenser-client.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:event-emitter.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:indexer.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:testing.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:transaction-composer.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:transaction.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:transfer.md │ │ │ │ │ ├── algokit:utils:typescript:capabilities:typed-app-clients.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:testing.TestLogger.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:testing.TransactionLogger.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_account_manager.AccountManager.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_account.MultisigAccount.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_account.SigningAccount.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_algorand_client_transaction_creator.AlgorandClientTransactionCreator.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_algorand_client_transaction_sender.AlgorandClientTransactionSender.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_algorand_client.AlgorandClient.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_amount.AlgoAmount.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_arc56.Arc56Method.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_client.AppClient.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_client.ApplicationClient.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_deployer.AppDeployer.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_factory.AppFactory.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_app_manager.AppManager.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_asset_manager.AssetManager.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_async_event_emitter.AsyncEventEmitter.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_client_manager.ClientManager.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_composer.TransactionComposer.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_config.UpdatableConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_dispenser_client.TestNetDispenserApiClient.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_kmd_account_manager.KmdAccountManager.md │ │ │ │ │ ├── algokit:utils:typescript:code:classes:types_logic_error.LogicError.md │ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_app.OnSchemaBreak.md │ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_app.OnUpdate.md │ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_indexer.AccountStatus.md │ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_indexer.ApplicationOnComplete.md │ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_indexer.SignatureType.md │ │ │ │ │ ├── algokit:utils:typescript:code:enums:types_lifecycle_events.EventType.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_account_manager.EnsureFundedResult.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_account.AccountConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_account.TransactionSignerAccount.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_algorand_client_interface.AlgorandClientInterface.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.Arc56Contract.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.Event.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.Method.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.ProgramSourceInfo.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.StorageKey.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.StorageMap.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_arc56.StructField.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCallABIArgs.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCallCoreParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCompilationParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCompilationResult.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientDeployCallInterfaceParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientDeployCoreParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientDeployParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.AppSourceMaps.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.FundAppAccountParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.ResolveAppById.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.ResolveAppByIdBase.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_client.SourceMapExport.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_deployer.AppLookup.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_deployer.AppMetadata.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_factory.AppFactoryParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_manager.AppInformation.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_manager.BoxReference.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_manager.BoxValueRequestParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_manager.BoxValuesRequestParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.AppSources.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.AppSpec.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.CallConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.DeclaredSchemaValueSpec.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.Hint.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.ReservedSchemaValueSpec.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.Schema.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.SchemaSpec.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.StateSchemaSpec.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app_spec.Struct.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppCallParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppCallTransactionResultOfType.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppCompilationResult.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppDeploymentParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppDeployMetadata.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppLookup.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppMetadata.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppReference.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppState.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.AppStorageSchema.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.BoxName.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.BoxReference.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.BoxValueRequestParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.BoxValuesRequestParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.CompiledTeal.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.CoreAppCallArgs.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.CreateAppParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.RawAppCallArgs.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.TealTemplateParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_app.UpdateAppParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset_manager.AssetInformation.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset_manager.BulkAssetOptInOutResult.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset.AssetBulkOptInOutParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset.AssetOptInParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset.AssetOptOutParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_asset.CreateAssetParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_client_manager.AlgoSdkClients.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_client_manager.TypedAppClient.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_client_manager.TypedAppFactory.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_composer.BuiltTransactions.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_config.Config.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_debugging.AVMTracesEventData.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_debugging.TealSourceDebugEventData.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_debugging.TealSourcesDebugEventData.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_dispenser_client.DispenserFundResponse.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_dispenser_client.DispenserLimitResponse.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_dispenser_client.TestNetDispenserApiClientParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_indexer.LookupAssetHoldingsOptions.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_logic_error.LogicErrorDetails.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_network_client.AlgoClientConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_network_client.AlgoConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_network_client.NetworkDetails.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.AlgoKitLogCaptureFixture.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.AlgorandFixture.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.AlgorandFixtureConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.AlgorandTestAutomationContext.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.GetTestAccountParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_testing.LogSnapshotConfig.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.AtomicTransactionComposerToSend.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.ConfirmedTransactionResult.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.ConfirmedTransactionResults.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.SendAtomicTransactionComposerResults.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.SendParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.SendTransactionParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.SendTransactionResult.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.SendTransactionResults.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.TransactionGroupToSend.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transaction.TransactionToSign.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transfer.AlgoRekeyParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transfer.AlgoTransferParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transfer.EnsureFundedParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transfer.EnsureFundedReturnType.md │ │ │ │ │ ├── algokit:utils:typescript:code:interfaces:types_transfer.TransferAssetParams.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:index.indexer.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:index.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:testing.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_account_manager_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_account_manager.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_account.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algo_http_client_with_retry.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_asset_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_interface.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_transaction_creator.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_transaction_sender.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client_transfer_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_algorand_client.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_amount_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_amount.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_arc56.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_client_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_client.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_deployer.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_factory_and_client_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_factory.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_manager.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_app.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_asset_manager.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_asset.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_async_event_emitter_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_async_event_emitter.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_client_manager_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_client_manager.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_composer.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_config.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_debugging.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_dispenser_client_spec.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_dispenser_client.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_expand.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_indexer.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_kmd_account_manager.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_lifecycle_events.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_logging.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_logic_error.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_network_client.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_testing.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_transaction.md │ │ │ │ │ ├── algokit:utils:typescript:code:modules:types_transfer.md │ │ │ │ │ ├── algokit:utils:typescript:code:README.md │ │ │ │ │ ├── algokit:utils:typescript:README.md │ │ │ │ │ ├── algokit:utils:typescript:v7-migration.md │ │ │ │ │ ├── algokit:utils:typescript:v8-migration.md │ │ │ │ │ ├── ARCs:ARC-template.md │ │ │ │ │ ├── ARCs:assets:arc-0012:README.md │ │ │ │ │ ├── ARCs:assets:arc-0034:TemplateForm.md │ │ │ │ │ ├── ARCs:assets:arc-0062:README.md │ │ │ │ │ ├── ARCs:pages:nfts.md │ │ │ │ │ ├── ARCs:pages:wallets.md │ │ │ │ │ ├── ARCs:README.md │ │ │ │ │ ├── ARCs:specs:arc-0000.md │ │ │ │ │ ├── ARCs:specs:arc-0001.md │ │ │ │ │ ├── ARCs:specs:arc-0002.md │ │ │ │ │ ├── ARCs:specs:arc-0003.md │ │ │ │ │ ├── ARCs:specs:arc-0004.md │ │ │ │ │ ├── ARCs:specs:arc-0005.md │ │ │ │ │ ├── ARCs:specs:arc-0006.md │ │ │ │ │ ├── ARCs:specs:arc-0007.md │ │ │ │ │ ├── ARCs:specs:arc-0008.md │ │ │ │ │ ├── ARCs:specs:arc-0009.md │ │ │ │ │ ├── ARCs:specs:arc-0010.md │ │ │ │ │ ├── ARCs:specs:arc-0011.md │ │ │ │ │ ├── ARCs:specs:arc-0012.md │ │ │ │ │ ├── ARCs:specs:arc-0015.md │ │ │ │ │ ├── ARCs:specs:arc-0016.md │ │ │ │ │ ├── ARCs:specs:arc-0018.md │ │ │ │ │ ├── ARCs:specs:arc-0019.md │ │ │ │ │ ├── ARCs:specs:arc-0020.md │ │ │ │ │ ├── ARCs:specs:arc-0021.md │ │ │ │ │ ├── ARCs:specs:arc-0022.md │ │ │ │ │ ├── ARCs:specs:arc-0023.md │ │ │ │ │ ├── ARCs:specs:arc-0025.md │ │ │ │ │ ├── ARCs:specs:arc-0026.md │ │ │ │ │ ├── ARCs:specs:arc-0028.md │ │ │ │ │ ├── ARCs:specs:arc-0032.md │ │ │ │ │ ├── ARCs:specs:arc-0033.md │ │ │ │ │ ├── ARCs:specs:arc-0034.md │ │ │ │ │ ├── ARCs:specs:arc-0035.md │ │ │ │ │ ├── ARCs:specs:arc-0036.md │ │ │ │ │ ├── ARCs:specs:arc-0042.md │ │ │ │ │ ├── ARCs:specs:arc-0047.md │ │ │ │ │ ├── ARCs:specs:arc-0048.md │ │ │ │ │ ├── ARCs:specs:arc-0049.md │ │ │ │ │ ├── ARCs:specs:arc-0054.md │ │ │ │ │ ├── ARCs:specs:arc-0055.md │ │ │ │ │ ├── ARCs:specs:arc-0056.md │ │ │ │ │ ├── ARCs:specs:arc-0059.md │ │ │ │ │ ├── ARCs:specs:arc-0062.md │ │ │ │ │ ├── ARCs:specs:arc-0065.md │ │ │ │ │ ├── ARCs:specs:arc-0069.md │ │ │ │ │ ├── ARCs:specs:arc-0072.md │ │ │ │ │ ├── ARCs:specs:arc-0073.md │ │ │ │ │ ├── ARCs:specs:arc-0074.md │ │ │ │ │ ├── ARCs:specs:arc-0076.md │ │ │ │ │ ├── ARCs:specs:arc-0078.md │ │ │ │ │ ├── ARCs:specs:arc-0079.md │ │ │ │ │ ├── ARCs:specs:arc-0200.md │ │ │ │ │ ├── clis_index.md │ │ │ │ │ ├── developer:docs:about.md │ │ │ │ │ ├── developer:docs:clis:algokey:algokey.md │ │ │ │ │ ├── developer:docs:clis:algokey:generate.md │ │ │ │ │ ├── developer:docs:clis:algokey:import.md │ │ │ │ │ ├── developer:docs:clis:algokey:multisig:append-auth-addr.md │ │ │ │ │ ├── developer:docs:clis:algokey:multisig:multisig.md │ │ │ │ │ ├── developer:docs:clis:algokey:part:info.md │ │ │ │ │ ├── developer:docs:clis:algokey:part:part.md │ │ │ │ │ ├── developer:docs:clis:algokey:part:reparent.md │ │ │ │ │ ├── developer:docs:clis:algokey:sign.md │ │ │ │ │ ├── developer:docs:clis:conduit:conduit.md │ │ │ │ │ ├── developer:docs:clis:conduit:init.md │ │ │ │ │ ├── developer:docs:clis:conduit:list:exporters.md │ │ │ │ │ ├── developer:docs:clis:conduit:list:importers.md │ │ │ │ │ ├── developer:docs:clis:conduit:list:list.md │ │ │ │ │ ├── developer:docs:clis:conduit:list:processors.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:diagcfg.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:metric:disable.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:metric:enable.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:metric:metric.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:metric:status.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:disable.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:enable.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:endpoint.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:name.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:status.md │ │ │ │ │ ├── developer:docs:clis:diagcfg:telemetry:telemetry.md │ │ │ │ │ ├── developer:docs:clis:goal:node:restart.md │ │ │ │ │ ├── developer:docs:clis:goal:node:start.md │ │ │ │ │ ├── developer:docs:clis:goal:node:status.md │ │ │ │ │ ├── developer:docs:clis:goal:node:stop.md │ │ │ │ │ ├── developer:docs:clis:goal:node:wait.md │ │ │ │ │ ├── developer:docs:clis:goal:protocols.md │ │ │ │ │ ├── developer:docs:clis:goal:report.md │ │ │ │ │ ├── developer:docs:clis:goal:version.md │ │ │ │ │ ├── developer:docs:clis:goal:wallet:list.md │ │ │ │ │ ├── developer:docs:clis:goal:wallet:new.md │ │ │ │ │ ├── developer:docs:clis:goal:wallet:wallet.md │ │ │ │ │ ├── developer:docs:clis:indexer:api-config.md │ │ │ │ │ ├── developer:docs:clis:indexer:daemon.md │ │ │ │ │ ├── developer:docs:clis:indexer:indexer.md │ │ │ │ │ ├── developer:docs:clis:indexer:util:util.md │ │ │ │ │ ├── developer:docs:clis:indexer:util:validator.md │ │ │ │ │ ├── developer:docs:clis:kmd.md │ │ │ │ │ ├── developer:docs:clis:tealdbg:debug.md │ │ │ │ │ ├── developer:docs:clis:tealdbg:remote.md │ │ │ │ │ ├── developer:docs:clis:tealdbg:tealdbg.md │ │ │ │ │ ├── developer:docs:details:accounts:create.md │ │ │ │ │ ├── developer:docs:details:accounts:index.md │ │ │ │ │ ├── developer:docs:details:accounts:rekey.md │ │ │ │ │ ├── developer:docs:details:algorand_consensus.md │ │ │ │ │ ├── developer:docs:details:algorand-networks:betanet.md │ │ │ │ │ ├── developer:docs:details:algorand-networks:index.md │ │ │ │ │ ├── developer:docs:details:algorand-networks:mainnet.md │ │ │ │ │ ├── developer:docs:details:algorand-networks:testnet.md │ │ │ │ │ ├── developer:docs:details:asa.md │ │ │ │ │ ├── developer:docs:details:atc.md │ │ │ │ │ ├── developer:docs:details:atomic_transfers.md │ │ │ │ │ ├── developer:docs:details:conduit.md │ │ │ │ │ ├── developer:docs:details:crust.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:index.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:guidelines.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:index.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:jsonspec.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:index.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v1.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v10.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v2.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v3.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v4.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v5.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v6.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v7.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v8.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:opcodes:v9.md │ │ │ │ │ ├── developer:docs:details:dapps:avm:teal:specification.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:ABI:index.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:apps:create.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:apps:index.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:apps:innertx.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:apps:state.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:apps:txs.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:debugging.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:frontend:apps.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:frontend:smartsigs.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:guidelines.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:index.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:smartsigs:index.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:smartsigs:modes.md │ │ │ │ │ ├── developer:docs:details:dapps:smart-contracts:smartsigs:walkthrough.md │ │ │ │ │ ├── developer:docs:details:dapps:writing-contracts:beaker.md │ │ │ │ │ ├── developer:docs:details:dapps:writing-contracts:pyteal.md │ │ │ │ │ ├── developer:docs:details:dapps:writing-contracts:python.md │ │ │ │ │ ├── developer:docs:details:encoding.md │ │ │ │ │ ├── developer:docs:details:ethereum_to_algorand.md │ │ │ │ │ ├── developer:docs:details:index.md │ │ │ │ │ ├── developer:docs:details:indexer.md │ │ │ │ │ ├── developer:docs:details:parameter_tables.md │ │ │ │ │ ├── developer:docs:details:stateproofs:index.md │ │ │ │ │ ├── developer:docs:details:stateproofs:light_client.md │ │ │ │ │ ├── developer:docs:details:technical_faq.md │ │ │ │ │ ├── developer:docs:details:transactions:index.md │ │ │ │ │ ├── developer:docs:details:transactions:offline_transactions.md │ │ │ │ │ ├── developer:docs:details:transactions:payment_prompts.md │ │ │ │ │ ├── developer:docs:details:transactions:signatures.md │ │ │ │ │ ├── developer:docs:details:transactions:transactions.md │ │ │ │ │ ├── developer:docs:details:useful_resources.md │ │ │ │ │ ├── developer:docs:get-started:algokit.md │ │ │ │ │ ├── developer:docs:get-started:basics:what_is_blockchain.md │ │ │ │ │ ├── developer:docs:get-started:basics:whats_a_dapp.md │ │ │ │ │ ├── developer:docs:get-started:basics:where_to_start.md │ │ │ │ │ ├── developer:docs:get-started:basics:why_algorand.md │ │ │ │ │ ├── developer:docs:get-started:tokenization:ft.md │ │ │ │ │ ├── developer:docs:get-started:tokenization:nft.md │ │ │ │ │ ├── developer:docs:index.md │ │ │ │ │ ├── developer:docs:rest-apis:algod.md │ │ │ │ │ ├── developer:docs:rest-apis:indexer.md │ │ │ │ │ ├── developer:docs:rest-apis:kmd.md │ │ │ │ │ ├── developer:docs:rest-apis:restendpoints.md │ │ │ │ │ ├── developer:docs:run-a-node:operations:catchup.md │ │ │ │ │ ├── developer:docs:run-a-node:operations:switch_networks.md │ │ │ │ │ ├── developer:docs:run-a-node:participate:generate_keys.md │ │ │ │ │ ├── developer:docs:run-a-node:participate:index.md │ │ │ │ │ ├── developer:docs:run-a-node:participate:offline.md │ │ │ │ │ ├── developer:docs:run-a-node:participate:online.md │ │ │ │ │ ├── developer:docs:run-a-node:participate:renew.md │ │ │ │ │ ├── developer:docs:run-a-node:reference:artifacts.md │ │ │ │ │ ├── developer:docs:run-a-node:reference:config.md │ │ │ │ │ ├── developer:docs:run-a-node:reference:relay.md │ │ │ │ │ ├── developer:docs:run-a-node:reference:telemetry-config.md │ │ │ │ │ ├── developer:docs:run-a-node:setup:indexer.md │ │ │ │ │ ├── developer:docs:run-a-node:setup:install.md │ │ │ │ │ ├── developer:docs:run-a-node:setup:node-troubleshooting.md │ │ │ │ │ ├── developer:docs:run-a-node:setup:types.md │ │ │ │ │ ├── developer:docs:sdks:go:index.md │ │ │ │ │ ├── developer:docs:sdks:index.md │ │ │ │ │ ├── developer:docs:sdks:java:index.md │ │ │ │ │ ├── developer:docs:sdks:javascript:index.md │ │ │ │ │ ├── developer:docs:sdks:python:index.md │ │ │ │ │ ├── developer:python:code:example:accounts.md │ │ │ │ │ ├── developer:python:code:example:arc4_types.md │ │ │ │ │ ├── developer:python:code:example:assets.md │ │ │ │ │ ├── developer:python:code:example:box_storage.md │ │ │ │ │ ├── developer:python:code:example:control_flow.md │ │ │ │ │ ├── developer:python:code:example:crypto:merkle_tree.md │ │ │ │ │ ├── developer:python:code:example:defi:amm.md │ │ │ │ │ ├── developer:python:code:example:defi:auction.md │ │ │ │ │ ├── developer:python:code:example:defi:htlc_logicsig.md │ │ │ │ │ ├── developer:python:code:example:defi:marketplace.md │ │ │ │ │ ├── developer:python:code:example:events:arc28_events.md │ │ │ │ │ ├── developer:python:code:example:global_storage.md │ │ │ │ │ ├── developer:python:code:example:governance:simple_voting.md │ │ │ │ │ ├── developer:python:code:example:hello_world.md │ │ │ │ │ ├── developer:python:code:example:inner_transactions.md │ │ │ │ │ ├── developer:python:code:example:local_storage.md │ │ │ │ │ ├── developer:python:code:example:nft:proof_of_attendance.md │ │ │ │ │ ├── developer:python:code:example:privacy:zk_whitelist.md │ │ │ │ │ ├── developer:python:code:example:scratch_storage.md │ │ │ │ │ ├── developer:python:code:example:self_payment.md │ │ │ │ │ ├── developer:python:code:example:struct_in_box.md │ │ │ │ │ ├── developer:python:code:example:subsidize_app_call.md │ │ │ │ │ ├── developer:python:code:example:transactions.md │ │ │ │ │ ├── developer:python:code:example:utility:calculator.md │ │ │ │ │ ├── devportal-code-examples:projects:python-contract-examples:README.md │ │ │ │ │ ├── devportal-code-examples:README.md │ │ │ │ │ ├── docs:.walletconnect:index.md │ │ │ │ │ ├── docs:.walletconnect:walletconnect-schema.md │ │ │ │ │ ├── docs:README.md │ │ │ │ │ ├── docs:scripts:example_tracker:example_list.md │ │ │ │ │ ├── docs:scripts:README.md │ │ │ │ │ ├── index.md │ │ │ │ │ ├── liquid_auth_index.md │ │ │ │ │ ├── liquid-auth:ARCHITECTURE.md │ │ │ │ │ ├── liquid-auth:decisions:1-Service-Authentication.md │ │ │ │ │ ├── liquid-auth:decisions:2-Bidirectional-Communication.md │ │ │ │ │ ├── liquid-auth:decisions:3-Peer-to-Peer-Signaling.md │ │ │ │ │ ├── liquid-auth:decisions:4-Fido-Extension.md │ │ │ │ │ ├── liquid-auth:decisions:README.md │ │ │ │ │ ├── liquid-auth:docs:architecture.md │ │ │ │ │ ├── liquid-auth:docs:clients:android:provider-service:authenticate.md │ │ │ │ │ ├── liquid-auth:docs:clients:android:provider-service:register.md │ │ │ │ │ ├── liquid-auth:docs:clients:browser:authentication.md │ │ │ │ │ ├── liquid-auth:docs:clients:browser:example.md │ │ │ │ │ ├── liquid-auth:docs:introduction.md │ │ │ │ │ ├── liquid-auth:docs:README.md │ │ │ │ │ ├── liquid-auth:docs:server:environment-variables.md │ │ │ │ │ ├── liquid-auth:docs:server:integrations.md │ │ │ │ │ ├── liquid-auth:docs:server:introduction.md │ │ │ │ │ ├── liquid-auth:docs:server:running-locally.md │ │ │ │ │ ├── liquid-auth:README.md │ │ │ │ │ ├── liquid-auth:SEQUENCE.md │ │ │ │ │ ├── liquid-auth:services:liquid-auth-api-js:src:assertion:assertion.controller.post.request.md │ │ │ │ │ ├── liquid-auth:services:liquid-auth-api-js:src:assertion:assertion.controller.post.response.md │ │ │ │ │ ├── liquid-auth:services:liquid-auth-api-js:src:attestation:attestation.controller.post.request.md │ │ │ │ │ ├── liquid-auth:services:liquid-auth-api-js:src:auth:auth.controller.get.user.md │ │ │ │ │ ├── liquid-auth:sites:express-dapp:README.md │ │ │ │ │ ├── liquid-auth:VISION.md │ │ │ │ │ ├── puya_index.md │ │ │ │ │ ├── puya:docs:algopy_testing:index.md │ │ │ │ │ ├── puya:docs:api-algopy.arc4.md │ │ │ │ │ ├── puya:docs:api-algopy.gtxn.md │ │ │ │ │ ├── puya:docs:api-algopy.itxn.md │ │ │ │ │ ├── puya:docs:api-algopy.md │ │ │ │ │ ├── puya:docs:api-algopy.op.md │ │ │ │ │ ├── puya:docs:api.md │ │ │ │ │ ├── puya:docs:compiler.md │ │ │ │ │ ├── puya:docs:index.md │ │ │ │ │ ├── puya:docs:language-guide.md │ │ │ │ │ ├── puya:docs:lg-arc28.md │ │ │ │ │ ├── puya:docs:lg-arc4.md │ │ │ │ │ ├── puya:docs:lg-builtins.md │ │ │ │ │ ├── puya:docs:lg-calling-apps.md │ │ │ │ │ ├── puya:docs:lg-compile.md │ │ │ │ │ ├── puya:docs:lg-control.md │ │ │ │ │ ├── puya:docs:lg-errors.md │ │ │ │ │ ├── puya:docs:lg-logs.md │ │ │ │ │ ├── puya:docs:lg-modules.md │ │ │ │ │ ├── puya:docs:lg-opcode-budget.md │ │ │ │ │ ├── puya:docs:lg-ops.md │ │ │ │ │ ├── puya:docs:lg-storage.md │ │ │ │ │ ├── puya:docs:lg-structure.md │ │ │ │ │ ├── puya:docs:lg-transactions.md │ │ │ │ │ ├── puya:docs:lg-types.md │ │ │ │ │ ├── puya:docs:lg-unsupported-python-features.md │ │ │ │ │ ├── puya:docs:principles.md │ │ │ │ │ ├── puya:examples:auction:README.md │ │ │ │ │ ├── puya:python:testing:docs:algopy.md │ │ │ │ │ ├── puya:python:testing:docs:api.md │ │ │ │ │ ├── puya:python:testing:docs:coverage.md │ │ │ │ │ ├── puya:python:testing:docs:examples.md │ │ │ │ │ ├── puya:python:testing:docs:faq.md │ │ │ │ │ ├── puya:python:testing:docs:index.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:arc4-types.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:avm-types.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:concepts.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:contract-testing.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:index.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:opcodes.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:signature-testing.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:state-management.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:subroutines.md │ │ │ │ │ ├── puya:python:testing:docs:testing-guide:transactions.md │ │ │ │ │ ├── puya:python:testing:examples:README.md │ │ │ │ │ ├── puya:python:testing:README.md │ │ │ │ │ ├── puya:README.md │ │ │ │ │ ├── puya:src:puya:ARCHITECTURE.md │ │ │ │ │ ├── puya:src:puyapy:_typeshed:README.md │ │ │ │ │ ├── puya:src:puyapy:_vendor:mypy:typeshed:stdlib:_typeshed:README.md │ │ │ │ │ ├── puya:src:puyapy:awst_build:README.md │ │ │ │ │ ├── puya:stubs:README.md │ │ │ │ │ ├── puya:tests:test_expected_output:README.md │ │ │ │ │ ├── puya:typescript:docs:architecture-decisions:2024-05-21_primitive-bytes-and-strings.md │ │ │ │ │ ├── puya:typescript:docs:architecture-decisions:2024-05-21_primitive-integer-types.md │ │ │ │ │ ├── puya:typescript:docs:README.md │ │ │ │ │ ├── puya:typescript:packages:algo-ts:readme.md │ │ │ │ │ ├── puya:typescript:README.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIAddressType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIArrayDynamicType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIArrayStaticType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIBoolType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIByteType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIContract.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIInterface.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIMethod.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIStringType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABITupleType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIUfixedType.md │ │ │ │ │ ├── SDKs:javascript:classes:ABIUintType.md │ │ │ │ │ ├── SDKs:javascript:classes:Algodv2.md │ │ │ │ │ ├── SDKs:javascript:classes:AtomicTransactionComposer.md │ │ │ │ │ ├── SDKs:javascript:classes:DryrunResult.md │ │ │ │ │ ├── SDKs:javascript:classes:Indexer.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Account.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AccountParticipation.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AccountResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AccountsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AccountStateDelta.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Application.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationLocalState.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationLocalStatesResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationLogData.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationLogsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationParams.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ApplicationStateSchema.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Asset.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetBalancesResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetHolding.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetHoldingsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetParams.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.AssetsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Block.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.BlockRewards.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.BlockUpgradeState.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.BlockUpgradeVote.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Box.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.BoxDescriptor.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.BoxesResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ErrorResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.EvalDelta.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.EvalDeltaKeyValue.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.HashFactory.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.HealthCheck.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.IndexerStateProofMessage.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.MerkleArrayProof.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.MiniAssetHolding.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.ParticipationUpdates.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofFields.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofParticipant.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofReveal.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofSignature.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofSigSlot.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofTracking.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateProofVerifier.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.StateSchema.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TealKeyValue.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TealValue.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.Transaction.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionApplication.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionAssetConfig.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionAssetFreeze.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionAssetTransfer.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionKeyreg.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionPayment.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionSignature.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionSignatureLogicsig.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionSignatureMultisig.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionSignatureMultisigSubsignature.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:indexerModels.TransactionStateProof.md │ │ │ │ │ ├── SDKs:javascript:classes:Kmd.md │ │ │ │ │ ├── SDKs:javascript:classes:LogicSig.md │ │ │ │ │ ├── SDKs:javascript:classes:LogicSigAccount.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.Account.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountApplicationResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountAssetHolding.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountAssetResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountAssetsInformationResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountParticipation.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AccountStateDelta.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AppCallLogs.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.Application.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationInitialStates.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationKVStorage.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationLocalReference.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationLocalState.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationParams.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationStateOperation.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ApplicationStateSchema.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.Asset.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AssetHolding.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AssetHoldingReference.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AssetParams.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AvmKeyValue.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.AvmValue.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BlockHashResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BlockLogsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BlockResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BlockTxidsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.Box.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BoxDescriptor.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BoxesResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BoxReference.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.BuildVersion.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.CompileResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DisassembleResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DryrunRequest.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DryrunResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DryrunSource.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DryrunState.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.DryrunTxnResult.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ErrorResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.EvalDelta.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.EvalDeltaKeyValue.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.GetBlockTimeStampOffsetResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.GetSyncRoundResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.KvDelta.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.LedgerStateDeltaForTransactionGroup.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.LightBlockHeaderProof.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.NodeStatusResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.PendingTransactionResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.PendingTransactionsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.PostTransactionsResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.ScratchChange.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateInitialStates.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateRequest.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateRequestTransactionGroup.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateTraceConfig.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateTransactionGroupResult.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateTransactionResult.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulateUnnamedResourcesAccessed.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulationEvalOverrides.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulationOpcodeTraceUnit.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SimulationTransactionExecTrace.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.StateProof.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.StateProofMessage.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.SupplyResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.TealKeyValue.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.TealValue.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.TransactionGroupLedgerStateDeltasForRoundResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.TransactionParametersResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.TransactionProofResponse.md │ │ │ │ │ ├── SDKs:javascript:classes:modelsv2.Version.md │ │ │ │ │ ├── SDKs:javascript:classes:SourceMap.md │ │ │ │ │ ├── SDKs:javascript:classes:Transaction.md │ │ │ │ │ ├── SDKs:javascript:enums:ABIReferenceType.md │ │ │ │ │ ├── SDKs:javascript:enums:ABITransactionType.md │ │ │ │ │ ├── SDKs:javascript:enums:AtomicTransactionComposerStatus.md │ │ │ │ │ ├── SDKs:javascript:enums:IntDecoding.md │ │ │ │ │ ├── SDKs:javascript:enums:OnApplicationComplete.md │ │ │ │ │ ├── SDKs:javascript:enums:TransactionType.md │ │ │ │ │ ├── SDKs:javascript:examples:README.md │ │ │ │ │ ├── SDKs:javascript:FAQ.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIContractNetworkInfo.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIContractNetworks.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIContractParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIInterfaceParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIMethodArgParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIMethodParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIMethodReturnParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:ABIResult.md │ │ │ │ │ ├── SDKs:javascript:interfaces:Account.md │ │ │ │ │ ├── SDKs:javascript:interfaces:Address.md │ │ │ │ │ ├── SDKs:javascript:interfaces:AlgodTokenHeader.md │ │ │ │ │ ├── SDKs:javascript:interfaces:BaseHTTPClient.md │ │ │ │ │ ├── SDKs:javascript:interfaces:BaseHTTPClientError.md │ │ │ │ │ ├── SDKs:javascript:interfaces:BaseHTTPClientResponse.md │ │ │ │ │ ├── SDKs:javascript:interfaces:BoxReference.md │ │ │ │ │ ├── SDKs:javascript:interfaces:CustomTokenHeader.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedAssetParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedBoxReference.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedGlobalStateSchema.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedLocalStateSchema.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedLogicSig.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedLogicSigAccount.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedMultisig.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedSignedTransaction.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedSubsig.md │ │ │ │ │ ├── SDKs:javascript:interfaces:EncodedTransaction.md │ │ │ │ │ ├── SDKs:javascript:interfaces:IndexerTokenHeader.md │ │ │ │ │ ├── SDKs:javascript:interfaces:KMDTokenHeader.md │ │ │ │ │ ├── SDKs:javascript:interfaces:MultisigMetadata.md │ │ │ │ │ ├── SDKs:javascript:interfaces:SignedTransaction.md │ │ │ │ │ ├── SDKs:javascript:interfaces:SuggestedParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:TransactionParams.md │ │ │ │ │ ├── SDKs:javascript:interfaces:TransactionWithSigner.md │ │ │ │ │ ├── SDKs:javascript:modules:indexerModels.md │ │ │ │ │ ├── SDKs:javascript:modules:modelsv2.md │ │ │ │ │ ├── SDKs:javascript:modules.md │ │ │ │ │ ├── SDKs:javascript:README.md │ │ │ │ │ ├── SDKs:python:algosdk:v2client:harness:README.md │ │ │ │ │ ├── SDKs:python:examples:README.md │ │ │ │ │ ├── SDKs:python:README.md │ │ │ │ │ ├── tealscript:examples_amm_README.md │ │ │ │ │ ├── tealscript:examples_auction_README.md │ │ │ │ │ ├── tealscript:examples_big_box_README.md │ │ │ │ │ ├── tealscript:examples_itxns_README.md │ │ │ │ │ ├── tealscript:examples_lsig_with_app_README.md │ │ │ │ │ ├── tealscript:examples_reti_README.md │ │ │ │ │ ├── tealscript:FEATURES.md │ │ │ │ │ ├── tealscript:guides_atomic_txn.md │ │ │ │ │ ├── tealscript:guides_features.md │ │ │ │ │ ├── tealscript:guides_getting_started.md │ │ │ │ │ ├── tealscript:guides_inner_transactions.md │ │ │ │ │ ├── tealscript:guides_lifecycle.md │ │ │ │ │ ├── tealscript:guides_math.md │ │ │ │ │ ├── tealscript:guides_methods.md │ │ │ │ │ ├── tealscript:guides_multiple_contracts.md │ │ │ │ │ ├── tealscript:guides_pyteal.md │ │ │ │ │ ├── tealscript:guides_storage.md │ │ │ │ │ ├── tealscript:guides_Supported Types_arrays.md │ │ │ │ │ ├── tealscript:guides_Supported Types_numbers.md │ │ │ │ │ ├── TEALScript:README.md │ │ │ │ │ ├── tealscript:tests_test_package_README.md │ │ │ │ │ ├── tealscript:tutorials_Hello World_0001-intro.md │ │ │ │ │ ├── tealscript:tutorials_Hello World_0002-init.md │ │ │ │ │ ├── tealscript:tutorials_Hello World_0003-contract.md │ │ │ │ │ ├── tealscript:tutorials_Hello World_0004-artifacts.md │ │ │ │ │ ├── tealscript:tutorials_Hello World_0005-hello.md │ │ │ │ │ └── tealscript:tutorials_Hello World_0006-test.md │ │ │ │ └── taxonomy-categories │ │ │ │ ├── algokit-utils.json │ │ │ │ ├── algokit.json │ │ │ │ ├── arcs.json │ │ │ │ ├── clis.json │ │ │ │ ├── details.json │ │ │ │ ├── developers.json │ │ │ │ ├── liquid-auth.json │ │ │ │ ├── nodes.json │ │ │ │ ├── puya.json │ │ │ │ ├── python.json │ │ │ │ ├── sdks.json │ │ │ │ └── tealscript.json │ │ │ └── wallet │ │ │ └── index.ts │ │ ├── tools │ │ │ ├── accountManager.ts │ │ │ ├── algodManager.ts │ │ │ ├── apiManager │ │ │ │ ├── algod │ │ │ │ │ ├── account.ts │ │ │ │ │ ├── application.ts │ │ │ │ │ ├── asset.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── transaction.ts │ │ │ │ ├── example │ │ │ │ │ ├── get-balance.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── indexer │ │ │ │ │ ├── account.ts │ │ │ │ │ ├── application.ts │ │ │ │ │ ├── asset.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── transaction.ts │ │ │ │ ├── nfd │ │ │ │ │ └── index.ts │ │ │ │ ├── tinyman │ │ │ │ │ ├── analytics.ts │ │ │ │ │ ├── bootstrap.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── liquidity.ts │ │ │ │ │ ├── opt_in.ts │ │ │ │ │ ├── pool.ts │ │ │ │ │ ├── remove_liquidity.ts │ │ │ │ │ └── swap.ts │ │ │ │ ├── ultrade │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── market.ts │ │ │ │ │ ├── system.ts │ │ │ │ │ └── wallet.ts │ │ │ │ └── vestige │ │ │ │ ├── assets.ts │ │ │ │ ├── balances.ts │ │ │ │ ├── index.ts │ │ │ │ ├── networks.ts │ │ │ │ ├── notes.ts │ │ │ │ ├── pools.ts │ │ │ │ ├── protocols.ts │ │ │ │ ├── swaps.ts │ │ │ │ └── vaults.ts │ │ │ ├── arc26Manager.ts │ │ │ ├── index.ts │ │ │ ├── knowledgeManager.ts │ │ │ ├── transactionManager │ │ │ │ ├── accountTransactions.ts │ │ │ │ ├── appTransactions │ │ │ │ │ ├── callTxn.ts │ │ │ │ │ ├── clearTxn.ts │ │ │ │ │ ├── closeOutTxn.ts │ │ │ │ │ ├── createTxn.ts │ │ │ │ │ ├── deleteTxn.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── optInTxn.ts │ │ │ │ │ ├── test │ │ │ │ │ │ ├── counter_approval.teal │ │ │ │ │ │ ├── counter_clear.teal │ │ │ │ │ │ ├── storage_test_approval_v2.teal │ │ │ │ │ │ ├── storage_test_approval.teal │ │ │ │ │ │ └── storage_test_clear.teal │ │ │ │ │ ├── types.ts │ │ │ │ │ └── updateTxn.ts │ │ │ │ ├── assetTransactions.ts │ │ │ │ ├── generalTransaction.ts │ │ │ │ └── index.ts │ │ │ └── utilityManager.ts │ │ ├── types.ts │ │ └── utils │ │ └── responseProcessor.ts │ ├── tests │ │ ├── resources │ │ │ ├── algod │ │ │ │ ├── account.test.ts │ │ │ │ ├── application.test.ts │ │ │ │ ├── asset.test.ts │ │ │ │ └── transaction.test.ts │ │ │ └── indexer │ │ │ ├── account.test.ts │ │ │ ├── application.test.ts │ │ │ ├── asset.test.ts │ │ │ └── transaction.test.ts │ │ └── tools │ │ ├── accountManager.test.ts │ │ ├── algodManager.test.ts │ │ ├── apiManager │ │ │ └── example │ │ │ └── get-balance.test.ts │ │ ├── transactionManager │ │ │ ├── accountTransactionManager.test.ts │ │ │ ├── appTransactionManager.test.ts │ │ │ ├── assetTransactionManager.test.ts │ │ │ ├── generalTransactionManager.test.ts │ │ │ └── transactionManager.test.ts │ │ └── utilityManager.test.ts │ └── tsconfig.json ├── README.md ├── rename_files.sh └── tsconfig.json ``` # Files -------------------------------------------------------------------------------- /packages/server/src/tools/transactionManager/appTransactions/closeOutTxn.ts: -------------------------------------------------------------------------------- ```typescript import { Transaction, makeApplicationCloseOutTxnFromObject, OnApplicationComplete } from 'algosdk'; import { McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js'; import { AppCloseOutTxnParams } from './types.js'; /** * Creates an application close-out transaction * @param params The parameters for closing out from the application * @returns The created transaction * @throws {McpError} If the transaction creation fails */ export function makeApplicationCloseOutTxn(params: AppCloseOutTxnParams): Transaction { try { // Create a new object with the required structure const txnParams = { from: params.from, appIndex: params.appIndex, suggestedParams: params.suggestedParams, note: params.note, lease: params.lease, rekeyTo: params.rekeyTo, appArgs: params.appArgs, accounts: params.accounts, foreignApps: params.foreignApps, foreignAssets: params.foreignAssets, boxes: params.boxes }; // Pass the onComplete parameter separately return makeApplicationCloseOutTxnFromObject({ ...txnParams, onComplete: OnApplicationComplete.CloseOutOC } as any); // Use type assertion since the types are not perfectly aligned } catch (error) { console.error('[MCP Error] Failed to create application close-out transaction:', error); throw new McpError( ErrorCode.InternalError, `Failed to create application close-out transaction: ${error instanceof Error ? error.message : 'Unknown error'}` ); } } /** * Handles the application close-out tool request * @param args The tool arguments * @param suggestedParams The suggested transaction parameters * @returns The transaction parameters * @throws {McpError} If the parameters are invalid */ export function handleCloseOutTxn(args: Record<string, unknown>, suggestedParams: any): Record<string, any> { try { if (!args.from || !args.appIndex) { console.error('[MCP Error] Invalid application close-out parameters'); throw new McpError(ErrorCode.InvalidParams, 'Invalid application close-out parameters'); } // Create transaction with proper parameter handling const txnParams: Record<string, any> = { from: String(args.from), appIndex: Number(args.appIndex), fee: suggestedParams.fee, firstRound: suggestedParams.firstRound, lastRound: suggestedParams.lastRound, genesisID: suggestedParams.genesisID, genesisHash: suggestedParams.genesisHash, type: 'appl', onComplete: OnApplicationComplete.CloseOutOC }; // Handle optional fields if (typeof args.note === 'string') { const noteBytes = new TextEncoder().encode(args.note); txnParams.note = Buffer.from(noteBytes).toString('base64'); } if (typeof args.lease === 'string') { const leaseBytes = new TextEncoder().encode(args.lease); txnParams.lease = Buffer.from(leaseBytes).toString('base64'); } if (typeof args.rekeyTo === 'string') { txnParams.rekeyTo = String(args.rekeyTo); } if (Array.isArray(args.appArgs)) { txnParams.appArgs = args.appArgs.map(arg => { const bytes = new TextEncoder().encode(String(arg)); return Buffer.from(bytes).toString('base64'); }); } if (Array.isArray(args.accounts)) { txnParams.accounts = args.accounts.filter((acc): acc is string => typeof acc === 'string'); } if (Array.isArray(args.foreignApps)) { txnParams.foreignApps = args.foreignApps.filter((app): app is number => typeof app === 'number'); } if (Array.isArray(args.foreignAssets)) { txnParams.foreignAssets = args.foreignAssets.filter((asset): asset is number => typeof asset === 'number'); } return txnParams; } catch (error) { if (error instanceof McpError) { throw error; } console.error('[MCP Error] Failed to handle application close-out:', error); throw new McpError( ErrorCode.InternalError, `Failed to handle application close-out: ${error instanceof Error ? error.message : 'Unknown error'}` ); } } ``` -------------------------------------------------------------------------------- /packages/server/src/tools/transactionManager/appTransactions/clearTxn.ts: -------------------------------------------------------------------------------- ```typescript import { Transaction, makeApplicationClearStateTxnFromObject, OnApplicationComplete } from 'algosdk'; import { McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js'; import { AppClearStateTxnParams } from './types.js'; /** * Creates an application clear state transaction * @param params The parameters for clearing application state * @returns The created transaction * @throws {McpError} If the transaction creation fails */ export function makeApplicationClearStateTxn(params: AppClearStateTxnParams): Transaction { try { // Create a new object with the required structure const txnParams = { from: params.from, appIndex: params.appIndex, suggestedParams: params.suggestedParams, note: params.note, lease: params.lease, rekeyTo: params.rekeyTo, appArgs: params.appArgs, accounts: params.accounts, foreignApps: params.foreignApps, foreignAssets: params.foreignAssets, boxes: params.boxes }; // Pass the onComplete parameter separately return makeApplicationClearStateTxnFromObject({ ...txnParams, onComplete: OnApplicationComplete.ClearStateOC } as any); // Use type assertion since the types are not perfectly aligned } catch (error) { console.error('[MCP Error] Failed to create application clear state transaction:', error); throw new McpError( ErrorCode.InternalError, `Failed to create application clear state transaction: ${error instanceof Error ? error.message : 'Unknown error'}` ); } } /** * Handles the application clear state tool request * @param args The tool arguments * @param suggestedParams The suggested transaction parameters * @returns The transaction parameters * @throws {McpError} If the parameters are invalid */ export function handleClearTxn(args: Record<string, unknown>, suggestedParams: any): Record<string, any> { try { if (!args.from || !args.appIndex) { console.error('[MCP Error] Invalid application clear state parameters'); throw new McpError(ErrorCode.InvalidParams, 'Invalid application clear state parameters'); } // Create transaction with proper parameter handling const txnParams: Record<string, any> = { from: String(args.from), appIndex: Number(args.appIndex), fee: suggestedParams.fee, firstRound: suggestedParams.firstRound, lastRound: suggestedParams.lastRound, genesisID: suggestedParams.genesisID, genesisHash: suggestedParams.genesisHash, type: 'appl', onComplete: OnApplicationComplete.ClearStateOC }; // Handle optional fields if (typeof args.note === 'string') { const noteBytes = new TextEncoder().encode(args.note); txnParams.note = Buffer.from(noteBytes).toString('base64'); } if (typeof args.lease === 'string') { const leaseBytes = new TextEncoder().encode(args.lease); txnParams.lease = Buffer.from(leaseBytes).toString('base64'); } if (typeof args.rekeyTo === 'string') { txnParams.rekeyTo = String(args.rekeyTo); } if (Array.isArray(args.appArgs)) { txnParams.appArgs = args.appArgs.map(arg => { const bytes = new TextEncoder().encode(String(arg)); return Buffer.from(bytes).toString('base64'); }); } if (Array.isArray(args.accounts)) { txnParams.accounts = args.accounts.filter((acc): acc is string => typeof acc === 'string'); } if (Array.isArray(args.foreignApps)) { txnParams.foreignApps = args.foreignApps.filter((app): app is number => typeof app === 'number'); } if (Array.isArray(args.foreignAssets)) { txnParams.foreignAssets = args.foreignAssets.filter((asset): asset is number => typeof asset === 'number'); } return txnParams; } catch (error) { if (error instanceof McpError) { throw error; } console.error('[MCP Error] Failed to handle application clear state:', error); throw new McpError( ErrorCode.InternalError, `Failed to handle application clear state: ${error instanceof Error ? error.message : 'Unknown error'}` ); } } ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/ARCs:specs:arc-0026.md: -------------------------------------------------------------------------------- ```markdown --- arc: 26 title: URI scheme description: A specification for encoding Transactions in a URI format. author: Fabrice Benhamouda (@fabrice102), Ben Guidarelli (@barnjamin) status: Final type: Standards Track category: Interface sub-category: General created: 2022-04-21 extended-by: 78, 79 --- ## Abstract This URI specification represents a standardized way for applications and websites to send requests and information through deeplinks, QR codes, etc. It is heavily based on Bitcoin’s <a href="https://github.com/bitcoin/bips/blob/master/bip-0021.mediawiki">BIP-0021</a> and should be seen as derivative of it. The decision to base it on BIP-0021 was made to make it easy and compatible as possible for any other application. ## Specification ### General format Algorand URIs follow the general format for URIs as set forth in <a href="https://www.rfc-editor.org/rfc/rfc3986">RFC 3986</a>. The path component consists of an Algorand address, and the query component provides additional payment options. Elements of the query component may contain characters outside the valid range. These must first be encoded according to UTF-8, and then each octet of the corresponding UTF-8 sequence must be percent-encoded as described in RFC 3986. ### ABNF Grammar ``` algorandurn = "algorand://" algorandaddress [ "?" algorandparams ] algorandaddress = *base32 algorandparams = algorandparam [ "&" algorandparams ] algorandparam = [ amountparam / labelparam / noteparam / assetparam / otherparam ] amountparam = "amount=" *digit labelparam = "label=" *qchar assetparam = "asset=" *digit noteparam = (xnote | note) xnote = "xnote=" *qchar note = "note=" *qchar otherparam = qchar *qchar [ "=" *qchar ] ``` Here, "qchar" corresponds to valid characters of an RFC 3986 URI query component, excluding the "=" and "&" characters, which this specification takes as separators. The scheme component ("algorand:") is case-insensitive, and implementations must accept any combination of uppercase and lowercase letters. The rest of the URI is case-sensitive, including the query parameter keys. !!! Caveat When it comes to generation of an address' QR, many exchanges and wallets encodes the address w/o the scheme component (“algorand:”). This is not a URI so it is OK. ### Query Keys - label: Label for that address (e.g. name of receiver) - address: Algorand address - xnote: A URL-encoded notes field value that must not be modifiable by the user when displayed to users. - note: A URL-encoded default notes field value that the the user interface may optionally make editable by the user. - amount: microAlgos or smallest unit of asset - asset: The asset id this request refers to (if Algos, simply omit this parameter) - (others): optional, for future extensions ### Transfer amount/size !!! Note This is DIFFERENT than Bitcoin’s BIP-0021 If an amount is provided, it MUST be specified in basic unit of the asset. For example, if it’s Algos (Algorand native unit), the amount should be specified in microAlgos. All amounts MUST NOT contain commas nor a period (.) Strictly non negative integers. e.g. for 100 Algos, the amount needs to be 100000000, for 54.1354 Algos the amount needs to be 54135400. Algorand Clients should display the amount in whole Algos. Where needed, microAlgos can be used as well. In any case, the units shall be clear for the user. ### Appendix This section contains several examples address - ``` algorand://TMTAD6N22HCS2LKH7677L2KFLT3PAQWY6M4JFQFXQS32ECBFC23F57RYX4 ``` address with label - ``` algorand://TMTAD6N22HCS2LKH7677L2KFLT3PAQWY6M4JFQFXQS32ECBFC23F57RYX4?label=Silvio ``` Request 150.5 Algos from an address ``` algorand://TMTAD6N22HCS2LKH7677L2KFLT3PAQWY6M4JFQFXQS32ECBFC23F57RYX4?amount=150500000 ``` Request 150 units of Asset ID 45 from an address ``` algorand://TMTAD6N22HCS2LKH7677L2KFLT3PAQWY6M4JFQFXQS32ECBFC23F57RYX4?amount=150&asset=45 ``` ## Rationale ## Security Considerations None. ## Copyright Copyright and related rights waived via <a href="https://creativecommons.org/publicdomain/zero/1.0/">CCO</a>. ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/ARCs:ARC-template.md: -------------------------------------------------------------------------------- ```markdown --- arc: <to be assigned> title: <The ARC title is a few words, not a complete sentence> description: <Description is one full (short) sentence> author: <a comma separated list of the author's or authors' name + GitHub username (in parenthesis), or name and email (in angle brackets). Example, FirstName LastName (@GitHubUsername), FirstName LastName <[email protected]>, FirstName (@GitHubUsername) and GitHubUsername (@GitHubUsername)> discussions-to: <URL> status: Draft type: <Standards Track, Meta, or Informational> category (*only required for Standards Track): <Interface, or ARC> subcategory: <General, Asa, Application, Explorer or Wallet> created: <date created on, in ISO 8601 (yyyy-mm-dd) format> requires (*optional): <ARC number(s)> --- This is the suggested template for new ARCs. Note that an ARC number will be assigned by an editor. When opening a pull request to submit your ARC, please use an abbreviated title in the filename, `arc-draft_title_abbrev.md`. The title should be 44 characters or less. It should not repeat the ARC number in title, irrespective of the category. ## Abstract Abstract is a multi-sentence (short paragraph) technical summary. This should be a very terse and human-readable version of the specification section. Someone should be able to read only the abstract to get the gist of what this specification does. ## Motivation The motivation section should describe the "why" of this ARC. What problem does it solve? Why should someone want to implement this standard? What benefit does it provide to the Algorand ecosystem? What use cases does this ARC address? ## Specification The key words "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**", "**SHALL NOT**", "**SHOULD**", "**SHOULD NOT**", "**RECOMMENDED**", "**MAY**", and "**OPTIONAL**" in this document are to be interpreted as described in <a href="https://www.ietf.org/rfc/rfc2119.txt">RFC-2119</a>. The technical specification should describe the syntax and semantics of any new feature. The specification should be detailed enough to allow competing, interoperable implementations for any of the current Algorand platforms (go-algorand, ...). ## Rationale The rationale fleshes out the specification by describing what motivated the design and why particular design decisions were made. It should describe alternate designs that were considered and related work, e.g. how the feature is supported in other languages. ## Backwards Compatibility All ARCs that introduce backwards incompatibilities must include a section describing these incompatibilities and their severity. The ARC must explain how the author proposes to deal with these incompatibilities. ARC submissions without a sufficient backwards compatibility treatise may be rejected outright. ## Test Cases Test cases for an implementation are mandatory for ARCs that are affecting consensus changes. If the test suite is too large to reasonably be included inline, then consider adding it as one or more files in `../assets/arc-####/`. ## Reference Implementation An optional section that contains a reference/example implementation that people can use to assist in understanding or implementing this specification. If the implementation is too large to reasonably be included inline, then consider adding it as one or more files in `../assets/arc-####/`. ## Security Considerations All ARCs must contain a section that discusses the security implications/considerations relevant to the proposed change. Include information that might be important for security discussions, surfaces risks and can be used throughout the life cycle of the proposal. E.g. include security-relevant design decisions, concerns, important discussions, implementation-specific guidance and pitfalls, an outline of threats and risks and how they are being addressed. ARC submissions missing the "Security Considerations" section will be rejected. An ARC cannot proceed to status "Final" without a Security Considerations discussion deemed sufficient by the reviewers. ## Copyright Copyright and related rights waived via <a href="https://creativecommons.org/publicdomain/zero/1.0/">CCO</a>. ``` -------------------------------------------------------------------------------- /packages/server/src/tools/transactionManager/appTransactions/updateTxn.ts: -------------------------------------------------------------------------------- ```typescript import { Transaction, makeApplicationUpdateTxnFromObject, OnApplicationComplete } from 'algosdk'; import { McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js'; import { AppUpdateTxnParams } from './types.js'; /** * Creates an application update transaction * @param params The parameters for updating the application * @returns The created transaction * @throws {McpError} If the transaction creation fails */ export function makeApplicationUpdateTxn(params: AppUpdateTxnParams): Transaction { try { // Create a new object with the required structure const txnParams = { from: params.from, appIndex: params.appIndex, approvalProgram: params.approvalProgram, clearProgram: params.clearProgram, suggestedParams: params.suggestedParams, note: params.note, lease: params.lease, rekeyTo: params.rekeyTo, appArgs: params.appArgs, accounts: params.accounts, foreignApps: params.foreignApps, foreignAssets: params.foreignAssets, boxes: params.boxes, onComplete: 4 }; return makeApplicationUpdateTxnFromObject(txnParams); } catch (error) { console.error('[MCP Error] Failed to create application update transaction:', error); throw new McpError( ErrorCode.InternalError, `Failed to create application update transaction: ${error instanceof Error ? error.message : 'Unknown error'}` ); } } /** * Handles the application update tool request * @param args The tool arguments * @param suggestedParams The suggested transaction parameters * @returns The transaction parameters * @throws {McpError} If the parameters are invalid */ export function handleUpdateTxn(args: Record<string, unknown>, suggestedParams: any): Record<string, any> { try { if (!args.from || !args.appIndex || !args.approvalProgram || !args.clearProgram) { console.error('[MCP Error] Invalid application update parameters'); throw new McpError(ErrorCode.InvalidParams, 'Invalid application update parameters'); } // Create transaction with proper parameter handling const txnParams: Record<string, any> = { from: String(args.from), appIndex: Number(args.appIndex), fee: suggestedParams.fee, firstRound: suggestedParams.firstRound, lastRound: suggestedParams.lastRound, genesisID: suggestedParams.genesisID, genesisHash: suggestedParams.genesisHash, type: 'appl', onComplete: 4, // Programs are already base64 encoded approvalProgram: args.approvalProgram as string, clearProgram: args.clearProgram as string }; // Handle optional fields if (typeof args.note === 'string') { const noteBytes = new TextEncoder().encode(args.note); txnParams.note = Buffer.from(noteBytes).toString('base64'); } if (typeof args.lease === 'string') { const leaseBytes = new TextEncoder().encode(args.lease); txnParams.lease = Buffer.from(leaseBytes).toString('base64'); } if (typeof args.rekeyTo === 'string') { txnParams.rekeyTo = String(args.rekeyTo); } if (Array.isArray(args.appArgs)) { txnParams.appArgs = args.appArgs.map(arg => { const bytes = new TextEncoder().encode(String(arg)); return Buffer.from(bytes).toString('base64'); }); } if (Array.isArray(args.accounts)) { txnParams.accounts = args.accounts.filter((acc): acc is string => typeof acc === 'string'); } if (Array.isArray(args.foreignApps)) { txnParams.foreignApps = args.foreignApps.filter((app): app is number => typeof app === 'number'); } if (Array.isArray(args.foreignAssets)) { txnParams.foreignAssets = args.foreignAssets.filter((asset): asset is number => typeof asset === 'number'); } return txnParams; } catch (error) { if (error instanceof McpError) { throw error; } console.error('[MCP Error] Failed to handle application update:', error); throw new McpError( ErrorCode.InternalError, `Failed to handle application update: ${error instanceof Error ? error.message : 'Unknown error'}` ); } } ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:indexerModels.BlockRewards.md: -------------------------------------------------------------------------------- ```markdown [algosdk](../README.md) / [Exports](../modules.md) / [indexerModels](../modules/indexerModels.md) / BlockRewards # Class: BlockRewards [indexerModels](../modules/indexerModels.md).BlockRewards Fields relating to rewards, ## Hierarchy - `default` ↳ **`BlockRewards`** ## Table of contents ### Constructors - [constructor](indexerModels.BlockRewards.md#constructor) ### Properties - [attribute\_map](indexerModels.BlockRewards.md#attribute_map) - [feeSink](indexerModels.BlockRewards.md#feesink) - [rewardsCalculationRound](indexerModels.BlockRewards.md#rewardscalculationround) - [rewardsLevel](indexerModels.BlockRewards.md#rewardslevel) - [rewardsPool](indexerModels.BlockRewards.md#rewardspool) - [rewardsRate](indexerModels.BlockRewards.md#rewardsrate) - [rewardsResidue](indexerModels.BlockRewards.md#rewardsresidue) ### Methods - [get\_obj\_for\_encoding](indexerModels.BlockRewards.md#get_obj_for_encoding) - [from\_obj\_for\_encoding](indexerModels.BlockRewards.md#from_obj_for_encoding) ## Constructors ### constructor • **new BlockRewards**(`«destructured»`) Creates a new `BlockRewards` object. #### Parameters | Name | Type | | :------ | :------ | | `«destructured»` | `Object` | | › `feeSink` | `string` | | › `rewardsCalculationRound` | `number` \| `bigint` | | › `rewardsLevel` | `number` \| `bigint` | | › `rewardsPool` | `string` | | › `rewardsRate` | `number` \| `bigint` | | › `rewardsResidue` | `number` \| `bigint` | #### Overrides BaseModel.constructor #### Defined in client/v2/indexer/models/types.ts:2523 ## Properties ### attribute\_map • **attribute\_map**: `Record`\<`string`, `string`\> #### Inherited from BaseModel.attribute\_map #### Defined in client/v2/basemodel.ts:56 ___ ### feeSink • **feeSink**: `string` (fees) accepts transaction fees, it can only spend to the incentive pool. #### Defined in client/v2/indexer/models/types.ts:2477 ___ ### rewardsCalculationRound • **rewardsCalculationRound**: `number` \| `bigint` (rwcalr) number of leftover MicroAlgos after the distribution of rewards-rate MicroAlgos for every reward unit in the next round. #### Defined in client/v2/indexer/models/types.ts:2483 ___ ### rewardsLevel • **rewardsLevel**: `number` \| `bigint` (earn) How many rewards, in MicroAlgos, have been distributed to each RewardUnit of MicroAlgos since genesis. #### Defined in client/v2/indexer/models/types.ts:2489 ___ ### rewardsPool • **rewardsPool**: `string` (rwd) accepts periodic injections from the fee-sink and continually redistributes them as rewards. #### Defined in client/v2/indexer/models/types.ts:2495 ___ ### rewardsRate • **rewardsRate**: `number` \| `bigint` (rate) Number of new MicroAlgos added to the participation stake from rewards at the next round. #### Defined in client/v2/indexer/models/types.ts:2501 ___ ### rewardsResidue • **rewardsResidue**: `number` \| `bigint` (frac) Number of leftover MicroAlgos after the distribution of RewardsRate/rewardUnits MicroAlgos for every reward unit in the next round. #### Defined in client/v2/indexer/models/types.ts:2507 ## Methods ### get\_obj\_for\_encoding ▸ **get_obj_for_encoding**(`binary?`): `Record`\<`string`, `any`\> Get an object ready for encoding to either JSON or msgpack. #### Parameters | Name | Type | Default value | Description | | :------ | :------ | :------ | :------ | | `binary` | `boolean` | `false` | Use true to indicate that the encoding can handle raw binary objects (Uint8Arrays). Use false to indicate that raw binary objects should be converted to base64 strings. True should be used for objects that will be encoded with msgpack, and false should be used for objects that will be encoded with JSON. | #### Returns `Record`\<`string`, `any`\> #### Inherited from BaseModel.get\_obj\_for\_encoding #### Defined in client/v2/basemodel.ts:65 ___ ### from\_obj\_for\_encoding ▸ `Static` **from_obj_for_encoding**(`data`): [`BlockRewards`](indexerModels.BlockRewards.md) #### Parameters | Name | Type | | :------ | :------ | | `data` | `Record`\<`string`, `any`\> | #### Returns [`BlockRewards`](indexerModels.BlockRewards.md) #### Defined in client/v2/indexer/models/types.ts:2557 ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:cli:features:tasks:sign.md: -------------------------------------------------------------------------------- ```markdown # AlgoKit Task Sign 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. ## Usage Available commands and possible usage as follows: ```bash $ ~ algokit task sign Usage: algokit task sign [OPTIONS] Sign goal clerk compatible Algorand transaction(s). Options: -a, --account TEXT Address or alias of the signer account. [required] -f, --file PATH Single or multiple message pack encoded transactions from binary file to sign. -t, --transaction TEXT Single base64 encoded transaction object to sign. -o, --output PATH The output file path to store signed transaction(s). --force Force signing without confirmation. -h, --help Show this message and exit. ``` ## Options - `--account, -a TEXT`: Specifies the address or alias of the signer account. This option is required. - `--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. - `--transaction, -t TEXT`: Specifies a single base64 encoded transaction object to sign. Mutually exclusive with `--file` option. - `--output, -o PATH`: Specifies the output file path to store signed transaction(s). - `--force`: If specified, it allows signing without interactive confirmation prompt. > 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. ## Example To sign a transaction, you can use the `sign` command as follows: ```bash $ algokit task sign --account {YOUR_ACCOUNT_ALIAS OR YOUR_ADDRESS} --file {PATH_TO_BINARY_FILE_CONTAINING_TRANSACTIONS} ``` This will prompt you to confirm the transaction details before signing. If you want to bypass the confirmation, you can use the `--force` flag: ```bash $ algokit task sign --account {YOUR_ACCOUNT_ALIAS OR YOUR_ADDRESS} --transaction {YOUR_BASE64_ENCODED_TRANSACTION} --force ``` 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: ```bash $ algokit task sign --account {YOUR_ACCOUNT_ALIAS OR YOUR_ADDRESS} --transaction {YOUR_BASE64_ENCODED_TRANSACTION} --output /path/to/output/file ``` This will write the signed transaction to the specified file. ## Goal Compatibility Please note, at the moment this feature only supports [`goal clerk`](https://developer.algorand.org/docs/clis/goal/clerk/clerk/) compatible transaction objects. When `--output` option is not specified, the signed transaction(s) will be output to the console in a following JSON format: ``` [ {transaction_id: "TRANSACTION_ID", content: "BASE64_ENCODED_SIGNED_TRANSACTION"}, ] ``` 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. ### Encoding transactins for signing 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. Encoding simple txn object in python: ```py # Encoding single transaction as a base64 encoded string algosdk.encoding.msgpack_encode({"txn": {YOUR_TXN_OBJECT}.dictify()}) # Resulting string can be passed directy to algokit task sign with --transaction flag # Encoding multiple transactions as a message pack encoded binary file algosdk.transaction.write_to_file([{YOUR_TXN_OBJECT}], "some_file.txn") # Resulting file path can be passed directly to algokit sign with --file flag ``` Encoding simple txn object in javascript: ```ts Buffer.from(algosdk.encodeObj({ txn: txn.get_obj_for_encoding() })).toString( "base64" ); // Resulting string can be passed directy to algokit task sign with --transaction flag ``` ## Further Reading For in-depth details, visit the [sign section](../../cli/index.md#sign) in the AlgoKit CLI reference documentation. ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:modelsv2.AccountParticipation.md: -------------------------------------------------------------------------------- ```markdown [algosdk](../README.md) / [Exports](../modules.md) / [modelsv2](../modules/modelsv2.md) / AccountParticipation # Class: AccountParticipation [modelsv2](../modules/modelsv2.md).AccountParticipation AccountParticipation describes the parameters used by this account in consensus protocol. ## Hierarchy - `default` ↳ **`AccountParticipation`** ## Table of contents ### Constructors - [constructor](modelsv2.AccountParticipation.md#constructor) ### Properties - [attribute\_map](modelsv2.AccountParticipation.md#attribute_map) - [selectionParticipationKey](modelsv2.AccountParticipation.md#selectionparticipationkey) - [stateProofKey](modelsv2.AccountParticipation.md#stateproofkey) - [voteFirstValid](modelsv2.AccountParticipation.md#votefirstvalid) - [voteKeyDilution](modelsv2.AccountParticipation.md#votekeydilution) - [voteLastValid](modelsv2.AccountParticipation.md#votelastvalid) - [voteParticipationKey](modelsv2.AccountParticipation.md#voteparticipationkey) ### Methods - [get\_obj\_for\_encoding](modelsv2.AccountParticipation.md#get_obj_for_encoding) - [from\_obj\_for\_encoding](modelsv2.AccountParticipation.md#from_obj_for_encoding) ## Constructors ### constructor • **new AccountParticipation**(`«destructured»`) Creates a new `AccountParticipation` object. #### Parameters | Name | Type | | :------ | :------ | | `«destructured»` | `Object` | | › `selectionParticipationKey` | `string` \| `Uint8Array` | | › `stateProofKey?` | `string` \| `Uint8Array` | | › `voteFirstValid` | `number` \| `bigint` | | › `voteKeyDilution` | `number` \| `bigint` | | › `voteLastValid` | `number` \| `bigint` | | › `voteParticipationKey` | `string` \| `Uint8Array` | #### Overrides BaseModel.constructor #### Defined in client/v2/algod/models/types.ts:769 ## Properties ### attribute\_map • **attribute\_map**: `Record`\<`string`, `string`\> #### Inherited from BaseModel.attribute\_map #### Defined in client/v2/basemodel.ts:56 ___ ### selectionParticipationKey • **selectionParticipationKey**: `Uint8Array` (sel) Selection public key (if any) currently registered for this round. #### Defined in client/v2/algod/models/types.ts:731 ___ ### stateProofKey • `Optional` **stateProofKey**: `Uint8Array` (stprf) Root of the state proof key (if any) #### Defined in client/v2/algod/models/types.ts:757 ___ ### voteFirstValid • **voteFirstValid**: `number` \| `bigint` (voteFst) First round for which this participation is valid. #### Defined in client/v2/algod/models/types.ts:736 ___ ### voteKeyDilution • **voteKeyDilution**: `number` \| `bigint` (voteKD) Number of subkeys in each batch of participation keys. #### Defined in client/v2/algod/models/types.ts:741 ___ ### voteLastValid • **voteLastValid**: `number` \| `bigint` (voteLst) Last round for which this participation is valid. #### Defined in client/v2/algod/models/types.ts:746 ___ ### voteParticipationKey • **voteParticipationKey**: `Uint8Array` (vote) root participation public key (if any) currently registered for this round. #### Defined in client/v2/algod/models/types.ts:752 ## Methods ### get\_obj\_for\_encoding ▸ **get_obj_for_encoding**(`binary?`): `Record`\<`string`, `any`\> Get an object ready for encoding to either JSON or msgpack. #### Parameters | Name | Type | Default value | Description | | :------ | :------ | :------ | :------ | | `binary` | `boolean` | `false` | Use true to indicate that the encoding can handle raw binary objects (Uint8Arrays). Use false to indicate that raw binary objects should be converted to base64 strings. True should be used for objects that will be encoded with msgpack, and false should be used for objects that will be encoded with JSON. | #### Returns `Record`\<`string`, `any`\> #### Inherited from BaseModel.get\_obj\_for\_encoding #### Defined in client/v2/basemodel.ts:65 ___ ### from\_obj\_for\_encoding ▸ `Static` **from_obj_for_encoding**(`data`): [`AccountParticipation`](modelsv2.AccountParticipation.md) #### Parameters | Name | Type | | :------ | :------ | | `data` | `Record`\<`string`, `any`\> | #### Returns [`AccountParticipation`](modelsv2.AccountParticipation.md) #### Defined in client/v2/algod/models/types.ts:812 ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:code:modules:types_transaction.md: -------------------------------------------------------------------------------- ```markdown [@algorandfoundation/algokit-utils](../README.md) / types/transaction # Module: types/transaction ## Table of contents ### Interfaces - [AtomicTransactionComposerToSend](../interfaces/types_transaction.AtomicTransactionComposerToSend.md) - [ConfirmedTransactionResult](../interfaces/types_transaction.ConfirmedTransactionResult.md) - [ConfirmedTransactionResults](../interfaces/types_transaction.ConfirmedTransactionResults.md) - [SendAtomicTransactionComposerResults](../interfaces/types_transaction.SendAtomicTransactionComposerResults.md) - [SendParams](../interfaces/types_transaction.SendParams.md) - [SendTransactionParams](../interfaces/types_transaction.SendTransactionParams.md) - [SendTransactionResult](../interfaces/types_transaction.SendTransactionResult.md) - [SendTransactionResults](../interfaces/types_transaction.SendTransactionResults.md) - [TransactionGroupToSend](../interfaces/types_transaction.TransactionGroupToSend.md) - [TransactionToSign](../interfaces/types_transaction.TransactionToSign.md) ### Type Aliases - [Arc2TransactionNote](types_transaction.md#arc2transactionnote) - [SendSingleTransactionResult](types_transaction.md#sendsingletransactionresult) - [SendTransactionFrom](types_transaction.md#sendtransactionfrom) - [TransactionNote](types_transaction.md#transactionnote) - [TransactionNoteData](types_transaction.md#transactionnotedata) ## Type Aliases ### Arc2TransactionNote Ƭ **Arc2TransactionNote**: \{ `dAppName`: `string` ; `data`: `string` ; `format`: ``"m"`` \| ``"b"`` \| ``"u"`` } \| \{ `dAppName`: `string` ; `data`: [`TransactionNoteData`](types_transaction.md#transactionnotedata) ; `format`: ``"j"`` } ARC-0002 compatible transaction note components https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0002.md #### Defined in [src/types/transaction.ts:16](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L16) ___ ### SendSingleTransactionResult Ƭ **SendSingleTransactionResult**: [`Expand`](types_expand.md#expand)\<[`SendAtomicTransactionComposerResults`](../interfaces/types_transaction.SendAtomicTransactionComposerResults.md) & [`ConfirmedTransactionResult`](../interfaces/types_transaction.ConfirmedTransactionResult.md)\> Result from sending a single transaction. #### Defined in [src/types/transaction.ts:50](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L50) ___ ### SendTransactionFrom Ƭ **SendTransactionFrom**: `Account` \| [`SigningAccount`](../classes/types_account.SigningAccount.md) \| `LogicSigAccount` \| [`MultisigAccount`](../classes/types_account.MultisigAccount.md) \| [`TransactionSignerAccount`](../interfaces/types_account.TransactionSignerAccount.md) Core account abstraction when signing/sending transactions This type is used across the entire AlgoKit Utils library and allows you to pass through many types of accounts, including: * `Account` - The in-built `algosdk.Account` type for mnemonic accounts * `SigningAccount` - An AlgoKit Utils class that wraps Account to provide support for rekeyed accounts * `LogicSigAccount` - The in-built `algosdk.LogicSigAccount` type for logic signatures * `MultisigAccount` - An AlgoKit Utils class that wraps a multisig account and provides mechanisms to get a multisig account * `TransactionSignerAccount` - An AlgoKit Utils class that wraps the in-built `algosdk.TransactionSigner` along with the sender address #### Defined in [src/types/transaction.ts:108](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L108) ___ ### TransactionNote Ƭ **TransactionNote**: `Uint8Array` \| [`TransactionNoteData`](types_transaction.md#transactionnotedata) \| [`Arc2TransactionNote`](types_transaction.md#arc2transactionnote) #### Defined in [src/types/transaction.ts:12](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L12) ___ ### TransactionNoteData Ƭ **TransactionNoteData**: `string` \| ``null`` \| `undefined` \| `number` \| `any`[] \| `Record`\<`string`, `any`\> #### Defined in [src/types/transaction.ts:14](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L14) ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/developer:python:code:example:scratch_storage.md: -------------------------------------------------------------------------------- ```markdown # Scratch Storage in Algorand Smart Contracts 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. ## Basic Implementation ```python from algopy import ARC4Contract, Bytes, Contract, UInt64, op, urange from algopy.arc4 import abimethod TWO = 2 TWENTY = 20 class ScratchSlotsContract(ARC4Contract, scratch_slots=(1, TWO, urange(3, TWENTY))): @abimethod def store_data(self) -> bool: # Store values in scratch slots op.Scratch.store(1, UInt64(5)) op.Scratch.store(2, Bytes(b"Hello World")) # Load and verify values assert op.Scratch.load_uint64(1) == UInt64(5) assert op.Scratch.load_bytes(2) == b"Hello World" return True ``` ## Simplified Contract Example ```python class SimpleScratchSlotsContract(Contract, scratch_slots=(1, TWO, urange(3, TWENTY))): def approval_program(self) -> UInt64: # Load and verify values from scratch storage assert op.Scratch.load_uint64(1) == UInt64(5) assert op.Scratch.load_bytes(2) == b"Hello World" return UInt64(1) def clear_state_program(self) -> UInt64: return UInt64(1) ``` ## Key Features ### Scratch Slots Declaration ```python # Define scratch slots in class definition scratch_slots=(1, TWO, urange(3, TWENTY)) ``` - Specify individual slots (1) - Use constants (TWO) - Define ranges (urange(3, TWENTY)) ### Storage Operations ```python # Store values op.Scratch.store(1, UInt64(5)) # Store integer op.Scratch.store(2, Bytes(b"Hello")) # Store bytes # Load values value1 = op.Scratch.load_uint64(1) # Load integer value2 = op.Scratch.load_bytes(2) # Load bytes ``` ## Best Practices 1. **Slot Management**: - Define slots explicitly - Use meaningful constants - Document slot usage - Avoid slot conflicts 2. **Data Types**: - Use appropriate load methods - Verify data types - Handle type conversions - Check value ranges 3. **Memory Usage**: - Minimize slot usage - Clean up after use - Monitor memory limits - Optimize storage 4. **Error Handling**: - Verify loaded values - Handle missing data - Check slot bounds - Validate data types ## Common Patterns 1. **Temporary Calculations**: ```python def calculate_total(self) -> UInt64: # Store intermediate results op.Scratch.store(1, UInt64(5)) op.Scratch.store(2, UInt64(10)) # Load and combine results value1 = op.Scratch.load_uint64(1) value2 = op.Scratch.load_uint64(2) return value1 + value2 ``` 2. **Data Validation**: ```python def validate_input(self, input_data: Bytes) -> bool: # Store input for validation op.Scratch.store(1, input_data) # Load and validate stored_data = op.Scratch.load_bytes(1) return stored_data == input_data ``` ## Technical Details 1. **Slot Allocation**: - Slots are numbered from 0 - Maximum slot number is 255 - Each slot can store any type - Slots are cleared after execution 2. **Data Types**: - UInt64 for integers - Bytes for byte strings - Type-specific load methods - Automatic type checking 3. **Memory Constraints**: - Limited number of slots - Temporary storage only - No persistence between calls - Efficient for calculations 4. **Performance**: - Fast access times - Low overhead - Efficient for loops - Good for temporary data ## Use Cases 1. **Complex Calculations**: - Store intermediate results - Break down computations - Reuse common values - Optimize performance 2. **Data Validation**: - Store input data - Compare values - Check constraints - Verify formats 3. **State Transitions**: - Store previous state - Calculate changes - Verify transitions - Update final state 4. **Loop Operations**: - Store counters - Accumulate results - Track iterations - Handle aggregations 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. ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:modelsv2.TransactionParametersResponse.md: -------------------------------------------------------------------------------- ```markdown [algosdk](../README.md) / [Exports](../modules.md) / [modelsv2](../modules/modelsv2.md) / TransactionParametersResponse # Class: TransactionParametersResponse [modelsv2](../modules/modelsv2.md).TransactionParametersResponse TransactionParams contains the parameters that help a client construct a new transaction. ## Hierarchy - `default` ↳ **`TransactionParametersResponse`** ## Table of contents ### Constructors - [constructor](modelsv2.TransactionParametersResponse.md#constructor) ### Properties - [attribute\_map](modelsv2.TransactionParametersResponse.md#attribute_map) - [consensusVersion](modelsv2.TransactionParametersResponse.md#consensusversion) - [fee](modelsv2.TransactionParametersResponse.md#fee) - [genesisHash](modelsv2.TransactionParametersResponse.md#genesishash) - [genesisId](modelsv2.TransactionParametersResponse.md#genesisid) - [lastRound](modelsv2.TransactionParametersResponse.md#lastround) - [minFee](modelsv2.TransactionParametersResponse.md#minfee) ### Methods - [get\_obj\_for\_encoding](modelsv2.TransactionParametersResponse.md#get_obj_for_encoding) - [from\_obj\_for\_encoding](modelsv2.TransactionParametersResponse.md#from_obj_for_encoding) ## Constructors ### constructor • **new TransactionParametersResponse**(`«destructured»`) Creates a new `TransactionParametersResponse` object. #### Parameters | Name | Type | | :------ | :------ | | `«destructured»` | `Object` | | › `consensusVersion` | `string` | | › `fee` | `number` \| `bigint` | | › `genesisHash` | `string` \| `Uint8Array` | | › `genesisId` | `string` | | › `lastRound` | `number` \| `bigint` | | › `minFee` | `number` \| `bigint` | #### Overrides BaseModel.constructor #### Defined in client/v2/algod/models/types.ts:5816 ## Properties ### attribute\_map • **attribute\_map**: `Record`\<`string`, `string`\> #### Inherited from BaseModel.attribute\_map #### Defined in client/v2/basemodel.ts:56 ___ ### consensusVersion • **consensusVersion**: `string` ConsensusVersion indicates the consensus protocol version as of LastRound. #### Defined in client/v2/algod/models/types.ts:5771 ___ ### fee • **fee**: `number` \| `bigint` Fee is the suggested transaction fee Fee is in units of micro-Algos per byte. Fee may fall to zero but transactions must still have a fee of at least MinTxnFee for the current network protocol. #### Defined in client/v2/algod/models/types.ts:5779 ___ ### genesisHash • **genesisHash**: `Uint8Array` GenesisHash is the hash of the genesis block. #### Defined in client/v2/algod/models/types.ts:5784 ___ ### genesisId • **genesisId**: `string` GenesisID is an ID listed in the genesis block. #### Defined in client/v2/algod/models/types.ts:5789 ___ ### lastRound • **lastRound**: `number` \| `bigint` LastRound indicates the last round seen #### Defined in client/v2/algod/models/types.ts:5794 ___ ### minFee • **minFee**: `number` \| `bigint` The minimum transaction fee (not per byte) required for the txn to validate for the current network protocol. #### Defined in client/v2/algod/models/types.ts:5800 ## Methods ### get\_obj\_for\_encoding ▸ **get_obj_for_encoding**(`binary?`): `Record`\<`string`, `any`\> Get an object ready for encoding to either JSON or msgpack. #### Parameters | Name | Type | Default value | Description | | :------ | :------ | :------ | :------ | | `binary` | `boolean` | `false` | Use true to indicate that the encoding can handle raw binary objects (Uint8Arrays). Use false to indicate that raw binary objects should be converted to base64 strings. True should be used for objects that will be encoded with msgpack, and false should be used for objects that will be encoded with JSON. | #### Returns `Record`\<`string`, `any`\> #### Inherited from BaseModel.get\_obj\_for\_encoding #### Defined in client/v2/basemodel.ts:65 ___ ### from\_obj\_for\_encoding ▸ `Static` **from_obj_for_encoding**(`data`): [`TransactionParametersResponse`](modelsv2.TransactionParametersResponse.md) #### Parameters | Name | Type | | :------ | :------ | | `data` | `Record`\<`string`, `any`\> | #### Returns [`TransactionParametersResponse`](modelsv2.TransactionParametersResponse.md) #### Defined in client/v2/algod/models/types.ts:5853 ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/ARCs:specs:arc-0021.md: -------------------------------------------------------------------------------- ```markdown --- arc: 21 title: Round based datafeed oracles on Algorand description: Conventions for building round based datafeed oracles on Algorand author: ori-shem-tov (@ori-shem-tov) discussions-to: https://github.com/algorandfoundation/ARCs/issues/124 status: Final type: Standards Track category: Interface sub-category: Application created: 2022-03-09 requires: 4 --- # Round based datafeed oracles on Algorand ## Abstract The following document introduces conventions for building round based datafeed oracles on Algorand using the ABI defined in [ARC-4](./arc-0004.md) ## Specification The key words "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**", "**SHALL NOT**", "**SHOULD**", "**SHOULD NOT**", "**RECOMMENDED**", "**MAY**", and "**OPTIONAL**" in this document are to be interpreted as described in <a href="https://www.ietf.org/rfc/rfc2119.txt">RFC-2119</a>. > Comments like this are non-normative. An [ARC-21](./arc-0021.md) oracle **MUST** have an associated smart-contract implementaing the ABI interface described below. ### ABI Interface 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. The associated smart contract **MUST** implement the following ABI interface: ```json { "name": "ARC_0021", "desc": "Interface for a round based datafeed oracle", "methods": [ { "name": "get", "desc": "Get data from the oracle for a specific round", "args": [ { "type": "uint64", "name": "round", "desc": "The desired round" }, { "type": "byte[]", "name": "user_data", "desc": "Optional: Extra data provided by the user. Pass an empty slice if not used." } ], "returns": { "type": "byte[]", "desc": "The oracle's response. If the data doesn't exist, the response is an empty slice." } }, { "name": "must_get", "desc": "Get data from the oracle for a specific round. Panics if the data doesn't exist.", "args": [ { "type": "uint64", "name": "round", "desc": "The desired round" }, { "type": "byte[]", "name": "user_data", "desc": "Optional: Extra data provided by the user. Pass an empty slice if not used." } ], "returns": { "type": "byte[]", "desc": "The oracle's response" } }, /** Optional */ { "name": "get_closest", "desc": "Get data from the oracle closest to a specified round by searching over past rounds.", "args": [ { "type": "uint64", "name": "round", "desc": "The desired round" }, { "type": "uint64", "name": "search_span", "desc": "Threshold for number of rounds in the past to search on." } { "type": "byte[]", "name": "user_data", "desc": "Optional: Extra data provided by the user. Pass an empty slice if not used." } ], "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." } }, /** Optional */ { "name": "must_get_closest", "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.", "args": [ { "type": "uint64", "name": "round", "desc": "The desired round" }, { "type": "uint64", "name": "search_span", "desc": "Threshold for number of rounds in the past to search on." } { "type": "byte[]", "name": "user_data", "desc": "Optional: Extra data provided by the user. Pass an empty slice if not used." } ], "returns": { "type": "(uint64,byte[])", "desc": "The closest round and the oracle's response for that round." } } ] } ``` ### Method boundaries - All of `get`, `must_get`, `get_closest` and `must_get_closest` functions **MUST NOT** use local state. - Optional arguments of type `byte[]` that are not used are expected to be passed as an empty byte slice. ## Rationale The goal of these conventions is to make it easier for smart-contracts to interact with off-chain data sources. ## Security Considerations None. ## Copyright Copyright and related rights waived via <a href="https://creativecommons.org/publicdomain/zero/1.0/">CCO</a>. ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/developer:docs:run-a-node:participate:offline.md: -------------------------------------------------------------------------------- ```markdown title: Register offline 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) !!! info "Important" 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. # Create an offline key registration transaction 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). === "Python" <!-- ===PYSDK_TRANSACTION_KEYREG_OFFLINE_CREATE=== --> ```python # get suggested parameters params = algod_client.suggested_params() # create keyreg transaction to take this account offline offline_keyreg = transaction.KeyregTxn( sender="EW64GC6F24M7NDSC5R3ES4YUVE3ZXXNMARJHDCCCLIHZU6TBEOC7XRSBG4", sp=params, votekey=None, selkey=None, votefst=None, votelst=None, votekd=None, ) print(online_keyreg.dictify()) ``` [Snippet Source](https://github.com/algorand/py-algorand-sdk/blob/examples/examples/participation.py#L29-L43) <!-- ===PYSDK_TRANSACTION_KEYREG_OFFLINE_CREATE=== --> === "JavaScript" <!-- ===JSSDK_TRANSACTION_KEYREG_OFFLINE_CREATE=== --> ```javascript // get suggested parameters const suggestedParams = await algodClient.getTransactionParams().do(); // create keyreg transaction to take this account offline const offlineKeyReg = algosdk.makeKeyRegistrationTxnWithSuggestedParamsFromObject( { from: addr, suggestedParams, } ); console.log(offlineKeyReg.get_obj_for_encoding()); ``` [Snippet Source](https://github.com/algorand/js-algorand-sdk/blob/examples/examples/participation.ts#L44-L54) <!-- ===JSSDK_TRANSACTION_KEYREG_OFFLINE_CREATE=== --> === "Go" <!-- ===GOSDK_TRANSACTION_KEYREG_OFFLINE_CREATE=== --> <!-- ===GOSDK_TRANSACTION_KEYREG_OFFLINE_CREATE=== --> === "Java" <!-- ===JAVASDK_TRANSACTION_KEYREG_OFFLINE_CREATE=== --> ```java // create keyreg transaction to take this account offline Transaction keyRegOfflineTxn = Transaction.KeyRegistrationTransactionBuilder().suggestedParams(sp) .sender(address) .build(); ``` [Snippet Source](https://github.com/algorand/java-algorand-sdk/blob/examples/examples/src/main/java/com/algorand/examples/Participation.java#L37-L41) <!-- ===JAVASDK_TRANSACTION_KEYREG_OFFLINE_CREATE=== --> === "goal" <!-- ===GOAL_TRANSACTION_KEYREG_OFFLINE_CREATE=== --> ```zsh $ goal account changeonlinestatus --address=EW64GC6F24M7NDSC5R3ES4YUVE3ZXXNMARJHDCCCLIHZU6TBEOC7XRSBG4 --fee=1000 --firstvalid=7000000 --lastvalid=7001000 --online=false --txfile=offline.txn ``` <!-- ===GOAL_TRANSACTION_KEYREG_OFFLINE_CREATE=== --> # Authorize and Send the Transaction Use the appropriate [authorization method](../../../get-details/transactions/signatures) to sign the transaction. !!! tip It is recommended that you authorize the transaction offline to protect the security of your private keys, especially for high-value participating accounts. 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". **See also** - [Key Registration Transactions](../../../get-details/transactions#key-registration-transaction) - [Register account offline](../../../get-details/transactions#register-account-offline) ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:README.md: -------------------------------------------------------------------------------- ```markdown # js-algorand-sdk [](https://dl.circleci.com/status-badge/redirect/gh/algorand/js-algorand-sdk/tree/develop) [](https://www.npmjs.com/package/algosdk) AlgoSDK is the official JavaScript library for communicating with the Algorand network. It's designed for modern browsers and Node.js. ## Installation ### [Node.js](https://nodejs.org/en/download/) ``` $ npm install algosdk ``` > This package provides TypeScript types, but you will need [TypeScript](https://www.typescriptlang.org/) version 4.2 or higher to use them properly. ### Browser Include a minified browser bundle directly in your HTML like so: ```html <script src="https://unpkg.com/[email protected]/dist/browser/algosdk.min.js" integrity="sha384-R84o0hH3cBFIzv9uqyKcDNfDi/6jgn1MrS1/tOMDWxeh8hWfOLuRoMy0LekUm2KL" crossorigin="anonymous" ></script> ``` or ```html <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/browser/algosdk.min.js" integrity="sha384-R84o0hH3cBFIzv9uqyKcDNfDi/6jgn1MrS1/tOMDWxeh8hWfOLuRoMy0LekUm2KL" crossorigin="anonymous" ></script> ``` Information about hosting the package for yourself, finding the browser bundles of previous versions, and computing the SRI hash is [available here](FAQ.md). ## Quick Start ```javascript const token = 'Your algod API token'; const server = 'http://127.0.0.1'; const port = 8080; const client = new algosdk.Algodv2(token, server, port); (async () => { console.log(await client.status().do()); })().catch((e) => { console.log(e); }); ``` ## Documentation Documentation for this SDK is available here: https://algorand.github.io/js-algorand-sdk/. Additional resources are available on https://developer.algorand.org. ## Examples 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. **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. ## SDK Development ### Building To build a new version of the library, run: ```bash npm run build ``` ### Generating Documentation To generate the documentation website, run: ```bash npm run docs ``` The static website will be located in the `docs/` directory. ### Testing We have two test suites: mocha tests in this repo, and the Algorand SDK test suite from https://github.com/algorand/algorand-sdk-testing. #### Node.js To run the mocha tests in Node.js, run: ```bash npm test ``` To run the SDK test suite in Node.js, run: ```bash make docker-test ``` #### Browsers The test suites can also run in browsers. To do so, set the environment variable `TEST_BROWSER` to one of our supported browsers. Currently we support testing in `chrome` and `firefox`. When `TEST_BROWSER` is set, the mocha and SDK test suites will run in that browser. For example, to run mocha tests in Chrome: ```bash TEST_BROWSER=chrome npm test ``` And to run SDK tests in Firefox: ```bash TEST_BROWSER=firefox make docker-test ``` ### Code Style This project enforces a modified version of the [Airbnb code style](https://github.com/airbnb/javascript). We've setup linters and formatters to help catch errors and improve the development experience: - [Prettier](https://prettier.io/) – ensures that code is formatted in a readable way. - [ESLint](https://eslint.org/) — checks code for antipatterns as well as formatting. > 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. #### Precommit Hook The linters and formatters listed above should run automatically on each commit to catch errors early and save CI running time. ## License 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. ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:indexerModels.AccountParticipation.md: -------------------------------------------------------------------------------- ```markdown [algosdk](../README.md) / [Exports](../modules.md) / [indexerModels](../modules/indexerModels.md) / AccountParticipation # Class: AccountParticipation [indexerModels](../modules/indexerModels.md).AccountParticipation AccountParticipation describes the parameters used by this account in consensus protocol. ## Hierarchy - `default` ↳ **`AccountParticipation`** ## Table of contents ### Constructors - [constructor](indexerModels.AccountParticipation.md#constructor) ### Properties - [attribute\_map](indexerModels.AccountParticipation.md#attribute_map) - [selectionParticipationKey](indexerModels.AccountParticipation.md#selectionparticipationkey) - [stateProofKey](indexerModels.AccountParticipation.md#stateproofkey) - [voteFirstValid](indexerModels.AccountParticipation.md#votefirstvalid) - [voteKeyDilution](indexerModels.AccountParticipation.md#votekeydilution) - [voteLastValid](indexerModels.AccountParticipation.md#votelastvalid) - [voteParticipationKey](indexerModels.AccountParticipation.md#voteparticipationkey) ### Methods - [get\_obj\_for\_encoding](indexerModels.AccountParticipation.md#get_obj_for_encoding) - [from\_obj\_for\_encoding](indexerModels.AccountParticipation.md#from_obj_for_encoding) ## Constructors ### constructor • **new AccountParticipation**(`«destructured»`) Creates a new `AccountParticipation` object. #### Parameters | Name | Type | | :------ | :------ | | `«destructured»` | `Object` | | › `selectionParticipationKey` | `string` \| `Uint8Array` | | › `stateProofKey?` | `string` \| `Uint8Array` | | › `voteFirstValid` | `number` \| `bigint` | | › `voteKeyDilution` | `number` \| `bigint` | | › `voteLastValid` | `number` \| `bigint` | | › `voteParticipationKey` | `string` \| `Uint8Array` | #### Overrides BaseModel.constructor #### Defined in client/v2/indexer/models/types.ts:528 ## Properties ### attribute\_map • **attribute\_map**: `Record`\<`string`, `string`\> #### Inherited from BaseModel.attribute\_map #### Defined in client/v2/basemodel.ts:56 ___ ### selectionParticipationKey • **selectionParticipationKey**: `Uint8Array` Selection public key (if any) currently registered for this round. #### Defined in client/v2/indexer/models/types.ts:492 ___ ### stateProofKey • `Optional` **stateProofKey**: `Uint8Array` Root of the state proof key (if any) #### Defined in client/v2/indexer/models/types.ts:517 ___ ### voteFirstValid • **voteFirstValid**: `number` \| `bigint` First round for which this participation is valid. #### Defined in client/v2/indexer/models/types.ts:497 ___ ### voteKeyDilution • **voteKeyDilution**: `number` \| `bigint` Number of subkeys in each batch of participation keys. #### Defined in client/v2/indexer/models/types.ts:502 ___ ### voteLastValid • **voteLastValid**: `number` \| `bigint` Last round for which this participation is valid. #### Defined in client/v2/indexer/models/types.ts:507 ___ ### voteParticipationKey • **voteParticipationKey**: `Uint8Array` root participation public key (if any) currently registered for this round. #### Defined in client/v2/indexer/models/types.ts:512 ## Methods ### get\_obj\_for\_encoding ▸ **get_obj_for_encoding**(`binary?`): `Record`\<`string`, `any`\> Get an object ready for encoding to either JSON or msgpack. #### Parameters | Name | Type | Default value | Description | | :------ | :------ | :------ | :------ | | `binary` | `boolean` | `false` | Use true to indicate that the encoding can handle raw binary objects (Uint8Arrays). Use false to indicate that raw binary objects should be converted to base64 strings. True should be used for objects that will be encoded with msgpack, and false should be used for objects that will be encoded with JSON. | #### Returns `Record`\<`string`, `any`\> #### Inherited from BaseModel.get\_obj\_for\_encoding #### Defined in client/v2/basemodel.ts:65 ___ ### from\_obj\_for\_encoding ▸ `Static` **from_obj_for_encoding**(`data`): [`AccountParticipation`](indexerModels.AccountParticipation.md) #### Parameters | Name | Type | | :------ | :------ | | `data` | `Record`\<`string`, `any`\> | #### Returns [`AccountParticipation`](indexerModels.AccountParticipation.md) #### Defined in client/v2/indexer/models/types.ts:571 ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy-categories/arcs.json: -------------------------------------------------------------------------------- ```json { "name": "Algorand Request for Comments", "description": "Specifications and standards for the Algorand blockchain", "path": "arcs", "documents": [ { "name": "README", "description": "Overview of arcs", "path": "arcs:README.md" }, { "name": "ARC Template", "description": "Template for creating new arcs", "path": "arcs:ARC-template.md" } ], "subcategories": { "specs": { "name": "Specifications", "description": "Individual ARC specifications", "path": "arcs:specs", "documents": [ {"name": "ARC-0000", "path": "arcs:specs:arc-0000.md"}, {"name": "ARC-0001", "path": "arcs:specs:arc-0001.md"}, {"name": "ARC-0002", "path": "arcs:specs:arc-0002.md"}, {"name": "ARC-0003", "path": "arcs:specs:arc-0003.md"}, {"name": "ARC-0004", "path": "arcs:specs:arc-0004.md"}, {"name": "ARC-0005", "path": "arcs:specs:arc-0005.md"}, {"name": "ARC-0006", "path": "arcs:specs:arc-0006.md"}, {"name": "ARC-0007", "path": "arcs:specs:arc-0007.md"}, {"name": "ARC-0008", "path": "arcs:specs:arc-0008.md"}, {"name": "ARC-0009", "path": "arcs:specs:arc-0009.md"}, {"name": "ARC-0010", "path": "arcs:specs:arc-0010.md"}, {"name": "ARC-0011", "path": "arcs:specs:arc-0011.md"}, {"name": "ARC-0012", "path": "arcs:specs:arc-0012.md"}, {"name": "ARC-0015", "path": "arcs:specs:arc-0015.md"}, {"name": "ARC-0016", "path": "arcs:specs:arc-0016.md"}, {"name": "ARC-0018", "path": "arcs:specs:arc-0018.md"}, {"name": "ARC-0019", "path": "arcs:specs:arc-0019.md"}, {"name": "ARC-0020", "path": "arcs:specs:arc-0020.md"}, {"name": "ARC-0021", "path": "arcs:specs:arc-0021.md"}, {"name": "ARC-0022", "path": "arcs:specs:arc-0022.md"}, {"name": "ARC-0023", "path": "arcs:specs:arc-0023.md"}, {"name": "ARC-0025", "path": "arcs:specs:arc-0025.md"}, {"name": "ARC-0026", "path": "arcs:specs:arc-0026.md"}, {"name": "ARC-0028", "path": "arcs:specs:arc-0028.md"}, {"name": "ARC-0032", "path": "arcs:specs:arc-0032.md"}, {"name": "ARC-0033", "path": "arcs:specs:arc-0033.md"}, {"name": "ARC-0034", "path": "arcs:specs:arc-0034.md"}, {"name": "ARC-0035", "path": "arcs:specs:arc-0035.md"}, {"name": "ARC-0036", "path": "arcs:specs:arc-0036.md"}, {"name": "ARC-0042", "path": "arcs:specs:arc-0042.md"}, {"name": "ARC-0047", "path": "arcs:specs:arc-0047.md"}, {"name": "ARC-0048", "path": "arcs:specs:arc-0048.md"}, {"name": "ARC-0049", "path": "arcs:specs:arc-0049.md"}, {"name": "ARC-0054", "path": "arcs:specs:arc-0054.md"}, {"name": "ARC-0055", "path": "arcs:specs:arc-0055.md"}, {"name": "ARC-0056", "path": "arcs:specs:arc-0056.md"}, {"name": "ARC-0059", "path": "arcs:specs:arc-0059.md"}, {"name": "ARC-0062", "path": "arcs:specs:arc-0062.md"}, {"name": "ARC-0065", "path": "arcs:specs:arc-0065.md"}, {"name": "ARC-0069", "path": "arcs:specs:arc-0069.md"}, {"name": "ARC-0072", "path": "arcs:specs:arc-0072.md"}, {"name": "ARC-0073", "path": "arcs:specs:arc-0073.md"}, {"name": "ARC-0074", "path": "arcs:specs:arc-0074.md"}, {"name": "ARC-0076", "path": "arcs:specs:arc-0076.md"}, {"name": "ARC-0078", "path": "arcs:specs:arc-0078.md"}, {"name": "ARC-0079", "path": "arcs:specs:arc-0079.md"}, {"name": "ARC-0200", "path": "arcs:specs:arc-0200.md"} ] }, "assets": { "name": "Assets", "description": "Asset-related ARC resources", "path": "arcs:assets", "documents": [ {"name": "ARC-0012 README", "path": "arcs:assets:arc-0012:README.md"}, {"name": "ARC-0062 README", "path": "arcs:assets:arc-0062:README.md"}, {"name": "ARC-0034 Template Form", "path": "arcs:assets:arc-0034:TemplateForm.md"} ] }, "pages": { "name": "Pages", "description": "Additional ARC documentation pages", "path": "arcs:pages", "documents": [ {"name": "NFTs", "path": "arcs:pages:nfts.md"}, {"name": "Wallets", "path": "arcs:pages:wallets.md"} ] } } } ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/developer:python:code:example:struct_in_box.md: -------------------------------------------------------------------------------- ```markdown # Structs in Box Storage for Algorand Smart Contracts 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. ## Defining a Struct ```python from algopy import BoxMap, arc4 class UserStruct(arc4.Struct): name: arc4.String id: arc4.UInt64 asset: arc4.UInt64 ``` The struct definition includes: - Type annotations for each field - ARC4-compatible data types - Clear field naming ## Implementing Box Storage with Structs ```python class StructInBoxMap(arc4.ARC4Contract): def __init__(self) -> None: # Initialize box map with UInt64 keys and UserStruct values self.user_map = BoxMap( arc4.UInt64, # Key type UserStruct, # Value type key_prefix="users" # Optional prefix for organization ) ``` ## Basic Operations ### Setting Values ```python @arc4.abimethod def box_map_set(self, key: arc4.UInt64, value: UserStruct) -> bool: # Always use copy() when storing structs self.user_map[key] = value.copy() # Verify storage assert self.user_map[key] == value return True @arc4.abimethod def box_map_test(self) -> bool: key_0 = arc4.UInt64(0) # Create struct instance value = UserStruct( arc4.String("testName"), arc4.UInt64(70), arc4.UInt64(2) ) # Store and verify self.user_map[key_0] = value.copy() # Verify byte length assert self.user_map[key_0].bytes.length == value.bytes.length assert self.user_map.length(key_0) == value.bytes.length return True ``` ### Getting Values ```python @arc4.abimethod def box_map_get(self, key: arc4.UInt64) -> UserStruct: # Retrieve struct from box storage return self.user_map[key] ``` ### Checking Existence ```python @arc4.abimethod def box_map_exists(self, key: arc4.UInt64) -> bool: # Check if key exists in box map return key in self.user_map ``` ## Usage Examples ### Creating and Storing a User ```python # Create user struct user = UserStruct( name=arc4.String("Alice"), id=arc4.UInt64(1), asset=arc4.UInt64(100) ) # Store in box map key = arc4.UInt64(1) box_map_set(key, user) ``` ### Retrieving User Data ```python # Get user by key key = arc4.UInt64(1) user = box_map_get(key) # Access struct fields name = user.name # arc4.String user_id = user.id # arc4.UInt64 asset = user.asset # arc4.UInt64 ``` ## Best Practices 1. **Struct Design**: - Use appropriate field types - Keep structs focused and organized - Consider field order for efficiency - Document struct purpose and usage 2. **Data Management**: - Always use copy() when storing structs - Verify stored data after writing - Check existence before reading - Handle missing data gracefully 3. **Storage Efficiency**: - Consider struct size limitations - Use appropriate key prefixes - Clean up unused storage - Monitor storage usage 4. **Type Safety**: - Use proper type annotations - Verify field types - Handle type conversions carefully - Test with various data types 5. **Error Handling**: - Check for missing keys - Validate struct data - Handle storage errors - Provide clear error messages 6. **Performance**: - Minimize storage operations - Use efficient data structures - Consider storage costs - Optimize access patterns ## Common Patterns 1. **User Data Storage**: ```python user = UserStruct( arc4.String("username"), arc4.UInt64(user_id), arc4.UInt64(balance) ) ``` 2. **Batch Operations**: ```python def update_multiple_users(self, users: list[UserStruct]) -> None: for i, user in enumerate(users): self.user_map[arc4.UInt64(i)] = user.copy() ``` 3. **Data Validation**: ```python def validate_user(self, user: UserStruct) -> bool: return ( user.name.native != "" and user.id.native > 0 and user.asset.native >= 0 ) ``` 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. ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:code:interfaces:types_transaction.SendTransactionParams.md: -------------------------------------------------------------------------------- ```markdown [@algorandfoundation/algokit-utils](../README.md) / [types/transaction](../modules/types_transaction.md) / SendTransactionParams # Interface: SendTransactionParams [types/transaction](../modules/types_transaction.md).SendTransactionParams The sending configuration for a transaction ## Hierarchy - **`SendTransactionParams`** ↳ [`AppCallParams`](types_app.AppCallParams.md) ↳ [`CreateAssetParams`](types_asset.CreateAssetParams.md) ↳ [`AssetOptInParams`](types_asset.AssetOptInParams.md) ↳ [`AlgoTransferParams`](types_transfer.AlgoTransferParams.md) ↳ [`AlgoRekeyParams`](types_transfer.AlgoRekeyParams.md) ↳ [`EnsureFundedParams`](types_transfer.EnsureFundedParams.md) ↳ [`TransferAssetParams`](types_transfer.TransferAssetParams.md) ## Table of contents ### Properties - [atc](types_transaction.SendTransactionParams.md#atc) - [fee](types_transaction.SendTransactionParams.md#fee) - [maxFee](types_transaction.SendTransactionParams.md#maxfee) - [maxRoundsToWaitForConfirmation](types_transaction.SendTransactionParams.md#maxroundstowaitforconfirmation) - [populateAppCallResources](types_transaction.SendTransactionParams.md#populateappcallresources) - [skipSending](types_transaction.SendTransactionParams.md#skipsending) - [skipWaiting](types_transaction.SendTransactionParams.md#skipwaiting) - [suppressLog](types_transaction.SendTransactionParams.md#suppresslog) ## Properties ### atc • `Optional` **atc**: `AtomicTransactionComposer` An optional `AtomicTransactionComposer` to add the transaction to, if specified then `skipSending: undefined` has the same effect as `skipSending: true` #### Defined in [src/types/transaction.ts:36](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L36) ___ ### fee • `Optional` **fee**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) The flat fee you want to pay, useful for covering extra fees in a transaction group or app call #### Defined in [src/types/transaction.ts:40](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L40) ___ ### maxFee • `Optional` **maxFee**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md) 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 #### Defined in [src/types/transaction.ts:42](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L42) ___ ### maxRoundsToWaitForConfirmation • `Optional` **maxRoundsToWaitForConfirmation**: `number` The maximum number of rounds to wait for confirmation, only applies if `skipWaiting` is `undefined` or `false`, default: wait up to 5 rounds #### Defined in [src/types/transaction.ts:44](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L44) ___ ### populateAppCallResources • `Optional` **populateAppCallResources**: `boolean` 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. #### Defined in [src/types/transaction.ts:46](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L46) ___ ### skipSending • `Optional` **skipSending**: `boolean` Whether to skip signing and sending the transaction to the chain (default: transaction signed and sent to chain, unless `atc` specified) and instead just return the raw transaction, e.g. so you can add it to a group of transactions #### Defined in [src/types/transaction.ts:32](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L32) ___ ### skipWaiting • `Optional` **skipWaiting**: `boolean` Whether to skip waiting for the submitted transaction (only relevant if `skipSending` is `false` or unset) #### Defined in [src/types/transaction.ts:34](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L34) ___ ### suppressLog • `Optional` **suppressLog**: `boolean` Whether to suppress log messages from transaction send, default: do not suppress #### Defined in [src/types/transaction.ts:38](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L38) ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:modelsv2.DryrunRequest.md: -------------------------------------------------------------------------------- ```markdown [algosdk](../README.md) / [Exports](../modules.md) / [modelsv2](../modules/modelsv2.md) / DryrunRequest # Class: DryrunRequest [modelsv2](../modules/modelsv2.md).DryrunRequest Request data type for dryrun endpoint. Given the Transactions and simulated ledger state upload, run TEAL scripts and return debugging information. ## Hierarchy - `default` ↳ **`DryrunRequest`** ## Table of contents ### Constructors - [constructor](modelsv2.DryrunRequest.md#constructor) ### Properties - [accounts](modelsv2.DryrunRequest.md#accounts) - [apps](modelsv2.DryrunRequest.md#apps) - [attribute\_map](modelsv2.DryrunRequest.md#attribute_map) - [latestTimestamp](modelsv2.DryrunRequest.md#latesttimestamp) - [protocolVersion](modelsv2.DryrunRequest.md#protocolversion) - [round](modelsv2.DryrunRequest.md#round) - [sources](modelsv2.DryrunRequest.md#sources) - [txns](modelsv2.DryrunRequest.md#txns) ### Methods - [get\_obj\_for\_encoding](modelsv2.DryrunRequest.md#get_obj_for_encoding) - [from\_obj\_for\_encoding](modelsv2.DryrunRequest.md#from_obj_for_encoding) ## Constructors ### constructor • **new DryrunRequest**(`«destructured»`) Creates a new `DryrunRequest` object. #### Parameters | Name | Type | | :------ | :------ | | `«destructured»` | `Object` | | › `accounts` | [`Account`](modelsv2.Account.md)[] | | › `apps` | [`Application`](modelsv2.Application.md)[] | | › `latestTimestamp` | `number` \| `bigint` | | › `protocolVersion` | `string` | | › `round` | `number` \| `bigint` | | › `sources` | [`DryrunSource`](modelsv2.DryrunSource.md)[] | | › `txns` | [`EncodedSignedTransaction`](../interfaces/EncodedSignedTransaction.md)[] | #### Overrides BaseModel.constructor #### Defined in client/v2/algod/models/types.ts:2647 ## Properties ### accounts • **accounts**: [`Account`](modelsv2.Account.md)[] #### Defined in client/v2/algod/models/types.ts:2608 ___ ### apps • **apps**: [`Application`](modelsv2.Application.md)[] #### Defined in client/v2/algod/models/types.ts:2610 ___ ### attribute\_map • **attribute\_map**: `Record`\<`string`, `string`\> #### Inherited from BaseModel.attribute\_map #### Defined in client/v2/basemodel.ts:56 ___ ### latestTimestamp • **latestTimestamp**: `number` \| `bigint` LatestTimestamp is available to some TEAL scripts. Defaults to the latest confirmed timestamp this algod is attached to. #### Defined in client/v2/algod/models/types.ts:2616 ___ ### protocolVersion • **protocolVersion**: `string` ProtocolVersion specifies a specific version string to operate under, otherwise whatever the current protocol of the network this algod is running in. #### Defined in client/v2/algod/models/types.ts:2622 ___ ### round • **round**: `number` \| `bigint` Round is available to some TEAL scripts. Defaults to the current round on the network this algod is attached to. #### Defined in client/v2/algod/models/types.ts:2628 ___ ### sources • **sources**: [`DryrunSource`](modelsv2.DryrunSource.md)[] #### Defined in client/v2/algod/models/types.ts:2630 ___ ### txns • **txns**: [`EncodedSignedTransaction`](../interfaces/EncodedSignedTransaction.md)[] #### Defined in client/v2/algod/models/types.ts:2632 ## Methods ### get\_obj\_for\_encoding ▸ **get_obj_for_encoding**(`binary?`): `Record`\<`string`, `any`\> Get an object ready for encoding to either JSON or msgpack. #### Parameters | Name | Type | Default value | Description | | :------ | :------ | :------ | :------ | | `binary` | `boolean` | `false` | Use true to indicate that the encoding can handle raw binary objects (Uint8Arrays). Use false to indicate that raw binary objects should be converted to base64 strings. True should be used for objects that will be encoded with msgpack, and false should be used for objects that will be encoded with JSON. | #### Returns `Record`\<`string`, `any`\> #### Inherited from BaseModel.get\_obj\_for\_encoding #### Defined in client/v2/basemodel.ts:65 ___ ### from\_obj\_for\_encoding ▸ `Static` **from_obj_for_encoding**(`data`): [`DryrunRequest`](modelsv2.DryrunRequest.md) #### Parameters | Name | Type | | :------ | :------ | | `data` | `Record`\<`string`, `any`\> | #### Returns [`DryrunRequest`](modelsv2.DryrunRequest.md) #### Defined in client/v2/algod/models/types.ts:2685 ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/algokit:cli:features:tasks:mint.md: -------------------------------------------------------------------------------- ```markdown # AlgoKit Task Mint 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. ## Usage Available commands and possible usage as follows: ```bash Usage: algokit task mint [OPTIONS] Mint new fungible or non-fungible assets on Algorand. Options: --creator TEXT Address or alias of the asset creator. [required] -n, --name TEXT Asset name. [required] -u, --unit TEXT Unit name of the asset. [required] -t, --total INTEGER Total supply of the asset. Defaults to 1. -d, --decimals INTEGER Number of decimals. Defaults to 0. -i, --image FILE Path to the asset image file to be uploaded to IPFS. [required] -m, --metadata FILE 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. For more details refer to https://arc.algorand.foundation/ARCs/arc-0003#json-metadata-file-schema. --mutable / --immutable Whether the asset should be mutable or immutable. Refers to `ARC19` by default. --nft / --ft 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. -n, --network [localnet|testnet|mainnet] Network to use. Refers to `localnet` by default. -h, --help Show this message and exit. ``` ## Options - `--creator TEXT`: Specifies the address or alias of the asset creator. This option is required. - `-n, --name TEXT`: Specifies the asset name. This option is required. - `-u, --unit TEXT`: Specifies the unit name of the asset. This option is required. - `-t, --total INTEGER`: Specifies the total supply of the asset. Defaults to 1. - `-d, --decimals INTEGER`: Specifies the number of decimals. Defaults to 0. - `-i, --image PATH`: Specifies the path to the asset image file to be uploaded to IPFS. This option is required. - `-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. - `--mutable / --immutable`: Specifies whether the asset should be mutable or immutable. Refers to `ARC19` by default. - `--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. - `-n, --network [localnet|testnet|mainnet]`: Specifies the network to use. Refers to `localnet` by default. ## Example To mint a new asset in interactive mode, you can use the mint command as follows: ```bash $ algokit task mint ``` 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. If you want to provide a custom metadata file, you can use the --metadata flag: ```bash $ algokit task mint --metadata {PATH_TO_METADATA} ``` If the minting process is successful, the asset ID and transaction ID will be output to the console. For non interactive mode, refer to usage section above for available options. > Please note, creator account must have at least 0.2 Algos available to cover minimum balance requirements. ## Further Reading For in-depth details, visit the [mint section](../../cli/index.md#mint) in the AlgoKit CLI reference documentation. ``` -------------------------------------------------------------------------------- /llms-install.md: -------------------------------------------------------------------------------- ```markdown # Algorand MCP Server Installation Guide 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. ## Overview 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. ## Prerequisites Before installation, you need: 1. Node.js v23.6.1 or later 2. npm v10.2.4 or later 3. Access to Algorand node (mainnet or testnet) ## Installation and Configuration ### Configure MCP Settings Add the Algorand MCP server configuration to your MCP settings file based on your LLM client: #### Configuration File Locations Add configuration to your chosen client's MCP settings file: ```json { "mcpServers": { "algorand": { "command": "node", "args": ["/path/to/algorand-mcp/packages/server/dist/index.js"], "disabled": false, "autoApprove": [], "env": { "ALGORAND_NETWORK": "testnet", "ALGORAND_ALGOD_API": "https://testnet-api.algonode.cloud/v2", "ALGORAND_ALGOD": "https://testnet-api.algonode.cloud", "ALGORAND_INDEXER_API": "https://testnet-idx.algonode.cloud/v2", "ALGORAND_INDEXER": "https://testnet-idx.algonode.cloud", "ITEMS_PER_PAGE": "10", "ALGORAND_AGENT_WALLET": "" } } } } ``` Replace `/path/to/algorand-mcp` with the actual path where the server is installed. ## Tool Categories ### 1. Transaction Tools - Account Transactions (payments, key registration) - Asset Transactions (create, configure, transfer) - Application Transactions (deploy, update, call) - General Transaction Tools (signing, grouping) ### 2. API Tools - Algod API (node interaction, account info) - Indexer API (blockchain queries, history) ### 3. Utility Tools - Address Management - Byte Conversion - Application Tools ### 4. ARC-26 Tools - URI Generation - QR Code Creation ## Verify Installation To verify the installation is working: 1. Restart your LLM application (Cursor, Claude Desktop, etc.) 2. Test Transaction Tools: ``` Create a payment transaction using the transaction tools. ``` 3. Test API Tools: ``` Get account information using the Algod API tools. ``` 4. Test Utility Tools: ``` Validate an Algorand address using the utility tools. ``` 5. Test Resources: ``` Access wallet information using the wallet resources. ``` ## Available Resources ### Wallet Resources - Secret/Public Key Management - Mnemonic Access - Address Management - Balance/Asset Tracking ### Knowledge Resources - Algorand Documentation - Development Guides - SDK References - Best Practices ## Troubleshooting ### Common Issues and Solutions 1. **Node Connection Issues** - Verify Algorand node URLs are correct - Check network selection (mainnet/testnet) - Ensure node is accessible 2. **Transaction Failures** - Verify account has sufficient funds - Check transaction parameters - Validate asset configurations 3. **Resource Access Issues** - Verify wallet configuration - Check environment variables - Validate resource URIs ### Tool-Specific Issues #### Transaction Tools - Group size limits - Proper transaction ordering - Signature requirements #### API Tools - Rate limiting considerations - Response pagination - Error handling #### Utility Tools - Input validation - Encoding formats - Type conversions ## Security Considerations 1. **Wallet Security** - Secure storage of mnemonics - Key management best practices - Access control 2. **Transaction Safety** - Parameter validation - Amount verification - Asset verification 3. **API Security** - Node authentication - Request validation - Error handling ## Additional Information For more detailed information: - [Visit the Algorand MCP Smithery](https://smithery.ai/server/@GoPlausible/algorand-mcp) - Check the [Algorand MCP Server Documentation](https://github.com/GoPlausible/algorand-mcp) - Visit the builder's website at [GoPlausible](https://goplausible.com/) ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:modules:indexerModels.md: -------------------------------------------------------------------------------- ```markdown [algosdk](../README.md) / [Exports](../modules.md) / indexerModels # Namespace: indexerModels ## Table of contents ### Classes - [Account](../classes/indexerModels.Account.md) - [AccountParticipation](../classes/indexerModels.AccountParticipation.md) - [AccountResponse](../classes/indexerModels.AccountResponse.md) - [AccountStateDelta](../classes/indexerModels.AccountStateDelta.md) - [AccountsResponse](../classes/indexerModels.AccountsResponse.md) - [Application](../classes/indexerModels.Application.md) - [ApplicationLocalState](../classes/indexerModels.ApplicationLocalState.md) - [ApplicationLocalStatesResponse](../classes/indexerModels.ApplicationLocalStatesResponse.md) - [ApplicationLogData](../classes/indexerModels.ApplicationLogData.md) - [ApplicationLogsResponse](../classes/indexerModels.ApplicationLogsResponse.md) - [ApplicationParams](../classes/indexerModels.ApplicationParams.md) - [ApplicationResponse](../classes/indexerModels.ApplicationResponse.md) - [ApplicationStateSchema](../classes/indexerModels.ApplicationStateSchema.md) - [ApplicationsResponse](../classes/indexerModels.ApplicationsResponse.md) - [Asset](../classes/indexerModels.Asset.md) - [AssetBalancesResponse](../classes/indexerModels.AssetBalancesResponse.md) - [AssetHolding](../classes/indexerModels.AssetHolding.md) - [AssetHoldingsResponse](../classes/indexerModels.AssetHoldingsResponse.md) - [AssetParams](../classes/indexerModels.AssetParams.md) - [AssetResponse](../classes/indexerModels.AssetResponse.md) - [AssetsResponse](../classes/indexerModels.AssetsResponse.md) - [Block](../classes/indexerModels.Block.md) - [BlockRewards](../classes/indexerModels.BlockRewards.md) - [BlockUpgradeState](../classes/indexerModels.BlockUpgradeState.md) - [BlockUpgradeVote](../classes/indexerModels.BlockUpgradeVote.md) - [Box](../classes/indexerModels.Box.md) - [BoxDescriptor](../classes/indexerModels.BoxDescriptor.md) - [BoxesResponse](../classes/indexerModels.BoxesResponse.md) - [ErrorResponse](../classes/indexerModels.ErrorResponse.md) - [EvalDelta](../classes/indexerModels.EvalDelta.md) - [EvalDeltaKeyValue](../classes/indexerModels.EvalDeltaKeyValue.md) - [HashFactory](../classes/indexerModels.HashFactory.md) - [HealthCheck](../classes/indexerModels.HealthCheck.md) - [IndexerStateProofMessage](../classes/indexerModels.IndexerStateProofMessage.md) - [MerkleArrayProof](../classes/indexerModels.MerkleArrayProof.md) - [MiniAssetHolding](../classes/indexerModels.MiniAssetHolding.md) - [ParticipationUpdates](../classes/indexerModels.ParticipationUpdates.md) - [StateProofFields](../classes/indexerModels.StateProofFields.md) - [StateProofParticipant](../classes/indexerModels.StateProofParticipant.md) - [StateProofReveal](../classes/indexerModels.StateProofReveal.md) - [StateProofSigSlot](../classes/indexerModels.StateProofSigSlot.md) - [StateProofSignature](../classes/indexerModels.StateProofSignature.md) - [StateProofTracking](../classes/indexerModels.StateProofTracking.md) - [StateProofVerifier](../classes/indexerModels.StateProofVerifier.md) - [StateSchema](../classes/indexerModels.StateSchema.md) - [TealKeyValue](../classes/indexerModels.TealKeyValue.md) - [TealValue](../classes/indexerModels.TealValue.md) - [Transaction](../classes/indexerModels.Transaction.md) - [TransactionApplication](../classes/indexerModels.TransactionApplication.md) - [TransactionAssetConfig](../classes/indexerModels.TransactionAssetConfig.md) - [TransactionAssetFreeze](../classes/indexerModels.TransactionAssetFreeze.md) - [TransactionAssetTransfer](../classes/indexerModels.TransactionAssetTransfer.md) - [TransactionKeyreg](../classes/indexerModels.TransactionKeyreg.md) - [TransactionPayment](../classes/indexerModels.TransactionPayment.md) - [TransactionResponse](../classes/indexerModels.TransactionResponse.md) - [TransactionSignature](../classes/indexerModels.TransactionSignature.md) - [TransactionSignatureLogicsig](../classes/indexerModels.TransactionSignatureLogicsig.md) - [TransactionSignatureMultisig](../classes/indexerModels.TransactionSignatureMultisig.md) - [TransactionSignatureMultisigSubsignature](../classes/indexerModels.TransactionSignatureMultisigSubsignature.md) - [TransactionStateProof](../classes/indexerModels.TransactionStateProof.md) - [TransactionsResponse](../classes/indexerModels.TransactionsResponse.md) ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:python:README.md: -------------------------------------------------------------------------------- ```markdown # py-algorand-sdk [](https://badge.fury.io/py/py-algorand-sdk) [](https://py-algorand-sdk.readthedocs.io/en/latest) [](https://github.com/psf/black) A python library for interacting with the Algorand network. ## Installation Run `$ pip3 install py-algorand-sdk` to install the package. Alternatively, choose a [distribution file](https://pypi.org/project/py-algorand-sdk/#files), and run `$ pip3 install [file name]`. ## Supported Python versions py-algorand-sdk's minimum Python version policy attempts to balance several constraints. * Make it easy for the community to use py-algorand-sdk by minimizing or excluding the need to customize Python installations. * Provide maintainers with access to newer language features that produce more robust software. Given these constraints, the minimum Python version policy is: Target Python version on newest [Ubuntu LTS](https://wiki.ubuntu.com/Releases) released >= 6 months ago. The rationale is: * If a major Linux OS distribution bumps a Python version, then it's sufficiently available to the community for us to upgrade. * The 6 month time buffer ensures we delay upgrades until the community starts using a recently released LTS version. ## SDK Development Install dependencies * `pip3 install -r requirements.txt` Run tests * `make docker-test` Set up the Algorand Sandbox based test-harness without running the tests * `make harness` Format code * `black .` Update `algosdk/__init__.pyi` which allows downstream developers importing `algosdk` and using VSCode's PyLance to have improved type analysis * `make generate-init` Lint types * `make mypy` (or `mypy algosdk`) Check all lints required by the C.I. process * `make lint` Run non-test-harness related unit tests * `make pytest-unit` 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. ## Quick start Here's a simple example you can run without a node. ```python from algosdk import account, encoding # generate an account private_key, address = account.generate_account() print("Private key:", private_key) print("Address:", address) # check if the address is valid if encoding.is_valid_address(address): print("The address is valid!") else: print("The address is invalid.") ``` ## Node setup 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. You can also set up a local [Algorand Sandbox](https://github.com/algorand/sandbox) with `make harness`. ## Running examples/example.py 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: ```bash ./goal kmd start -d [data directory] ``` Next, create a wallet and an account: ```bash ./goal wallet new [wallet name] -d [data directory] ``` ```bash ./goal account new -d [data directory] -w [wallet name] ``` Visit the [Algorand dispenser](https://bank.testnet.algorand.network/) and enter the account address to fund your account. 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`. You're now ready to run example.py! ## Documentation Documentation for the Python SDK is available at [py-algorand-sdk.readthedocs.io](https://py-algorand-sdk.readthedocs.io/en/latest/). ## License 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. ``` -------------------------------------------------------------------------------- /packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:modelsv2.SimulationOpcodeTraceUnit.md: -------------------------------------------------------------------------------- ```markdown [algosdk](../README.md) / [Exports](../modules.md) / [modelsv2](../modules/modelsv2.md) / SimulationOpcodeTraceUnit # Class: SimulationOpcodeTraceUnit [modelsv2](../modules/modelsv2.md).SimulationOpcodeTraceUnit The set of trace information and effect from evaluating a single opcode. ## Hierarchy - `default` ↳ **`SimulationOpcodeTraceUnit`** ## Table of contents ### Constructors - [constructor](modelsv2.SimulationOpcodeTraceUnit.md#constructor) ### Properties - [attribute\_map](modelsv2.SimulationOpcodeTraceUnit.md#attribute_map) - [pc](modelsv2.SimulationOpcodeTraceUnit.md#pc) - [scratchChanges](modelsv2.SimulationOpcodeTraceUnit.md#scratchchanges) - [spawnedInners](modelsv2.SimulationOpcodeTraceUnit.md#spawnedinners) - [stackAdditions](modelsv2.SimulationOpcodeTraceUnit.md#stackadditions) - [stackPopCount](modelsv2.SimulationOpcodeTraceUnit.md#stackpopcount) - [stateChanges](modelsv2.SimulationOpcodeTraceUnit.md#statechanges) ### Methods - [get\_obj\_for\_encoding](modelsv2.SimulationOpcodeTraceUnit.md#get_obj_for_encoding) - [from\_obj\_for\_encoding](modelsv2.SimulationOpcodeTraceUnit.md#from_obj_for_encoding) ## Constructors ### constructor • **new SimulationOpcodeTraceUnit**(`«destructured»`) Creates a new `SimulationOpcodeTraceUnit` object. #### Parameters | Name | Type | | :------ | :------ | | `«destructured»` | `Object` | | › `pc` | `number` \| `bigint` | | › `scratchChanges?` | [`ScratchChange`](modelsv2.ScratchChange.md)[] | | › `spawnedInners?` | (`number` \| `bigint`)[] | | › `stackAdditions?` | [`AvmValue`](modelsv2.AvmValue.md)[] | | › `stackPopCount?` | `number` \| `bigint` | | › `stateChanges?` | [`ApplicationStateOperation`](modelsv2.ApplicationStateOperation.md)[] | #### Overrides BaseModel.constructor #### Defined in client/v2/algod/models/types.ts:5155 ## Properties ### attribute\_map • **attribute\_map**: `Record`\<`string`, `string`\> #### Inherited from BaseModel.attribute\_map #### Defined in client/v2/basemodel.ts:56 ___ ### pc • **pc**: `number` \| `bigint` The program counter of the current opcode being evaluated. #### Defined in client/v2/algod/models/types.ts:5119 ___ ### scratchChanges • `Optional` **scratchChanges**: [`ScratchChange`](modelsv2.ScratchChange.md)[] The writes into scratch slots. #### Defined in client/v2/algod/models/types.ts:5124 ___ ### spawnedInners • `Optional` **spawnedInners**: (`number` \| `bigint`)[] The indexes of the traces for inner transactions spawned by this opcode, if any. #### Defined in client/v2/algod/models/types.ts:5129 ___ ### stackAdditions • `Optional` **stackAdditions**: [`AvmValue`](modelsv2.AvmValue.md)[] The values added by this opcode to the stack. #### Defined in client/v2/algod/models/types.ts:5134 ___ ### stackPopCount • `Optional` **stackPopCount**: `number` \| `bigint` The number of deleted stack values by this opcode. #### Defined in client/v2/algod/models/types.ts:5139 ___ ### stateChanges • `Optional` **stateChanges**: [`ApplicationStateOperation`](modelsv2.ApplicationStateOperation.md)[] The operations against the current application's states. #### Defined in client/v2/algod/models/types.ts:5144 ## Methods ### get\_obj\_for\_encoding ▸ **get_obj_for_encoding**(`binary?`): `Record`\<`string`, `any`\> Get an object ready for encoding to either JSON or msgpack. #### Parameters | Name | Type | Default value | Description | | :------ | :------ | :------ | :------ | | `binary` | `boolean` | `false` | Use true to indicate that the encoding can handle raw binary objects (Uint8Arrays). Use false to indicate that raw binary objects should be converted to base64 strings. True should be used for objects that will be encoded with msgpack, and false should be used for objects that will be encoded with JSON. | #### Returns `Record`\<`string`, `any`\> #### Inherited from BaseModel.get\_obj\_for\_encoding #### Defined in client/v2/basemodel.ts:65 ___ ### from\_obj\_for\_encoding ▸ `Static` **from_obj_for_encoding**(`data`): [`SimulationOpcodeTraceUnit`](modelsv2.SimulationOpcodeTraceUnit.md) #### Parameters | Name | Type | | :------ | :------ | | `data` | `Record`\<`string`, `any`\> | #### Returns [`SimulationOpcodeTraceUnit`](modelsv2.SimulationOpcodeTraceUnit.md) #### Defined in client/v2/algod/models/types.ts:5189 ```