/**
 * Component Resolver
 * Resolves component imports from local paths or web URLs
 */
export interface ImportStatement {
    clause: ImportClause;
    source: ImportSource;
}
export type ImportClause = {
    type: "named";
    names: string[];
} | {
    type: "default";
    name: string;
};
export type ImportSource = {
    type: "local";
    path: string;
} | {
    type: "url";
    url: string;
};
export interface ComponentDefinition {
    module: any;
    template: string;
}
export interface ResolverOptions {
    /**
     * Base directory for resolving relative local paths
     * Defaults to current working directory
     */
    baseDir?: string;
    /**
     * Cache resolved components to avoid re-fetching
     * Defaults to true
     */
    cache?: boolean;
    /**
     * Custom fetch function for URL imports
     * Useful for adding authentication, custom headers, etc.
     */
    customFetch?: (url: string) => Promise<string>;
    /**
     * Module registry for looking up pre-registered module definitions.
     * When set, the resolver will check the registry before doing file I/O.
     */
    moduleRegistry?: {
        has: (name: string) => boolean;
        get: (name: string) => any;
    };
}
/**
 * Component Resolver
 * Resolves and loads components from local files or remote URLs
 */
export declare class ComponentResolver {
    private cache;
    private options;
    private moduleRegistry?;
    constructor(options?: ResolverOptions);
    /**
     * Resolve a component from an import statement.
     * Checks the module registry first (if available), then falls back to file I/O.
     */
    resolve(importStmt: ImportStatement): Promise<Record<string, ComponentDefinition>>;
    /**
     * Resolve a component from a local file path
     */
    private resolveLocal;
    /**
     * Resolve a component from a URL
     */
    private resolveUrl;
    /**
     * Default fetch implementation
     */
    private defaultFetch;
    /**
     * Extract the requested components based on the import clause
     */
    private extractComponents;
    /**
     * Get the source path as a string (for caching)
     */
    private getSourcePath;
    /**
     * Clear the component cache
     */
    clearCache(): void;
    /**
     * Parse import statements from Hypen DSL text
     * This is a simple parser that extracts import statements
     */
    static parseImports(text: string): ImportStatement[];
}
