import { CoreModule } from '../../core/interfaces';
import { CoreRoute } from './interfaces';
import { Observable } from 'rxjs';
import { InjectionToken } from '../../core/decorators';
import { Request } from 'hapi';
export declare class HttpRequestInfo {
    query: {
        [key: string]: any;
    };
    params: {
        [key: string]: string;
    };
    headers: {
        [key: string]: string;
    };
    payload: any;
    credentials: {
        [key: string]: any;
    };
    id: string;
}
export declare const requestKey: InjectionToken<{}>;
export declare class RouteBuilder {
    /**
     * Helper to extract metadata
     * @property {string} decoratorName
     */
    private static decoratorName;
    /**
     * Entrypoint to build a CoreRoute
     * Get the metadata and build the
     * route instance
     *
     * @param  {CoreModule} module
     * @returns CoreRoute
     */
    static buildRoutes(module: CoreModule): Observable<CoreRoute>;
    /**
     * Instantiate a new Route
     * with its own DI/request
     *
     * @param  {CoreRoute} route
     * @param  {Request} request
     * @returns Observable
     */
    static instantiateRouteAndDI<T>(route: CoreRoute, request: Request): Observable<T>;
    /**
     * Transform metadata to instance CoreRoute
     *
     * @param  {Route} data
     * @returns CoreRoute
     */
    private static coreRouteFromMetadata(data, token, module);
    /**
     * Extract metadata filtered by route
     * from the declarations provided
     *
     * @param  {Type<any>} declarations
     * @returns Route
     */
    private static metadataFromDeclarations(declarations);
}
