package port

import (
	"context"

	"github.com/orchard9/rdev/internal/domain"
)

// AuditLogger defines operations for audit logging.
type AuditLogger interface {
	// LogCommandStart records the start of a command execution.
	LogCommandStart(ctx context.Context, entry *domain.AuditLogEntry) error

	// LogCommandEnd records the completion of a command execution.
	LogCommandEnd(ctx context.Context, commandID string, result *domain.AuditResult) error

	// List returns audit log entries matching the given filters.
	List(ctx context.Context, filters domain.AuditFilters) ([]domain.AuditLogEntry, error)

	// Get returns a single audit log entry by command ID.
	Get(ctx context.Context, commandID string) (*domain.AuditLogEntry, error)
}
