import { BaseRepository } from './base.repository';
import { Model } from 'sequelize-typescript';
import { FindAndCountOptions, FindOptions } from 'sequelize';
import { ModelPayload, PaginatedSet, PaginationParams } from './type';
export declare abstract class BaseCrudService<M extends Model = Model, T extends BaseRepository<M> = BaseRepository<M>> {
    readonly repository: T;
    protected constructor(repository: T);
    findAll(options?: FindOptions<M>): Promise<PaginatedSet<M[]>>;
    findPaginated(paginationParams: PaginationParams, options?: FindAndCountOptions<M>): Promise<PaginatedSet<M[]>>;
    findById(id: string): Promise<M>;
    findOne(options?: FindOptions<M>): Promise<M>;
    create(payload: ModelPayload<M>): Promise<M>;
    update(id: string, payload: ModelPayload<M>): Promise<M>;
    remove(id: string | string[]): Promise<void>;
}
