/**
 * Generic entry subroute resolution for dynamic URLs.
 *
 * This helper is intentionally "kind-aware" but not "feature-aware": it supports the
 * currently known kinds (event occurrences + course runs) and provides:
 * - kind inference when content type metadata is missing
 * - segment validation to avoid unnecessary API calls
 * - a single place to handle client errors consistently
 */
import type { RiverbankClient } from '../client/types';
import { inferKnownEntrySubrouteKind } from './entrySubroutes';
import type { EntrySubrouteData } from './resolvePageContent';
type ResolveEntrySubrouteClient = Pick<RiverbankClient, 'resolveEntrySubroute'>;
type ResolvedEntrySubrouteKind = NonNullable<ReturnType<typeof inferKnownEntrySubrouteKind>>;
export type ResolveEntrySubrouteParams = {
    client: ResolveEntrySubrouteClient;
    siteId: string;
    entryId: string;
    entryTypeKey: string | null;
    kind?: string | null;
    segment: string;
    /**
     * When omitted, the server resolves against the default published stage.
     * Pass `'preview'` to resolve preview-stage subroutes.
     */
    stage?: 'preview';
    onError?: (args: {
        siteId: string;
        entryId: string;
        kind: ResolvedEntrySubrouteKind;
        segment: string;
        error: unknown;
    }) => void;
};
export declare function resolveEntrySubrouteFromSegment(params: ResolveEntrySubrouteParams): Promise<EntrySubrouteData | null>;
export {};
