import type { IGitCommitInfo } from './types';
/**
 * 判断指定路径（默认 `process.cwd()`）是否在 git 仓库中。
 *
 * 实现方式：从给定目录起向上递归查找 `.git`（目录或文件，后者用于 worktree / submodule 场景）。
 * 不会执行任何 git 命令，**纯文件系统判断**，零副作用、不会刷屏报错。
 *
 * 结果会按绝对路径缓存，重复调用近乎零开销。
 *
 * @param root 起始目录，默认为 `process.cwd()`
 * @returns 是否在 git 仓库内
 *
 * @example
 * ```ts
 * if (isInGitRepo()) {
 *   const branch = getGitCurBranch();
 * }
 * ```
 */
export declare function isInGitRepo(root?: string): boolean;
/**
 * 获取当前分支
 * @returns {string} 分支名称
 *
 * @example
 *
 * getGitCurBranch()
 *
 * // => master
 */
export declare function getGitCurBranch(root?: string, useCache?: boolean): string;
/**
 * 获取提交信息
 * @param {string} root 根路径
 * @param {boolean} mergeCommit 是否包含 merge 的提交
 * @param {boolean} splitMessage 是否去掉提交信息的前缀
 * @returns {string} 提交信息
 *
 * @example
 * ```ts
 * getGitCommitMessage()
 * // '优化一部分文档'
 * ```
 */
export declare function getGitCommitMessage(root?: string, mergeCommit?: boolean, splitMessage?: boolean, useCache?: boolean): string;
/**
 * 获取提交信息
 * @param {string} root 根路径
 * @param {boolean} mergeCommit 是否包含 merge 的提交
 * @param {boolean} splitMessage 是否去掉提交信息的前缀
 * @returns {Object} 提交对象
 *
 * @example
 * ```ts
 * getGitCommitInfo()
 * {
 *   author: 'novlan1',
 *   message: ' 优化一部分文档',
 *   hash: '0cb71f9',
 *   date: '2022-10-02 10:34:31 +0800',
 *   timeStamp: '1664678071',
 *   branch: 'master'
 * }
 * ```
 */
export declare function getGitCommitInfo(root?: string, mergeCommit?: boolean, splitMessage?: boolean, useCache?: boolean): IGitCommitInfo;
/**
 * 获取最新tag
 * @returns {string} 最新tag
 * @example
 * ```ts
 * getGitLastTag();
 * // 'v1.2.3'
 *
 * // 指定仓库路径
 * getGitLastTag('/path/to/repo');
 * ```
 */
export declare function getGitLastTag(root?: string): string;
/**
 * 获取tag到head的提交数目
 * @param {string} tag git标签
 * @returns {string} tag至今的提交数目
 * @example
 * ```ts
 * getGitCommitsBeforeTag('v1.0.0');
 * // '12'
 *
 * // 指定仓库路径
 * getGitCommitsBeforeTag('v1.0.0', '/path/to/repo');
 * ```
 */
export declare function getGitCommitsBeforeTag(tag: string, root?: string): string;
/**
 * 获取打标签的时间
 * @private
 * @param {string} tag git标签
 * @returns {string} 标签时间
 * @example
 * ```ts
 * getGitTagTime('v1.0.0');
 * // '2023-09-12 10:30:45 +0800'
 * ```
 */
export declare function getGitTagTime(tag: string, root?: string): string;
/**
 * 获取当前用户
 * @param isPriorGit - 是否优先使用git用户信息
 * @returns user
 * @example
 * ```ts
 * // 默认优先 process.env.VUE_APP_AUTHOR，其次 git config user.name
 * getGitAuthor();
 * // 'novlan1'
 *
 * // 优先使用 git 配置中的 user.name
 * getGitAuthor(true);
 * ```
 */
export declare function getGitAuthor(isPriorGit?: boolean, root?: string, useCache?: boolean): string;
