import Bindings

public struct ConnectionAuthStatusProvider {
  public var isAuthenticated: () -> Bool

  public func callAsFunction() -> Bool {
    isAuthenticated()
  }
}

extension ConnectionAuthStatusProvider {
  public static func live(
    bindingsConnection: BindingsConnection
  ) -> ConnectionAuthStatusProvider {
    ConnectionAuthStatusProvider { false }
  }

  public static func live(
    bindingsAuthenticatedConnection: BindingsAuthenticatedConnection
  ) -> ConnectionAuthStatusProvider {
    ConnectionAuthStatusProvider(
      isAuthenticated: bindingsAuthenticatedConnection.isAuthenticated
    )
  }
}

#if DEBUG
extension ConnectionAuthStatusProvider {
  public static let failing = ConnectionAuthStatusProvider {
    fatalError("Not implemented")
  }
}
#endif