import { BreezeEnum } from './enum'; /** @hidden @internal */ export interface IParamContext { typeName?: string; type?: Function; prevContext?: IParamContext; msg?: string | ((context: IParamContext, v: any) => string); mustNotBeEmpty?: boolean; enumType?: BreezeEnum; propertyName?: string; allowNull?: boolean; fn?(context: IParamContext, v: any): boolean; } /** @hidden @internal */ export interface IConfigParam { config: any; params: Param[]; whereParam: (propName: string) => Param; } /** @hidden @internal */ export declare class Param { v: any; name: string; defaultValue: any; parent: IConfigParam; /** @hidden @internal */ _context: IParamContext; /** @hidden @internal */ _contexts: IParamContext[]; constructor(v: any, name: string); isObject(): Param; isBoolean(): Param; isString(): Param; isNumber(): Param; isFunction(): Param; isNonEmptyString(): Param; isTypeOf(typeName: string): Param; isInstanceOf(type: Function, typeName?: string): Param; hasProperty(propertyName: string): Param; isEnumOf(enumType: any): Param; isRequired(allowNull?: boolean): Param; isOptional(): Param; isNonEmptyArray(): Param; isArray(mustNotBeEmpty?: boolean): Param; or(): this; check(defaultValue?: any): any; /** @hidden @internal */ _addContext(context: IParamContext): Param; getMessage(): string; withDefault(defaultValue: any): this; whereParam(propName: string): Param; applyAll(instance: any, checkOnly?: boolean): void; /** @hidden @internal */ _applyOne: (this: Param, instance: any) => void; MESSAGE_PREFIX: string; } /** @hidden @internal */ export declare let assertParam: (v: any, name: string) => Param; /** @hidden @internal */ export declare let assertConfig: (config: Object) => IConfigParam;