import type { AuthUser } from "@getstrata/core/auth/authContext"; import type { Policy } from "@getstrata/core/auth/policy"; import type { Middleware, RouteHandler } from "@getstrata/core/http/middleware"; import type { AppDependencies } from "./contracts"; type MiddlewareGroupName = "api" | "authenticated" | "web"; type WebGuestHome = string | ((user: AuthUser) => string | Promise); declare class HttpKernel { private readonly dependencies; constructor(dependencies: AppDependencies); globalMiddleware(): Middleware[]; group(name: MiddlewareGroupName): Middleware[]; wrap(groups: MiddlewareGroupName | MiddlewareGroupName[], handler: RouteHandler): RouteHandler; wrapApi(handler: RouteHandler): RouteHandler; wrapWeb(handler: RouteHandler): RouteHandler; /** Signed-in HTML users redirect to `home` instead of seeing guest pages. */ wrapWebGuest(handler: RouteHandler, home?: WebGuestHome): RouteHandler; wrapWebPublicRead(handler: RouteHandler): RouteHandler; wrapWebAuthenticated(handler: RouteHandler): RouteHandler; /** Signed-in HTML without the email-verified gate (logout, verification notice). */ wrapWebAuthenticatedAllowUnverified(handler: RouteHandler): RouteHandler; wrapWebVerified(handler: RouteHandler): RouteHandler; /** Requires a fresh signed password-confirmation cookie. */ wrapWebPasswordConfirm(handler: RouteHandler): RouteHandler; wrapWebAbility(ability: string, handler: RouteHandler): RouteHandler; wrapWebGlobalAdmin(handler: RouteHandler): RouteHandler; wrapAuthenticated(handler: RouteHandler): RouteHandler; /** JSON routes that require a verified email. No-op when `FEATURE_EMAIL_VERIFICATION` is off. */ wrapVerified(handler: RouteHandler): RouteHandler; wrapPublicRead(handler: RouteHandler): RouteHandler; wrapGlobalAdmin(handler: RouteHandler): RouteHandler; wrapAbility(ability: string, handler: RouteHandler): RouteHandler; wrapPolicy(resource: string, action: keyof Policy, handler: RouteHandler): RouteHandler; wrapLogin(handler: RouteHandler): RouteHandler; wrapSigned(handler: RouteHandler): RouteHandler; wrapRegister(handler: RouteHandler): RouteHandler; private wrapWebAuth; private verifiedMiddleware; private wrapThrottle; } declare function createHttpKernel(dependencies: AppDependencies): HttpKernel; export type { MiddlewareGroupName, WebGuestHome }; export { createHttpKernel, HttpKernel };