import { CachedContent, Uri, GraphQLConfig, GraphQLProjectConfig, GraphQLLanguageService } from 'graphql-language-service';
import type { CompletionParams, VersionedTextDocumentIdentifier, DidSaveTextDocumentParams, DidOpenTextDocumentParams, DidChangeConfigurationParams } from 'vscode-languageserver-protocol';
import type { CompletionItem, CompletionList, CancellationToken, Hover, InitializeResult, Location, PublishDiagnosticsParams, DidChangeTextDocumentParams, DidCloseTextDocumentParams, DidChangeWatchedFilesParams, InitializeParams, TextDocumentPositionParams, DocumentSymbolParams, SymbolInformation, WorkspaceSymbolParams, IConnection, DidChangeConfigurationRegistrationOptions } from 'vscode-languageserver';
import type { UnnormalizedTypeDefPointer } from '@graphql-tools/load';
import { GraphQLCache } from './GraphQLCache';
import { parseDocument } from './parseDocument';
import { Logger } from './Logger';
import { GraphQLExtensionDeclaration } from 'graphql-config';
import type { LoadConfigOptions } from './types';
declare type CachedDocumentType = {
    version: number;
    contents: CachedContent[];
};
export declare class MessageProcessor {
    _connection: IConnection;
    _graphQLCache: GraphQLCache;
    _graphQLConfig: GraphQLConfig | undefined;
    _languageService: GraphQLLanguageService;
    _textDocumentCache: Map<string, CachedDocumentType>;
    _isInitialized: boolean;
    _willShutdown: boolean;
    _logger: Logger;
    _extensions?: GraphQLExtensionDeclaration[];
    _parser: (text: string, uri: string) => CachedContent[];
    _tmpDir: string;
    _tmpUriBase: string;
    _tmpDirBase: string;
    _loadConfigOptions: LoadConfigOptions;
    _schemaCacheInit: boolean;
    _rootPath: string;
    _settings: any;
    constructor({ logger, fileExtensions, graphqlFileExtensions, loadConfigOptions, config, parser, tmpDir, connection, }: {
        logger: Logger;
        fileExtensions: string[];
        graphqlFileExtensions: string[];
        loadConfigOptions: LoadConfigOptions;
        config?: GraphQLConfig;
        parser?: typeof parseDocument;
        tmpDir?: string;
        connection: IConnection;
    });
    get connection(): IConnection;
    set connection(connection: IConnection);
    handleInitializeRequest(params: InitializeParams, _token?: CancellationToken, configDir?: string): Promise<InitializeResult>;
    _updateGraphQLConfig(): Promise<void>;
    handleDidOpenOrSaveNotification(params: DidSaveTextDocumentParams | DidOpenTextDocumentParams): Promise<PublishDiagnosticsParams | null>;
    handleDidChangeNotification(params: DidChangeTextDocumentParams): Promise<PublishDiagnosticsParams | null>;
    handleDidChangeConfiguration(_params?: DidChangeConfigurationParams): Promise<DidChangeConfigurationRegistrationOptions>;
    handleDidCloseNotification(params: DidCloseTextDocumentParams): void;
    handleShutdownRequest(): void;
    handleExitNotification(): void;
    validateDocumentAndPosition(params: CompletionParams): void;
    handleCompletionRequest(params: CompletionParams): Promise<CompletionList | Array<CompletionItem>>;
    handleHoverRequest(params: TextDocumentPositionParams): Promise<Hover>;
    handleWatchedFilesChangedNotification(params: DidChangeWatchedFilesParams): Promise<Array<PublishDiagnosticsParams | undefined> | null>;
    handleDefinitionRequest(params: TextDocumentPositionParams, _token?: CancellationToken): Promise<Array<Location>>;
    handleDocumentSymbolRequest(params: DocumentSymbolParams): Promise<Array<SymbolInformation>>;
    handleWorkspaceSymbolRequest(params: WorkspaceSymbolParams): Promise<Array<SymbolInformation>>;
    _getTextDocuments(): [string, CachedDocumentType][];
    _cacheSchemaText(uri: string, text: string, version: number): Promise<void>;
    _cacheSchemaFile(uri: UnnormalizedTypeDefPointer, project: GraphQLProjectConfig): Promise<void>;
    _getTmpProjectPath(project: GraphQLProjectConfig, prependWithProtocol?: boolean, appendPath?: string): string;
    _cacheSchemaFilesForProject(project: GraphQLProjectConfig): Promise<void>;
    _cacheConfigSchema(project: GraphQLProjectConfig): Promise<void>;
    _cacheDocumentFilesforProject(project: GraphQLProjectConfig): Promise<void[] | undefined>;
    _cacheAllProjectFiles(config: GraphQLConfig): Promise<void[] | undefined>;
    _isRelayCompatMode(query: string): boolean;
    _updateFragmentDefinition(uri: Uri, contents: CachedContent[]): Promise<void>;
    _updateObjectTypeDefinition(uri: Uri, contents: CachedContent[]): Promise<void>;
    _getCachedDocument(uri: string): CachedDocumentType | null;
    _invalidateCache(textDocument: VersionedTextDocumentIdentifier, uri: Uri, contents: CachedContent[]): Promise<Map<string, CachedDocumentType> | null>;
}
export {};
//# sourceMappingURL=MessageProcessor.d.ts.map