import type { ServiceContainerLike } from "../contracts/serviceContainer"; interface WebLayoutAuthUser { id: number; email: string; role: string; [key: string]: unknown; } interface WebLayoutData { authUser?: WebLayoutAuthUser | null; currentUser?: WebLayoutAuthUser | null; csrfToken: string; flash: { level: string; message: string; } | null; [key: string]: unknown; } type WebLayoutUserKey = "authUser" | "currentUser"; interface WebLayoutDataOptions { userKey?: WebLayoutUserKey; loadUser?: (container: ServiceContainerLike, request: Request | undefined) => Promise | null>; extra?: Record | ((user: Record | null) => Record | Promise>); } declare function configureWebLayoutData(options: WebLayoutDataOptions): void; declare function resetWebLayoutDataConfigForTests(): void; declare function resolveWebLayoutData(container: ServiceContainerLike, request?: Request, options?: WebLayoutDataOptions): Promise>; export type { WebLayoutAuthUser, WebLayoutData, WebLayoutDataOptions, WebLayoutUserKey }; export { configureWebLayoutData, resetWebLayoutDataConfigForTests, resolveWebLayoutData };