import Base from '../../base';
import Session from './session/session';
import { FRONTEND_ID, IConnectorSocket, IMsgRspEncode, IObject, SID, UID } from '../..';
interface ISessions {
    [sid: string]: Session;
}
interface IUidSessions {
    [uid: string]: Session[];
}
export default class SessionService extends Base {
    singleSession: boolean;
    sessions: ISessions;
    uidMap: IUidSessions;
    constructor(app: any, opts: any);
    /**
     * 创建session
     * @param sid socket id
     * @param frontendId 当前服务器id
     * @param socket
     * @return {Session}
     */
    create(sid: SID, frontendId: FRONTEND_ID, socket: IConnectorSocket): Session;
    get(sid: SID): Session;
    getByUid(uid: UID): Session[];
    /**
     * 建立uid与session的绑定
     * @param sid
     * @param uid
     */
    bind(sid: SID, uid: UID): void;
    /**
     * 解绑
     * @param sid
     * @param uid
     */
    unbind(sid: SID, uid: UID): void;
    /**
     * 移除session
     * @param sid
     */
    remove(sid: SID): void;
    /**
     * 设置信息导入session
     * @param sid
     * @param key
     * @param val
     */
    import(sid: SID, key: string, val: any): void;
    importAll(sid: SID, settings: IObject): void;
    /**
     * 剔除session
     * @param sid
     * @param reason
     */
    kickBySessionId(sid: SID, reason?: string): void;
    kick(uid: UID, reason: string): void;
    /**
     * 获取客户端的ip
     * @param sid
     */
    getClientIpBySessionId(sid: SID): string;
    /**
     * 推送消息到客户端
     * @param sid
     * @param msg
     */
    sendMsg(sid: SID, msg: IMsgRspEncode): void;
    sendMsgByUid(uid: UID, msg: IMsgRspEncode): void;
    getBindedSessions(): Session[];
    getSessions(): Session[];
    private send;
}
export {};
