"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createUseCases = void 0;
const create_device_use_case_1 = require("../../application/use-cases/device/create-device.use-case");
const get_device_by_id_use_case_1 = require("../../application/use-cases/device/get-device-by-id.use-case");
const get_all_devices_use_case_1 = require("../../application/use-cases/device/get-all-devices.use-case");
const update_device_status_use_case_1 = require("../../application/use-cases/device/update-device-status.use-case");
const update_device_push_token_use_case_1 = require("../../application/use-cases/device/update-device-push-token.use-case");
const generate_seedphrase_use_case_1 = require("../../application/use-cases/wallet/generate-seedphrase.use-case");
const create_wallet_use_case_1 = require("../../application/use-cases/wallet/create-wallet.use-case");
const get_wallet_by_id_use_case_1 = require("../../application/use-cases/wallet/get-wallet-by-id.use-case");
const get_wallets_by_device_use_case_1 = require("../../application/use-cases/wallet/get-wallets-by-device.use-case");
const get_wallet_address_for_network_use_case_1 = require("../../application/use-cases/wallet/get-wallet-address-for-network.use-case");
const get_all_network_addresses_for_wallet_use_case_1 = require("../../application/use-cases/wallet/get-all-network-addresses-for-wallet.use-case");
const get_wallet_seed_phrase_use_case_1 = require("../../application/use-cases/wallet/get-wallet-seed-phrase.use-case");
const get_address_by_address_use_case_1 = require("../../application/use-cases/address/get-address-by-address.use-case");
const get_networks_list_use_case_1 = require("../../application/use-cases/network/get-networks-list.use-case");
const get_network_gas_info_use_case_1 = require("../../application/use-cases/network/get-network-gas-info.use-case");
const get_token_by_id_use_case_1 = require("../../application/use-cases/token/get-token-by-id.use-case");
const get_tokens_by_network_use_case_1 = require("../../application/use-cases/token/get-tokens-by-network.use-case");
const get_all_tokens_use_case_1 = require("../../application/use-cases/token/get-all-tokens.use-case");
const get_token_chart_use_case_1 = require("../../application/use-cases/token/get-token-chart.use-case");
const get_token_prices_use_case_1 = require("../../application/use-cases/token/get-token-prices.use-case");
const get_token_by_symbol_use_case_1 = require("../../application/use-cases/token/get-token-by-symbol.use-case");
const resolve_token_by_contract_use_case_1 = require("../../application/use-cases/token/resolve-token-by-contract.use-case");
const get_wallet_balances_for_network_use_case_1 = require("../../application/use-cases/balance/get-wallet-balances-for-network.use-case");
const get_all_wallet_balances_use_case_1 = require("../../application/use-cases/balance/get-all-wallet-balances.use-case");
const create_transaction_use_case_1 = require("../../application/use-cases/transaction/create-transaction.use-case");
const get_transactions_use_case_1 = require("../../application/use-cases/transaction/get-transactions.use-case");
const get_transaction_by_id_use_case_1 = require("../../application/use-cases/transaction/get-transaction-by-id.use-case");
const update_transaction_use_case_1 = require("../../application/use-cases/transaction/update-transaction.use-case");
const transaction_rate_use_case_1 = require("../../application/use-cases/transaction/transaction-rate.use-case");
const create_network_use_case_1 = require("../../application/use-cases/admin/create-network.use-case");
const create_token_use_case_1 = require("../../application/use-cases/admin/create-token.use-case");
const update_token_use_case_1 = require("../../application/use-cases/admin/update-token.use-case");
const delete_token_use_case_1 = require("../../application/use-cases/admin/delete-token.use-case");
const update_token_minimum_swap_value_use_case_1 = require("../../application/use-cases/admin/update-token-minimum-swap-value.use-case");
const fetch_token_data_use_case_1 = require("../../application/use-cases/admin/fetch-token-data.use-case");
const get_image_use_case_1 = require("../../application/use-cases/image/get-image.use-case");
const createUseCases = (repositories, services) => {
    const createNetworkUseCase = new create_network_use_case_1.CreateNetworkUseCase(repositories.networkRepository, services.imageStorage);
    const createTokenUseCase = new create_token_use_case_1.CreateTokenUseCase(repositories.tokenRepository, repositories.networkRepository, services.imageStorage, services.coinMarketCapClient, services.logger);
    return {
        createDevice: new create_device_use_case_1.CreateDeviceUseCase(repositories.deviceRepository),
        getDeviceById: new get_device_by_id_use_case_1.GetDeviceByIdUseCase(repositories.deviceRepository),
        getAllDevices: new get_all_devices_use_case_1.GetAllDevicesUseCase(repositories.deviceRepository),
        updateDeviceStatus: new update_device_status_use_case_1.UpdateDeviceStatusUseCase(repositories.deviceRepository),
        updateDevicePushToken: new update_device_push_token_use_case_1.UpdateDevicePushTokenUseCase(repositories.deviceRepository),
        generateWalletSeedphrase: new generate_seedphrase_use_case_1.GenerateWalletSeedphraseUseCase(services.seedPhraseService),
        createWallet: new create_wallet_use_case_1.CreateWalletUseCase(repositories.walletRepository, repositories.deviceRepository, repositories.addressRepository, repositories.networkRepository, services.encryptionService, services.addressGenerator),
        getWalletById: new get_wallet_by_id_use_case_1.GetWalletByIdUseCase(repositories.walletRepository),
        getWalletsByDevice: new get_wallets_by_device_use_case_1.GetWalletsByDeviceUseCase(repositories.walletRepository),
        getWalletAddressForNetwork: new get_wallet_address_for_network_use_case_1.GetWalletAddressForNetworkUseCase(repositories.walletRepository, repositories.networkRepository, repositories.addressRepository, services.addressGenerator),
        getAllNetworkAddressesForWallet: new get_all_network_addresses_for_wallet_use_case_1.GetAllNetworkAddressesForWalletUseCase(repositories.walletRepository, repositories.addressRepository),
        getWalletSeedPhrase: new get_wallet_seed_phrase_use_case_1.GetWalletSeedPhraseUseCase(repositories.walletRepository, services.encryptionService),
        getAddressByAddress: new get_address_by_address_use_case_1.GetAddressByAddressUseCase(repositories.addressRepository),
        getNetworksList: new get_networks_list_use_case_1.GetNetworksListUseCase(repositories.networkRepository, services.cacheService),
        getNetworkGasInfo: new get_network_gas_info_use_case_1.GetNetworkGasInfoUseCase(repositories.networkRepository, services.networkRpcClient),
        getTokenById: new get_token_by_id_use_case_1.GetTokenByIdUseCase(repositories.tokenRepository),
        getTokenBySymbol: new get_token_by_symbol_use_case_1.GetTokenBySymbolUseCase(repositories.tokenRepository),
        getTokensByNetwork: new get_tokens_by_network_use_case_1.GetTokensByNetworkUseCase(repositories.tokenRepository, repositories.networkRepository, services.cacheService),
        getAllTokens: new get_all_tokens_use_case_1.GetAllTokensUseCase(repositories.tokenRepository, services.cacheService),
        getTokenChart: new get_token_chart_use_case_1.GetTokenChartUseCase(repositories.tokenRepository, services.coinMarketCapClient),
        getTokenPrices: new get_token_prices_use_case_1.GetTokenPricesUseCase(services.coinMarketCapClient),
        resolveTokenByContract: new resolve_token_by_contract_use_case_1.ResolveTokenByContractUseCase(repositories.networkRepository, repositories.tokenRepository, createTokenUseCase, services.coinMarketCapClient, services.networkRpcClient, services.logger),
        getWalletBalancesForNetwork: new get_wallet_balances_for_network_use_case_1.GetWalletBalancesForNetworkUseCase(repositories.walletRepository, repositories.networkRepository, repositories.addressRepository, repositories.tokenRepository, repositories.transactionRepository, services.balanceService),
        getAllWalletBalances: new get_all_wallet_balances_use_case_1.GetAllWalletBalancesUseCase(repositories.walletRepository, repositories.addressRepository, repositories.tokenRepository, repositories.transactionRepository, services.balanceService),
        createTransaction: new create_transaction_use_case_1.CreateTransactionUseCase(repositories.transactionRepository, repositories.networkRepository, repositories.addressRepository, repositories.tokenRepository, services.eventPublisher),
        getTransactions: new get_transactions_use_case_1.GetTransactionsUseCase(repositories.transactionRepository, repositories.addressRepository),
        getTransactionById: new get_transaction_by_id_use_case_1.GetTransactionByIdUseCase(repositories.transactionRepository, repositories.addressRepository),
        updateTransaction: new update_transaction_use_case_1.UpdateTransactionUseCase(repositories.transactionRepository, services.eventPublisher),
        transactionRate: new transaction_rate_use_case_1.TransactionRateUseCase(repositories.networkRepository, repositories.tokenRepository, services.coinMarketCapClient),
        createNetwork: createNetworkUseCase,
        createToken: createTokenUseCase,
        updateToken: new update_token_use_case_1.UpdateTokenUseCase(repositories.tokenRepository, repositories.networkRepository, services.imageStorage, services.coinMarketCapClient, services.logger),
        deleteToken: new delete_token_use_case_1.DeleteTokenUseCase(repositories.tokenRepository),
        updateTokenMinimumSwapValue: new update_token_minimum_swap_value_use_case_1.UpdateTokenMinimumSwapValueUseCase(repositories.tokenRepository),
        fetchTokenData: new fetch_token_data_use_case_1.FetchTokenDataUseCase(repositories.networkRepository, repositories.tokenRepository, services.coinMarketCapClient, services.logger),
        getImage: new get_image_use_case_1.GetImageUseCase(services.imageStorage),
    };
};
exports.createUseCases = createUseCases;
//# sourceMappingURL=use-cases.factory.js.map