import { Logger } from '@n8n/backend-common';
import { FolderRepository, type TagEntity, TagRepository, type User } from '@n8n/db';
import { EventService } from '../../events/event.service';
import { SourceControlGitService } from './source-control-git.service.ee';
import { SourceControlImportService } from './source-control-import.service.ee';
import { SourceControlPreferencesService } from './source-control-preferences.service.ee';
import type { StatusExportableCredential } from './types/exportable-credential';
import type { ExportableFolder } from './types/exportable-folders';
import type { ExportableProjectWithFileName } from './types/exportable-project';
import { ExportableVariable } from './types/exportable-variable';
import type { SourceControlGetStatus } from './types/source-control-get-status';
import type { SourceControlWorkflowVersionId } from './types/source-control-workflow-version-id';
export declare class SourceControlStatusService {
    private readonly logger;
    private readonly gitService;
    private readonly sourceControlImportService;
    private readonly sourceControlPreferencesService;
    private readonly tagRepository;
    private readonly folderRepository;
    private readonly eventService;
    constructor(logger: Logger, gitService: SourceControlGitService, sourceControlImportService: SourceControlImportService, sourceControlPreferencesService: SourceControlPreferencesService, tagRepository: TagRepository, folderRepository: FolderRepository, eventService: EventService);
    private get gitFolder();
    getStatus(user: User, options: SourceControlGetStatus): Promise<{
        type: "workflow" | "project" | "credential" | "file" | "tags" | "variables" | "folders";
        status: "unknown" | "new" | "modified" | "deleted" | "created" | "renamed" | "conflicted" | "ignored" | "staged";
        file: string;
        id: string;
        name: string;
        updatedAt: string;
        location: "local" | "remote";
        conflict: boolean;
        pushed?: boolean | undefined;
        owner?: {
            type: "personal" | "team";
            projectId: string;
            projectName: string;
        } | undefined;
    }[] | {
        wfRemoteVersionIds: SourceControlWorkflowVersionId[];
        wfLocalVersionIds: SourceControlWorkflowVersionId[];
        wfMissingInLocal: SourceControlWorkflowVersionId[];
        wfMissingInRemote: SourceControlWorkflowVersionId[];
        wfModifiedInEither: SourceControlWorkflowVersionId[];
        credMissingInLocal: StatusExportableCredential[];
        credMissingInRemote: StatusExportableCredential[];
        credModifiedInEither: StatusExportableCredential[];
        varMissingInLocal: ExportableVariable[];
        varMissingInRemote: import("@n8n/db").Variables[];
        varModifiedInEither: ExportableVariable[];
        tagsMissingInLocal: TagEntity[];
        tagsMissingInRemote: TagEntity[];
        tagsModifiedInEither: TagEntity[];
        mappingsMissingInLocal: import("@n8n/db").WorkflowTagMapping[];
        mappingsMissingInRemote: import("@n8n/db").WorkflowTagMapping[];
        foldersMissingInLocal: ExportableFolder[];
        foldersMissingInRemote: ExportableFolder[];
        foldersModifiedInEither: ExportableFolder[];
        projectsRemote: ExportableProjectWithFileName[];
        projectsLocal: ExportableProjectWithFileName[];
        projectsMissingInLocal: ExportableProjectWithFileName[];
        projectsMissingInRemote: ExportableProjectWithFileName[];
        projectsModifiedInEither: ExportableProjectWithFileName[];
        sourceControlledFiles: {
            type: "workflow" | "project" | "credential" | "file" | "tags" | "variables" | "folders";
            status: "unknown" | "new" | "modified" | "deleted" | "created" | "renamed" | "conflicted" | "ignored" | "staged";
            file: string;
            id: string;
            name: string;
            updatedAt: string;
            location: "local" | "remote";
            conflict: boolean;
            pushed?: boolean | undefined;
            owner?: {
                type: "personal" | "team";
                projectId: string;
                projectName: string;
            } | undefined;
        }[];
    }>;
    private resetWorkfolder;
    private getStatusWorkflows;
    private getStatusCredentials;
    private getStatusVariables;
    private getStatusTagsMappings;
    private getStatusFoldersMapping;
    private getStatusProjects;
    private areVariablesEqual;
    private isProjectModified;
    private isProjectIconModified;
}
