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<CategoryEntity extends BaseCategoryEntity = BaseCategoryEntity, CategoryMultiLanguageNameEntity 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<BaseCategoryMultiLanguageNameEntity>, baseCategoryRepo: Repository<BaseCategoryEntity>, multipleLanguageMode: boolean, allowMultipleParentCategories: boolean, allowCircularCategories: boolean, dataSource: DataSource, categoryDataLoader: CategoryDataLoader);
    private getDefaultQueryBuilder;
    private parseSingleLanguageCategory;
    private getParentCategoryIdSet;
    private checkCircularCategories;
    findAll<C extends CategoryEntity = CategoryEntity, CM extends CategoryMultiLanguageNameEntity = CategoryMultiLanguageNameEntity>(options?: CategoryFindAllDto & {
        language: Language;
    }): Promise<SingleCategoryBaseDto<C, CM>[]>;
    findAll<C extends CategoryEntity = CategoryEntity, CM extends CategoryMultiLanguageNameEntity = CategoryMultiLanguageNameEntity>(options?: CategoryFindAllDto): Promise<CategoryBaseDto<C, CM>[]>;
    findById<C extends CategoryEntity = CategoryEntity, CM extends CategoryMultiLanguageNameEntity = CategoryMultiLanguageNameEntity>(id: string, language: Language): Promise<SingleCategoryBaseDto<C, CM>>;
    findById<C extends CategoryEntity = CategoryEntity, CM extends CategoryMultiLanguageNameEntity = CategoryMultiLanguageNameEntity>(id: string): Promise<CategoryBaseDto>;
    archive(id: string): Promise<void>;
    update<C extends CategoryEntity = CategoryEntity, CM extends CategoryMultiLanguageNameEntity = CategoryMultiLanguageNameEntity>(id: string, options: CategoryCreateDto<C>, multiLanguageOptions?: DeepPartial<CM>): Promise<C>;
    create<C extends CategoryEntity = CategoryEntity, CM extends CategoryMultiLanguageNameEntity = CategoryMultiLanguageNameEntity>(options: CategoryCreateDto<C>, multiLanguageOptions?: DeepPartial<CM>): Promise<C>;
}
