import { IModelType, IModelTypeItem, IModelTypeCompositeBuilder, IModelTypeEntry, IModelTypeComposite, IModelParseContext, IModelTypeConstraint, Predicate } from "./model.api"; import { ModelTypeConstrainable, ModelConstraints, ModelTypeConstraintOptional } from "./model.base"; export declare class ModelTypeAny extends ModelTypeConstrainable implements IModelTypeItem { private _constructFun; constructor(name: string, construct?: () => any, constraints?: ModelConstraints); protected _clone(constraints: ModelConstraints): this; protected _kind(): string; asItemType(): IModelTypeItem; fromString(text: string): any; asString(obj: any): string; lowerBound(): IModelTypeConstraint; upperBound(): IModelTypeConstraint; possibleValues(): any[]; create(): any; parse(ctx: IModelParseContext): any; validate(ctx: IModelParseContext): void; unparse(val: any): any; } export declare class ModelTypeObject extends ModelTypeConstrainable implements IModelTypeCompositeBuilder { private _constructFun; private _entries; private _entriesByName; private _allowAdditional; constructor(name: string, construct?: () => T, constraints?: ModelConstraints); asCompositeType(): IModelTypeComposite | undefined; protected _clone(constraints: ModelConstraints): this; addConstraint(c: IModelTypeConstraint): IModelTypeCompositeBuilder; addItem(key: string, type: IModelType, required?: boolean): IModelTypeCompositeBuilder; findItem(key: string): IModelTypeEntry; extend(type: IModelTypeComposite): IModelTypeCompositeBuilder; asItemType(): IModelTypeItem; itemType(name: string | number): IModelType; keyPathType(keyPath: string | string[]): IModelType | undefined; keyPathItem(keyPath: string | string[]): IModelTypeEntry | undefined; slice(names: string[] | number[]): IModelTypeComposite; _slice(names: string[] | number[]): ModelTypeObject; withReplacedItems(replaceItems: { [key: string]: IModelType | undefined; }, options?: { name?: string; }): ModelTypeObject; get items(): IModelTypeEntry[]; parse(ctx: IModelParseContext): T; validate(ctx: IModelParseContext): void; unparse(value: T): any; _create(): T; create(): T; createEmpty(): T; possibleValuesForContextData(name: string | number, data: any): any[]; protected _kind(): string; } export type ComparisonOp = "=" | "==" | "<" | "<=" | ">" | ">=" | "!="; export type UnaryOp = "!" | "!!" | 'true' | 'false' | true | false; export interface IComparePropertiesConstraintOptions { properties: string | string[]; op: ComparisonOp; } export declare class ModelTypeConstraintCompareProperties extends ModelTypeConstraintOptional { constructor(fieldsOrSelf: string[] | IComparePropertiesConstraintOptions | ModelTypeConstraintCompareProperties, op?: ComparisonOp); protected _id(): string; checkAndAdjustValue(val: any, ctx: IModelParseContext): any; usedItems(): string[]; private _fields; private _op; private _comparator; } export interface IEqualPropertiesConstraintOptions { properties: string | string[]; } export declare class ModelTypeConstraintEqualProperties extends ModelTypeConstraintOptional { constructor(fieldsOrSelf: string[] | IEqualPropertiesConstraintOptions | ModelTypeConstraintEqualProperties); private _isConstraintEqualFields; protected _id(): string; checkAndAdjustValue(val: any, ctx: IModelParseContext): any; usedItems(): string[]; private _fields; } export type IConditionOptions = IComparisonOptions | IUnaryOpOptions | boolean | 'true' | 'false'; export interface IComparisonOptions { property: string; value: string | string[] | number | number[]; op?: ComparisonOp; invert?: boolean; } export interface IUnaryOpOptions { property: string; op: UnaryOp; invert?: boolean; } /** * Creates a predicate for a conjunction of conditions. */ export declare function createPredicateAnd(condition: IConditionOptions | IConditionOptions[]): Predicate; /** * Creates a predicate for a condition in disjunctive normal form. */ export declare function createPredicateOrOfAnd(condition: IConditionOptions | IConditionOptions[][]): Predicate; export declare function createSinglePredicate(condition: IConditionOptions): Predicate; export interface IConditionalValueConstraintOptions { condition: IConditionOptions | IConditionOptions[]; properties: string | string[]; possibleValue?: string | number | string[] | number[]; clearOtherwise: boolean; } export interface IConditionalValueConstraintSettings { id: string; predicate: (x: any) => boolean; valueCheck: (x: any) => boolean; properties: string[]; possibleValues: any[]; clearOtherwise: boolean; condition: IConditionOptions | IConditionOptions[]; } export declare class ModelTypeConstraintConditionalValue extends ModelTypeConstraintOptional { constructor(optionsOrSelf: IConditionalValueConstraintOptions | ModelTypeConstraintConditionalValue); private _isConstraintConditionalValue; protected _id(): string; checkAndAdjustValue(val: any, ctx: IModelParseContext): Date; possibleValuesForContextData?(name: string | number, data: any): any[]; usedItems(): string[]; slice(fields: string[] | number[]): ModelTypeConstraintConditionalValue; private _settings; } /** * can be used for validation, only, not for value modification */ export declare class ModelTypePropertyConstraint extends ModelTypeConstraintOptional { constructor(propertyOrThis: string | ModelTypePropertyConstraint, constraint: IModelTypeConstraint); _id(): string; checkAndAdjustValue(val: any, ctx: IModelParseContext): any; usedItems(): string[]; private _property; private _constraint; } export declare class ModelTypeConstraintOneOf implements IModelTypeConstraint { constructor(types: IModelType[]); checkAndAdjustValue(v: T, c: IModelParseContext): T; get id(): string; private _types; }