import type ts from 'typescript/lib/tsserverlibrary.js';
import { SignalKey } from './signals.js';
export type ViewInfo = {
    selector: string;
    extendsType: string;
    viewName: string;
    interfaceType: ts.InterfaceDeclaration;
    formAssociated: boolean;
    disabledFeatures?: string[];
};
export type DecoratorInfo = {
    name: string;
    aliasName: string;
    type?: string;
};
export type SignalInfo = DecoratorInfo & {
    necessity?: 'required';
};
export type SignalMetadata = Partial<Record<SignalKey, SignalInfo[]>>;
export type ClassInfo = {
    type: 'component' | 'directive';
    name: string;
    successors?: string[];
    views: ViewInfo[];
    inputs: DecoratorInfo[];
    outputs: DecoratorInfo[];
    signals: SignalMetadata;
};
export type ModuleInfo = {
    path: string;
    classes?: ClassInfo[];
};
declare class ModuleManger implements Map<string, ModuleInfo> {
    [Symbol.iterator](): IterableIterator<[string, ModuleInfo]>;
    [Symbol.toStringTag]: string;
    get size(): number;
    private map;
    add(info: ModuleInfo): void;
    clear(): void;
    delete(key: string): boolean;
    forEach(callbackfn: (value: ModuleInfo, key: string, map: Map<string, ModuleInfo>) => void, thisArg?: any): void;
    get(key: string): ModuleInfo | undefined;
    has(key: string): boolean;
    set(key: string, value: ModuleInfo): this;
    entries(): IterableIterator<[string, ModuleInfo]>;
    keys(): IterableIterator<string>;
    values(): IterableIterator<ModuleInfo>;
}
export declare const moduleManger: ModuleManger;
export {};
//# sourceMappingURL=modules.d.ts.map