/// <reference types="bunyan" />
import Bunyan from "bunyan";
import { ServerPluginConfig, ServerPluginClassBase, ServerPluginClass, ServerPlugin } from "./ServerPlugin";
import { AuthnFunction } from "./auth";
export interface ServerPluginRecordBase {
    type: ServerPluginClassBase;
    config: Partial<ServerPluginConfig>;
}
export interface ServerPluginRecord<TConfig extends ServerPluginConfig, TState extends object, TPlugin extends ServerPlugin<TConfig, TState>> extends ServerPluginRecordBase {
    type: ServerPluginClass<TConfig, TPlugin>;
    config: Partial<TConfig>;
}
export declare class Config {
    port: number;
    logger: Bunyan;
    authnFn: AuthnFunction;
    dataDirectory: string;
    readonly plugins: Array<ServerPluginRecordBase>;
    registerPlugin<TConfig extends ServerPluginConfig, TState extends object, TPlugin extends ServerPlugin<TConfig, TState>>(type: ServerPluginClass<TConfig, TPlugin>, config?: Partial<TConfig>): void;
}
