import { Client } from './Client';
import { DisconnectReason } from './Commander';
import { Logger } from './Logger';
export declare enum ExtensionMode {
    Before = 0,
    After = 1
}
export interface Extension {
    name: string;
    mode: ExtensionMode;
    log: Logger;
    init(): Promise<void>;
    onClientConnect(client: Client): Promise<void>;
    onClientDisconnect(client: Client, reason: DisconnectReason): Promise<void>;
    onClientReady(client: Client): Promise<void>;
    onServiceListening(): Promise<void>;
    onServiceClose(): Promise<void>;
}
