import { OnGatewayConnection } from "@nestjs/websockets";
import { Server, Socket } from "socket.io";
import { AuthService } from "../auth/v1/auth.service";
import { CreateTripSocketDto } from "./dto/create-trip-socket.dto";
import { TripsService } from "../trips/v1/trips.service";
import { ChatMessageRepository } from "../chat/repositories/chat-message.repository";
import { ChatRoomRepository } from "../chat/repositories/chat-room.repository";
import { ChatParticipantRepository } from "../chat/repositories/chat-participant.repository";
import { CustomersService } from "../customers/v1/customers.service";
export declare class TripSocketGateway implements OnGatewayConnection {
    private readonly tripService;
    private readonly authService;
    private readonly chatMessageRepository;
    private readonly chatRoomRepository;
    private readonly chatParticipantRepository;
    private readonly customerService;
    server: Server;
    constructor(tripService: TripsService, authService: AuthService, chatMessageRepository: ChatMessageRepository, chatRoomRepository: ChatRoomRepository, chatParticipantRepository: ChatParticipantRepository, customerService: CustomersService);
    handleConnection(client: Socket): Promise<void>;
    handleUpdateLocation(data: CreateTripSocketDto): Promise<{
        status: string;
        location: import("../trips/entities/trip-tracking.entity").TripTracking | {
            success: boolean;
            code: number;
            message: string;
        };
    }>;
    handleJoinTrip(tripId: number, client: Socket): {
        status: string;
        message: string;
    };
    handleGetLatestLocation(tripId: number): Promise<{
        status: string;
        latest: number | import("../trips/entities/trip-tracking.entity").TripTracking | import("../trips/entities/trip-tracking.entity").TripTracking[] | import("../../common/interfaces/pagination-result.interface").PaginatedResult<import("../trips/entities/trip-tracking.entity").TripTracking>;
    }>;
    handleSendMessage(data: {
        sender_id: number;
        receiver_id: number;
        message: string;
        chat_room_id: number;
    }, client: Socket): Promise<void>;
    handleJoinChatRoom(data: {
        current_user_id: number;
        current_user_type?: string;
        target_user_id: number;
        target_user_type?: string;
        trip_id?: number;
        chat_type?: string;
    }, client: Socket): Promise<void>;
    handleMarkMessagesAsRead(data: {
        receiver_id: number;
        chat_room_id: number;
    }, client: Socket): Promise<void>;
    handleGetChatHistory(data: {
        user_id: number;
        chat_room_id: number;
        limit?: number;
        skip?: number;
    }, client: Socket): Promise<void>;
    handleGetMyChatRooms(data: {
        user_id: number;
        user_type?: string;
    }, client: Socket): Promise<void>;
    handleUpdateStatus(data: {
        trip_id: number;
        status: string;
    }, client: Socket): Promise<{
        status: string;
        message: string;
        data: {
            trip_id: number;
            status: string;
            timestamp: string;
        };
    }>;
}
