diff --git a/src/app.d.ts b/src/app.d.ts
index a979ab2be484be64a92551147722672394eeba01..d5b5ecf20e7be0f9ceaf79d2abbfdc54e65bf651 100644
--- a/src/app.d.ts
+++ b/src/app.d.ts
@@ -1,11 +1,12 @@
 // See https://kit.svelte.dev/docs/types#app
-
-import type { Locals as AriseLocals } from "$lib/types.ts";
-import type { aidc } from "./auth.ts";
+import { Locals as ILocals } from "$lib/types.ts";
 
 declare global {
   namespace App {
-    interface Locals extends AriseLocals<typeof aidc> {}
+    interface Locals extends ILocals {
+      user: import("lucia").User | null;
+      session: import("lucia").Session | null;
+    }
   }
 }
 
diff --git a/src/lib/adapters/sqlite-memory.ts b/src/lib/adapters/sqlite-memory.ts
index 19aa4ba1756538c8dcc2109d8897b22b2932a5f5..b9c63ed4153f6f664bbf3f0244a9184842ec1606 100644
--- a/src/lib/adapters/sqlite-memory.ts
+++ b/src/lib/adapters/sqlite-memory.ts
@@ -78,3 +78,10 @@ export interface DatabaseSession extends DefaultSessionAttributes {
   id: string;
   id_token: string;
 }
+
+declare module "../index.js" {
+  interface Foo {
+    Session: DefaultSessionAttributes;
+    User: Omit<DatabaseUser<Record<never, never>>, "id">;
+  }
+}
diff --git a/src/lib/index.ts b/src/lib/index.ts
index f35f9de02b973a6fb380d6df29192101f3db0eca..f065c6b849fd1cd0a35ed3bfcaeddfe323ecc243 100644
--- a/src/lib/index.ts
+++ b/src/lib/index.ts
@@ -1,6 +1,6 @@
 import { redirect, type Handle, error, type RequestEvent } from "@sveltejs/kit";
 import { sequence } from "@sveltejs/kit/hooks";
-import { generateId, type Session } from "lucia";
+import { generateId, Lucia, type Session } from "lucia";
 import type { Client, TokenSet } from "openid-client";
 import { Issuer, errors, generators } from "openid-client";
 import { SEE_OTHER } from "readable-http-codes";
@@ -15,7 +15,7 @@ import type { Config, CookieNames, Paths } from "./types.js";
 import type {
   DefaultSessionAttributes,
   DefaultUserAttributes,
-  LuciaAdapter,
+  // LuciaAdapter,
 } from "./lucia.js";
 
 interface InternalUser {
@@ -29,9 +29,22 @@ export interface DatabaseSession extends DefaultSessionAttributes {
   id_token: string;
 }
 
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
+export interface Foo {}
+
+interface Bar<
+  User extends Record<never, never>,
+  Session extends Record<never, never>,
+> {
+  User: User;
+  Session: Session;
+}
+
 declare module "lucia" {
   interface Register {
-    Lucia: LuciaAdapter;
+    Lucia: Foo extends Bar<infer _User, infer _Session>
+      ? Lucia<_Session, _User>
+      : never;
     DatabaseUserAttributes: Omit<InternalUser, "id">;
     DatabaseSessionAttributes: Omit<DatabaseSession, "id">;
   }
diff --git a/src/lib/types.ts b/src/lib/types.ts
index 275ca430ff0cd07e710b5208cf5a88b45b037ac4..3b4cd2531b8100c3b1b2cb940c423f20e2d6ae1d 100644
--- a/src/lib/types.ts
+++ b/src/lib/types.ts
@@ -5,8 +5,6 @@ import type {
   DefaultUserAttributes,
   LuciaAdapter,
 } from "./lucia.js";
-import { AriseIdConnect } from "./index.js";
-import type { Session, User } from "lucia";
 
 export interface Config<
   Session extends DefaultSessionAttributes,
@@ -38,15 +36,6 @@ 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>,
-> {
-  user: (Extract<T>["user"] & User) | null;
-  session: (Extract<T>["session"] & Session) | null;
+export interface Locals {
   authPaths: Paths;
 }
diff --git a/src/routes/login/+page.server.ts b/src/routes/login/+page.server.ts
index c465c92b7b6e7e18958b1491b34d00bf1eea0ade..0cc8fd13fec638095a30c70d4c33abb57ccad467 100644
--- a/src/routes/login/+page.server.ts
+++ b/src/routes/login/+page.server.ts
@@ -1,6 +1,7 @@
 import { redirect } from "@sveltejs/kit";
-
+type Expand<T> = T extends infer O ? { [K in keyof O]: O[K] } : never;
 export async function load(event) {
+  type User = Expand<import("lucia").User>;
   if (event.locals.user) {
     return redirect(302, "/");
   }