import { IRoomService } from '../types';

export type LifeCycleEvent = 'mount' | 'unmount';
export declare enum LifeCycleChangeReason {
    RoomLogout = "room logout",
    RoomStart = "room start",
    RoomJoin = "room join",
    RoomLeave = "room leave",
    RoomDestroy = "room destroy",
    RoomKickedOffline = "room kicked offline",
    RoomKickedOut = "room kicked out",
    RoomUserSigExpired = "room user sig expired",
    RoomError = "room error"
}
interface ILifeCycleManager {
    on(eventType: LifeCycleEvent, callback: (data?: any) => any): void;
    off(eventType: LifeCycleEvent, callback: (data?: any) => void): void;
    start(): void;
    stop(): void;
}
export declare class LifeCycleManager implements ILifeCycleManager {
    private service;
    private eventCallbacks;
    private emitter;
    constructor(service: IRoomService);
    start(): void;
    stop(): void;
    on(eventType: LifeCycleEvent, callback: (data?: any) => any): void;
    off(eventType: LifeCycleEvent, callback: (data?: any) => void): void;
    private emit;
    private addEventListeners;
    private removeEventListeners;
}
export {};
