import { IEmbedded, IEmbeddedEntity, IResourceEntity, IResourceFactory } from "../../../interfaces/api"; import { ObjectKey } from "../../../interfaces/common"; import { IEntityCriteriaItem } from "./EntityCriteriaBuilder"; import { IHasEmbeddedEntity } from "../mixins/hasEmbedded"; export interface IEmbeddedEntityList extends IEntityCriteriaItem { readonly embeddedType: ObjectKey>; length: number; add(criteria: E[]): void; set(value: E[] | null): void; get(): E[]; remove(value?: E[]): void; } export declare type IHasTypedEmbeddedEntity>, E> = IHasEmbeddedEntity>; export interface IQueryAttributes { save?: ObjectKey[]; create?: ObjectKey[]; update?: ObjectKey[]; } export interface IEmbeddedEntityListOptions>, E extends IEmbeddedEntity> { entity: IHasTypedEmbeddedEntity; embeddedType: ObjectKey>; attributes?: IQueryAttributes; } export declare class EmbeddedEntityList>, E extends IEmbeddedEntity> implements IEmbeddedEntityList { readonly embeddedType: ObjectKey>; protected entity: IHasTypedEmbeddedEntity; protected attributes?: IQueryAttributes; constructor(options: IEmbeddedEntityListOptions); add(criteria: object[]): void; set(value: IEmbeddedEntity[] | null): void; get length(): number; get(): E[]; remove(value?: IEmbeddedEntity[]): void; getEmbeddedSaveCriteria(attributes?: ObjectKey[]): { _embedded?: undefined; } | { _embedded: { [x: string]: { [P in keyof E]?: E[P] | undefined; }[]; }; }; protected pickItemAttributes(item: E, attributes?: ObjectKey[]): { [P in keyof E]?: E[P] | undefined; }; get createCriteria(): { _embedded?: undefined; } | { _embedded: { [x: string]: { [P in keyof E]?: E[P] | undefined; }[]; }; }; get updateCriteria(): { _embedded?: undefined; } | { _embedded: { [x: string]: { [P in keyof E]?: E[P] | undefined; }[]; }; }; }