import { OnApplicationBootstrap } from '@nestjs/common';
import { BaseSignatureLevelEntity } from '../models/base-signature-level.entity';
import { DataSource, Repository } from 'typeorm';
import { ArticleSignatureEntity } from '../models/base-article-signature.entity';
import { BaseArticleVersionEntity } from '../models/base-article-version.entity';
import { SignatureInfoDto } from '../typings/signature-info.dto';
export declare class ArticleSignatureService<SignatureLevelEntity extends BaseSignatureLevelEntity = BaseSignatureLevelEntity> implements OnApplicationBootstrap {
    private readonly articleVersionRepo;
    private readonly signatureMode;
    private readonly signatureLevels;
    private readonly signatureLevelRepo;
    private readonly articleSignatureRepo;
    private readonly draftMode;
    private readonly autoReleaseAfterApproved;
    private readonly dataSource;
    constructor(articleVersionRepo: Repository<BaseArticleVersionEntity>, signatureMode: boolean, signatureLevels: string[] | SignatureLevelEntity[], signatureLevelRepo: Repository<BaseSignatureLevelEntity>, articleSignatureRepo: Repository<ArticleSignatureEntity>, draftMode: boolean, autoReleaseAfterApproved: boolean, dataSource: DataSource);
    private signatureLevelsCache;
    get finalSignatureLevel(): SignatureLevelEntity | null;
    rejectVersion(articleVersion: {
        id: string;
        version: number;
    }, signatureInfo?: SignatureInfoDto<SignatureLevelEntity> & {
        reason?: string | null;
    }): Promise<ArticleSignatureEntity>;
    approveVersion(articleVersion: {
        id: string;
        version: number;
    }, signatureInfo?: SignatureInfoDto<SignatureLevelEntity>): Promise<ArticleSignatureEntity>;
    private signature;
    refreshSignatureLevelsCache(): Promise<void>;
    onApplicationBootstrap(): Promise<void>;
}
