import { IJsonSchema } from '@jacquesparis/objects-model';
import { ObjectNode } from './../../models/object-node.model';
import { ObjectTree } from './../../models/object-tree.model';
import { CurrentContext } from './../../services/application.service';
import { MustacheService } from './../../services/entity-definition/mustache.service';
import { InsideRestService } from './../../services/inside-rest/inside-rest.service';
import { ObjectTypeService } from './../../services/object-type.service';
import { UriCompleteService } from './../../services/uri-complete/uri-complete.service';
import { MenuTree, Popup, WebSiteEvent } from './web-site.interface';
export interface PopupBuilder {
    pageHrefs: {
        [replaceId: string]: {
            pageId: string;
            pageName: string;
            parentPage?: {
                pageId: string;
                pageName: string;
                anchor: string;
            };
        };
    };
    popupParts: {
        uri: string | undefined;
        title: string | undefined;
        subTitle: string | undefined;
        subTitleParts: string[];
        images: {
            uri: string;
            text: string | undefined;
        }[];
        imageBlocs: {
            uri: string;
            text: string | undefined;
        }[][];
        texts: {
            uri: string | undefined;
            text: string;
        }[];
        links: {
            uri: string;
            text: string;
        }[];
        btns: {
            uri: string;
            text: string;
        }[];
    };
    popupLinkLabels: {
        [labelId: string]: string;
    };
}
export declare class WebSiteService {
    private insideRestService;
    private objectTypeService;
    private uriCompleteService;
    private mustacheService;
    popup: {
        templatesMustache: {
            [templateId: string]: string;
        };
        templateMustache: string;
        headerScript: string;
        footerScript: string;
        templateAngular: string;
        scss: string;
        css: string;
        controller: string;
        refererConfig: IJsonSchema;
    };
    private popupContributors;
    eventContributors: ((webSiteEvent: WebSiteEvent, entriesTree: ObjectTree, menuTree: MenuTree, ctx: CurrentContext) => Promise<boolean>)[];
    constructor(insideRestService: InsideRestService, objectTypeService: ObjectTypeService, uriCompleteService: UriCompleteService, mustacheService: MustacheService);
    registerPopupContributor(popupContributor: (popupNode: ObjectNode, builder: PopupBuilder, ctx: CurrentContext) => Promise<boolean>): void;
    registerEventContributor(eventContributor: (webSiteEvent: WebSiteEvent, entriesTree: ObjectTree, menuTree: MenuTree, ctx: CurrentContext) => Promise<boolean>): void;
    buildEvent<T extends WebSiteEvent>(entriesTree: ObjectTree, menuTree: MenuTree, eventType: new (menuTree: MenuTree) => T, ctx: CurrentContext): Promise<T>;
    getPopupContent(popupLinkLabels: {
        [labelId: string]: string;
    }, objectNode: ObjectNode, ctx: CurrentContext): Promise<Popup>;
}
