diff --git a/src/lib/types.ts b/src/lib/types.ts
index 44d55e4c93167a409a5981e2ad8967e32fb10de2..275ca430ff0cd07e710b5208cf5a88b45b037ac4 100644
--- a/src/lib/types.ts
+++ b/src/lib/types.ts
@@ -38,22 +38,15 @@ export type CookieNames = {
   oauthCodeVerifier: string;
 };
 
+type Extract<T> =
+  T extends AriseIdConnect<infer Session, infer User>
+    ? { session: Session; user: User }
+    : never;
+
 export interface Locals<
   T extends AriseIdConnect<DefaultSessionAttributes, DefaultUserAttributes>,
 > {
-  // eslint-disable-next-line @typescript-eslint/no-explicit-any
-  user:
-    | ((T extends AriseIdConnect<any, infer UserAttributes>
-        ? UserAttributes
-        : never) &
-        User)
-    | null;
-  // eslint-disable-next-line @typescript-eslint/no-explicit-any
-  session:
-    | ((T extends AriseIdConnect<infer SessionAttributes, any>
-        ? SessionAttributes
-        : never) &
-        Session)
-    | null;
+  user: (Extract<T>["user"] & User) | null;
+  session: (Extract<T>["session"] & Session) | null;
   authPaths: Paths;
 }