content: import 'package:bb_mobile/core/exchange/domain/repositories/exchange_order_repository.dart';
  import 'package:bb_mobile/core/exchange/domain/usecases/create_fiat_recipient_usecase.dart';
  import 'package:bb_mobile/core/exchange/domain/usecases/get_exchange_user_summary_usecase.dart';
  import 'package:bb_mobile/core/exchange/domain/usecases/list_cad_billers_usecase.dart';
  import 'package:bb_mobile/core/exchange/domain/usecases/list_recipients_usecase.dart';
  import 'package:bb_mobile/core/settings/data/settings_repository.dart';
  import 'package:bb_mobile/features/withdraw/domain/confirm_withdraw_order_usecase.dart';
  import 'package:bb_mobile/features/withdraw/domain/create_withdraw_order_usecase.dart';
  import 'package:bb_mobile/features/withdraw/presentation/withdraw_bloc.dart';
  import 'package:bb_mobile/locator.dart';
  
  class WithdrawLocator {
    static void setup() {
      registerUsecases();
      registerBlocs();
    }
  
    static void registerUsecases() {
      locator.registerLazySingleton<CreateWithdrawOrderUsecase>(
        () => CreateWithdrawOrderUsecase(
          mainnetExchangeOrderRepository: locator<ExchangeOrderRepository>(
            instanceName: 'mainnetExchangeOrderRepository',
          ),
          testnetExchangeOrderRepository: locator<ExchangeOrderRepository>(
            instanceName: 'testnetExchangeOrderRepository',
          ),
          settingsRepository: locator<SettingsRepository>(),
        ),
      );
  
      locator.registerFactory<ConfirmWithdrawOrderUsecase>(
        () => ConfirmWithdrawOrderUsecase(
          mainnetExchangeOrderRepository: locator<ExchangeOrderRepository>(
            instanceName: 'mainnetExchangeOrderRepository',
          ),
          testnetExchangeOrderRepository: locator<ExchangeOrderRepository>(
            instanceName: 'testnetExchangeOrderRepository',
          ),
          settingsRepository: locator<SettingsRepository>(),
        ),
      );
    }
  
    static void registerBlocs() {
      locator.registerFactory<WithdrawBloc>(
        () => WithdrawBloc(
          getExchangeUserSummaryUsecase: locator<GetExchangeUserSummaryUsecase>(),
          listRecipientsUsecase: locator<ListRecipientsUsecase>(),
          createWithdrawUsecase: locator<CreateWithdrawOrderUsecase>(),
          confirmWithdrawUsecase: locator<ConfirmWithdrawOrderUsecase>(),
          createFiatRecipientUsecase: locator<CreateFiatRecipientUsecase>(),
          listCadBillersUsecase: locator<ListCadBillersUsecase>(),
        ),
      );
    }
  }
  