import { FilterQuery, UpdateQuery as MongooseUpdateQuery } from 'mongoose'; type UpdatedValue = T extends object ? UpdateDoc : T; type UpdateArrayValue = T extends (infer U)[] ? T | U : never; export type UpdateDoc = { [K in keyof T]?: undefined extends T[K] ? UpdatedValue | null : UpdatedValue; }; export declare class UpdateQuery> { readonly update: MongooseUpdateQuery; constructor(obj?: UpdateDoc, isQuery?: boolean); private createUnsetFromNulls; static clone(query: UpdateQuery): UpdateQuery; set(key: K, value: Doc[K]): this; set(key: string, value: unknown): this; unset(key: K): this; unset(key: string): this; inc(key: K, value?: number): this; inc(key: string, value?: number): this; push(key: K, value: UpdateArrayValue): this; push(key: string, value: unknown): this; pull(key: K, value: Doc[K] | FilterQuery>): this; pull(key: string, value: FilterQuery | unknown): this; addToSet(key: K, value: UpdateArrayValue): this; addToSet(key: string, value: unknown): this; } export {};