import { OnModuleDestroy, OnModuleInit } from '@nestjs/common';
import { Repository, DataSource } from 'typeorm';
import { Session, SessionStatus } from './entities/session.entity';
import { CreateSessionDto } from './dto';
import { EngineFactory } from '../../engine/engine.factory';
import { IWhatsAppEngine } from '../../engine/interfaces/whatsapp-engine.interface';
import { EventsGateway } from '../events/events.gateway';
import { WebhookService } from '../webhook/webhook.service';
import { HookManager } from '../../core/hooks';
export declare class SessionService implements OnModuleDestroy, OnModuleInit {
    private readonly sessionRepository;
    private readonly dataSource;
    private readonly engineFactory;
    private readonly eventsGateway;
    private readonly webhookService;
    private readonly hookManager;
    private readonly logger;
    private engines;
    private reconnectStates;
    constructor(sessionRepository: Repository<Session>, dataSource: DataSource, engineFactory: EngineFactory, eventsGateway: EventsGateway, webhookService: WebhookService, hookManager: HookManager);
    onModuleInit(): Promise<void>;
    onModuleDestroy(): Promise<void>;
    create(dto: CreateSessionDto): Promise<Session>;
    findAll(): Promise<Session[]>;
    findOne(id: string): Promise<Session>;
    findByName(name: string): Promise<Session>;
    delete(id: string): Promise<void>;
    start(id: string): Promise<Session>;
    private initializeEngine;
    private scheduleReconnect;
    private executeReconnect;
    private cancelReconnect;
    stop(id: string): Promise<Session>;
    getQRCode(id: string): Promise<{
        qrCode: string;
        status: SessionStatus;
    }>;
    getEngine(id: string): IWhatsAppEngine | undefined;
    getGroups(id: string): Promise<{
        id: string;
        name: string;
    }[]>;
    private updateStatus;
    getStats(): Promise<{
        total: number;
        active: number;
        ready: number;
        disconnected: number;
        byStatus: Record<string, number>;
        memoryUsage: {
            heapUsed: number;
            heapTotal: number;
            rss: number;
        };
    }>;
    getActiveCount(): number;
    isActive(id: string): boolean;
}
