import { PubbyModule } from "./module";
import { $modulesMap } from "./meta";
export interface PbManagerConstructor<O = {}> extends Function {
    new (client: Pubby, options: O): PubbyModule;
}
export declare class Pubby {
    [$modulesMap]: Map<PbManagerConstructor<{}>, PubbyModule<any>>;
    initialized: boolean;
    use<T extends PbManagerConstructor<any>>(ModuleConstructor: T, options?: T["prototype"]["options"]): this;
    has<T extends string>(name: T): this is Record<T, any>;
    require<T extends PbManagerConstructor<any>>(ModuleConstructor: T): boolean;
    init(): Promise<Pubby>;
    dispose(): Promise<void>;
}
