import { SdinProject, SdinProjectDatas } from './project';
import { SdinAbstractProject, SdinAbstractProjectParams } from './abstract-project';
export interface SdinAbstractModuleDatas extends SdinProjectDatas {
    SDIN_MODULE_ENV: string;
    SDIN_MODULE_TYPE: string;
    SDIN_MODULE_MODE: string;
    SDIN_MODULE_NAME: string;
}
/**
 * Sdin 抽象模块选项
 */
export interface SdinAbstractModuleParams<TType extends string, TMode extends string> extends SdinAbstractProjectParams {
    /** 模块类型 */
    type: TType;
    /** 模块名称 */
    name: string;
    /** 模块构建模式 */
    mode?: TMode;
    /** 模块源码目录 */
    src?: string;
    /** 模块目标目录 */
    tar?: string;
}
/**
 * Sdin 抽象模块配置
 */
export declare abstract class SdinAbstractModule<TType extends string, TMode extends string, TParam extends SdinAbstractModuleParams<TType, TMode>, TDatas extends SdinAbstractModuleDatas> extends SdinAbstractProject<SdinProject, SdinProject, TParam, TDatas> {
    /** 模块类型 */
    readonly type: TType;
    /** 模块名称 */
    readonly name: string;
    /** 模块构建模式 */
    readonly mode: TMode;
    /** 模块源码目录 */
    readonly src: string;
    /** 模块目标目录 */
    readonly tar: string;
    /** 数据宏定义 */
    abstract datas: TDatas;
    constructor(project: SdinProject, params: TParam, mode: TMode, tarSuffix: string);
    /**
     * 检查模块配置对象
     */
    validate(): Promise<void>;
    /**
     * 获取模块源码目录下的绝对路径
     */
    withSrc(...pathSegments: string[]): string;
    /**
     * 获得模块目标目录下的绝对路径
     */
    withTar(...pathSegments: string[]): string;
    /**
     * 设置环境标识
     */
    setEnv(it: 'pro' | 'dev'): void;
}
