/// <reference types="node" />
import { Socket } from 'socket.io-client';
import { EventEmitter } from 'events';
import queue from 'queue';
import * as Types from './types';
import { RoomEvents, IRoomActions } from './types';
import { RoomActionsItem } from '../common/Classes';
interface Options {
    url: string;
    roomid: string;
    uid: number;
}
declare class SocketSDK {
    ee: EventEmitter;
    config: Options;
    client: Socket;
    queueOn: queue;
    queueEmit: queue;
    init(url: string): Promise<boolean>;
    /**
     * 生成房间操作动作
     * @param action 动作名
     * @param data 动作数据
     * @param to 指定用户
     * @param customroom 指定自定义房间id
     * @returns 动作
     */
    createRoomAction<T extends keyof IRoomActions, K extends IRoomActions[T]>(action: T, data: K, to?: number | string | Array<number | string> | Types.ToSystemEnum, customroom?: string[]): RoomEvents | undefined;
    queueOnRoomsEventsAdd(action: RoomEvents | undefined, isInit?: boolean): void;
    queueEmitRoomsEventsAdd(action: RoomEvents, isInit?: boolean): void;
    on(cb: (action: RoomActionsItem) => void): void;
    off(cb: (action: RoomActionsItem) => void): void;
    rooms: () => Promise<string[]>;
    has: (roomid: string) => Promise<boolean>;
    emit<T extends keyof Omit<IRoomActions, keyof Types.ClientActions | keyof Types.SystemActions>, K extends IRoomActions[T]>(action: T, data: K, to?: number | string | Array<number | string> | Types.ToSystemEnum, customroom?: string[]): void;
    /**
     * 获取服务器时间戳
     * @returns number
     */
    getServerTime(): Promise<number>;
    addListenerServerTime(listener: (data: {
        time: number;
    }) => void): void;
    removeListenerServerTime(listener?: any): void;
}
export default SocketSDK;
export { Types };
