type FlagType = "string" | "bool" | "int" | "stringSlice";
type FlagValue = string | boolean | number | string[];
type FlagTarget = {
    obj: Record<string, unknown>;
    key: string;
};
declare class Flag {
    name: string;
    shorthand: string | null;
    usage: string;
    type: FlagType;
    defaultValue: FlagValue;
    value: FlagValue;
    target: FlagTarget | null;
    isSet: boolean;
    constructor(options: {
        name: string;
        shorthand?: string | null;
        usage: string;
        type: FlagType;
        defaultValue: FlagValue;
        target?: FlagTarget | null;
    });
    setValue(value: FlagValue): void;
    private apply;
}
export declare class FlagSet {
    #private;
    static merge(...sets: FlagSet[]): FlagSet;
    StringVar(target: Record<string, unknown>, key: string, name: string, value: string, usage: string): Flag;
    StringVarP(target: Record<string, unknown>, key: string, name: string, shorthand: string, value: string, usage: string): Flag;
    StringSliceVar(target: Record<string, unknown>, key: string, name: string, value: string[], usage: string): Flag;
    StringSliceVarP(target: Record<string, unknown>, key: string, name: string, shorthand: string, value: string[], usage: string): Flag;
    BoolVar(target: Record<string, unknown>, key: string, name: string, value: boolean, usage: string): Flag;
    BoolVarP(target: Record<string, unknown>, key: string, name: string, shorthand: string, value: boolean, usage: string): Flag;
    BoolP(name: string, shorthand: string, value: boolean, usage: string): Flag;
    IntVar(target: Record<string, unknown>, key: string, name: string, value: number, usage: string): Flag;
    IntVarP(target: Record<string, unknown>, key: string, name: string, shorthand: string, value: number, usage: string): Flag;
    Lookup(name: string): Flag | null;
    ShorthandLookup(short: string): Flag | null;
    Parse(args: string[], allowUnknown?: boolean): {
        args: string[];
        error: Error | null;
    };
    values(): Flag[];
    private addFlag;
}
export type CommandArgsValidator = (cmd: Command, args: string[]) => Error | null;
export type CommandRun = (cmd: Command, args: string[]) => void;
export type CommandRunE = (cmd: Command, args: string[]) => Error | null | Promise<Error | null>;
export declare class Command {
    #private;
    Use: string;
    Short: string;
    Long: string;
    Example: string;
    Version: string;
    SilenceUsage: boolean;
    ValidArgs: string[];
    Args: CommandArgsValidator | null;
    Run: CommandRun | null;
    RunE: CommandRunE | null;
    Hidden: boolean;
    FParseErrWhitelist: {
        UnknownFlags?: boolean;
    };
    CompletionOptions: {
        DisableDefaultCmd?: boolean;
    };
    constructor(values?: Partial<Command>);
    AddCommand(...cmds: Array<Command | undefined | null>): void;
    RemoveCommand(...cmds: Array<Command | undefined | null>): void;
    PersistentFlags(): FlagSet;
    Flags(): FlagSet;
    ParseFlags(args: string[]): Error | null;
    Find(args: string[]): [Command, string[], Error | null];
    Execute(args?: string[]): Promise<Error | null>;
    SetErr(writer: {
        write: (chunk: string) => void;
    }): void;
    SetOut(writer: {
        write: (chunk: string) => void;
    }): void;
    SetHelpCommand(cmd: Command): void;
    name(): string;
    private inheritedFlags;
    private allowsUnknownFlags;
    private writeError;
    private writeOutput;
    private hasVisibleChildren;
    private shouldShowHelp;
    private shouldShowVersion;
    private printVersion;
    private printHelp;
}
export {};
