import { Logger } from '@n8n/backend-common'; import type { User } from '@n8n/db'; import type { CommitResult, DiffResult, FetchResult, PullResult, PushResult, SimpleGit, StatusResult } from 'simple-git'; import { OwnershipService } from '../../services/ownership.service'; import { SourceControlPreferencesService } from './source-control-preferences.service.ee'; import type { SourceControlPreferences } from './types/source-control-preferences'; export declare class SourceControlGitService { private readonly logger; private readonly ownershipService; private readonly sourceControlPreferencesService; git: SimpleGit | null; private gitOptions; constructor(logger: Logger, ownershipService: OwnershipService, sourceControlPreferencesService: SourceControlPreferencesService); private preInitCheck; initService(options: { sourceControlPreferences: SourceControlPreferences; gitFolder: string; sshFolder: string; sshKeyName: string; }): Promise; setGitCommand(gitFolder?: string, sshFolder?: string): Promise; resetService(): void; private checkRepositorySetup; private hasRemote; initRepository(sourceControlPreferences: Pick, user: User, options?: { tolerateTrackingFetchFailure?: boolean; }): Promise; private trackRemoteIfReady; private ensureBranchSetup; setGitUserDetails(name: string, email: string): Promise; getBranches(): Promise<{ branches: string[]; currentBranch: string; }>; setBranch(branch: string): Promise<{ branches: string[]; currentBranch: string; }>; getCurrentBranch(): Promise<{ current: string; remote: string; }>; diffRemote(): Promise; diffLocal(): Promise; fetch(): Promise; pull(options?: { ffOnly: boolean; }): Promise; push(options?: { force: boolean; branch: string; }): Promise; stage(files: Set, deletedFiles?: Set): Promise; resetBranch(options?: { hard: boolean; target: string; }): Promise; commit(message: string): Promise; status(): Promise; getHistoricallyTrackedFiles(directory: string): Promise>; getFileContent(filePath: string, commit?: string): Promise; }