import { Config, IConfig } from './base-config';
import { Collection } from './collection';
export declare enum ParamType {
    SINGLE = "single",
    LIST = "list"
}
export interface IParamConfig extends IConfig {
    type?: ParamType;
    required?: boolean;
    acceptOnly?: string[];
    value?: string;
}
export declare class Param extends Config implements IParamConfig {
    type: ParamType;
    required: boolean;
    acceptOnly: string[];
    value: any;
    $idx: number;
    constructor(config: IParamConfig);
    static createFromAny(config: any): Param;
}
export declare class ParamCollection extends Collection<Param> {
    private _listParam;
    private _optionalParam;
    private _requiredParam;
    private _propNames;
    indexParamsParam: number;
    indexOptionsParam: number;
    indexSpreadParam: number;
    addByConfig(configs: IParamConfig | IParamConfig[]): void;
    initByProperties(propertyNames: string[], saveIndex?: boolean): void;
    initByMethod(methodSignature: any): void;
    mergeByConfigs(configs: IParamConfig[]): void;
    merge(config: IParamConfig): void;
    clear(all?: boolean): void;
    protected validate(item: Param): void;
    protected itemAdded(item: Param): void;
    containsRequired(): string;
    verify(): void;
}
