import { FinalUserConfig } from "../../utils/config";
import { ReleaseBumpConfig } from "./bump";
import { ReleaseChangelogConfig } from "./changelog";
import { ReleaseCommitConfig } from "./commit";
import { ReleaseTagConfig } from "./tag";
import { ReleaseBranchConfig } from "./branch";
import { Command } from "./../../core/command";
import { MaybePromise } from "./../../utils/types";
import { ReleasePushConfig } from "./push";
export interface ReleaseConfig {
    dry?: boolean;
    scope?: {
        name: string;
        check?: (params: {
            name: string;
            finalUserConfig: FinalUserConfig;
        }) => MaybePromise<boolean>;
    };
    preset: {
        path: string;
        params: object;
    };
    branch: ReleaseBranchConfig;
    bump: ReleaseBumpConfig;
    changelog: ReleaseChangelogConfig;
    commit: ReleaseCommitConfig;
    tag: ReleaseTagConfig;
    push: ReleasePushConfig;
}
export declare const releaseDefaultConfig: ReleaseConfig;
export declare const release: (params: {
    finalUserConfig: FinalUserConfig;
}) => Promise<void>;
export declare class ReleaseCommand extends Command {
    task(): Promise<void>;
}
