import type { RoutingHelpers } from '../types';
export type CanonicalPageRoutePair = Readonly<{
    path: string | null;
    slug: string | null;
}>;
export type CanonicalPageRouteMetadata = Readonly<{
    draft: Readonly<{
        path: string;
        slug: string;
    }>;
    published: CanonicalPageRoutePair;
}>;
type PageRouteMetadataInput = Readonly<{
    draftPath?: string | null;
    draftSlug?: string | null;
    publishedPath?: string | null;
    publishedSlug?: string | null;
}>;
/**
 * Normalize routable page metadata into one editor/store-facing representation.
 *
 * Contract:
 * - Prefer explicit paths when present, deriving slugs from those paths so `/`, `''`, and persisted `NULL` homepage
 *   variants collapse to the same draft/published shape.
 * - Preserve a missing published route as `{ path: null, slug: null }` so callers can distinguish "never published"
 *   from "published homepage".
 * - Always return a concrete draft route for editor state, using `draftFallbackSlug` when both draft path and slug
 *   are absent.
 *
 * This helper intentionally returns homepage slugs as empty strings for editor/store use. DB-facing callers that store
 * homepage slugs as `NULL` should map the output through `toStoredPageRouteSlug()`.
 */
export declare function canonicalizePageRouteMetadata(input: PageRouteMetadataInput, routing: RoutingHelpers, options?: Readonly<{
    draftFallbackSlug?: string | null;
}>): CanonicalPageRouteMetadata;
/**
 * Convert editor/store-facing page slugs back into the DB storage convention.
 *
 * Homepage slugs are stored as `NULL` in `site_routes`, while editor state uses empty strings to represent the
 * homepage. This helper trims incidental whitespace and returns `null` for empty homepage-equivalent values.
 */
export declare function toStoredPageRouteSlug(slug: string | null | undefined): string | null;
export {};
