import { OnGatewayConnection, OnGatewayDisconnect } from '@nestjs/websockets';
import { Server, Socket } from 'socket.io';
import { JwtService } from '@nestjs/jwt';
import { ConfigService } from '@nestjs/config';
import { MessagesService } from './messages.service';
export declare class MessagesGateway implements OnGatewayConnection, OnGatewayDisconnect {
    private messages;
    private jwt;
    private config;
    server: Server;
    constructor(messages: MessagesService, jwt: JwtService, config: ConfigService);
    handleConnection(client: Socket): Promise<void>;
    handleDisconnect(client: Socket): void;
    handleJoinGroup(groupId: string, client: Socket): Promise<boolean | undefined>;
    handleLeaveGroup(groupId: string, client: Socket): void;
    handleMessage(data: {
        groupId: string;
        body: string;
        type?: string;
        mediaUrl?: string;
    }, client: Socket): Promise<boolean | ({
        user: {
            id: string;
            name: string;
            profilePicture: string | null;
        };
    } & {
        id: string;
        createdAt: Date;
        updatedAt: Date;
        type: import("@prisma/client").$Enums.MessageType;
        groupId: string;
        userId: string;
        body: string | null;
        pinned: boolean;
        mediaUrl: string | null;
    })>;
    handleTyping(data: {
        groupId: string;
        isTyping: boolean;
    }, client: Socket): void;
    handleMarkRead(messageId: string, client: Socket): Promise<{
        id: string;
        userId: string;
        messageId: string;
        readAt: Date;
    }>;
}
