import type { LanguageName, RendererOptions } from "../types"; import type { OptionDefinition, OptionKind, OptionValues } from "./types"; export * from "./types"; /** * The superclass for target language options. You probably want to use one of its * subclasses, `BooleanOption`, `EnumOption`, or `StringOption`. */ export declare abstract class Option { readonly definition: OptionDefinition; constructor(definition: OptionDefinition); get name(): Name; getValue(values: Record): T; get cliDefinitions(): { actual: Array>; display: Array>; }; } export declare function getOptionValues>, Lang extends LanguageName>(options: Options, untypedOptionValues: RendererOptions): OptionValues; /** * A target language option that allows setting a boolean flag. */ export declare class BooleanOption extends Option { /** * @param name The shorthand name. * @param description Short-ish description of the option. * @param defaultValue The default value. * @param kind Whether it's a primary or secondary option. */ constructor(name: Name, description: string, defaultValue: boolean, kind?: OptionKind); get cliDefinitions(): { actual: Array>; display: Array>; }; getValue(values: Record): boolean; } export declare class StringOption extends Option { constructor(name: Name, description: string, typeLabel: string, defaultValue: string, kind?: OptionKind); } export declare class EnumOption, EnumKey extends Extract = Extract> extends Option { private readonly _values; constructor(name: Name, description: string, values: EnumMap, defaultValue: NoInfer, kind?: OptionKind); getEnumValue(name: Key): EnumMap[Key]; }