import { BindingFromClassOptions, Constructor, Context, Interceptor, InterceptorBindingOptions, Provider } from '@loopback/core';
import { RestApplication } from '@loopback/rest';
import { InterceptorDescription, RunnerTreatmentDescription } from './integration/extension-description';
import { ExtensionProvider } from './integration/extension.provider';
import { ObjectTreesApplicationConfig } from './integration/object-trees-application.config';
export declare class ObjectTreesApplication extends RestApplication {
    rootDirectory: string;
    interceptorDescriptions: {
        [interceptorId: string]: InterceptorDescription & {
            providerId: string;
        };
    };
    controllersDescriptions: (RunnerTreatmentDescription & {
        providerId: string;
        controllerId: string;
    })[];
    protected extensionProviders: ExtensionProvider[];
    protected staticDir: {
        [basePath: string]: string;
    };
    config: ObjectTreesApplicationConfig;
    constructor(config?: ObjectTreesApplicationConfig, parent?: Context);
    addStaticDir(basePath: string, dirName: string): void;
    getStaticDirs(): {
        [basePath: string]: string;
    };
    private addProviders;
    addController(providerId: string, controller: {
        controllerCtor: Constructor<unknown>;
        nameOrOptions?: string | BindingFromClassOptions | undefined;
        description: RunnerTreatmentDescription;
    }): void;
    addInterceptor(providerId: string, interceptorProvider: {
        id: string;
        interceptor: Interceptor | Constructor<Provider<Interceptor>>;
        nameOrOptions?: string | InterceptorBindingOptions;
        description: InterceptorDescription;
    }): void;
    bootObjectTrees(): Promise<void>;
    private calculateBootSummary;
    getService<T>(t: {
        name: string;
    }): Promise<T>;
}
