"""AlgoKit Python Utilities (Legacy V2) - a set of utilities for building solutions on Algorand

This module provides commonly used utilities and types at the root level for convenience.
For more specific functionality, import directly from the relevant submodules:

    from algokit_utils.accounts import KmdAccountManager
    from algokit_utils.applications import AppClient
    from algokit_utils.applications.app_spec import Arc52Contract
    etc.
"""

# Debugging utilities
from algokit_utils._legacy_v2._ensure_funded import (
    EnsureBalanceParameters,
    EnsureFundedResponse,
    ensure_funded,
)
from algokit_utils._legacy_v2._transfer import (
    TransferAssetParameters,
    TransferParameters,
    transfer,
    transfer_asset,
)
from algokit_utils._legacy_v2.account import (
    create_kmd_wallet_account,
    get_account,
    get_account_from_mnemonic,
    get_dispenser_account,
    get_kmd_wallet_account,
    get_localnet_default_account,
    get_or_create_kmd_wallet_account,
)
from algokit_utils._legacy_v2.application_client import (
    ApplicationClient,
    execute_atc_with_logic_error,
    get_next_version,
    get_sender_from_signer,
    num_extra_program_pages,
)
from algokit_utils._legacy_v2.application_specification import (
    ApplicationSpecification,
    AppSpecStateDict,
    CallConfig,
    DefaultArgumentDict,
    DefaultArgumentType,
    MethodConfigDict,
    MethodHints,
    OnCompleteActionName,
)
from algokit_utils._legacy_v2.asset import opt_in, opt_out
from algokit_utils._legacy_v2.common import Program
from algokit_utils._legacy_v2.deploy import (
    NOTE_PREFIX,
    ABICallArgs,
    ABICallArgsDict,
    ABICreateCallArgs,
    ABICreateCallArgsDict,
    AppDeployMetaData,
    AppLookup,
    AppMetaData,
    AppReference,
    DeployCallArgs,
    DeployCallArgsDict,
    DeployCreateCallArgs,
    DeployCreateCallArgsDict,
    DeploymentFailedError,
    DeployResponse,
    TemplateValueDict,
    TemplateValueMapping,
    get_app_id_from_tx_id,
    get_creator_apps,
    replace_template_variables,
)
from algokit_utils._legacy_v2.models import (
    ABIArgsDict,
    ABIMethod,
    ABITransactionResponse,
    Account,
    CommonCallParameters,
    CommonCallParametersDict,
    CreateCallParameters,
    CreateCallParametersDict,
    CreateTransactionParameters,
    OnCompleteCallParameters,
    OnCompleteCallParametersDict,
    TransactionParameters,
    TransactionParametersDict,
    TransactionResponse,
)
from algokit_utils._legacy_v2.network_clients import (
    AlgoClientConfig,
    get_algod_client,
    get_algonode_config,
    get_default_localnet_config,
    get_indexer_client,
    get_kmd_client_from_algod_client,
    is_localnet,
    is_mainnet,
    is_testnet,
)

__all__ = [
    "NOTE_PREFIX",
    "ABIArgsDict",
    "ABICallArgs",
    "ABICallArgsDict",
    "ABICreateCallArgs",
    "ABICreateCallArgsDict",
    "ABIMethod",
    "ABITransactionResponse",
    "Account",
    "AlgoClientConfig",
    "AppDeployMetaData",
    "AppLookup",
    "AppMetaData",
    "AppReference",
    "AppSpecStateDict",
    "ApplicationClient",
    "ApplicationSpecification",
    "CallConfig",
    "CommonCallParameters",
    "CommonCallParametersDict",
    "CreateCallParameters",
    "CreateCallParametersDict",
    "CreateTransactionParameters",
    "DefaultArgumentDict",
    "DefaultArgumentType",
    "DeployCallArgs",
    "DeployCallArgsDict",
    "DeployCreateCallArgs",
    "DeployCreateCallArgsDict",
    "DeployResponse",
    "DeploymentFailedError",
    "EnsureBalanceParameters",
    "EnsureFundedResponse",
    "MethodConfigDict",
    "MethodHints",
    "OnCompleteActionName",
    "OnCompleteCallParameters",
    "OnCompleteCallParametersDict",
    "Program",
    "TemplateValueDict",
    "TemplateValueMapping",
    "TransactionParameters",
    "TransactionParametersDict",
    "TransactionResponse",
    "TransferAssetParameters",
    "TransferParameters",
    # Legacy v2 functions
    "create_kmd_wallet_account",
    "ensure_funded",
    "execute_atc_with_logic_error",
    "get_account",
    "get_account_from_mnemonic",
    "get_algod_client",
    "get_algonode_config",
    "get_app_id_from_tx_id",
    "get_creator_apps",
    "get_default_localnet_config",
    "get_dispenser_account",
    "get_indexer_client",
    "get_kmd_client_from_algod_client",
    "get_kmd_wallet_account",
    "get_localnet_default_account",
    "get_next_version",
    "get_or_create_kmd_wallet_account",
    "get_sender_from_signer",
    "is_localnet",
    "is_mainnet",
    "is_testnet",
    "num_extra_program_pages",
    "opt_in",
    "opt_out",
    "replace_template_variables",
    "transfer",
    "transfer_asset",
]
