import { Socket, Server } from "socket.io";
import { ChatService } from './chat.service';
import { ChatAuthGuard } from 'src/auth/auth.guard';
import { ChatDisappearingDto, CreateConnection, EditMessageDto, ForwardMessageDto, JoinConnection, ReadMessage, SendChatEmoji, SendMessageDto, TypingDto, UserOnlineStateDto } from './dto/socket.dto';
import { ModelsService } from 'src/models/models.service';
import { Types } from 'mongoose';
import { CommonService } from 'src/common/common.service';
interface CustomSocket extends Socket {
    user_data: any;
}
export declare class ChatGateway {
    private readonly chatService;
    private readonly chatAuthService;
    private readonly common;
    private readonly model;
    private projection;
    private lean_options;
    private new_options;
    server: Server;
    constructor(chatService: ChatService, chatAuthService: ChatAuthGuard, common: CommonService, model: ModelsService);
    handleConnection(socket: Socket): Promise<void>;
    handleSendMessage(socket: CustomSocket, payload: CreateConnection): Promise<void>;
    joinConnection(socket: CustomSocket, payload: JoinConnection): Promise<void>;
    leaveConnection(socket: CustomSocket, payload: JoinConnection): Promise<void>;
    userOnlineState(socket: CustomSocket, payload: UserOnlineStateDto): Promise<void>;
    typing(socket: CustomSocket, payload: TypingDto): Promise<void>;
    sendMessage(socket: CustomSocket, payload: SendMessageDto): Promise<void>;
    sendChatEmoji(socket: CustomSocket, payload: SendChatEmoji): Promise<void>;
    readMessage(socket: CustomSocket, payload: ReadMessage): Promise<any>;
    editMessage(socket: CustomSocket, payload: EditMessageDto): Promise<void>;
    EditMessage(socket: CustomSocket, payload: any): Promise<void>;
    forwardMessage(socket: CustomSocket, payload: ForwardMessageDto): Promise<void>;
    chatDisappearing(socket: CustomSocket, payload: ChatDisappearingDto): Promise<void>;
    singleMessageSave: (user_id: string, payload: any, connection_id: string, from_user: any, socket?: Socket) => Promise<void>;
    mediaMessageSave: (payload: any, user_id: string, is_another_user_blocket_me: boolean, from_user: any, connection_id: string, socket: any) => Promise<void>;
    emitUserOnlineState(userData: any, isOnline: boolean): Promise<void>;
    allMembers(connection_id: string): Promise<Types.ObjectId[] | undefined>;
    disappearChatForMe(type: string, connection: any, user_id: string, otherUserId: any, deleted_for: any, socket: any): Promise<(import("mongoose").Document<unknown, {}, import("./schema/messages.schema").Message, {}> & import("./schema/messages.schema").Message & {
        _id: Types.ObjectId;
    } & {
        __v: number;
    })[]>;
    disappearChatForEveryOne(type: any, connection: any, user_id: any, otherUserId: any, allMemberIds: any, deleted_for: any): Promise<(import("mongoose").Document<unknown, {}, import("./schema/messages.schema").Message, {}> & import("./schema/messages.schema").Message & {
        _id: Types.ObjectId;
    } & {
        __v: number;
    })[]>;
    deliveredMessage(message_id: string, user_id: string): Promise<any>;
    readSingleMessages(message_id: string, user_id: string): Promise<any>;
    readAllMessages(connection_id: string, user_id: string): Promise<{
        message: string;
    }>;
    afterInit(server: Server): void;
    handleDisconnect(socket: Socket): Promise<void>;
}
export {};
