import { ConfigService } from '@nestjs/config';
import { Model } from 'mongoose';
import { PunchType } from '../common/constants/enums';
import type { JwtUserPayload } from '../auth/jwt.types';
import { GpsPointDocument } from '../gps/schemas/gps-point.schema';
import { PunchDocument } from '../punches/schemas/punch.schema';
import { TripsService } from '../trips/trips.service';
import { TrackingEventsService } from './tracking-events.service';
import { TrackingCoverageSnapshot, TrackingCoverageSnapshotDocument } from './schemas/tracking-coverage-snapshot.schema';
export declare class TrackingCoverageService {
    private readonly snapshotModel;
    private readonly gpsModel;
    private readonly punchModel;
    private readonly trips;
    private readonly trackingEvents;
    private readonly config;
    private readonly logger;
    constructor(snapshotModel: Model<TrackingCoverageSnapshotDocument>, gpsModel: Model<GpsPointDocument>, punchModel: Model<PunchDocument>, trips: TripsService, trackingEvents: TrackingEventsService, config: ConfigService);
    onGpsBatch(payload: {
        tripId: string;
    }): void;
    onPunch(payload: {
        tripId: string;
        type: PunchType;
    }): void;
    onRecompute(payload: {
        tripId: string;
    }): void;
    getCoverageReport(requestId: string, actor: JwtUserPayload, legId?: string, includeEvents?: boolean): Promise<Record<string, unknown>>;
    getSummaryForTrip(requestId: string): Promise<{
        expectedDurationMinutes: number;
        trackedDurationMinutes: number;
        gapDurationMinutes: number;
        coveragePercent: number;
    }>;
    recomputeAndStore(requestId: string): Promise<import("mongoose").Document<unknown, {}, import("mongoose").Document<unknown, {}, TrackingCoverageSnapshot, {}, import("mongoose").DefaultSchemaOptions> & TrackingCoverageSnapshot & {
        _id: import("mongoose").Types.ObjectId;
    } & {
        __v: number;
    } & {
        id: string;
    }, {}, import("mongoose").DefaultSchemaOptions> & import("mongoose").Document<unknown, {}, TrackingCoverageSnapshot, {}, import("mongoose").DefaultSchemaOptions> & TrackingCoverageSnapshot & {
        _id: import("mongoose").Types.ObjectId;
    } & {
        __v: number;
    } & {
        id: string;
    } & Required<{
        _id: import("mongoose").Types.ObjectId;
    }>>;
    private buildLegWindows;
    private formatLeg;
}
