This is page 90 of 93. Use http://codebase.md/goplausible/algorand-mcp?format=md&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/API specs/ultrade_api.json:
--------------------------------------------------------------------------------

```json
   1 | {
   2 |     "openapi": "3.0.0",
   3 |     "paths": {
   4 |         "/wallet/signin/message": {
   5 |             "post": {
   6 |                 "operationId": "WalletController_createSigninMessage",
   7 |                 "summary": "Generate message from the sign in data",
   8 |                 "description": "Returns the message that should be signed by user wallet\n#### Technology types:\n* `ALGORAND`\n* `EVM`\n* `SOLANA`\n",
   9 |                 "parameters": [],
  10 |                 "requestBody": {
  11 |                     "required": true,
  12 |                     "content": {
  13 |                         "application/json": {
  14 |                             "schema": {
  15 |                                 "$ref": "#/components/schemas/PostSignInMessageDto"
  16 |                             }
  17 |                         }
  18 |                     }
  19 |                 },
  20 |                 "responses": {
  21 |                     "201": {
  22 |                         "description": "Generated message in hex",
  23 |                         "content": {
  24 |                             "application/json": {
  25 |                                 "schema": {
  26 |                                     "example": {
  27 |                                         "message": "4279207369676e696e672074686973206d65737361676520796f7520617265206c6f6767696e6720696e746f20796f75722074726164696e67206163636f756e740a"
  28 |                                     }
  29 |                                 }
  30 |                             }
  31 |                         }
  32 |                     },
  33 |                     "400": {
  34 |                         "description": "Bad request"
  35 |                     }
  36 |                 },
  37 |                 "tags": [
  38 |                     "Wallet"
  39 |                 ]
  40 |             }
  41 |         },
  42 |         "/wallet/signin": {
  43 |             "put": {
  44 |                 "operationId": "WalletController_signin",
  45 |                 "summary": "Sign in to trading account",
  46 |                 "description": "Returns the session token that is used in the X-Wallet-Token header\n### Instructions for Creating an SignIn Message\n\nTo create a message, follow these steps:\n\n1. *Create JSON string from data or use any custom string*\n2. *Convert string to bytes*\n3. *Convert bytes to hex string*\n\nThis final conversion ensures the message is in a hexadecimal string format, suitable for transmission or storage.\n\n#### Example of Message Creation\n```\ntypescript\nconst signingMessage = \"By signing this message you are logging into your trading account\";\nconst message = Buffer.from(Buffer.from(signingMessage, 'utf-8')).toString(\"hex\");\n```\n\n\n#### Technology types:\n* `ALGORAND`\n* `EVM`\n* `SOLANA`\n\n",
  47 |                 "parameters": [],
  48 |                 "requestBody": {
  49 |                     "required": true,
  50 |                     "content": {
  51 |                         "application/json": {
  52 |                             "schema": {
  53 |                                 "$ref": "#/components/schemas/PostSignInDto"
  54 |                             }
  55 |                         }
  56 |                     }
  57 |                 },
  58 |                 "responses": {
  59 |                     "201": {
  60 |                         "description": "Login session token",
  61 |                         "content": {
  62 |                             "application/json": {
  63 |                                 "schema": {
  64 |                                     "example": "40a04d7b-86f2-4e9a-a4aa-e12efe4da949"
  65 |                                 }
  66 |                             }
  67 |                         }
  68 |                     },
  69 |                     "400": {
  70 |                         "description": "Bad request"
  71 |                     },
  72 |                     "403": {
  73 |                         "description": "Forbidden"
  74 |                     }
  75 |                 },
  76 |                 "tags": [
  77 |                     "Wallet"
  78 |                 ]
  79 |             }
  80 |         },
  81 |         "/wallet/keys": {
  82 |             "get": {
  83 |                 "operationId": "WalletController_",
  84 |                 "summary": "Get trading keys",
  85 |                 "description": "\nFetch the list of trading keys related to the login wallet address\n\nThe `orders` field in the response indicates the number of orders created by the trading key\n\n\n#### Trading key types:\n* `User`\n* `API`\n\n",
  86 |                 "parameters": [
  87 |                     {
  88 |                         "name": "x-wallet-address",
  89 |                         "in": "header",
  90 |                         "description": "Login wallet address",
  91 |                         "required": true,
  92 |                         "schema": {
  93 |                             "type": "string"
  94 |                         }
  95 |                     },
  96 |                     {
  97 |                         "name": "x-wallet-token",
  98 |                         "in": "header",
  99 |                         "description": "Login session token",
 100 |                         "required": true,
 101 |                         "schema": {
 102 |                             "type": "string"
 103 |                         }
 104 |                     }
 105 |                 ],
 106 |                 "responses": {
 107 |                     "200": {
 108 |                         "description": "Trading keys retrieved successfully",
 109 |                         "content": {
 110 |                             "application/json": {
 111 |                                 "schema": {
 112 |                                     "example": [
 113 |                                         {
 114 |                                             "address": "YPORHVPTRCT5AMO647P5LCYVXCV5TIW6YVYL36IQLX7BGLMFXKHV2SZNPE",
 115 |                                             "device": "Firefox 125.0 Gecko Linux, desktop",
 116 |                                             "type": "User",
 117 |                                             "createdAt": "2024-06-26T08:34:01.047Z",
 118 |                                             "expiredAt": "2024-07-26T08:33:58.000Z",
 119 |                                             "orders": 0
 120 |                                         }
 121 |                                     ]
 122 |                                 }
 123 |                             }
 124 |                         }
 125 |                     },
 126 |                     "400": {
 127 |                         "description": "Bad request"
 128 |                     },
 129 |                     "403": {
 130 |                         "description": "Forbidden"
 131 |                     }
 132 |                 },
 133 |                 "tags": [
 134 |                     "Wallet"
 135 |                 ]
 136 |             }
 137 |         },
 138 |         "/wallet/key": {
 139 |             "post": {
 140 |                 "operationId": "WalletController_",
 141 |                 "summary": "Add trading key",
 142 |                 "description": "Returns the address of trading key as part of the result that is used in the X-Trading-Key header\n### Instructions for Creating a TK Message\n\nTo create a message from multiple arguments, follow these steps:\n\n**Concatenate all arguments in their bytes representation in a specific order.** Each argument must have a specific length.\n\n#### Example of Message Creation\n\n```typescript\nconst tkBytes = concatBytes([\n  tradingKeyAddress,     // normalized algorand account address 32 bytes\n  liginAccountAddress,   // normalized wallet address 32 bytes\n  loginChainId,          // chain id (Wormhole chain id) 8 bytes\n  expirationTime,        // expiration time 8 bytes\n]);\n\nconst bs64TKBytes = new ByteArray(tkBytes.toBase64());\n```\n\n### Normalizing Addresses\n\nThe normalized address is a 32-byte hex string converted from the original address. This normalization ensures that addresses from different chains are of a consistent length for codex management and WH message interaction.\n\n#### Examples of Normalized Addresses:\n\n- **EVM Address**:\n  - Original: `0xC8b9Cb9D80e8d35486A2bf9e9F8DF793c2d077a0`\n  - Normalized: `00000000000000000000000c8b9cb9d80e8d35486a2bf9e9f8df793c2d077a0`\n\n- **Algorand Address**:\n  - Original: `EN24BSP6WLG2DI7WOZ45P4A2PHI5RKCGA4ZE4W3C6E3GCWBPOUU4ZCX4D4`\n    ```typescript\n    algosdk.decodeAddress(address).publicKey\n    ```\n  - Normalized: `2375c0c9feb2cda1a3f67679d7f01a79d1d8a84607324e5b62f13661582f7529`\n\n- **Solana Address**:\n  - Original: `D6qWNnD6js6Cwbgrq7RBxiQP6uLb5WhSdHSerP7S3hqW`\n    ```typescript\n    bs58.decode(address)\n    ```\n  - Normalized: `b3cafe5d05e60d7452fab7b6300f8b0f16842fa76b1168765bcbd9bbc652003d`\n\n- **Algorand Token ID**:\n  - Original: `10458941`\n  - Normalized: `0000000000000000000000000000000000000000000000000000000010458941`\n\n**Important Note:** The `tkBytes` must be converted to a base64 string and then the base64 string must be converted back to bytes.\n\n#### Final Step: Convert Final Bytes Result into a Hex String\n\n```typescript\nconst hexTKBytes = Buffer.from(bs64TKBytes).toString('hex');\n```\n\nThis final conversion ensures the message is in a hexadecimal string format, suitable for transmission or storage.\n\n#### Trading key types:\n* `User`\n* `API`\n",
 143 |                 "parameters": [
 144 |                     {
 145 |                         "name": "x-wallet-address",
 146 |                         "in": "header",
 147 |                         "description": "Login wallet address",
 148 |                         "required": true,
 149 |                         "schema": {
 150 |                             "type": "string"
 151 |                         }
 152 |                     },
 153 |                     {
 154 |                         "name": "x-wallet-token",
 155 |                         "in": "header",
 156 |                         "description": "Login session token",
 157 |                         "required": true,
 158 |                         "schema": {
 159 |                             "type": "string"
 160 |                         }
 161 |                     }
 162 |                 ],
 163 |                 "responses": {
 164 |                     "201": {
 165 |                         "description": "Trading key added successfully",
 166 |                         "content": {
 167 |                             "application/json": {
 168 |                                 "schema": {
 169 |                                     "example": {
 170 |                                         "address": "YPORHVPTRCT5AMO647P5LCYVXCV5TIW6YVYL36IQLX7BGLMFXKHV2SZNPE",
 171 |                                         "type": "User",
 172 |                                         "device": "Firefox 125.0 Gecko Linux, desktop",
 173 |                                         "createdAt": "2024-06-26T08:34:01.047Z",
 174 |                                         "expiredAt": "2024-07-26T08:33:57.662Z",
 175 |                                         "orders": 0
 176 |                                     }
 177 |                                 }
 178 |                             }
 179 |                         }
 180 |                     },
 181 |                     "400": {
 182 |                         "description": "Bad request"
 183 |                     },
 184 |                     "403": {
 185 |                         "description": "Forbidden"
 186 |                     }
 187 |                 },
 188 |                 "tags": [
 189 |                     "Wallet"
 190 |                 ]
 191 |             },
 192 |             "delete": {
 193 |                 "operationId": "WalletController_",
 194 |                 "summary": "Revoke trading key",
 195 |                 "description": "\n### Instructions for Creating a TK Message\n\nTo create a message from multiple arguments, follow these steps:\n\n**Concatenate all arguments in their bytes representation in a specific order.** Each argument must have a specific length.\n\n#### Example of Message Creation\n\n```typescript\nconst tkBytes = concatBytes([\n  tradingKeyAddress,     // normalized algorand account address 32 bytes\n  liginAccountAddress,   // normalized wallet address 32 bytes\n  loginChainId,          // chain id (Wormhole chain id) 8 bytes\n  expirationTime,        // expiration time 8 bytes\n]);\n\nconst bs64TKBytes = new ByteArray(tkBytes.toBase64());\n```\n\n### Normalizing Addresses\n\nThe normalized address is a 32-byte hex string converted from the original address. This normalization ensures that addresses from different chains are of a consistent length for codex management and WH message interaction.\n\n#### Examples of Normalized Addresses:\n\n- **EVM Address**:\n  - Original: `0xC8b9Cb9D80e8d35486A2bf9e9F8DF793c2d077a0`\n  - Normalized: `00000000000000000000000c8b9cb9d80e8d35486a2bf9e9f8df793c2d077a0`\n\n- **Algorand Address**:\n  - Original: `EN24BSP6WLG2DI7WOZ45P4A2PHI5RKCGA4ZE4W3C6E3GCWBPOUU4ZCX4D4`\n    ```typescript\n    algosdk.decodeAddress(address).publicKey\n    ```\n  - Normalized: `2375c0c9feb2cda1a3f67679d7f01a79d1d8a84607324e5b62f13661582f7529`\n\n- **Solana Address**:\n  - Original: `D6qWNnD6js6Cwbgrq7RBxiQP6uLb5WhSdHSerP7S3hqW`\n    ```typescript\n    bs58.decode(address)\n    ```\n  - Normalized: `b3cafe5d05e60d7452fab7b6300f8b0f16842fa76b1168765bcbd9bbc652003d`\n\n- **Algorand Token ID**:\n  - Original: `10458941`\n  - Normalized: `0000000000000000000000000000000000000000000000000000000010458941`\n\n**Important Note:** The `tkBytes` must be converted to a base64 string and then the base64 string must be converted back to bytes.\n\n#### Final Step: Convert Final Bytes Result into a Hex String\n\n```typescript\nconst hexTKBytes = Buffer.from(bs64TKBytes).toString('hex');\n```\n\nThis final conversion ensures the message is in a hexadecimal string format, suitable for transmission or storage.\n\n#### Trading key types:\n* `User`\n* `API`\n",
 196 |                 "parameters": [
 197 |                     {
 198 |                         "name": "x-wallet-address",
 199 |                         "in": "header",
 200 |                         "description": "Login wallet address",
 201 |                         "required": true,
 202 |                         "schema": {
 203 |                             "type": "string"
 204 |                         }
 205 |                     },
 206 |                     {
 207 |                         "name": "x-wallet-token",
 208 |                         "in": "header",
 209 |                         "description": "Login session token",
 210 |                         "required": true,
 211 |                         "schema": {
 212 |                             "type": "string"
 213 |                         }
 214 |                     }
 215 |                 ],
 216 |                 "responses": {
 217 |                     "200": {
 218 |                         "description": "Trading key revoked successfully"
 219 |                     },
 220 |                     "400": {
 221 |                         "description": "Bad request"
 222 |                     },
 223 |                     "403": {
 224 |                         "description": "Forbidden"
 225 |                     }
 226 |                 },
 227 |                 "tags": [
 228 |                     "Wallet"
 229 |                 ]
 230 |             }
 231 |         },
 232 |         "/wallet/key/message": {
 233 |             "post": {
 234 |                 "operationId": "WalletController_createTradingKeyMessage",
 235 |                 "summary": "Generate message from the trading key data",
 236 |                 "description": "The trading key simplifies the trading process and is used to shadow sign a message. Trading key can only be used to sign a message from requests POST/DELETE market/order.",
 237 |                 "parameters": [
 238 |                     {
 239 |                         "name": "x-wallet-address",
 240 |                         "in": "header",
 241 |                         "description": "Login wallet address",
 242 |                         "required": true,
 243 |                         "schema": {
 244 |                             "type": "string"
 245 |                         }
 246 |                     },
 247 |                     {
 248 |                         "name": "x-wallet-token",
 249 |                         "in": "header",
 250 |                         "description": "Login session token",
 251 |                         "required": true,
 252 |                         "schema": {
 253 |                             "type": "string"
 254 |                         }
 255 |                     }
 256 |                 ],
 257 |                 "requestBody": {
 258 |                     "required": true,
 259 |                     "content": {
 260 |                         "application/json": {
 261 |                             "schema": {
 262 |                                 "$ref": "#/components/schemas/PostTradingKeyMessageDto"
 263 |                             }
 264 |                         }
 265 |                     }
 266 |                 },
 267 |                 "responses": {
 268 |                     "201": {
 269 |                         "description": "Generated message in hex",
 270 |                         "content": {
 271 |                             "application/json": {
 272 |                                 "schema": {
 273 |                                     "example": {
 274 |                                         "message": "4279207369676e696e672074686973206d65737361676520796f7520617265206c6f6767696e6720696e746f20796f75722074726164696e67206163636f756e740a"
 275 |                                     }
 276 |                                 }
 277 |                             }
 278 |                         }
 279 |                     },
 280 |                     "400": {
 281 |                         "description": "Bad request"
 282 |                     }
 283 |                 },
 284 |                 "tags": [
 285 |                     "Wallet"
 286 |                 ]
 287 |             }
 288 |         },
 289 |         "/wallet/trades": {
 290 |             "get": {
 291 |                 "operationId": "WalletController_",
 292 |                 "summary": "Get filtered wallet trades",
 293 |                 "description": "Provide either the x-wallet-token or x-trading-key header. If x-wallet-token is provided, x-trading-key is not required, and vice versa.\n\n  **Note:** The response is limited to a maximum of **500** records.\n  ",
 294 |                 "parameters": [
 295 |                     {
 296 |                         "name": "x-wallet-address",
 297 |                         "in": "header",
 298 |                         "description": "Login wallet address",
 299 |                         "required": true,
 300 |                         "schema": {
 301 |                             "type": "string"
 302 |                         }
 303 |                     },
 304 |                     {
 305 |                         "name": "x-wallet-token",
 306 |                         "in": "header",
 307 |                         "description": "Login session token (optional if API key is provided in x-trading-key)",
 308 |                         "required": false,
 309 |                         "schema": {
 310 |                             "type": "string"
 311 |                         }
 312 |                     },
 313 |                     {
 314 |                         "name": "x-trading-key",
 315 |                         "in": "header",
 316 |                         "description": "Trading key address (optional if x-wallet-token is provided)",
 317 |                         "required": false,
 318 |                         "schema": {
 319 |                             "type": "string"
 320 |                         }
 321 |                     }
 322 |                 ],
 323 |                 "responses": {
 324 |                     "200": {
 325 |                         "description": "Filtered wallet trades retrieved successfully",
 326 |                         "content": {
 327 |                             "application/json": {
 328 |                                 "schema": {
 329 |                                     "example": [
 330 |                                         {
 331 |                                             "tradeId": 712,
 332 |                                             "orderId": 13,
 333 |                                             "orderSide": "B",
 334 |                                             "pairId": 14,
 335 |                                             "baseTokenId": 9,
 336 |                                             "baseTokenDecimal": 6,
 337 |                                             "quoteTokenId": 8,
 338 |                                             "quoteTokenDecimal": 6,
 339 |                                             "status": "CONFIRMED",
 340 |                                             "amount": "350000000",
 341 |                                             "price": "10000",
 342 |                                             "fee": "805000",
 343 |                                             "createdAt": "2024-08-05T09:59:20.507Z",
 344 |                                             "updatedAt": "2024-08-05T09:59:20.000Z",
 345 |                                             "isBuyer": true,
 346 |                                             "isMaker": false
 347 |                                         }
 348 |                                     ]
 349 |                                 }
 350 |                             }
 351 |                         }
 352 |                     },
 353 |                     "400": {
 354 |                         "description": "Bad request"
 355 |                     },
 356 |                     "403": {
 357 |                         "description": "Forbidden"
 358 |                     }
 359 |                 },
 360 |                 "tags": [
 361 |                     "Wallet"
 362 |                 ]
 363 |             }
 364 |         },
 365 |         "/wallet/transactions": {
 366 |             "get": {
 367 |                 "operationId": "WalletController_",
 368 |                 "summary": "Get filtered wallet transactions",
 369 |                 "description": "Provide either the x-wallet-token or x-trading-key header. If x-wallet-token is provided, x-trading-key is not required, and vice versa.\n\n#### Wallet transaction statuses:\n* `pending`\n* `completed`\n* `failed`\n* `received`\n\n#### Wallet transaction types:\n* `deposit`\n* `withdraw`\n\n  **Note:** The response is limited to a maximum of **500** records.\n  ",
 370 |                 "parameters": [
 371 |                     {
 372 |                         "name": "x-wallet-address",
 373 |                         "in": "header",
 374 |                         "description": "Login wallet address",
 375 |                         "required": true,
 376 |                         "schema": {
 377 |                             "type": "string"
 378 |                         }
 379 |                     },
 380 |                     {
 381 |                         "name": "x-wallet-token",
 382 |                         "in": "header",
 383 |                         "description": "Login session token (optional if API key is provided in x-trading-key)",
 384 |                         "required": false,
 385 |                         "schema": {
 386 |                             "type": "string"
 387 |                         }
 388 |                     },
 389 |                     {
 390 |                         "name": "x-trading-key",
 391 |                         "in": "header",
 392 |                         "description": "Trading key address (optional if x-wallet-token is provided)",
 393 |                         "required": false,
 394 |                         "schema": {
 395 |                             "type": "string"
 396 |                         }
 397 |                     }
 398 |                 ],
 399 |                 "responses": {
 400 |                     "200": {
 401 |                         "description": "Filtered wallet transactions retrieved successfully",
 402 |                         "content": {
 403 |                             "application/json": {
 404 |                                 "schema": {
 405 |                                     "example": [
 406 |                                         {
 407 |                                             "primaryId": 195,
 408 |                                             "id": "bf9484bebe4f30cbff9c1a5a59ed4b4946c149cb581b90ee0496bdef7b6f7828",
 409 |                                             "login_address": "HjNg63be7HdsydC8NPtXn43FoVHUMD2kcxpfhBx1r8NN",
 410 |                                             "login_chain_id": 1,
 411 |                                             "action_type": "deposit",
 412 |                                             "status": "completed",
 413 |                                             "amount": "1000000",
 414 |                                             "targetAddress": "HjNg63be7HdsydC8NPtXn43FoVHUMD2kcxpfhBx1r8NN",
 415 |                                             "timestamp": "2023-12-19T08:33:06.000Z",
 416 |                                             "createdAt": "2023-12-19T08:33:06.576Z",
 417 |                                             "updatedAt": "2023-12-19T08:33:06.576Z",
 418 |                                             "vaa_message": null,
 419 |                                             "fee": "100",
 420 |                                             "token_id": {
 421 |                                                 "id": 12,
 422 |                                                 "address": "Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr",
 423 |                                                 "chainId": 1,
 424 |                                                 "unitName": "USDCs",
 425 |                                                 "name": "",
 426 |                                                 "decimals": 6,
 427 |                                                 "isGas": false,
 428 |                                                 "deletedAt": null
 429 |                                             },
 430 |                                             "transactions": {
 431 |                                                 "txnHash": "FWKC6RRNQ5LOODCBX4AME5HWNCLJCYA2NU3VAMFOX3LVCFZPNDIA",
 432 |                                                 "chainId": 8
 433 |                                             }
 434 |                                         },
 435 |                                         {
 436 |                                             "primaryId": 432,
 437 |                                             "id": "ef117bad310c4ca6e086b1ef7d8dc8fe9191630bbce8e5806f2c6b24d32a17d5",
 438 |                                             "login_address": "HjNg63be7HdsydC8NPtXn43FoVHUMD2kcxpfhBx1r8NN",
 439 |                                             "login_chain_id": 1,
 440 |                                             "action_type": "deposit",
 441 |                                             "status": "completed",
 442 |                                             "amount": "5000000",
 443 |                                             "targetAddress": "B9a4FpxhTzfv2eCCYBiDdrrYfB23HGRNp3bf38vb1UFP",
 444 |                                             "timestamp": "2024-02-02T12:11:01.000Z",
 445 |                                             "createdAt": "2024-02-02T12:11:01.363Z",
 446 |                                             "updatedAt": "2024-02-02T12:11:07.000Z",
 447 |                                             "vaa_message": {
 448 |                                                 "type": "Buffer",
 449 |                                                 "data": [
 450 |                                                     1,
 451 |                                                     0,
 452 |                                                     0,
 453 |                                                     0,
 454 |                                                     0,
 455 |                                                     1,
 456 |                                                     0,
 457 |                                                     187,
 458 |                                                     94,
 459 |                                                     152,
 460 |                                                     40,
 461 |                                                     10,
 462 |                                                     65,
 463 |                                                     193,
 464 |                                                     165,
 465 |                                                     163,
 466 |                                                     32,
 467 |                                                     162,
 468 |                                                     107,
 469 |                                                     114,
 470 |                                                     224,
 471 |                                                     159,
 472 |                                                     76,
 473 |                                                     119,
 474 |                                                     184,
 475 |                                                     155,
 476 |                                                     80,
 477 |                                                     133,
 478 |                                                     38,
 479 |                                                     61,
 480 |                                                     113,
 481 |                                                     141,
 482 |                                                     151,
 483 |                                                     140,
 484 |                                                     55,
 485 |                                                     83,
 486 |                                                     93,
 487 |                                                     61,
 488 |                                                     29,
 489 |                                                     96,
 490 |                                                     34,
 491 |                                                     196,
 492 |                                                     34,
 493 |                                                     28,
 494 |                                                     167,
 495 |                                                     126,
 496 |                                                     114,
 497 |                                                     188,
 498 |                                                     212,
 499 |                                                     145,
 500 |                                                     246,
 501 |                                                     55,
 502 |                                                     183,
 503 |                                                     167,
 504 |                                                     142,
 505 |                                                     182,
 506 |                                                     202,
 507 |                                                     17,
 508 |                                                     224,
 509 |                                                     191,
 510 |                                                     253,
 511 |                                                     110,
 512 |                                                     96,
 513 |                                                     51,
 514 |                                                     101,
 515 |                                                     16,
 516 |                                                     30,
 517 |                                                     255,
 518 |                                                     70,
 519 |                                                     15,
 520 |                                                     143,
 521 |                                                     1,
 522 |                                                     101,
 523 |                                                     188,
 524 |                                                     219,
 525 |                                                     211,
 526 |                                                     0,
 527 |                                                     0,
 528 |                                                     0,
 529 |                                                     0,
 530 |                                                     0,
 531 |                                                     1,
 532 |                                                     150,
 533 |                                                     198,
 534 |                                                     228,
 535 |                                                     117,
 536 |                                                     219,
 537 |                                                     78,
 538 |                                                     178,
 539 |                                                     49,
 540 |                                                     13,
 541 |                                                     23,
 542 |                                                     82,
 543 |                                                     23,
 544 |                                                     145,
 545 |                                                     30,
 546 |                                                     29,
 547 |                                                     75,
 548 |                                                     2,
 549 |                                                     121,
 550 |                                                     63,
 551 |                                                     94,
 552 |                                                     12,
 553 |                                                     7,
 554 |                                                     55,
 555 |                                                     239,
 556 |                                                     82,
 557 |                                                     114,
 558 |                                                     172,
 559 |                                                     211,
 560 |                                                     140,
 561 |                                                     179,
 562 |                                                     167,
 563 |                                                     14,
 564 |                                                     0,
 565 |                                                     0,
 566 |                                                     0,
 567 |                                                     0,
 568 |                                                     0,
 569 |                                                     0,
 570 |                                                     0,
 571 |                                                     168,
 572 |                                                     1,
 573 |                                                     100,
 574 |                                                     101,
 575 |                                                     112,
 576 |                                                     111,
 577 |                                                     115,
 578 |                                                     105,
 579 |                                                     116,
 580 |                                                     248,
 581 |                                                     149,
 582 |                                                     228,
 583 |                                                     62,
 584 |                                                     63,
 585 |                                                     147,
 586 |                                                     164,
 587 |                                                     23,
 588 |                                                     189,
 589 |                                                     159,
 590 |                                                     139,
 591 |                                                     75,
 592 |                                                     87,
 593 |                                                     156,
 594 |                                                     105,
 595 |                                                     3,
 596 |                                                     54,
 597 |                                                     78,
 598 |                                                     245,
 599 |                                                     116,
 600 |                                                     17,
 601 |                                                     43,
 602 |                                                     78,
 603 |                                                     197,
 604 |                                                     7,
 605 |                                                     45,
 606 |                                                     86,
 607 |                                                     46,
 608 |                                                     130,
 609 |                                                     153,
 610 |                                                     58,
 611 |                                                     91,
 612 |                                                     233,
 613 |                                                     40,
 614 |                                                     57,
 615 |                                                     85,
 616 |                                                     9,
 617 |                                                     101,
 618 |                                                     255,
 619 |                                                     212,
 620 |                                                     214,
 621 |                                                     74,
 622 |                                                     202,
 623 |                                                     175,
 624 |                                                     70,
 625 |                                                     212,
 626 |                                                     93,
 627 |                                                     247,
 628 |                                                     49,
 629 |                                                     142,
 630 |                                                     91,
 631 |                                                     79,
 632 |                                                     87,
 633 |                                                     201,
 634 |                                                     12,
 635 |                                                     72,
 636 |                                                     125,
 637 |                                                     96,
 638 |                                                     98,
 639 |                                                     93,
 640 |                                                     130,
 641 |                                                     155,
 642 |                                                     131,
 643 |                                                     123,
 644 |                                                     0,
 645 |                                                     0,
 646 |                                                     0,
 647 |                                                     0,
 648 |                                                     0,
 649 |                                                     0,
 650 |                                                     0,
 651 |                                                     0,
 652 |                                                     0,
 653 |                                                     0,
 654 |                                                     0,
 655 |                                                     0,
 656 |                                                     0,
 657 |                                                     0,
 658 |                                                     0,
 659 |                                                     0,
 660 |                                                     0,
 661 |                                                     0,
 662 |                                                     0,
 663 |                                                     0,
 664 |                                                     0,
 665 |                                                     0,
 666 |                                                     0,
 667 |                                                     0,
 668 |                                                     0,
 669 |                                                     0,
 670 |                                                     0,
 671 |                                                     0,
 672 |                                                     0,
 673 |                                                     76,
 674 |                                                     75,
 675 |                                                     64,
 676 |                                                     0,
 677 |                                                     0,
 678 |                                                     0,
 679 |                                                     0,
 680 |                                                     0,
 681 |                                                     0,
 682 |                                                     0,
 683 |                                                     0,
 684 |                                                     0,
 685 |                                                     0,
 686 |                                                     0,
 687 |                                                     0,
 688 |                                                     0,
 689 |                                                     0,
 690 |                                                     0,
 691 |                                                     0,
 692 |                                                     0,
 693 |                                                     0,
 694 |                                                     0,
 695 |                                                     0,
 696 |                                                     0,
 697 |                                                     0,
 698 |                                                     0,
 699 |                                                     0,
 700 |                                                     0,
 701 |                                                     0,
 702 |                                                     0,
 703 |                                                     0,
 704 |                                                     0,
 705 |                                                     0,
 706 |                                                     0,
 707 |                                                     1,
 708 |                                                     248,
 709 |                                                     149,
 710 |                                                     228,
 711 |                                                     62,
 712 |                                                     63,
 713 |                                                     147,
 714 |                                                     164,
 715 |                                                     23,
 716 |                                                     189,
 717 |                                                     159,
 718 |                                                     139,
 719 |                                                     75,
 720 |                                                     87,
 721 |                                                     156,
 722 |                                                     105,
 723 |                                                     3,
 724 |                                                     54,
 725 |                                                     78,
 726 |                                                     245,
 727 |                                                     116,
 728 |                                                     17,
 729 |                                                     43,
 730 |                                                     78,
 731 |                                                     197,
 732 |                                                     7,
 733 |                                                     45,
 734 |                                                     86,
 735 |                                                     46,
 736 |                                                     130,
 737 |                                                     153,
 738 |                                                     58,
 739 |                                                     91
 740 |                                                 ]
 741 |                                             },
 742 |                                             "token_id": {
 743 |                                                 "id": 12,
 744 |                                                 "address": "Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr",
 745 |                                                 "chainId": 1,
 746 |                                                 "unitName": "USDCs",
 747 |                                                 "name": "",
 748 |                                                 "decimals": 6,
 749 |                                                 "isGas": false,
 750 |                                                 "deletedAt": null
 751 |                                             }
 752 |                                         }
 753 |                                     ]
 754 |                                 }
 755 |                             }
 756 |                         }
 757 |                     },
 758 |                     "400": {
 759 |                         "description": "Bad request"
 760 |                     },
 761 |                     "403": {
 762 |                         "description": "Forbidden"
 763 |                     }
 764 |                 },
 765 |                 "tags": [
 766 |                     "Wallet"
 767 |                 ]
 768 |             }
 769 |         },
 770 |         "/wallet/withdraw": {
 771 |             "post": {
 772 |                 "operationId": "WalletController_",
 773 |                 "summary": "Withdraw token",
 774 |                 "description": "Initiate request to withdraw funds based on data encoded in the signed message\n### Instructions for Creating a Withdrawal Message\n\nTo create a message from multiple arguments, follow these steps:\n\n**Concatenate all arguments in their bytes representation in a specific order.** Each argument must have a specific length.\n\n#### Example of Message Creation\n\n```typescript\nconst withdrawBytes = concatBytes([\n  liginAccountAddress,   // normalized wallet address 32 bytes\n  loginAccountChainId,   // chain id (Wormhole chain id) 8 bytes\n  tokenAddress,          // normalized token address taken from market pair 32 bytes\n  tokenChainId,          // base token Wormhole chain id 8 bytes\n  recipientAddress,      // normalized recipient address 32 bytes\n  recipientChainId,      // chain id (Wormhole chain id) 8 bytes\n  amount,                // amount in atomic units 32 bytes\n  isNative,              // is token native 1 byte\n  fee,                   // fee amount 32 bytes\n]);\n\nconst bs64WithdrawBytes = new ByteArray(withdrawBytes.toBase64());\n```\n\n### Normalizing Addresses\n\nThe normalized address is a 32-byte hex string converted from the original address. This normalization ensures that addresses from different chains are of a consistent length for codex management and WH message interaction.\n\n#### Examples of Normalized Addresses:\n\n- **EVM Address**:\n  - Original: `0xC8b9Cb9D80e8d35486A2bf9e9F8DF793c2d077a0`\n  - Normalized: `00000000000000000000000c8b9cb9d80e8d35486a2bf9e9f8df793c2d077a0`\n\n- **Algorand Address**:\n  - Original: `EN24BSP6WLG2DI7WOZ45P4A2PHI5RKCGA4ZE4W3C6E3GCWBPOUU4ZCX4D4`\n    ```typescript\n    algosdk.decodeAddress(address).publicKey\n    ```\n  - Normalized: `2375c0c9feb2cda1a3f67679d7f01a79d1d8a84607324e5b62f13661582f7529`\n\n- **Solana Address**:\n  - Original: `D6qWNnD6js6Cwbgrq7RBxiQP6uLb5WhSdHSerP7S3hqW`\n    ```typescript\n    bs58.decode(address)\n    ```\n  - Normalized: `b3cafe5d05e60d7452fab7b6300f8b0f16842fa76b1168765bcbd9bbc652003d`\n\n- **Algorand Token ID**:\n  - Original: `10458941`\n  - Normalized: `0000000000000000000000000000000000000000000000000000000010458941`\n\n**Important Note:** The `withdrawBytes` must be converted to a base64 string and then the base64 string must be converted back to bytes.\n\n#### Final Step: Convert Final Bytes Result into a Hex String\n\n```typescript\nconst hexWithdrawBytes = Buffer.from(bs64WithdrawBytes).toString('hex');\n```\n\nThis final conversion ensures the message is in a hexadecimal string format, suitable for transmission or storage.\n",
 775 |                 "parameters": [
 776 |                     {
 777 |                         "name": "x-wallet-address",
 778 |                         "in": "header",
 779 |                         "description": "Login wallet address",
 780 |                         "required": true,
 781 |                         "schema": {
 782 |                             "type": "string"
 783 |                         }
 784 |                     },
 785 |                     {
 786 |                         "name": "x-wallet-token",
 787 |                         "in": "header",
 788 |                         "description": "Login session token",
 789 |                         "required": true,
 790 |                         "schema": {
 791 |                             "type": "string"
 792 |                         }
 793 |                     }
 794 |                 ],
 795 |                 "responses": {
 796 |                     "201": {
 797 |                         "description": "Withdrawal successful"
 798 |                     },
 799 |                     "400": {
 800 |                         "description": "Bad request"
 801 |                     },
 802 |                     "403": {
 803 |                         "description": "Forbidden"
 804 |                     }
 805 |                 },
 806 |                 "tags": [
 807 |                     "Wallet"
 808 |                 ]
 809 |             }
 810 |         },
 811 |         "/wallet/withdraw/message": {
 812 |             "post": {
 813 |                 "operationId": "WalletController_createWithdrawMessage",
 814 |                 "summary": "Generate message from the withdrawal data",
 815 |                 "description": "Returns the message that should be signed by user wallet",
 816 |                 "parameters": [
 817 |                     {
 818 |                         "name": "x-wallet-address",
 819 |                         "in": "header",
 820 |                         "description": "Login wallet address",
 821 |                         "required": true,
 822 |                         "schema": {
 823 |                             "type": "string"
 824 |                         }
 825 |                     },
 826 |                     {
 827 |                         "name": "x-wallet-token",
 828 |                         "in": "header",
 829 |                         "description": "Login session token",
 830 |                         "required": true,
 831 |                         "schema": {
 832 |                             "type": "string"
 833 |                         }
 834 |                     }
 835 |                 ],
 836 |                 "requestBody": {
 837 |                     "required": true,
 838 |                     "content": {
 839 |                         "application/json": {
 840 |                             "schema": {
 841 |                                 "$ref": "#/components/schemas/PostWithdrawMessageDto"
 842 |                             }
 843 |                         }
 844 |                     }
 845 |                 },
 846 |                 "responses": {
 847 |                     "201": {
 848 |                         "description": "Generated message in hex",
 849 |                         "content": {
 850 |                             "application/json": {
 851 |                                 "schema": {
 852 |                                     "example": {
 853 |                                         "message": "4279207369676e696e672074686973206d65737361676520796f7520617265206c6f6767696e6720696e746f20796f75722074726164696e67206163636f756e740a"
 854 |                                     }
 855 |                                 }
 856 |                             }
 857 |                         }
 858 |                     },
 859 |                     "400": {
 860 |                         "description": "Bad request"
 861 |                     }
 862 |                 },
 863 |                 "tags": [
 864 |                     "Wallet"
 865 |                 ]
 866 |             }
 867 |         },
 868 |         "/market/price": {
 869 |             "get": {
 870 |                 "operationId": "MarketController_getPrice",
 871 |                 "summary": "Get last market price by pair symbol",
 872 |                 "description": "The response contains the `ts` field in the following format: `{TIMESTAMP_WITH_MS}`.`{MICROSECONDS}`",
 873 |                 "parameters": [
 874 |                     {
 875 |                         "name": "symbol",
 876 |                         "required": true,
 877 |                         "in": "query",
 878 |                         "description": "Market symbol, e.g. sol_eth",
 879 |                         "examples": {
 880 |                             "sol_eth": {
 881 |                                 "value": "sol_eth"
 882 |                             },
 883 |                             "lmbo_algo": {
 884 |                                 "value": "lmbo_algo"
 885 |                             }
 886 |                         },
 887 |                         "schema": {
 888 |                             "type": "string"
 889 |                         }
 890 |                     }
 891 |                 ],
 892 |                 "responses": {
 893 |                     "200": {
 894 |                         "description": "Price retrieved successfully",
 895 |                         "schema": {
 896 |                             "example": {
 897 |                                 "pairId": 46,
 898 |                                 "pair": "usdcs_algo",
 899 |                                 "askPrice": "35000",
 900 |                                 "askQty": "64000000",
 901 |                                 "bidPrice": "29910",
 902 |                                 "bidQty": "247000000",
 903 |                                 "lastPrice": "31230",
 904 |                                 "ts": 1719323536855.245,
 905 |                                 "u": 4065,
 906 |                                 "U": 4021
 907 |                             }
 908 |                         },
 909 |                         "content": {
 910 |                             "application/json": {
 911 |                                 "schema": {
 912 |                                     "$ref": "#/components/schemas/GetPriceResponseDto"
 913 |                                 }
 914 |                             }
 915 |                         }
 916 |                     },
 917 |                     "400": {
 918 |                         "description": "Bad request"
 919 |                     }
 920 |                 },
 921 |                 "tags": [
 922 |                     "Market"
 923 |                 ]
 924 |             }
 925 |         },
 926 |         "/market/depth": {
 927 |             "get": {
 928 |                 "operationId": "MarketController_getDepth",
 929 |                 "summary": "Get order book depth",
 930 |                 "description": "\nThe `buy` and `sell` fields in the response have the following structure: `[ [price, amount] ]`\n\nThe response contains the `ts` field in the following format: `{TIMESTAMP_WITH_MS}`.`{MICROSECONDS}`\n\n  **Note:** The response is limited to a maximum of **100** records.\n  ",
 931 |                 "parameters": [
 932 |                     {
 933 |                         "name": "symbol",
 934 |                         "required": true,
 935 |                         "in": "query",
 936 |                         "description": "Market symbol, e.g. sol_eth",
 937 |                         "examples": {
 938 |                             "sol_eth": {
 939 |                                 "value": "sol_eth"
 940 |                             },
 941 |                             "lmbo_algo": {
 942 |                                 "value": "lmbo_algo"
 943 |                             }
 944 |                         },
 945 |                         "schema": {
 946 |                             "type": "string"
 947 |                         }
 948 |                     },
 949 |                     {
 950 |                         "name": "depth",
 951 |                         "required": true,
 952 |                         "in": "query",
 953 |                         "description": "If depth > 100, then the response will truncate to 100",
 954 |                         "example": 100,
 955 |                         "schema": {
 956 |                             "type": "number"
 957 |                         }
 958 |                     }
 959 |                 ],
 960 |                 "responses": {
 961 |                     "200": {
 962 |                         "description": "Order book depth retrieved successfully",
 963 |                         "schema": {
 964 |                             "example": {
 965 |                                 "pair": "usdcs_algo",
 966 |                                 "buy": [
 967 |                                     [
 968 |                                         "1000",
 969 |                                         "1000000"
 970 |                                     ]
 971 |                                 ],
 972 |                                 "sell": [
 973 |                                     [
 974 |                                         "7000",
 975 |                                         "1000000"
 976 |                                     ]
 977 |                                 ],
 978 |                                 "ts": 1719323536855.245,
 979 |                                 "u": 4065
 980 |                             }
 981 |                         },
 982 |                         "content": {
 983 |                             "application/json": {
 984 |                                 "schema": {
 985 |                                     "$ref": "#/components/schemas/GetDepthResponseDto"
 986 |                                 }
 987 |                             }
 988 |                         }
 989 |                     },
 990 |                     "400": {
 991 |                         "description": "Bad request"
 992 |                     }
 993 |                 },
 994 |                 "tags": [
 995 |                     "Market"
 996 |                 ]
 997 |             }
 998 |         },
 999 |         "/market/last-trades": {
1000 |             "get": {
1001 |                 "operationId": "MarketController_getLastTrades",
1002 |                 "summary": "Get last trades",
1003 |                 "description": "\nThe response contains the `createdAt` field in the following format: `{TIMESTAMP_WITH_MS}`.`{MICROSECONDS}`\n\n  **Note:** The response is limited to a maximum of **100** records.\n  ",
1004 |                 "parameters": [
1005 |                     {
1006 |                         "name": "symbol",
1007 |                         "required": true,
1008 |                         "in": "query",
1009 |                         "description": "Market symbol, e.g. sol_eth",
1010 |                         "examples": {
1011 |                             "sol_eth": {
1012 |                                 "value": "sol_eth"
1013 |                             },
1014 |                             "lmbo_algo": {
1015 |                                 "value": "lmbo_algo"
1016 |                             }
1017 |                         },
1018 |                         "schema": {
1019 |                             "type": "string"
1020 |                         }
1021 |                     },
1022 |                     {
1023 |                         "name": "limit",
1024 |                         "required": false,
1025 |                         "in": "query",
1026 |                         "description": "Amount of trades. If limit > 100, then the response will truncate to 100",
1027 |                         "schema": {
1028 |                             "maximum": 100,
1029 |                             "default": 100,
1030 |                             "type": "number"
1031 |                         }
1032 |                     }
1033 |                 ],
1034 |                 "responses": {
1035 |                     "200": {
1036 |                         "description": "Last trades retrieved successfully",
1037 |                         "content": {
1038 |                             "application/json": {
1039 |                                 "schema": {
1040 |                                     "example": [
1041 |                                         {
1042 |                                             "tradeId": 1,
1043 |                                             "price": "6000",
1044 |                                             "amount": "1000000",
1045 |                                             "total": "6000",
1046 |                                             "createdAt": 1719318832371.647,
1047 |                                             "isBuyerMaker": false
1048 |                                         },
1049 |                                         {
1050 |                                             "tradeId": 2,
1051 |                                             "price": "1000",
1052 |                                             "amount": "1500000",
1053 |                                             "total": "1500",
1054 |                                             "createdAt": 1719302531935.491,
1055 |                                             "isBuyerMaker": false
1056 |                                         }
1057 |                                     ]
1058 |                                 }
1059 |                             }
1060 |                         }
1061 |                     },
1062 |                     "400": {
1063 |                         "description": "Bad request"
1064 |                     }
1065 |                 },
1066 |                 "tags": [
1067 |                     "Market"
1068 |                 ]
1069 |             }
1070 |         },
1071 |         "/market/symbols": {
1072 |             "get": {
1073 |                 "operationId": "MarketController_getSymbols",
1074 |                 "summary": "Get market symbols",
1075 |                 "parameters": [],
1076 |                 "responses": {
1077 |                     "200": {
1078 |                         "description": "Market symbols retrieved successfully",
1079 |                         "content": {
1080 |                             "application/json": {
1081 |                                 "schema": {
1082 |                                     "example": [
1083 |                                         {
1084 |                                             "pairKey": "algo_usdcs"
1085 |                                         },
1086 |                                         {
1087 |                                             "pairKey": "algo_usdc"
1088 |                                         },
1089 |                                         {
1090 |                                             "pairKey": "yldy_stbl"
1091 |                                         },
1092 |                                         {
1093 |                                             "pairKey": "lmbo_usdcs"
1094 |                                         },
1095 |                                         {
1096 |                                             "pairKey": "moon_algo"
1097 |                                         }
1098 |                                     ]
1099 |                                 }
1100 |                             }
1101 |                         }
1102 |                     },
1103 |                     "400": {
1104 |                         "description": "Bad request"
1105 |                     }
1106 |                 },
1107 |                 "tags": [
1108 |                     "Market"
1109 |                 ]
1110 |             }
1111 |         },
1112 |         "/market/history": {
1113 |             "get": {
1114 |                 "operationId": "MarketController_getHistory",
1115 |                 "summary": "Get market history",
1116 |                 "description": "\nResolution interval values clarification\n\n| Resolution | Format                   | Example |\n| ---------- | ------------------------ | -------- |\n| Minutes    | `x`                    | 1, 3, 5, 15, 30, 59, 115 |\n| Hours      | `xH` or `x` minutes  | 1h, 2H, 240 (minutes) - four hours |\n| 24H        | `24H`                  | from the end time to the end time - 24h |\n| Days       | `xD`or `xH` hours    | 1D - one day, 5D - five days |\n| Weeks      | `xW`or `xD` days     | 1W - one week, 4W - four weeks |\n| Months     | `xM`                   | 1M - one month, 6M - six months |\n| Years      | `xY`or `xM` months   | 12M - one year, 24M - two years, 1Y - one year |\n\n### Notes:\n* Intervals are case insensitive\n* Interval `60` (minutes) means 1 hour\n* Interval `1440` (minutes) means 1 day\n* Interval `24h` (hours) means 24 hours, not 1 calendar day\n* Interval `48h` (hours) means 2 calendar days\n* Interval `10080` (minutes) means 1 week\n* Interval `168H` (hours) means 1 week\n* Interval `7d` (days) means 1 week\n* Interval `12m` (months) means 1 year\n\n### Current version doesn't support intervals `ticks` and `seconds`\n",
1117 |                 "parameters": [
1118 |                     {
1119 |                         "name": "symbol",
1120 |                         "required": true,
1121 |                         "in": "query",
1122 |                         "description": "Market symbol, e.g. sol_eth",
1123 |                         "examples": {
1124 |                             "sol_eth": {
1125 |                                 "value": "sol_eth"
1126 |                             },
1127 |                             "lmbo_algo": {
1128 |                                 "value": "lmbo_algo"
1129 |                             }
1130 |                         },
1131 |                         "schema": {
1132 |                             "type": "string"
1133 |                         }
1134 |                     },
1135 |                     {
1136 |                         "name": "interval",
1137 |                         "required": true,
1138 |                         "in": "query",
1139 |                         "description": "Resolution interval",
1140 |                         "example": "60",
1141 |                         "schema": {
1142 |                             "type": "string"
1143 |                         }
1144 |                     },
1145 |                     {
1146 |                         "name": "startTime",
1147 |                         "required": true,
1148 |                         "in": "query",
1149 |                         "description": "UTC timestamp in seconds",
1150 |                         "example": 1718776962,
1151 |                         "schema": {
1152 |                             "type": "number"
1153 |                         }
1154 |                     },
1155 |                     {
1156 |                         "name": "endTime",
1157 |                         "required": true,
1158 |                         "in": "query",
1159 |                         "description": "UTC timestamp in seconds",
1160 |                         "example": 1718875662,
1161 |                         "schema": {
1162 |                             "type": "number"
1163 |                         }
1164 |                     },
1165 |                     {
1166 |                         "name": "limit",
1167 |                         "required": false,
1168 |                         "in": "query",
1169 |                         "description": "Max amount of candles",
1170 |                         "example": 100,
1171 |                         "schema": {
1172 |                             "type": "number"
1173 |                         }
1174 |                     },
1175 |                     {
1176 |                         "name": "format",
1177 |                         "required": false,
1178 |                         "in": "query",
1179 |                         "description": "Response format",
1180 |                         "schema": {
1181 |                             "default": "object",
1182 |                             "enum": [
1183 |                                 "object",
1184 |                                 "array"
1185 |                             ],
1186 |                             "type": "string"
1187 |                         }
1188 |                     }
1189 |                 ],
1190 |                 "responses": {
1191 |                     "200": {
1192 |                         "description": "Market history retrieved successfully",
1193 |                         "schema": {
1194 |                             "example": {
1195 |                                 "t": [
1196 |                                     1702944000,
1197 |                                     1705968000,
1198 |                                     1707177600,
1199 |                                     1708473600,
1200 |                                     1709596800,
1201 |                                     1710201600,
1202 |                                     1710288000,
1203 |                                     1710374400,
1204 |                                     1716249600,
1205 |                                     1716336000,
1206 |                                     1716422400,
1207 |                                     1716508800,
1208 |                                     1719273600
1209 |                                 ],
1210 |                                 "o": [
1211 |                                     0.001,
1212 |                                     0.001,
1213 |                                     0.05,
1214 |                                     0.001,
1215 |                                     0.044,
1216 |                                     0.046,
1217 |                                     0.048,
1218 |                                     0.049,
1219 |                                     0.001,
1220 |                                     1,
1221 |                                     0.01,
1222 |                                     0.019,
1223 |                                     0.001
1224 |                                 ],
1225 |                                 "h": [
1226 |                                     0.001,
1227 |                                     0.17,
1228 |                                     0.05,
1229 |                                     0.002,
1230 |                                     0.045,
1231 |                                     0.046,
1232 |                                     0.048,
1233 |                                     0.049,
1234 |                                     0.001,
1235 |                                     1,
1236 |                                     1,
1237 |                                     0.019,
1238 |                                     0.2
1239 |                                 ],
1240 |                                 "c": [
1241 |                                     0.001,
1242 |                                     0.013,
1243 |                                     0.05,
1244 |                                     0.001,
1245 |                                     0.045,
1246 |                                     0.046,
1247 |                                     0.048,
1248 |                                     0.049,
1249 |                                     0.001,
1250 |                                     1,
1251 |                                     1,
1252 |                                     0.001,
1253 |                                     0.006
1254 |                                 ],
1255 |                                 "l": [
1256 |                                     0.001,
1257 |                                     0.001,
1258 |                                     0.05,
1259 |                                     0.001,
1260 |                                     0.044,
1261 |                                     0.046,
1262 |                                     0.048,
1263 |                                     0.049,
1264 |                                     0.001,
1265 |                                     1,
1266 |                                     0.001,
1267 |                                     0.001,
1268 |                                     0.001
1269 |                                 ],
1270 |                                 "v": [
1271 |                                     1,
1272 |                                     28.5,
1273 |                                     1,
1274 |                                     3.8,
1275 |                                     2,
1276 |                                     1,
1277 |                                     1,
1278 |                                     2,
1279 |                                     1,
1280 |                                     3,
1281 |                                     12,
1282 |                                     19,
1283 |                                     4
1284 |                                 ],
1285 |                                 "q": [
1286 |                                     1,
1287 |                                     28.5,
1288 |                                     1,
1289 |                                     3.8,
1290 |                                     2,
1291 |                                     1,
1292 |                                     1,
1293 |                                     2,
1294 |                                     1,
1295 |                                     3,
1296 |                                     12,
1297 |                                     19,
1298 |                                     4
1299 |                                 ],
1300 |                                 "s": "ok",
1301 |                                 "b": 1702989335082
1302 |                             }
1303 |                         },
1304 |                         "content": {
1305 |                             "application/json": {
1306 |                                 "schema": {
1307 |                                     "$ref": "#/components/schemas/GetHistoryResponseDto"
1308 |                                 }
1309 |                             }
1310 |                         }
1311 |                     },
1312 |                     "400": {
1313 |                         "description": "Bad request"
1314 |                     }
1315 |                 },
1316 |                 "tags": [
1317 |                     "Market"
1318 |                 ]
1319 |             }
1320 |         },
1321 |         "/market/orders-with-trades": {
1322 |             "get": {
1323 |                 "operationId": "MarketController_",
1324 |                 "summary": "Get orders with trades",
1325 |                 "description": "Provide either the x-wallet-token or x-trading-key header. If x-wallet-token is provided, x-trading-key is not required, and vice versa.\n#### Order statuses:\n* `1` - Open\n* `2` - Canceled\n* `3` - Matched\n* `4` - Self-matched\n* `5` - Expired\n \n#### Order types:\n* `0` - LIMIT\n* `1` - IOC\n* `2` - POST\n* `3` - MARKET\n \n#### Order sides:\n* `0` - BUY\n* `1` - SELL\n \n  **Note:** The response is limited to a maximum of **100** records.\n  ",
1326 |                 "parameters": [
1327 |                     {
1328 |                         "name": "address",
1329 |                         "required": true,
1330 |                         "in": "query",
1331 |                         "description": "Wallet address",
1332 |                         "examples": {
1333 |                             "algorand": {
1334 |                                 "value": "EEEMLFBSGYBPNMSIVHLTKIKUSLP2VTF4EN65Y66JXPEVPLU3OUNNKMCWXI",
1335 |                                 "description": "Algorand public key"
1336 |                             },
1337 |                             "evm": {
1338 |                                 "value": "0x3b6845fb389771dBC794E76BBF3E51783a437886",
1339 |                                 "description": "EVM public key"
1340 |                             },
1341 |                             "solana": {
1342 |                                 "value": "HjNg63be7HdsydC8NPtXn43FoVHUMD2kcxpfhBx1r8NN",
1343 |                                 "description": "Solana public key"
1344 |                             }
1345 |                         },
1346 |                         "schema": {}
1347 |                     },
1348 |                     {
1349 |                         "name": "symbol",
1350 |                         "required": true,
1351 |                         "in": "query",
1352 |                         "description": "Market symbol, e.g. sol_eth",
1353 |                         "examples": {
1354 |                             "sol_eth": {
1355 |                                 "value": "sol_eth"
1356 |                             },
1357 |                             "lmbo_algo": {
1358 |                                 "value": "lmbo_algo"
1359 |                             }
1360 |                         },
1361 |                         "schema": {}
1362 |                     },
1363 |                     {
1364 |                         "name": "status",
1365 |                         "required": true,
1366 |                         "in": "query",
1367 |                         "description": "Order status",
1368 |                         "examples": {
1369 |                             "open": {
1370 |                                 "value": 1,
1371 |                                 "description": "Open orders"
1372 |                             },
1373 |                             "closed": {
1374 |                                 "value": 2,
1375 |                                 "description": "Closed orders"
1376 |                             }
1377 |                         },
1378 |                         "schema": {}
1379 |                     },
1380 |                     {
1381 |                         "name": "x-wallet-address",
1382 |                         "in": "header",
1383 |                         "description": "Login wallet address",
1384 |                         "required": true,
1385 |                         "schema": {
1386 |                             "type": "string"
1387 |                         }
1388 |                     },
1389 |                     {
1390 |                         "name": "x-wallet-token",
1391 |                         "in": "header",
1392 |                         "description": "Login session token (optional if API key is provided in x-trading-key)",
1393 |                         "required": false,
1394 |                         "schema": {
1395 |                             "type": "string"
1396 |                         }
1397 |                     },
1398 |                     {
1399 |                         "name": "x-trading-key",
1400 |                         "in": "header",
1401 |                         "description": "Trading key address (optional if x-wallet-token is provided)",
1402 |                         "required": false,
1403 |                         "schema": {
1404 |                             "type": "string"
1405 |                         }
1406 |                     }
1407 |                 ],
1408 |                 "responses": {
1409 |                     "200": {
1410 |                         "description": "Orders with trades retrieved successfully",
1411 |                         "content": {
1412 |                             "application/json": {
1413 |                                 "schema": {
1414 |                                     "example": [
1415 |                                         {
1416 |                                             "id": 110048,
1417 |                                             "pair_id": 56,
1418 |                                             "order_side": 1,
1419 |                                             "order_type": 0,
1420 |                                             "direct_settle": 0,
1421 |                                             "order_price": "5000",
1422 |                                             "order_executed_price": "5000",
1423 |                                             "order_amount": "1000000",
1424 |                                             "order_filled_amount": "200000",
1425 |                                             "order_total": "0",
1426 |                                             "order_filled_total": "0",
1427 |                                             "order_status": 1,
1428 |                                             "trades_id": null,
1429 |                                             "trade_price": null,
1430 |                                             "trade_amount": null,
1431 |                                             "trade_fee": null,
1432 |                                             "trade_rebate": null,
1433 |                                             "trade_total": null,
1434 |                                             "trade_created_at": null,
1435 |                                             "user_id": "HjNg63be7HdsydC8NPtXn43FoVHUMD2kcxpfhBx1r8NN",
1436 |                                             "completed_at": null,
1437 |                                             "created_at": "2024-06-25T14:13:05.252Z",
1438 |                                             "updated_at": "2024-06-25T14:13:09.000Z"
1439 |                                         },
1440 |                                         {
1441 |                                             "id": 110048,
1442 |                                             "pair_id": 56,
1443 |                                             "order_side": 1,
1444 |                                             "order_type": 0,
1445 |                                             "direct_settle": 0,
1446 |                                             "order_price": "5000",
1447 |                                             "order_executed_price": "5000",
1448 |                                             "order_amount": "1000000",
1449 |                                             "order_filled_amount": "200000",
1450 |                                             "order_total": "0",
1451 |                                             "order_filled_total": "0",
1452 |                                             "order_status": 1,
1453 |                                             "trades_id": 453545,
1454 |                                             "trade_price": "5000",
1455 |                                             "trade_amount": "200000",
1456 |                                             "trade_fee": 2,
1457 |                                             "trade_rebate": 0,
1458 |                                             "trade_total": "1000",
1459 |                                             "trade_created_at": "2024-06-25T14:13:05.278Z",
1460 |                                             "user_id": "HjNg63be7HdsydC8NPtXn43FoVHUMD2kcxpfhBx1r8NN",
1461 |                                             "completed_at": null,
1462 |                                             "created_at": "2024-06-25T14:13:05.252Z",
1463 |                                             "updated_at": "2024-06-25T14:13:09.000Z"
1464 |                                         }
1465 |                                     ]
1466 |                                 }
1467 |                             }
1468 |                         }
1469 |                     },
1470 |                     "400": {
1471 |                         "description": "Bad request"
1472 |                     },
1473 |                     "403": {
1474 |                         "description": "Forbidden"
1475 |                     }
1476 |                 },
1477 |                 "tags": [
1478 |                     "Market"
1479 |                 ]
1480 |             }
1481 |         },
1482 |         "/market/wallet-transactions": {
1483 |             "get": {
1484 |                 "operationId": "MarketController_",
1485 |                 "summary": "Get account transactions. Use a new endpoint GET /wallet/transactions",
1486 |                 "deprecated": true,
1487 |                 "description": "Provide either the x-wallet-token or x-trading-key header. If x-wallet-token is provided, x-trading-key is not required, and vice versa.",
1488 |                 "parameters": [
1489 |                     {
1490 |                         "name": "x-wallet-address",
1491 |                         "in": "header",
1492 |                         "description": "Login wallet address",
1493 |                         "required": true,
1494 |                         "schema": {
1495 |                             "type": "string"
1496 |                         }
1497 |                     },
1498 |                     {
1499 |                         "name": "x-wallet-token",
1500 |                         "in": "header",
1501 |                         "description": "Login session token (optional if API key is provided in x-trading-key)",
1502 |                         "required": false,
1503 |                         "schema": {
1504 |                             "type": "string"
1505 |                         }
1506 |                     },
1507 |                     {
1508 |                         "name": "x-trading-key",
1509 |                         "in": "header",
1510 |                         "description": "Trading key address (optional if x-wallet-token is provided)",
1511 |                         "required": false,
1512 |                         "schema": {
1513 |                             "type": "string"
1514 |                         }
1515 |                     }
1516 |                 ],
1517 |                 "responses": {
1518 |                     "200": {
1519 |                         "description": "Account transactions retrieved successfully",
1520 |                         "content": {
1521 |                             "application/json": {
1522 |                                 "schema": {
1523 |                                     "example": [
1524 |                                         {
1525 |                                             "primaryId": 195,
1526 |                                             "id": "bf9484bebe4f30cbff9c1a5a59ed4b4946c149cb581b90ee0496bdef7b6f7828",
1527 |                                             "login_address": "HjNg63be7HdsydC8NPtXn43FoVHUMD2kcxpfhBx1r8NN",
1528 |                                             "login_chain_id": 1,
1529 |                                             "action_type": "deposit",
1530 |                                             "status": "completed",
1531 |                                             "amount": "1000000",
1532 |                                             "targetAddress": "HjNg63be7HdsydC8NPtXn43FoVHUMD2kcxpfhBx1r8NN",
1533 |                                             "timestamp": "2023-12-19T08:33:06.000Z",
1534 |                                             "createdAt": "2023-12-19T08:33:06.576Z",
1535 |                                             "updatedAt": "2023-12-19T08:33:06.576Z",
1536 |                                             "vaa_message": null,
1537 |                                             "token_id": {
1538 |                                                 "id": 12,
1539 |                                                 "address": "Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr",
1540 |                                                 "chainId": 1,
1541 |                                                 "unitName": "USDCs",
1542 |                                                 "name": "",
1543 |                                                 "decimals": 6,
1544 |                                                 "isGas": false,
1545 |                                                 "deletedAt": null
1546 |                                             }
1547 |                                         },
1548 |                                         {
1549 |                                             "primaryId": 432,
1550 |                                             "id": "ef117bad310c4ca6e086b1ef7d8dc8fe9191630bbce8e5806f2c6b24d32a17d5",
1551 |                                             "login_address": "HjNg63be7HdsydC8NPtXn43FoVHUMD2kcxpfhBx1r8NN",
1552 |                                             "login_chain_id": 1,
1553 |                                             "action_type": "deposit",
1554 |                                             "status": "completed",
1555 |                                             "amount": "5000000",
1556 |                                             "targetAddress": "B9a4FpxhTzfv2eCCYBiDdrrYfB23HGRNp3bf38vb1UFP",
1557 |                                             "timestamp": "2024-02-02T12:11:01.000Z",
1558 |                                             "createdAt": "2024-02-02T12:11:01.363Z",
1559 |                                             "updatedAt": "2024-02-02T12:11:07.000Z",
1560 |                                             "vaa_message": {
1561 |                                                 "type": "Buffer",
1562 |                                                 "data": [
1563 |                                                     1,
1564 |                                                     0,
1565 |                                                     0,
1566 |                                                     0,
1567 |                                                     0,
1568 |                                                     1,
1569 |                                                     0,
1570 |                                                     187,
1571 |                                                     94,
1572 |                                                     152,
1573 |                                                     40,
1574 |                                                     10,
1575 |                                                     65,
1576 |                                                     193,
1577 |                                                     165,
1578 |                                                     163,
1579 |                                                     32,
1580 |                                                     162,
1581 |                                                     107,
1582 |                                                     114,
1583 |                                                     224,
1584 |                                                     159,
1585 |                                                     76,
1586 |                                                     119,
1587 |                                                     184,
1588 |                                                     155,
1589 |                                                     80,
1590 |                                                     133,
1591 |                                                     38,
1592 |                                                     61,
1593 |                                                     113,
1594 |                                                     141,
1595 |                                                     151,
1596 |                                                     140,
1597 |                                                     55,
1598 |                                                     83,
1599 |                                                     93,
1600 |                                                     61,
1601 |                                                     29,
1602 |                                                     96,
1603 |                                                     34,
1604 |                                                     196,
1605 |                                                     34,
1606 |                                                     28,
1607 |                                                     167,
1608 |                                                     126,
1609 |                                                     114,
1610 |                                                     188,
1611 |                                                     212,
1612 |                                                     145,
1613 |                                                     246,
1614 |                                                     55,
1615 |                                                     183,
1616 |                                                     167,
1617 |                                                     142,
1618 |                                                     182,
1619 |                                                     202,
1620 |                                                     17,
1621 |                                                     224,
1622 |                                                     191,
1623 |                                                     253,
1624 |                                                     110,
1625 |                                                     96,
1626 |                                                     51,
1627 |                                                     101,
1628 |                                                     16,
1629 |                                                     30,
1630 |                                                     255,
1631 |                                                     70,
1632 |                                                     15,
1633 |                                                     143,
1634 |                                                     1,
1635 |                                                     101,
1636 |                                                     188,
1637 |                                                     219,
1638 |                                                     211,
1639 |                                                     0,
1640 |                                                     0,
1641 |                                                     0,
1642 |                                                     0,
1643 |                                                     0,
1644 |                                                     1,
1645 |                                                     150,
1646 |                                                     198,
1647 |                                                     228,
1648 |                                                     117,
1649 |                                                     219,
1650 |                                                     78,
1651 |                                                     178,
1652 |                                                     49,
1653 |                                                     13,
1654 |                                                     23,
1655 |                                                     82,
1656 |                                                     23,
1657 |                                                     145,
1658 |                                                     30,
1659 |                                                     29,
1660 |                                                     75,
1661 |                                                     2,
1662 |                                                     121,
1663 |                                                     63,
1664 |                                                     94,
1665 |                                                     12,
1666 |                                                     7,
1667 |                                                     55,
1668 |                                                     239,
1669 |                                                     82,
1670 |                                                     114,
1671 |                                                     172,
1672 |                                                     211,
1673 |                                                     140,
1674 |                                                     179,
1675 |                                                     167,
1676 |                                                     14,
1677 |                                                     0,
1678 |                                                     0,
1679 |                                                     0,
1680 |                                                     0,
1681 |                                                     0,
1682 |                                                     0,
1683 |                                                     0,
1684 |                                                     168,
1685 |                                                     1,
1686 |                                                     100,
1687 |                                                     101,
1688 |                                                     112,
1689 |                                                     111,
1690 |                                                     115,
1691 |                                                     105,
1692 |                                                     116,
1693 |                                                     248,
1694 |                                                     149,
1695 |                                                     228,
1696 |                                                     62,
1697 |                                                     63,
1698 |                                                     147,
1699 |                                                     164,
1700 |                                                     23,
1701 |                                                     189,
1702 |                                                     159,
1703 |                                                     139,
1704 |                                                     75,
1705 |                                                     87,
1706 |                                                     156,
1707 |                                                     105,
1708 |                                                     3,
1709 |                                                     54,
1710 |                                                     78,
1711 |                                                     245,
1712 |                                                     116,
1713 |                                                     17,
1714 |                                                     43,
1715 |                                                     78,
1716 |                                                     197,
1717 |                                                     7,
1718 |                                                     45,
1719 |                                                     86,
1720 |                                                     46,
1721 |                                                     130,
1722 |                                                     153,
1723 |                                                     58,
1724 |                                                     91,
1725 |                                                     233,
1726 |                                                     40,
1727 |                                                     57,
1728 |                                                     85,
1729 |                                                     9,
1730 |                                                     101,
1731 |                                                     255,
1732 |                                                     212,
1733 |                                                     214,
1734 |                                                     74,
1735 |                                                     202,
1736 |                                                     175,
1737 |                                                     70,
1738 |                                                     212,
1739 |                                                     93,
1740 |                                                     247,
1741 |                                                     49,
1742 |                                                     142,
1743 |                                                     91,
1744 |                                                     79,
1745 |                                                     87,
1746 |                                                     201,
1747 |                                                     12,
1748 |                                                     72,
1749 |                                                     125,
1750 |                                                     96,
1751 |                                                     98,
1752 |                                                     93,
1753 |                                                     130,
1754 |                                                     155,
1755 |                                                     131,
1756 |                                                     123,
1757 |                                                     0,
1758 |                                                     0,
1759 |                                                     0,
1760 |                                                     0,
1761 |                                                     0,
1762 |                                                     0,
1763 |                                                     0,
1764 |                                                     0,
1765 |                                                     0,
1766 |                                                     0,
1767 |                                                     0,
1768 |                                                     0,
1769 |                                                     0,
1770 |                                                     0,
1771 |                                                     0,
1772 |                                                     0,
1773 |                                                     0,
1774 |                                                     0,
1775 |                                                     0,
1776 |                                                     0,
1777 |                                                     0,
1778 |                                                     0,
1779 |                                                     0,
1780 |                                                     0,
1781 |                                                     0,
1782 |                                                     0,
1783 |                                                     0,
1784 |                                                     0,
1785 |                                                     0,
1786 |                                                     76,
1787 |                                                     75,
1788 |                                                     64,
1789 |                                                     0,
1790 |                                                     0,
1791 |                                                     0,
1792 |                                                     0,
1793 |                                                     0,
1794 |                                                     0,
1795 |                                                     0,
1796 |                                                     0,
1797 |                                                     0,
1798 |                                                     0,
1799 |                                                     0,
1800 |                                                     0,
1801 |                                                     0,
1802 |                                                     0,
1803 |                                                     0,
1804 |                                                     0,
1805 |                                                     0,
1806 |                                                     0,
1807 |                                                     0,
1808 |                                                     0,
1809 |                                                     0,
1810 |                                                     0,
1811 |                                                     0,
1812 |                                                     0,
1813 |                                                     0,
1814 |                                                     0,
1815 |                                                     0,
1816 |                                                     0,
1817 |                                                     0,
1818 |                                                     0,
1819 |                                                     0,
1820 |                                                     1,
1821 |                                                     248,
1822 |                                                     149,
1823 |                                                     228,
1824 |                                                     62,
1825 |                                                     63,
1826 |                                                     147,
1827 |                                                     164,
1828 |                                                     23,
1829 |                                                     189,
1830 |                                                     159,
1831 |                                                     139,
1832 |                                                     75,
1833 |                                                     87,
1834 |                                                     156,
1835 |                                                     105,
1836 |                                                     3,
1837 |                                                     54,
1838 |                                                     78,
1839 |                                                     245,
1840 |                                                     116,
1841 |                                                     17,
1842 |                                                     43,
1843 |                                                     78,
1844 |                                                     197,
1845 |                                                     7,
1846 |                                                     45,
1847 |                                                     86,
1848 |                                                     46,
1849 |                                                     130,
1850 |                                                     153,
1851 |                                                     58,
1852 |                                                     91
1853 |                                                 ]
1854 |                                             },
1855 |                                             "token_id": {
1856 |                                                 "id": 12,
1857 |                                                 "address": "Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr",
1858 |                                                 "chainId": 1,
1859 |                                                 "unitName": "USDCs",
1860 |                                                 "name": "",
1861 |                                                 "decimals": 6,
1862 |                                                 "isGas": false,
1863 |                                                 "deletedAt": null
1864 |                                             }
1865 |                                         }
1866 |                                     ]
1867 |                                 }
1868 |                             }
1869 |                         }
1870 |                     },
1871 |                     "400": {
1872 |                         "description": "Bad request"
1873 |                     },
1874 |                     "403": {
1875 |                         "description": "Forbidden"
1876 |                     }
1877 |                 },
1878 |                 "tags": [
1879 |                     "Market"
1880 |                 ]
1881 |             }
1882 |         },
1883 |         "/market/markets": {
1884 |             "get": {
1885 |                 "operationId": "MarketController_getMarkets",
1886 |                 "summary": "Get markets",
1887 |                 "parameters": [
1888 |                     {
1889 |                         "name": "companyId",
1890 |                         "required": true,
1891 |                         "in": "query",
1892 |                         "description": "Id of the company",
1893 |                         "example": 28,
1894 |                         "schema": {
1895 |                             "type": "string"
1896 |                         }
1897 |                     }
1898 |                 ],
1899 |                 "responses": {
1900 |                     "200": {
1901 |                         "description": "Markets retrieved successfully",
1902 |                         "content": {
1903 |                             "application/json": {
1904 |                                 "schema": {
1905 |                                     "example": [
1906 |                                         {
1907 |                                             "base_chain_id": 8,
1908 |                                             "base_currency": "algo",
1909 |                                             "base_decimal": 6,
1910 |                                             "base_id": "0",
1911 |                                             "created_at": "2024-06-17T10:46:14.550Z",
1912 |                                             "id": 12,
1913 |                                             "is_active": true,
1914 |                                             "min_order_size": "1000000",
1915 |                                             "min_price_increment": "100",
1916 |                                             "min_size_increment": "1000000",
1917 |                                             "pair_key": "algo_usdcs",
1918 |                                             "pair_name": "ALGO_USDCs",
1919 |                                             "pairId": 12,
1920 |                                             "price_chain_id": 1,
1921 |                                             "price_currency": "usdcs",
1922 |                                             "price_decimal": 6,
1923 |                                             "price_id": "Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr",
1924 |                                             "updated_at": "2024-06-17T10:46:14.550Z",
1925 |                                             "inuseWithPartners": [
1926 |                                                 1
1927 |                                             ],
1928 |                                             "restrictedCountries": [],
1929 |                                             "pairSettings": {}
1930 |                                         },
1931 |                                         {
1932 |                                             "base_chain_id": 8,
1933 |                                             "base_currency": "algo",
1934 |                                             "base_decimal": 6,
1935 |                                             "base_id": "0",
1936 |                                             "created_at": "2024-06-17T10:46:14.551Z",
1937 |                                             "id": 13,
1938 |                                             "is_active": true,
1939 |                                             "min_order_size": "1000000",
1940 |                                             "min_price_increment": "100",
1941 |                                             "min_size_increment": "1000000",
1942 |                                             "pair_key": "algo_usdc",
1943 |                                             "pair_name": "ALGO_USDC",
1944 |                                             "pairId": 13,
1945 |                                             "price_chain_id": 8,
1946 |                                             "price_currency": "usdc",
1947 |                                             "price_decimal": 6,
1948 |                                             "price_id": "157824770",
1949 |                                             "updated_at": "2024-06-17T10:46:14.551Z",
1950 |                                             "inuseWithPartners": [
1951 |                                                 1
1952 |                                             ],
1953 |                                             "restrictedCountries": [
1954 |                                                 "US"
1955 |                                             ],
1956 |                                             "pairSettings": {
1957 |                                                 "mft.audioLink": "",
1958 |                                                 "view.baseCoinIconLink": "",
1959 |                                                 "mft.title": ""
1960 |                                             }
1961 |                                         }
1962 |                                     ]
1963 |                                 }
1964 |                             }
1965 |                         }
1966 |                     },
1967 |                     "400": {
1968 |                         "description": "Bad request"
1969 |                     }
1970 |                 },
1971 |                 "tags": [
1972 |                     "Market"
1973 |                 ]
1974 |             }
1975 |         },
1976 |         "/market/market": {
1977 |             "get": {
1978 |                 "operationId": "MarketController_getMarket",
1979 |                 "summary": "Get market details",
1980 |                 "parameters": [
1981 |                     {
1982 |                         "name": "symbol",
1983 |                         "required": true,
1984 |                         "in": "query",
1985 |                         "description": "Market symbol, e.g. sol_eth",
1986 |                         "examples": {
1987 |                             "sol_eth": {
1988 |                                 "value": "sol_eth"
1989 |                             },
1990 |                             "lmbo_algo": {
1991 |                                 "value": "lmbo_algo"
1992 |                             }
1993 |                         },
1994 |                         "schema": {
1995 |                             "type": "string"
1996 |                         }
1997 |                     }
1998 |                 ],
1999 |                 "responses": {
2000 |                     "200": {
2001 |                         "description": "Market details retrieved successfully",
2002 |                         "content": {
2003 |                             "application/json": {
2004 |                                 "schema": {
2005 |                                     "example": {
2006 |                                         "id": 56,
2007 |                                         "pairId": 56,
2008 |                                         "pair_key": "usdcs_algo",
2009 |                                         "is_active": true,
2010 |                                         "base_chain_id": 1,
2011 |                                         "base_currency": "usdcs",
2012 |                                         "base_decimal": 6,
2013 |                                         "base_id": "Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr",
2014 |                                         "price_chain_id": 8,
2015 |                                         "price_currency": "algo",
2016 |                                         "price_decimal": 6,
2017 |                                         "price_id": "0",
2018 |                                         "pair_name": "USDCS_ALGO",
2019 |                                         "min_price_increment": "1000",
2020 |                                         "min_order_size": "1000000",
2021 |                                         "min_size_increment": "100000",
2022 |                                         "created_at": "2023-12-18T18:45:36.906Z",
2023 |                                         "updated_at": "2024-03-14T15:30:24.019Z"
2024 |                                     }
2025 |                                 }
2026 |                             }
2027 |                         }
2028 |                     },
2029 |                     "400": {
2030 |                         "description": "Bad request"
2031 |                     }
2032 |                 },
2033 |                 "tags": [
2034 |                     "Market"
2035 |                 ]
2036 |             }
2037 |         },
2038 |         "/market/settings": {
2039 |             "get": {
2040 |                 "operationId": "MarketController_getSettings",
2041 |                 "summary": "Get market settings",
2042 |                 "parameters": [
2043 |                     {
2044 |                         "name": "wl-domain",
2045 |                         "required": true,
2046 |                         "in": "header",
2047 |                         "description": "Domain of the dApp",
2048 |                         "schema": {
2049 |                             "type": "string"
2050 |                         }
2051 |                     }
2052 |                 ],
2053 |                 "responses": {
2054 |                     "200": {
2055 |                         "description": "Settings retrieved successfully",
2056 |                         "content": {
2057 |                             "application/json": {
2058 |                                 "schema": {
2059 |                                     "example": {
2060 |                                         "company.enabled": "1",
2061 |                                         "partnerId": 201273942,
2062 |                                         "company.appTitle": "ULTRADE",
2063 |                                         "company.domain": "ultradedev.net",
2064 |                                         "product.amm": "false",
2065 |                                         "product.obdex": "true",
2066 |                                         "appearance.logo": "{\"theme1\":{\"value\":\"https://dev.ultradedev.net/Theme%3DDark.svg\",\"active\":true},\"theme2\":{\"value\":\"./Theme%3DLight.svg\",\"active\":true},\"theme3\":{\"value\":\"./Theme%3DLight.svg\",\"active\":true}}",
2067 |                                         "appearance.themes": "{\"theme1\":{\"name\":\"dark\",\"active\":true,\"value\":{\"primary-1\":\"rgba(118, 63, 229, 1)\",\"primary-2\":\"rgba(249, 132, 146, 1)\",\"main-background\":\"rgba(1, 1, 1, 1)\",\"primary-text\":\"rgba(255, 255, 255, 1)\",\"module-background\":\"rgba(19, 23, 34, 1)\",\"buy-text\":\"rgba(82, 164, 154, 1)\",\"buy-background\":\"rgba(2, 199, 122, 0.25)\",\"sell-text\":\"rgba(221, 94, 86, 1)\",\"sell-background\":\"rgba(255, 59, 105, 0.25)\",\"secondary-text\":\"rgba(127, 127, 127, 1)\",\"input-background-default\":\"rgba(13, 15, 21, 1)\",\"input-background-hover\":\"rgba(28, 33, 45, 1)\",\"input-background-disabled\":\"rgba(25, 29, 41, 1)\",\"input-border-default\":\"rgba(28, 33, 45, 1)\",\"module-border\":\"rgba(28, 33, 45, 1)\",\"button-disabled\":\"rgba(111, 113, 118, 1)\",\"button-border\":\"rgba(255, 255, 255, 1)\",\"input-border-active\":\"rgba(185, 163, 238, 1)\",\"active-element-default\":\"rgba(230, 136, 150, 1)\",\"hover-element-default\":\"rgba(185, 163, 238, 1)\",\"dropdown-shadow\":\"rgba(154, 92, 253, 0.45)\",\"button-text\":\"rgba(255, 255, 255, 1)\",\"pair-active-row\":\"rgba(28, 33, 45, 1)\"}},\"theme2\":{\"name\":\"light\",\"active\":true,\"value\":{\"primary-1\":\"rgba(118, 63, 229, 1)\",\"primary-2\":\"rgba(249, 132, 146, 1)\",\"main-background\":\"rgba(249, 248, 248, 1)\",\"primary-text\":\"rgba(0, 0, 0, 1)\",\"module-background\":\"rgba(255, 255, 255, 1)\",\"buy-text\":\"rgba(0, 112, 98, 1)\",\"buy-background\":\"rgba(0, 112, 98, 0.25)\",\"sell-text\":\"rgba(195, 12, 1, 1)\",\"sell-background\":\"rgba(255, 59, 105, 0.25)\",\"secondary-text\":\"rgba(127, 127, 127, 1)\",\"button-disabled\":\"rgba(203, 199, 199, 1)\",\"input-background-default\":\"rgba(255, 255, 255, 1)\",\"input-background-hover\":\"rgba(249, 248, 248, 1)\",\"input-background-disabled\":\"rgba(249, 248, 248, 1)\",\"input-border-default\":\"rgba(228, 225, 225, 1)\",\"module-border\":\"rgba(228, 225, 225, 1)\",\"button-border\":\"rgba(170, 167, 167, 1)\",\"input-border-active\":\"rgba(0, 0, 0, 1)\",\"active-element-default\":\"rgba(230, 136, 150, 1)\",\"hover-element-default\":\"rgba(185, 163, 238, 1)\",\"dropdown-shadow\":\"rgba(154, 92, 253, 0.45)\",\"button-text\":\"rgba(255, 255, 255, 1)\",\"pair-active-row\":\"rgb(249, 248, 248)\"}},\"theme3\":{\"name\":\"purple\",\"active\":true,\"value\":{\"primary-1\":\"rgba(118, 63, 229, 1)\",\"primary-2\":\"rgba(249, 132, 146, 1)\",\"main-background\":\"rgba(255, 255, 255, 1)\",\"primary-text\":\"rgba(0, 0, 0, 1)\",\"secondary-text\":\"rgba(127, 127, 127, 1)\",\"buy-text\":\"rgba(0, 112, 98, 1)\",\"sell-text\":\"rgba(195, 12, 1, 1)\",\"buy-background\":\"rgba(0, 112, 98, 0.25)\",\"sell-background\":\"rgba(255, 59, 105, 0.25)\",\"module-background\":\"rgba(254, 250, 255, 1)\",\"module-border\":\"rgba(228, 225, 225, 1)\",\"input-background-default\":\"rgba(255, 255, 255, 1)\",\"input-background-hover\":\"rgba(249, 248, 248, 1)\",\"input-background-disabled\":\"rgba(254, 250, 255, 1)\",\"input-border-default\":\"rgba(228, 225, 225, 1)\",\"input-border-active\":\"rgba(0, 0, 0, 1)\",\"button-border\":\"rgba(170, 167, 167, 1)\",\"button-disabled\":\"rgba(203, 199, 199, 1)\",\"active-element-default\":\"rgba(230, 136, 150, 1)\",\"hover-element-default\":\"rgba(185, 163, 238, 1)\",\"dropdown-shadow\":\"rgba(154, 92, 253, 0.45)\",\"button-text\":\"rgba(255, 255, 255, 1)\",\"pair-active-row\":\"rgb(249, 248, 248)\"}}}",
2068 |                                         "company.geoblock": "[\"US\"]",
2069 |                                         "markets.pinnedPairs": "[45,47,48,49]",
2070 |                                         "company.minFee": "20",
2071 |                                         "company.makerFee": "200",
2072 |                                         "company.takerFee": "200",
2073 |                                         "company.feeShare": "90000",
2074 |                                         "company.directSettlement": "false",
2075 |                                         "company.ammFee": "10",
2076 |                                         "appearance.newTab": "true",
2077 |                                         "appearance.target": "https://dispenser.dev.ultradedev.net/123123",
2078 |                                         "appearance.reportButtons": "true",
2079 |                                         "currentCountry": "US",
2080 |                                         "isUltrade": true,
2081 |                                         "companyId": 1
2082 |                                     }
2083 |                                 }
2084 |                             }
2085 |                         }
2086 |                     },
2087 |                     "400": {
2088 |                         "description": "Bad request"
2089 |                     }
2090 |                 },
2091 |                 "tags": [
2092 |                     "Market"
2093 |                 ]
2094 |             }
2095 |         },
2096 |         "/market/balances": {
2097 |             "get": {
2098 |                 "operationId": "MarketController_",
2099 |                 "summary": "Get account balances",
2100 |                 "parameters": [
2101 |                     {
2102 |                         "name": "x-wallet-address",
2103 |                         "in": "header",
2104 |                         "description": "Login wallet address",
2105 |                         "required": true,
2106 |                         "schema": {
2107 |                             "type": "string"
2108 |                         }
2109 |                     },
2110 |                     {
2111 |                         "name": "x-wallet-token",
2112 |                         "in": "header",
2113 |                         "description": "Login session token (optional if API key is provided in x-trading-key)",
2114 |                         "required": false,
2115 |                         "schema": {
2116 |                             "type": "string"
2117 |                         }
2118 |                     },
2119 |                     {
2120 |                         "name": "x-trading-key",
2121 |                         "in": "header",
2122 |                         "description": "Trading key address (optional if x-wallet-token is provided)",
2123 |                         "required": false,
2124 |                         "schema": {
2125 |                             "type": "string"
2126 |                         }
2127 |                     }
2128 |                 ],
2129 |                 "responses": {
2130 |                     "200": {
2131 |                         "description": "Balances retrieved successfully",
2132 |                         "schema": {
2133 |                             "example": [
2134 |                                 {
2135 |                                     "hash": "fa97f507eb158752f28b0f95af10a7cc5ed9c257c2997acb1966993136e4be61",
2136 |                                     "loginAddress": "HjNg63be7HdsydC8NPtXn43FoVHUMD2kcxpfhBx1r8NN",
2137 |                                     "loginChainId": 1,
2138 |                                     "tokenId": 1,
2139 |                                     "tokenAddess": "Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr",
2140 |                                     "tokenChainId": 1,
2141 |                                     "amount": "18800000",
2142 |                                     "lockedAmount": "800000"
2143 |                                 }
2144 |                             ]
2145 |                         },
2146 |                         "content": {
2147 |                             "application/json": {
2148 |                                 "schema": {
2149 |                                     "type": "array",
2150 |                                     "items": {
2151 |                                         "$ref": "#/components/schemas/BalanceResponseDto"
2152 |                                     }
2153 |                                 }
2154 |                             }
2155 |                         }
2156 |                     },
2157 |                     "400": {
2158 |                         "description": "Bad request"
2159 |                     }
2160 |                 },
2161 |                 "tags": [
2162 |                     "Market"
2163 |                 ]
2164 |             }
2165 |         },
2166 |         "/market/assets": {
2167 |             "get": {
2168 |                 "operationId": "MarketController_getAssets",
2169 |                 "summary": "Get trading assets",
2170 |                 "parameters": [],
2171 |                 "responses": {
2172 |                     "200": {
2173 |                         "description": "Assets retrieved successfully",
2174 |                         "content": {
2175 |                             "application/json": {
2176 |                                 "schema": {
2177 |                                     "example": [
2178 |                                         {
2179 |                                             "id": 6,
2180 |                                             "address": "0",
2181 |                                             "chainId": 8,
2182 |                                             "name": "ALGO",
2183 |                                             "unitName": "ALGO",
2184 |                                             "decimals": 6,
2185 |                                             "isGas": false,
2186 |                                             "img": "https://assets.coingecko.com/coins/images/1/large/bitcoin.png?1747037003",
2187 |                                             "cmcLink": "https://coinmarketcap.com/currencies/algorand/"
2188 |                                         },
2189 |                                         {
2190 |                                             "id": 7,
2191 |                                             "address": "157824770",
2192 |                                             "chainId": 8,
2193 |                                             "name": "USDC",
2194 |                                             "unitName": "USDC",
2195 |                                             "decimals": 6,
2196 |                                             "isGas": false,
2197 |                                             "img": "https://assets.coingecko.com/coins/images/1/large/bitcoin.png?1747037003",
2198 |                                             "cmcLink": "https://coinmarketcap.com/currencies/algorand/"
2199 |                                         }
2200 |                                     ]
2201 |                                 }
2202 |                             }
2203 |                         }
2204 |                     },
2205 |                     "400": {
2206 |                         "description": "Bad request"
2207 |                     }
2208 |                 },
2209 |                 "tags": [
2210 |                     "Market"
2211 |                 ]
2212 |             }
2213 |         },
2214 |         "/market/chains": {
2215 |             "get": {
2216 |                 "operationId": "MarketController_getChains",
2217 |                 "summary": "Get blockchain chains",
2218 |                 "parameters": [
2219 |                     {
2220 |                         "name": "includeDispenser",
2221 |                         "required": false,
2222 |                         "in": "query",
2223 |                         "description": "Include dispenser",
2224 |                         "schema": {
2225 |                             "type": "boolean"
2226 |                         }
2227 |                     }
2228 |                 ],
2229 |                 "responses": {
2230 |                     "200": {
2231 |                         "description": "Chains retrieved successfully",
2232 |                         "content": {
2233 |                             "application/json": {
2234 |                                 "schema": {
2235 |                                     "example": [
2236 |                                         {
2237 |                                             "chainId": "EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG",
2238 |                                             "name": "Solana Devnet",
2239 |                                             "whChainId": "1",
2240 |                                             "tmc": "2TzePtbeCgY6Y3QfZZdPkvUeTHQtostsKAU5Rr2CVyKh"
2241 |                                         },
2242 |                                         {
2243 |                                             "chainId": "421614",
2244 |                                             "name": "Arbitrum Sepolia",
2245 |                                             "whChainId": "10003",
2246 |                                             "tmc": "0x760e519aB0489B6355F79AC617639DA46fB926e8"
2247 |                                         },
2248 |                                         {
2249 |                                             "chainId": "11155420",
2250 |                                             "name": "Optimism Sepolia",
2251 |                                             "whChainId": "10005",
2252 |                                             "tmc": "0x64Dc3e823eBBF60D8782f5f118d3A3d9311B0917"
2253 |                                         },
2254 |                                         {
2255 |                                             "chainId": "80002",
2256 |                                             "name": "Polygon Amoy",
2257 |                                             "whChainId": "10007",
2258 |                                             "tmc": "0x534d7Be28F3e7e46D756c878D4452f103C8cc168"
2259 |                                         }
2260 |                                     ]
2261 |                                 }
2262 |                             }
2263 |                         }
2264 |                     },
2265 |                     "400": {
2266 |                         "description": "Bad request"
2267 |                     }
2268 |                 },
2269 |                 "tags": [
2270 |                     "Market"
2271 |                 ]
2272 |             }
2273 |         },
2274 |         "/market/fee-rates": {
2275 |             "get": {
2276 |                 "operationId": "MarketController_",
2277 |                 "summary": "Get fee rates",
2278 |                 "parameters": [],
2279 |                 "responses": {
2280 |                     "200": {
2281 |                         "description": "Fee rates provided in basis points. 1 basis point = 0.01%",
2282 |                         "content": {
2283 |                             "application/json": {
2284 |                                 "schema": {
2285 |                                     "$ref": "#/components/schemas/GetFeeRatesResponseDto"
2286 |                                 }
2287 |                             }
2288 |                         }
2289 |                     },
2290 |                     "400": {
2291 |                         "description": "Bad request"
2292 |                     }
2293 |                 },
2294 |                 "tags": [
2295 |                     "Market"
2296 |                 ]
2297 |             }
2298 |         },
2299 |         "/market/wallet/fee-rates": {
2300 |             "get": {
2301 |                 "operationId": "MarketController_",
2302 |                 "summary": "Get fee rates",
2303 |                 "parameters": [],
2304 |                 "responses": {
2305 |                     "200": {
2306 |                         "description": "Fee rates provided in basis points. 1 basis point = 0.01%",
2307 |                         "content": {
2308 |                             "application/json": {
2309 |                                 "schema": {
2310 |                                     "$ref": "#/components/schemas/GetFeeRatesResponseDto"
2311 |                                 }
2312 |                             }
2313 |                         }
2314 |                     },
2315 |                     "400": {
2316 |                         "description": "Bad request"
2317 |                     }
2318 |                 },
2319 |                 "tags": [
2320 |                     "Market"
2321 |                 ]
2322 |             }
2323 |         },
2324 |         "/market/withdrawal-fee": {
2325 |             "get": {
2326 |                 "operationId": "MarketController_",
2327 |                 "summary": "Get withdrawal fee",
2328 |                 "parameters": [],
2329 |                 "responses": {
2330 |                     "200": {
2331 |                         "description": "Withdrawal fee retrieved successfully"
2332 |                     },
2333 |                     "404": {
2334 |                         "description": "Withdrawal fee not found"
2335 |                     }
2336 |                 },
2337 |                 "tags": [
2338 |                     "Market"
2339 |                 ]
2340 |             }
2341 |         },
2342 |         "/market/operation-details": {
2343 |             "get": {
2344 |                 "operationId": "MarketController_",
2345 |                 "parameters": [],
2346 |                 "responses": {
2347 |                     "200": {
2348 |                         "description": ""
2349 |                     }
2350 |                 },
2351 |                 "tags": [
2352 |                     "Market"
2353 |                 ]
2354 |             }
2355 |         },
2356 |         "/market/order/{id}": {
2357 |             "get": {
2358 |                 "operationId": "OrderController_",
2359 |                 "summary": "Get order by ID",
2360 |                 "description": "\n### Here the order result explanation\n\nFor BUY MARKET orders total is more than 0 and equals to the ```amount * price / 10 ^ base_decimal``` \n\nWhen the trade has both the amount and the price it's a regular trade. When the trade price has zero value it's a cancellation trade.\n\nTrade total is not 0 for cancellation trade of BUY MARKET order.\n \n#### Order statuses:\n* `1` - Open\n* `2` - Canceled\n* `3` - Matched\n* `4` - Self-matched\n* `5` - Expired\n \n#### Order types:\n* `0` - LIMIT\n* `1` - IOC\n* `2` - POST\n* `3` - MARKET\n \n#### Order sides:\n* `0` - BUY\n* `1` - SELL\n",
2361 |                 "parameters": [
2362 |                     {
2363 |                         "name": "x-wallet-address",
2364 |                         "in": "header",
2365 |                         "description": "Login wallet address",
2366 |                         "required": true,
2367 |                         "schema": {
2368 |                             "type": "string"
2369 |                         }
2370 |                     },
2371 |                     {
2372 |                         "name": "x-wallet-token",
2373 |                         "in": "header",
2374 |                         "description": "Login session token (optional if API key is provided in x-trading-key)",
2375 |                         "required": false,
2376 |                         "schema": {
2377 |                             "type": "string"
2378 |                         }
2379 |                     },
2380 |                     {
2381 |                         "name": "x-trading-key",
2382 |                         "in": "header",
2383 |                         "description": "Trading key address (optional if x-wallet-token is provided)",
2384 |                         "required": false,
2385 |                         "schema": {
2386 |                             "type": "string"
2387 |                         }
2388 |                     }
2389 |                 ],
2390 |                 "responses": {
2391 |                     "200": {
2392 |                         "description": "Order retrieved successfully",
2393 |                         "schema": {
2394 |                             "example": {
2395 |                                 "id": 2,
2396 |                                 "pairId": 13,
2397 |                                 "pair": "algo_usdc",
2398 |                                 "baseTokenId": 6,
2399 |                                 "baseTokenDecimal": 6,
2400 |                                 "quoteTokenId": 7,
2401 |                                 "quoteTokenDecimal": 6,
2402 |                                 "amount": "10000000",
2403 |                                 "price": "1000000000000000000",
2404 |                                 "total": "0",
2405 |                                 "filledAmount": "2000000",
2406 |                                 "filledTotal": "0",
2407 |                                 "avgPrice": "1000000000000000000",
2408 |                                 "status": 1,
2409 |                                 "side": 1,
2410 |                                 "type": 0,
2411 |                                 "userId": "0x37eAF916551B7DA897244E0f61120B81ad1B8636",
2412 |                                 "createdAt": 1719499926063,
2413 |                                 "updatedAt": 1719499926063,
2414 |                                 "completedAt": null,
2415 |                                 "trades": [
2416 |                                     {
2417 |                                         "tradeId": 1,
2418 |                                         "tradeSide": 0,
2419 |                                         "amount": "1000000",
2420 |                                         "price": "1000000",
2421 |                                         "fee": "0",
2422 |                                         "createdAt": 1719499962401,
2423 |                                         "updatedAt": 1719499963000,
2424 |                                         "isBuyer": false,
2425 |                                         "isMaker": true
2426 |                                     },
2427 |                                     {
2428 |                                         "tradeId": 2,
2429 |                                         "tradeSide": 0,
2430 |                                         "amount": "1000000",
2431 |                                         "price": "1000000",
2432 |                                         "fee": "1000",
2433 |                                         "createdAt": 1719499966665,
2434 |                                         "updatedAt": 1719499967000,
2435 |                                         "isBuyer": false,
2436 |                                         "isMaker": false
2437 |                                     }
2438 |                                 ]
2439 |                             }
2440 |                         },
2441 |                         "content": {
2442 |                             "application/json": {
2443 |                                 "schema": {
2444 |                                     "$ref": "#/components/schemas/GetOrderByIdResponseDto"
2445 |                                 }
2446 |                             }
2447 |                         }
2448 |                     },
2449 |                     "400": {
2450 |                         "description": "Bad request"
2451 |                     }
2452 |                 },
2453 |                 "tags": [
2454 |                     "Market"
2455 |                 ]
2456 |             }
2457 |         },
2458 |         "/market/orders": {
2459 |             "get": {
2460 |                 "operationId": "OrderController_",
2461 |                 "summary": "Get orders",
2462 |                 "description": "Get filtered orders related to the wallet address. \n#### Order statuses:\n* `1` - Open\n* `2` - Canceled\n* `3` - Matched\n* `4` - Self-matched\n* `5` - Expired\n \n#### Order types:\n* `0` - LIMIT\n* `1` - IOC\n* `2` - POST\n* `3` - MARKET\n \n#### Order sides:\n* `0` - BUY\n* `1` - SELL\n",
2463 |                 "parameters": [
2464 |                     {
2465 |                         "name": "x-wallet-address",
2466 |                         "in": "header",
2467 |                         "description": "Login wallet address",
2468 |                         "required": true,
2469 |                         "schema": {
2470 |                             "type": "string"
2471 |                         }
2472 |                     },
2473 |                     {
2474 |                         "name": "x-wallet-token",
2475 |                         "in": "header",
2476 |                         "description": "Login session token (optional if API key is provided in x-trading-key)",
2477 |                         "required": false,
2478 |                         "schema": {
2479 |                             "type": "string"
2480 |                         }
2481 |                     },
2482 |                     {
2483 |                         "name": "x-trading-key",
2484 |                         "in": "header",
2485 |                         "description": "Trading key address (optional if x-wallet-token is provided)",
2486 |                         "required": false,
2487 |                         "schema": {
2488 |                             "type": "string"
2489 |                         }
2490 |                     },
2491 |                     {
2492 |                         "name": "companyId",
2493 |                         "in": "header",
2494 |                         "description": "Optional header for filtering orders by company pairs",
2495 |                         "required": false,
2496 |                         "schema": {
2497 |                             "type": "string"
2498 |                         }
2499 |                     }
2500 |                 ],
2501 |                 "responses": {
2502 |                     "200": {
2503 |                         "description": "Orders retrieved successfully",
2504 |                         "content": {
2505 |                             "application/json": {
2506 |                                 "schema": {
2507 |                                     "example": [
2508 |                                         {
2509 |                                             "id": 2,
2510 |                                             "pairId": 13,
2511 |                                             "pair": "algo_usdc",
2512 |                                             "amount": "10000000",
2513 |                                             "price": "1000000000000000000",
2514 |                                             "total": "0",
2515 |                                             "filledAmount": "2000000",
2516 |                                             "filledTotal": "0",
2517 |                                             "avgPrice": "1000000000000000000",
2518 |                                             "status": 1,
2519 |                                             "side": 1,
2520 |                                             "type": 0,
2521 |                                             "userId": "0x37eAF916551B7DA897244E0f61120B81ad1B8636",
2522 |                                             "createdAt": 1719499926063,
2523 |                                             "updatedAt": 1719499926063
2524 |                                         }
2525 |                                     ]
2526 |                                 }
2527 |                             }
2528 |                         }
2529 |                     },
2530 |                     "400": {
2531 |                         "description": "Bad request"
2532 |                     }
2533 |                 },
2534 |                 "tags": [
2535 |                     "Market"
2536 |                 ]
2537 |             },
2538 |             "post": {
2539 |                 "operationId": "OrderController_",
2540 |                 "summary": "Create new orders",
2541 |                 "description": "\n\n### Order Message values explanation\n\nThe `random` value must be a number no more than 2 ^ 53 - 1\n\nThe `decimalPrice` is a price in decimal string value in the human readable format\n\nThe `price` is in factored units equals `decimalPrice` * 10 ^ 18\n\nThe `version` is a current order msg version. Current value: 1\n\n### Instructions for Creating an Order Creation Message\n\nTo create a message from multiple arguments, follow these steps:\n\n- Concatenate all arguments in their bytes representation in a specific order.\n- Each argument must have a specific length.\n\n#### Example of Message Creation\n\n```typescript\nconst orderBytes = concatBytes([\n  version,               // order msg version number 2 bytes\n  expirationTime,        // expiration time 4 bytes\n  orderSide,             // order side (\"B\" | \"S\") 1 byte\n  price,                 // price in factored units 32 bytes\n  amount,                // amount in atomic units 32 bytes\n  orderType,             // order type (\"L\" | \"I\" | \"P\" | \"M\") 1 byte\n  liginAccountAddress,   // normalized wallet address 32 bytes\n  loginAccountChainId,   // chain id (Wormhole chain id) 2 bytes\n  baseTokenAddress,      // normalized token address 32 bytes\n  baseTokenChainId,      // base token Wormhole chain id 4 bytes\n  priceTokenAddress,     // normalized token address taken from market pair 32 bytes\n  priceTokenChainId,     // price token Wormhole chain id 4 bytes\n  companyId,             // company id 2 bytes\n  randomValue,           // random number 8 bytes\n  decimalPrice,          // human readable price decimal string 8 bytes\n  zeroBytes              // extra 50 zero bytes\n]);\n\nconst bs64OrderBytes = new ByteArray(orderBytes.toBase64());\n```\n\n### Normalizing Addresses\n\nThe normalized address is a 32-byte hex string converted from the original address. This normalization ensures that addresses from different chains are of a consistent length for codex management and WH message interaction.\n\n#### Examples of Normalized Addresses:\n\n- **EVM Address**:\n  - Original: `0xC8b9Cb9D80e8d35486A2bf9e9F8DF793c2d077a0`\n  - Normalized: `00000000000000000000000c8b9cb9d80e8d35486a2bf9e9f8df793c2d077a0`\n\n- **Algorand Address**:\n  - Original: `EN24BSP6WLG2DI7WOZ45P4A2PHI5RKCGA4ZE4W3C6E3GCWBPOUU4ZCX4D4`\n    ```typescript\n    algosdk.decodeAddress(address).publicKey\n    ```\n  - Normalized: `2375c0c9feb2cda1a3f67679d7f01a79d1d8a84607324e5b62f13661582f7529`\n\n- **Solana Address**:\n  - Original: `D6qWNnD6js6Cwbgrq7RBxiQP6uLb5WhSdHSerP7S3hqW`\n    ```typescript\n    bs58.decode(address)\n    ```\n  - Normalized: `b3cafe5d05e60d7452fab7b6300f8b0f16842fa76b1168765bcbd9bbc652003d`\n\n- **Algorand Token ID**:\n  - Original: `10458941`\n  - Normalized: `0000000000000000000000000000000000000000000000000000000010458941`\n\nBy following these instructions and using the provided example, you can concatenate multiple arguments into a byte array and normalize addresses for consistent handling across different blockchain networks.\n\n**Important Note:** The `orderBytes` must be converted to a base64 string and then the base64 string must be converted back to bytes.\n\n#### Final Step: Convert Final Bytes Result into a Hex String\n\n```typescript\nconst hexOrderBytes = Buffer.from(bs64OrderBytes).toString('hex');\n```\n\nThis final conversion ensures the message is in a hexadecimal string format, suitable for transmission or storage.\n\n### Market Order Rules\n\nWhen creating Market Orders, the interpretation of amount and price (which represents the total in this context) depends on the type of market order and whether the order is a buy or sell order.\n#### BUY MARKET ORDER\n\n**By Amount**:\namount is not zero,\n  price (total) is not zero and represents the maximum volume of the quote currency (price coin) you are willing to spend.\n  The system calculates the total amount you will receive based on the current market prices.\n\n**By Total**:\namount is zero,\n  price (total) is not zero and represents the maximum volume of the quote currency (price coin) you are willing to spend.\n  The system calculates the amount of the base currency (amount coin) you will receive for the specified total.\n\n#### SELL MARKET ORDER\n\nBy Amount:\n  amount is not zero and represents the quantity of the base currency (amount coin) you want to sell.\n  price (total) is zero because in a sell market order, the system will automatically determine the total amount of the quote currency (price coin) you will receive based on current market prices.\n\n#### Summary of Logic:\n\nIn Buy Market Orders, the price field represents the maximum total in quote currency you are willing to spend, and it must be provided.\nIn Sell Market Orders, the amount field represents the quantity you wish to sell, and the system calculates the corresponding total based on the market.\n",
2542 |                 "parameters": [
2543 |                     {
2544 |                         "name": "x-wallet-address",
2545 |                         "in": "header",
2546 |                         "description": "Login wallet address",
2547 |                         "required": true,
2548 |                         "schema": {
2549 |                             "type": "string"
2550 |                         }
2551 |                     },
2552 |                     {
2553 |                         "name": "x-wallet-token",
2554 |                         "in": "header",
2555 |                         "description": "Login session token (optional if API key is provided in x-trading-key)",
2556 |                         "required": false,
2557 |                         "schema": {
2558 |                             "type": "string"
2559 |                         }
2560 |                     },
2561 |                     {
2562 |                         "name": "x-trading-key",
2563 |                         "in": "header",
2564 |                         "description": "Trading key address (optional if x-wallet-token is provided)",
2565 |                         "required": false,
2566 |                         "schema": {
2567 |                             "type": "string"
2568 |                         }
2569 |                     }
2570 |                 ],
2571 |                 "responses": {
2572 |                     "200": {
2573 |                         "description": "Order created successfully",
2574 |                         "content": {
2575 |                             "application/json": {
2576 |                                 "schema": {
2577 |                                     "$ref": "#/components/schemas/CreateOrdersDto"
2578 |                                 }
2579 |                             }
2580 |                         }
2581 |                     },
2582 |                     "400": {
2583 |                         "description": "Bad request"
2584 |                     },
2585 |                     "403": {
2586 |                         "description": "Forbidden"
2587 |                     },
2588 |                     "500": {
2589 |                         "description": "Internal server error"
2590 |                     }
2591 |                 },
2592 |                 "tags": [
2593 |                     "Market"
2594 |                 ]
2595 |             },
2596 |             "delete": {
2597 |                 "operationId": "OrderController_",
2598 |                 "summary": "Cancel multiple open orders",
2599 |                 "description": "\n### Instructions for Creating an Order Cancellation Message\n\nTo create a message from data, follow these steps:\n\n1. *Create JSON string from data*\n2. *Convert JSON string to bytes*\n3. *Convert bytes to hex string*\n\nThis final conversion ensures the message is in a hexadecimal string format, suitable for transmission or storage.\n\n\n#### Example of Message Creation\n```\ntypescript\nconst data1 = { \"orderIds\": [1, 8, 16] };\nconst jsonData1 = JSON.stringify(data1);\nconst message1 = Buffer.from(Buffer.from(jsonData1, 'utf-8')).toString(\"hex\");\n\nconst data2 = { \"pairId\": 5 };\nconst jsonData2 = JSON.stringify(data2);\nconst message2 = Buffer.from(Buffer.from(jsonData2, 'utf-8')).toString(\"hex\");\n```\n",
2600 |                 "parameters": [
2601 |                     {
2602 |                         "name": "x-wallet-address",
2603 |                         "in": "header",
2604 |                         "description": "Login wallet address",
2605 |                         "required": true,
2606 |                         "schema": {
2607 |                             "type": "string"
2608 |                         }
2609 |                     },
2610 |                     {
2611 |                         "name": "x-wallet-token",
2612 |                         "in": "header",
2613 |                         "description": "Login session token (optional if API key is provided in x-trading-key)",
2614 |                         "required": false,
2615 |                         "schema": {
2616 |                             "type": "string"
2617 |                         }
2618 |                     },
2619 |                     {
2620 |                         "name": "x-trading-key",
2621 |                         "in": "header",
2622 |                         "description": "Trading key address (optional if x-wallet-token is provided)",
2623 |                         "required": false,
2624 |                         "schema": {
2625 |                             "type": "string"
2626 |                         }
2627 |                     }
2628 |                 ],
2629 |                 "responses": {
2630 |                     "200": {
2631 |                         "description": "Orders cancelled successfully",
2632 |                         "content": {
2633 |                             "application/json": {
2634 |                                 "schema": {
2635 |                                     "example": [
2636 |                                         {
2637 |                                             "orderId": 43,
2638 |                                             "pairId": 1,
2639 |                                             "isCancelled": true,
2640 |                                             "amount": "1000",
2641 |                                             "filledAmount": "873",
2642 |                                             "filledTotal": "9993281000000000000",
2643 |                                             "averageExecutedPrice": "1000000000000000000"
2644 |                                         },
2645 |                                         {
2646 |                                             "orderId": 17,
2647 |                                             "pairId": 1,
2648 |                                             "isCancelled": false,
2649 |                                             "reason": "Order has already cancelled or matched"
2650 |                                         }
2651 |                                     ]
2652 |                                 }
2653 |                             }
2654 |                         }
2655 |                     },
2656 |                     "400": {
2657 |                         "description": "Bad request"
2658 |                     },
2659 |                     "403": {
2660 |                         "description": "Forbidden"
2661 |                     },
2662 |                     "500": {
2663 |                         "description": "Internal server error"
2664 |                     }
2665 |                 },
2666 |                 "tags": [
2667 |                     "Market"
2668 |                 ]
2669 |             }
2670 |         },
2671 |         "/market/open-orders": {
2672 |             "get": {
2673 |                 "operationId": "OrderController_",
2674 |                 "summary": "Get open orders",
2675 |                 "description": "Get open orders related to the wallet address or specifically by the symbol as well. \n#### Order statuses:\n* `1` - Open\n* `2` - Canceled\n* `3` - Matched\n* `4` - Self-matched\n* `5` - Expired\n \n#### Order types:\n* `0` - LIMIT\n* `1` - IOC\n* `2` - POST\n* `3` - MARKET\n \n#### Order sides:\n* `0` - BUY\n* `1` - SELL\n",
2676 |                 "parameters": [
2677 |                     {
2678 |                         "name": "x-wallet-address",
2679 |                         "in": "header",
2680 |                         "description": "Login wallet address",
2681 |                         "required": true,
2682 |                         "schema": {
2683 |                             "type": "string"
2684 |                         }
2685 |                     },
2686 |                     {
2687 |                         "name": "x-wallet-token",
2688 |                         "in": "header",
2689 |                         "description": "Login session token (optional if API key is provided in x-trading-key)",
2690 |                         "required": false,
2691 |                         "schema": {
2692 |                             "type": "string"
2693 |                         }
2694 |                     },
2695 |                     {
2696 |                         "name": "x-trading-key",
2697 |                         "in": "header",
2698 |                         "description": "Trading key address (optional if x-wallet-token is provided)",
2699 |                         "required": false,
2700 |                         "schema": {
2701 |                             "type": "string"
2702 |                         }
2703 |                     },
2704 |                     {
2705 |                         "name": "symbol",
2706 |                         "required": false,
2707 |                         "in": "query",
2708 |                         "description": "Market symbol, e.g. sol_eth",
2709 |                         "examples": {
2710 |                             "sol_eth": {
2711 |                                 "value": "sol_eth"
2712 |                             },
2713 |                             "lmbo_algo": {
2714 |                                 "value": "lmbo_algo"
2715 |                             }
2716 |                         },
2717 |                         "schema": {}
2718 |                     }
2719 |                 ],
2720 |                 "responses": {
2721 |                     "200": {
2722 |                         "description": "Open orders retrieved successfully",
2723 |                         "content": {
2724 |                             "application/json": {
2725 |                                 "schema": {
2726 |                                     "example": [
2727 |                                         {
2728 |                                             "id": 2,
2729 |                                             "pairId": 13,
2730 |                                             "pair": "algo_usdc",
2731 |                                             "amount": "10000000",
2732 |                                             "price": "1000000000000000000",
2733 |                                             "total": "0",
2734 |                                             "filledAmount": "2000000",
2735 |                                             "filledTotal": "0",
2736 |                                             "avgPrice": "1000000000000000000",
2737 |                                             "status": 1,
2738 |                                             "side": 1,
2739 |                                             "type": 0,
2740 |                                             "userId": "0x37eAF916551B7DA897244E0f61120B81ad1B8636",
2741 |                                             "createdAt": 1719499926063,
2742 |                                             "updatedAt": 1719499926063
2743 |                                         }
2744 |                                     ]
2745 |                                 }
2746 |                             }
2747 |                         }
2748 |                     },
2749 |                     "400": {
2750 |                         "description": "Bad request"
2751 |                     }
2752 |                 },
2753 |                 "tags": [
2754 |                     "Market"
2755 |                 ]
2756 |             }
2757 |         },
2758 |         "/market/order/message": {
2759 |             "post": {
2760 |                 "operationId": "OrderController_",
2761 |                 "summary": "Generate message from the order data",
2762 |                 "description": "\n\n### Order Message values explanation\n\nThe `random` value must be a number no more than 2 ^ 53 - 1\n\nThe `decimalPrice` is a price in decimal string value in the human readable format\n\nThe `price` is in factored units equals `decimalPrice` * 10 ^ 18\n\nThe `version` is a current order msg version. Current value: 1\n\nThe `companyId` value can be obtained from the request `GET market/settings`\n\nTokens data can be obtained from the request `GET market/markets`\n",
2763 |                 "parameters": [
2764 |                     {
2765 |                         "name": "x-wallet-address",
2766 |                         "in": "header",
2767 |                         "description": "Login wallet address",
2768 |                         "required": true,
2769 |                         "schema": {
2770 |                             "type": "string"
2771 |                         }
2772 |                     },
2773 |                     {
2774 |                         "name": "x-wallet-token",
2775 |                         "in": "header",
2776 |                         "description": "Login session token (optional if API key is provided in x-trading-key)",
2777 |                         "required": false,
2778 |                         "schema": {
2779 |                             "type": "string"
2780 |                         }
2781 |                     },
2782 |                     {
2783 |                         "name": "x-trading-key",
2784 |                         "in": "header",
2785 |                         "description": "Trading key address (optional if x-wallet-token is provided)",
2786 |                         "required": false,
2787 |                         "schema": {
2788 |                             "type": "string"
2789 |                         }
2790 |                     }
2791 |                 ],
2792 |                 "responses": {
2793 |                     "200": {
2794 |                         "description": "Order message generated successfully"
2795 |                     },
2796 |                     "400": {
2797 |                         "description": "Bad request"
2798 |                     },
2799 |                     "403": {
2800 |                         "description": "Forbidden"
2801 |                     },
2802 |                     "500": {
2803 |                         "description": "Internal server error"
2804 |                     }
2805 |                 },
2806 |                 "tags": [
2807 |                     "Market"
2808 |                 ]
2809 |             }
2810 |         },
2811 |         "/market/order": {
2812 |             "post": {
2813 |                 "operationId": "OrderController_",
2814 |                 "summary": "Create new order",
2815 |                 "description": "\n\n### Order Message values explanation\n\nThe `random` value must be a number no more than 2 ^ 53 - 1\n\nThe `decimalPrice` is a price in decimal string value in the human readable format\n\nThe `price` is in factored units equals `decimalPrice` * 10 ^ 18\n\nThe `version` is a current order msg version. Current value: 1\n\n### Instructions for Creating an Order Creation Message\n\nTo create a message from multiple arguments, follow these steps:\n\n- Concatenate all arguments in their bytes representation in a specific order.\n- Each argument must have a specific length.\n\n#### Example of Message Creation\n\n```typescript\nconst orderBytes = concatBytes([\n  version,               // order msg version number 2 bytes\n  expirationTime,        // expiration time 4 bytes\n  orderSide,             // order side (\"B\" | \"S\") 1 byte\n  price,                 // price in factored units 32 bytes\n  amount,                // amount in atomic units 32 bytes\n  orderType,             // order type (\"L\" | \"I\" | \"P\" | \"M\") 1 byte\n  liginAccountAddress,   // normalized wallet address 32 bytes\n  loginAccountChainId,   // chain id (Wormhole chain id) 2 bytes\n  baseTokenAddress,      // normalized token address 32 bytes\n  baseTokenChainId,      // base token Wormhole chain id 4 bytes\n  priceTokenAddress,     // normalized token address taken from market pair 32 bytes\n  priceTokenChainId,     // price token Wormhole chain id 4 bytes\n  companyId,             // company id 2 bytes\n  randomValue,           // random number 8 bytes\n  decimalPrice,          // human readable price decimal string 8 bytes\n  zeroBytes              // extra 50 zero bytes\n]);\n\nconst bs64OrderBytes = new ByteArray(orderBytes.toBase64());\n```\n\n### Normalizing Addresses\n\nThe normalized address is a 32-byte hex string converted from the original address. This normalization ensures that addresses from different chains are of a consistent length for codex management and WH message interaction.\n\n#### Examples of Normalized Addresses:\n\n- **EVM Address**:\n  - Original: `0xC8b9Cb9D80e8d35486A2bf9e9F8DF793c2d077a0`\n  - Normalized: `00000000000000000000000c8b9cb9d80e8d35486a2bf9e9f8df793c2d077a0`\n\n- **Algorand Address**:\n  - Original: `EN24BSP6WLG2DI7WOZ45P4A2PHI5RKCGA4ZE4W3C6E3GCWBPOUU4ZCX4D4`\n    ```typescript\n    algosdk.decodeAddress(address).publicKey\n    ```\n  - Normalized: `2375c0c9feb2cda1a3f67679d7f01a79d1d8a84607324e5b62f13661582f7529`\n\n- **Solana Address**:\n  - Original: `D6qWNnD6js6Cwbgrq7RBxiQP6uLb5WhSdHSerP7S3hqW`\n    ```typescript\n    bs58.decode(address)\n    ```\n  - Normalized: `b3cafe5d05e60d7452fab7b6300f8b0f16842fa76b1168765bcbd9bbc652003d`\n\n- **Algorand Token ID**:\n  - Original: `10458941`\n  - Normalized: `0000000000000000000000000000000000000000000000000000000010458941`\n\nBy following these instructions and using the provided example, you can concatenate multiple arguments into a byte array and normalize addresses for consistent handling across different blockchain networks.\n\n**Important Note:** The `orderBytes` must be converted to a base64 string and then the base64 string must be converted back to bytes.\n\n#### Final Step: Convert Final Bytes Result into a Hex String\n\n```typescript\nconst hexOrderBytes = Buffer.from(bs64OrderBytes).toString('hex');\n```\n\nThis final conversion ensures the message is in a hexadecimal string format, suitable for transmission or storage.\n\n### Market Order Rules\n\nWhen creating Market Orders, the interpretation of amount and price (which represents the total in this context) depends on the type of market order and whether the order is a buy or sell order.\n#### BUY MARKET ORDER\n\n**By Amount**:\namount is not zero,\n  price (total) is not zero and represents the maximum volume of the quote currency (price coin) you are willing to spend.\n  The system calculates the total amount you will receive based on the current market prices.\n\n**By Total**:\namount is zero,\n  price (total) is not zero and represents the maximum volume of the quote currency (price coin) you are willing to spend.\n  The system calculates the amount of the base currency (amount coin) you will receive for the specified total.\n\n#### SELL MARKET ORDER\n\nBy Amount:\n  amount is not zero and represents the quantity of the base currency (amount coin) you want to sell.\n  price (total) is zero because in a sell market order, the system will automatically determine the total amount of the quote currency (price coin) you will receive based on current market prices.\n\n#### Summary of Logic:\n\nIn Buy Market Orders, the price field represents the maximum total in quote currency you are willing to spend, and it must be provided.\nIn Sell Market Orders, the amount field represents the quantity you wish to sell, and the system calculates the corresponding total based on the market.\n",
2816 |                 "parameters": [
2817 |                     {
2818 |                         "name": "x-wallet-address",
2819 |                         "in": "header",
2820 |                         "description": "Login wallet address",
2821 |                         "required": true,
2822 |                         "schema": {
2823 |                             "type": "string"
2824 |                         }
2825 |                     },
2826 |                     {
2827 |                         "name": "x-wallet-token",
2828 |                         "in": "header",
2829 |                         "description": "Login session token (optional if API key is provided in x-trading-key)",
2830 |                         "required": false,
2831 |                         "schema": {
2832 |                             "type": "string"
2833 |                         }
2834 |                     },
2835 |                     {
2836 |                         "name": "x-trading-key",
2837 |                         "in": "header",
2838 |                         "description": "Trading key address (optional if x-wallet-token is provided)",
2839 |                         "required": false,
2840 |                         "schema": {
2841 |                             "type": "string"
2842 |                         }
2843 |                     }
2844 |                 ],
2845 |                 "responses": {
2846 |                     "201": {
2847 |                         "description": "Order created successfully"
2848 |                     },
2849 |                     "400": {
2850 |                         "description": "Bad request"
2851 |                     },
2852 |                     "403": {
2853 |                         "description": "Forbidden"
2854 |                     },
2855 |                     "500": {
2856 |                         "description": "Internal server error"
2857 |                     }
2858 |                 },
2859 |                 "tags": [
2860 |                     "Market"
2861 |                 ]
2862 |             },
2863 |             "delete": {
2864 |                 "operationId": "OrderController_",
2865 |                 "summary": "Cancel open order",
2866 |                 "description": "\n### Instructions for Creating an Order Cancellation Message\n\nTo create a message from data, follow these steps:\n\n1. *Create JSON string from data*\n2. *Convert JSON string to bytes*\n3. *Convert bytes to hex string*\n\nThis final conversion ensures the message is in a hexadecimal string format, suitable for transmission or storage.\n\n\n#### Example of Message Creation\n```\ntypescript\nconst data = { \"orderId\": 1 };\nconst jsonData = JSON.stringify(data);\nconst message = Buffer.from(Buffer.from(jsonData, 'utf-8')).toString(\"hex\");\n```\n",
2867 |                 "parameters": [
2868 |                     {
2869 |                         "name": "x-wallet-address",
2870 |                         "in": "header",
2871 |                         "description": "Login wallet address",
2872 |                         "required": true,
2873 |                         "schema": {
2874 |                             "type": "string"
2875 |                         }
2876 |                     },
2877 |                     {
2878 |                         "name": "x-wallet-token",
2879 |                         "in": "header",
2880 |                         "description": "Login session token (optional if API key is provided in x-trading-key)",
2881 |                         "required": false,
2882 |                         "schema": {
2883 |                             "type": "string"
2884 |                         }
2885 |                     },
2886 |                     {
2887 |                         "name": "x-trading-key",
2888 |                         "in": "header",
2889 |                         "description": "Trading key address (optional if x-wallet-token is provided)",
2890 |                         "required": false,
2891 |                         "schema": {
2892 |                             "type": "string"
2893 |                         }
2894 |                     }
2895 |                 ],
2896 |                 "responses": {
2897 |                     "200": {
2898 |                         "description": "Order cancelled successfully",
2899 |                         "content": {
2900 |                             "application/json": {
2901 |                                 "schema": {
2902 |                                     "example": {
2903 |                                         "orderId": 43,
2904 |                                         "pairId": 1,
2905 |                                         "isCancelled": true,
2906 |                                         "amount": "1000",
2907 |                                         "filledAmount": "873",
2908 |                                         "filledTotal": "9993281000000000000",
2909 |                                         "averageExecutedPrice": "1000000000000000000"
2910 |                                     }
2911 |                                 }
2912 |                             }
2913 |                         }
2914 |                     },
2915 |                     "400": {
2916 |                         "description": "Bad request"
2917 |                     },
2918 |                     "403": {
2919 |                         "description": "Forbidden"
2920 |                     },
2921 |                     "500": {
2922 |                         "description": "Internal server error"
2923 |                     }
2924 |                 },
2925 |                 "tags": [
2926 |                     "Market"
2927 |                 ]
2928 |             }
2929 |         },
2930 |         "/system/time": {
2931 |             "get": {
2932 |                 "operationId": "SystemController_getTime",
2933 |                 "summary": "Get current system time",
2934 |                 "parameters": [],
2935 |                 "responses": {
2936 |                     "200": {
2937 |                         "description": "Current system time retrieved successfully",
2938 |                         "content": {
2939 |                             "application/json": {
2940 |                                 "schema": {
2941 |                                     "example": {
2942 |                                         "currentTime": 1719327351644
2943 |                                     }
2944 |                                 }
2945 |                             }
2946 |                         }
2947 |                     }
2948 |                 },
2949 |                 "tags": [
2950 |                     "System"
2951 |                 ]
2952 |             }
2953 |         },
2954 |         "/system/maintenance": {
2955 |             "get": {
2956 |                 "operationId": "SystemController_getMaintenance",
2957 |                 "summary": "Get system maintenance status",
2958 |                 "parameters": [],
2959 |                 "responses": {
2960 |                     "200": {
2961 |                         "description": "System maintenance status retrieved successfully",
2962 |                         "content": {
2963 |                             "application/json": {
2964 |                                 "schema": {
2965 |                                     "example": {
2966 |                                         "mode": 0
2967 |                                     }
2968 |                                 }
2969 |                             }
2970 |                         }
2971 |                     }
2972 |                 },
2973 |                 "tags": [
2974 |                     "System"
2975 |                 ]
2976 |             }
2977 |         },
2978 |         "/system/version": {
2979 |             "get": {
2980 |                 "operationId": "SystemController_getVersion",
2981 |                 "summary": "Get system version",
2982 |                 "parameters": [],
2983 |                 "responses": {
2984 |                     "200": {
2985 |                         "description": "System version retrieved successfully",
2986 |                         "content": {
2987 |                             "application/json": {
2988 |                                 "schema": {
2989 |                                     "example": {
2990 |                                         "version": "1.0.0"
2991 |                                     }
2992 |                                 }
2993 |                             }
2994 |                         }
2995 |                     }
2996 |                 },
2997 |                 "tags": [
2998 |                     "System"
2999 |                 ]
3000 |             }
3001 |         }
3002 |     },
3003 |     "info": {
3004 |         "title": "Ultrade API Documentation",
3005 |         "description": "\n        Welcome to the Ultrade API Documentation.\n  \n        **Rate Limiting:**  \n        All endpoints are protected by a rate limit of **250 requests per IP address** within a **5-minute window**.  \n        If the rate limit is exceeded, further requests from that IP address may be blocked temporarily with a `429 Too Many Requests` response.\n        ",
3006 |         "version": "1.0",
3007 |         "contact": {}
3008 |     },
3009 |     "tags": [],
3010 |     "servers": [],
3011 |     "components": {
3012 |         "schemas": {
3013 |             "WalletDataDto": {
3014 |                 "type": "object",
3015 |                 "properties": {
3016 |                     "address": {
3017 |                         "type": "string",
3018 |                         "description": "Login wallet address",
3019 |                         "example": "D6qWNnD6js6Cwbgrq7RBxiQP6uLb5WhSdHSerP7S3hqW"
3020 |                     },
3021 |                     "technology": {
3022 |                         "type": "string",
3023 |                         "description": "Technology",
3024 |                         "example": "SOLANA"
3025 |                     }
3026 |                 },
3027 |                 "required": [
3028 |                     "address",
3029 |                     "technology"
3030 |                 ]
3031 |             },
3032 |             "PostSignInMessageDto": {
3033 |                 "type": "object",
3034 |                 "properties": {
3035 |                     "data": {
3036 |                         "description": "Wallet data",
3037 |                         "example": {
3038 |                             "address": "D6qWNnD6js6Cwbgrq7RBxiQP6uLb5WhSdHSerP7S3hqW",
3039 |                             "technology": "SOLANA"
3040 |                         },
3041 |                         "allOf": [
3042 |                             {
3043 |                                 "$ref": "#/components/schemas/WalletDataDto"
3044 |                             }
3045 |                         ]
3046 |                     },
3047 |                     "customMessage": {
3048 |                         "type": "string",
3049 |                         "description": "Custom signing message",
3050 |                         "example": "By signing this message you are logging into your trading account"
3051 |                     }
3052 |                 },
3053 |                 "required": [
3054 |                     "data"
3055 |                 ]
3056 |             },
3057 |             "PostSignInDto": {
3058 |                 "type": "object",
3059 |                 "properties": {
3060 |                     "message": {
3061 |                         "type": "string",
3062 |                         "description": "The signed message in hex format",
3063 |                         "example": "574954484452415720312055534443732028536f6c616e61204465766e6574290a4665653a20555344437320302e303030303031202824302e3030290a546f6b656e2069643a204768395a77456d644c4a384473634b4e546b547150624e774c4e4e426a75537a6147395670324b47744b4a720a546f204163636f756e743a20443671574e6e44366a73364377626772713752427869515036754c62355768536448536572503753336871570a7338722b5851586d445852532b7265324d412b4c447861454c366472455768325738765a75385a5341443041414141414141414141656b6f4f56554a5a662f55316b724b72306255586663786a6c745056386b4d53483167596c32436d344e377338722b5851586d445852532b7265324d412b4c447861454c366472455768325738765a75385a534144304141414141414141414151414141414141414141414141414141414141414141414141414141414141414141414141414144304a414141414141414141414141414141414141414141414141414141414141414141414141414141414141414142"
3064 |                     },
3065 |                     "signature": {
3066 |                         "type": "string",
3067 |                         "description": "The signature of the message",
3068 |                         "example": "E3qKLcR5g54Xb9ojTKzLEjCLHGcrHgisMxu2UziVb1Bo4BxKpRtQ75MhXB42ZCKUi1Ad1suhDB2GLwyG3kV5XMC"
3069 |                     },
3070 |                     "data": {
3071 |                         "description": "Wallet data",
3072 |                         "example": {
3073 |                             "address": "D6qWNnD6js6Cwbgrq7RBxiQP6uLb5WhSdHSerP7S3hqW",
3074 |                             "technology": "SOLANA"
3075 |                         },
3076 |                         "allOf": [
3077 |                             {
3078 |                                 "$ref": "#/components/schemas/WalletDataDto"
3079 |                             }
3080 |                         ]
3081 |                     },
3082 |                     "referralToken": {
3083 |                         "type": "string",
3084 |                         "description": "Affiliate referral token"
3085 |                     }
3086 |                 },
3087 |                 "required": [
3088 |                     "message",
3089 |                     "signature",
3090 |                     "data"
3091 |                 ]
3092 |             },
3093 |             "PostTradingKeyMessageDto": {
3094 |                 "type": "object",
3095 |                 "properties": {
3096 |                     "tkAddress": {
3097 |                         "type": "string",
3098 |                         "description": "Trading key algorand address",
3099 |                         "example": "3CRQVNKS7O23IY6GTVF65SLARWL5G6BSSEPEPNT5XFWIWLDTYZMQI4X3HM"
3100 |                     },
3101 |                     "loginAddress": {
3102 |                         "type": "string",
3103 |                         "description": "Login wallet address",
3104 |                         "example": "0x58952B2f7e14b9F410E90EEdE4474B40e09a4B1b"
3105 |                     },
3106 |                     "loginChainId": {
3107 |                         "type": "number",
3108 |                         "description": "Wormhole chain id",
3109 |                         "enum": [
3110 |                             1,
3111 |                             8,
3112 |                             5,
3113 |                             4,
3114 |                             6,
3115 |                             23,
3116 |                             24,
3117 |                             30,
3118 |                             2,
3119 |                             10002,
3120 |                             10003,
3121 |                             10004,
3122 |                             10005,
3123 |                             10007
3124 |                         ],
3125 |                         "example": "5"
3126 |                     },
3127 |                     "expiredDate": {
3128 |                         "type": "number",
3129 |                         "description": "UTC timestamp in seconds; If it's not set then no expiration",
3130 |                         "example": "1726680065"
3131 |                     },
3132 |                     "addKey": {
3133 |                         "type": "boolean",
3134 |                         "description": "Add a trading key if the value is true, otherwise revoke"
3135 |                     },
3136 |                     "type": {
3137 |                         "type": "string",
3138 |                         "description": "Type of trading key",
3139 |                         "enum": [
3140 |                             "User",
3141 |                             "API"
3142 |                         ]
3143 |                     }
3144 |                 },
3145 |                 "required": [
3146 |                     "tkAddress",
3147 |                     "loginAddress",
3148 |                     "loginChainId",
3149 |                     "addKey",
3150 |                     "type"
3151 |                 ]
3152 |             },
3153 |             "WithdrawDataDto": {
3154 |                 "type": "object",
3155 |                 "properties": {
3156 |                     "loginAddress": {
3157 |                         "type": "string",
3158 |                         "description": "Login wallet address",
3159 |                         "example": "D6qWNnD6js6Cwbgrq7RBxiQP6uLb5WhSdHSerP7S3hqW"
3160 |                     },
3161 |                     "loginChainId": {
3162 |                         "type": "number",
3163 |                         "description": "Wormhole chain ID",
3164 |                         "example": 1
3165 |                     },
3166 |                     "tokenAmount": {
3167 |                         "type": "string",
3168 |                         "description": "Withdrawal amount in atomic units",
3169 |                         "example": "1000000"
3170 |                     },
3171 |                     "tokenIndex": {
3172 |                         "type": "string",
3173 |                         "description": "Withdrawal token address",
3174 |                         "example": "Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr"
3175 |                     },
3176 |                     "tokenChainId": {
3177 |                         "type": "number",
3178 |                         "description": "Token chain ID",
3179 |                         "example": 1
3180 |                     },
3181 |                     "recipient": {
3182 |                         "type": "string",
3183 |                         "description": "Recipient address",
3184 |                         "example": "D6qWNnD6js6Cwbgrq7RBxiQP6uLb5WhSdHSerP7S3hqW"
3185 |                     },
3186 |                     "recipientChainId": {
3187 |                         "type": "number",
3188 |                         "description": "Recipient chain ID",
3189 |                         "example": 1
3190 |                     },
3191 |                     "isNative": {
3192 |                         "type": "boolean",
3193 |                         "description": "Is native token",
3194 |                         "example": false
3195 |                     },
3196 |                     "fee": {
3197 |                         "type": "number",
3198 |                         "description": "Fee amount",
3199 |                         "example": "1"
3200 |                     }
3201 |                 },
3202 |                 "required": [
3203 |                     "loginAddress",
3204 |                     "loginChainId",
3205 |                     "tokenAmount",
3206 |                     "tokenIndex",
3207 |                     "tokenChainId",
3208 |                     "recipient",
3209 |                     "recipientChainId",
3210 |                     "isNative",
3211 |                     "fee"
3212 |                 ]
3213 |             },
3214 |             "PostWithdrawMessageDto": {
3215 |                 "type": "object",
3216 |                 "properties": {
3217 |                     "data": {
3218 |                         "description": "The withdrawal data to create the signing message",
3219 |                         "example": {
3220 |                             "loginAddress": "D6qWNnD6js6Cwbgrq7RBxiQP6uLb5WhSdHSerP7S3hqW",
3221 |                             "loginChainId": 1,
3222 |                             "tokenAmount": "1000000",
3223 |                             "tokenIndex": "Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr",
3224 |                             "tokenChainId": 1,
3225 |                             "recipient": "D6qWNnD6js6Cwbgrq7RBxiQP6uLb5WhSdHSerP7S3hqW",
3226 |                             "recipientChainId": 1,
3227 |                             "fee": "1",
3228 |                             "isNative": false
3229 |                         },
3230 |                         "allOf": [
3231 |                             {
3232 |                                 "$ref": "#/components/schemas/WithdrawDataDto"
3233 |                             }
3234 |                         ]
3235 |                     },
3236 |                     "customMessage": {
3237 |                         "type": "string",
3238 |                         "description": "The custom message visible to the user",
3239 |                         "example": "WITHDRAW 0.0001 STT"
3240 |                     }
3241 |                 },
3242 |                 "required": [
3243 |                     "data"
3244 |                 ]
3245 |             },
3246 |             "GetPriceResponseDto": {
3247 |                 "type": "object",
3248 |                 "properties": {
3249 |                     "pairId": {
3250 |                         "type": "number",
3251 |                         "description": "Market id",
3252 |                         "example": 46
3253 |                     },
3254 |                     "pair": {
3255 |                         "type": "string",
3256 |                         "description": "Market symbol",
3257 |                         "example": "usdcs_algo"
3258 |                     },
3259 |                     "askPrice": {
3260 |                         "type": "string",
3261 |                         "description": "Ask price in atomic units",
3262 |                         "example": "35000"
3263 |                     },
3264 |                     "askQty": {
3265 |                         "type": "string",
3266 |                         "description": "Ask depth in atomic units",
3267 |                         "example": "64000000"
3268 |                     },
3269 |                     "bidPrice": {
3270 |                         "type": "string",
3271 |                         "description": "Bid price in atomic units",
3272 |                         "example": "29910"
3273 |                     },
3274 |                     "bidQty": {
3275 |                         "type": "string",
3276 |                         "description": "Bid depth in atomic units",
3277 |                         "example": "247000000"
3278 |                     },
3279 |                     "lastPrice": {
3280 |                         "type": "string",
3281 |                         "description": "Last price in atomic units",
3282 |                         "example": "31230"
3283 |                     },
3284 |                     "ts": {
3285 |                         "type": "number",
3286 |                         "description": "UTC timestamp with microseconds",
3287 |                         "example": 1719323536855.245
3288 |                     },
3289 |                     "u": {
3290 |                         "type": "number",
3291 |                         "description": "The last sequence number of the order book update",
3292 |                         "example": 4065
3293 |                     },
3294 |                     "U": {
3295 |                         "type": "number",
3296 |                         "description": "The prev sequence number of the order book update",
3297 |                         "example": 4021
3298 |                     }
3299 |                 },
3300 |                 "required": [
3301 |                     "pairId",
3302 |                     "pair",
3303 |                     "askPrice",
3304 |                     "askQty",
3305 |                     "bidPrice",
3306 |                     "bidQty",
3307 |                     "lastPrice",
3308 |                     "ts",
3309 |                     "u",
3310 |                     "U"
3311 |                 ]
3312 |             },
3313 |             "GetDepthResponseDto": {
3314 |                 "type": "object",
3315 |                 "properties": {
3316 |                     "pair": {
3317 |                         "type": "string",
3318 |                         "description": "Market symbol",
3319 |                         "example": "usdcs_algo"
3320 |                     },
3321 |                     "buy": {
3322 |                         "description": "Order book depth of buy side",
3323 |                         "example": [
3324 |                             [
3325 |                                 "1000",
3326 |                                 "1000000"
3327 |                             ]
3328 |                         ],
3329 |                         "type": "array",
3330 |                         "items": {
3331 |                             "type": "string"
3332 |                         }
3333 |                     },
3334 |                     "sell": {
3335 |                         "description": "Order book depth of sell side",
3336 |                         "example": [
3337 |                             [
3338 |                                 "7000",
3339 |                                 "1000000"
3340 |                             ]
3341 |                         ],
3342 |                         "type": "array",
3343 |                         "items": {
3344 |                             "type": "string"
3345 |                         }
3346 |                     },
3347 |                     "ts": {
3348 |                         "type": "number",
3349 |                         "description": "UTC timestamp with microseconds",
3350 |                         "example": 1719323536855.245
3351 |                     },
3352 |                     "u": {
3353 |                         "type": "number",
3354 |                         "description": "The last sequence number of the order book update",
3355 |                         "example": 4065
3356 |                     }
3357 |                 },
3358 |                 "required": [
3359 |                     "pair",
3360 |                     "buy",
3361 |                     "sell",
3362 |                     "ts",
3363 |                     "u"
3364 |                 ]
3365 |             },
3366 |             "GetHistoryResponseDto": {
3367 |                 "type": "object",
3368 |                 "properties": {
3369 |                     "t": {
3370 |                         "description": "Timestamps",
3371 |                         "example": [
3372 |                             1702944000,
3373 |                             1705968000,
3374 |                             1707177600,
3375 |                             1708473600,
3376 |                             1709596800,
3377 |                             1710201600,
3378 |                             1710288000,
3379 |                             1710374400,
3380 |                             1716249600,
3381 |                             1716336000,
3382 |                             1716422400,
3383 |                             1716508800,
3384 |                             1719273600
3385 |                         ],
3386 |                         "type": "array",
3387 |                         "items": {
3388 |                             "type": "string"
3389 |                         }
3390 |                     },
3391 |                     "o": {
3392 |                         "description": "Open prices",
3393 |                         "example": [
3394 |                             0.001,
3395 |                             0.001,
3396 |                             0.05,
3397 |                             0.001,
3398 |                             0.044,
3399 |                             0.046,
3400 |                             0.048,
3401 |                             0.049,
3402 |                             0.001,
3403 |                             1,
3404 |                             0.01,
3405 |                             0.019,
3406 |                             0.001
3407 |                         ],
3408 |                         "type": "array",
3409 |                         "items": {
3410 |                             "type": "string"
3411 |                         }
3412 |                     },
3413 |                     "c": {
3414 |                         "description": "Close prices",
3415 |                         "example": [
3416 |                             0.001,
3417 |                             0.013,
3418 |                             0.05,
3419 |                             0.001,
3420 |                             0.045,
3421 |                             0.046,
3422 |                             0.048,
3423 |                             0.049,
3424 |                             0.001,
3425 |                             1,
3426 |                             1,
3427 |                             0.001,
3428 |                             0.006
3429 |                         ],
3430 |                         "type": "array",
3431 |                         "items": {
3432 |                             "type": "string"
3433 |                         }
3434 |                     },
3435 |                     "l": {
3436 |                         "description": "Low prices",
3437 |                         "example": [
3438 |                             0.001,
3439 |                             0.001,
3440 |                             0.05,
3441 |                             0.001,
3442 |                             0.044,
3443 |                             0.046,
3444 |                             0.048,
3445 |                             0.049,
3446 |                             0.001,
3447 |                             1,
3448 |                             0.001,
3449 |                             0.001,
3450 |                             0.001
3451 |                         ],
3452 |                         "type": "array",
3453 |                         "items": {
3454 |                             "type": "string"
3455 |                         }
3456 |                     },
3457 |                     "h": {
3458 |                         "description": "High prices",
3459 |                         "example": [
3460 |                             0.001,
3461 |                             0.17,
3462 |                             0.05,
3463 |                             0.002,
3464 |                             0.045,
3465 |                             0.046,
3466 |                             0.048,
3467 |                             0.049,
3468 |                             0.001,
3469 |                             1,
3470 |                             1,
3471 |                             0.019,
3472 |                             0.2
3473 |                         ],
3474 |                         "type": "array",
3475 |                         "items": {
3476 |                             "type": "string"
3477 |                         }
3478 |                     },
3479 |                     "v": {
3480 |                         "description": "Base coin volumes",
3481 |                         "example": [
3482 |                             1,
3483 |                             28.5,
3484 |                             1,
3485 |                             3.8,
3486 |                             2,
3487 |                             1,
3488 |                             1,
3489 |                             2,
3490 |                             1,
3491 |                             3,
3492 |                             12,
3493 |                             19,
3494 |                             4
3495 |                         ],
3496 |                         "type": "array",
3497 |                         "items": {
3498 |                             "type": "string"
3499 |                         }
3500 |                     },
3501 |                     "q": {
3502 |                         "description": "Quote coin volumes",
3503 |                         "example": [
3504 |                             1,
3505 |                             28.5,
3506 |                             1,
3507 |                             3.8,
3508 |                             2,
3509 |                             1,
3510 |                             1,
3511 |                             2,
3512 |                             1,
3513 |                             3,
3514 |                             12,
3515 |                             19,
3516 |                             4
3517 |                         ],
3518 |                         "type": "array",
3519 |                         "items": {
3520 |                             "type": "string"
3521 |                         }
3522 |                     },
3523 |                     "s": {
3524 |                         "type": "string",
3525 |                         "description": "Status",
3526 |                         "example": "ok"
3527 |                     },
3528 |                     "b": {
3529 |                         "type": "number",
3530 |                         "description": "Start timestamp of trading history in UTC in ms",
3531 |                         "example": 1702989335082
3532 |                     }
3533 |                 },
3534 |                 "required": [
3535 |                     "t",
3536 |                     "o",
3537 |                     "c",
3538 |                     "l",
3539 |                     "h",
3540 |                     "v",
3541 |                     "q",
3542 |                     "s",
3543 |                     "b"
3544 |                 ]
3545 |             },
3546 |             "BalanceResponseDto": {
3547 |                 "type": "object",
3548 |                 "properties": {
3549 |                     "hash": {
3550 |                         "type": "string",
3551 |                         "description": "Hash of balance",
3552 |                         "example": "fa97f507eb158752f28b0f95af10a7cc5ed9c257c2997acb1966993136e4be61"
3553 |                     },
3554 |                     "loginAddress": {
3555 |                         "type": "string",
3556 |                         "description": "Login wallet address",
3557 |                         "example": "HjNg63be7HdsydC8NPtXn43FoVHUMD2kcxpfhBx1r8NN"
3558 |                     },
3559 |                     "loginChainId": {
3560 |                         "type": "number",
3561 |                         "description": "Login wallet chain id",
3562 |                         "example": 1
3563 |                     },
3564 |                     "tokenId": {
3565 |                         "type": "number",
3566 |                         "description": "Token id",
3567 |                         "example": 1
3568 |                     },
3569 |                     "tokenAddress": {
3570 |                         "type": "string",
3571 |                         "description": "Token address",
3572 |                         "example": "Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr"
3573 |                     },
3574 |                     "tokenChainId": {
3575 |                         "type": "number",
3576 |                         "description": "Token chain id",
3577 |                         "example": 1
3578 |                     },
3579 |                     "amount": {
3580 |                         "type": "string",
3581 |                         "description": "Amount in atomic units",
3582 |                         "example": "18800000"
3583 |                     },
3584 |                     "lockedAmount": {
3585 |                         "type": "string",
3586 |                         "description": "Locked amount in atomic units",
3587 |                         "example": "800000"
3588 |                     }
3589 |                 },
3590 |                 "required": [
3591 |                     "hash",
3592 |                     "loginAddress",
3593 |                     "loginChainId",
3594 |                     "tokenId",
3595 |                     "tokenAddress",
3596 |                     "tokenChainId",
3597 |                     "amount",
3598 |                     "lockedAmount"
3599 |                 ]
3600 |             },
3601 |             "GetFeeRatesResponseDto": {
3602 |                 "type": "object",
3603 |                 "properties": {
3604 |                     "takerFee": {
3605 |                         "type": "number",
3606 |                         "description": "Taker fee",
3607 |                         "example": 22
3608 |                     },
3609 |                     "makerFee": {
3610 |                         "type": "number",
3611 |                         "description": "Maker fee",
3612 |                         "example": 20
3613 |                     }
3614 |                 },
3615 |                 "required": [
3616 |                     "takerFee",
3617 |                     "makerFee"
3618 |                 ]
3619 |             },
3620 |             "GetOrderByIdResponseDto": {
3621 |                 "type": "object",
3622 |                 "properties": {
3623 |                     "id": {
3624 |                         "type": "number",
3625 |                         "description": "Order id",
3626 |                         "example": 2
3627 |                     },
3628 |                     "pairId": {
3629 |                         "type": "number",
3630 |                         "description": "Pair id",
3631 |                         "example": 13
3632 |                     },
3633 |                     "pair": {
3634 |                         "type": "string",
3635 |                         "description": "Pair symbol",
3636 |                         "example": "algo_usdc"
3637 |                     },
3638 |                     "status": {
3639 |                         "type": "number",
3640 |                         "description": "Order status. Values: 1 -> Open, 2 -> Canceled, 3 -> Matched, 4 -> Self-matched, 5 -> Expired",
3641 |                         "example": 1
3642 |                     },
3643 |                     "side": {
3644 |                         "type": "number",
3645 |                         "description": "Order side. Values: 0 -> BUY, 1 -> SELL",
3646 |                         "example": 1
3647 |                     },
3648 |                     "type": {
3649 |                         "type": "number",
3650 |                         "description": "Order type. Values: 0 -> LIMIT, 1 -> IOC, 2 -> POST, 3 -> MARKET",
3651 |                         "example": 0
3652 |                     },
3653 |                     "amount": {
3654 |                         "type": "string",
3655 |                         "description": "Amount in atomic units of base coin",
3656 |                         "example": "10000000"
3657 |                     },
3658 |                     "price": {
3659 |                         "type": "string",
3660 |                         "description": "Price in atomic units of price coin",
3661 |                         "example": "1000000000000000000"
3662 |                     },
3663 |                     "filledAmount": {
3664 |                         "type": "string",
3665 |                         "description": "Filled order amount in atomic units",
3666 |                         "example": "2000000"
3667 |                     },
3668 |                     "total": {
3669 |                         "type": "string",
3670 |                         "description": "Total in atomic units of price coin",
3671 |                         "example": "0"
3672 |                     },
3673 |                     "filledTotal": {
3674 |                         "type": "string",
3675 |                         "description": "Filled total in atomic units of price coin",
3676 |                         "example": "0"
3677 |                     },
3678 |                     "avgPrice": {
3679 |                         "type": "string",
3680 |                         "description": "Average execution price",
3681 |                         "example": "1000000000000000000"
3682 |                     },
3683 |                     "userId": {
3684 |                         "type": "string",
3685 |                         "description": "Login wallet address",
3686 |                         "example": "0x37eAF916551B7DA897244E0f61120B81ad1B8636"
3687 |                     },
3688 |                     "createdAt": {
3689 |                         "type": "number",
3690 |                         "description": "Order creation time",
3691 |                         "example": 1719499926063
3692 |                     },
3693 |                     "completedAt": {
3694 |                         "type": "number",
3695 |                         "description": "Order completion time",
3696 |                         "example": null
3697 |                     },
3698 |                     "updatedAt": {
3699 |                         "type": "number",
3700 |                         "description": "Order update time",
3701 |                         "example": 1719499926063
3702 |                     },
3703 |                     "trades": {
3704 |                         "description": "",
3705 |                         "example": [
3706 |                             {
3707 |                                 "tradeId": 1,
3708 |                                 "tradeSide": 0,
3709 |                                 "amount": "1000000",
3710 |                                 "price": "1000000",
3711 |                                 "fee": "0",
3712 |                                 "createdAt": 1719499962401,
3713 |                                 "updatedAt": 1719499963000,
3714 |                                 "isBuyer": false,
3715 |                                 "isMaker": true
3716 |                             },
3717 |                             {
3718 |                                 "tradeId": 2,
3719 |                                 "tradeSide": 0,
3720 |                                 "amount": "1000000",
3721 |                                 "price": "1000000",
3722 |                                 "fee": "1000",
3723 |                                 "createdAt": 1719499966665,
3724 |                                 "updatedAt": 1719499967000,
3725 |                                 "isBuyer": false,
3726 |                                 "isMaker": false
3727 |                             }
3728 |                         ],
3729 |                         "type": "array",
3730 |                         "items": {
3731 |                             "type": "string"
3732 |                         }
3733 |                     }
3734 |                 },
3735 |                 "required": [
3736 |                     "id",
3737 |                     "pairId",
3738 |                     "pair",
3739 |                     "status",
3740 |                     "side",
3741 |                     "type",
3742 |                     "amount",
3743 |                     "price",
3744 |                     "filledAmount",
3745 |                     "total",
3746 |                     "filledTotal",
3747 |                     "avgPrice",
3748 |                     "userId",
3749 |                     "createdAt"
3750 |                 ]
3751 |             },
3752 |             "SuccessOrderDto": {
3753 |                 "type": "object",
3754 |                 "properties": {
3755 |                     "orderId": {
3756 |                         "type": "number",
3757 |                         "description": "Order id",
3758 |                         "example": 2
3759 |                     },
3760 |                     "pairId": {
3761 |                         "type": "number",
3762 |                         "description": "Pair id",
3763 |                         "example": 13
3764 |                     },
3765 |                     "pair": {
3766 |                         "type": "string",
3767 |                         "description": "Pair symbol",
3768 |                         "example": "algo_usdc"
3769 |                     }
3770 |                 },
3771 |                 "required": [
3772 |                     "orderId",
3773 |                     "pairId",
3774 |                     "pair"
3775 |                 ]
3776 |             },
3777 |             "FailedOrderDto": {
3778 |                 "type": "object",
3779 |                 "properties": {
3780 |                     "reason": {
3781 |                         "type": "string",
3782 |                         "description": "Fail reason",
3783 |                         "example": "Insufficient balance to lock"
3784 |                     }
3785 |                 },
3786 |                 "required": [
3787 |                     "reason"
3788 |                 ]
3789 |             },
3790 |             "CreateOrdersDto": {
3791 |                 "type": "object",
3792 |                 "properties": {
3793 |                     "successfulOrders": {
3794 |                         "description": "List of successfully created orders",
3795 |                         "example": [
3796 |                             {
3797 |                                 "orderData": {
3798 |                                     "expiredDate": "2024-11-19T13:25:21.000Z",
3799 |                                     "baseTokenAddress": "0",
3800 |                                     "baseTokenChainId": 8,
3801 |                                     "priceTokenAddress": "0x4343545055534443000000000000000000000000000000000000000000000000",
3802 |                                     "priceTokenChainId": 65537,
3803 |                                     "companyId": 1,
3804 |                                     "address": "0xe56310178b0bfe0f49877fcb701e208fed89d337",
3805 |                                     "chainId": 5,
3806 |                                     "orderSide": "B",
3807 |                                     "orderType": "L",
3808 |                                     "price": "900000000000000000",
3809 |                                     "amount": "100000",
3810 |                                     "expiredTime": 1732022721,
3811 |                                     "random": 9007199254740991
3812 |                                 },
3813 |                                 "orderId": 12342634,
3814 |                                 "pairId": 1,
3815 |                                 "pair": "algo_usdc"
3816 |                             }
3817 |                         ],
3818 |                         "type": "array",
3819 |                         "items": {
3820 |                             "$ref": "#/components/schemas/SuccessOrderDto"
3821 |                         }
3822 |                     },
3823 |                     "failedOrders": {
3824 |                         "description": "List of orders that failed to be created",
3825 |                         "example": [
3826 |                             {
3827 |                                 "orderData": {
3828 |                                     "expiredDate": "2024-11-19T13:25:21.000Z",
3829 |                                     "baseTokenAddress": "0",
3830 |                                     "baseTokenChainId": 8,
3831 |                                     "priceTokenAddress": "0x4343545055534443000000000000000000000000000000000000000000000000",
3832 |                                     "priceTokenChainId": 65537,
3833 |                                     "companyId": 1,
3834 |                                     "address": "0xe56310178b0bfe0f49877fcb701e208fed89d337",
3835 |                                     "chainId": 5,
3836 |                                     "orderSide": "B",
3837 |                                     "orderType": "L",
3838 |                                     "price": "900000000000000000",
3839 |                                     "amount": "100000",
3840 |                                     "expiredTime": 1732022721,
3841 |                                     "random": 9007199254740991
3842 |                                 },
3843 |                                 "reason": "Insufficient balance to lock"
3844 |                             }
3845 |                         ],
3846 |                         "type": "array",
3847 |                         "items": {
3848 |                             "$ref": "#/components/schemas/FailedOrderDto"
3849 |                         }
3850 |                     }
3851 |                 },
3852 |                 "required": [
3853 |                     "successfulOrders",
3854 |                     "failedOrders"
3855 |                 ]
3856 |             }
3857 |         }
3858 |     }
3859 | }
```

