import type { ClientMetadataProvider } from './adapters/ClientMetadataProvider'; import type { Fetcher } from './adapters/Fetcher'; import type { HtmlRewriterAdapter } from './adapters/HtmlRewriterAdapter'; import type { IdentityProvider } from './adapters/IdentityProvider'; import type { ResourceProvider } from './adapters/ResourceProvider'; import { type MOSProxyLogger } from './logger'; import type { MOSConfigInput, MosAuthenticatedApiRoute } from './types'; export type MOSProxyHtmlPipelineStage = 'origin-response' | 'link-rewriting' | 'surface-decisions' | 'surface-behavior' | 'surface-components'; export interface MOSProxyHtmlPipelineErrorContext { error: unknown; stage: MOSProxyHtmlPipelineStage; request: Request; lastSafeResponse: Response; } /** * Called when the HTML pipeline throws. Return a `Response` to fully control the proxy's reply, or * re-throw to surface the error to the platform handler. If omitted, the proxy fails open and * returns `lastSafeResponse`. If the callback itself throws or returns a non-Response value, the * proxy logs a warning and falls back to `lastSafeResponse` so the site cannot be taken down by a * bug in the handler. */ export type MOSProxyHtmlPipelineErrorHandler = (ctx: MOSProxyHtmlPipelineErrorContext) => Response | Promise; export interface MOSProxyOptions { config: MOSConfigInput; originFetcher: Fetcher; apiFetcher: Fetcher | null; htmlRewriter: HtmlRewriterAdapter | null; clientMetadataProvider: ClientMetadataProvider | null; identityProvider: IdentityProvider | null; resourceProvider: ResourceProvider | null; logger?: MOSProxyLogger; onHtmlPipelineError?: MOSProxyHtmlPipelineErrorHandler; customEndpointsEnabled: boolean; linkRewritingEnabled: boolean; surfaceDecisionsEnabled: boolean; htmlTransformationEnabled: boolean; mosAuthenticatedApiRoutes?: MosAuthenticatedApiRoute[]; } /** * Platform-agnostic MonetizationOS proxy. Build one with `MOSProxyBuilder`, then call * `proxy.handle(request)` from your platform's fetch entry point. */ export declare class MOSProxy { private readonly opts; private readonly config; constructor(opts: MOSProxyOptions); handle(request: Request): Promise; }