import { Application, ContentRelationInfo, Page, PageManager, Relations, ResourceUpdateInfo } from '@foxpage/foxpage-types';
import { ManagerBaseImpl } from '../common';
import { PageInstance } from './page';
/**
 * page manager
 *
 * @export
 * @class PageManager
 */
export declare class PageManagerImpl extends ManagerBaseImpl<Page> implements PageManager {
    constructor(app: Application);
    /**
     * add page to manager
     *
     * @param {Page} page
     */
    addPage(page: Page): PageInstance;
    /**
     * remove page from manager
     *
     * @param {string[]} pageIds
     */
    removePages(pageIds: string[]): void;
    /**
     * get page from local first
     * no exist will fetch from  server
     *
     * @param {string} pageId
     * @return {*}  {(Page | undefined)}
     */
    getPage(pageId: string): Promise<Page | undefined>;
    /**
     * get pages
     *
     * @param {string[]} pageIds
     * @return {*}  {Promise<Page[]>}
     */
    getPages(pageIds: string[]): Promise<Page[]>;
    /**
     * fetch draft pages
     *
     * @param {string[]} pageIds
     * @param {string} [locale]
     * @return {*}  {Promise<ContentRelationInfo[]>}
     */
    getDraftPages(pageIds: string[], locale?: string): Promise<ContentRelationInfo[]>;
    /**
     * fetch preview version pages
     * @param pageIds
     * @param version
     * @param locale
     * @return {*}  {Promise<ContentRelationInfo>}
     */
    getPreviewPages(pageId: string, version: number, locale?: string): Promise<ContentRelationInfo>;
    /**
     * fetch pages from server
     *
     * @return {*}  {Promise<Page[]>}
     */
    freshPages(pageIds?: string[]): Promise<Page[]>;
    /**
     * first request page will return the all relations
     *
     * @protected
     * @param {string[]} pageIds
     */
    protected onFetch(pageIds: string[]): Promise<PageInstance[]>;
    protected onPull(data: ResourceUpdateInfo): Promise<void>;
    protected onStash(data: Relations): void;
    protected createInstance(data: Page): Promise<PageInstance>;
    private newPage;
}
