import { IModelParseContext, IModelTypeConstraint, IModelTypeConstrainable, Predicate, IModelTypeItem, IClientProps, IModelTypeComposite } from "./model.api"; export declare class ClientProps implements IClientProps { constructor(initProps?: IClientProps | any); propExists(key: string): boolean; propGet(key: string): any; propSet(key: string, val: any): void; propKeys(): string[]; propsCopyFrom(that: IClientProps | any): void; private _data; } export declare class ModelConstraints implements IModelTypeConstraint { constructor(constraints: ModelConstraints | IModelTypeConstraint[]); get id(): string; checkAndAdjustValue(val: T, ctx: IModelParseContext): T; add(...c: IModelTypeConstraint[]): ModelConstraints; filter(p: Predicate>): IModelTypeConstraint[]; slice(names: string[] | number[]): ModelConstraints; toString(): string; private _constraints; } export declare abstract class ModelTypeConstrainable extends ClientProps implements IModelTypeConstrainable { constructor(name: string, constraints?: ModelConstraints); propSet(key: string, value: any): void; get name(): string; get qualifiers(): string[]; get kind(): string; asItemType(): IModelTypeItem | undefined; asCompositeType(): IModelTypeComposite | undefined; withConstraints(...c: IModelTypeConstraint[]): this; withNameAndConstraints(name: string, ...c: IModelTypeConstraint[]): this; findConstraints(p: (x: IModelTypeConstraint) => boolean): IModelTypeConstraint[]; protected _addConstraint(c: IModelTypeConstraint): void; abstract parse(ctx: IModelParseContext): T; abstract validate(ctx: IModelParseContext): void; abstract unparse(val: T): any; abstract create(): T; createEmpty(): T; protected abstract _kind(): string; protected _setName(name: string): void; protected _setQualifier(scope: string, value: string): void; protected _clone(constraints: ModelConstraints): this; protected _checkAndAdjustValue(val: T, ctx: IModelParseContext): T; protected _getConstraints(): ModelConstraints; private _name; private _qualifiers; private _constraints; } export declare abstract class ModelTypeItem extends ModelTypeConstrainable implements IModelTypeItem { asItemType(): IModelTypeItem; asCompositeType(): undefined; abstract lowerBound(): IModelTypeConstraint; abstract upperBound(): IModelTypeConstraint; possibleValues(): T[]; abstract parse(ctx: IModelParseContext): T; abstract validate(ctx: IModelParseContext): void; abstract unparse(val: T): any; abstract fromString(val: string): T; abstract asString(val: T): string; } export declare function intersectArrays(a: T[], b: T[]): T[]; export declare abstract class ModelTypeConstraintOptional implements IModelTypeConstraint { constructor(); warnOnly(): this; abstract checkAndAdjustValue(v: T, c: IModelParseContext): T; get isWarningOnly(): boolean; get id(): string; protected abstract _id(): string; private _onlyWarn; } export declare class ModelTypeConstraintPossibleValues extends ModelTypeConstraintOptional { constructor(values: T[]); get allowedValues(): T[]; protected _id(): string; checkAndAdjustValue(value: T, ctx: IModelParseContext): T; private _allowedValues; }