class HubEventLogger {

    public void logSessionStartedEvent(SamlResponseWithAuthnRequestInformationDto samlResponse, String ipAddress, DateTime sessionExpiryTimestamp, SessionId sessionId, LevelOfAssurance minimum, LevelOfAssurance maximum, LevelOfAssurance preferred) {
        Map<EventDetailsKey, String> details = new HashMap<>();
        details.put(principal_ip_address_as_seen_by_hub, ipAddress);
        details.put(message_id, samlResponse.getId());
        details.put(minimum_level_of_assurance, minimum.name());
        details.put(maximum_level_of_assurance, maximum.name());
        details.put(preferred_level_of_assurance, preferred.name());

        logSessionEvent(sessionId, samlResponse.getIssuer(), sessionExpiryTimestamp, samlResponse.getId(), SESSION_STARTED, details);
    }

    @Inject public  HubEventLogger(ServiceInfoConfiguration serviceInfo,
                          EventSinkProxy eventSinkProxy,
                          EventEmitter eventEmitter);

}