import type { GraphQLConfig, GraphQLProjectConfig } from 'graphql-config';
import type { CompletionParams, DidSaveTextDocumentParams, DidOpenTextDocumentParams, DidChangeConfigurationParams, Diagnostic, CompletionList, CancellationToken, Hover, InitializeResult, Location, PublishDiagnosticsParams, DidChangeTextDocumentParams, DidCloseTextDocumentParams, DidChangeWatchedFilesParams, InitializeParams, Range as RangeType, TextDocumentPositionParams, DocumentSymbolParams, SymbolInformation, WorkspaceSymbolParams, Connection, DidChangeConfigurationRegistrationOptions } from 'vscode-languageserver/node';
import { parseDocument } from './parseDocument';
import type { LoadConfigOptions, LocateCommand } from './types';
import { SupportedExtensionsEnum } from './constants';
import { NoopLogger, Logger } from './Logger';
import { DefinitionQueryResponse } from 'graphql-language-service/src/interface';
export declare class MessageProcessor {
    private _connection;
    private _graphQLCache;
    private _languageService;
    private _textDocumentCache;
    private _isInitialized;
    private _isGraphQLConfigMissing;
    private _willShutdown;
    private _logger;
    private _parser;
    private _tmpDir;
    private _tmpDirBase;
    private _loadConfigOptions;
    private _rootPath;
    private _settings;
    private _providedConfig?;
    constructor({ logger, fileExtensions, graphqlFileExtensions, loadConfigOptions, config, parser, tmpDir, connection }: {
        logger: Logger | NoopLogger;
        fileExtensions: ReadonlyArray<SupportedExtensionsEnum>;
        graphqlFileExtensions: string[];
        loadConfigOptions: LoadConfigOptions;
        config?: GraphQLConfig;
        parser?: typeof parseDocument;
        tmpDir?: string;
        connection: Connection;
    });
    get connection(): Connection;
    set connection(connection: Connection);
    handleInitializeRequest(params: InitializeParams, _token?: CancellationToken, configDir?: string): Promise<InitializeResult>;
    _initializeGraphQLCaches(): Promise<void>;
    private _handleConfigError;
    private _logConfigError;
    private _isGraphQLConfigFile;
    private _loadConfigOrSkip;
    handleDidOpenOrSaveNotification(params: DidSaveTextDocumentParams | DidOpenTextDocumentParams): Promise<PublishDiagnosticsParams>;
    handleDidChangeNotification(params: DidChangeTextDocumentParams): Promise<PublishDiagnosticsParams | null>;
    handleDidChangeConfiguration(_params: DidChangeConfigurationParams): Promise<DidChangeConfigurationRegistrationOptions>;
    handleDidCloseNotification(params: DidCloseTextDocumentParams): void;
    handleShutdownRequest(): void;
    handleExitNotification(): void;
    private validateDocumentAndPosition;
    handleCompletionRequest(params: CompletionParams): Promise<CompletionList>;
    handleHoverRequest(params: TextDocumentPositionParams): Promise<Hover | null>;
    private _parseAndCacheFile;
    handleWatchedFilesChangedNotification(params: DidChangeWatchedFilesParams): Promise<Array<PublishDiagnosticsParams | undefined> | null>;
    handleDefinitionRequest(params: TextDocumentPositionParams, _token?: CancellationToken): Promise<Array<Location>>;
    _getCustomLocateResult(project: GraphQLProjectConfig, result: DefinitionQueryResponse, locateCommand: LocateCommand): {
        range: {
            start: {
                line: number;
                character: number;
            };
            end: {
                line: number;
                character: number;
            };
        };
        uri: string;
    } | null;
    handleDocumentSymbolRequest(params: DocumentSymbolParams): Promise<Array<SymbolInformation>>;
    handleWorkspaceSymbolRequest(params: WorkspaceSymbolParams): Promise<Array<SymbolInformation>>;
    private _getTextDocuments;
    private _cacheSchemaText;
    private _cacheSchemaFile;
    private _getTmpProjectPath;
    private getCachedSchemaSettings;
    private _cacheSchemaFilesForProject;
    private cacheConfigSchemaFile;
    private _cacheDocumentFilesforProject;
    private _cacheAllProjectFiles;
    _isRelayCompatMode(query: string): boolean;
    private _updateFragmentDefinition;
    private _updateSchemaIfChanged;
    private _updateObjectTypeDefinition;
    private _getCachedDocument;
    private _invalidateCache;
}
export declare function processDiagnosticsMessage(results: Diagnostic[], query: string, range: RangeType | null): Diagnostic[];
//# sourceMappingURL=MessageProcessor.d.ts.map