import { DeleteResult } from 'mongodb';
import { FilterQuery, QueryWithHelpers, UpdateWriteOpResult } from 'mongoose';
import DeletedSchema from './types/DeletedSchema';
import { MongooseUpdateOptions } from './utils/getOverloadedArguments';
import DeletedFieldOptions from './types/DeletedFieldOptions';
export interface DeletedStaticMethods<T, TQueryHelpers = {}> {
    deleteMany(filter?: FilterQuery<T>, options?: MongooseUpdateOptions | null): QueryWithHelpers<DeleteResult, T, TQueryHelpers, T, 'deleteMany'>;
    deleteMany(filter: FilterQuery<T>): QueryWithHelpers<DeleteResult, T, TQueryHelpers, T, 'deleteMany'>;
    deleteOne(filter?: FilterQuery<T>, options?: MongooseUpdateOptions | null): QueryWithHelpers<DeleteResult, T, TQueryHelpers, T, 'deleteOne'>;
    deleteOne(filter?: FilterQuery<T>): QueryWithHelpers<DeleteResult, T, TQueryHelpers, T, 'deleteOne'>;
    restoreOne(filter?: FilterQuery<T>, options?: MongooseUpdateOptions | null): QueryWithHelpers<UpdateWriteOpResult, T, TQueryHelpers, T, 'updateOne'>;
    restoreOne(filter: FilterQuery<T>): QueryWithHelpers<UpdateWriteOpResult, T, TQueryHelpers, T, 'updateOne'>;
    restoreMany(filter?: FilterQuery<T>, options?: MongooseUpdateOptions | null): QueryWithHelpers<UpdateWriteOpResult, T, TQueryHelpers, T, 'updateMany'>;
    restoreMany(filter: FilterQuery<T>): QueryWithHelpers<UpdateWriteOpResult, T, TQueryHelpers, T, 'updateMany'>;
}
export interface DeletedByStaticMethods<T, TUser = any, TQueryHelpers = {}> {
    deleteManyByUser(user: TUser, filter?: FilterQuery<T>, options?: MongooseUpdateOptions | null): QueryWithHelpers<DeleteResult, T, TQueryHelpers, T, 'deleteMany'>;
    deleteManyByUser(user: TUser, filter: FilterQuery<T>): QueryWithHelpers<DeleteResult, T, TQueryHelpers, T, 'deleteMany'>;
    deleteOneByUser(user: TUser, filter?: FilterQuery<T>, options?: MongooseUpdateOptions): QueryWithHelpers<DeleteResult, T, TQueryHelpers, T, 'deleteOne'>;
    deleteOneByUser(user: TUser, filter: FilterQuery<T>): QueryWithHelpers<DeleteResult, T, TQueryHelpers, T, 'deleteOne'>;
}
export default function (schema: DeletedSchema, deletedFieldOptions: DeletedFieldOptions): void;
