/** 每个分支的处理状态 */
export type DailyMergeBranchStatus = 'success' | 'conflict' | 'noMerge' | 'skipped' | 'pending';
/** 每个分支的处理结果 */
export interface DailyMergeBranchResult {
    /** 分支名 */
    name: string;
    /** 处理状态 */
    status: DailyMergeBranchStatus;
    /** 分支作者（如能从 commit 信息中拿到） */
    author?: string;
    /** 失败/跳过原因 */
    reason?: string;
    /** merge 前 commit hash */
    originCommit?: string;
    /** merge 后 commit hash */
    nowCommit?: string;
}
/** dailyMerge 整体执行结果（通过 onReport 回调传递） */
export interface DailyMergeReportInfo {
    /** 仓库名 */
    repoName: string;
    /** 应用名 */
    appName: string;
    /** 仓库工蜂链接 */
    repoUrl?: string;
    /** 仓库 ID */
    projectId?: string | number;
    /** 主分支 */
    mainBranch: string;
    /** 是否演练 */
    isDryRun: boolean;
    /** 启动时间（ms） */
    startTime: number;
    /** 结束时间（ms） */
    endTime: number;
    /** 耗时（ms） */
    duration: number;
    /** 各分支处理结果 */
    branches: DailyMergeBranchResult[];
    /** 汇总数 */
    summary: {
        total: number;
        success: number;
        conflict: number;
        noMerge: number;
        skipped: number;
    };
    /** 整体状态：success(全成功) / partial(部分失败) / failed(全失败) / empty(无分支) */
    status: 'success' | 'partial' | 'failed' | 'empty';
    /** 机器人通知内容（markdown） */
    robotMessage?: string;
    /** 机器人通知是否成功 */
    robotNotified?: boolean;
}
/** dailyMerge 执行过程中发生的不可恢复错误 */
export interface DailyMergeReportError {
    /** 错误信息 */
    message: string;
    /** 错误堆栈 */
    stack?: string;
}
/**
 * 每日合并
 * 1. 获取昨天有活跃的分支
 * 2. 对于每个分支，进行合并并推送
 *     - 清理 Git 环境
 *     - 切到主分支，并拉最新代码
 *     - 切到当前分支，拉最新代码
 *     - 尝试执行 git merge
 *     - 对比 merge 前后的 commit 信息是否相同，作为判断 merge 是否成功的依据
 * 3. 发送机器人消息
 *
 *
 * @export
 * @async
 * @param {object} param0 参数
 * @param {string} param0.webhookUrl 机器人地址
 * @param {string} param0.appName 项目名称
 * @param {string} param0.devRoot 项目根路径
 * @param {string} param0.baseUrl 基础请求 url
 * @param {string} param0.repoName 仓库名称
 * @param {string} param0.privateToken 密钥
 * @param {boolean} [param0.isDryRun=false] 是否演练
 * @param {string} [param0.mainBranch='develop'] 主分支
 * @param {Regexp} [param0.whiteBranchReg=/^release\|develop\|hotfix\\/.+$/] 不处理的分支正则
 * @param {function} [param0.onReport] 执行完成后的结构化结果回调（可用于上报到自建后台）
 * @returns {Promise<DailyMergeReportInfo>}
 * @example
 *
 * ```ts
 * dailyMerge({
 *   webhookUrl: 'xx',
 *   appName: 'xx',
 *   devRoot: 'xx',
 *
 *   baseUrl: 'xx',
 *   repoName: 'xx',
 *   privateToken: 'xx',
 *
 *   isDryRun: false,
 *   onReport: async (info) => { await axios.post('/api/daily-merge', info); },
 * })
 * ```
 */
export declare function dailyMerge({ webhookUrl, appName, devRoot, baseUrl, quickLink, repoName, privateToken, isDryRun, mainBranch, whiteBranchReg, onReport, }: {
    webhookUrl: string;
    appName: string;
    devRoot: string;
    baseUrl: string;
    quickLink?: string;
    repoName: string;
    privateToken: string;
    isDryRun?: boolean;
    mainBranch?: string;
    whiteBranchReg?: RegExp;
    /** 执行完成后的结构化结果回调（可用于上报到自建后台） */
    onReport?: (info: DailyMergeReportInfo, err?: DailyMergeReportError) => void | Promise<void>;
}): Promise<DailyMergeReportInfo | undefined>;
