/**
 * Module representation types for Tsonic compiler
 */
export type ImportKind = "local" | "clr" | "node_module" | "source_package";
export type Import = {
    readonly kind: ImportKind;
    readonly specifier: string;
    readonly resolvedPath?: string;
    readonly namespace?: string;
    readonly importedNames: readonly ImportedName[];
};
export type ImportedName = {
    readonly name: string;
    readonly alias?: string;
};
export type Export = {
    readonly kind: "named";
    readonly name: string;
    readonly localName: string;
} | {
    readonly kind: "default";
    readonly localName: string;
} | {
    readonly kind: "namespace";
    readonly name: string;
    readonly localName: string;
} | {
    readonly kind: "reexport";
    readonly fromModule: string;
    readonly exports: readonly ImportedName[];
};
export type ModuleInfo = {
    readonly filePath: string;
    readonly sourceText: string;
    readonly imports: readonly Import[];
    readonly exports: readonly Export[];
    readonly hasTopLevelCode: boolean;
    readonly namespace?: string;
    readonly className?: string;
};
export type ModuleGraph = {
    readonly modules: ReadonlyMap<string, ModuleInfo>;
    readonly dependencies: ReadonlyMap<string, readonly string[]>;
    readonly dependents: ReadonlyMap<string, readonly string[]>;
    readonly entryPoints: readonly string[];
};
export declare const createModuleInfo: (filePath: string, sourceText: string, imports?: readonly Import[], exports?: readonly Export[], hasTopLevelCode?: boolean, namespace?: string, className?: string) => ModuleInfo;
export declare const createModuleGraph: (modules?: ReadonlyMap<string, ModuleInfo>, dependencies?: ReadonlyMap<string, readonly string[]>, dependents?: ReadonlyMap<string, readonly string[]>, entryPoints?: readonly string[]) => ModuleGraph;
export declare const addModule: (graph: ModuleGraph, module: ModuleInfo) => ModuleGraph;
export declare const isLocalImport: (importSpec: string) => boolean;
//# sourceMappingURL=module.d.ts.map