import { ConfigService } from '@nestjs/config';
import { JwtService } from '@nestjs/jwt';
import { OnGatewayConnection, OnGatewayDisconnect } from '@nestjs/websockets';
import { Namespace, Socket } from 'socket.io';
import { TripStatus } from '../common/constants/enums';
import { LiveTrackingService } from './live-tracking.service';
import type { TrackingJoinDto, TrackingLocationUpdateDto } from './dto/tracking-location.dto';
export declare class TripTrackingGateway implements OnGatewayConnection, OnGatewayDisconnect {
    private readonly jwt;
    private readonly config;
    private readonly liveTracking;
    private readonly logger;
    server: Namespace;
    constructor(jwt: JwtService, config: ConfigService, liveTracking: LiveTrackingService);
    handleConnection(client: Socket): Promise<void>;
    handleDisconnect(client: Socket): void;
    onJoin(client: Socket, data: TrackingJoinDto): Promise<{
        ok: boolean;
        error: string;
        tripId?: undefined;
    } | {
        ok: boolean;
        tripId: string;
        error?: undefined;
    }>;
    onLeave(client: Socket, data: TrackingJoinDto): Promise<{
        ok: boolean;
        tripId: string;
    }>;
    onLocationUpdate(client: Socket, data: TrackingLocationUpdateDto): Promise<{
        ok: boolean;
        error: string;
        persisted?: undefined;
        reason?: undefined;
    } | {
        ok: boolean;
        persisted: boolean;
        reason: string | undefined;
        error?: undefined;
    }>;
    private emitTrackingStatus;
    onTripStatusChanged(trip: {
        tripId: string;
        status: TripStatus;
        userId?: string;
    }): void;
    onPunchRecorded(payload: {
        tripId: string;
        type: string;
    }): void;
    onTripCreatedBroadcast(trip: any): void;
    onTripUpdatedBroadcast(trip: any): void;
    onTripStatusChangedBroadcast(trip: any): void;
    onTripDeletedBroadcast(payload: {
        tripId: string;
        tripDbId?: string;
    }): void;
}
