import { BaseCategoryEntity } from '../models/base-category.entity';
import { DataSource, DeepPartial, Repository } from 'typeorm';
import { CategoryCreateDto } from '../typings/category-create.dto';
import { BaseCategoryMultiLanguageNameEntity } from '../models/base-category-multi-language-name.entity';
import { CategoryFindAllDto } from '../typings/category-find-all.dto';
import { CategoryBaseDto } from '../typings/category-base.dto';
import { Language } from '../typings/language';
import { CategoryDataLoader } from '../data-loaders/category.dataloader';
import { SingleCategoryBaseDto } from '../typings/category-base.dto';
export declare class CategoryBaseService<C extends BaseCategoryEntity = BaseCategoryEntity, CM extends BaseCategoryMultiLanguageNameEntity = BaseCategoryMultiLanguageNameEntity> {
    private readonly baseCategoryMultiLanguageNameRepo;
    private readonly baseCategoryRepo;
    private readonly multipleLanguageMode;
    private readonly allowMultipleParentCategories;
    private readonly allowCircularCategories;
    private readonly dataSource;
    private readonly categoryDataLoader;
    constructor(baseCategoryMultiLanguageNameRepo: Repository<CM>, baseCategoryRepo: Repository<C>, multipleLanguageMode: boolean, allowMultipleParentCategories: boolean, allowCircularCategories: boolean, dataSource: DataSource, categoryDataLoader: CategoryDataLoader);
    private getDefaultQueryBuilder;
    private parseSingleLanguageCategory;
    private parseToMultiLanguageCategory;
    private getParentCategoryIdSet;
    private checkCircularCategories;
    findAll<T extends C = C, U extends CM = CM>(options?: CategoryFindAllDto & {
        language: Language;
    }): Promise<SingleCategoryBaseDto<C, CM>[]>;
    findAll<T extends C = C, U extends CM = CM>(options?: CategoryFindAllDto): Promise<CategoryBaseDto<T, U>[]>;
    findById<T extends C = C, U extends CM = CM>(id: string, language: Language): Promise<SingleCategoryBaseDto<T, U>>;
    findById<T extends C = C, U extends CM = CM>(id: string): Promise<CategoryBaseDto<T, U>>;
    archive(id: string): Promise<void>;
    update<T extends C = C, U extends CM = CM>(id: string, options: CategoryCreateDto<T>, multiLanguageOptions?: DeepPartial<U>): Promise<CategoryBaseDto<T, U>>;
    create<T extends C = C, U extends CM = CM>(options: CategoryCreateDto<T>, multiLanguageOptions?: DeepPartial<U>): Promise<CategoryBaseDto<T, U>>;
}
