import { IRequestContext } from "../pipeline/common"; import { ModelPropertyDefinition, SchemaInfo } from './schemaInfo'; import { Domain } from './domain'; import { ModelDefinition } from './builder/annotations.model'; /** * Schema definition */ export declare class Schema { private domain; readonly schemaType: any; private _subModels; readonly info: SchemaInfo; readonly name: string; readonly extends: Schema; /** * Create a new schema */ constructor(domain: Domain, def: ModelDefinition, schemaType: any); subModels(all?: boolean): IterableIterator; findProperty(name: string): ModelPropertyDefinition; properties(): IterableIterator; allProperties(): IterableIterator; coerce(data: any): any; private coerceInternal(entity, schema, result?); private applyBinding(prop, origin, val); validate(ctx: IRequestContext, obj: any): { [propertyName: string]: string; }; getIdProperty(): string; getId(obj: any): any; encrypt(entity: any): any; decrypt(entity: any): any; /** * Remove all sensible data * * @param {any} entity * @returns */ obfuscate(entity: any): void; isEmbeddedReference(prop: ModelPropertyDefinition): any; /** * Copy an entity to another taking into account references defined in schema * * @param {any} target * @param {any} source * @param {SchemaDescription} [schema] * @returns * * @memberOf Schema */ deepAssign(target: any, source: any, schema?: Schema): any; }