///
///
import * as ls from 'vscode-languageserver-types';
import type { TextDocument } from 'vscode-languageserver-textdocument';
import type { FoldingRange } from 'vscode-languageserver-types';
import * as s from './schema';
import type { LanguageSettings } from './settings';
import 'language-service';
import k = Kusto.Data.IntelliSense;
import k2 = Kusto.Language.Editor;
import { Database } from './schema';
import type { RenderInfo } from './renderInfo';
import type { ClusterReference, DatabaseReference, GetReferencedGlobalParamsResult } from '../types';
import { ClassificationRange } from '../syntaxHighlighting/types';
export declare enum TokenKind {
TableToken = 2,
TableColumnToken = 4,
OperatorToken = 8,// where, project, ...
SubOperatorToken = 16,// has, contains, ...
CalculatedColumnToken = 32,
StringLiteralToken = 64,
FunctionNameToken = 128,
UnknownToken = 256,
CommentToken = 512,
PlainTextToken = 1024,
DataTypeToken = 2048,
ControlCommandToken = 4096,
CommandPartToken = 8192,
QueryParametersToken = 16384,
CslCommandToken = 32768,
LetVariablesToken = 65536,
PluginToken = 131072,
BracketRangeToken = 262144,
ClientDirectiveToken = 524288
}
/**
* A plain old javascript object that is roughly equivalent to the @kusto/language-service-next object, but without
* all the Bridge.Net properties and methods. this object is being sent from web worker to main thread and turns out
* that when posting the message we lose all properties (and functions), thus we use a POJO instead.
* This issue started happening once upgrading to 0.20.0 from 0.15.5.
*/
export interface ClassifiedRange {
kind: k2.ClassificationKind;
start: number;
length: number;
end: number;
}
/**
* colorization data for specific line range.
*/
export interface ColorizationRange {
classifications: ClassifiedRange[];
absoluteStart: number;
absoluteEnd: number;
}
export interface ResultAction {
title: string;
changes: {
start: number;
deleteLength: number;
insertText: string | null;
}[];
kind: string;
}
export interface LanguageService {
doComplete(document: TextDocument, position: ls.Position): Promise;
doRangeFormat(document: TextDocument, range: ls.Range): Promise;
doDocumentFormat(document: TextDocument): Promise;
doCurrentCommandFormat(document: TextDocument, caretPosition: ls.Position): Promise;
doFolding(document: TextDocument): Promise;
doValidation(document: TextDocument, intervals: {
start: number;
end: number;
}[], includeWarnings?: boolean, includeSuggestions?: boolean): Promise;
getResultActions(document: TextDocument, start: number, end: number): Promise;
getClassifications(document: TextDocument): Promise;
doRename(document: TextDocument, position: ls.Position, newName: string): Promise;
doHover(document: TextDocument, position: ls.Position): Promise;
setParameters(scalarParameters: readonly s.ScalarParameter[], tabularParameters: readonly s.TabularParameter[]): Promise;
setSchema(schema: s.Schema): Promise;
setSchemaFromShowSchema(schema: s.showSchema.Result, clusterConnectionString: string, databaseInContextName: string, globalScalarParameters?: s.ScalarParameter[], globalTabularParameters?: s.TabularParameter[], databaseInContextAlternateName?: string): Promise;
normalizeSchema(schema: s.showSchema.Result, clusterConnectionString: string, databaseInContextName: string, databaseInContextAlternateName?: string): Promise;
getSchema(): Promise;
getCommandInContext(document: TextDocument, cursorOffset: number): Promise;
getCommandAndLocationInContext(document: TextDocument, cursorOffset: number): Promise<{
text: string;
location: ls.Location;
} | null>;
getCommandsInDocument(document: TextDocument): Promise<{
absoluteStart: number;
absoluteEnd: number;
text: string;
}[]>;
configure(languageSettings: LanguageSettings): void;
getClientDirective(text: string): Promise<{
isClientDirective: boolean;
directiveWithoutLeadingComments: string;
}>;
getAdminCommand(text: string): Promise<{
isAdminCommand: boolean;
adminCommandWithoutLeadingComments: string;
}>;
findDefinition(document: TextDocument, position: ls.Position): Promise;
findReferences(document: TextDocument, position: ls.Position): Promise;
getQueryParams(document: TextDocument, cursorOffset: number): Promise<{
name: string;
type: string;
}[]>;
getGlobalParams(document: TextDocument): Promise<{
name: string;
type: string;
}[]>;
getReferencedSymbols(document: TextDocument, offset?: number): Promise<{
name: string;
kind: string;
display: string;
}[]>;
getReferencedGlobalParams(document: TextDocument, offset?: number): Promise;
getRenderInfo(document: TextDocument, cursorOffset: number): Promise;
getDatabaseReferences(document: TextDocument, cursorOffset: number): Promise;
getClusterReferences(document: TextDocument, cursorOffset: number): Promise;
addDatabaseToSchema(document: TextDocument, clusterName: string, databaseSchema: Database): Promise;
addClusterToSchema(document: TextDocument, clusterName: string, databases: readonly {
name: string;
alternativeName?: string;
}[]): Promise;
}
export type CmSchema = {
accounts: k.KustoIntelliSenseAccountEntity[];
services: k.KustoIntelliSenseServiceEntity[];
connectionString: string;
};
/**
* Obtain an instance of the kusto language service.
*/
export declare function getKustoLanguageService(): LanguageService;