/**
 * Reference resolver system for handling element references.
 * Supports lazy loading, caching, and various reference types.
 */
import { Reference } from './IElement.js';
export interface IReferenceResolver {
    resolve(ref: Reference): Promise<ResolvedReference>;
    cache(ref: Reference, data: any): Promise<void>;
    invalidate(ref: Reference): Promise<void>;
    resolveMany(refs: Reference[]): Promise<ResolvedReference[]>;
    invalidateAll(): Promise<void>;
    getCacheSize(): number;
    clearCache(): Promise<void>;
    setCacheLimit(limit: number): void;
}
export interface ResolvedReference {
    reference: Reference;
    data: any;
    resolvedAt: Date;
    expiresAt?: Date;
    fromCache: boolean;
    error?: Error;
}
export interface IResolutionStrategy {
    canResolve(ref: Reference): boolean;
    resolve(ref: Reference): Promise<any>;
    getCacheKey(ref: Reference): string;
}
export interface IReferenceCache {
    get(key: string): Promise<CachedReference | null>;
    set(key: string, data: CachedReference): Promise<void>;
    delete(key: string): Promise<void>;
    clear(): Promise<void>;
    size(): number;
}
export interface CachedReference {
    data: any;
    cachedAt: Date;
    expiresAt?: Date;
    reference: Reference;
}
export interface IReferenceValidator {
    validate(ref: Reference): ReferenceValidationResult;
    validateUri(uri: string, type: Reference['type']): boolean;
    sanitizeUri(uri: string): string;
}
export interface ReferenceValidationResult {
    valid: boolean;
    errors?: string[];
    sanitizedReference?: Reference;
}
//# sourceMappingURL=IReferenceResolver.d.ts.map