import { FinalUserConfig } from "../../utils/config.mts";
import { ReleaseBumpConfig } from "./bump.mts";
import { ReleaseChangelogConfig } from "./changelog.mts";
import { ReleaseCommitConfig } from "./commit.mts";
import { ReleaseTagConfig } from "./tag.mts";
import { ReleaseBranchConfig } from "./branch.mts";
import { Command } from "./../../core/command.mts";
import { MaybePromise } from "./../../utils/types.mts";
import { ReleasePushConfig } from "./push.mts";
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>;
}