import { OnGatewayConnection, OnGatewayDisconnect } from '@nestjs/websockets';
import { Server, Socket } from 'socket.io';
import { ChatService } from './chat.service';
import { SendMessageDto, TypingDto, MarkReadDto, JoinRoomDto } from './dto/chat.dto';
import { PushService } from './push.service';
export declare class ChatGateway implements OnGatewayConnection, OnGatewayDisconnect {
    private readonly chatService;
    private readonly pushService;
    server: Server;
    private readonly logger;
    constructor(chatService: ChatService, pushService: PushService);
    private getUserId;
    handleConnection(client: Socket): Promise<void>;
    handleDisconnect(client: Socket): void;
    handleJoinRoom(client: Socket, dto: JoinRoomDto): Promise<{
        event: string;
        roomId: number;
    }>;
    handleMessage(client: Socket, dto: SendMessageDto): Promise<{
        success: boolean;
        error: string;
        messageId?: undefined;
    } | {
        success: boolean;
        messageId: number;
        error?: undefined;
    }>;
    private sendPushToOfflineMembers;
    handleTypingStart(client: Socket, dto: TypingDto): void;
    handleTypingStop(client: Socket, dto: TypingDto): void;
    handleMarkRead(client: Socket, dto: MarkReadDto): Promise<void>;
    handleGetOnlineUsers(): {
        onlineUserIds: number[];
    };
    emitToUser(userId: number, event: string, data: unknown): void;
    isOnline(userId: number): boolean;
}
