import { Model, FilterQuery, UpdateQuery } from "mongoose";
import { IResponse } from "./interface/response.interface";
export declare class CrudifyService<T, C = Partial<T>, U = Partial<T>> {
    protected readonly model: Model<T>;
    constructor(model: Model<T>);
    create(createDto: C): Promise<T | any>;
    createBulk(data: C[]): Promise<T[] | any>;
    findAll(query?: FilterQuery<T>): Promise<IResponse<T>>;
    findOne(filter: FilterQuery<any>): Promise<T | null>;
    count(filter: Record<string, any>): Promise<number>;
    put(id: string, updateDto: UpdateQuery<U>): Promise<T | null>;
    update(id: string, updateDto: UpdateQuery<T>): Promise<T | null>;
    updateBulk(filter: any, updateDto: UpdateQuery<U>): Promise<any>;
    delete(id: string): Promise<T | null>;
    deleteBulk(filter: any): Promise<any>;
    softDelete(id: string): Promise<T | null>;
    softDeleteBulk(filter: any): Promise<any>;
    restore(id: string): Promise<T | null>;
    restoreBulk(filter: any): Promise<any>;
}
