import { CommandCollection, ICommandConfig } from './command-config';
import { OptionCollection, IOptionConfig } from './option-config';
import { ParamCollection, IParamConfig } from './param-config';
export interface IProgramConfig {
    name?: string;
    binaryName?: string;
    help?: string;
    version?: string;
    params?: IParamConfig[];
    options?: IOptionConfig[];
    commands?: ICommandConfig[];
}
export declare class ProgramConfiguration {
    name: string;
    help: string;
    version: string;
    binaryName: string;
    readonly commands: CommandCollection;
    readonly options: OptionCollection;
    readonly params: ParamCollection;
    decoratorsEnabled: boolean;
    static injectConfiguration(target: any, propertyName?: string): ProgramConfiguration;
    readFromObject(source: any): void;
    merge(config?: IProgramConfig): void;
    toConfig(): IProgramConfig;
    verify(): void;
}
