import { IResolvers } from "@graphql-tools/utils";
import { PluginDefinition } from "apollo-server-core";
import { ExpressContext } from "apollo-server-express";
import { ExecutionArgs } from "graphql";
import { Context, SubscribeMessage } from "graphql-ws";
import http from "http";
import { WebSocketServer } from "ws";
export declare type CreateExpressMicroserviceParams<TContext = {}> = {
    typeDefs: string | ((context: TContext) => Promise<string> | string);
    resolvers: IResolvers<any, TContext> | ((context: TContext) => Promise<IResolvers<any, TContext>> | IResolvers<any, TContext>);
    host: string;
    context?: (expressContext: ExpressContext) => TContext;
    subscriptionContext?: (ctx: Context, message: SubscribeMessage, args: ExecutionArgs, headers: Record<string, string>) => Record<string, any>;
    plugins?: PluginDefinition[];
};
export declare const createExpressMicroservice: ({ typeDefs, resolvers, context, subscriptionContext, host, plugins, ...rest }: CreateExpressMicroserviceParams) => Promise<{
    schema: import("graphql").GraphQLSchema;
    start: () => Promise<void>;
    applyMiddleware: ({ app, path, ...restData }: import("apollo-server-express").ServerRegistration) => {
        listen: (port: number) => Promise<{
            url: string;
            server: http.Server;
            wsServer: WebSocketServer;
        }>;
    };
}>;
