/** * Adapter Auth Middleware * * Creates a Hono middleware that delegates authentication to an `AuthAdapter` * instead of hardcoded JWT verification. This is used when the user passes * an `AuthAdapter` to `initializeRebaseBackend()`. * * The middleware: * 1. Checks for API key tokens (`rk_` prefix) first — these are Rebase-level * 2. Falls back to `adapter.verifyRequest(request)` to resolve the user * 3. Scopes the DataDriver via `withAuth()` for RLS * 4. Enforces auth (401) when `requireAuth` is true and no user is found * * The behavior is identical to `createAuthMiddleware()` — only the * token verification strategy is pluggable. */ import type { MiddlewareHandler, Context } from "hono"; import type { DataDriver, AuthAdapter } from "@rebasepro/types"; import type { HonoEnv } from "../api/types"; import type { ApiKeyStore } from "./api-keys/api-key-store"; export interface AdapterAuthMiddlewareOptions { /** The auth adapter to delegate verification to. */ adapter: AuthAdapter; /** The DataDriver to scope via withAuth() for RLS. */ driver: DataDriver; /** * Optional per-request driver resolver for multi-data-source backends. * Returns the unscoped delegate to use for this request (e.g. Postgres vs * Mongo). When omitted, `driver` is used for every request. */ resolveDriver?: (c: Context) => DataDriver; /** * If true, return 401 when no valid user is resolved. * Defaults to `true` (secure by default). */ requireAuth?: boolean; /** Optional API key store — when provided, `rk_` bearer tokens are accepted. */ apiKeyStore?: ApiKeyStore; } /** * Create a Hono middleware that uses an `AuthAdapter` for request verification. */ export declare function createAdapterAuthMiddleware(options: AdapterAuthMiddlewareOptions): MiddlewareHandler;