import { File } from './typings';
export type ModuleProps = {
    path: string;
    exportName: string;
};
export declare abstract class Module {
    private _def;
    private _localDependencies;
    private _customTypeName;
    get path(): string;
    /**
     * @returns module name (equivalent to unescaped file name without extension)
     */
    get name(): string;
    get isDefaultExport(): boolean;
    get exportName(): string;
    get deps(): Module[];
    get typeName(): string;
    get importAlias(): string;
    protected constructor(_def: ModuleProps);
    abstract getContent(): Promise<string>;
    setCustomTypeName(alias: string): this;
    pushDep(...dependencies: Module[]): this;
    unshift(...basePath: string[]): this;
    toFile(): Promise<File>;
    flatten(): Promise<File[]>;
    import(base: Module): string;
}
export declare class ReExportTypeModule extends Module {
    protected constructor(def: {
        exportName: string;
    });
    getContent(): Promise<string>;
}
export declare class ReExportVariableModule extends Module {
    private _extraProps;
    protected constructor(def: {
        exportName: string;
        extraProps?: Record<string, string>;
    });
    getContent(): Promise<string>;
}
export declare class SingleFileModule extends Module {
    private _content;
    constructor(def: ModuleProps & {
        content: string;
    });
    getContent(): Promise<string>;
}
