import * as vscode from 'vscode'; import type * as vscodeTextmate from 'vscode-textmate'; import type { PartialDeep, JsonObject, PackageJson } from 'type-fest'; type PartialJsonObject = PartialDeep; export interface EmbeddedLanguagesDefinition { [scopeName: string]: string; } export interface TokenTypeDefinition { [scopeName: string]: string; } export interface GrammarLanguageDefinition { language: string; scopeName: string; path: string; embeddedLanguages?: EmbeddedLanguagesDefinition; tokenTypes?: TokenTypeDefinition; balancedBracketSelectors?: string[]; unbalancedBracketSelectors?: string[]; } export interface GrammarInjectionContribution { scopeName: string; path: string; injectTo: string[]; embeddedLanguages?: EmbeddedLanguagesDefinition; tokenTypes?: TokenTypeDefinition; } export type GrammarDefinition = GrammarLanguageDefinition | GrammarInjectionContribution; export declare function isGrammarLanguageDefinition(g: GrammarDefinition): g is GrammarLanguageDefinition; export declare function isGrammarInjectionContribution(g: GrammarDefinition): g is GrammarInjectionContribution; export interface LanguageDefinition { aliases?: string[]; configuration?: string; extensions?: string[]; filenames?: string[]; firstLine?: string; icon?: string | { light: string; dark: string; }; id: string; mimetypes?: string[]; } export type LanguageData = LanguageDefinition[]; export type GrammarData = GrammarDefinition[]; export interface ExtensionContributions extends PartialJsonObject { languages?: PartialJsonObject & LanguageData; grammars?: PartialJsonObject & GrammarData; } export interface ConfigurationPaths { [languageId: string]: string; } export interface ExtensionManifest extends PackageJson { enabledApiProposals?: string[]; contributes?: ExtensionContributions; /** Mapping from language ID to config path. Default: `./textmate-configuration.json`. */ 'textmate-languageservices'?: ConfigurationPaths; /** Ersatz extension contributions - a service wiring to any language grammars. */ 'textmate-languageservice-contributes'?: ExtensionContributions; } export declare const contributionKeys: ExtensionManifestContributionKey[]; export type ExtensionManifestContributionKey = 'textmate-languageservice-contributes' | 'contributes'; export type ExtensionData = Record | undefined>; export declare const plaintextLanguageDefinition: LanguageDefinition; export declare const plaintextGrammarDefinition: { language: string; path: string; scopeName: string; }; export declare const plaintextLanguageConfiguration: vscode.LanguageConfiguration; export declare class ContributorData { private _languages; private _grammars; private _injections; private _sources; private _injectedEmbeddedLanguages; constructor(context?: vscode.ExtensionContext); get languages(): LanguageData; get grammars(): GrammarData; get injections(): { [scopeName: string]: string[]; }; get sources(): Record<"grammars" | "languages", ExtensionData>; findLanguageByExtension(fileExtension: string): string; findLanguageByFilename(fileLabel: string): string; findGrammarScopeNameFromFilename(fileLabel: string): string; findLanguageIdFromScopeName(scopeName: string): string; getInjections(scopeName: string): string[]; getEncodedLanguageId(languageId: string): number | undefined; getLanguageDefinitionFromId(languageId: string): LanguageDefinition; getLanguageDefinitionFromFilename(filename: string): LanguageDefinition; getGrammarDefinitionFromScopeName(scopeName: string): GrammarDefinition; getGrammarDefinitionFromLanguageId(languageId: string): GrammarLanguageDefinition; getEmbeddedLanguagesFromLanguageId(languageId: string): vscodeTextmate.IEmbeddedLanguagesMap; getTokenTypesFromLanguageId(languageId: string): vscodeTextmate.ITokenTypeMap; getExtensionFromLanguageId(languageId: string): vscode.Extension | undefined; getExtensionFromScopeName(scopeName: string): vscode.Extension; getLanguageConfigurationFromLanguageId(languageId: string): Promise; } export {};