import { BaseCRUDLService } from '@aequum/crudl';
import { InMemoryRepository } from '../repositories/in-memory.repository';
export declare class BaseCRUDLInMemoryService<Model extends {
    [key in PrimaryKeyField]: any;
}, ModelDto, ModelCreateDto, ModelUpdateDto, ModelFilterType = any, PrimaryKeyField extends string = 'id'> extends BaseCRUDLService {
    protected primaryKeyField: PrimaryKeyField;
    protected repository: InMemoryRepository<Model, PrimaryKeyField>;
    create(data: ModelCreateDto): Promise<ModelDto>;
    retrieve(id: Model[PrimaryKeyField]): Promise<ModelDto>;
    retrieveBy(filter: ModelFilterType): Promise<ModelDto>;
    update(id: Model[PrimaryKeyField], data: ModelUpdateDto): Promise<ModelDto>;
    updateBy(filter: ModelFilterType, data: ModelUpdateDto): Promise<ModelDto | ModelDto[]>;
    delete(id: Model[PrimaryKeyField]): Promise<void>;
    deleteBy(filter: ModelFilterType): Promise<void>;
    list(filter?: ModelFilterType): Promise<Model[]>;
}
