import { Logger } from '../misc/logger';
import { IService, IHook, IModelOptions } from '../decorators';
import { App } from '../app';
import { GypsumEmitter } from '../emitter';
export declare type ServiceOptions = {
    [key: string]: IService | boolean;
};
export declare type getOptions = keyof IModelOptions;
export declare class Model {
    private _servicesData;
    private _hooksData;
    app: App;
    type: 'Mongo' | 'File' | undefined;
    $logger: Logger;
    name: string;
    emitter: GypsumEmitter;
    constructor(app: App);
    private _mArrangeServices();
    private _mArrangeHooks();
    private _mArrangeJobs();
    private _init();
    $get(prop: getOptions): any;
    $getServices(): {
        [key: string]: IService;
    };
    $getService(name: string): IService;
    $getHooks(): {
        [key: string]: IHook;
    };
    $getHook(name: string): IHook;
    $hasService(name: string): boolean;
    $hasHook(name: string): boolean;
}
