import { Router } from '@angular/router';
import { Observable } from 'rxjs';
import { MetaContext, RouteMetaTemplates, RouterMetaConfig } from './router-meta';
import { Indexable } from './types';
import * as i0 from "@angular/core";
/** @internal */
export interface MetaInfo {
    replace: RegExp;
    value: any;
}
/** @internal */
export interface ProcessedMetaContext extends Indexable<MetaInfo> {
}
/**
 * Service to provide context for meta tags
 */
export declare class RouterMetaContextService {
    private config;
    private router;
    private static interpolation;
    private ctxNameCache;
    private interpolation;
    private interpolationStart;
    private interpolationEnd;
    private navigationEnd$;
    private metaDefaultContext$$;
    private metaContext$$;
    private clearDefaultContext$;
    private clearContext$;
    private metaDefaultContext$;
    private metaContext$;
    private context$;
    constructor(config: RouterMetaConfig, router: Router);
    /**
     * Provided context will be available between router navigations
     *
     * Multiple contexts will be merged together
     */
    provideDefaultContext(ctx: MetaContext | Observable<MetaContext>): void;
    /**
     * Provided context will be available ONLY until next router navigation
     *
     * Multiple contexts will be merged together
     *
     * If you want to persist context between navigations -
     * use {@link RouterMetaContextService#provideDefaultContext()}
     */
    provideContext(ctx: MetaContext | Observable<MetaContext>): void;
    /**
     * Clear default context provided by
     * {@link RouterMetaContextService#provideDefaultContext()}
     */
    clearDefaultContext(): void;
    /**
     * Clear context provided by
     * {@link RouterMetaContextService#provideContext()}
     */
    clearContext(): void;
    /**
     * Observable of computed context for meta tags
     */
    getContext(): Observable<{
        [x: string]: MetaInfo;
    }>;
    /** @internal */
    _templateStr(str?: string, data?: ProcessedMetaContext, extras?: {
        name?: string;
        templates?: RouteMetaTemplates;
        meta?: ProcessedMetaContext;
    }): string;
    /** @internal */
    _processContext(ctx: MetaContext): ProcessedMetaContext;
    private prepareContext;
    private templateReplace;
    private getContextReplace;
    static ɵfac: i0.ɵɵFactoryDeclaration<RouterMetaContextService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<RouterMetaContextService>;
}
//# sourceMappingURL=router-meta-context.service.d.ts.map