export interface GitBranch {
    name: string;
    current: boolean;
    remote?: string;
    lastCommit?: GitCommit;
    ahead: number;
    behind: number;
    protected?: boolean;
}
export interface GitCommit {
    hash: string;
    shortHash: string;
    author: string;
    email: string;
    date: string;
    message: string;
    files?: GitFile[];
    stats?: CommitStats;
}
export interface GitFile {
    path: string;
    status: 'added' | 'modified' | 'deleted' | 'renamed';
    additions: number;
    deletions: number;
    oldPath?: string;
}
export interface CommitStats {
    additions: number;
    deletions: number;
    files: number;
}
export interface GitTag {
    name: string;
    commit: string;
    author?: string;
    date?: string;
    message?: string;
}
export interface GitRemote {
    name: string;
    url: string;
    type: 'fetch' | 'push' | 'both';
}
export interface PullRequest {
    number: number;
    title: string;
    description: string;
    sourceBranch: string;
    targetBranch: string;
    author: string;
    created: string;
    updated?: string;
    status: 'open' | 'closed' | 'merged';
    reviewers?: Reviewer[];
    labels?: string[];
    checks?: StatusCheck[];
}
export interface Reviewer {
    username: string;
    status: 'pending' | 'approved' | 'changes_requested' | 'commented';
    comments?: number;
}
export interface StatusCheck {
    name: string;
    status: 'pending' | 'success' | 'failure' | 'error';
    description?: string;
    targetUrl?: string;
}
export interface GitWorkflow {
    name: string;
    type: 'feature' | 'release' | 'hotfix' | 'custom';
    sourceBranch: string;
    targetBranch: string;
    steps: WorkflowStep[];
    currentStep: number;
    status: 'active' | 'completed' | 'cancelled';
    metadata?: Record<string, any>;
}
export interface WorkflowStep {
    name: string;
    description: string;
    command?: string;
    validation?: string;
    completed: boolean;
    skippable?: boolean;
}
export interface GitStats {
    totalCommits: number;
    contributors: Contributor[];
    branches: number;
    tags: number;
    activity: ActivityStats;
}
export interface Contributor {
    name: string;
    email: string;
    commits: number;
    additions: number;
    deletions: number;
    firstCommit: string;
    lastCommit: string;
}
export interface ActivityStats {
    daily: Record<string, number>;
    weekly: Record<string, number>;
    monthly: Record<string, number>;
}
export interface GitConfig {
    user: {
        name?: string;
        email?: string;
    };
    remote: {
        origin?: string;
    };
    branch: {
        default?: string;
        autoSetupMerge?: boolean;
    };
    workflow: {
        featurePrefix?: string;
        releasePrefix?: string;
        hotfixPrefix?: string;
        commitTemplate?: string;
    };
}
export interface CommitConvention {
    type: 'conventional' | 'gitmoji' | 'custom';
    types?: string[];
    scopes?: string[];
    template?: string;
    validate?: boolean;
}
export interface GitHook {
    name: 'pre-commit' | 'commit-msg' | 'pre-push' | 'post-merge';
    script: string;
    enabled: boolean;
}
//# sourceMappingURL=types.d.ts.map