import { ConfigService } from '@nestjs/config';
import { EventEmitter2 } from '@nestjs/event-emitter';
import { Model, Types } from 'mongoose';
import { RedisService } from '../redis/redis.service';
import { TripsService } from '../trips/trips.service';
import { GeofencingService } from '../geofencing/geofencing.service';
import type { JwtUserPayload } from '../auth/jwt.types';
import { UsersService } from '../users/users.service';
import { GpsPointDocument } from './schemas/gps-point.schema';
import { GpsStopDocument } from './schemas/gps-stop.schema';
import { GpsBatchDto } from './dto/gps.dto';
export declare class GpsService {
    private readonly gpsModel;
    private readonly stopModel;
    private readonly redis;
    private readonly trips;
    private readonly users;
    private readonly geofence;
    private readonly config;
    private readonly events;
    constructor(gpsModel: Model<GpsPointDocument>, stopModel: Model<GpsStopDocument>, redis: RedisService, trips: TripsService, users: UsersService, geofence: GeofencingService, config: ConfigService, events: EventEmitter2);
    ingestBatch(tripId: string, actor: JwtUserPayload, dto: GpsBatchDto): Promise<{
        inserted: number;
        tripId: string;
    }>;
    ingestLivePoint(tripId: string, actor: JwtUserPayload, point: {
        latitude: number;
        longitude: number;
        timestamp: string;
        accuracy?: number;
        speed?: number;
        bearing?: number;
        clientPointId: string;
    }): Promise<{
        persisted: boolean;
        latitude: number;
        longitude: number;
        timestamp: Date;
        clientPointId: string;
    }>;
    listRoute(tripId: string, params: {
        from?: string;
        to?: string;
        cursor?: string;
        limit?: number;
    }): Promise<{
        items: {
            id: string;
            _id: Types.ObjectId;
            $locals: Record<string, unknown>;
            $op: "save" | "validate" | "remove" | null;
            $where: Record<string, unknown>;
            baseModelName?: string;
            collection: import("mongoose").Collection;
            db: import("mongoose").Connection;
            errors?: import("mongoose").Error.ValidationError;
            isNew: boolean;
            schema: import("mongoose").Schema;
            tripId?: string;
            userId: string;
            clientPointId?: string;
            latitude: number;
            longitude: number;
            accuracy?: number;
            speed?: number;
            bearing?: number;
            batteryLevel?: number;
            timestamp: Date;
            isSmoothed: boolean;
            legId?: string;
            sessionId?: string;
            source?: string;
            __v: number;
        }[];
        nextCursor: string | null;
    }>;
    recalculateTripMetrics(tripId: string): Promise<void>;
    private detectStops;
}
