import { OnApplicationBootstrap } from '@nestjs/common';
import { DataSource, Repository } from 'typeorm';
import { BaseArticleEntity } from '../models/base-article.entity';
import { MultiLanguageArticleCreateDto, SingleArticleCreateDto } from '../typings/article-create.dto';
import { BaseArticleVersionEntity } from '../models/base-article-version.entity';
import { BaseArticleVersionContentEntity } from '../models/base-article-version-content.entity';
import { ArticleFindAllDto } from '../typings/article-find-all.dto';
import { Language } from '../typings/language';
import { ArticleBaseDto, SingleArticleBaseDto } from '../typings/article-base.dto';
import { BaseCategoryEntity } from '../models/base-category.entity';
import { ArticleSignatureService } from './article-signature.service';
import { ArticleFindByIdBaseDto } from '../typings/article-find-by-id.dto';
import { ArticleCollectionDto, SingleArticleCollectionDto } from '../typings/article-collection.dto';
export declare class ArticleBaseService<ArticleEntity extends BaseArticleEntity = BaseArticleEntity, ArticleVersionEntity extends BaseArticleVersionEntity = BaseArticleVersionEntity, ArticleVersionContentEntity extends BaseArticleVersionContentEntity = BaseArticleVersionContentEntity> implements OnApplicationBootstrap {
    private readonly baseArticleRepo;
    private readonly baseArticleVersionRepo;
    private readonly baseArticleVersionContentRepo;
    private readonly baseCategoryRepo;
    private readonly multipleLanguageMode;
    private readonly fullTextSearchMode;
    private readonly signatureMode;
    private readonly articleSignatureService;
    private readonly draftMode;
    private readonly dataSource;
    constructor(baseArticleRepo: Repository<BaseArticleEntity>, baseArticleVersionRepo: Repository<BaseArticleVersionEntity>, baseArticleVersionContentRepo: Repository<BaseArticleVersionContentEntity>, baseCategoryRepo: Repository<BaseCategoryEntity>, multipleLanguageMode: boolean, fullTextSearchMode: boolean, signatureMode: boolean, articleSignatureService: ArticleSignatureService, draftMode: boolean, dataSource: DataSource);
    private readonly logger;
    private getDefaultQueryBuilder;
    private bindSearchTokens;
    onApplicationBootstrap(): Promise<void>;
    findById<A extends ArticleEntity = ArticleEntity, AV extends ArticleVersionEntity = ArticleVersionEntity, AVC extends ArticleVersionContentEntity = ArticleVersionContentEntity>(id: string, options?: ArticleFindByIdBaseDto): Promise<ArticleBaseDto<A, AV, AVC>>;
    findById<A extends ArticleEntity = ArticleEntity, AV extends ArticleVersionEntity = ArticleVersionEntity, AVC extends ArticleVersionContentEntity = ArticleVersionContentEntity>(id: string, options?: ArticleFindByIdBaseDto & {
        language: Language;
    }): Promise<SingleArticleBaseDto<A, AV, AVC>>;
    private getFindAllQueryBuilder;
    findCollection<A extends ArticleEntity = ArticleEntity, AV extends ArticleVersionEntity = ArticleVersionEntity, AVC extends ArticleVersionContentEntity = ArticleVersionContentEntity>(options?: ArticleFindAllDto & {
        language: Language;
    }): Promise<SingleArticleCollectionDto<A, AV, AVC>>;
    findCollection<A extends ArticleEntity = ArticleEntity, AV extends ArticleVersionEntity = ArticleVersionEntity, AVC extends ArticleVersionContentEntity = ArticleVersionContentEntity>(options?: ArticleFindAllDto): Promise<ArticleCollectionDto<A, AV, AVC>>;
    findAll<A extends ArticleEntity = ArticleEntity, AV extends ArticleVersionEntity = ArticleVersionEntity, AVC extends ArticleVersionContentEntity = ArticleVersionContentEntity>(options?: ArticleFindAllDto & {
        language: Language;
    }): Promise<SingleArticleBaseDto<A, AV, AVC>[]>;
    findAll<A extends ArticleEntity = ArticleEntity, AV extends ArticleVersionEntity = ArticleVersionEntity, AVC extends ArticleVersionContentEntity = ArticleVersionContentEntity>(options?: ArticleFindAllDto): Promise<ArticleBaseDto<A, AV, AVC>[]>;
    archive(id: string): Promise<void>;
    release<A extends ArticleEntity = ArticleEntity, AV extends ArticleVersionEntity = ArticleVersionEntity, AVC extends ArticleVersionContentEntity = ArticleVersionContentEntity>(id: string, releasedAt?: Date): Promise<ArticleBaseDto<A, AV, AVC>>;
    addVersion<A extends ArticleEntity = ArticleEntity, AV extends ArticleVersionEntity = ArticleVersionEntity, AVC extends ArticleVersionContentEntity = ArticleVersionContentEntity>(id: string, options: Omit<SingleArticleCreateDto<A, AV, AVC>, 'version'>): Promise<A>;
    addVersion<A extends ArticleEntity = ArticleEntity, AV extends ArticleVersionEntity = ArticleVersionEntity, AVC extends ArticleVersionContentEntity = ArticleVersionContentEntity>(id: string, options: Omit<MultiLanguageArticleCreateDto<A, AV, AVC>, 'version'>): Promise<A>;
    create<A extends ArticleEntity = ArticleEntity, AV extends ArticleVersionEntity = ArticleVersionEntity, AVC extends ArticleVersionContentEntity = ArticleVersionContentEntity>(options: SingleArticleCreateDto<A, AV, AVC>): Promise<A>;
    create<A extends ArticleEntity = ArticleEntity, AV extends ArticleVersionEntity = ArticleVersionEntity, AVC extends ArticleVersionContentEntity = ArticleVersionContentEntity>(options: MultiLanguageArticleCreateDto<A, AV, AVC>): Promise<A>;
}
