// This file is generated automatically by Next.js
// Do not edit this file manually
// This file validates that all pages and layouts export the correct types

import type { AppRoutes, LayoutRoutes, ParamMap, AppRouteHandlerRoutes } from "./routes.js"
import type { ResolvingMetadata, ResolvingViewport } from "next/dist/lib/metadata/types/metadata-interface.js"
import type { NextRequest } from 'next/server.js'

type AppPageConfig<Route extends AppRoutes = AppRoutes> = {
  default: React.ComponentType<{ params: Promise<ParamMap[Route]> } & any> | ((props: { params: Promise<ParamMap[Route]> } & any) => React.ReactNode | Promise<React.ReactNode> | never | void | Promise<void>)
  generateStaticParams?: (props: { params: ParamMap[Route] }) => Promise<any[]> | any[]
  generateMetadata?: (
    props: { params: Promise<ParamMap[Route]> } & any,
    parent: ResolvingMetadata
  ) => Promise<any> | any
  generateViewport?: (
    props: { params: Promise<ParamMap[Route]> } & any,
    parent: ResolvingViewport
  ) => Promise<any> | any
  metadata?: any
  viewport?: any
}

type LayoutConfig<Route extends LayoutRoutes = LayoutRoutes> = {
  default: React.ComponentType<LayoutProps<Route>> | ((props: LayoutProps<Route>) => React.ReactNode | Promise<React.ReactNode> | never | void | Promise<void>)
  generateStaticParams?: (props: { params: ParamMap[Route] }) => Promise<any[]> | any[]
  generateMetadata?: (
    props: { params: Promise<ParamMap[Route]> } & any,
    parent: ResolvingMetadata
  ) => Promise<any> | any
  generateViewport?: (
    props: { params: Promise<ParamMap[Route]> } & any,
    parent: ResolvingViewport
  ) => Promise<any> | any
  metadata?: any
  viewport?: any
}

type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRoutes> = {
  GET?: (request: NextRequest, context: { params: Promise<ParamMap[Route]> }) => Promise<Response> | Response | Promise<void> | void
  POST?: (request: NextRequest, context: { params: Promise<ParamMap[Route]> }) => Promise<Response> | Response | Promise<void> | void
  PUT?: (request: NextRequest, context: { params: Promise<ParamMap[Route]> }) => Promise<Response> | Response | Promise<void> | void
  PATCH?: (request: NextRequest, context: { params: Promise<ParamMap[Route]> }) => Promise<Response> | Response | Promise<void> | void
  DELETE?: (request: NextRequest, context: { params: Promise<ParamMap[Route]> }) => Promise<Response> | Response | Promise<void> | void
  HEAD?: (request: NextRequest, context: { params: Promise<ParamMap[Route]> }) => Promise<Response> | Response | Promise<void> | void
  OPTIONS?: (request: NextRequest, context: { params: Promise<ParamMap[Route]> }) => Promise<Response> | Response | Promise<void> | void
}


// Validate ..\..\src\app\chatroom\page.tsx
{
  const handler = {} as typeof import("..\\..\\src\\app\\chatroom\\page.js")
  handler satisfies AppPageConfig<"/chatroom">
}

// Validate ..\..\src\app\page.tsx
{
  const handler = {} as typeof import("..\\..\\src\\app\\page.js")
  handler satisfies AppPageConfig<"/">
}

// Validate ..\..\src\app\api\auth\login\route.ts
{
  const handler = {} as typeof import("..\\..\\src\\app\\api\\auth\\login\\route.js")
  handler satisfies RouteHandlerConfig<"/api/auth/login">
}

// Validate ..\..\src\app\api\message\add\route.ts
{
  const handler = {} as typeof import("..\\..\\src\\app\\api\\message\\add\\route.js")
  handler satisfies RouteHandlerConfig<"/api/message/add">
}

// Validate ..\..\src\app\api\room\add\route.ts
{
  const handler = {} as typeof import("..\\..\\src\\app\\api\\room\\add\\route.js")
  handler satisfies RouteHandlerConfig<"/api/room/add">
}

// Validate ..\..\src\app\api\room\delete\route.ts
{
  const handler = {} as typeof import("..\\..\\src\\app\\api\\room\\delete\\route.js")
  handler satisfies RouteHandlerConfig<"/api/room/delete">
}

// Validate ..\..\src\app\api\room\list\route.ts
{
  const handler = {} as typeof import("..\\..\\src\\app\\api\\room\\list\\route.js")
  handler satisfies RouteHandlerConfig<"/api/room/list">
}

// Validate ..\..\src\app\api\room\message\getUpdate\route.ts
{
  const handler = {} as typeof import("..\\..\\src\\app\\api\\room\\message\\getUpdate\\route.js")
  handler satisfies RouteHandlerConfig<"/api/room/message/getUpdate">
}

// Validate ..\..\src\app\api\room\message\list\route.ts
{
  const handler = {} as typeof import("..\\..\\src\\app\\api\\room\\message\\list\\route.js")
  handler satisfies RouteHandlerConfig<"/api/room/message/list">
}





// Validate ..\..\src\app\layout.tsx
{
  const handler = {} as typeof import("..\\..\\src\\app\\layout.js")
  handler satisfies LayoutConfig<"/">
}
