import { OrNil } from "../utils/declaration";
import { SdinModule, SdinModuleParams } from './module';
import { SdinTesting, SdinTestingParams } from './testing';
import { SdinPlaying, SdinPlayingParams } from './playing';
import { SdinAbstractProject, SdinAbstractProjectParams } from './abstract-project';
export interface SdinProjectDatas extends Record<string, any> {
    SDIN_PROJECT_NAME: string;
    SDIN_PROJECT_VERSION: string;
    SDIN_PROJECT_DESCRIPTION: string;
    SDIN_PROJECT_AUTHOR_NAME: string;
    SDIN_PROJECT_AUTHOR_EMAIL: string;
}
/**
 * Sdin 项目配置参数
 */
export interface SdinProjectParams extends SdinAbstractProjectParams {
    /** 模块列表 */
    modules: OrNil<SdinModuleParams>[];
    /** 测试配置 */
    testing?: SdinTestingParams;
    /** 演示配置 */
    playing?: SdinPlayingParams;
}
/**
 * Sdin 配置
 */
export declare class SdinProject extends SdinAbstractProject<null, null, SdinProjectParams, SdinProjectDatas> {
    /** 数据宏定义 */
    readonly datas: SdinProjectDatas;
    /** 模块列表 */
    readonly modules: SdinModule[];
    /** 测试配置 */
    readonly testing?: SdinTesting;
    /** 演示配置 */
    readonly playing?: SdinPlaying;
    constructor(params: SdinProjectParams);
    private createModules;
    private createModule;
    initialize(): Promise<void>;
    validate(): Promise<void>;
}
