export declare enum TokenKind { LCurly = 0, RCurly = 1, Pipe = 2, PipeEquals = 3, PipeRegex = 4, Equals = 5, NotEquals = 6, RegexEquals = 7, RegexNotEquals = 8, GreaterThan = 9, GreaterEquals = 10, LessThan = 11, LessEquals = 12, String = 13, Number = 14, Duration = 15, Bytes = 16, Ident = 17, Comma = 18, LParen = 19, RParen = 20, LBracket = 21, RBracket = 22, Comment = 23, Whitespace = 24, EOF = 25, Error = 26 } export interface Token { kind: TokenKind; value: string; start: number; end: number; } export interface LokiQuery { streamSelector: StreamSelector | null; pipeline: PipelineStage[]; metricExpr: MetricExpr | null; errors: ParseError[]; } export interface StreamSelector { matchers: Matcher[]; } export interface Matcher { label: string; operator: string; value: string; } export declare type PipelineStage = LineFilter | JsonParser | LogfmtParser | RegexpParser | LabelFilter | UnrecognizedStage; export interface LineFilter { type: 'lineFilter'; operator: string; value: string; } export interface JsonParser { type: 'jsonParser'; expressions?: string[]; } export interface LogfmtParser { type: 'logfmtParser'; expressions?: string[]; } export interface RegexpParser { type: 'regexpParser'; pattern: string; } export interface LabelFilter { type: 'labelFilter'; conditions: LabelFilterCondition[]; } export interface LabelFilterCondition { label: string; operator: string; value: string; } export interface UnrecognizedStage { type: 'unrecognized'; keyword: string; rest: string; } export interface MetricExpr { func: string; range: string; grouping?: Grouping; } export interface Grouping { by: boolean; labels: string[]; } export interface ParseError { message: string; start: number; end: number; } export declare type SituationKind = 'NONE' | 'IN_SELECTOR_LABEL' | 'IN_SELECTOR_VALUE' | 'AFTER_PIPE' | 'IN_PIPELINE_ARG' | 'IN_LABEL_FILTER' | 'IN_FUNCTION_PARENS' | 'IN_GROUPING'; export interface Situation { kind: SituationKind; prefix: string; replaceRange: { start: number; end: number; }; /** The label name when completing a selector value (IN_SELECTOR_VALUE). */ labelName?: string; /** The index of the matcher being edited within the stream selector (IN_SELECTOR_VALUE). */ matcherIndex?: number; /** True when cursor is inside an existing string literal (quotes already present). */ insideString?: boolean; }