import { Mapping, Parameters, ValueType, JSONValue, ObjectType, JSONDataValue } from './types'; import { Id } from '../shared'; import { FieldType, FormatType, JSONByteFormatType, JSONFormatType } from '../modeling'; export interface ResourceField { [key: string]: string | FieldType | FormatType | ValueType | Parameters; name: string; field: FieldType; format: JSONFormatType; } export interface RelationField extends ResourceField { relation: Id | string; mapping: ValueType; mappingParams: Parameters; } export declare class ResourceSchema { private readonly _fields; constructor(); addField(name: string, fieldType: 'id', formatType: JSONByteFormatType): ResourceSchema; addField(name: string, fieldType: 'name', formatType: 'string'): ResourceSchema; addField(name: string, fieldType: 'created', formatType: 'integer'): ResourceSchema; addField(name: string, fieldType: 'size', formatType: 'integer'): ResourceSchema; addField(name: string, fieldType: 'user', formatType: JSONByteFormatType): ResourceSchema; addField(name: string, fieldType: 'data', formatType: JSONFormatType): ResourceSchema; addField(name: string, fieldType: 'id', formatType: JSONByteFormatType, relationId: Id, mapping: Mapping): ResourceSchema; addField(name: string, fieldType: 'name', formatType: 'string', relationId: Id, mapping: Mapping): ResourceSchema; addField(name: string, fieldType: 'created', formatType: 'integer', relationId: Id, mapping: Mapping): ResourceSchema; addField(name: string, fieldType: 'size', formatType: 'integer', relationId: Id, mapping: Mapping): ResourceSchema; addField(name: string, fieldType: 'user', formatType: JSONByteFormatType, relationId: Id, mapping: Mapping): ResourceSchema; addField(name: string, fieldType: 'data', formatType: JSONFormatType, relationId: Id, mapping: Mapping): ResourceSchema; getField(name: string): ResourceField | undefined; private addObjectField; private addRelationField; get object(): { fields: ResourceField[]; }; get fields(): ResourceField[]; add(schema: ResourceSchema): ResourceSchema; } export declare type ResourceFilterOperator = 'eq' | 'ne' | 'gt' | 'ge' | 'lt' | 'le'; export interface ResourceFilterEntry { [key: string]: string | T | ResourceFilterOperator; name: string; value: T; operator: ResourceFilterOperator; } export declare class ResourceFilter { private readonly _filters; constructor(); get entries(): ResourceFilterEntry[]; } export interface ResourceOrderEntry { [key: string]: string | boolean; name: string; ascending: boolean; } export declare class ResourceOrder { private readonly _orders; constructor(); get entries(): ResourceOrderEntry[]; } export declare abstract class Resource { protected _objectId: Id; protected _schema: ResourceSchema; protected _objectType: ObjectType; constructor(objectId: Id, schema: ResourceSchema, objectType: ObjectType); get objectId(): Id; get schema(): ResourceSchema; get objectType(): ObjectType; } export declare class ResourceInstance extends Resource { constructor(objectId: Id, schema: ResourceSchema); } export declare class ResourceSpecials extends Resource { private _filter; private _order; private _offset?; private _limit?; constructor(objectId: Id, schema: ResourceSchema); get filter(): ResourceFilter; set filter(filter: ResourceFilter); setFilter(filter: ResourceFilter): ResourceSpecials; addFilter(name: string, value: JSONDataValue, operatorType: ResourceFilterOperator): ResourceSpecials; get order(): ResourceOrder; set order(order: ResourceOrder); setOrder(order: ResourceOrder): ResourceSpecials; addOrder(name: string, ascending?: boolean): ResourceSpecials; get offset(): number | undefined; set offset(offset: number | undefined); setOffset(offset: number | undefined): ResourceSpecials; get limit(): number | undefined; set limit(offset: number | undefined); setLimit(limit: number | undefined): ResourceSpecials; } //# sourceMappingURL=resource.d.ts.map