import { Facade } from '@noeldemartin/utils'; import { MockInstance } from 'vitest'; declare interface Engine { create(collection: string, document: EngineDocument, id?: string): Promise; readOne(collection: string, id: string): Promise; readMany(collection: string, filters?: EngineFilters): Promise; update(collection: string, id: string, updates: EngineUpdates): Promise; delete(collection: string, id: string): Promise; } declare type EngineAttributeFilter = EngineAttributeValue | { $eq: EngineAttributeValue; } | { $or: EngineAttributeFilter[]; } | { $in: EngineAttributeLeafValue[]; } | { $contains: EngineAttributeFilter | EngineAttributeFilter[]; }; declare type EngineAttributeLeafValue = string | number | boolean | null | Date; declare type EngineAttributeUpdate = EngineAttributeValue | EngineAttributeUpdateMap | EngineAttributeUpdateOperation | { $apply: EngineAttributeUpdateOperation[]; }; declare interface EngineAttributeUpdateMap extends Record { } declare type EngineAttributeUpdateOperation = { $update: EngineAttributeUpdate; } | { $updateItems: EngineUpdateItemsOperatorData | EngineUpdateItemsOperatorData[]; } | { $unset: string | string[] | true; } | { $push: EngineAttributeValue; }; declare type EngineAttributeValue = EngineAttributeLeafValue | EngineAttributeValueMap | EngineAttributeValueArray | EngineAttributeValueArrayMap; declare interface EngineAttributeValueArray extends Array { } declare interface EngineAttributeValueArrayMap extends Array> { } declare interface EngineAttributeValueMap extends Record { } declare type EngineDocument = Record; declare type EngineDocumentsCollection = Record; declare type EngineFilters = EngineRootFilter & Record; declare interface EngineRootFilter { $in?: (string | number | Record)[]; } declare interface EngineUpdateItemsOperatorData { $where?: EngineFilters; $update?: EngineAttributeUpdate; $override?: EngineAttributeValueMap; $unset?: true; } declare type EngineUpdates = Record | { $unset: string | string[]; } | { $overwrite: EngineAttributeValue; }; export declare const FakeEngine: Facade; export declare interface FakeEngineCollection { [id: string]: EngineDocument; } export declare interface FakeEngineDatabase { [collection: string]: FakeEngineCollection; } export declare class FakeEngineInstance implements Engine { database: FakeEngineDatabase; readonly createSpy: MockInstance; readonly readOneSpy: MockInstance; readonly readManySpy: MockInstance; readonly updateSpy: MockInstance; readonly deleteSpy: MockInstance; private helper; constructor(); use(): void; resetSpies(): void; create(collectionName: string, document: EngineDocument, id?: string): Promise; readOne(collectionName: string, id: string): Promise; readMany(collection: string, filters?: EngineFilters): Promise; update(collectionName: string, id: string, updates: EngineUpdates): Promise; delete(collectionName: string, id: string): Promise; private hasCollection; private collection; } export { }