import { ReactNode } from "react"; //#region src/router/types.d.ts type RouteSegmentType = 'static' | 'dynamic' | 'catch-all' | 'optional-catch-all'; interface RouteSegment { type: RouteSegmentType; value: string; param?: string; } interface AppRouteEntry { path: string; filePath: string; css?: string[]; componentId?: string; segments: RouteSegment[]; params: string[]; isDynamic: boolean; metadata?: RouteMetadata; staticParams?: Array>; } interface LayoutEntry { path: string; filePath: string; css?: string[]; componentId?: string; parentPath?: string; additionalPaths?: string[]; } interface LoadingEntry { path: string; filePath: string; css?: string[]; componentId?: string; additionalPaths?: string[]; } interface ErrorEntry { path: string; filePath: string; css?: string[]; componentId?: string; additionalPaths?: string[]; } interface NotFoundEntry { path: string; filePath: string; css?: string[]; componentId?: string; additionalPaths?: string[]; } interface OgImageEntry { path: string; filePath: string; width?: number; height?: number; contentType?: string; additionalPaths?: string[]; } interface ApiRouteEntry { path: string; filePath: string; segments: RouteSegment[]; params: string[]; isDynamic: boolean; methods: string[]; } interface TemplateEntry { path: string; filePath: string; css?: string[]; componentId?: string; parentPath?: string; additionalPaths?: string[]; } interface AppRouteManifest { routes: AppRouteEntry[]; layouts: LayoutEntry[]; loading: LoadingEntry[]; errors: ErrorEntry[]; notFound: NotFoundEntry[]; templates: TemplateEntry[]; apiRoutes: ApiRouteEntry[]; ogImages: OgImageEntry[]; generated: string; } interface RouteMetadata { title?: string | { default?: string; template?: string; absolute?: string; }; description?: string; keywords?: string | string[]; openGraph?: { title?: string; description?: string; images?: string[] | Array<{ url: string; width?: number; height?: number; alt?: string; }>; url?: string; siteName?: string; locale?: string; type?: string; }; twitter?: { card?: 'summary' | 'summary_large_image' | 'app' | 'player'; title?: string; description?: string; images?: string[] | Array<{ url: string; alt?: string; }>; site?: string; creator?: string; }; robots?: { index?: boolean; follow?: boolean; noarchive?: boolean; nosnippet?: boolean; noimageindex?: boolean; nocache?: boolean; } | string; icons?: { icon?: string | Array<{ url: string; type?: string; sizes?: string; }>; shortcut?: string; apple?: string | Array<{ url: string; sizes?: string; type?: string; }>; }; manifest?: string; themeColor?: string | Array<{ media?: string; color: string; }>; viewport?: string | { width?: string | number; height?: string | number; initialScale?: number; minimumScale?: number; maximumScale?: number; userScalable?: boolean; }; appleWebApp?: { capable?: boolean; title?: string; statusBarStyle?: 'default' | 'black' | 'black-translucent'; }; canonical?: string; alternates?: { canonical?: string; languages?: Record; types?: Record; }; } type Metadata = RouteMetadata; type RouteParams = Record; type SearchParams = Record; interface PageProps { params: TParams; searchParams: TSearchParams; } interface LayoutProps { children: ReactNode; params?: TParams; pathname?: string; } interface ErrorProps { error: Error; reset: () => void; } interface AppRouteMatch { route: AppRouteEntry; params: RouteParams; searchParams: SearchParams; layouts: LayoutEntry[]; loading?: LoadingEntry; error?: ErrorEntry; templates: TemplateEntry[]; pathname: string; } type GenerateMetadata = (props: { params: TParams; searchParams: TSearchParams; }) => RouteMetadata | Promise; type GenerateStaticParams = () => TParams[] | Promise; //#endregion export { ErrorProps as a, LayoutEntry as c, Metadata as d, NotFoundEntry as f, TemplateEntry as g, RouteSegmentType as h, ErrorEntry as i, LayoutProps as l, RouteSegment as m, AppRouteManifest as n, GenerateMetadata as o, PageProps as p, AppRouteMatch as r, GenerateStaticParams as s, AppRouteEntry as t, LoadingEntry as u };