/**
 * Asset formats interface
 *
 * @version 0.0.3
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
export interface AssetFormats {
    svg?: string;
    png?: string;
    webp?: string;
    avif?: string;
}
/**
 * Favicon set interface
 *
 * @version 0.0.3
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
export interface FaviconSet {
    svg?: string;
    ico?: string;
    png16?: string;
    png32?: string;
    apple180?: string;
    android192?: string;
    android512?: string;
}
interface BrowserSupport {
    svg: boolean;
    webp: boolean;
    avif: boolean;
}
interface AssetManifest {
    logo?: {
        optimal?: string | null;
        fallback?: string | null;
        available?: string[];
    };
    favicon?: {
        optimal?: string | null;
        fallback?: string | null;
        available?: string[];
        set?: FaviconSet;
    };
    appleTouchIcon?: string | null;
    androidChrome?: {
        192?: string | null;
        512?: string | null;
    };
    manifest?: string | null;
    modernFormats?: string[];
    fallbackFormats?: string[];
    all?: string[];
}
/**
 * Modern asset resolution with format preference and browser capability detection
 * Follows Next.js Image optimization patterns
 *
 * @version 0.0.3
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
export declare class AssetResolver {
    private static cache;
    /**
     * Check if browser supports modern image formats
     */
    static getBrowserSupport(): BrowserSupport;
    /**
     * Recursively extract all string values from nested object/array structure
     */
    private static extractStringValues;
    /**
     * Check if an asset exists (SSR-safe)
     * Checks build-time injected manifest structure (nested objects, arrays)
     */
    static assetExists(path: string): boolean;
    /**
     * Get asset manifest if available
     */
    static getAssetManifest(): AssetManifest | null;
    /**
     * Get logo SVG content for inline rendering
     * Works in both CSR and SSR (globalThis available in both contexts)
     * @returns {string | null} SVG content or null if not available
     */
    static getLogoSvgContent(): string | null;
    /**
     * Resolve logo path
     * Rule: Use manifest optimal if available, otherwise /logo.svg (user must provide)
     */
    static resolveLogo(customPath?: string): string;
    /**
     * Direct asset existence check for development
     * More reliable than the build-time detection
     *
     * **Limitation:** This is a synchronous heuristic that always returns true
     * when `new Image()` doesn't throw. It does NOT wait for the image to load,
     * so it cannot detect 404s. A proper async check would require returning a
     * Promise<boolean> via Image.onload/onerror, but that would change the
     * synchronous contract used by resolveLogo/resolveFaviconSet.
     */
    private static directAssetCheck;
    /**
     * Resolve complete favicon set with modern standards
     * Follows PWA manifest and web.dev best practices
     */
    static resolveFaviconSet(): FaviconSet;
    /**
     * Resolve optimal favicon for basic usage
     */
    static resolveFavicon(): string;
    /**
     * Clear asset resolution cache
     * Useful when assets change during development
     */
    static clearCache(): void;
    /**
     * Get debug information about detected assets
     */
    static getDebugInfo(): {
        browserSupport: BrowserSupport;
        detectedAssets: Record<string, any> | null | undefined;
        assetManifest: AssetManifest | null;
        cache: {
            [k: string]: any;
        };
    };
}
/**
 * Utility function for logo resolution
 *
 * @version 0.0.3
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
export declare function resolveLogo(customPath?: string): string;
/**
 * Utility function for favicon resolution
 *
 * @version 0.0.3
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
export declare function resolveFaviconSet(): FaviconSet;
export {};
//# sourceMappingURL=assetResolver.d.ts.map