/**
 * Generated by tsnapi — public API snapshot of `@devframes/plugin-git`
 */
// #region Interfaces
export interface Branch {
  name: string;
  current: boolean;
  sha: string;
  upstream: string | null;
  subject: string;
  ahead: number;
  behind: number;
  gone: boolean;
}
export interface Commit {
  hash: string;
  shortHash: string;
  author: string;
  email: string;
  date: number;
  subject: string;
  body: string;
  refs: string[];
  parents: string[];
}
export interface CommitArgs {
  message: string;
}
export interface CommitDetail {
  isRepo: boolean;
  found: boolean;
  hash: string;
  shortHash: string;
  author: string;
  email: string;
  date: number;
  committer: string;
  committerEmail: string;
  commitDate: number;
  subject: string;
  body: string;
  parents: string[];
  refs: string[];
  files: CommitFile[];
  totalAdditions: number;
  totalDeletions: number;
  patch: string | null;
  truncated: boolean;
}
export interface CommitFile {
  path: string;
  additions: number;
  deletions: number;
  binary: boolean;
  status: FileStatusCode;
}
export interface CommitResult {
  ok: boolean;
  hash: string | null;
  message: string;
  status: GitStatus;
}
export interface DiffArgs {
  path?: string;
  staged?: boolean;
}
export interface DiffFile {
  path: string;
  additions: number;
  deletions: number;
  binary: boolean;
}
export interface GitBranches {
  isRepo: boolean;
  current: string | null;
  branches: Branch[];
}
export interface GitDevframeOptions {
  repoRoot?: string;
  basePath?: string;
  distDir?: string;
  port?: number;
  write?: boolean;
  auth?: boolean;
}
export interface GitDiff {
  isRepo: boolean;
  staged: boolean;
  path: string | null;
  files: DiffFile[];
  totalAdditions: number;
  totalDeletions: number;
  patch: string | null;
  truncated: boolean;
}
export interface GitLog {
  isRepo: boolean;
  commits: Commit[];
  limit: number;
  skip: number;
  hasMore: boolean;
}
export interface GitStatus {
  isRepo: boolean;
  root: string | null;
  branch: string | null;
  detached: boolean;
  head: string | null;
  upstream: string | null;
  ahead: number;
  behind: number;
  staged: StatusFileEntry[];
  unstaged: StatusFileEntry[];
  untracked: string[];
  clean: boolean;
  canWrite: boolean;
}
export interface LogArgs {
  limit?: number;
  skip?: number;
  ref?: string;
}
export interface ShowArgs {
  hash: string;
  patch?: boolean;
}
export interface StageArgs {
  paths: string[];
}
export interface StatusFileEntry {
  path: string;
  from?: string;
  status: FileStatusCode;
}
export interface UnstageArgs {
  paths: string[];
}
// #endregion

// #region Types
export type FileStatusCode = 'modified' | 'added' | 'deleted' | 'renamed' | 'copied' | 'type-changed' | 'unmerged' | 'unknown';
// #endregion

// #region Functions
export declare function createGitDevframe(_?: GitDevframeOptions): DevframeDefinition;
// #endregion

// #region Default Export
declare const _default: DevframeDefinition;
export default _default
// #endregion