package fmreport

import (
	"context"

	"wucher/internal/domain/flight"
)

type Service interface {
	UpsertForFlight(ctx context.Context, flightRow *flight.Flight, flightInspectionID []byte) (*Report, error)
	UpdateForFlight(ctx context.Context, flightID []byte, engine1GpcN1, engine1PtcN2, engine2GpcN1, engine2PtcN2 *string) (*Report, error)
	GetByID(ctx context.Context, id []byte) (*Report, error)
	GetByFlightID(ctx context.Context, flightID []byte) (*Report, error)
	List(ctx context.Context, filter ListFilter, limit, offset int) ([]Report, int64, error)
	GetFleetHistory(ctx context.Context, reportID []byte) (*FleetHistory, error)
	Delete(ctx context.Context, id []byte) error
}

type FleetHistoryBuilder interface {
	BuildFleetHistory(ctx context.Context, takeoverID []byte) *FleetHistory
}

type ReportCodeResolver interface {
	ResolveHelicopterForReportCode(ctx context.Context, takeoverID []byte) (helicopterID []byte, reportPrefix string)
}
