import Foundation

protocol UNSharedServicesProviding: AnyObject {
    func appStateService() -> UNAppStateServicing
    func presentationService() -> UNPresentationServicing
    func snapshotProtectionService() -> UNSnapshotProtectionServicing
}

class UNSharedServicesProvider: NSObject, UNSharedServicesProviding {
    // Singleton
    static let shared: UNSharedServicesProviding = UNSharedServicesProvider()

    private override init() {}

    @objc static func requiresMainQueueSetup() -> Bool {
        return false
    }

    fileprivate lazy var _appStateService: UNAppStateServicing = {
        return UNAppStateService.shared
    }()

    fileprivate lazy var _presentationService: UNPresentationServicing = {
        return UNPresentationService()
    }()

    fileprivate lazy var _snapshotProtectionService = {
        return UNSnapshotProtectionService()
    }()

    func appStateService() -> UNAppStateServicing {
        return _appStateService
    }

    func presentationService() -> UNPresentationServicing {
        return _presentationService
    }

    func snapshotProtectionService() -> UNSnapshotProtectionServicing {
        return _snapshotProtectionService
    }

    func configure() {}
}

