import type { EditorState, TransactionSpec } from '@codemirror/state'; import type { EditorView } from '@codemirror/view'; import type { ActiveResult } from './state.js'; export interface Completion { label: string; detail?: string; info?: string | ((completion: Completion) => Node | null | Promise); apply?: string | ((view: EditorView, completion: Completion, from: number, to: number) => void); type?: string; boost?: number; } export declare class CompletionContext { readonly state: EditorState; readonly pos: number; readonly explicit: boolean; abortListeners: (() => void)[] | null; constructor(state: EditorState, pos: number, explicit: boolean); tokenBefore(types: readonly string[]): { from: number; to: number; text: string; type: import("@lezer/common").NodeType; } | null; matchBefore(expr: RegExp): { from: number; to: number; text: string; } | null; get aborted(): boolean; addEventListener(type: 'abort', listener: () => void): void; } export declare function completeFromList(list: readonly (string | Completion)[]): CompletionSource; export declare function ifIn(nodes: readonly string[], source: CompletionSource): CompletionSource; export declare function ifNotIn(nodes: readonly string[], source: CompletionSource): CompletionSource; export type CompletionSource = (context: CompletionContext) => CompletionResult | null | Promise; export interface CompletionResult { from: number; to?: number; options: readonly Completion[]; validFor?: RegExp | ((text: string, from: number, to: number, state: EditorState) => boolean); filter?: boolean; getMatch?: (completion: Completion) => readonly number[]; update?: (current: CompletionResult, from: number, to: number, context: CompletionContext) => CompletionResult | null; } export declare class Option { readonly completion: Completion; readonly source: ActiveResult; readonly match: readonly number[]; constructor(completion: Completion, source: ActiveResult, match: readonly number[]); } export declare function cur(state: EditorState): number; export declare function ensureAnchor(expr: RegExp, start: boolean): RegExp; export declare const pickedCompletion: import("@codemirror/state").AnnotationType; export declare function insertCompletionText(state: EditorState, text: string, from: number, to: number): TransactionSpec; export declare function applyCompletion(view: EditorView, option: Option): void; export declare function asSource(source: CompletionSource | readonly (string | Completion)[]): CompletionSource; //# sourceMappingURL=completion.d.ts.map