// This file is generated automatically by Next.js
// Do not edit this file manually

type AppRoutes = never
type PageRoutes = "/" | "/404" | "/blocklist" | "/collection/[collectionId]" | "/discover/movies" | "/discover/movies/genre/[genreId]" | "/discover/movies/genres" | "/discover/movies/keyword" | "/discover/movies/language/[language]" | "/discover/movies/studio/[studioId]" | "/discover/movies/upcoming" | "/discover/trending" | "/discover/tv" | "/discover/tv/genre/[genreId]" | "/discover/tv/genres" | "/discover/tv/keyword" | "/discover/tv/language/[language]" | "/discover/tv/network/[networkId]" | "/discover/tv/upcoming" | "/discover/watchlist" | "/issues" | "/issues/[issueId]" | "/login" | "/login/plex/loading" | "/movie/[movieId]" | "/movie/[movieId]/cast" | "/movie/[movieId]/crew" | "/movie/[movieId]/recommendations" | "/movie/[movieId]/similar" | "/person/[personId]" | "/profile" | "/profile/settings" | "/profile/settings/linked-accounts" | "/profile/settings/main" | "/profile/settings/notifications/discord" | "/profile/settings/notifications/email" | "/profile/settings/notifications/pushbullet" | "/profile/settings/notifications/pushover" | "/profile/settings/notifications/telegram" | "/profile/settings/notifications/webpush" | "/profile/settings/password" | "/profile/settings/permissions" | "/profile/watchlist" | "/requests" | "/resetpassword" | "/resetpassword/[guid]" | "/search" | "/settings" | "/settings/about" | "/settings/jellyfin" | "/settings/jobs" | "/settings/logs" | "/settings/main" | "/settings/metadata" | "/settings/network" | "/settings/notifications/discord" | "/settings/notifications/email" | "/settings/notifications/gotify" | "/settings/notifications/ntfy" | "/settings/notifications/pushbullet" | "/settings/notifications/pushover" | "/settings/notifications/slack" | "/settings/notifications/telegram" | "/settings/notifications/webhook" | "/settings/notifications/webpush" | "/settings/plex" | "/settings/services" | "/settings/users" | "/setup" | "/tv/[tvId]" | "/tv/[tvId]/cast" | "/tv/[tvId]/crew" | "/tv/[tvId]/recommendations" | "/tv/[tvId]/similar" | "/users" | "/users/[userId]" | "/users/[userId]/requests" | "/users/[userId]/settings" | "/users/[userId]/settings/linked-accounts" | "/users/[userId]/settings/main" | "/users/[userId]/settings/notifications/discord" | "/users/[userId]/settings/notifications/email" | "/users/[userId]/settings/notifications/pushbullet" | "/users/[userId]/settings/notifications/pushover" | "/users/[userId]/settings/notifications/telegram" | "/users/[userId]/settings/notifications/webpush" | "/users/[userId]/settings/password" | "/users/[userId]/settings/permissions" | "/users/[userId]/watchlist"
type LayoutRoutes = never
type RedirectRoutes = never
type RewriteRoutes = never
type Routes = AppRoutes | PageRoutes | LayoutRoutes | RedirectRoutes | RewriteRoutes


