import 'package:aves/model/availability.dart';
import 'package:aves/model/metadata_db.dart';
import 'package:aves/services/device_service.dart';
import 'package:aves/services/media/embedded_data_service.dart';
import 'package:aves/services/media/media_file_service.dart';
import 'package:aves/services/media/media_store_service.dart';
import 'package:aves/services/metadata/metadata_edit_service.dart';
import 'package:aves/services/metadata/metadata_fetch_service.dart';
import 'package:aves/services/report_service.dart';
import 'package:aves/services/storage_service.dart';
import 'package:aves/services/window_service.dart';
import 'package:get_it/get_it.dart';
import 'package:path/path.dart' as p;
final getIt = GetIt.instance;
final p.Context pContext = getIt
();
final AvesAvailability availability = getIt();
final MetadataDb metadataDb = getIt();
final DeviceService deviceService = getIt();
final EmbeddedDataService embeddedDataService = getIt();
final MediaFileService mediaFileService = getIt();
final MediaStoreService mediaStoreService = getIt();
final MetadataEditService metadataEditService = getIt();
final MetadataFetchService metadataFetchService = getIt();
final ReportService reportService = getIt();
final StorageService storageService = getIt();
final WindowService windowService = getIt();
void initPlatformServices() {
getIt.registerLazySingleton(() => p.Context());
getIt.registerLazySingleton(() => LiveAvesAvailability());
getIt.registerLazySingleton(() => SqfliteMetadataDb());
getIt.registerLazySingleton(() => PlatformDeviceService());
getIt.registerLazySingleton(() => PlatformEmbeddedDataService());
getIt.registerLazySingleton(() => PlatformMediaFileService());
getIt.registerLazySingleton(() => PlatformMediaStoreService());
getIt.registerLazySingleton(() => PlatformMetadataEditService());
getIt.registerLazySingleton(() => PlatformMetadataFetchService());
getIt.registerLazySingleton(() => CrashlyticsReportService());
getIt.registerLazySingleton(() => PlatformStorageService());
getIt.registerLazySingleton(() => PlatformWindowService());
}