import { type AppData, type Config } from "./types";
import { Pluggable, type ApplyEvent, type ApplyGet, type ApplyModify, type PluggablePluginApi } from '@eljs/pluggable';
import { type RequiredRecursive } from '@eljs/utils';
import type { ReleaseType } from 'semver';
import { parseVersion } from './utils';
/**
 * Runner class
 */
export declare class Runner extends Pluggable<Config> {
    /**
     * 配置项
     */
    config: RequiredRecursive<Config>;
    /**
     * 应用数据
     */
    appData: AppData;
    constructor(options?: Config);
    run(releaseTypeOrVersion?: ReleaseType | string): Promise<void>;
    /**
     * 发布步骤打印
     * @param message 信息
     */
    step(message: string): void;
    private _resolveConfig;
}
/**
 * 运行器插件 Api
 */
export interface RunnerPluginApi extends PluggablePluginApi {
    /**
     * 应用配置项，可通过 `modifyConfig` 方法修改
     */
    config: typeof Runner.prototype.config;
    /**
     * 应用数据，可通过 `modifyAppData` 方法修改
     */
    appData: typeof Runner.prototype.appData;
    /**
     * 修改应用数据
     */
    modifyConfig: ApplyModify<typeof Runner.prototype.config, null>;
    /**
     * 修改应用数据
     */
    modifyAppData: ApplyModify<typeof Runner.prototype.appData, {
        cwd: string;
    }>;
    /**
     * 应用检查事件
     */
    onCheck: ApplyEvent<{
        releaseTypeOrVersion: ReleaseType | string;
    }>;
    /**
     * 应用启动事件
     */
    onStart: ApplyEvent<null>;
    /**
     * 获取需要升级的版本
     */
    getIncrementVersion: ApplyGet<{
        releaseTypeOrVersion: ReleaseType | string;
    }, string>;
    /**
     * 写版本前事件
     */
    onBeforeBumpVersion: ApplyEvent<ReturnType<typeof parseVersion>>;
    /**
     * 写版本事件
     */
    onBumpVersion: ApplyEvent<ReturnType<typeof parseVersion>>;
    /**
     * 写版本前后事件
     */
    onAfterBumpVersion: ApplyEvent<ReturnType<typeof parseVersion>>;
    /**
     * 获取更新日志
     */
    getChangelog: ApplyGet<ReturnType<typeof parseVersion>, string>;
    /**
     * 发布前事件
     */
    onBeforeRelease: ApplyEvent<ReturnType<typeof parseVersion> & {
        changelog: string;
    }>;
    /**
     * 发布事件
     */
    onRelease: ApplyEvent<ReturnType<typeof parseVersion> & {
        changelog: string;
    }>;
    /**
     * 发布前后事件
     */
    onAfterRelease: ApplyEvent<ReturnType<typeof parseVersion> & {
        changelog: string;
    }>;
    /**
     * 发布步骤打印
     * @param message 信息
     */
    step: (message: string) => void;
}
//# sourceMappingURL=runner.d.ts.map