import { IEntityAttributes, IResourceEntity, IResourceFactory } from "../../../interfaces/api"; export declare type IFactoryCriteria = ((object | A)[]) | object; export interface IFactoryCriteriaBuilder { add(item: IFactoryCriteriaItem): void; remove(item: IFactoryCriteriaItem): void; getCriteria(type: CriteriaBuilderType, defaults?: object): object; } export interface IFactoryCriteriaItem { fetchCriteria?: (criteria: object) => object; createCriteria?: (criteria: object) => object; updateCriteria?: (criteria: object) => object; deleteCriteria?: (criteria: object) => object; } export declare enum CriteriaBuilderType { GET = "fetch", CREATE = "create", UPDATE = "update", DELETE = "delete" } export declare class FactoryCriteriaBuilder>> implements IFactoryCriteriaBuilder { protected items: IFactoryCriteriaItem[]; protected factory: IResourceFactory; constructor(factory: IResourceFactory); add(criteriaItem: IFactoryCriteriaItem): void; remove(criteriaItem: IFactoryCriteriaItem): void; getCriteria(type: CriteriaBuilderType, defaults: IFactoryCriteria): IFactoryCriteria; }