import { OrNil } from "../utils/declaration";
import { SdinProject } from './project';
import { SdinAbstractConfig } from './abstract-config';
import { SdinApplicationModule, SdinApplicationModuleDatas } from './application-module';
export interface SdinApplicationPageElement extends Record<string, string | boolean | undefined> {
    key: string;
}
export interface SdinApplicationPageDatas extends SdinApplicationModuleDatas {
    SDIN_PAGE_NAME: string;
    SDIN_PAGE_TITLE: string;
    SDIN_PAGE_PATH: string;
}
export type SdinApplicationPageSkeleton = (page: SdinApplicationPage) => string;
/**
 * Sdin 应用页面配置选项
 */
export interface SdinApplicationPageParams {
    /** 页面名称 */
    name: string;
    /** 页面标题 */
    title: string;
    /** 页面入口文件（默认：页面名称/index.(ts|tsx|js|jsx)，相对模块源码目录而言） */
    index?: string;
    /** 页面网络路径（默认：页面名称，相对模块网络路径而言） */
    path?: string;
    /** 页面元信息标签列表 */
    metas?: OrNil<SdinApplicationPageElement>[];
    /** 页面链接标签列表 */
    links?: OrNil<SdinApplicationPageElement>[];
    /** 页面样式标签列表 */
    styles?: OrNil<SdinApplicationPageElement>[];
    /** 页面脚本标签列表 */
    scripts?: OrNil<SdinApplicationPageElement>[];
    /** 页面骨架渲染器 */
    skeleton?: SdinApplicationPageSkeleton;
    /** 数据宏定义 */
    datas?: Record<string, string>;
}
/**
 * Sdin 应用页面配置
 */
export declare class SdinApplicationPage extends SdinAbstractConfig<SdinProject, SdinApplicationModule, SdinApplicationPageParams> {
    /** 页面名称 */
    readonly name: string;
    /** 页面标题 */
    readonly title: string;
    /** 页面入口文件 */
    readonly index: string;
    /** 页面网络路径（相对模块网络路径而言） */
    readonly path: string;
    /** 页面元信息标签列表 */
    readonly metas: SdinApplicationPageElement[];
    /** 页面样式标签列表 */
    readonly links: SdinApplicationPageElement[];
    /** 页面样式标签列表 */
    readonly styles: SdinApplicationPageElement[];
    /** 页面脚本标签列表 */
    readonly scripts: SdinApplicationPageElement[];
    /** 页面骨架渲染器 */
    private readonly skeleton;
    /** 数据宏定义 */
    readonly datas: SdinApplicationPageDatas;
    constructor(project: SdinProject, module: SdinApplicationModule, params: SdinApplicationPageParams);
    validate(): Promise<void>;
    getHtmlTitle(): string;
    getHtmlDatas(): import("lodash").Omit<SdinApplicationPageDatas, "SDIN_PROJECT_AUTHOR_NAME" | "SDIN_PROJECT_AUTHOR_EMAIL">;
    getMetaHtmlString(): string;
    getLinkHtmlString(): string;
    getStyleHtmlString(): string;
    getScriptHtmlString(scripts?: SdinApplicationPageElement[]): string;
    getSkeleton(): string;
    private assignLabels;
    private toHtmlString;
}
