import semver, { type ReleaseType } from "semver";
import type { Commit } from "conventional-commits-parser";
import { FinalUserConfig } from "../../utils/config.mts";
import { MaybePromise } from "../../utils/types.mts";
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>;