import { ComponentRegistry } from './component-registry.js';
import { ComponentSpec } from '@memberjunction/interactive-component-types';
import { ComponentCompiler } from '../compiler/index.js';
import { RuntimeContext } from '../types/index.js';
import { UserInfo } from '@memberjunction/core';
export interface ResolvedComponents {
    [componentName: string]: any;
}
export declare class ComponentResolver {
    private registry;
    private registryService;
    private resolverInstanceId;
    private compiler;
    private runtimeContext;
    private componentEngine;
    private debug;
    constructor(registry: ComponentRegistry, compiler?: ComponentCompiler, runtimeContext?: RuntimeContext, debug?: boolean);
    resolveComponents(spec: ComponentSpec, namespace?: string, contextUser?: UserInfo): Promise<ResolvedComponents>;
    private resolveComponentHierarchy;
    cleanup(): void;
    validateDependencies(spec: ComponentSpec, namespace?: string): string[];
    private checkDependencies;
    getDependencyGraph(spec: ComponentSpec): Map<string, string[]>;
    private buildDependencyGraph;
    getLoadOrder(spec: ComponentSpec): string[];
    private topologicalSortDFS;
    resolveInOrder(spec: ComponentSpec, namespace?: string): Array<{
        name: string;
        component: any;
    }>;
    flattenComponentSpecs(spec: ComponentSpec): ComponentSpec[];
    private collectComponentSpecs;
}
//# sourceMappingURL=component-resolver.d.ts.map