import type { IncomingMessage, ServerResponse } from "node:http"; import { type IntrospectionResult } from "./introspect.js"; import type { RateLimiter } from "./ratelimit.js"; import type { Metrics } from "./metrics.js"; export interface RemoteAppConfig { /** Public base URL of this service, e.g. https://mcp.sealmetrics.com */ publicUrl: string; /** OAuth issuer (AS), e.g. https://my.sealmetrics.com */ oauthIssuer: string; /** API base the tools call, e.g. http://api-1:8000/api/v1 */ apiBaseUrl: string; /** Dashboard base for citation links in search/fetch results. */ dashboardUrl: string; /** Filesystem path of the server icon PNG (optional; served at /icon.png). */ iconPath?: string; version: string; maxBodyBytes: number; /** Lowercased `host` header values accepted (VAL-RMT10). */ allowedHosts: ReadonlySet; /** Lowercased origins accepted when an Origin header is present. */ allowedOrigins: ReadonlySet; trustProxy: boolean; } export interface RemoteAppDeps { introspect: (token: string) => Promise; rateLimiter: Pick; metrics: Metrics; log: (level: "info" | "warn" | "error", msg: string, fields?: Record) => void; } export declare function createRemoteApp(config: RemoteAppConfig, deps: RemoteAppDeps): (req: IncomingMessage, res: ServerResponse) => void; //# sourceMappingURL=app.d.ts.map