#
tokens: 47848/50000 6/942 files (page 38/93)
lines: on (toggle) GitHub
raw markdown copy reset
This is page 38 of 93. Use http://codebase.md/goplausible/algorand-mcp?lines=true&page={x} to view the full context.

# Directory Structure

```
├── .gitignore
├── CONTRIBUTING.md
├── LICENSE
├── llms-install.md
├── llms.txt
├── package.json
├── packages
│   ├── client
│   │   ├── .env.example
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── src
│   │   │   ├── env.ts
│   │   │   ├── index.ts
│   │   │   └── LocalWallet.ts
│   │   └── tsconfig.json
│   └── server
│       ├── .env.example
│       ├── API specs
│       │   ├── algod_api.json
│       │   ├── indexer_api.json
│       │   ├── mcp.json
│       │   ├── nfd_api.json
│       │   ├── ultrade_api.json
│       │   ├── vestige_api.json
│       │   └── vestige_free_api.json
│       ├── Dockerfile
│       ├── jest.config.js
│       ├── package.json
│       ├── README.md
│       ├── smithery.yaml
│       ├── src
│       │   ├── algorand-client.ts
│       │   ├── env.ts
│       │   ├── index.ts
│       │   ├── resources
│       │   │   ├── index.ts
│       │   │   ├── knowledge
│       │   │   │   ├── ARCs.txt
│       │   │   │   ├── developers-algokit-architecture-decisions.txt
│       │   │   │   ├── developers-algokit-cli.txt
│       │   │   │   ├── developers-algokit-utils-python.txt
│       │   │   │   ├── developers-algokit-utils-typescript.txt
│       │   │   │   ├── developers-clis.txt
│       │   │   │   ├── developers-details.txt
│       │   │   │   ├── developers-liquid-auth.txt
│       │   │   │   ├── developers-nodes.txt
│       │   │   │   ├── developers-puya.txt
│       │   │   │   ├── developers-python.txt
│       │   │   │   ├── developers-sdks-js.txt
│       │   │   │   ├── developers-sdks-python.txt
│       │   │   │   ├── developers-tealscript.txt
│       │   │   │   ├── developers.txt
│       │   │   │   ├── index.ts
│       │   │   │   ├── taxonomy
│       │   │   │   │   ├── algokit-cli:README.md
│       │   │   │   │   ├── algokit:cli:algokit.md
│       │   │   │   │   ├── algokit:cli:architecture-decisions:2022-11-14_sandbox-approach.md
│       │   │   │   │   ├── algokit:cli:architecture-decisions:2022-11-22_beaker-testing-strategy.md
│       │   │   │   │   ├── algokit:cli:architecture-decisions:2023-01-11_beaker_productionisation_review.md
│       │   │   │   │   ├── algokit:cli:architecture-decisions:2023-01-11_brew_install.md
│       │   │   │   │   ├── algokit:cli:architecture-decisions:2023-01-12_smart-contract-deployment.md
│       │   │   │   │   ├── algokit:cli:architecture-decisions:2023-06-06_frontend-templates.md
│       │   │   │   │   ├── algokit:cli:architecture-decisions:2023-07-19_advanced_generate_command.md
│       │   │   │   │   ├── algokit:cli:architecture-decisions:2024-01-13_native_binaries.md
│       │   │   │   │   ├── algokit:cli:architecture-decisions:2024-01-23_init-wizard-v2.md
│       │   │   │   │   ├── algokit:cli:architecture-decisions:2024-01-31_binary_distribution.md
│       │   │   │   │   ├── algokit:cli:architecture-decisions:2024-03-06_local_dev_ui_packaging.md
│       │   │   │   │   ├── algokit:cli:articles:output_stability.md
│       │   │   │   │   ├── algokit:cli:cli:index.md
│       │   │   │   │   ├── algokit:cli:features:compile.md
│       │   │   │   │   ├── algokit:cli:features:completions.md
│       │   │   │   │   ├── algokit:cli:features:config.md
│       │   │   │   │   ├── algokit:cli:features:dispenser.md
│       │   │   │   │   ├── algokit:cli:features:doctor.md
│       │   │   │   │   ├── algokit:cli:features:explore.md
│       │   │   │   │   ├── algokit:cli:features:generate.md
│       │   │   │   │   ├── algokit:cli:features:goal.md
│       │   │   │   │   ├── algokit:cli:features:init.md
│       │   │   │   │   ├── algokit:cli:features:localnet.md
│       │   │   │   │   ├── algokit:cli:features:project:bootstrap.md
│       │   │   │   │   ├── algokit:cli:features:project:deploy.md
│       │   │   │   │   ├── algokit:cli:features:project:link.md
│       │   │   │   │   ├── algokit:cli:features:project:list.md
│       │   │   │   │   ├── algokit:cli:features:project:run.md
│       │   │   │   │   ├── algokit:cli:features:project.md
│       │   │   │   │   ├── algokit:cli:features:tasks:analyze.md
│       │   │   │   │   ├── algokit:cli:features:tasks:ipfs.md
│       │   │   │   │   ├── algokit:cli:features:tasks:mint.md
│       │   │   │   │   ├── algokit:cli:features:tasks:nfd.md
│       │   │   │   │   ├── algokit:cli:features:tasks:opt.md
│       │   │   │   │   ├── algokit:cli:features:tasks:send.md
│       │   │   │   │   ├── algokit:cli:features:tasks:sign.md
│       │   │   │   │   ├── algokit:cli:features:tasks:transfer.md
│       │   │   │   │   ├── algokit:cli:features:tasks:vanity_address.md
│       │   │   │   │   ├── algokit:cli:features:tasks:wallet.md
│       │   │   │   │   ├── algokit:cli:features:tasks.md
│       │   │   │   │   ├── algokit:cli:tutorials:algokit-template.md
│       │   │   │   │   ├── algokit:cli:tutorials:intro.md
│       │   │   │   │   ├── algokit:cli:tutorials:smart-contracts.md
│       │   │   │   │   ├── algokit:docs:testnet_api.md
│       │   │   │   │   ├── algokit:lora:README.md
│       │   │   │   │   ├── algokit:README.md
│       │   │   │   │   ├── algokit:utils:python:markdown:apidocs:algokit_utils:algokit_utils.md
│       │   │   │   │   ├── algokit:utils:python:markdown:capabilities:account.md
│       │   │   │   │   ├── algokit:utils:python:markdown:capabilities:app-client.md
│       │   │   │   │   ├── algokit:utils:python:markdown:capabilities:app-deploy.md
│       │   │   │   │   ├── algokit:utils:python:markdown:capabilities:client.md
│       │   │   │   │   ├── algokit:utils:python:markdown:capabilities:debugger.md
│       │   │   │   │   ├── algokit:utils:python:markdown:capabilities:dispenser-client.md
│       │   │   │   │   ├── algokit:utils:python:markdown:capabilities:transfer.md
│       │   │   │   │   ├── algokit:utils:python:markdown:index.md
│       │   │   │   │   ├── algokit:utils:python:README.md
│       │   │   │   │   ├── algokit:utils:python:source:capabilities:account.md
│       │   │   │   │   ├── algokit:utils:python:source:capabilities:app-client.md
│       │   │   │   │   ├── algokit:utils:python:source:capabilities:app-deploy.md
│       │   │   │   │   ├── algokit:utils:python:source:capabilities:client.md
│       │   │   │   │   ├── algokit:utils:python:source:capabilities:debugger.md
│       │   │   │   │   ├── algokit:utils:python:source:capabilities:dispenser-client.md
│       │   │   │   │   ├── algokit:utils:python:source:capabilities:transfer.md
│       │   │   │   │   ├── algokit:utils:python:source:index.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:account.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:algorand-client.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:amount.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:app-client.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:app-deploy.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:app.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:asset.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:client.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:debugging.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:dispenser-client.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:event-emitter.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:indexer.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:testing.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:transaction-composer.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:transaction.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:transfer.md
│       │   │   │   │   ├── algokit:utils:typescript:capabilities:typed-app-clients.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:testing.TestLogger.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:testing.TransactionLogger.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_account_manager.AccountManager.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_account.MultisigAccount.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_account.SigningAccount.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_algo_http_client_with_retry.AlgoHttpClientWithRetry.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_algorand_client_transaction_creator.AlgorandClientTransactionCreator.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_algorand_client_transaction_sender.AlgorandClientTransactionSender.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_algorand_client.AlgorandClient.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_amount.AlgoAmount.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_app_arc56.Arc56Method.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_app_client.AppClient.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_app_client.ApplicationClient.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_app_deployer.AppDeployer.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_app_factory.AppFactory.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_app_manager.AppManager.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_asset_manager.AssetManager.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_async_event_emitter.AsyncEventEmitter.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_client_manager.ClientManager.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_composer.TransactionComposer.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_config.UpdatableConfig.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_dispenser_client.TestNetDispenserApiClient.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_kmd_account_manager.KmdAccountManager.md
│       │   │   │   │   ├── algokit:utils:typescript:code:classes:types_logic_error.LogicError.md
│       │   │   │   │   ├── algokit:utils:typescript:code:enums:types_app.OnSchemaBreak.md
│       │   │   │   │   ├── algokit:utils:typescript:code:enums:types_app.OnUpdate.md
│       │   │   │   │   ├── algokit:utils:typescript:code:enums:types_indexer.AccountStatus.md
│       │   │   │   │   ├── algokit:utils:typescript:code:enums:types_indexer.ApplicationOnComplete.md
│       │   │   │   │   ├── algokit:utils:typescript:code:enums:types_indexer.SignatureType.md
│       │   │   │   │   ├── algokit:utils:typescript:code:enums:types_lifecycle_events.EventType.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_account_manager.EnsureFundedResult.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_account.AccountConfig.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_account.TransactionSignerAccount.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_algorand_client_interface.AlgorandClientInterface.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_arc56.Arc56Contract.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_arc56.Event.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_arc56.Method.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_arc56.ProgramSourceInfo.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_arc56.StorageKey.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_arc56.StorageMap.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_arc56.StructField.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCallABIArgs.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCallCoreParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCompilationParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientCompilationResult.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientDeployCallInterfaceParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientDeployCoreParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientDeployParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_client.AppClientParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_client.AppSourceMaps.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_client.FundAppAccountParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_client.ResolveAppById.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_client.ResolveAppByIdBase.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_client.SourceMapExport.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_deployer.AppLookup.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_deployer.AppMetadata.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_factory.AppFactoryParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_manager.AppInformation.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_manager.BoxReference.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_manager.BoxValueRequestParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_manager.BoxValuesRequestParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_spec.AppSources.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_spec.AppSpec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_spec.CallConfig.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_spec.DeclaredSchemaValueSpec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_spec.Hint.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_spec.ReservedSchemaValueSpec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_spec.Schema.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_spec.SchemaSpec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_spec.StateSchemaSpec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app_spec.Struct.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.AppCallParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.AppCallTransactionResultOfType.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.AppCompilationResult.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.AppDeploymentParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.AppDeployMetadata.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.AppLookup.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.AppMetadata.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.AppReference.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.AppState.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.AppStorageSchema.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.BoxName.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.BoxReference.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.BoxValueRequestParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.BoxValuesRequestParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.CompiledTeal.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.CoreAppCallArgs.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.CreateAppParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.RawAppCallArgs.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.TealTemplateParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_app.UpdateAppParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_asset_manager.AssetInformation.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_asset_manager.BulkAssetOptInOutResult.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_asset.AssetBulkOptInOutParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_asset.AssetOptInParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_asset.AssetOptOutParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_asset.CreateAssetParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_client_manager.AlgoSdkClients.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_client_manager.TypedAppClient.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_client_manager.TypedAppFactory.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_composer.BuiltTransactions.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_config.Config.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_debugging.AVMTracesEventData.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_debugging.TealSourceDebugEventData.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_debugging.TealSourcesDebugEventData.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_dispenser_client.DispenserFundResponse.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_dispenser_client.DispenserLimitResponse.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_dispenser_client.TestNetDispenserApiClientParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_indexer.LookupAssetHoldingsOptions.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_logic_error.LogicErrorDetails.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_network_client.AlgoClientConfig.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_network_client.AlgoConfig.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_network_client.NetworkDetails.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_testing.AlgoKitLogCaptureFixture.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_testing.AlgorandFixture.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_testing.AlgorandFixtureConfig.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_testing.AlgorandTestAutomationContext.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_testing.GetTestAccountParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_testing.LogSnapshotConfig.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transaction.AtomicTransactionComposerToSend.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transaction.ConfirmedTransactionResult.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transaction.ConfirmedTransactionResults.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transaction.SendAtomicTransactionComposerResults.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transaction.SendParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transaction.SendTransactionParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transaction.SendTransactionResult.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transaction.SendTransactionResults.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transaction.TransactionGroupToSend.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transaction.TransactionToSign.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transfer.AlgoRekeyParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transfer.AlgoTransferParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transfer.EnsureFundedParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transfer.EnsureFundedReturnType.md
│       │   │   │   │   ├── algokit:utils:typescript:code:interfaces:types_transfer.TransferAssetParams.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:index.indexer.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:index.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:testing.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_account_manager_spec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_account_manager.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_account.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_algo_http_client_with_retry.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_algorand_client_asset_spec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_algorand_client_interface.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_algorand_client_spec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_algorand_client_transaction_creator.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_algorand_client_transaction_sender.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_algorand_client_transfer_spec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_algorand_client.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_amount_spec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_amount.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_app_arc56.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_app_client_spec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_app_client.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_app_deployer.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_app_factory_and_client_spec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_app_factory.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_app_manager.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_app_spec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_app.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_asset_manager.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_asset.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_async_event_emitter_spec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_async_event_emitter.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_client_manager_spec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_client_manager.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_composer.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_config.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_debugging.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_dispenser_client_spec.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_dispenser_client.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_expand.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_indexer.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_kmd_account_manager.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_lifecycle_events.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_logging.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_logic_error.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_network_client.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_testing.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_transaction.md
│       │   │   │   │   ├── algokit:utils:typescript:code:modules:types_transfer.md
│       │   │   │   │   ├── algokit:utils:typescript:code:README.md
│       │   │   │   │   ├── algokit:utils:typescript:README.md
│       │   │   │   │   ├── algokit:utils:typescript:v7-migration.md
│       │   │   │   │   ├── algokit:utils:typescript:v8-migration.md
│       │   │   │   │   ├── ARCs:ARC-template.md
│       │   │   │   │   ├── ARCs:assets:arc-0012:README.md
│       │   │   │   │   ├── ARCs:assets:arc-0034:TemplateForm.md
│       │   │   │   │   ├── ARCs:assets:arc-0062:README.md
│       │   │   │   │   ├── ARCs:pages:nfts.md
│       │   │   │   │   ├── ARCs:pages:wallets.md
│       │   │   │   │   ├── ARCs:README.md
│       │   │   │   │   ├── ARCs:specs:arc-0000.md
│       │   │   │   │   ├── ARCs:specs:arc-0001.md
│       │   │   │   │   ├── ARCs:specs:arc-0002.md
│       │   │   │   │   ├── ARCs:specs:arc-0003.md
│       │   │   │   │   ├── ARCs:specs:arc-0004.md
│       │   │   │   │   ├── ARCs:specs:arc-0005.md
│       │   │   │   │   ├── ARCs:specs:arc-0006.md
│       │   │   │   │   ├── ARCs:specs:arc-0007.md
│       │   │   │   │   ├── ARCs:specs:arc-0008.md
│       │   │   │   │   ├── ARCs:specs:arc-0009.md
│       │   │   │   │   ├── ARCs:specs:arc-0010.md
│       │   │   │   │   ├── ARCs:specs:arc-0011.md
│       │   │   │   │   ├── ARCs:specs:arc-0012.md
│       │   │   │   │   ├── ARCs:specs:arc-0015.md
│       │   │   │   │   ├── ARCs:specs:arc-0016.md
│       │   │   │   │   ├── ARCs:specs:arc-0018.md
│       │   │   │   │   ├── ARCs:specs:arc-0019.md
│       │   │   │   │   ├── ARCs:specs:arc-0020.md
│       │   │   │   │   ├── ARCs:specs:arc-0021.md
│       │   │   │   │   ├── ARCs:specs:arc-0022.md
│       │   │   │   │   ├── ARCs:specs:arc-0023.md
│       │   │   │   │   ├── ARCs:specs:arc-0025.md
│       │   │   │   │   ├── ARCs:specs:arc-0026.md
│       │   │   │   │   ├── ARCs:specs:arc-0028.md
│       │   │   │   │   ├── ARCs:specs:arc-0032.md
│       │   │   │   │   ├── ARCs:specs:arc-0033.md
│       │   │   │   │   ├── ARCs:specs:arc-0034.md
│       │   │   │   │   ├── ARCs:specs:arc-0035.md
│       │   │   │   │   ├── ARCs:specs:arc-0036.md
│       │   │   │   │   ├── ARCs:specs:arc-0042.md
│       │   │   │   │   ├── ARCs:specs:arc-0047.md
│       │   │   │   │   ├── ARCs:specs:arc-0048.md
│       │   │   │   │   ├── ARCs:specs:arc-0049.md
│       │   │   │   │   ├── ARCs:specs:arc-0054.md
│       │   │   │   │   ├── ARCs:specs:arc-0055.md
│       │   │   │   │   ├── ARCs:specs:arc-0056.md
│       │   │   │   │   ├── ARCs:specs:arc-0059.md
│       │   │   │   │   ├── ARCs:specs:arc-0062.md
│       │   │   │   │   ├── ARCs:specs:arc-0065.md
│       │   │   │   │   ├── ARCs:specs:arc-0069.md
│       │   │   │   │   ├── ARCs:specs:arc-0072.md
│       │   │   │   │   ├── ARCs:specs:arc-0073.md
│       │   │   │   │   ├── ARCs:specs:arc-0074.md
│       │   │   │   │   ├── ARCs:specs:arc-0076.md
│       │   │   │   │   ├── ARCs:specs:arc-0078.md
│       │   │   │   │   ├── ARCs:specs:arc-0079.md
│       │   │   │   │   ├── ARCs:specs:arc-0200.md
│       │   │   │   │   ├── clis_index.md
│       │   │   │   │   ├── developer:docs:about.md
│       │   │   │   │   ├── developer:docs:clis:algokey:algokey.md
│       │   │   │   │   ├── developer:docs:clis:algokey:generate.md
│       │   │   │   │   ├── developer:docs:clis:algokey:import.md
│       │   │   │   │   ├── developer:docs:clis:algokey:multisig:append-auth-addr.md
│       │   │   │   │   ├── developer:docs:clis:algokey:multisig:multisig.md
│       │   │   │   │   ├── developer:docs:clis:algokey:part:info.md
│       │   │   │   │   ├── developer:docs:clis:algokey:part:part.md
│       │   │   │   │   ├── developer:docs:clis:algokey:part:reparent.md
│       │   │   │   │   ├── developer:docs:clis:algokey:sign.md
│       │   │   │   │   ├── developer:docs:clis:conduit:conduit.md
│       │   │   │   │   ├── developer:docs:clis:conduit:init.md
│       │   │   │   │   ├── developer:docs:clis:conduit:list:exporters.md
│       │   │   │   │   ├── developer:docs:clis:conduit:list:importers.md
│       │   │   │   │   ├── developer:docs:clis:conduit:list:list.md
│       │   │   │   │   ├── developer:docs:clis:conduit:list:processors.md
│       │   │   │   │   ├── developer:docs:clis:diagcfg:diagcfg.md
│       │   │   │   │   ├── developer:docs:clis:diagcfg:metric:disable.md
│       │   │   │   │   ├── developer:docs:clis:diagcfg:metric:enable.md
│       │   │   │   │   ├── developer:docs:clis:diagcfg:metric:metric.md
│       │   │   │   │   ├── developer:docs:clis:diagcfg:metric:status.md
│       │   │   │   │   ├── developer:docs:clis:diagcfg:telemetry:disable.md
│       │   │   │   │   ├── developer:docs:clis:diagcfg:telemetry:enable.md
│       │   │   │   │   ├── developer:docs:clis:diagcfg:telemetry:endpoint.md
│       │   │   │   │   ├── developer:docs:clis:diagcfg:telemetry:name.md
│       │   │   │   │   ├── developer:docs:clis:diagcfg:telemetry:status.md
│       │   │   │   │   ├── developer:docs:clis:diagcfg:telemetry:telemetry.md
│       │   │   │   │   ├── developer:docs:clis:goal:node:restart.md
│       │   │   │   │   ├── developer:docs:clis:goal:node:start.md
│       │   │   │   │   ├── developer:docs:clis:goal:node:status.md
│       │   │   │   │   ├── developer:docs:clis:goal:node:stop.md
│       │   │   │   │   ├── developer:docs:clis:goal:node:wait.md
│       │   │   │   │   ├── developer:docs:clis:goal:protocols.md
│       │   │   │   │   ├── developer:docs:clis:goal:report.md
│       │   │   │   │   ├── developer:docs:clis:goal:version.md
│       │   │   │   │   ├── developer:docs:clis:goal:wallet:list.md
│       │   │   │   │   ├── developer:docs:clis:goal:wallet:new.md
│       │   │   │   │   ├── developer:docs:clis:goal:wallet:wallet.md
│       │   │   │   │   ├── developer:docs:clis:indexer:api-config.md
│       │   │   │   │   ├── developer:docs:clis:indexer:daemon.md
│       │   │   │   │   ├── developer:docs:clis:indexer:indexer.md
│       │   │   │   │   ├── developer:docs:clis:indexer:util:util.md
│       │   │   │   │   ├── developer:docs:clis:indexer:util:validator.md
│       │   │   │   │   ├── developer:docs:clis:kmd.md
│       │   │   │   │   ├── developer:docs:clis:tealdbg:debug.md
│       │   │   │   │   ├── developer:docs:clis:tealdbg:remote.md
│       │   │   │   │   ├── developer:docs:clis:tealdbg:tealdbg.md
│       │   │   │   │   ├── developer:docs:details:accounts:create.md
│       │   │   │   │   ├── developer:docs:details:accounts:index.md
│       │   │   │   │   ├── developer:docs:details:accounts:rekey.md
│       │   │   │   │   ├── developer:docs:details:algorand_consensus.md
│       │   │   │   │   ├── developer:docs:details:algorand-networks:betanet.md
│       │   │   │   │   ├── developer:docs:details:algorand-networks:index.md
│       │   │   │   │   ├── developer:docs:details:algorand-networks:mainnet.md
│       │   │   │   │   ├── developer:docs:details:algorand-networks:testnet.md
│       │   │   │   │   ├── developer:docs:details:asa.md
│       │   │   │   │   ├── developer:docs:details:atc.md
│       │   │   │   │   ├── developer:docs:details:atomic_transfers.md
│       │   │   │   │   ├── developer:docs:details:conduit.md
│       │   │   │   │   ├── developer:docs:details:crust.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:index.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:guidelines.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:index.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:jsonspec.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:opcodes:index.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:opcodes:v1.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:opcodes:v10.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:opcodes:v2.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:opcodes:v3.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:opcodes:v4.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:opcodes:v5.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:opcodes:v6.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:opcodes:v7.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:opcodes:v8.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:opcodes:v9.md
│       │   │   │   │   ├── developer:docs:details:dapps:avm:teal:specification.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:ABI:index.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:apps:create.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:apps:index.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:apps:innertx.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:apps:state.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:apps:txs.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:debugging.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:frontend:apps.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:frontend:smartsigs.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:guidelines.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:index.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:smartsigs:index.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:smartsigs:modes.md
│       │   │   │   │   ├── developer:docs:details:dapps:smart-contracts:smartsigs:walkthrough.md
│       │   │   │   │   ├── developer:docs:details:dapps:writing-contracts:beaker.md
│       │   │   │   │   ├── developer:docs:details:dapps:writing-contracts:pyteal.md
│       │   │   │   │   ├── developer:docs:details:dapps:writing-contracts:python.md
│       │   │   │   │   ├── developer:docs:details:encoding.md
│       │   │   │   │   ├── developer:docs:details:ethereum_to_algorand.md
│       │   │   │   │   ├── developer:docs:details:index.md
│       │   │   │   │   ├── developer:docs:details:indexer.md
│       │   │   │   │   ├── developer:docs:details:parameter_tables.md
│       │   │   │   │   ├── developer:docs:details:stateproofs:index.md
│       │   │   │   │   ├── developer:docs:details:stateproofs:light_client.md
│       │   │   │   │   ├── developer:docs:details:technical_faq.md
│       │   │   │   │   ├── developer:docs:details:transactions:index.md
│       │   │   │   │   ├── developer:docs:details:transactions:offline_transactions.md
│       │   │   │   │   ├── developer:docs:details:transactions:payment_prompts.md
│       │   │   │   │   ├── developer:docs:details:transactions:signatures.md
│       │   │   │   │   ├── developer:docs:details:transactions:transactions.md
│       │   │   │   │   ├── developer:docs:details:useful_resources.md
│       │   │   │   │   ├── developer:docs:get-started:algokit.md
│       │   │   │   │   ├── developer:docs:get-started:basics:what_is_blockchain.md
│       │   │   │   │   ├── developer:docs:get-started:basics:whats_a_dapp.md
│       │   │   │   │   ├── developer:docs:get-started:basics:where_to_start.md
│       │   │   │   │   ├── developer:docs:get-started:basics:why_algorand.md
│       │   │   │   │   ├── developer:docs:get-started:tokenization:ft.md
│       │   │   │   │   ├── developer:docs:get-started:tokenization:nft.md
│       │   │   │   │   ├── developer:docs:index.md
│       │   │   │   │   ├── developer:docs:rest-apis:algod.md
│       │   │   │   │   ├── developer:docs:rest-apis:indexer.md
│       │   │   │   │   ├── developer:docs:rest-apis:kmd.md
│       │   │   │   │   ├── developer:docs:rest-apis:restendpoints.md
│       │   │   │   │   ├── developer:docs:run-a-node:operations:catchup.md
│       │   │   │   │   ├── developer:docs:run-a-node:operations:switch_networks.md
│       │   │   │   │   ├── developer:docs:run-a-node:participate:generate_keys.md
│       │   │   │   │   ├── developer:docs:run-a-node:participate:index.md
│       │   │   │   │   ├── developer:docs:run-a-node:participate:offline.md
│       │   │   │   │   ├── developer:docs:run-a-node:participate:online.md
│       │   │   │   │   ├── developer:docs:run-a-node:participate:renew.md
│       │   │   │   │   ├── developer:docs:run-a-node:reference:artifacts.md
│       │   │   │   │   ├── developer:docs:run-a-node:reference:config.md
│       │   │   │   │   ├── developer:docs:run-a-node:reference:relay.md
│       │   │   │   │   ├── developer:docs:run-a-node:reference:telemetry-config.md
│       │   │   │   │   ├── developer:docs:run-a-node:setup:indexer.md
│       │   │   │   │   ├── developer:docs:run-a-node:setup:install.md
│       │   │   │   │   ├── developer:docs:run-a-node:setup:node-troubleshooting.md
│       │   │   │   │   ├── developer:docs:run-a-node:setup:types.md
│       │   │   │   │   ├── developer:docs:sdks:go:index.md
│       │   │   │   │   ├── developer:docs:sdks:index.md
│       │   │   │   │   ├── developer:docs:sdks:java:index.md
│       │   │   │   │   ├── developer:docs:sdks:javascript:index.md
│       │   │   │   │   ├── developer:docs:sdks:python:index.md
│       │   │   │   │   ├── developer:python:code:example:accounts.md
│       │   │   │   │   ├── developer:python:code:example:arc4_types.md
│       │   │   │   │   ├── developer:python:code:example:assets.md
│       │   │   │   │   ├── developer:python:code:example:box_storage.md
│       │   │   │   │   ├── developer:python:code:example:control_flow.md
│       │   │   │   │   ├── developer:python:code:example:crypto:merkle_tree.md
│       │   │   │   │   ├── developer:python:code:example:defi:amm.md
│       │   │   │   │   ├── developer:python:code:example:defi:auction.md
│       │   │   │   │   ├── developer:python:code:example:defi:htlc_logicsig.md
│       │   │   │   │   ├── developer:python:code:example:defi:marketplace.md
│       │   │   │   │   ├── developer:python:code:example:events:arc28_events.md
│       │   │   │   │   ├── developer:python:code:example:global_storage.md
│       │   │   │   │   ├── developer:python:code:example:governance:simple_voting.md
│       │   │   │   │   ├── developer:python:code:example:hello_world.md
│       │   │   │   │   ├── developer:python:code:example:inner_transactions.md
│       │   │   │   │   ├── developer:python:code:example:local_storage.md
│       │   │   │   │   ├── developer:python:code:example:nft:proof_of_attendance.md
│       │   │   │   │   ├── developer:python:code:example:privacy:zk_whitelist.md
│       │   │   │   │   ├── developer:python:code:example:scratch_storage.md
│       │   │   │   │   ├── developer:python:code:example:self_payment.md
│       │   │   │   │   ├── developer:python:code:example:struct_in_box.md
│       │   │   │   │   ├── developer:python:code:example:subsidize_app_call.md
│       │   │   │   │   ├── developer:python:code:example:transactions.md
│       │   │   │   │   ├── developer:python:code:example:utility:calculator.md
│       │   │   │   │   ├── devportal-code-examples:projects:python-contract-examples:README.md
│       │   │   │   │   ├── devportal-code-examples:README.md
│       │   │   │   │   ├── docs:.walletconnect:index.md
│       │   │   │   │   ├── docs:.walletconnect:walletconnect-schema.md
│       │   │   │   │   ├── docs:README.md
│       │   │   │   │   ├── docs:scripts:example_tracker:example_list.md
│       │   │   │   │   ├── docs:scripts:README.md
│       │   │   │   │   ├── index.md
│       │   │   │   │   ├── liquid_auth_index.md
│       │   │   │   │   ├── liquid-auth:ARCHITECTURE.md
│       │   │   │   │   ├── liquid-auth:decisions:1-Service-Authentication.md
│       │   │   │   │   ├── liquid-auth:decisions:2-Bidirectional-Communication.md
│       │   │   │   │   ├── liquid-auth:decisions:3-Peer-to-Peer-Signaling.md
│       │   │   │   │   ├── liquid-auth:decisions:4-Fido-Extension.md
│       │   │   │   │   ├── liquid-auth:decisions:README.md
│       │   │   │   │   ├── liquid-auth:docs:architecture.md
│       │   │   │   │   ├── liquid-auth:docs:clients:android:provider-service:authenticate.md
│       │   │   │   │   ├── liquid-auth:docs:clients:android:provider-service:register.md
│       │   │   │   │   ├── liquid-auth:docs:clients:browser:authentication.md
│       │   │   │   │   ├── liquid-auth:docs:clients:browser:example.md
│       │   │   │   │   ├── liquid-auth:docs:introduction.md
│       │   │   │   │   ├── liquid-auth:docs:README.md
│       │   │   │   │   ├── liquid-auth:docs:server:environment-variables.md
│       │   │   │   │   ├── liquid-auth:docs:server:integrations.md
│       │   │   │   │   ├── liquid-auth:docs:server:introduction.md
│       │   │   │   │   ├── liquid-auth:docs:server:running-locally.md
│       │   │   │   │   ├── liquid-auth:README.md
│       │   │   │   │   ├── liquid-auth:SEQUENCE.md
│       │   │   │   │   ├── liquid-auth:services:liquid-auth-api-js:src:assertion:assertion.controller.post.request.md
│       │   │   │   │   ├── liquid-auth:services:liquid-auth-api-js:src:assertion:assertion.controller.post.response.md
│       │   │   │   │   ├── liquid-auth:services:liquid-auth-api-js:src:attestation:attestation.controller.post.request.md
│       │   │   │   │   ├── liquid-auth:services:liquid-auth-api-js:src:auth:auth.controller.get.user.md
│       │   │   │   │   ├── liquid-auth:sites:express-dapp:README.md
│       │   │   │   │   ├── liquid-auth:VISION.md
│       │   │   │   │   ├── puya_index.md
│       │   │   │   │   ├── puya:docs:algopy_testing:index.md
│       │   │   │   │   ├── puya:docs:api-algopy.arc4.md
│       │   │   │   │   ├── puya:docs:api-algopy.gtxn.md
│       │   │   │   │   ├── puya:docs:api-algopy.itxn.md
│       │   │   │   │   ├── puya:docs:api-algopy.md
│       │   │   │   │   ├── puya:docs:api-algopy.op.md
│       │   │   │   │   ├── puya:docs:api.md
│       │   │   │   │   ├── puya:docs:compiler.md
│       │   │   │   │   ├── puya:docs:index.md
│       │   │   │   │   ├── puya:docs:language-guide.md
│       │   │   │   │   ├── puya:docs:lg-arc28.md
│       │   │   │   │   ├── puya:docs:lg-arc4.md
│       │   │   │   │   ├── puya:docs:lg-builtins.md
│       │   │   │   │   ├── puya:docs:lg-calling-apps.md
│       │   │   │   │   ├── puya:docs:lg-compile.md
│       │   │   │   │   ├── puya:docs:lg-control.md
│       │   │   │   │   ├── puya:docs:lg-errors.md
│       │   │   │   │   ├── puya:docs:lg-logs.md
│       │   │   │   │   ├── puya:docs:lg-modules.md
│       │   │   │   │   ├── puya:docs:lg-opcode-budget.md
│       │   │   │   │   ├── puya:docs:lg-ops.md
│       │   │   │   │   ├── puya:docs:lg-storage.md
│       │   │   │   │   ├── puya:docs:lg-structure.md
│       │   │   │   │   ├── puya:docs:lg-transactions.md
│       │   │   │   │   ├── puya:docs:lg-types.md
│       │   │   │   │   ├── puya:docs:lg-unsupported-python-features.md
│       │   │   │   │   ├── puya:docs:principles.md
│       │   │   │   │   ├── puya:examples:auction:README.md
│       │   │   │   │   ├── puya:python:testing:docs:algopy.md
│       │   │   │   │   ├── puya:python:testing:docs:api.md
│       │   │   │   │   ├── puya:python:testing:docs:coverage.md
│       │   │   │   │   ├── puya:python:testing:docs:examples.md
│       │   │   │   │   ├── puya:python:testing:docs:faq.md
│       │   │   │   │   ├── puya:python:testing:docs:index.md
│       │   │   │   │   ├── puya:python:testing:docs:testing-guide:arc4-types.md
│       │   │   │   │   ├── puya:python:testing:docs:testing-guide:avm-types.md
│       │   │   │   │   ├── puya:python:testing:docs:testing-guide:concepts.md
│       │   │   │   │   ├── puya:python:testing:docs:testing-guide:contract-testing.md
│       │   │   │   │   ├── puya:python:testing:docs:testing-guide:index.md
│       │   │   │   │   ├── puya:python:testing:docs:testing-guide:opcodes.md
│       │   │   │   │   ├── puya:python:testing:docs:testing-guide:signature-testing.md
│       │   │   │   │   ├── puya:python:testing:docs:testing-guide:state-management.md
│       │   │   │   │   ├── puya:python:testing:docs:testing-guide:subroutines.md
│       │   │   │   │   ├── puya:python:testing:docs:testing-guide:transactions.md
│       │   │   │   │   ├── puya:python:testing:examples:README.md
│       │   │   │   │   ├── puya:python:testing:README.md
│       │   │   │   │   ├── puya:README.md
│       │   │   │   │   ├── puya:src:puya:ARCHITECTURE.md
│       │   │   │   │   ├── puya:src:puyapy:_typeshed:README.md
│       │   │   │   │   ├── puya:src:puyapy:_vendor:mypy:typeshed:stdlib:_typeshed:README.md
│       │   │   │   │   ├── puya:src:puyapy:awst_build:README.md
│       │   │   │   │   ├── puya:stubs:README.md
│       │   │   │   │   ├── puya:tests:test_expected_output:README.md
│       │   │   │   │   ├── puya:typescript:docs:architecture-decisions:2024-05-21_primitive-bytes-and-strings.md
│       │   │   │   │   ├── puya:typescript:docs:architecture-decisions:2024-05-21_primitive-integer-types.md
│       │   │   │   │   ├── puya:typescript:docs:README.md
│       │   │   │   │   ├── puya:typescript:packages:algo-ts:readme.md
│       │   │   │   │   ├── puya:typescript:README.md
│       │   │   │   │   ├── SDKs:javascript:classes:ABIAddressType.md
│       │   │   │   │   ├── SDKs:javascript:classes:ABIArrayDynamicType.md
│       │   │   │   │   ├── SDKs:javascript:classes:ABIArrayStaticType.md
│       │   │   │   │   ├── SDKs:javascript:classes:ABIBoolType.md
│       │   │   │   │   ├── SDKs:javascript:classes:ABIByteType.md
│       │   │   │   │   ├── SDKs:javascript:classes:ABIContract.md
│       │   │   │   │   ├── SDKs:javascript:classes:ABIInterface.md
│       │   │   │   │   ├── SDKs:javascript:classes:ABIMethod.md
│       │   │   │   │   ├── SDKs:javascript:classes:ABIStringType.md
│       │   │   │   │   ├── SDKs:javascript:classes:ABITupleType.md
│       │   │   │   │   ├── SDKs:javascript:classes:ABIType.md
│       │   │   │   │   ├── SDKs:javascript:classes:ABIUfixedType.md
│       │   │   │   │   ├── SDKs:javascript:classes:ABIUintType.md
│       │   │   │   │   ├── SDKs:javascript:classes:Algodv2.md
│       │   │   │   │   ├── SDKs:javascript:classes:AtomicTransactionComposer.md
│       │   │   │   │   ├── SDKs:javascript:classes:DryrunResult.md
│       │   │   │   │   ├── SDKs:javascript:classes:Indexer.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.Account.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.AccountParticipation.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.AccountResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.AccountsResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.AccountStateDelta.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.Application.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.ApplicationLocalState.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.ApplicationLocalStatesResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.ApplicationLogData.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.ApplicationLogsResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.ApplicationParams.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.ApplicationResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.ApplicationsResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.ApplicationStateSchema.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.Asset.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.AssetBalancesResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.AssetHolding.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.AssetHoldingsResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.AssetParams.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.AssetResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.AssetsResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.Block.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.BlockRewards.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.BlockUpgradeState.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.BlockUpgradeVote.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.Box.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.BoxDescriptor.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.BoxesResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.ErrorResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.EvalDelta.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.EvalDeltaKeyValue.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.HashFactory.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.HealthCheck.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.IndexerStateProofMessage.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.MerkleArrayProof.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.MiniAssetHolding.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.ParticipationUpdates.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.StateProofFields.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.StateProofParticipant.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.StateProofReveal.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.StateProofSignature.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.StateProofSigSlot.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.StateProofTracking.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.StateProofVerifier.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.StateSchema.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TealKeyValue.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TealValue.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.Transaction.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TransactionApplication.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TransactionAssetConfig.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TransactionAssetFreeze.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TransactionAssetTransfer.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TransactionKeyreg.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TransactionPayment.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TransactionResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TransactionSignature.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TransactionSignatureLogicsig.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TransactionSignatureMultisig.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TransactionSignatureMultisigSubsignature.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TransactionsResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:indexerModels.TransactionStateProof.md
│       │   │   │   │   ├── SDKs:javascript:classes:Kmd.md
│       │   │   │   │   ├── SDKs:javascript:classes:LogicSig.md
│       │   │   │   │   ├── SDKs:javascript:classes:LogicSigAccount.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.Account.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.AccountApplicationResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.AccountAssetHolding.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.AccountAssetResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.AccountAssetsInformationResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.AccountParticipation.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.AccountStateDelta.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.AppCallLogs.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.Application.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.ApplicationInitialStates.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.ApplicationKVStorage.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.ApplicationLocalReference.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.ApplicationLocalState.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.ApplicationParams.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.ApplicationStateOperation.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.ApplicationStateSchema.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.Asset.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.AssetHolding.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.AssetHoldingReference.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.AssetParams.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.AvmKeyValue.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.AvmValue.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.BlockHashResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.BlockLogsResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.BlockResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.BlockTxidsResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.Box.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.BoxDescriptor.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.BoxesResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.BoxReference.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.BuildVersion.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.CompileResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.DisassembleResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.DryrunRequest.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.DryrunResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.DryrunSource.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.DryrunState.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.DryrunTxnResult.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.ErrorResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.EvalDelta.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.EvalDeltaKeyValue.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.GetBlockTimeStampOffsetResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.GetSyncRoundResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.KvDelta.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.LedgerStateDeltaForTransactionGroup.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.LightBlockHeaderProof.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.NodeStatusResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.PendingTransactionResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.PendingTransactionsResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.PostTransactionsResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.ScratchChange.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.SimulateInitialStates.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.SimulateRequest.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.SimulateRequestTransactionGroup.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.SimulateResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.SimulateTraceConfig.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.SimulateTransactionGroupResult.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.SimulateTransactionResult.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.SimulateUnnamedResourcesAccessed.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.SimulationEvalOverrides.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.SimulationOpcodeTraceUnit.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.SimulationTransactionExecTrace.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.StateProof.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.StateProofMessage.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.SupplyResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.TealKeyValue.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.TealValue.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.TransactionGroupLedgerStateDeltasForRoundResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.TransactionParametersResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.TransactionProofResponse.md
│       │   │   │   │   ├── SDKs:javascript:classes:modelsv2.Version.md
│       │   │   │   │   ├── SDKs:javascript:classes:SourceMap.md
│       │   │   │   │   ├── SDKs:javascript:classes:Transaction.md
│       │   │   │   │   ├── SDKs:javascript:enums:ABIReferenceType.md
│       │   │   │   │   ├── SDKs:javascript:enums:ABITransactionType.md
│       │   │   │   │   ├── SDKs:javascript:enums:AtomicTransactionComposerStatus.md
│       │   │   │   │   ├── SDKs:javascript:enums:IntDecoding.md
│       │   │   │   │   ├── SDKs:javascript:enums:OnApplicationComplete.md
│       │   │   │   │   ├── SDKs:javascript:enums:TransactionType.md
│       │   │   │   │   ├── SDKs:javascript:examples:README.md
│       │   │   │   │   ├── SDKs:javascript:FAQ.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:ABIContractNetworkInfo.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:ABIContractNetworks.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:ABIContractParams.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:ABIInterfaceParams.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:ABIMethodArgParams.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:ABIMethodParams.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:ABIMethodReturnParams.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:ABIResult.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:Account.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:Address.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:AlgodTokenHeader.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:BaseHTTPClient.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:BaseHTTPClientError.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:BaseHTTPClientResponse.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:BoxReference.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:CustomTokenHeader.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:EncodedAssetParams.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:EncodedBoxReference.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:EncodedGlobalStateSchema.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:EncodedLocalStateSchema.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:EncodedLogicSig.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:EncodedLogicSigAccount.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:EncodedMultisig.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:EncodedSignedTransaction.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:EncodedSubsig.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:EncodedTransaction.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:IndexerTokenHeader.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:KMDTokenHeader.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:MultisigMetadata.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:SignedTransaction.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:SuggestedParams.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:TransactionParams.md
│       │   │   │   │   ├── SDKs:javascript:interfaces:TransactionWithSigner.md
│       │   │   │   │   ├── SDKs:javascript:modules:indexerModels.md
│       │   │   │   │   ├── SDKs:javascript:modules:modelsv2.md
│       │   │   │   │   ├── SDKs:javascript:modules.md
│       │   │   │   │   ├── SDKs:javascript:README.md
│       │   │   │   │   ├── SDKs:python:algosdk:v2client:harness:README.md
│       │   │   │   │   ├── SDKs:python:examples:README.md
│       │   │   │   │   ├── SDKs:python:README.md
│       │   │   │   │   ├── tealscript:examples_amm_README.md
│       │   │   │   │   ├── tealscript:examples_auction_README.md
│       │   │   │   │   ├── tealscript:examples_big_box_README.md
│       │   │   │   │   ├── tealscript:examples_itxns_README.md
│       │   │   │   │   ├── tealscript:examples_lsig_with_app_README.md
│       │   │   │   │   ├── tealscript:examples_reti_README.md
│       │   │   │   │   ├── tealscript:FEATURES.md
│       │   │   │   │   ├── tealscript:guides_atomic_txn.md
│       │   │   │   │   ├── tealscript:guides_features.md
│       │   │   │   │   ├── tealscript:guides_getting_started.md
│       │   │   │   │   ├── tealscript:guides_inner_transactions.md
│       │   │   │   │   ├── tealscript:guides_lifecycle.md
│       │   │   │   │   ├── tealscript:guides_math.md
│       │   │   │   │   ├── tealscript:guides_methods.md
│       │   │   │   │   ├── tealscript:guides_multiple_contracts.md
│       │   │   │   │   ├── tealscript:guides_pyteal.md
│       │   │   │   │   ├── tealscript:guides_storage.md
│       │   │   │   │   ├── tealscript:guides_Supported Types_arrays.md
│       │   │   │   │   ├── tealscript:guides_Supported Types_numbers.md
│       │   │   │   │   ├── TEALScript:README.md
│       │   │   │   │   ├── tealscript:tests_test_package_README.md
│       │   │   │   │   ├── tealscript:tutorials_Hello World_0001-intro.md
│       │   │   │   │   ├── tealscript:tutorials_Hello World_0002-init.md
│       │   │   │   │   ├── tealscript:tutorials_Hello World_0003-contract.md
│       │   │   │   │   ├── tealscript:tutorials_Hello World_0004-artifacts.md
│       │   │   │   │   ├── tealscript:tutorials_Hello World_0005-hello.md
│       │   │   │   │   └── tealscript:tutorials_Hello World_0006-test.md
│       │   │   │   └── taxonomy-categories
│       │   │   │       ├── algokit-utils.json
│       │   │   │       ├── algokit.json
│       │   │   │       ├── arcs.json
│       │   │   │       ├── clis.json
│       │   │   │       ├── details.json
│       │   │   │       ├── developers.json
│       │   │   │       ├── liquid-auth.json
│       │   │   │       ├── nodes.json
│       │   │   │       ├── puya.json
│       │   │   │       ├── python.json
│       │   │   │       ├── sdks.json
│       │   │   │       └── tealscript.json
│       │   │   └── wallet
│       │   │       └── index.ts
│       │   ├── tools
│       │   │   ├── accountManager.ts
│       │   │   ├── algodManager.ts
│       │   │   ├── apiManager
│       │   │   │   ├── algod
│       │   │   │   │   ├── account.ts
│       │   │   │   │   ├── application.ts
│       │   │   │   │   ├── asset.ts
│       │   │   │   │   ├── index.ts
│       │   │   │   │   └── transaction.ts
│       │   │   │   ├── example
│       │   │   │   │   ├── get-balance.ts
│       │   │   │   │   └── index.ts
│       │   │   │   ├── index.ts
│       │   │   │   ├── indexer
│       │   │   │   │   ├── account.ts
│       │   │   │   │   ├── application.ts
│       │   │   │   │   ├── asset.ts
│       │   │   │   │   ├── index.ts
│       │   │   │   │   └── transaction.ts
│       │   │   │   ├── nfd
│       │   │   │   │   └── index.ts
│       │   │   │   ├── tinyman
│       │   │   │   │   ├── analytics.ts
│       │   │   │   │   ├── bootstrap.ts
│       │   │   │   │   ├── index.ts
│       │   │   │   │   ├── liquidity.ts
│       │   │   │   │   ├── opt_in.ts
│       │   │   │   │   ├── pool.ts
│       │   │   │   │   ├── remove_liquidity.ts
│       │   │   │   │   └── swap.ts
│       │   │   │   ├── ultrade
│       │   │   │   │   ├── index.ts
│       │   │   │   │   ├── market.ts
│       │   │   │   │   ├── system.ts
│       │   │   │   │   └── wallet.ts
│       │   │   │   └── vestige
│       │   │   │       ├── assets.ts
│       │   │   │       ├── balances.ts
│       │   │   │       ├── index.ts
│       │   │   │       ├── networks.ts
│       │   │   │       ├── notes.ts
│       │   │   │       ├── pools.ts
│       │   │   │       ├── protocols.ts
│       │   │   │       ├── swaps.ts
│       │   │   │       └── vaults.ts
│       │   │   ├── arc26Manager.ts
│       │   │   ├── index.ts
│       │   │   ├── knowledgeManager.ts
│       │   │   ├── transactionManager
│       │   │   │   ├── accountTransactions.ts
│       │   │   │   ├── appTransactions
│       │   │   │   │   ├── callTxn.ts
│       │   │   │   │   ├── clearTxn.ts
│       │   │   │   │   ├── closeOutTxn.ts
│       │   │   │   │   ├── createTxn.ts
│       │   │   │   │   ├── deleteTxn.ts
│       │   │   │   │   ├── index.ts
│       │   │   │   │   ├── optInTxn.ts
│       │   │   │   │   ├── test
│       │   │   │   │   │   ├── counter_approval.teal
│       │   │   │   │   │   ├── counter_clear.teal
│       │   │   │   │   │   ├── storage_test_approval_v2.teal
│       │   │   │   │   │   ├── storage_test_approval.teal
│       │   │   │   │   │   └── storage_test_clear.teal
│       │   │   │   │   ├── types.ts
│       │   │   │   │   └── updateTxn.ts
│       │   │   │   ├── assetTransactions.ts
│       │   │   │   ├── generalTransaction.ts
│       │   │   │   └── index.ts
│       │   │   └── utilityManager.ts
│       │   ├── types.ts
│       │   └── utils
│       │       └── responseProcessor.ts
│       ├── tests
│       │   ├── resources
│       │   │   ├── algod
│       │   │   │   ├── account.test.ts
│       │   │   │   ├── application.test.ts
│       │   │   │   ├── asset.test.ts
│       │   │   │   └── transaction.test.ts
│       │   │   └── indexer
│       │   │       ├── account.test.ts
│       │   │       ├── application.test.ts
│       │   │       ├── asset.test.ts
│       │   │       └── transaction.test.ts
│       │   └── tools
│       │       ├── accountManager.test.ts
│       │       ├── algodManager.test.ts
│       │       ├── apiManager
│       │       │   └── example
│       │       │       └── get-balance.test.ts
│       │       ├── transactionManager
│       │       │   ├── accountTransactionManager.test.ts
│       │       │   ├── appTransactionManager.test.ts
│       │       │   ├── assetTransactionManager.test.ts
│       │       │   ├── generalTransactionManager.test.ts
│       │       │   └── transactionManager.test.ts
│       │       └── utilityManager.test.ts
│       └── tsconfig.json
├── README.md
├── rename_files.sh
└── tsconfig.json
```

