import Addon from './addon.js';
import ChainableAction from './chainable_action.js';
import ChainableCommandLocal from './chainable_command_local.js';
import type { ArgumentOptions, CommandHandler, CommandOptions, ConfigOptions, OptionOptions } from '../types.js';
import type { OptionInfer } from '../types.infer.js';
declare class ChainableCommandGlobal<GlobalOptions> extends Addon {
    config(options: Partial<ConfigOptions>): this;
    usage(usage: string): this;
    option<N extends string, O extends OptionOptions>(options: O & {
        name: N;
    }): ChainableCommandGlobal<GlobalOptions & OptionInfer<N, O>>;
    option<N extends string, O extends Omit<OptionOptions, 'name' | 'description'> = {}>(name: N, description: string, options?: O): ChainableCommandGlobal<GlobalOptions & OptionInfer<N, O>>;
    argument(options: ArgumentOptions): this;
    argument(name: string, description: string, options?: Omit<ArgumentOptions, 'name' | 'description'>): this;
    action(handler: CommandHandler<GlobalOptions>): ChainableAction<GlobalOptions>;
    command(options: CommandOptions): ChainableCommandLocal<GlobalOptions, {}>;
    command(name: string, description: string, options?: Omit<CommandOptions, 'name' | 'description'>): ChainableCommandLocal<GlobalOptions, {}>;
    run(argv?: string[]): Promise<void>;
}
export default ChainableCommandGlobal;
