export type NumberFields = { [K in keyof T]: T[K] extends number | bigint ? K : never; }[keyof T]; export type Expression = { [P in keyof T & string]?: string; }; export type Partial = { [P in keyof T & string]?: T[P]; }; export type DeepPartial = { [P in keyof T]?: T[P]; } & { [deepPath: string]: any; }; export interface ChangesInterface { $set?: DeepPartial | T; $unset?: { [path: string]: number; }; $inc?: Partial>>; } export declare class Changes { $set?: DeepPartial | T; $unset?: { [path: string]: number; }; $inc?: Partial>>; empty: boolean; fieldNames: string[]; constructor(changes?: ChangesInterface); clear(): void; getReturning(): string[]; protected detectEmpty(): void; replaceSet($set: DeepPartial | T): void; mergeSet($set: Partial | T): void; increase(property: NumberFields, increase?: number): void; set(property: keyof T & string, value: any): void; unset(property: keyof T & string, unset?: boolean): void; has(name: keyof T & string): boolean; } export declare class ItemChanges extends Changes { protected item: T; constructor(changes: ChangesInterface | undefined, item: T); increase(property: NumberFields, increase?: number): void; set(property: keyof T & string, value: any): void; unset(property: keyof T & string, unset?: boolean): void; } export declare const changeSetSymbol: unique symbol; export declare class AtomicChangeInstance { protected object: any; readonly changeSet: Changes; constructor(object: any); increase(property: NumberFields, increase?: number): void; } export declare function atomicChange(object: T): AtomicChangeInstance; export declare type __ΩNumberFields = any[]; export declare type __ΩExpression = any[]; export declare type __ΩPartial = any[]; export declare type __ΩDeepPartial = any[]; export declare type __ΩChangesInterface = any[];