///
import * as tls from "tls";
import Hub, { UserRights } from "./hub";
import { Logger } from "./logger";
export interface Binding {
from: string;
to: string;
pattern?: string;
}
export interface WSServerOptions extends tls.TlsOptions {
type: "websocket";
port?: number;
}
export interface TcpServerOptions {
type: "tcp";
host?: string;
port?: number;
backlog?: number;
}
export interface NodeDefinition {
type: string;
options?: {
[key: string]: any;
};
}
export interface NodesConfig {
[nodeName: string]: string | NodeDefinition;
}
export declare type ListenOption = WSServerOptions | TcpServerOptions;
export interface UserOptions {
[username: string]: string;
}
export declare type LoggingOptions = "none" | "fatal" | "error" | "warning" | "info" | "debug";
export interface Config {
listen?: ListenOption | ListenOption[];
port?: number;
verbose?: boolean;
logging?: LoggingOptions;
bindings?: Binding[];
nodes: string[] | NodesConfig;
storage?: string;
users?: string | UserOptions;
rights?: UserRights;
}
export interface NormalizedConfig {
listen: ListenOption[];
logging: LoggingOptions;
bindings: Binding[];
nodes: NodesConfig;
storage: string;
users: UserOptions;
rights: UserRights;
}
export declare class MServer {
private hub;
private plainAuth;
private normalizedConfig;
private logger;
private connectionId;
constructor(normalizedConfig: NormalizedConfig, hub?: Hub);
init(): Promise;
setLogger(logger: Logger): void;
private log;
private setUsers;
private setPermissions;
private instantiateNodes;
private setupBindings;
private setStorage;
private startWebSocketServer;
private startTcpServer;
private startTransports;
}