import { GraphQLConfig } from 'graphql-config';
import { IPCMessageReader, IPCMessageWriter, SocketMessageReader, SocketMessageWriter, StreamMessageReader, StreamMessageWriter } from 'vscode-jsonrpc/node';
import { Connection } from 'vscode-languageserver/node';
import { Logger } from './Logger';
import { parseDocument } from './parseDocument';
import { SupportedExtensionsEnum } from './constants';
import { LoadConfigOptions, ServerOptions } from './types';
export type MappedServerOptions = Omit<ServerOptions, 'loadConfigOptions'> & {
    loadConfigOptions: Omit<LoadConfigOptions, 'rootDir'> & {
        rootDir: string;
    };
};
export declare const buildOptions: (options: ServerOptions) => MappedServerOptions;
export default function startServer(options?: ServerOptions): Promise<Connection | void>;
type InitializerParams = {
    reader: SocketMessageReader | StreamMessageReader | IPCMessageReader;
    writer: SocketMessageWriter | StreamMessageWriter | IPCMessageWriter;
    options: MappedServerOptions;
};
export declare function initializeHandlers({ reader, writer, options }: InitializerParams): Promise<Connection>;
type HandlerOptions = {
    connection: Connection;
    logger: Logger;
    config?: GraphQLConfig;
    parser?: typeof parseDocument;
    fileExtensions?: ReadonlyArray<SupportedExtensionsEnum>;
    graphqlFileExtensions?: string[];
    tmpDir?: string;
    loadConfigOptions: LoadConfigOptions;
};
export declare function addHandlers({ connection, logger, config, parser, fileExtensions, graphqlFileExtensions, tmpDir, loadConfigOptions }: HandlerOptions): Promise<void>;
export {};
//# sourceMappingURL=startServer.d.ts.map