import { type Completion, type CompletionSource, snippet } from '@codemirror/autocomplete';
import type { Extension } from '@codemirror/state';
import { Tag } from '@lezer/highlight';
export declare const customTags: {
    underline: Tag;
    monospace: Tag;
    marked: Tag;
};
export type YfmNoteType = 'info' | 'tip' | 'warning' | 'alert';
export declare const yfmNoteTypes: readonly YfmNoteType[];
export declare const yfmNoteSnippetTemplate: (type: YfmNoteType) => "{% note info %}\n\n#{}\n\n{% endnote %}\n\n" | "{% note alert %}\n\n#{}\n\n{% endnote %}\n\n" | "{% note tip %}\n\n#{}\n\n{% endnote %}\n\n" | "{% note warning %}\n\n#{}\n\n{% endnote %}\n\n";
export declare const yfmNoteSnippets: Record<YfmNoteType, ReturnType<typeof snippet>>;
export declare const yfmCutSnippetTemplate = "{% cut \"#{title}\" %}\n\n#{}\n\n{% endcut %}\n\n";
export declare const yfmCutSnippet: (editor: {
    state: import("@codemirror/state").EditorState;
    dispatch: (tr: import("@codemirror/state").Transaction) => void;
}, completion: Completion | null, from: number, to: number) => void;
export declare const yfmCutDirectiveSnippetTemplate = ":::cut [#{title}]\n#{}\n:::\n\n";
export declare const yfmCutDirectiveSnippet: (editor: {
    state: import("@codemirror/state").EditorState;
    dispatch: (tr: import("@codemirror/state").Transaction) => void;
}, completion: Completion | null, from: number, to: number) => void;
export interface LanguageData {
    autocomplete: CompletionSource;
    [key: string]: any;
}
export interface YfmLangOptions {
    languageData?: LanguageData[];
}
export declare const mdAutocomplete: LanguageData;
export declare function yfmLang({ languageData }?: YfmLangOptions): Extension;
