import { Type } from '@nestjs/common'; export interface SpelunkedTree { name: string; imports: string[]; exports: string[]; controllers: string[]; providers: Record; } interface SpelunkedProvider { method: 'value' | 'factory' | 'class' | 'standard'; injections?: string[]; } export declare type ProviderType = 'value' | 'factory' | 'class'; export interface DebuggedTree { name: string; imports: string[]; providers: Array; controllers: DebuggedProvider[]; exports: DebuggedExports[]; } export interface DebuggedProvider { name: string; dependencies: string[]; } export interface DebuggedExports { name: string; type: 'provider' | 'module'; } export interface CustomProvider { provide: Type | string | symbol; useClass?: Type; useValue?: any; useFactory?: (...args: any[]) => any; useExisting?: Type; inject?: any[]; } export interface SpelunkedNode { dependencies: Set; dependents: Set; module: SpelunkedTree; } export interface SpelunkedEdge { from: SpelunkedNode; to: SpelunkedNode; } export {};