import type { AppearanceSettings, BrandAssetLike, BrandSettings, FaviconMetadata, ResolvedAdminBrand, ResolvedPublicBrand } from './types.js';
export declare const SETTINGS_GLOBAL_COLLECTION = "settings";
export declare const DEFAULT_APPEARANCE: AppearanceSettings;
export declare const DEFAULT_BRAND: BrandSettings;
/** Up to two uppercase initials derived from the site title. */
export declare function siteInitials(siteTitle: string | null | undefined): string;
/**
 * Resolve the admin sidebar brand with the spec's fallback chains.
 *
 * inheritPublicBrand → admin uses the public assets.
 * customAdminBrand   → admin-specific assets win, falling back to public.
 * Collapsed mark falls back to favicon source, then site initials.
 */
export declare function resolveAdminBrand(brand: BrandSettings, assets: Map<string, BrandAssetLike>, siteTitle: string | null | undefined): ResolvedAdminBrand;
/** Resolve the public site brand (header/footer/nav). */
export declare function resolvePublicBrand(brand: BrandSettings, assets: Map<string, BrandAssetLike>, siteTitle: string | null | undefined): ResolvedPublicBrand;
/**
 * Favicon metadata for Next.js `metadata.icons`. Appends a cache-busting
 * `?v=` token derived from the brand's `updatedAt` so changing the favicon
 * invalidates the browser/CDN copy.
 */
export declare function getFaviconMetadata(brand: BrandSettings, assets: Map<string, BrandAssetLike>): FaviconMetadata;
export declare function parseAppearance(blob: Record<string, unknown>): AppearanceSettings;
export declare function parseBrand(blob: Record<string, unknown>): BrandSettings;
/** Collect every asset ID referenced by a brand settings record. */
export declare function brandAssetIds(brand: BrandSettings): string[];
/** Fetch the referenced media rows and key them by asset ID. */
export declare function gatherBrandAssets(db: unknown, ids: string[]): Promise<Map<string, BrandAssetLike>>;
export declare function getAppearanceSettings(db: unknown): Promise<AppearanceSettings>;
export declare function getBrandSettings(db: unknown): Promise<BrandSettings>;
export interface ResolvedBrandBundle {
    brand: BrandSettings;
    admin: ResolvedAdminBrand;
    public: ResolvedPublicBrand;
    favicon: FaviconMetadata;
    /** Every referenced asset, keyed for direct per-field editor previews. */
    assets: BrandAssetLike[];
    /** Site title used for alt text + initials (from General Settings). */
    siteTitle: string | null;
}
/**
 * One-shot resolver used by the public brand endpoint and the admin shell:
 * read the settings blob, gather referenced assets, and resolve every view.
 */
export declare function resolveBrand(db: unknown, siteTitle: string | null | undefined): Promise<ResolvedBrandBundle>;
//# sourceMappingURL=resolve.d.ts.map