declare module "gemini-configparser" { type PartialConfig = never; type Locator = never; type UnsanitizedRootConfig = any; type UnsanitizedConfigNode = any; type DeepPartial = { [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; } export type Parser = (locator: Locator, config: PartialConfig) => T; type RootPrefixes = { // If defined as an array and multiple prefixes match, first defined in the array will be used envPrefix: string | string[]; cliPrefix: string; }; type MetaInfo = { isSetByUser: boolean; }; export type OptionParserConfig = { defaultValue?: T | ((config: UnsanitizedRootConfig, currNode: UnsanitizedConfigNode) => T); parseCli?(input: string): T; parseEnv?(input: string): T; validate?(value: unknown, config: UnsanitizedRootConfig, currNode: UnsanitizedConfigNode, meta: MetaInfo): asserts value is T; isDeprecated?: boolean; }; export type MappedOptionParserConfig = OptionParserConfig & { map(value: S, config: UnsanitizedRootConfig, currNode: UnsanitizedConfigNode, meta: MetaInfo): T; }; type SectionProperties = { [name in keyof T]: Parser }; export function option(description: OptionParserConfig): Parser; export function option(description: MappedOptionParserConfig): Parser; export function section(properties: SectionProperties): Parser; export function map(properties: Parser, defaultValue?: Record>): Parser>; type RootParserArg = { options: DeepPartial; env: NodeJS.ProcessEnv; argv: NodeJS.Process['argv']; }; type RootParser = (arg: RootParserArg) => T; export function root(rootParser: Parser, prefixes: RootPrefixes): RootParser; export class MissingOptionError extends Error {} export class UnknownKeysError extends Error {} }