import { JsonSchemaDefinition } from 'nowjs-core/lib/utils'; import { BpmsEngine } from '../BpmsEngine'; import { DataModelRepository } from './DataModelRepository'; import { QueryOptions, QueryResult, ScalarOptions, FilterExpression } from './Repository'; import { BpmsService } from '../BpmsService'; export interface DataModelServiceOptions { name: string; datamodelPersistency?: DataModelRepository; } export declare type DataModelSchema = JsonSchemaDefinition; export interface DataModelRelation { type: '0..1' | '1..1' | '1..*' | '*..*'; sourceKey?: string; targetKey?: string; } export interface DataModelSchemaDefinition { [name: string]: DataModelSchema; } export interface DataModelRelationDefinition { [name: string]: DataModelRelation; } export interface DataModelDefinition { models: DataModelSchemaDefinition; relations?: DataModelRelationDefinition; } export interface BpmsDataModel { id?: string; name: string; definition: DataModelDefinition; createdAt?: string; } export declare class DataModelService implements BpmsService { private dataModelCache; private id; private name; private datamodelRepository; private options; private bpmsEngine; constructor(options?: DataModelServiceOptions); constructor(bpmsEngine?: BpmsEngine, options?: DataModelServiceOptions); get Id(): string; get Name(): string; get BpmsEngine(): BpmsEngine | undefined; static createEngine(options?: DataModelServiceOptions): DataModelService; static createEngine(bpmsEngine?: BpmsEngine, options?: DataModelServiceOptions): DataModelService; create(dataModel: T): Promise; remove(dataModelId: string): Promise; clear(): Promise; find(dataModelId: string): Promise; list(filter?: FilterExpression): Promise; count(filter?: FilterExpression): Promise; query(options: QueryOptions): Promise>; scalar(options: ScalarOptions): Promise; }