/// <reference types="express" />
interface HttpHeaderDictionary {
    readonly [key: string]: string | string[];
}
type SubscriptionProtocol = "auto" | "graphql-transport-ws" | "graphql-ws" | "graphql-sse";
interface Options {
    readonly title?: string;
    readonly disableTelemetry?: boolean;
    readonly gaTrackingId?: string;
    readonly useBrowserUrlAsEndpoint: boolean;
    readonly includeCookies?: boolean;
    readonly useGet?: boolean;
    readonly subscriptionProtocol?: SubscriptionProtocol;
    readonly instanceUrl?: string;
    readonly sdlEndpoint?: string;
    readonly endpoint?: string;
    readonly httpHeaders?: HttpHeaderDictionary;
    readonly graphQLDocument?: string;
    readonly variables?: Record<string, any>;
    readonly organization?: {
        readonly serverUrl?: string;
        readonly name?: string;
    };
}
type Config = {
    readonly mode: "cdn";
    /** Endpoint **url** for the `cdn` hosted version. */
    readonly target?: {
        baseUrl: string;
        version?: string;
    } | string;
    readonly options?: Options;
} | {
    readonly mode: "embedded";
    /** Package **id** or **path** for the `embedded` version. */
    readonly target?: string;
    readonly options?: Options;
};
declare function combineMiddlewares(...middlewares: Handler[]): Handler;
declare function createRootMiddleware(): Handler;
declare function createConfigMiddleware(options?: Options): Handler;
declare function cdnMiddleware(target: string, options?: Options): Handler;
declare function selfMiddleware(target: string, options?: Options): Handler;
declare function nitroMiddleware({ mode, target, options, }: Config): Handler;
export { combineMiddlewares, createRootMiddleware, createConfigMiddleware, cdnMiddleware, selfMiddleware, nitroMiddleware as default };