# Files

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/puya:docs:lg-types.md:
--------------------------------------------------------------------------------

```markdown
  1 | # Types
  2 | 
  3 | Algorand Python exposes a number of types that provide a statically typed representation of the behaviour that is possible on the Algorand Virtual Machine.
  4 | 
  5 | ```{contents} Types
  6 | :local:
  7 | :depth: 3
  8 | :class: this-will-duplicate-information-and-it-is-still-useful-here
  9 | ```
 10 | 
 11 | ## AVM types
 12 | 
 13 | The most basic [types on the AVM](https://developer.algorand.org/docs/get-details/dapps/avm/teal/specification/#stack-types)
 14 | are `uint64` and `bytes[]`, representing unsigned 64-bit integers and byte arrays respectively.
 15 | These are represented by [`UInt64`](./#uint64) and [`Bytes`](./#bytes) in Algorand Python.
 16 | 
 17 | There are further "bounded" types supported by the AVM, which are backed by these two simple primitives.
 18 | For example, `bigint` represents a variably sized (up to 512-bits), unsigned integer, but is actually
 19 | backed by a `bytes[]`. This is represented by [`BigUInt`](./#biguint) in Algorand Python.
 20 | 
 21 | ### UInt64
 22 | 
 23 | [`algopy.UInt64`](#algopy.UInt64) represents the underlying AVM `uint64` type.
 24 | 
 25 | It supports all the same operators as `int`, except for `/`, you must use `//` for truncating
 26 | division instead.
 27 | 
 28 | ```python
 29 | # you can instantiate with an integer literal
 30 | num = algopy.UInt64(1)
 31 | # no arguments default to the zero value
 32 | zero = algopy.UInt64()
 33 | # zero is False, any other value is True
 34 | assert not zero
 35 | assert num
 36 | # Like Python's `int`, `UInt64` is immutable, so augmented assignment operators return new values
 37 | one = num
 38 | num += 1
 39 | assert one == 1
 40 | assert num == 2
 41 | # note that once you have a variable of type UInt64, you don't need to type any variables
 42 | # derived from that or wrap int literals
 43 | num2 = num + 200 // 3
 44 | ```
 45 | 
 46 | [Further examples available here](https://github.com/algorandfoundation/puya/blob/main/test_cases/stubs/uint64.py).
 47 | 
 48 | ### Bytes
 49 | 
 50 | [`algopy.Bytes`](#algopy.Bytes) represents the underlying AVM `bytes[]` type. It is intended
 51 | to represent binary data, for UTF-8 it might be preferable to use [String](#string).
 52 | 
 53 | ```python
 54 | # you can instantiate with a bytes literal
 55 | data = algopy.Bytes(b"abc")
 56 | # no arguments defaults to an empty value
 57 | empty = algopy.Bytes()
 58 | # empty is False, non-empty is True
 59 | assert data
 60 | assert not empty
 61 | # Like Python's `bytes`, `Bytes` is immutable, augmented assignment operators return new values
 62 | abc = data
 63 | data += b"def"
 64 | assert abc == b"abc"
 65 | assert data == b"abcdef"
 66 | # indexing and slicing are supported, and both return a Bytes
 67 | assert abc[0] == b"a"
 68 | assert data[:3] == abc
 69 | # check if a bytes sequence occurs within another
 70 | assert abc in data
 71 | ```
 72 | 
 73 | ```{hint}
 74 | Indexing a `Bytes` returning a `Bytes` differs from the behaviour of Python's bytes type, which
 75 | returns an `int`.
 76 | ```
 77 | 
 78 | ```python
 79 | # you can iterate
 80 | for i in abc:
 81 |     ...
 82 | # construct from encoded values
 83 | base32_seq = algopy.Bytes.from_base32('74======')
 84 | base64_seq = algopy.Bytes.from_base64('RkY=')
 85 | hex_seq = algopy.Bytes.from_hex('FF')
 86 | # binary manipulations ^, &, |, and ~ are supported
 87 | data ^= ~((base32_seq & base64_seq) | hex_seq)
 88 | # access the length via the .length property
 89 | assert abc.length == 3
 90 | ```
 91 | 
 92 | ```{note}
 93 | See [Python builtins](lg-builtins.md#len---length) for an explanation of why `len()` isn't supported.
 94 | ```
 95 | 
 96 | [See a full example](https://github.com/algorandfoundation/puya/blob/main/test_cases/stubs/bytes.py).
 97 | 
 98 | ### String
 99 | 
100 | [`String`](#algopy.String) is a special Algorand Python type that represents a UTF8 encoded string.
101 | It's backed by `Bytes`, which can be accessed through the `.bytes`.
102 | 
103 | It works similarly to `Bytes`, except that it works with `str` literals rather than `bytes`
104 | literals. Additionally, due to a lack of AVM support for unicode data, indexing and length
105 | operations are not currently supported (simply getting the length of a UTF8 string is an `O(N)`
106 | operation, which would be quite costly in a smart contract). If you are happy using the length as
107 | the number of bytes, then you can call `.bytes.length`.
108 | 
109 | ```python
110 | # you can instantiate with a string literal
111 | data = algopy.String("abc")
112 | # no arguments defaults to an empty value
113 | empty = algopy.String()
114 | # empty is False, non-empty is True
115 | assert data
116 | assert not empty
117 | # Like Python's `str`, `String` is immutable, augmented assignment operators return new values
118 | abc = data
119 | data += "def"
120 | assert abc == "abc"
121 | assert data == "abcdef"
122 | # whilst indexing and slicing are not supported, the following tests are:
123 | assert abc.startswith("ab")
124 | assert abc.endswith("bc")
125 | assert abc in data
126 | # you can also join multiple Strings together with a seperator:
127 | assert algopy.String(", ").join((abc, abc)) == "abc, abc"
128 | # access the underlying bytes
129 | assert abc.bytes == b"abc"
130 | ```
131 | 
132 | [See a full example](https://github.com/algorandfoundation/puya/blob/main/test_cases/stubs/string.py).
133 | 
134 | ### BigUInt
135 | 
136 | [`algopy.BigUInt`](#algopy.BigUInt) represents a variable length (max 512-bit) unsigned integer stored
137 | as `bytes[]` in the AVM.
138 | 
139 | It supports all the same operators as `int`, except for power (`**`), left and right shift (`<<`
140 | and `>>`) and `/` (as with `UInt64`, you must use `//` for truncating division instead).
141 | 
142 | Note that the op code costs for `bigint` math are an order of magnitude higher than those for
143 | `uint64` math. If you just need to handle overflow, take a look at the wide ops such as `addw`,
144 | `mulw`, etc - all of which are exposed through the [`algopy.op`](#algopy.op) module.
145 | 
146 | Another contrast between `bigint` and `uint64` math is that `bigint` math ops don't immediately
147 | error on overflow - if the result exceeds 512-bits, then you can still access the value via
148 | `.bytes`, but any further math operations will fail.
149 | 
150 | ```python
151 | # you can instantiate with an integer literal
152 | num = algopy.BigUInt(1)
153 | # no arguments default to the zero value
154 | zero = algopy.BigUInt()
155 | # zero is False, any other value is True
156 | assert not zero
157 | assert num
158 | # Like Python's `int`, `BigUInt` is immutable, so augmented assignment operators return new values
159 | one = num
160 | num += 1
161 | assert one == 1
162 | assert num == UInt64(2)
163 | # note that once you have a variable of type BigUInt, you don't need to type any variables
164 | # derived from that or wrap int literals
165 | num2 = num + 200 // 3
166 | ```
167 | 
168 | [Further examples available here](https://github.com/algorandfoundation/puya/blob/main/test_cases/stubs/biguint.py).
169 | 
170 | ### bool
171 | 
172 | The semantics of the AVM `bool` bounded type exactly match the semantics of Python's built-in `bool` type
173 | and thus Algorand Python uses the in-built `bool` type from Python.
174 | 
175 | Per the behaviour in normal Python, Algorand Python automatically converts various types to `bool` when they
176 | appear in statements that expect a `bool` e.g. `if`/`while`/`assert` statements, appear in Boolean expressions
177 | (e.g. next to `and` or `or` keywords) or are explicitly casted to a bool.
178 | 
179 | The semantics of `not`, `and` and `or` are special [per how these keywords work in Python](https://docs.python.org/3/reference/expressions.html#boolean-operations)
180 | (e.g. short circuiting).
181 | 
182 | ```python
183 | a = UInt64(1)
184 | b = UInt64(2)
185 | 
186 | c = a or b
187 | d = b and a
188 | 
189 | e = self.expensive_op(UInt64(0)) or self.side_effecting_op(UInt64(1))
190 | f = self.expensive_op(UInt64(3)) or self.side_effecting_op(UInt64(42))
191 | 
192 | g = self.side_effecting_op(UInt64(0)) and self.expensive_op(UInt64(42))
193 | h = self.side_effecting_op(UInt64(2)) and self.expensive_op(UInt64(3))
194 | 
195 | i = a if b < c else d + e
196 | if a:
197 |     log("a is True")
198 | ```
199 | 
200 | [Further examples available here](https://github.com/algorandfoundation/puya/blob/main/test_cases/stubs/uint64.py).
201 | 
202 | ### Account
203 | 
204 | [`Account`](#algopy.Account) represents a logical Account, backed by a `bytes[32]` representing the
205 | bytes of the public key (without the checksum). It has various account related methods that can be called from the type.
206 | 
207 | Also see [`algopy.arc4.Address`](#algopy.arc4.Address) if needing to represent the address as a distinct type.
208 | 
209 | 
210 | ### Asset
211 | 
212 | [`Asset`](#algopy.Asset) represents a logical Asset, backed by a `uint64` ID.
213 | It has various asset related methods that can be called from the type.
214 | 
215 | ### Application
216 | 
217 | [`Application`](#algopy.Application) represents a logical Application, backed by a `uint64` ID.
218 | It has various application related methods that can be called from the type.
219 | 
220 | ## Python built-in types
221 | 
222 | Unfortunately, the [AVM types](#avm-types) don't map to standard Python primitives. For instance,
223 | in Python, an `int` is unsigned, and effectively unbounded. A `bytes` similarly is limited only by
224 | the memory available, whereas an AVM `bytes[]` has a maximum length of 4096. In order to both maintain
225 | semantic compatibility and allow for a framework implementation in plain Python that will fail under the
226 | same conditions as when deployed to the AVM, support for Python primitives is limited.
227 | 
228 | In saying that, there are many places where built-in Python types can be used and over time the places these types can be used are expected to increase.
229 | 
230 | ### bool
231 | 
232 | [Per above](#bool) Algorand Python has full support for `bool`.
233 | 
234 | ### tuple
235 | 
236 | Python tuples are supported as arguments to subroutines, local variables, return types.
237 | 
238 | ### typing.NamedTuple
239 | 
240 | Python named tuples are also supported using [`typing.NamedTuple`](https://docs.python.org/3/library/typing.html#typing.NamedTuple).
241 | 
242 | ```{note}
243 | Default field values and subclassing a NamedTuple are not supported
244 | ```
245 | 
246 | ```python
247 | import typing
248 | 
249 | import algopy
250 | 
251 | 
252 | class Pair(typing.NamedTuple):
253 |     foo: algopy.Bytes
254 |     bar: algopy.Bytes
255 | ```
256 | 
257 | ### None
258 | 
259 | `None` is not supported as a value, but is supported as a type annotation to indicate a function or subroutine
260 | returns no value.
261 | 
262 | ### int, str, bytes, float
263 | 
264 | The `int`, `str` and `bytes` built-in types are currently only supported as [module-level constants](./lg-modules.md) or literals.
265 | 
266 | They can be passed as arguments to various Algorand Python methods that support them or
267 | when interacting with certain [AVM types](#avm-types) e.g. adding a number to a `UInt64`.
268 | 
269 | `float` is not supported.
270 | 
271 | ## Template variables
272 | 
273 | Template variables can be used to represent a placeholder for a deploy-time provided
274 | value. This can be declared using the `TemplateVar[TYPE]` type where `TYPE` is the
275 | Algorand Python type that it will be interpreted as.
276 | 
277 | ```python
278 | from algopy import BigUInt, Bytes, TemplateVar, UInt64, arc4
279 | from algopy.arc4 import UInt512
280 | 
281 | 
282 | class TemplateVariablesContract(arc4.ARC4Contract):
283 |     @arc4.abimethod()
284 |     def get_bytes(self) -> Bytes:
285 |         return TemplateVar[Bytes]("SOME_BYTES")
286 | 
287 |     @arc4.abimethod()
288 |     def get_big_uint(self) -> UInt512:
289 |         x = TemplateVar[BigUInt]("SOME_BIG_UINT")
290 |         return UInt512(x)
291 | 
292 |     @arc4.baremethod(allow_actions=["UpdateApplication"])
293 |     def on_update(self) -> None:
294 |         assert TemplateVar[bool]("UPDATABLE")
295 | 
296 |     @arc4.baremethod(allow_actions=["DeleteApplication"])
297 |     def on_delete(self) -> None:
298 |         assert TemplateVar[UInt64]("DELETABLE")
299 | ```
300 | 
301 | The resulting TEAL code that PuyaPy emits has placeholders with `TMPL_{template variable name}`
302 | that expects either an integer value or an encoded bytes value. This behaviour exactly
303 | matches what
304 | [AlgoKit Utils expects](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/docs/capabilities/app-deploy.md#compilation-and-template-substitution).
305 | 
306 | For more information look at the API reference for [`TemplateVar`](./api-algopy.md#algopy.TemplateVar).
307 | 
308 | ## ARC-4 types
309 | 
310 | ARC-4 data types are a first class concept in Algorand Python. They can be passed into ARC-4
311 | methods (which will translate to the relevant ARC-4 method signature), passed into subroutines, or
312 | instantiated into local variables. A limited set of operations are exposed on some ARC-4 types, but
313 | often it may make sense to convert the ARC-4 value to a native AVM type, in which case you can use
314 | the `native` property to retrieve the value. Most of the ARC-4 types also allow for mutation e.g.
315 | you can edit values in arrays by index.
316 | 
317 | Please see the [reference documentation](./api-algopy.arc4.md) for the different classes that can
318 | be used to represent ARC-4 values or the [ARC-4 documentation](./lg-arc4.md) for more information
319 | about ARC-4.
320 | 
```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/developer:docs:details:transactions:offline_transactions.md:
--------------------------------------------------------------------------------

```markdown
  1 | title: Offline signatures
  2 | 
  3 | This section explains how to authorize transactions with private keys that are kept **offline**. In particular, this guide shows how to create and save transactions to a file that can then be transferred to an offline device for signing. To learn about the structure of transactions and how to authorize them in general visit the [Transactions Structure](../../transactions/) and [Authorizing Transactions](../../transactions/signatures/) sections, respectively.
  4 | 
  5 | The same methodology described here can also be used to work with [LogicSignatures](../../transactions/signatures/#logic-signatures) and [Multisignatures](../../transactions/signatures/#multisignatures). All objects in the following examples use msgpack to store the transaction object ensuring interoperability with the SDKs and `goal`.
  6 | 
  7 | !!! info
  8 |     Storing keys _offline_ is also referred to as placing them in **cold storage**. An _online_ device that stores private keys is often referred to as a **hot wallet**.  
  9 | 
 10 | # Unsigned Transaction File Operations
 11 | Algorand SDK's and `goal` support writing and reading both signed and unsigned transactions to a file. Examples of these scenarios are shown in the following code snippets.
 12 | 
 13 | Unsigned transactions require the transaction object to be created before writing to a file.
 14 | 
 15 | === "JavaScript"
 16 | 	<!-- ===JSSDK_CODEC_TRANSACTION_UNSIGNED=== -->
 17 | 	```javascript
 18 | 	const txn = algosdk.makePaymentTxnWithSuggestedParamsFromObject({
 19 | 	  from: sender.addr,
 20 | 	  to: receiver.addr,
 21 | 	  amount: 1e6,
 22 | 	  suggestedParams,
 23 | 	});
 24 | 	
 25 | 	const txnBytes = algosdk.encodeUnsignedTransaction(txn);
 26 | 	const txnB64 = Buffer.from(txnBytes).toString('base64');
 27 | 	// ...
 28 | 	const restoredTxn = algosdk.decodeUnsignedTransaction(
 29 | 	  Buffer.from(txnB64, 'base64')
 30 | 	);
 31 | 	console.log(restoredTxn);
 32 | 	```
 33 | 	[Snippet Source](https://github.com/algorand/js-algorand-sdk/blob/examples/examples/codec.ts#L37-L51)
 34 | 	<!-- ===JSSDK_CODEC_TRANSACTION_UNSIGNED=== -->
 35 | 
 36 | === "Python"
 37 | 	<!-- ===PYSDK_CODEC_TRANSACTION_UNSIGNED=== -->
 38 | 	```python
 39 | 	sp = algod_client.suggested_params()
 40 | 	pay_txn = transaction.PaymentTxn(acct.address, sp, acct.address, 10000)
 41 | 	
 42 | 	# Write message packed transaction to disk
 43 | 	with open("pay.txn", "w") as f:
 44 | 	    f.write(encoding.msgpack_encode(pay_txn))
 45 | 	
 46 | 	# Read message packed transaction and decode it to a Transaction object
 47 | 	with open("pay.txn", "r") as f:
 48 | 	    recovered_txn = encoding.msgpack_decode(f.read())
 49 | 	
 50 | 	print(recovered_txn.dictify())
 51 | 	```
 52 | 	[Snippet Source](https://github.com/algorand/py-algorand-sdk/blob/examples/examples/codec.py#L40-L52)
 53 | 	<!-- ===PYSDK_CODEC_TRANSACTION_UNSIGNED=== -->
 54 | 
 55 | === "Java"
 56 | 	<!-- ===JAVASDK_CODEC_TRANSACTION_UNSIGNED=== -->
 57 | 	```java
 58 | 	Response<TransactionParametersResponse> rsp = algodClient.TransactionParams().execute();
 59 | 	TransactionParametersResponse sp = rsp.body();
 60 | 	Transaction ptxn = Transaction.PaymentTransactionBuilder().suggestedParams(sp)
 61 | 	        .sender(acct.getAddress()).receiver(acct.getAddress()).amount(100).build();
 62 | 	
 63 | 	byte[] encodedTxn = Encoder.encodeToMsgPack(ptxn);
 64 | 	
 65 | 	Transaction decodedTxn = Encoder.decodeFromMsgPack(encodedTxn, Transaction.class);
 66 | 	assert decodedTxn.equals(ptxn);
 67 | 	```
 68 | 	[Snippet Source](https://github.com/algorand/java-algorand-sdk/blob/examples/examples/src/main/java/com/algorand/examples/CodecExamples.java#L49-L58)
 69 | 	<!-- ===JAVASDK_CODEC_TRANSACTION_UNSIGNED=== -->
 70 | 
 71 | === "Go"
 72 | 	<!-- ===GOSDK_CODEC_TRANSACTION_UNSIGNED=== -->
 73 | 	```go
 74 | 	// Error handling omitted for brevity
 75 | 	sp, _ := algodClient.SuggestedParams().Do(context.Background())
 76 | 	ptxn, _ := transaction.MakePaymentTxn(
 77 | 		acct1.Address.String(), acct1.Address.String(), 10000, nil, "", sp,
 78 | 	)
 79 | 	
 80 | 	// Encode the txn as bytes,
 81 | 	// if sending over the wire (like to a frontend) it should also be b64 encoded
 82 | 	encodedTxn := msgpack.Encode(ptxn)
 83 | 	os.WriteFile("pay.txn", encodedTxn, 0655)
 84 | 	
 85 | 	var recoveredPayTxn = types.Transaction{}
 86 | 	
 87 | 	msgpack.Decode(encodedTxn, &recoveredPayTxn)
 88 | 	log.Printf("%+v", recoveredPayTxn)
 89 | 	```
 90 | 	[Snippet Source](https://github.com/algorand/go-algorand-sdk/blob/examples/examples/codec/main.go#L28-L43)
 91 | 	<!-- ===GOSDK_CODEC_TRANSACTION_UNSIGNED=== -->
 92 | 
 93 | === "goal"
 94 | 	<!-- ===GOAL_CODEC_TRANSACTION_UNSIGNED=== -->
 95 |     ``` goal
 96 |     $ goal clerk send --from=<my-account> --to=GD64YIY3TWGDMCNPP553DZPPR6LDUSFQOIJVFDPPXWEG3FVOJCCDBBHU5A --fee=1000 --amount=1000000 --out="unsigned.txn"
 97 | 
 98 |     $ goal clerk sign --infile unsigned.txn --outfile signed.txn
 99 | 
100 |     $ goal clerk rawsend --filename signed.txn
101 | 
102 |     ```
103 | 	<!-- ===GOAL_CODEC_TRANSACTION_UNSIGNED=== -->
104 | # Signed Transaction File Operations 
105 | Signed Transactions are similar, but require an account to sign the transaction before writing it to a file.
106 | 
107 | === "JavaScript"
108 | 	<!-- ===JSSDK_CODEC_TRANSACTION_SIGNED=== -->
109 | 	```javascript
110 | 	const signedTxn = txn.signTxn(sender.privateKey);
111 | 	const signedB64Txn = Buffer.from(signedTxn).toString('base64');
112 | 	const restoredSignedTxn = algosdk.decodeSignedTransaction(
113 | 	  Buffer.from(signedB64Txn, 'base64')
114 | 	);
115 | 	console.log(restoredSignedTxn);
116 | 	```
117 | 	[Snippet Source](https://github.com/algorand/js-algorand-sdk/blob/examples/examples/codec.ts#L54-L60)
118 | 	<!-- ===JSSDK_CODEC_TRANSACTION_SIGNED=== -->
119 | 
120 | === "Python"
121 | 	<!-- ===PYSDK_CODEC_TRANSACTION_SIGNED=== -->
122 | 	```python
123 | 	# Sign transaction
124 | 	spay_txn = pay_txn.sign(acct.private_key)
125 | 	# write message packed signed transaction to disk
126 | 	with open("signed_pay.txn", "w") as f:
127 | 	    f.write(encoding.msgpack_encode(spay_txn))
128 | 	
129 | 	# read message packed signed transaction into a SignedTransaction object
130 | 	with open("signed_pay.txn", "r") as f:
131 | 	    recovered_signed_txn = encoding.msgpack_decode(f.read())
132 | 	
133 | 	print(recovered_signed_txn.dictify())
134 | 	```
135 | 	[Snippet Source](https://github.com/algorand/py-algorand-sdk/blob/examples/examples/codec.py#L57-L68)
136 | 	<!-- ===PYSDK_CODEC_TRANSACTION_SIGNED=== -->
137 | 
138 | === "Java"
139 | 	<!-- ===JAVASDK_CODEC_TRANSACTION_SIGNED=== -->
140 | 	```java
141 | 	SignedTransaction signedTxn = acct.signTransaction(ptxn);
142 | 	byte[] encodedSignedTxn = Encoder.encodeToMsgPack(signedTxn);
143 | 	
144 | 	SignedTransaction decodedSignedTransaction = Encoder.decodeFromMsgPack(encodedSignedTxn,
145 | 	        SignedTransaction.class);
146 | 	assert decodedSignedTransaction.equals(signedTxn);
147 | 	```
148 | 	[Snippet Source](https://github.com/algorand/java-algorand-sdk/blob/examples/examples/src/main/java/com/algorand/examples/CodecExamples.java#L61-L67)
149 | 	<!-- ===JAVASDK_CODEC_TRANSACTION_SIGNED=== -->
150 | 
151 | === "Go"
152 | 	<!-- ===GOSDK_CODEC_TRANSACTION_SIGNED=== -->
153 | 	```go
154 | 	// Assuming we already have a pay transaction `ptxn`
155 | 	
156 | 	// Sign the transaction
157 | 	_, signedTxn, err := crypto.SignTransaction(acct1.PrivateKey, ptxn)
158 | 	if err != nil {
159 | 		log.Fatalf("failed to sign transaction: %s", err)
160 | 	}
161 | 	
162 | 	// Save the signed transaction to file
163 | 	os.WriteFile("pay.stxn", signedTxn, 0644)
164 | 	
165 | 	signedPayTxn := types.SignedTxn{}
166 | 	err = msgpack.Decode(signedTxn, &signedPayTxn)
167 | 	if err != nil {
168 | 		log.Fatalf("failed to decode signed transaction: %s", err)
169 | 	}
170 | 	```
171 | 	[Snippet Source](https://github.com/algorand/go-algorand-sdk/blob/examples/examples/codec/main.go#L46-L62)
172 | 	<!-- ===GOSDK_CODEC_TRANSACTION_SIGNED=== -->
173 | 
174 | === "goal"
175 | 	<!-- ===GOAL_CODEC_TRANSACTION_SIGNED=== -->
176 |     ``` goal
177 |     $ goal clerk rawsend --filename signed.txn
178 |     ```
179 | 	<!-- ===GOAL_CODEC_TRANSACTION_SIGNED=== -->
180 | 
181 | ## Signature Verification
182 | 
183 | Sometimes a transaction is signed by a third party, and you want to verify that the signature is valid. This can be done by decoding the signed transaction into a `SignedTransaction` object using one of the SDKs and then running and ed25519 verify on the signature.
184 | 
185 | === "JavaScript"
186 | 	<!-- ===JSSDK_OFFLINE_VERIFY_SIG=== -->
187 | 	```javascript
188 | 	const stxn = algosdk.decodeSignedTransaction(rawSignedTxn);
189 | 	if (stxn.sig === undefined) return false;
190 | 	
191 | 	// Get the txn object
192 | 	const txnObj = stxn.txn.get_obj_for_encoding();
193 | 	if (txnObj === undefined) return false;
194 | 	
195 | 	// Encode as msgpack
196 | 	const txnBytes = algosdk.encodeObj(txnObj);
197 | 	// Create byte array with TX prefix
198 | 	const msgBytes = new Uint8Array(txnBytes.length + 2);
199 | 	msgBytes.set(Buffer.from('TX'));
200 | 	msgBytes.set(txnBytes, 2);
201 | 	
202 | 	// Grab the other things we need to verify
203 | 	const pkBytes = stxn.txn.from.publicKey;
204 | 	const sigBytes = new Uint8Array(stxn.sig);
205 | 	
206 | 	// Return the result of the verification
207 | 	const valid = nacl.sign.detached.verify(msgBytes, sigBytes, pkBytes);
208 | 	console.log('Valid? ', valid);
209 | 	```
210 | 	[Snippet Source](https://github.com/algorand/js-algorand-sdk/blob/examples/examples/verify_signature.ts#L6-L27)
211 | 	<!-- ===JSSDK_OFFLINE_VERIFY_SIG=== -->
212 | 
213 | === "Python"
214 | 	<!-- ===PYSDK_OFFLINE_VERIFY_SIG=== -->
215 | 	```python
216 | 	# decode the signed transaction
217 | 	stxn = encoding.msgpack_decode(raw_stxn)
218 | 	if stxn.signature is None or len(stxn.signature) == 0:
219 | 	    return False
220 | 	
221 | 	public_key = stxn.transaction.sender
222 | 	if stxn.authorizing_address is not None:
223 | 	    public_key = stxn.authorizing_address
224 | 	
225 | 	# Create a VerifyKey from nacl using the 32 byte public key
226 | 	verify_key = VerifyKey(encoding.decode_address(public_key))
227 | 	
228 | 	# Generate the message that was signed with TX prefix
229 | 	prefixed_message = b"TX" + base64.b64decode(
230 | 	    encoding.msgpack_encode(stxn.transaction)
231 | 	)
232 | 	
233 | 	try:
234 | 	    # Verify the signature
235 | 	    verify_key.verify(prefixed_message, base64.b64decode(stxn.signature))
236 | 	    return True
237 | 	except BadSignatureError:
238 | 	    return False
239 | 	```
240 | 	[Snippet Source](https://github.com/algorand/py-algorand-sdk/blob/examples/examples/verify_signature.py#L9-L32)
241 | 	<!-- ===PYSDK_OFFLINE_VERIFY_SIG=== -->
242 | 
243 | === "Go"
244 | 	<!-- ===GOSDK_OFFLINE_VERIFY_SIG=== -->
245 | 	```go
246 | 	signedTxn := types.SignedTxn{}
247 | 	msgpack.Decode(stxn, &signedTxn)
248 | 	
249 | 	from := signedTxn.Txn.Sender[:]
250 | 	
251 | 	encodedTx := msgpack.Encode(signedTxn.Txn)
252 | 	
253 | 	msgParts := [][]byte{txidPrefix, encodedTx}
254 | 	msg := bytes.Join(msgParts, nil)
255 | 	
256 | 	valid := ed25519.Verify(from, msg, signedTxn.Sig[:])
257 | 	
258 | 	log.Printf("Valid? %t", valid)
259 | 	```
260 | 	[Snippet Source](https://github.com/algorand/go-algorand-sdk/blob/examples/examples/verify_signature/main.go#L31-L44)
261 | 	<!-- ===GOSDK_OFFLINE_VERIFY_SIG=== -->
262 | 
263 | === "Java"
264 | 	<!-- ===JAVASDK_OFFLINE_VERIFY_SIG=== -->
265 | 	```java
266 | 	// decode the signature
267 | 	SignedTransaction decodedSignedTransaction = Encoder.decodeFromMsgPack(rawSignedTxn,
268 | 	        SignedTransaction.class);
269 | 	Transaction txn = decodedSignedTransaction.tx;
270 | 	
271 | 	// get the bytes that were signed
272 | 	byte[] signedBytes = txn.bytesToSign();
273 | 	// get the pubkey that signed them
274 | 	PublicKey pk = txn.sender.toVerifyKey();
275 | 	
276 | 	// set up the sig checker
277 | 	java.security.Signature sigChecker = java.security.Signature.getInstance("Ed25519");
278 | 	sigChecker.initVerify(pk);
279 | 	sigChecker.update(signedBytes);
280 | 	// verify the signature 
281 | 	boolean valid = sigChecker.verify(decodedSignedTransaction.sig.getBytes());
282 | 	System.out.printf("Valid? %b\n", valid);
283 | 	```
284 | 	[Snippet Source](https://github.com/algorand/java-algorand-sdk/blob/examples/examples/src/main/java/com/algorand/examples/VerifySignature.java#L33-L50)
285 | 	<!-- ===JAVASDK_OFFLINE_VERIFY_SIG=== -->
286 | 
287 |     
288 | ??? example "Saving Signed and Unsigned Multisig Transactions to a File using goal"
289 |     
290 |     
291 |     Create a multisig account by listing all of the accounts in the multisig and specifying the threshold number of accounts to sign with the -T flag
292 | 
293 |     ```bash
294 |     goal account multisig new <my-account1> <my-account2> <my-account3> etc… -T 2    
295 |     ```
296 | 
297 |     Create an unsigned transaction and write to file
298 | 
299 |     ```bash
300 |     goal clerk send --from <my-multisig-account>  --to AZLR2XP4O2WFHLX6TX7AZVY23HLVLG3K5K3FRIKIYDOYN6ISIF54SA4RNY --fee=1000 --amount=1000000 --out="unsigned.txn"
301 |     ```
302 | 
303 |     Sign by the required number of accounts to meet the threshold. 
304 | 
305 |     ```bash
306 |     goal clerk multisig sign -a F <my-account1> -t=unsigned.txn
307 |     goal clerk multisig sign -a F <my-account2> -t=unsigned.txn
308 |     ```
309 | 
310 |     Merge signings 
311 |     ```bash
312 |     goal clerk multisig merge --out signed.txn unsigned.txn
313 |     ```
314 | 
315 |     Broadcast
316 | 
317 |     ```bash
318 |     goal clerk rawsend --filename signed.txn
319 |     ```
```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/algokit:utils:typescript:code:interfaces:types_asset.CreateAssetParams.md:
--------------------------------------------------------------------------------

```markdown
  1 | [@algorandfoundation/algokit-utils](../README.md) / [types/asset](../modules/types_asset.md) / CreateAssetParams
  2 | 
  3 | # Interface: CreateAssetParams
  4 | 
  5 | [types/asset](../modules/types_asset.md).CreateAssetParams
  6 | 
  7 | **`Deprecated`**
  8 | 
  9 | Parameters for `createAsset` call.
 10 | 
 11 | ## Hierarchy
 12 | 
 13 | - [`SendTransactionParams`](types_transaction.SendTransactionParams.md)
 14 | 
 15 |   ↳ **`CreateAssetParams`**
 16 | 
 17 | ## Table of contents
 18 | 
 19 | ### Properties
 20 | 
 21 | - [atc](types_asset.CreateAssetParams.md#atc)
 22 | - [clawbackAccount](types_asset.CreateAssetParams.md#clawbackaccount)
 23 | - [creator](types_asset.CreateAssetParams.md#creator)
 24 | - [decimals](types_asset.CreateAssetParams.md#decimals)
 25 | - [fee](types_asset.CreateAssetParams.md#fee)
 26 | - [freezeAccount](types_asset.CreateAssetParams.md#freezeaccount)
 27 | - [frozenByDefault](types_asset.CreateAssetParams.md#frozenbydefault)
 28 | - [lease](types_asset.CreateAssetParams.md#lease)
 29 | - [manager](types_asset.CreateAssetParams.md#manager)
 30 | - [maxFee](types_asset.CreateAssetParams.md#maxfee)
 31 | - [maxRoundsToWaitForConfirmation](types_asset.CreateAssetParams.md#maxroundstowaitforconfirmation)
 32 | - [metadataHash](types_asset.CreateAssetParams.md#metadatahash)
 33 | - [name](types_asset.CreateAssetParams.md#name)
 34 | - [note](types_asset.CreateAssetParams.md#note)
 35 | - [populateAppCallResources](types_asset.CreateAssetParams.md#populateappcallresources)
 36 | - [reserveAccount](types_asset.CreateAssetParams.md#reserveaccount)
 37 | - [skipSending](types_asset.CreateAssetParams.md#skipsending)
 38 | - [skipWaiting](types_asset.CreateAssetParams.md#skipwaiting)
 39 | - [suppressLog](types_asset.CreateAssetParams.md#suppresslog)
 40 | - [total](types_asset.CreateAssetParams.md#total)
 41 | - [transactionParams](types_asset.CreateAssetParams.md#transactionparams)
 42 | - [unit](types_asset.CreateAssetParams.md#unit)
 43 | - [url](types_asset.CreateAssetParams.md#url)
 44 | 
 45 | ## Properties
 46 | 
 47 | ### atc
 48 | 
 49 | • `Optional` **atc**: `AtomicTransactionComposer`
 50 | 
 51 | An optional `AtomicTransactionComposer` to add the transaction to, if specified then `skipSending: undefined` has the same effect as `skipSending: true`
 52 | 
 53 | #### Inherited from
 54 | 
 55 | [SendTransactionParams](types_transaction.SendTransactionParams.md).[atc](types_transaction.SendTransactionParams.md#atc)
 56 | 
 57 | #### Defined in
 58 | 
 59 | [src/types/transaction.ts:36](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L36)
 60 | 
 61 | ___
 62 | 
 63 | ### clawbackAccount
 64 | 
 65 | • `Optional` **clawbackAccount**: `string` \| [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom)
 66 | 
 67 | The optional account that can clawback holdings of this asset. If empty, clawback is not permitted.
 68 | If not set at asset creation or subsequently set to empty by the manager the field is permanently empty.
 69 | 
 70 | #### Defined in
 71 | 
 72 | [src/types/asset.ts:57](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/asset.ts#L57)
 73 | 
 74 | ___
 75 | 
 76 | ### creator
 77 | 
 78 | • **creator**: [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom)
 79 | 
 80 | The account to create the asset.
 81 | 
 82 | This account automatically is opted in to the asset and holds all units after creation.
 83 | 
 84 | #### Defined in
 85 | 
 86 | [src/types/asset.ts:11](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/asset.ts#L11)
 87 | 
 88 | ___
 89 | 
 90 | ### decimals
 91 | 
 92 | • **decimals**: `number`
 93 | 
 94 | The number of digits to use after the decimal point when displaying the asset.
 95 | If 0, the asset is not divisible.
 96 | If 1, the base unit of the asset is in tenths.
 97 | If 2, the base unit of the asset is in hundredths.
 98 | If 3, the base unit of the asset is in thousandths, and so on up to 19 decimal places.
 99 | This field can only be specified upon asset creation.
100 | 
101 | #### Defined in
102 | 
103 | [src/types/asset.ts:26](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/asset.ts#L26)
104 | 
105 | ___
106 | 
107 | ### fee
108 | 
109 | • `Optional` **fee**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md)
110 | 
111 | The flat fee you want to pay, useful for covering extra fees in a transaction group or app call
112 | 
113 | #### Inherited from
114 | 
115 | [SendTransactionParams](types_transaction.SendTransactionParams.md).[fee](types_transaction.SendTransactionParams.md#fee)
116 | 
117 | #### Defined in
118 | 
119 | [src/types/transaction.ts:40](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L40)
120 | 
121 | ___
122 | 
123 | ### freezeAccount
124 | 
125 | • `Optional` **freezeAccount**: `string` \| [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom)
126 | 
127 | The optional account that can be used to freeze holdings of this asset. If empty, freezing is not permitted.
128 | If not set at asset creation or subsequently set to empty by the manager the field is permanently empty.
129 | 
130 | #### Defined in
131 | 
132 | [src/types/asset.ts:53](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/asset.ts#L53)
133 | 
134 | ___
135 | 
136 | ### frozenByDefault
137 | 
138 | • `Optional` **frozenByDefault**: `boolean`
139 | 
140 | Whether to freeze holdings for this asset by default. If `true` then for anyone apart from the creator to hold the asset it needs to be unfrozen per account using `freeze`. Defaults to `false`.
141 | 
142 | #### Defined in
143 | 
144 | [src/types/asset.ts:59](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/asset.ts#L59)
145 | 
146 | ___
147 | 
148 | ### lease
149 | 
150 | • `Optional` **lease**: `string` \| `Uint8Array`
151 | 
152 | An (optional) [transaction lease](https://developer.algorand.org/articles/leased-transactions-securing-advanced-smart-contract-design/) to apply
153 | 
154 | #### Defined in
155 | 
156 | [src/types/asset.ts:66](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/asset.ts#L66)
157 | 
158 | ___
159 | 
160 | ### manager
161 | 
162 | • `Optional` **manager**: `string` \| [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom)
163 | 
164 | The optional account that can manage the configuration of the asset and destroy it.
165 | If not set at asset creation or subsequently set to empty by the manager the asset becomes immutable.
166 | 
167 | #### Defined in
168 | 
169 | [src/types/asset.ts:43](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/asset.ts#L43)
170 | 
171 | ___
172 | 
173 | ### maxFee
174 | 
175 | • `Optional` **maxFee**: [`AlgoAmount`](../classes/types_amount.AlgoAmount.md)
176 | 
177 | 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
178 | 
179 | #### Inherited from
180 | 
181 | [SendTransactionParams](types_transaction.SendTransactionParams.md).[maxFee](types_transaction.SendTransactionParams.md#maxfee)
182 | 
183 | #### Defined in
184 | 
185 | [src/types/transaction.ts:42](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L42)
186 | 
187 | ___
188 | 
189 | ### maxRoundsToWaitForConfirmation
190 | 
191 | • `Optional` **maxRoundsToWaitForConfirmation**: `number`
192 | 
193 | The maximum number of rounds to wait for confirmation, only applies if `skipWaiting` is `undefined` or `false`, default: wait up to 5 rounds
194 | 
195 | #### Inherited from
196 | 
197 | [SendTransactionParams](types_transaction.SendTransactionParams.md).[maxRoundsToWaitForConfirmation](types_transaction.SendTransactionParams.md#maxroundstowaitforconfirmation)
198 | 
199 | #### Defined in
200 | 
201 | [src/types/transaction.ts:44](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L44)
202 | 
203 | ___
204 | 
205 | ### metadataHash
206 | 
207 | • `Optional` **metadataHash**: `string` \| `Uint8Array`
208 | 
209 | This field is intended to be a 32-byte hash of some metadata that is relevant to your asset and/or asset holders.
210 | The format of this metadata is up to the application. This field can only be specified upon asset creation.
211 | 
212 | #### Defined in
213 | 
214 | [src/types/asset.ts:39](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/asset.ts#L39)
215 | 
216 | ___
217 | 
218 | ### name
219 | 
220 | • `Optional` **name**: `string`
221 | 
222 | The optional name of the asset. Max size if 32 bytes. This field can only be specified upon asset creation.
223 | 
224 | #### Defined in
225 | 
226 | [src/types/asset.ts:29](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/asset.ts#L29)
227 | 
228 | ___
229 | 
230 | ### note
231 | 
232 | • `Optional` **note**: [`TransactionNote`](../modules/types_transaction.md#transactionnote)
233 | 
234 | The (optional) transaction note
235 | 
236 | #### Defined in
237 | 
238 | [src/types/asset.ts:64](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/asset.ts#L64)
239 | 
240 | ___
241 | 
242 | ### populateAppCallResources
243 | 
244 | • `Optional` **populateAppCallResources**: `boolean`
245 | 
246 | 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.
247 | 
248 | #### Inherited from
249 | 
250 | [SendTransactionParams](types_transaction.SendTransactionParams.md).[populateAppCallResources](types_transaction.SendTransactionParams.md#populateappcallresources)
251 | 
252 | #### Defined in
253 | 
254 | [src/types/transaction.ts:46](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L46)
255 | 
256 | ___
257 | 
258 | ### reserveAccount
259 | 
260 | • `Optional` **reserveAccount**: `string` \| [`SendTransactionFrom`](../modules/types_transaction.md#sendtransactionfrom)
261 | 
262 | The optional account that holds the reserve (non-minted) units of the asset. This address has no specific authority in the protocol itself and is informational.
263 | Some standards like [ARC-19](https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0019.md) rely on this field to hold meaningful data.
264 | It is used in the case where you want to signal to holders of your asset that the non-minted units of the asset reside in an account that is different from the default creator account.
265 | If not set at asset creation or subsequently set to empty by the manager the field is permanently empty.
266 | 
267 | #### Defined in
268 | 
269 | [src/types/asset.ts:49](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/asset.ts#L49)
270 | 
271 | ___
272 | 
273 | ### skipSending
274 | 
275 | • `Optional` **skipSending**: `boolean`
276 | 
277 | Whether to skip signing and sending the transaction to the chain (default: transaction signed and sent to chain, unless `atc` specified)
278 | and instead just return the raw transaction, e.g. so you can add it to a group of transactions
279 | 
280 | #### Inherited from
281 | 
282 | [SendTransactionParams](types_transaction.SendTransactionParams.md).[skipSending](types_transaction.SendTransactionParams.md#skipsending)
283 | 
284 | #### Defined in
285 | 
286 | [src/types/transaction.ts:32](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L32)
287 | 
288 | ___
289 | 
290 | ### skipWaiting
291 | 
292 | • `Optional` **skipWaiting**: `boolean`
293 | 
294 | Whether to skip waiting for the submitted transaction (only relevant if `skipSending` is `false` or unset)
295 | 
296 | #### Inherited from
297 | 
298 | [SendTransactionParams](types_transaction.SendTransactionParams.md).[skipWaiting](types_transaction.SendTransactionParams.md#skipwaiting)
299 | 
300 | #### Defined in
301 | 
302 | [src/types/transaction.ts:34](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L34)
303 | 
304 | ___
305 | 
306 | ### suppressLog
307 | 
308 | • `Optional` **suppressLog**: `boolean`
309 | 
310 | Whether to suppress log messages from transaction send, default: do not suppress
311 | 
312 | #### Inherited from
313 | 
314 | [SendTransactionParams](types_transaction.SendTransactionParams.md).[suppressLog](types_transaction.SendTransactionParams.md#suppresslog)
315 | 
316 | #### Defined in
317 | 
318 | [src/types/transaction.ts:38](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/transaction.ts#L38)
319 | 
320 | ___
321 | 
322 | ### total
323 | 
324 | • **total**: `number` \| `bigint`
325 | 
326 | The total number of base (decimal) units of the asset to create.
327 | If decimal is, say, 2, then for every 100 `total` there would be 1 whole unit.
328 | This field can only be specified upon asset creation.
329 | 
330 | #### Defined in
331 | 
332 | [src/types/asset.ts:17](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/asset.ts#L17)
333 | 
334 | ___
335 | 
336 | ### transactionParams
337 | 
338 | • `Optional` **transactionParams**: `SuggestedParams`
339 | 
340 | Optional transaction parameters
341 | 
342 | #### Defined in
343 | 
344 | [src/types/asset.ts:62](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/asset.ts#L62)
345 | 
346 | ___
347 | 
348 | ### unit
349 | 
350 | • `Optional` **unit**: `string`
351 | 
352 | The optional name of the unit of this asset. Max size is 8 bytes. This field can only be specified upon asset creation.
353 | 
354 | #### Defined in
355 | 
356 | [src/types/asset.ts:31](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/asset.ts#L31)
357 | 
358 | ___
359 | 
360 | ### url
361 | 
362 | • `Optional` **url**: `string`
363 | 
364 | Specifies an optional URL where more information about the asset can be retrieved. Max size is 96 bytes.
365 | This field can only be specified upon asset creation.
366 | 
367 | #### Defined in
368 | 
369 | [src/types/asset.ts:35](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/asset.ts#L35)
370 | 
```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:classes:indexerModels.Account.md:
--------------------------------------------------------------------------------

```markdown
  1 | [algosdk](../README.md) / [Exports](../modules.md) / [indexerModels](../modules/indexerModels.md) / Account
  2 | 
  3 | # Class: Account
  4 | 
  5 | [indexerModels](../modules/indexerModels.md).Account
  6 | 
  7 | Account information at a given round.
  8 | Definition:
  9 | data/basics/userBalance.go : AccountData
 10 | 
 11 | ## Hierarchy
 12 | 
 13 | - `default`
 14 | 
 15 |   ↳ **`Account`**
 16 | 
 17 | ## Table of contents
 18 | 
 19 | ### Constructors
 20 | 
 21 | - [constructor](indexerModels.Account.md#constructor)
 22 | 
 23 | ### Properties
 24 | 
 25 | - [address](indexerModels.Account.md#address)
 26 | - [amount](indexerModels.Account.md#amount)
 27 | - [amountWithoutPendingRewards](indexerModels.Account.md#amountwithoutpendingrewards)
 28 | - [appsLocalState](indexerModels.Account.md#appslocalstate)
 29 | - [appsTotalExtraPages](indexerModels.Account.md#appstotalextrapages)
 30 | - [appsTotalSchema](indexerModels.Account.md#appstotalschema)
 31 | - [assets](indexerModels.Account.md#assets)
 32 | - [attribute\_map](indexerModels.Account.md#attribute_map)
 33 | - [authAddr](indexerModels.Account.md#authaddr)
 34 | - [closedAtRound](indexerModels.Account.md#closedatround)
 35 | - [createdApps](indexerModels.Account.md#createdapps)
 36 | - [createdAssets](indexerModels.Account.md#createdassets)
 37 | - [createdAtRound](indexerModels.Account.md#createdatround)
 38 | - [deleted](indexerModels.Account.md#deleted)
 39 | - [incentiveEligible](indexerModels.Account.md#incentiveeligible)
 40 | - [lastHeartbeat](indexerModels.Account.md#lastheartbeat)
 41 | - [lastProposed](indexerModels.Account.md#lastproposed)
 42 | - [minBalance](indexerModels.Account.md#minbalance)
 43 | - [participation](indexerModels.Account.md#participation)
 44 | - [pendingRewards](indexerModels.Account.md#pendingrewards)
 45 | - [rewardBase](indexerModels.Account.md#rewardbase)
 46 | - [rewards](indexerModels.Account.md#rewards)
 47 | - [round](indexerModels.Account.md#round)
 48 | - [sigType](indexerModels.Account.md#sigtype)
 49 | - [status](indexerModels.Account.md#status)
 50 | - [totalAppsOptedIn](indexerModels.Account.md#totalappsoptedin)
 51 | - [totalAssetsOptedIn](indexerModels.Account.md#totalassetsoptedin)
 52 | - [totalBoxBytes](indexerModels.Account.md#totalboxbytes)
 53 | - [totalBoxes](indexerModels.Account.md#totalboxes)
 54 | - [totalCreatedApps](indexerModels.Account.md#totalcreatedapps)
 55 | - [totalCreatedAssets](indexerModels.Account.md#totalcreatedassets)
 56 | 
 57 | ### Methods
 58 | 
 59 | - [get\_obj\_for\_encoding](indexerModels.Account.md#get_obj_for_encoding)
 60 | - [from\_obj\_for\_encoding](indexerModels.Account.md#from_obj_for_encoding)
 61 | 
 62 | ## Constructors
 63 | 
 64 | ### constructor
 65 | 
 66 | • **new Account**(`«destructured»`)
 67 | 
 68 | Creates a new `Account` object.
 69 | 
 70 | #### Parameters
 71 | 
 72 | | Name | Type |
 73 | | :------ | :------ |
 74 | | `«destructured»` | `Object` |
 75 | | › `address` | `string` |
 76 | | › `amount` | `number` \| `bigint` |
 77 | | › `amountWithoutPendingRewards` | `number` \| `bigint` |
 78 | | › `appsLocalState?` | [`ApplicationLocalState`](indexerModels.ApplicationLocalState.md)[] |
 79 | | › `appsTotalExtraPages?` | `number` \| `bigint` |
 80 | | › `appsTotalSchema?` | [`ApplicationStateSchema`](indexerModels.ApplicationStateSchema.md) |
 81 | | › `assets?` | [`AssetHolding`](indexerModels.AssetHolding.md)[] |
 82 | | › `authAddr?` | `string` |
 83 | | › `closedAtRound?` | `number` \| `bigint` |
 84 | | › `createdApps?` | [`Application`](indexerModels.Application.md)[] |
 85 | | › `createdAssets?` | [`Asset`](indexerModels.Asset.md)[] |
 86 | | › `createdAtRound?` | `number` \| `bigint` |
 87 | | › `deleted?` | `boolean` |
 88 | | › `incentiveEligible?` | `boolean` |
 89 | | › `lastHeartbeat?` | `number` \| `bigint` |
 90 | | › `lastProposed?` | `number` \| `bigint` |
 91 | | › `minBalance` | `number` \| `bigint` |
 92 | | › `participation?` | [`AccountParticipation`](indexerModels.AccountParticipation.md) |
 93 | | › `pendingRewards` | `number` \| `bigint` |
 94 | | › `rewardBase?` | `number` \| `bigint` |
 95 | | › `rewards` | `number` \| `bigint` |
 96 | | › `round` | `number` \| `bigint` |
 97 | | › `sigType?` | `string` |
 98 | | › `status` | `string` |
 99 | | › `totalAppsOptedIn` | `number` \| `bigint` |
100 | | › `totalAssetsOptedIn` | `number` \| `bigint` |
101 | | › `totalBoxBytes` | `number` \| `bigint` |
102 | | › `totalBoxes` | `number` \| `bigint` |
103 | | › `totalCreatedApps` | `number` \| `bigint` |
104 | | › `totalCreatedAssets` | `number` \| `bigint` |
105 | 
106 | #### Overrides
107 | 
108 | BaseModel.constructor
109 | 
110 | #### Defined in
111 | 
112 | client/v2/indexer/models/types.ts:248
113 | 
114 | ## Properties
115 | 
116 | ### address
117 | 
118 | • **address**: `string`
119 | 
120 | the account public key
121 | 
122 | #### Defined in
123 | 
124 | client/v2/indexer/models/types.ts:18
125 | 
126 | ___
127 | 
128 | ### amount
129 | 
130 | • **amount**: `number` \| `bigint`
131 | 
132 | total number of MicroAlgos in the account
133 | 
134 | #### Defined in
135 | 
136 | client/v2/indexer/models/types.ts:23
137 | 
138 | ___
139 | 
140 | ### amountWithoutPendingRewards
141 | 
142 | • **amountWithoutPendingRewards**: `number` \| `bigint`
143 | 
144 | specifies the amount of MicroAlgos in the account, without the pending rewards.
145 | 
146 | #### Defined in
147 | 
148 | client/v2/indexer/models/types.ts:28
149 | 
150 | ___
151 | 
152 | ### appsLocalState
153 | 
154 | • `Optional` **appsLocalState**: [`ApplicationLocalState`](indexerModels.ApplicationLocalState.md)[]
155 | 
156 | application local data stored in this account.
157 | Note the raw object uses `map[int] -> AppLocalState` for this type.
158 | 
159 | #### Defined in
160 | 
161 | client/v2/indexer/models/types.ts:99
162 | 
163 | ___
164 | 
165 | ### appsTotalExtraPages
166 | 
167 | • `Optional` **appsTotalExtraPages**: `number` \| `bigint`
168 | 
169 | the sum of all extra application program pages for this account.
170 | 
171 | #### Defined in
172 | 
173 | client/v2/indexer/models/types.ts:104
174 | 
175 | ___
176 | 
177 | ### appsTotalSchema
178 | 
179 | • `Optional` **appsTotalSchema**: [`ApplicationStateSchema`](indexerModels.ApplicationStateSchema.md)
180 | 
181 | the sum of all of the local schemas and global schemas in this account.
182 | Note: the raw account uses `StateSchema` for this type.
183 | 
184 | #### Defined in
185 | 
186 | client/v2/indexer/models/types.ts:110
187 | 
188 | ___
189 | 
190 | ### assets
191 | 
192 | • `Optional` **assets**: [`AssetHolding`](indexerModels.AssetHolding.md)[]
193 | 
194 | assets held by this account.
195 | Note the raw object uses `map[int] -> AssetHolding` for this type.
196 | 
197 | #### Defined in
198 | 
199 | client/v2/indexer/models/types.ts:116
200 | 
201 | ___
202 | 
203 | ### attribute\_map
204 | 
205 | • **attribute\_map**: `Record`\<`string`, `string`\>
206 | 
207 | #### Inherited from
208 | 
209 | BaseModel.attribute\_map
210 | 
211 | #### Defined in
212 | 
213 | client/v2/basemodel.ts:56
214 | 
215 | ___
216 | 
217 | ### authAddr
218 | 
219 | • `Optional` **authAddr**: `string`
220 | 
221 | The address against which signing should be checked. If empty, the address of
222 | the current account is used. This field can be updated in any transaction by
223 | setting the RekeyTo field.
224 | 
225 | #### Defined in
226 | 
227 | client/v2/indexer/models/types.ts:123
228 | 
229 | ___
230 | 
231 | ### closedAtRound
232 | 
233 | • `Optional` **closedAtRound**: `number` \| `bigint`
234 | 
235 | Round during which this account was most recently closed.
236 | 
237 | #### Defined in
238 | 
239 | client/v2/indexer/models/types.ts:128
240 | 
241 | ___
242 | 
243 | ### createdApps
244 | 
245 | • `Optional` **createdApps**: [`Application`](indexerModels.Application.md)[]
246 | 
247 | parameters of applications created by this account including app global data.
248 | Note: the raw account uses `map[int] -> AppParams` for this type.
249 | 
250 | #### Defined in
251 | 
252 | client/v2/indexer/models/types.ts:134
253 | 
254 | ___
255 | 
256 | ### createdAssets
257 | 
258 | • `Optional` **createdAssets**: [`Asset`](indexerModels.Asset.md)[]
259 | 
260 | parameters of assets created by this account.
261 | Note: the raw account uses `map[int] -> Asset` for this type.
262 | 
263 | #### Defined in
264 | 
265 | client/v2/indexer/models/types.ts:140
266 | 
267 | ___
268 | 
269 | ### createdAtRound
270 | 
271 | • `Optional` **createdAtRound**: `number` \| `bigint`
272 | 
273 | Round during which this account first appeared in a transaction.
274 | 
275 | #### Defined in
276 | 
277 | client/v2/indexer/models/types.ts:145
278 | 
279 | ___
280 | 
281 | ### deleted
282 | 
283 | • `Optional` **deleted**: `boolean`
284 | 
285 | Whether or not this account is currently closed.
286 | 
287 | #### Defined in
288 | 
289 | client/v2/indexer/models/types.ts:150
290 | 
291 | ___
292 | 
293 | ### incentiveEligible
294 | 
295 | • `Optional` **incentiveEligible**: `boolean`
296 | 
297 | can the account receive block incentives if its balance is in range at proposal
298 | time.
299 | 
300 | #### Defined in
301 | 
302 | client/v2/indexer/models/types.ts:156
303 | 
304 | ___
305 | 
306 | ### lastHeartbeat
307 | 
308 | • `Optional` **lastHeartbeat**: `number` \| `bigint`
309 | 
310 | The round in which this account last went online, or explicitly renewed their
311 | online status.
312 | 
313 | #### Defined in
314 | 
315 | client/v2/indexer/models/types.ts:162
316 | 
317 | ___
318 | 
319 | ### lastProposed
320 | 
321 | • `Optional` **lastProposed**: `number` \| `bigint`
322 | 
323 | The round in which this account last proposed the block.
324 | 
325 | #### Defined in
326 | 
327 | client/v2/indexer/models/types.ts:167
328 | 
329 | ___
330 | 
331 | ### minBalance
332 | 
333 | • **minBalance**: `number` \| `bigint`
334 | 
335 | MicroAlgo balance required by the account.
336 | The requirement grows based on asset and application usage.
337 | 
338 | #### Defined in
339 | 
340 | client/v2/indexer/models/types.ts:34
341 | 
342 | ___
343 | 
344 | ### participation
345 | 
346 | • `Optional` **participation**: [`AccountParticipation`](indexerModels.AccountParticipation.md)
347 | 
348 | AccountParticipation describes the parameters used by this account in consensus
349 | protocol.
350 | 
351 | #### Defined in
352 | 
353 | client/v2/indexer/models/types.ts:173
354 | 
355 | ___
356 | 
357 | ### pendingRewards
358 | 
359 | • **pendingRewards**: `number` \| `bigint`
360 | 
361 | amount of MicroAlgos of pending rewards in this account.
362 | 
363 | #### Defined in
364 | 
365 | client/v2/indexer/models/types.ts:39
366 | 
367 | ___
368 | 
369 | ### rewardBase
370 | 
371 | • `Optional` **rewardBase**: `number` \| `bigint`
372 | 
373 | used as part of the rewards computation. Only applicable to accounts which are
374 | participating.
375 | 
376 | #### Defined in
377 | 
378 | client/v2/indexer/models/types.ts:179
379 | 
380 | ___
381 | 
382 | ### rewards
383 | 
384 | • **rewards**: `number` \| `bigint`
385 | 
386 | total rewards of MicroAlgos the account has received, including pending rewards.
387 | 
388 | #### Defined in
389 | 
390 | client/v2/indexer/models/types.ts:44
391 | 
392 | ___
393 | 
394 | ### round
395 | 
396 | • **round**: `number` \| `bigint`
397 | 
398 | The round for which this information is relevant.
399 | 
400 | #### Defined in
401 | 
402 | client/v2/indexer/models/types.ts:49
403 | 
404 | ___
405 | 
406 | ### sigType
407 | 
408 | • `Optional` **sigType**: `string`
409 | 
410 | the type of signature used by this account, must be one of:
411 | * sig
412 | * msig
413 | * lsig
414 | * or null if unknown
415 | 
416 | #### Defined in
417 | 
418 | client/v2/indexer/models/types.ts:188
419 | 
420 | ___
421 | 
422 | ### status
423 | 
424 | • **status**: `string`
425 | 
426 | voting status of the account's MicroAlgos
427 | * Offline - indicates that the associated account is delegated.
428 | * Online - indicates that the associated account used as part of the delegation
429 | pool.
430 | * NotParticipating - indicates that the associated account is neither a
431 | delegator nor a delegate.
432 | 
433 | #### Defined in
434 | 
435 | client/v2/indexer/models/types.ts:59
436 | 
437 | ___
438 | 
439 | ### totalAppsOptedIn
440 | 
441 | • **totalAppsOptedIn**: `number` \| `bigint`
442 | 
443 | The count of all applications that have been opted in, equivalent to the count
444 | of application local data (AppLocalState objects) stored in this account.
445 | 
446 | #### Defined in
447 | 
448 | client/v2/indexer/models/types.ts:65
449 | 
450 | ___
451 | 
452 | ### totalAssetsOptedIn
453 | 
454 | • **totalAssetsOptedIn**: `number` \| `bigint`
455 | 
456 | The count of all assets that have been opted in, equivalent to the count of
457 | AssetHolding objects held by this account.
458 | 
459 | #### Defined in
460 | 
461 | client/v2/indexer/models/types.ts:71
462 | 
463 | ___
464 | 
465 | ### totalBoxBytes
466 | 
467 | • **totalBoxBytes**: `number` \| `bigint`
468 | 
469 | For app-accounts only. The total number of bytes allocated for the keys and
470 | values of boxes which belong to the associated application.
471 | 
472 | #### Defined in
473 | 
474 | client/v2/indexer/models/types.ts:77
475 | 
476 | ___
477 | 
478 | ### totalBoxes
479 | 
480 | • **totalBoxes**: `number` \| `bigint`
481 | 
482 | For app-accounts only. The total number of boxes which belong to the associated
483 | application.
484 | 
485 | #### Defined in
486 | 
487 | client/v2/indexer/models/types.ts:83
488 | 
489 | ___
490 | 
491 | ### totalCreatedApps
492 | 
493 | • **totalCreatedApps**: `number` \| `bigint`
494 | 
495 | The count of all apps (AppParams objects) created by this account.
496 | 
497 | #### Defined in
498 | 
499 | client/v2/indexer/models/types.ts:88
500 | 
501 | ___
502 | 
503 | ### totalCreatedAssets
504 | 
505 | • **totalCreatedAssets**: `number` \| `bigint`
506 | 
507 | The count of all assets (AssetParams objects) created by this account.
508 | 
509 | #### Defined in
510 | 
511 | client/v2/indexer/models/types.ts:93
512 | 
513 | ## Methods
514 | 
515 | ### get\_obj\_for\_encoding
516 | 
517 | ▸ **get_obj_for_encoding**(`binary?`): `Record`\<`string`, `any`\>
518 | 
519 | Get an object ready for encoding to either JSON or msgpack.
520 | 
521 | #### Parameters
522 | 
523 | | Name | Type | Default value | Description |
524 | | :------ | :------ | :------ | :------ |
525 | | `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. |
526 | 
527 | #### Returns
528 | 
529 | `Record`\<`string`, `any`\>
530 | 
531 | #### Inherited from
532 | 
533 | BaseModel.get\_obj\_for\_encoding
534 | 
535 | #### Defined in
536 | 
537 | client/v2/basemodel.ts:65
538 | 
539 | ___
540 | 
541 | ### from\_obj\_for\_encoding
542 | 
543 | ▸ `Static` **from_obj_for_encoding**(`data`): [`Account`](indexerModels.Account.md)
544 | 
545 | #### Parameters
546 | 
547 | | Name | Type |
548 | | :------ | :------ |
549 | | `data` | `Record`\<`string`, `any`\> |
550 | 
551 | #### Returns
552 | 
553 | [`Account`](indexerModels.Account.md)
554 | 
555 | #### Defined in
556 | 
557 | client/v2/indexer/models/types.ts:378
558 | 
```

--------------------------------------------------------------------------------
/packages/server/src/tools/accountManager.ts:
--------------------------------------------------------------------------------

```typescript
  1 | import algosdk, { Transaction } from 'algosdk';
  2 | import { McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js';
  3 | import { algodClient } from '../algorand-client.js';
  4 | 
  5 | // Tool schemas
  6 | export const accountToolSchemas = {
  7 |   createAccount: {
  8 |     type: 'object',
  9 |     properties: {},
 10 |     required: []
 11 |   },
 12 |   rekeyAccount: {
 13 |     type: 'object',
 14 |     properties: {
 15 |       sourceAddress: { type: 'string', description: 'Sender address in standard Algorand format (58 characters)' },
 16 |       targetAddress: { type: 'string', description: 'Address to rekey the sender account to' }
 17 |     },
 18 |     required: ['sourceAddress', 'targetAddress']
 19 |   },
 20 |   mnemonicToMdk: {
 21 |     type: 'object',
 22 |     properties: {
 23 |       mnemonic: { type: 'string', description: 'The mnemonic phrase to convert to a master derivation key' }
 24 |     },
 25 |     required: ['mnemonic']
 26 |   },
 27 |   mdkToMnemonic: {
 28 |     type: 'object',
 29 |     properties: {
 30 |       mdk: { type: 'string', description: 'The master derivation key in hexadecimal format' }
 31 |     },
 32 |     required: ['mdk']
 33 |   },
 34 |   secretKeyToMnemonic: {
 35 |     type: 'object',
 36 |     properties: {
 37 |       secretKey: { type: 'string', description: 'The secret key in hexadecimal format' }
 38 |     },
 39 |     required: ['secretKey']
 40 |   },
 41 |   mnemonicToSecretKey: {
 42 |     type: 'object',
 43 |     properties: {
 44 |       mnemonic: { type: 'string', description: 'The mnemonic phrase to convert to a secret key' }
 45 |     },
 46 |     required: ['mnemonic']
 47 |   },
 48 |   seedFromMnemonic: {
 49 |     type: 'object',
 50 |     properties: {
 51 |       mnemonic: { type: 'string', description: 'The mnemonic phrase to generate a seed from' }
 52 |     },
 53 |     required: ['mnemonic']
 54 |   },
 55 |   mnemonicFromSeed: {
 56 |     type: 'object',
 57 |     properties: {
 58 |       seed: { type: 'string', description: 'The seed in hexadecimal format to generate a mnemonic from' }
 59 |     },
 60 |     required: ['seed']
 61 |   }
 62 | };
 63 | 
 64 | export class AccountManager {
 65 |   static readonly accountTools = [
 66 |     {
 67 |       name: 'create_account',
 68 |       description: 'Create a new Algorand account',
 69 |       inputSchema: accountToolSchemas.createAccount,
 70 |     },
 71 |     {
 72 |       name: 'rekey_account',
 73 |       description: 'Rekey an Algorand account to a new address',
 74 |       inputSchema: accountToolSchemas.rekeyAccount,
 75 |     },
 76 |     {
 77 |       name: 'mnemonic_to_mdk',
 78 |       description: 'Convert a mnemonic to a master derivation key',
 79 |       inputSchema: accountToolSchemas.mnemonicToMdk,
 80 |     },
 81 |     {
 82 |       name: 'mdk_to_mnemonic',
 83 |       description: 'Convert a master derivation key to a mnemonic',
 84 |       inputSchema: accountToolSchemas.mdkToMnemonic,
 85 |     },
 86 |     {
 87 |       name: 'secret_key_to_mnemonic',
 88 |       description: 'Convert a secret key to a mnemonic',
 89 |       inputSchema: accountToolSchemas.secretKeyToMnemonic,
 90 |     },
 91 |     {
 92 |       name: 'mnemonic_to_secret_key',
 93 |       description: 'Convert a mnemonic to a secret key',
 94 |       inputSchema: accountToolSchemas.mnemonicToSecretKey,
 95 |     },
 96 |     {
 97 |       name: 'seed_from_mnemonic',
 98 |       description: 'Generate a seed from a mnemonic',
 99 |       inputSchema: accountToolSchemas.seedFromMnemonic,
100 |     },
101 |     {
102 |       name: 'mnemonic_from_seed',
103 |       description: 'Generate a mnemonic from a seed',
104 |       inputSchema: accountToolSchemas.mnemonicFromSeed,
105 |     }
106 |   ];
107 | 
108 |   // Tool handlers
109 |   static async handleTool(name: string, args: Record<string, unknown>) {
110 |     try {
111 |       switch (name) {
112 |       case 'create_account':
113 |         return {
114 |           content: [{
115 |             type: 'text',
116 |             text: JSON.stringify(AccountManager.createAccount(), null, 2),
117 |           }],
118 |         };
119 | 
120 |       case 'rekey_account':
121 |         if (!args.sourceAddress || !args.targetAddress || 
122 |             typeof args.sourceAddress !== 'string' ||
123 |             typeof args.targetAddress !== 'string') {
124 |           throw new McpError(
125 |             ErrorCode.InvalidParams,
126 |             'Invalid rekey account parameters'
127 |           );
128 |         }
129 |         const rekeyTxn = await AccountManager.createRekeyTransaction(
130 |           args.sourceAddress,
131 |           args.targetAddress
132 |         );
133 |         return {
134 |           content: [{
135 |             type: 'text',
136 |             text: JSON.stringify(rekeyTxn, null, 2),
137 |           }],
138 |         };
139 | 
140 |       case 'mnemonic_to_mdk':
141 |         if (!args.mnemonic || typeof args.mnemonic !== 'string') {
142 |           throw new McpError(ErrorCode.InvalidParams, 'Mnemonic is required');
143 |         }
144 |         const mdk = AccountManager.mnemonicToMasterDerivationKey(args.mnemonic);
145 |         return {
146 |           content: [{
147 |             type: 'text',
148 |             text: JSON.stringify({ mdk: Buffer.from(mdk).toString('hex') }, null, 2),
149 |           }],
150 |         };
151 | 
152 |       case 'mdk_to_mnemonic':
153 |         if (!args.mdk || typeof args.mdk !== 'string') {
154 |           throw new McpError(ErrorCode.InvalidParams, 'Master derivation key is required');
155 |         }
156 |         const mdkMnemonic = AccountManager.masterDerivationKeyToMnemonic(Buffer.from(args.mdk, 'hex'));
157 |         return {
158 |           content: [{
159 |             type: 'text',
160 |             text: JSON.stringify({ mnemonic: mdkMnemonic }, null, 2),
161 |           }],
162 |         };
163 | 
164 |       case 'secret_key_to_mnemonic':
165 |         if (!args.secretKey || typeof args.secretKey !== 'string') {
166 |           throw new McpError(ErrorCode.InvalidParams, 'Secret key is required');
167 |         }
168 |         const skMnemonic = AccountManager.secretKeyToMnemonic(Buffer.from(args.secretKey, 'hex'));
169 |         return {
170 |           content: [{
171 |             type: 'text',
172 |             text: JSON.stringify({ mnemonic: skMnemonic }, null, 2),
173 |           }],
174 |         };
175 | 
176 |       case 'mnemonic_to_secret_key':
177 |         if (!args.mnemonic || typeof args.mnemonic !== 'string') {
178 |           throw new McpError(ErrorCode.InvalidParams, 'Mnemonic is required');
179 |         }
180 |         const sk = AccountManager.mnemonicToSecretKey(args.mnemonic);
181 |         return {
182 |           content: [{
183 |             type: 'text',
184 |             text: JSON.stringify({
185 |               secretKey: Buffer.from(sk.sk).toString('hex'),
186 |               address: sk.addr
187 |             }, null, 2),
188 |           }],
189 |         };
190 | 
191 |       case 'seed_from_mnemonic':
192 |         if (!args.mnemonic || typeof args.mnemonic !== 'string') {
193 |           throw new McpError(ErrorCode.InvalidParams, 'Mnemonic is required');
194 |         }
195 |         const seed = AccountManager.seedFromMnemonic(args.mnemonic);
196 |         return {
197 |           content: [{
198 |             type: 'text',
199 |             text: JSON.stringify({ seed: Buffer.from(seed).toString('hex') }, null, 2),
200 |           }],
201 |         };
202 | 
203 |       case 'mnemonic_from_seed':
204 |         if (!args.seed || typeof args.seed !== 'string') {
205 |           throw new McpError(ErrorCode.InvalidParams, 'Seed is required');
206 |         }
207 |         const seedMnemonic = AccountManager.mnemonicFromSeed(Buffer.from(args.seed, 'hex'));
208 |         return {
209 |           content: [{
210 |             type: 'text',
211 |             text: JSON.stringify({ mnemonic: seedMnemonic }, null, 2),
212 |           }],
213 |         };
214 | 
215 |       default:
216 |         console.error(`[MCP Error] Unknown tool requested: ${name}`);
217 |         throw new McpError(
218 |           ErrorCode.MethodNotFound,
219 |           `Unknown tool: ${name}`
220 |         );
221 |     }
222 |     } catch (error) {
223 |       if (error instanceof McpError) {
224 |         console.error(`[MCP Error] ${error.code}: ${error.message}`);
225 |         throw error;
226 |       }
227 |       console.error('[MCP Error] Unexpected error:', error);
228 |       throw new McpError(
229 |         ErrorCode.InternalError,
230 |         `Operation failed: ${error instanceof Error ? error.message : 'Unknown error'}`
231 |       );
232 |     }
233 |   }
234 | 
235 |   /**
236 |    * Creates a new account
237 |    * @returns Object containing the address and mnemonic
238 |    */
239 |   static createAccount(): { address: string; mnemonic: string } {
240 |     try {
241 |       const account = algosdk.generateAccount();
242 |       const mnemonic = algosdk.secretKeyToMnemonic(account.sk);
243 |       return {
244 |         address: account.addr,
245 |         mnemonic,
246 |       };
247 |     } catch (error) {
248 |       console.error('[MCP Error] Failed to create account:', error);
249 |       throw new McpError(
250 |         ErrorCode.InternalError,
251 |         `Failed to create account: ${error instanceof Error ? error.message : 'Unknown error'}`
252 |       );
253 |     }
254 |   }
255 | 
256 |   /**
257 |    * Rekeys an account to a new address
258 |    * @param fromAddress The address to rekey from
259 |    * @param toAddress The address to rekey to
260 |    * @returns The rekey transaction object
261 |    */
262 |   static async createRekeyTransaction(fromAddress: string, toAddress: string): Promise<algosdk.Transaction> {
263 |     try {
264 |       const params = await algodClient.getTransactionParams().do();
265 |       const suggestedParams = { ...params, flatFee: true, fee: params.minFee };
266 | 
267 |       return algosdk.makePaymentTxnWithSuggestedParamsFromObject({
268 |         from: fromAddress,
269 |         to: fromAddress,
270 |         amount: 0,
271 |         rekeyTo: toAddress,
272 |         suggestedParams,
273 |       });
274 |     } catch (error) {
275 |       console.error('[MCP Error] Failed to create rekey transaction:', error);
276 |       throw new McpError(
277 |         ErrorCode.InternalError,
278 |         `Failed to create rekey transaction: ${error instanceof Error ? error.message : 'Unknown error'}`
279 |       );
280 |     }
281 |   }
282 | 
283 |   /**
284 |    * Converts a mnemonic to a master derivation key
285 |    * @param mnemonic The mnemonic to convert
286 |    * @returns The master derivation key
287 |    */
288 |   static mnemonicToMasterDerivationKey(mnemonic: string): Uint8Array {
289 |     try {
290 |       return algosdk.mnemonicToMasterDerivationKey(mnemonic);
291 |     } catch (error) {
292 |       console.error('[MCP Error] Failed to convert mnemonic to MDK:', error);
293 |       throw new McpError(
294 |         ErrorCode.InvalidParams,
295 |         `Invalid mnemonic provided: ${error instanceof Error ? error.message : 'Unknown error'}`
296 |       );
297 |     }
298 |   }
299 | 
300 |   /**
301 |    * Converts a master derivation key to a mnemonic
302 |    * @param mdk The master derivation key to convert
303 |    * @returns The mnemonic
304 |    */
305 |   static masterDerivationKeyToMnemonic(mdk: Uint8Array): string {
306 |     try {
307 |       return algosdk.masterDerivationKeyToMnemonic(mdk);
308 |     } catch (error) {
309 |       console.error('[MCP Error] Failed to convert MDK to mnemonic:', error);
310 |       throw new McpError(
311 |         ErrorCode.InvalidParams,
312 |         `Invalid master derivation key provided: ${error instanceof Error ? error.message : 'Unknown error'}`
313 |       );
314 |     }
315 |   }
316 | 
317 |   /**
318 |    * Converts a secret key to a mnemonic
319 |    * @param secretKey The secret key to convert
320 |    * @returns The mnemonic
321 |    */
322 |   static secretKeyToMnemonic(secretKey: Uint8Array): string {
323 |     try {
324 |       return algosdk.secretKeyToMnemonic(secretKey);
325 |     } catch (error) {
326 |       console.error('[MCP Error] Failed to convert secret key to mnemonic:', error);
327 |       throw new McpError(
328 |         ErrorCode.InvalidParams,
329 |         `Invalid secret key provided: ${error instanceof Error ? error.message : 'Unknown error'}`
330 |       );
331 |     }
332 |   }
333 | 
334 |   /**
335 |    * Converts a mnemonic to a secret key
336 |    * @param mnemonic The mnemonic to convert
337 |    * @returns The secret key
338 |    */
339 |   static mnemonicToSecretKey(mnemonic: string): { sk: Uint8Array; addr: string } {
340 |     try {
341 |       return algosdk.mnemonicToSecretKey(mnemonic);
342 |     } catch (error) {
343 |       console.error('[MCP Error] Failed to convert mnemonic to secret key:', error);
344 |       throw new McpError(
345 |         ErrorCode.InvalidParams,
346 |         `Invalid mnemonic provided: ${error instanceof Error ? error.message : 'Unknown error'}`
347 |       );
348 |     }
349 |   }
350 | 
351 |   /**
352 |    * Generates a seed from a mnemonic
353 |    * @param mnemonic The mnemonic to generate the seed from
354 |    * @returns The seed
355 |    */
356 |   static seedFromMnemonic(mnemonic: string): Uint8Array {
357 |     try {
358 |       return algosdk.seedFromMnemonic(mnemonic);
359 |     } catch (error) {
360 |       console.error('[MCP Error] Failed to generate seed from mnemonic:', error);
361 |       throw new McpError(
362 |         ErrorCode.InvalidParams,
363 |         `Invalid mnemonic provided: ${error instanceof Error ? error.message : 'Unknown error'}`
364 |       );
365 |     }
366 |   }
367 | 
368 |   /**
369 |    * Generates a mnemonic from a seed
370 |    * @param seed The seed to generate the mnemonic from
371 |    * @returns The mnemonic
372 |    */
373 |   static mnemonicFromSeed(seed: Uint8Array): string {
374 |     try {
375 |       return algosdk.mnemonicFromSeed(seed);
376 |     } catch (error) {
377 |       console.error('[MCP Error] Failed to generate mnemonic from seed:', error);
378 |       throw new McpError(
379 |         ErrorCode.InvalidParams,
380 |         `Invalid seed provided: ${error instanceof Error ? error.message : 'Unknown error'}`
381 |       );
382 |     }
383 |   }
384 | }
385 | 
```

--------------------------------------------------------------------------------
/packages/server/src/resources/knowledge/taxonomy/SDKs:javascript:interfaces:TransactionParams.md:
--------------------------------------------------------------------------------

```markdown
  1 | [algosdk](../README.md) / [Exports](../modules.md) / TransactionParams
  2 | 
  3 | # Interface: TransactionParams
  4 | 
  5 | A full list of all available transaction parameters
  6 | 
  7 | The full documentation is available at:
  8 | https://developer.algorand.org/docs/reference/transactions/#common-fields-header-and-type
  9 | 
 10 | ## Table of contents
 11 | 
 12 | ### Properties
 13 | 
 14 | - [amount](TransactionParams.md#amount)
 15 | - [appAccounts](TransactionParams.md#appaccounts)
 16 | - [appApprovalProgram](TransactionParams.md#appapprovalprogram)
 17 | - [appArgs](TransactionParams.md#appargs)
 18 | - [appClearProgram](TransactionParams.md#appclearprogram)
 19 | - [appForeignApps](TransactionParams.md#appforeignapps)
 20 | - [appForeignAssets](TransactionParams.md#appforeignassets)
 21 | - [appGlobalByteSlices](TransactionParams.md#appglobalbyteslices)
 22 | - [appGlobalInts](TransactionParams.md#appglobalints)
 23 | - [appIndex](TransactionParams.md#appindex)
 24 | - [appLocalByteSlices](TransactionParams.md#applocalbyteslices)
 25 | - [appLocalInts](TransactionParams.md#applocalints)
 26 | - [appOnComplete](TransactionParams.md#apponcomplete)
 27 | - [assetClawback](TransactionParams.md#assetclawback)
 28 | - [assetDecimals](TransactionParams.md#assetdecimals)
 29 | - [assetDefaultFrozen](TransactionParams.md#assetdefaultfrozen)
 30 | - [assetFreeze](TransactionParams.md#assetfreeze)
 31 | - [assetIndex](TransactionParams.md#assetindex)
 32 | - [assetManager](TransactionParams.md#assetmanager)
 33 | - [assetMetadataHash](TransactionParams.md#assetmetadatahash)
 34 | - [assetName](TransactionParams.md#assetname)
 35 | - [assetReserve](TransactionParams.md#assetreserve)
 36 | - [assetRevocationTarget](TransactionParams.md#assetrevocationtarget)
 37 | - [assetTotal](TransactionParams.md#assettotal)
 38 | - [assetURL](TransactionParams.md#asseturl)
 39 | - [assetUnitName](TransactionParams.md#assetunitname)
 40 | - [boxes](TransactionParams.md#boxes)
 41 | - [closeRemainderTo](TransactionParams.md#closeremainderto)
 42 | - [extraPages](TransactionParams.md#extrapages)
 43 | - [fee](TransactionParams.md#fee)
 44 | - [firstRound](TransactionParams.md#firstround)
 45 | - [flatFee](TransactionParams.md#flatfee)
 46 | - [freezeAccount](TransactionParams.md#freezeaccount)
 47 | - [freezeState](TransactionParams.md#freezestate)
 48 | - [from](TransactionParams.md#from)
 49 | - [genesisHash](TransactionParams.md#genesishash)
 50 | - [genesisID](TransactionParams.md#genesisid)
 51 | - [lastRound](TransactionParams.md#lastround)
 52 | - [lease](TransactionParams.md#lease)
 53 | - [nonParticipation](TransactionParams.md#nonparticipation)
 54 | - [note](TransactionParams.md#note)
 55 | - [reKeyTo](TransactionParams.md#rekeyto)
 56 | - [selectionKey](TransactionParams.md#selectionkey)
 57 | - [stateProof](TransactionParams.md#stateproof)
 58 | - [stateProofKey](TransactionParams.md#stateproofkey)
 59 | - [stateProofMessage](TransactionParams.md#stateproofmessage)
 60 | - [stateProofType](TransactionParams.md#stateprooftype)
 61 | - [suggestedParams](TransactionParams.md#suggestedparams)
 62 | - [to](TransactionParams.md#to)
 63 | - [type](TransactionParams.md#type)
 64 | - [voteFirst](TransactionParams.md#votefirst)
 65 | - [voteKey](TransactionParams.md#votekey)
 66 | - [voteKeyDilution](TransactionParams.md#votekeydilution)
 67 | - [voteLast](TransactionParams.md#votelast)
 68 | 
 69 | ## Properties
 70 | 
 71 | ### amount
 72 | 
 73 | • **amount**: `number` \| `bigint`
 74 | 
 75 | Integer amount to send
 76 | 
 77 | #### Defined in
 78 | 
 79 | types/transactions/base.ts:180
 80 | 
 81 | ___
 82 | 
 83 | ### appAccounts
 84 | 
 85 | • `Optional` **appAccounts**: `string`[]
 86 | 
 87 | Array of Address strings, any additional accounts to supply to the application
 88 | 
 89 | #### Defined in
 90 | 
 91 | types/transactions/base.ts:370
 92 | 
 93 | ___
 94 | 
 95 | ### appApprovalProgram
 96 | 
 97 | • **appApprovalProgram**: `Uint8Array`
 98 | 
 99 | The compiled TEAL that approves a transaction
100 | 
101 | #### Defined in
102 | 
103 | types/transactions/base.ts:355
104 | 
105 | ___
106 | 
107 | ### appArgs
108 | 
109 | • `Optional` **appArgs**: `Uint8Array`[]
110 | 
111 | Array of Uint8Array, any additional arguments to the application
112 | 
113 | #### Defined in
114 | 
115 | types/transactions/base.ts:365
116 | 
117 | ___
118 | 
119 | ### appClearProgram
120 | 
121 | • **appClearProgram**: `Uint8Array`
122 | 
123 | The compiled TEAL program that runs when clearing state
124 | 
125 | #### Defined in
126 | 
127 | types/transactions/base.ts:360
128 | 
129 | ___
130 | 
131 | ### appForeignApps
132 | 
133 | • `Optional` **appForeignApps**: `number`[]
134 | 
135 | Array of int, any other apps used by the application, identified by index
136 | 
137 | #### Defined in
138 | 
139 | types/transactions/base.ts:375
140 | 
141 | ___
142 | 
143 | ### appForeignAssets
144 | 
145 | • `Optional` **appForeignAssets**: `number`[]
146 | 
147 | Array of int, any assets used by the application, identified by index
148 | 
149 | #### Defined in
150 | 
151 | types/transactions/base.ts:380
152 | 
153 | ___
154 | 
155 | ### appGlobalByteSlices
156 | 
157 | • **appGlobalByteSlices**: `number`
158 | 
159 | Restricts number of byte slices in global state
160 | 
161 | #### Defined in
162 | 
163 | types/transactions/base.ts:350
164 | 
165 | ___
166 | 
167 | ### appGlobalInts
168 | 
169 | • **appGlobalInts**: `number`
170 | 
171 | Restricts number of ints in global state
172 | 
173 | #### Defined in
174 | 
175 | types/transactions/base.ts:345
176 | 
177 | ___
178 | 
179 | ### appIndex
180 | 
181 | • **appIndex**: `number`
182 | 
183 | A unique application index
184 | 
185 | #### Defined in
186 | 
187 | types/transactions/base.ts:325
188 | 
189 | ___
190 | 
191 | ### appLocalByteSlices
192 | 
193 | • **appLocalByteSlices**: `number`
194 | 
195 | Restricts number of byte slices in per-user local state
196 | 
197 | #### Defined in
198 | 
199 | types/transactions/base.ts:340
200 | 
201 | ___
202 | 
203 | ### appLocalInts
204 | 
205 | • **appLocalInts**: `number`
206 | 
207 | Restricts number of ints in per-user local state
208 | 
209 | #### Defined in
210 | 
211 | types/transactions/base.ts:335
212 | 
213 | ___
214 | 
215 | ### appOnComplete
216 | 
217 | • **appOnComplete**: [`OnApplicationComplete`](../enums/OnApplicationComplete.md)
218 | 
219 | What application should do once the program has been run
220 | 
221 | #### Defined in
222 | 
223 | types/transactions/base.ts:330
224 | 
225 | ___
226 | 
227 | ### assetClawback
228 | 
229 | • `Optional` **assetClawback**: `string`
230 | 
231 | String representation of Algorand address with power to revoke asset holdings
232 | 
233 | #### Defined in
234 | 
235 | types/transactions/base.ts:285
236 | 
237 | ___
238 | 
239 | ### assetDecimals
240 | 
241 | • **assetDecimals**: `number`
242 | 
243 | Integer number of decimals for asset unit calcuation
244 | 
245 | #### Defined in
246 | 
247 | types/transactions/base.ts:260
248 | 
249 | ___
250 | 
251 | ### assetDefaultFrozen
252 | 
253 | • **assetDefaultFrozen**: `boolean`
254 | 
255 | Whether asset accounts should default to being frozen
256 | 
257 | #### Defined in
258 | 
259 | types/transactions/base.ts:265
260 | 
261 | ___
262 | 
263 | ### assetFreeze
264 | 
265 | • `Optional` **assetFreeze**: `string`
266 | 
267 | String representation of Algorand address with power to freeze/unfreeze asset holdings
268 | 
269 | #### Defined in
270 | 
271 | types/transactions/base.ts:280
272 | 
273 | ___
274 | 
275 | ### assetIndex
276 | 
277 | • **assetIndex**: `number`
278 | 
279 | Asset index uniquely specifying the asset
280 | 
281 | #### Defined in
282 | 
283 | types/transactions/base.ts:250
284 | 
285 | ___
286 | 
287 | ### assetManager
288 | 
289 | • `Optional` **assetManager**: `string`
290 | 
291 | String representation of Algorand address in charge of reserve, freeze, clawback, destruction, etc.
292 | 
293 | #### Defined in
294 | 
295 | types/transactions/base.ts:270
296 | 
297 | ___
298 | 
299 | ### assetMetadataHash
300 | 
301 | • `Optional` **assetMetadataHash**: `string` \| `Uint8Array`
302 | 
303 | Uint8Array or UTF-8 string representation of a hash commitment with respect to the asset. Must be exactly 32 bytes long.
304 | 
305 | #### Defined in
306 | 
307 | types/transactions/base.ts:304
308 | 
309 | ___
310 | 
311 | ### assetName
312 | 
313 | • `Optional` **assetName**: `string`
314 | 
315 | Name for this asset
316 | 
317 | #### Defined in
318 | 
319 | types/transactions/base.ts:294
320 | 
321 | ___
322 | 
323 | ### assetReserve
324 | 
325 | • `Optional` **assetReserve**: `string`
326 | 
327 | String representation of Algorand address representing asset reserve
328 | 
329 | #### Defined in
330 | 
331 | types/transactions/base.ts:275
332 | 
333 | ___
334 | 
335 | ### assetRevocationTarget
336 | 
337 | • `Optional` **assetRevocationTarget**: `string`
338 | 
339 | String representation of Algorand address – if provided, and if "from" is
340 | the asset's revocation manager, then deduct from "revocationTarget" rather than "from"
341 | 
342 | #### Defined in
343 | 
344 | types/transactions/base.ts:320
345 | 
346 | ___
347 | 
348 | ### assetTotal
349 | 
350 | • **assetTotal**: `number` \| `bigint`
351 | 
352 | Total supply of the asset
353 | 
354 | #### Defined in
355 | 
356 | types/transactions/base.ts:255
357 | 
358 | ___
359 | 
360 | ### assetURL
361 | 
362 | • `Optional` **assetURL**: `string`
363 | 
364 | URL relating to this asset
365 | 
366 | #### Defined in
367 | 
368 | types/transactions/base.ts:299
369 | 
370 | ___
371 | 
372 | ### assetUnitName
373 | 
374 | • `Optional` **assetUnitName**: `string`
375 | 
376 | Unit name for this asset
377 | 
378 | #### Defined in
379 | 
380 | types/transactions/base.ts:290
381 | 
382 | ___
383 | 
384 | ### boxes
385 | 
386 | • `Optional` **boxes**: [`BoxReference`](BoxReference.md)[]
387 | 
388 | A grouping of the app ID and name of the box in an Uint8Array
389 | 
390 | #### Defined in
391 | 
392 | types/transactions/base.ts:419
393 | 
394 | ___
395 | 
396 | ### closeRemainderTo
397 | 
398 | • `Optional` **closeRemainderTo**: `string`
399 | 
400 | Close out remaining account balance to this account
401 | 
402 | #### Defined in
403 | 
404 | types/transactions/base.ts:215
405 | 
406 | ___
407 | 
408 | ### extraPages
409 | 
410 | • `Optional` **extraPages**: `number`
411 | 
412 | Int representing extra pages of memory to rent during an application create transaction.
413 | 
414 | #### Defined in
415 | 
416 | types/transactions/base.ts:414
417 | 
418 | ___
419 | 
420 | ### fee
421 | 
422 | • **fee**: `number`
423 | 
424 | Integer fee per byte, in microAlgos. For a flat fee, set flatFee to true
425 | 
426 | #### Defined in
427 | 
428 | types/transactions/base.ts:175
429 | 
430 | ___
431 | 
432 | ### firstRound
433 | 
434 | • **firstRound**: `number`
435 | 
436 | Integer first protocol round on which this txn is valid
437 | 
438 | #### Defined in
439 | 
440 | types/transactions/base.ts:185
441 | 
442 | ___
443 | 
444 | ### flatFee
445 | 
446 | • `Optional` **flatFee**: `boolean`
447 | 
448 | Set this to true to specify fee as microalgos-per-txn.
449 | 
450 | If the final calculated fee is lower than the protocol minimum fee, the fee will be increased to match the minimum
451 | 
452 | #### Defined in
453 | 
454 | types/transactions/base.ts:392
455 | 
456 | ___
457 | 
458 | ### freezeAccount
459 | 
460 | • **freezeAccount**: `string`
461 | 
462 | String representation of Algorand address being frozen or unfrozen
463 | 
464 | #### Defined in
465 | 
466 | types/transactions/base.ts:309
467 | 
468 | ___
469 | 
470 | ### freezeState
471 | 
472 | • **freezeState**: `boolean`
473 | 
474 | true if freezeTarget should be frozen, false if freezeTarget should be allowed to transact
475 | 
476 | #### Defined in
477 | 
478 | types/transactions/base.ts:314
479 | 
480 | ___
481 | 
482 | ### from
483 | 
484 | • **from**: `string`
485 | 
486 | String representation of Algorand address of sender
487 | 
488 | #### Defined in
489 | 
490 | types/transactions/base.ts:165
491 | 
492 | ___
493 | 
494 | ### genesisHash
495 | 
496 | • **genesisHash**: `string`
497 | 
498 | Specifies hash genesis block of network in use
499 | 
500 | #### Defined in
501 | 
502 | types/transactions/base.ts:205
503 | 
504 | ___
505 | 
506 | ### genesisID
507 | 
508 | • **genesisID**: `string`
509 | 
510 | Specifies genesis ID of network in use
511 | 
512 | #### Defined in
513 | 
514 | types/transactions/base.ts:200
515 | 
516 | ___
517 | 
518 | ### lastRound
519 | 
520 | • **lastRound**: `number`
521 | 
522 | Integer last protocol round on which this txn is valid
523 | 
524 | #### Defined in
525 | 
526 | types/transactions/base.ts:190
527 | 
528 | ___
529 | 
530 | ### lease
531 | 
532 | • `Optional` **lease**: `Uint8Array`
533 | 
534 | Lease a transaction. The sender cannot send another txn with that same lease until the last round of original txn has passed
535 | 
536 | #### Defined in
537 | 
538 | types/transactions/base.ts:210
539 | 
540 | ___
541 | 
542 | ### nonParticipation
543 | 
544 | • `Optional` **nonParticipation**: `boolean`
545 | 
546 | Set this value to true to mark this account as nonparticipating.
547 | 
548 | All new Algorand accounts are participating by default. This means they earn rewards.
549 | 
550 | #### Defined in
551 | 
552 | types/transactions/base.ts:409
553 | 
554 | ___
555 | 
556 | ### note
557 | 
558 | • `Optional` **note**: `Uint8Array`
559 | 
560 | Arbitrary data for sender to store
561 | 
562 | #### Defined in
563 | 
564 | types/transactions/base.ts:195
565 | 
566 | ___
567 | 
568 | ### reKeyTo
569 | 
570 | • `Optional` **reKeyTo**: `string`
571 | 
572 | String representation of the Algorand address that will be used to authorize all future transactions
573 | 
574 | #### Defined in
575 | 
576 | types/transactions/base.ts:402
577 | 
578 | ___
579 | 
580 | ### selectionKey
581 | 
582 | • **selectionKey**: `string` \| `Uint8Array`
583 | 
584 | Selection key bytes. For key deregistration, leave undefined
585 | 
586 | #### Defined in
587 | 
588 | types/transactions/base.ts:225
589 | 
590 | ___
591 | 
592 | ### stateProof
593 | 
594 | • `Optional` **stateProof**: `Uint8Array`
595 | 
596 | Byte array containing the state proof.
597 | 
598 | #### Defined in
599 | 
600 | types/transactions/base.ts:429
601 | 
602 | ___
603 | 
604 | ### stateProofKey
605 | 
606 | • **stateProofKey**: `string` \| `Uint8Array`
607 | 
608 | State proof key bytes. For key deregistration, leave undefined
609 | 
610 | #### Defined in
611 | 
612 | types/transactions/base.ts:230
613 | 
614 | ___
615 | 
616 | ### stateProofMessage
617 | 
618 | • `Optional` **stateProofMessage**: `Uint8Array`
619 | 
620 | Byte array containing the state proof message.
621 | 
622 | #### Defined in
623 | 
624 | types/transactions/base.ts:434
625 | 
626 | ___
627 | 
628 | ### stateProofType
629 | 
630 | • `Optional` **stateProofType**: `number` \| `bigint`
631 | 
632 | #### Defined in
633 | 
634 | types/transactions/base.ts:424
635 | 
636 | ___
637 | 
638 | ### suggestedParams
639 | 
640 | • **suggestedParams**: [`SuggestedParams`](SuggestedParams.md)
641 | 
642 | A dict holding common-to-all-txns arguments
643 | 
644 | #### Defined in
645 | 
646 | types/transactions/base.ts:397
647 | 
648 | ___
649 | 
650 | ### to
651 | 
652 | • **to**: `string`
653 | 
654 | String representation of Algorand address of recipient
655 | 
656 | #### Defined in
657 | 
658 | types/transactions/base.ts:170
659 | 
660 | ___
661 | 
662 | ### type
663 | 
664 | • `Optional` **type**: [`TransactionType`](../enums/TransactionType.md)
665 | 
666 | Transaction type
667 | 
668 | #### Defined in
669 | 
670 | types/transactions/base.ts:385
671 | 
672 | ___
673 | 
674 | ### voteFirst
675 | 
676 | • **voteFirst**: `number`
677 | 
678 | First round on which voteKey is valid
679 | 
680 | #### Defined in
681 | 
682 | types/transactions/base.ts:235
683 | 
684 | ___
685 | 
686 | ### voteKey
687 | 
688 | • **voteKey**: `string` \| `Uint8Array`
689 | 
690 | Voting key bytes. For key deregistration, leave undefined
691 | 
692 | #### Defined in
693 | 
694 | types/transactions/base.ts:220
695 | 
696 | ___
697 | 
698 | ### voteKeyDilution
699 | 
700 | • **voteKeyDilution**: `number`
701 | 
702 | The dilution fo the 2-level participation key
703 | 
704 | #### Defined in
705 | 
706 | types/transactions/base.ts:245
707 | 
708 | ___
709 | 
710 | ### voteLast
711 | 
712 | • **voteLast**: `number`
713 | 
714 | Last round on which voteKey is valid
715 | 
716 | #### Defined in
717 | 
718 | types/transactions/base.ts:240
719 | 
```
Page 38/93FirstPrevNextLast