/**
 * @fileoverview Hono handler factory for `GET /` — serves the HTML landing
 * page. Cache and body shape depend on `manifest.landing.requireAuth` and,
 * when an auth strategy is provided, whether the caller presents a valid
 * bearer token.
 *
 * @module src/mcp-server/transports/http/landing-page/handler
 */
import type { Context } from 'hono';
import type { ServerManifest } from '../../../../core/serverManifest.js';
import type { AuthStrategy } from '../../../../mcp-server/transports/auth/strategies/authStrategy.js';
/**
 * Factory for the `GET /` route handler.
 *
 * Cache behavior and body shape depend on `manifest.landing.requireAuth`:
 *
 * | `requireAuth` | Authenticated | Unauthenticated |
 * |:---|:---|:---|
 * | `false` (default) | full page · `Cache-Control: public, max-age=60` | full page · same |
 * | `true` | full page · `Cache-Control: private, max-age=60` · `Vary: Authorization` | reduced hero-only page · same cache headers |
 *
 * When `requireAuth` is `true` the handler validates the bearer token via the
 * provided {@link AuthStrategy} (the same strategy the MCP endpoint uses). A
 * missing, malformed, or invalid token produces the degraded page. When no
 * auth strategy is configured (e.g. `MCP_AUTH_MODE=none`) while `requireAuth`
 * is on, there is no way to authenticate — every caller gets the degraded
 * page. This keeps the inventory hidden by default rather than falling back
 * to a header-presence heuristic that any caller can bypass.
 *
 * When `manifest.transport.publicUrl` is set, the base URL is deterministic,
 * so both page variants (full and degraded) are rendered once at factory
 * time and served from memory on each request — the render pipeline then
 * only runs when the origin must be derived per-request from
 * `new URL(c.req.url).origin`.
 */
export declare function createLandingPageHandler(manifest: ServerManifest, authStrategy?: AuthStrategy | null): (c: Context) => Promise<Response>;
//# sourceMappingURL=handler.d.ts.map