package fleetstatus

import (
	"context"
	"time"

	helicopterusage "wucher/internal/domain/helicopter_usage"
	shareddto "wucher/internal/transport/http/dto/shared"
)

type OverdueInspection struct {
	InspectionType string
	Detail         string
}

type Service interface {
	Create(ctx context.Context, row *FleetStatus) error
	Update(ctx context.Context, row *FleetStatus) error
	Delete(ctx context.Context, id []byte, deletedBy []byte) error
	GetByID(ctx context.Context, id []byte) (*FleetStatus, error)
	List(ctx context.Context, filter, sort string, limit, offset int) ([]FleetStatus, int64, error)
	LatestByHelicopterIDs(ctx context.Context, helicopterIDs [][]byte) (map[string]*FleetStatus, error)
	MarkServiced(ctx context.Context, id []byte, servicedAt time.Time, actorID []byte) error
	ListServiceHistoryByHelicopterID(ctx context.Context, helicopterID []byte, limit, offset int) ([]FleetStatusServiceLog, int64, error)
	GetSummaryByHelicopterID(ctx context.Context, helicopterID []byte) (*shareddto.FleetStatusSummary, error)
	ReviseSummary(ctx context.Context, helicopterID []byte, in helicopterusage.ManualSummaryInput, actor []byte) error
	OverdueInspections(ctx context.Context, helicopterID []byte) ([]OverdueInspection, error)
}
