import { ActivatedRoute, Router } from '@angular/router';
import { Observable } from 'rxjs';
import * as i0 from "@angular/core";
export type RouteConfigParams<RouteTags extends string = string> = {
    routeTags: RouteTags | RouteTags[];
};
export type RouteConfigParamNames = keyof RouteConfigParams;
export type RouteData<ConfigParamsNames extends string = never, RouteTags extends string = string> = {
    [key in ConfigParamsNames]: unknown;
} & RouteConfigParams<RouteTags>;
export type RouteDataParam<ConfigParamsNames extends string> = keyof RouteData<ConfigParamsNames>;
export declare class RouteConfigService<RouteTags extends string = string, ConfigParamsNames extends string = never> {
    private activatedRoute;
    private router;
    private _injectedDefaultValue?;
    private get injectedDefaultValue();
    constructor(activatedRoute: ActivatedRoute, router: Router, _injectedDefaultValue?: Partial<RouteData<ConfigParamsNames, RouteTags>> | undefined);
    /**
     * Returns an Observable which emits the route config set for the activated route.
     *
     * @example
     * export class AppComponent {
     *   data$ = this.routeConfigService.getActivatedRouteConfig();
     *   dataWithDefaultValue$ = this.routeConfigService.getActivatedRouteConfig({
     *     routeTags: ['defaultTag'],
     *     title: 'Default Title',
     *   });
     * }
     *
     * @param defaultValue - the default value that should be returned, it allows overriding the injected default values.
     *
     * @returns Observable<Partial<C>>
     */
    getActivatedRouteConfig<C extends RouteData<ConfigParamsNames, RouteTags> = RouteData<ConfigParamsNames, RouteTags>>(defaultValue?: Partial<C>): Observable<Partial<C>>;
    /**
     * Returnsthe an Observable with current route's property value
     *
     * @example
     * export class AppComponent {
     *   tags$ = this.routeConfigService.getLeafConfig('routeTags', ['no tags']);
     * }
     *
     * @param paramName - the parameter name from the route config to be returned
     * @param defaultValue - the default value that should be returned, if the value is not present
     */
    getLeafConfig(paramName: 'routeTags', defaultValue?: RouteTags[]): Observable<RouteTags[]>;
    getLeafConfig<T>(paramName: ConfigParamsNames, defaultValue?: T): Observable<T>;
    static ɵfac: i0.ɵɵFactoryDeclaration<RouteConfigService<any, any>, [null, null, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<RouteConfigService<any, any>>;
}
