// Package logging provides structured logging for the sentinel service.
// Implementation is delegated to shared/go/ja4common/logger to avoid duplication.
package logging

import (
	jalogger "github.com/antitbone/ja4/ja4common/logger"
	"github.com/antitbone/ja4/sentinel/api"
)

// ServiceLogger satisfies api.Logger using ja4common/logger.ComponentLogger.
// This avoids duplicating logging logic that is now shared across all ja4-platform services.
type ServiceLogger struct {
	inner *jalogger.ComponentLogger
}

// NewServiceLogger creates a new ServiceLogger backed by ja4common.
func NewServiceLogger(level string) *ServiceLogger {
	return &ServiceLogger{inner: jalogger.NewComponentLogger(level)}
}

// Log emits a structured log entry for the given component.
func (l *ServiceLogger) Log(component, level, message string, details map[string]string) {
	l.inner.Log(component, level, message, details)
}

// Debug logs a debug entry for the given component.
func (l *ServiceLogger) Debug(component, message string, details map[string]string) {
	l.inner.Debug(component, message, details)
}

// Info logs an info entry for the given component.
func (l *ServiceLogger) Info(component, message string, details map[string]string) {
	l.inner.Info(component, message, details)
}

// Warn logs a warning entry for the given component.
func (l *ServiceLogger) Warn(component, message string, details map[string]string) {
	l.inner.Warn(component, message, details)
}

// Error logs an error entry for the given component.
func (l *ServiceLogger) Error(component, message string, details map[string]string) {
	l.inner.Error(component, message, details)
}

// compile-time check: ServiceLogger must satisfy api.Logger
var _ api.Logger = (*ServiceLogger)(nil)
