import { RequestHandler, DefaultContext } from '@apollo/client';
import { IncomingMessage, ServerResponse } from 'http';

type Response = ServerResponse;
type SSRContext = {
    headers: Record<string, string>;
    defaultContext: DefaultContext;
};
type TracingMiddlewareOptions = {
    serviceUrl: string;
    codeVersion: string;
    target?: string;
};
type SSRProxyingMiddlewareOptions = {
    apiUrl: string;
    proxyId?: string;
    proxySecret?: string;
};
declare function getTracingMiddleware(options: TracingMiddlewareOptions): RequestHandler;
declare function getSSRProxyingMiddleware({ proxyId, proxySecret, apiUrl }: SSRProxyingMiddlewareOptions): RequestHandler;
declare function prepareSSRContext(req?: IncomingMessage, res?: Response): SSRContext;

export { type SSRProxyingMiddlewareOptions, type TracingMiddlewareOptions, getSSRProxyingMiddleware, getTracingMiddleware, prepareSSRContext };
