import { RuntimeConfig, StrictUserConfig } from './config';
export declare enum SplitProcessingStage {
    Parse = 0,
    Refer = 1
}
export interface SplitProcessing {
    stage: SplitProcessingStage;
    progress: number;
}
export type OnProcessing = (processing: SplitProcessing) => void;
export interface SplitContext {
    /**
     * 已经处理的主版本号与文件的映射表
     */
    processedFileByMajor: {
        [major: string]: string;
    };
    /**
     * 主版本更新日志末尾的连续空白长度
     */
    blankLengthByMajor: {
        [major: string]: number;
    };
    /**
     * 由于冲突策略导致的废弃文件
     */
    deprecatedMajorFiles: {
        [major: string]: string;
    };
}
export interface SplitResult {
    splitContext: SplitContext;
    runtimeConfig: RuntimeConfig;
}
export declare function createSplitContext(): SplitContext;
/**
 * 分离当前更新日志
 * @param {RuntimeConfig} runtimeConfig
 * @param {OnProcessing} [onProcessing]
 * @returns {Promise<SplitContext>}
 */
export declare function parseCurrentChangelog(runtimeConfig: RuntimeConfig, onProcessing?: OnProcessing): Promise<SplitContext>;
/**
 * 引用之前的更新日志链接
 * @param {RuntimeConfig} runtimeConfig
 * @param {SplitContext} splitContext
 * @param {OnProcessing} onProcessing
 * @returns {Promise<void>}
 */
export declare function referPreviousChangelog(runtimeConfig: RuntimeConfig, splitContext: SplitContext, onProcessing?: OnProcessing): Promise<void>;
/**
 * 切割更新日志
 * @param {StrictUserConfig} config
 * @param {StrictUserConfig} config
 * @param {OnProcessing} [onProcessing]
 * @returns {Promise<SplitResult>}
 */
export declare function splitChangelog(config: StrictUserConfig, onProcessing?: OnProcessing): Promise<SplitResult>;
