import semver, { type ReleaseType } from "semver";
import type { Commit } from "conventional-commits-parser";
import { FinalUserConfig } from "../../utils/config";
import { MaybePromise } from "../../utils/types";
import { Bumper } from "conventional-recommended-bump";
export interface VersionFileFileContent {
    version: string;
}
export interface ReleaseBumpConfig {
    versionFilePath: string;
    versionFilePathResolve: (params: {
        finalUserConfig: FinalUserConfig;
    }) => MaybePromise<string>;
    versionFileRead: (params: {
        finalUserConfig: FinalUserConfig;
    }) => MaybePromise<VersionFileFileContent>;
    versionFileWrite: (params: {
        finalUserConfig: FinalUserConfig;
        bumpRes: BumpResult;
    }) => MaybePromise<void>;
    versionFileWriteDisable?: boolean;
    releaseAs?: string;
    releaseType?: ReleaseType;
    releasePre?: boolean;
    releasePreTag?: string;
}
export declare const ReleaseBumpConfigDefault: ReleaseBumpConfig;
export declare const VERSIONS: readonly ["major", "minor", "patch"];
export declare const getCommits: (bumper: Bumper) => Promise<Commit[]>;
export declare const isReleaseType: (value: string) => value is semver.ReleaseType;
export declare const isInPrerelease: (version: string) => boolean;
export declare const genVersionByCommits: (params: {
    finalUserConfig: FinalUserConfig;
    data: {
        oldVersion: string;
    };
}) => Promise<BumpResult>;
export interface BumpResult {
    oldVersion: string;
    version: string;
    releaseType?: ReleaseType;
    commits?: Commit[];
}
export declare const genVersion: (params: {
    finalUserConfig: FinalUserConfig;
}) => Promise<BumpResult>;
export declare const bump: (params: {
    finalUserConfig: FinalUserConfig;
}) => Promise<BumpResult>;
