/**
 * Entry subroute detection utilities.
 *
 * An "entry subroute" is a URL path with one extra segment under a content entry path:
 * - Parent entry: /courses/beginners
 * - Subroute URL: /courses/beginners/spring-2026
 *
 * Detection is intentionally generic:
 * - We parse the last segment.
 * - We validate segment shape from declared `segmentType`.
 * - We match the parent path against content type route patterns (when available).
 *
 * Resolution is performed by callers via `resolvePageContent({ resolveEntrySubroute })`.
 */
import type { ContentTypeRoutingInfo } from './contentTypeResolver';
type ContentTypeRoutingSubroute = NonNullable<ContentTypeRoutingInfo['subroutes']>[number];
export type EntrySubrouteCandidate = {
    parentPath: string;
    segment: string;
    contentTypeKey: string;
    kind: string;
    segmentType: ContentTypeRoutingSubroute['segmentType'];
    precedence: ContentTypeRoutingSubroute['precedence'];
} | null;
export type ShouldAttemptEntrySubrouteArgs = {
    entryTypeKey: string | null;
    segment: string;
};
export type KnownEntrySubrouteKind = 'event-occurrence' | 'course-run';
/**
 * Parse a path into parent path and last segment.
 * Returns null when no parent/segment split exists.
 */
export declare function extractPotentialEntrySubroute(path: string): {
    parentPath: string;
    segment: string;
} | null;
/**
 * Detect entry subroute candidate using content type routing info (no API calls).
 *
 * This lets callers avoid loading parent content when the parent path doesn't match
 * any content entry route pattern.
 */
export declare function detectEntrySubrouteFromTypes(contentTypes: ContentTypeRoutingInfo[], path: string): EntrySubrouteCandidate;
export declare function isSubrouteSlugSegment(segment: string): boolean;
/**
 * Default eligibility predicate for entry subroute resolution.
 *
 * - `event`: segment must be event-like (date or UUID)
 * - `course`: segment must be slug-like (`spring-2026`)
 * - `null`: used by fallback probing; keep it strict and only allow event-like segments
 * - others: not subroute-eligible
 */
export declare function defaultShouldAttemptEntrySubroute(args: ShouldAttemptEntrySubrouteArgs): boolean;
/**
 * Infer a known subroute kind when explicit routing metadata is unavailable.
 *
 * This is primarily used by SDK catch-all routing when local config does not
 * yet expose `routing.subroutes`, allowing generic resolver usage without
 * duplicating event/course-specific API calls.
 */
export declare function inferKnownEntrySubrouteKind(args: ShouldAttemptEntrySubrouteArgs): KnownEntrySubrouteKind | null;
export {};
