import { Application, Relations, ResourceUpdateInfo, Template, TemplateManager } from '@foxpage/foxpage-types';
import { ManagerBaseImpl } from '../common';
import { TemplateInstance } from './template';
/**
 * template manager
 *
 * @export
 * @class TemplateManager
 */
export declare class TemplateManagerImpl extends ManagerBaseImpl<Template> implements TemplateManager {
    constructor(app: Application);
    /**
     * add template to manager
     *
     * @param {Template} template
     */
    addTemplate(template: Template): TemplateInstance;
    /**
     * get template
     * if not exist local, will fetch from server then cache to local
     * @param {string} templateId
     */
    getTemplate(templateId: string): Promise<Template | undefined>;
    /**
     * get templates batch
     *
     * @param {string[]} templateIds
     * @return {*}  {Promise<Template[]>}
     */
    getTemplates(templateIds: string[]): Promise<Template[]>;
    /**
     * remove template
     *
     * @param {string[]} templateIds
     */
    removeTemplates(templateIds: string[]): void;
    /**
     * fetch templates from server
     *
     * @return {*} Promise<Template[]>
     */
    freshTemplates(templateIds?: string[]): Promise<Template[]>;
    protected onFetch(templateIds?: string[]): Promise<Template[]>;
    protected onPull(data: ResourceUpdateInfo): Promise<void>;
    protected onStash(data: Relations): void;
    protected createInstance(data: Template): Promise<TemplateInstance>;
    private newTemplate;
}
