import * as O from 'fp-ts/Option';
import { SimpleGit } from 'simple-git';
import * as Version from './Version';
import * as PackageJson from './PackageJson';
declare type MajorMinorVersion = Version.MajorMinorVersion;
declare type Version = Version.Version;
declare type Option<A> = O.Option<A>;
declare type PackageJson = PackageJson.PackageJson;
export declare const getReleaseBranchName: ({ major, minor }: MajorMinorVersion) => string;
export declare const enum BranchType {
    Main = "main",
    Feature = "feature",
    Hotfix = "hotfix",
    Spike = "spike",
    Release = "release",
    Dependabot = "dependabot"
}
export declare const enum BranchState {
    Feature = "feature",
    Hotfix = "hotfix",
    Spike = "spike",
    ReleaseReady = "releaseReady",
    ReleaseCandidate = "releaseCandidate"
}
interface ModuleChangelog {
    readonly changelogFile: string;
    readonly changelogFormat: 'keepachangelog' | 'none';
}
export interface Module extends ModuleChangelog {
    readonly packageJson: PackageJson;
    readonly packageJsonFile: string;
}
export interface BranchDetails {
    readonly currentBranch: string;
    readonly version: Version;
    readonly rootModule: Module;
    readonly branchType: BranchType;
    readonly branchState: BranchState;
    readonly workspacesEnabled: boolean;
    readonly modules: Record<string, Module>;
}
export declare const versionFromReleaseBranch: (branchName: string) => Promise<MajorMinorVersion>;
export declare const mainBranchName = "main";
export declare const getBranchType: (branchName: string) => Option<BranchType>;
export declare const isValidPrerelease: (actual: string | undefined, expected: string) => boolean;
export declare const readModules: (dir: string) => Promise<Record<string, Module>>;
export declare const readModulesIfEnabled: (dir: string, packageJson: {
    workspaces?: string[];
}) => Promise<{
    workspacesEnabled: boolean;
    modules: Record<string, Module>;
}>;
export declare const getBranchDetails: (dir: string) => Promise<BranchDetails>;
export declare const createReleaseBranch: (releaseBranchName: string, git: SimpleGit, dir: string) => Promise<void>;
export {};
//# sourceMappingURL=BranchLogic.d.ts.map