interface ParamMap {
  "/": {}
  "/404": {}
  "/blocklist": {}
  "/collection/[collectionId]": { "collectionId": string; }
  "/discover/movies": {}
  "/discover/movies/genre/[genreId]": { "genreId": string; }
  "/discover/movies/genres": {}
  "/discover/movies/keyword": {}
  "/discover/movies/language/[language]": { "language": string; }
  "/discover/movies/studio/[studioId]": { "studioId": string; }
  "/discover/movies/upcoming": {}
  "/discover/trending": {}
  "/discover/tv": {}
  "/discover/tv/genre/[genreId]": { "genreId": string; }
  "/discover/tv/genres": {}
  "/discover/tv/keyword": {}
  "/discover/tv/language/[language]": { "language": string; }
  "/discover/tv/network/[networkId]": { "networkId": string; }
  "/discover/tv/upcoming": {}
  "/discover/watchlist": {}
  "/issues": {}
  "/issues/[issueId]": { "issueId": string; }
  "/login": {}
  "/login/plex/loading": {}
  "/movie/[movieId]": { "movieId": string; }
  "/movie/[movieId]/cast": { "movieId": string; }
  "/movie/[movieId]/crew": { "movieId": string; }
  "/movie/[movieId]/recommendations": { "movieId": string; }
  "/movie/[movieId]/similar": { "movieId": string; }
  "/person/[personId]": { "personId": string; }
  "/profile": {}
  "/profile/settings": {}
  "/profile/settings/linked-accounts": {}
  "/profile/settings/main": {}
  "/profile/settings/notifications/discord": {}
  "/profile/settings/notifications/email": {}
  "/profile/settings/notifications/pushbullet": {}
  "/profile/settings/notifications/pushover": {}
  "/profile/settings/notifications/telegram": {}
  "/profile/settings/notifications/webpush": {}
  "/profile/settings/password": {}
  "/profile/settings/permissions": {}
  "/profile/watchlist": {}
  "/requests": {}
  "/resetpassword": {}
  "/resetpassword/[guid]": { "guid": string; }
  "/search": {}
  "/settings": {}
  "/settings/about": {}
  "/settings/jellyfin": {}
  "/settings/jobs": {}
  "/settings/logs": {}
  "/settings/main": {}
  "/settings/metadata": {}
  "/settings/network": {}
  "/settings/notifications/discord": {}
  "/settings/notifications/email": {}
  "/settings/notifications/gotify": {}
  "/settings/notifications/ntfy": {}
  "/settings/notifications/pushbullet": {}
  "/settings/notifications/pushover": {}
  "/settings/notifications/slack": {}
  "/settings/notifications/telegram": {}
  "/settings/notifications/webhook": {}
  "/settings/notifications/webpush": {}
  "/settings/plex": {}
  "/settings/services": {}
  "/settings/users": {}
  "/setup": {}
  "/tv/[tvId]": { "tvId": string; }
  "/tv/[tvId]/cast": { "tvId": string; }
  "/tv/[tvId]/crew": { "tvId": string; }
  "/tv/[tvId]/recommendations": { "tvId": string; }
  "/tv/[tvId]/similar": { "tvId": string; }
  "/users": {}
  "/users/[userId]": { "userId": string; }
  "/users/[userId]/requests": { "userId": string; }
  "/users/[userId]/settings": { "userId": string; }
  "/users/[userId]/settings/linked-accounts": { "userId": string; }
  "/users/[userId]/settings/main": { "userId": string; }
  "/users/[userId]/settings/notifications/discord": { "userId": string; }
  "/users/[userId]/settings/notifications/email": { "userId": string; }
  "/users/[userId]/settings/notifications/pushbullet": { "userId": string; }
  "/users/[userId]/settings/notifications/pushover": { "userId": string; }
  "/users/[userId]/settings/notifications/telegram": { "userId": string; }
  "/users/[userId]/settings/notifications/webpush": { "userId": string; }
  "/users/[userId]/settings/password": { "userId": string; }
  "/users/[userId]/settings/permissions": { "userId": string; }
  "/users/[userId]/watchlist": { "userId": string; }
}


export type ParamsOf<Route extends Routes> = ParamMap[Route]

interface LayoutSlotMap {
}


export type { AppRoutes, PageRoutes, LayoutRoutes, RedirectRoutes, RewriteRoutes, ParamMap }

declare global {
  /**
   * Props for Next.js App Router page components
   * @example
   * ```tsx
   * export default function Page(props: PageProps<'/blog/[slug]'>) {
   *   const { slug } = await props.params
   *   return <div>Blog post: {slug}</div>
   * }
   * ```
   */
  interface PageProps<AppRoute extends AppRoutes> {
    params: Promise<ParamMap[AppRoute]>
    searchParams: Promise<Record<string, string | string[] | undefined>>
  }

  /**
   * Props for Next.js App Router layout components
   * @example
   * ```tsx
   * export default function Layout(props: LayoutProps<'/dashboard'>) {
   *   return <div>{props.children}</div>
   * }
   * ```
   */
  type LayoutProps<LayoutRoute extends LayoutRoutes> = {
    params: Promise<ParamMap[LayoutRoute]>
    children: React.ReactNode
  } & {
    [K in LayoutSlotMap[LayoutRoute]]: React.ReactNode
  }
}
