import type { CommitMessage } from '../../domain/entity/commit-message.entity'; /** * Interface for commit repository operations */ export interface ICommitRepository { /** * Create a commit with the given message * @param message - The commit message * @returns Promise that resolves when the commit is created */ commit(message: CommitMessage): Promise; /** * Get the current branch name * @returns Promise resolving to the current branch name */ getCurrentBranch(): Promise; /** * Get the staged diff * @returns Promise resolving to the staged diff */ getStagedDiff(): Promise; /** * Get the list of staged files * @returns Promise resolving to the list of staged files */ getStagedFiles(): Promise>; /** * Get the ticket ID from the current branch name * Extraction behavior is configured via commitlint-ai ticket settings * @returns Promise resolving to the ticket ID if found, undefined otherwise */ getTicketIdFromBranch(): Promise; /** * Check if there are staged changes * @returns Promise resolving to true if there are staged changes */ hasStagedChanges(): Promise; }