export type InjectionScope = 'singleton' | 'transient';
export interface ConstructorParameter {
    name: string;
    type: string;
    isOptional: boolean;
    accessModifier?: 'private' | 'public' | 'protected';
}
export interface DependencyInfo {
    name: string;
    importPath: string;
}
export interface ClassInfo {
    name: string;
    filePath: string;
    dependencies: DependencyInfo[];
    constructorParams: ConstructorParameter[];
    interfaceName?: string;
    abstractClassName?: string;
    importPath: string;
    scope: InjectionScope;
}
export interface FactoryInfo {
    name: string;
    filePath: string;
    dependencies: DependencyInfo[];
    parameters: ConstructorParameter[];
    returnType?: string;
    importPath: string;
    scope: InjectionScope;
    token?: string;
    useContextObject?: boolean;
    contextObjectName?: string;
    contextObjectProperties?: {
        name: string;
        type: string;
    }[];
    instanceFactoryFor?: string;
}
export interface ValueInfo {
    name: string;
    filePath: string;
    interfaceName?: string;
    importPath: string;
    scope: InjectionScope;
    token?: string;
}
export interface AnalyzerOptions {
    sourceDir: string;
    interfacePattern?: string;
    excludePatterns?: string[];
    factoryPattern?: string;
    valuePattern?: string;
}
export interface GeneratorOptions {
    outputPath: string;
    classes?: ClassInfo[];
    moduleGroupedClasses?: Map<string, ClassInfo[]>;
}
export interface DependencyGraph {
    [className: string]: string[];
}
//# sourceMappingURL=types.d.ts.map