import { Observable } from 'rxjs';
import { UnifiedInjector } from '../../lazy-loading/unified-injector';
import { Page, PageMeta } from '../model/page.model';
import { PageMetaConfig } from '../page/config/page-meta.config';
import { PageMetaResolver } from '../page/page-meta.resolver';
import { CmsService } from './cms.service';
/**
 * Service that collects the page meta data by using injected page resolvers.
 *
 * Deprecation note: with version 4.0, we'll make the optional constructor arguments mandatory.
 */
export declare class PageMetaService {
    protected cms: CmsService;
    protected unifiedInjector?: UnifiedInjector;
    protected pageMetaConfig?: PageMetaConfig;
    protected platformId?: string;
    private resolvers$;
    constructor(cms: CmsService, unifiedInjector?: UnifiedInjector, pageMetaConfig?: PageMetaConfig, platformId?: string);
    /**
     * The list of resolver interfaces will be evaluated for the pageResolvers.
     *
     * @deprecated since 3.1, use the configured resolvers instead from `PageMetaConfig.resolvers`.
     */
    protected resolverMethods: {
        [key: string]: string;
    };
    protected meta$: Observable<PageMeta | null>;
    /**
     * Returns the observed page meta data for the current page.
     *
     * The data is resolved by various PageResolvers, which are configurable.
     */
    getMeta(): Observable<PageMeta | null>;
    /**
     * If a `PageResolver` has implemented a resolver interface, the resolved data
     * is merged into the `PageMeta` object.
     * @param metaResolver
     */
    protected resolve(metaResolver: PageMetaResolver): Observable<PageMeta>;
    /**
     * Returns an object with resolvers. The object properties represent the `PageMeta` property, i.e.:
     *
     * ```
     * {
     *   title: 'resolveTitle',
     *   robots: 'resolveRobots'
     * }
     * ```
     *
     * This list of resolvers is filtered for CSR vs SSR processing since not all resolvers are
     * relevant during browsing.
     */
    protected getResolverMethods(): {
        [property: string]: string;
    };
    /**
     * Return the resolver with the best match, based on a score
     * generated by the resolver.
     *
     * Resolvers match by default on `PageType` and `page.template`.
     */
    protected getMetaResolver(page: Page): Observable<PageMetaResolver | undefined>;
}
