/**
 * Base types for Inertia.js type generation.
 *
 * These types are generated by `litestar assets generate-types` in your
 * project's `generated/page-props.ts` file. This module provides fallback
 * types for when the generated file hasn't been created yet.
 *
 * To customize types, edit your project's `generated/page-props.user.ts` file.
 */

/** User interface - customize in page-props.user.ts */
// biome-ignore lint/suspicious/noEmptyInterface: Base interface for extension
export interface User {}

/** Authentication data interface */
// biome-ignore lint/suspicious/noEmptyInterface: Base interface for extension
export interface AuthData {}

/** Flash messages interface */
// biome-ignore lint/suspicious/noEmptyInterface: Base interface for extension
export interface FlashMessages {}

/** User-defined shared props - customize in page-props.user.ts */
// biome-ignore lint/suspicious/noEmptyInterface: Base interface for extension
export interface SharedProps {}

/** Generated shared props (populated by page-props.ts) */
// biome-ignore lint/suspicious/noEmptyInterface: Base interface for extension
export interface GeneratedSharedProps {}

/** Full shared props = generated + user-defined */
export type FullSharedProps = GeneratedSharedProps & SharedProps & { [key: string]: unknown }

/** Page props mapped by component name (populated by page-props.ts) */
// biome-ignore lint/suspicious/noEmptyInterface: Base interface for extension
export interface PageProps {}

/** Component name union type */
export type ComponentName = keyof PageProps

/** Type-safe props for a specific component */
export type InertiaPageProps<C extends ComponentName> = PageProps[C]

/** Get props type for a specific page component */
export type PagePropsFor<C extends ComponentName> = PageProps[C]
