export declare const SURFACE_IDS: readonly ["core", "macadamia"];
export type SurfaceId = (typeof SURFACE_IDS)[number];
export declare const DEFAULT_SURFACE_ID: SurfaceId;
export type SurfaceBranding = Readonly<{
    appName: string;
    logoSrc: string;
    logoAlt: string;
}>;
export declare const SURFACE_DOCUMENT_DATA_ATTRIBUTE = "data-dashboard-surface";
export type SurfaceDocumentAttributes = Readonly<{
    htmlClassName?: string;
    dataSurface: SurfaceId;
}>;
export declare function isSurfaceId(value: unknown): value is SurfaceId;
export declare function parseSurfaceId(value: unknown): SurfaceId | null;
export declare function resolveSurfaceDocumentAttributes(surfaceId: SurfaceId): SurfaceDocumentAttributes;
/**
 * Deployment tier of a surface root host: `local` = the dev-host entry
 * (e.g. `localhost`, `macadamia.localhost`); `prod` = the public production
 * entry (e.g. `riverbankcms.com`, `macadamia.studio`). Used to pair
 * surfaces by tier when rewriting hosts so a dev request stays on the
 * dev tier of the target surface and prod stays on prod.
 */
export type SurfaceTier = "local" | "prod";
export type SurfaceHostContext = Readonly<{
    surfaceId: SurfaceId;
    surfaceRootHost: string;
    tier: SurfaceTier;
}>;
/**
 * Root hosts for each surface, keyed by deployment tier. The tier-keyed shape
 * makes it impossible to mis-order entries: callers like
 * `buildSurfaceAwareDashboardOriginForSurfaceId` look up by tier directly
 * rather than relying on positional alignment between arrays.
 */
export declare const SURFACE_ROOT_HOSTS: Readonly<Record<SurfaceId, Readonly<Record<SurfaceTier, string>>>>;
export declare function resolveSurfaceFontHref(surfaceId: SurfaceId): string | null;
export declare function resolveSurfaceHostContext(value: string | URL | null | undefined): SurfaceHostContext | null;
export declare function buildSurfaceAwareDashboardOrigin(input: Readonly<{
    dashboardOrigin: string;
    requestOrigin: string;
}>): string | null;
/**
 * Rewrites a base dashboard origin onto a specific surface, picking the
 * root host that matches the current tier (local vs production) of the
 * incoming dashboard origin.
 *
 * Used by background workflows (e.g. email senders) that know the target
 * site's surface but don't have a request origin to derive it from.
 * Returns null when the supplied dashboard origin doesn't resolve to a
 * known surface root, so callers can decide whether to fall back to the
 * unrewritten origin or signal the misconfiguration.
 */
export declare function buildSurfaceAwareDashboardOriginForSurfaceId(input: Readonly<{
    dashboardOrigin: string;
    surfaceId: SurfaceId;
}>): string | null;
export declare function buildSurfaceAwareSiteOrigin(input: Readonly<{
    siteSlug: string;
    baseSiteOrigin: string;
    requestOrigin: string;
}>): string | null;
export declare function extractSurfaceAwareSiteSlug(value: string | URL | null | undefined): string | null;
