import { Tokenizer, TokenizerOptions } from "./tokenizer/tokenizer.js"; import { File } from "@dodona/dolos-core"; type TreeSitterLanguage = any; export declare abstract class Language { readonly name: string; readonly extensions: string[]; constructor(name: string, extensions: string[]); extensionMatches(filename: string): boolean; checkLanguage(file: File): void; abstract createTokenizer(options?: TokenizerOptions): Promise; } export declare class ProgrammingLanguage extends Language { protected languageModule: TreeSitterLanguage | undefined; getLanguageModule(): TreeSitterLanguage; loadLanguageModule(): Promise; createTokenizer(options?: TokenizerOptions): Promise; } export declare class CustomTreeSitterLanguage extends ProgrammingLanguage { readonly name: string; readonly extensions: string[]; readonly customTreeSitterPackage: string | (() => Promise); constructor(name: string, extensions: string[], customTreeSitterPackage: string | (() => Promise)); loadLanguageModule(): Promise; } export declare class CustomTokenizerLanguage extends Language { readonly name: string; readonly extensions: string[]; readonly customTokenizer: ((self: Language, options?: TokenizerOptions) => Promise); constructor(name: string, extensions: string[], customTokenizer: ((self: Language, options?: TokenizerOptions) => Promise)); createTokenizer(options?: TokenizerOptions): Promise; } export declare class LanguageError extends Error { constructor(message: string); } /** * Helper class to find or detect languages to use for tokenization. */ export declare class LanguagePicker { static languages: Language[]; private readonly byExtension; private readonly byName; constructor(); /** * Find the language to use for tokenization based on the most common * extension of the files. If the extension does not match any known language, * then a LanguageError is thrown. * * @param files the files to tokenize */ detectLanguage(files: File[]): Language; /** * Find the language to use for tokenization based on the name of the language. * * @param name */ findLanguage(name: string): Promise; } export {}; //# sourceMappingURL=language.d.ts.map