import type { SourceControlledFile } from '@n8n/api-types';
import { ErrorReporter, InstanceSettings, Logger } from 'n8n-core';
import { ActiveWorkflowManager } from '../../active-workflow-manager';
import { CredentialsService } from '../../credentials/credentials.service';
import type { TagEntity } from '../../databases/entities/tag-entity';
import type { User } from '../../databases/entities/user';
import type { Variables } from '../../databases/entities/variables';
import type { WorkflowTagMapping } from '../../databases/entities/workflow-tag-mapping';
import { CredentialsRepository } from '../../databases/repositories/credentials.repository';
import { FolderRepository } from '../../databases/repositories/folder.repository';
import { ProjectRepository } from '../../databases/repositories/project.repository';
import { SharedCredentialsRepository } from '../../databases/repositories/shared-credentials.repository';
import { SharedWorkflowRepository } from '../../databases/repositories/shared-workflow.repository';
import { TagRepository } from '../../databases/repositories/tag.repository';
import { UserRepository } from '../../databases/repositories/user.repository';
import { VariablesRepository } from '../../databases/repositories/variables.repository';
import { WorkflowTagMappingRepository } from '../../databases/repositories/workflow-tag-mapping.repository';
import { WorkflowRepository } from '../../databases/repositories/workflow.repository';
import { TagService } from '../../services/tag.service';
import { WorkflowService } from '../../workflows/workflow.service';
import type { ExportableCredential } from './types/exportable-credential';
import type { ExportableFolder } from './types/exportable-folders';
import type { SourceControlWorkflowVersionId } from './types/source-control-workflow-version-id';
import { VariablesService } from '../variables/variables.service.ee';
export declare class SourceControlImportService {
    private readonly logger;
    private readonly errorReporter;
    private readonly variablesService;
    private readonly activeWorkflowManager;
    private readonly credentialsRepository;
    private readonly projectRepository;
    private readonly tagRepository;
    private readonly sharedWorkflowRepository;
    private readonly sharedCredentialsRepository;
    private readonly userRepository;
    private readonly variablesRepository;
    private readonly workflowRepository;
    private readonly workflowTagMappingRepository;
    private readonly workflowService;
    private readonly credentialsService;
    private readonly tagService;
    private readonly folderRepository;
    private gitFolder;
    private workflowExportFolder;
    private credentialExportFolder;
    constructor(logger: Logger, errorReporter: ErrorReporter, variablesService: VariablesService, activeWorkflowManager: ActiveWorkflowManager, credentialsRepository: CredentialsRepository, projectRepository: ProjectRepository, tagRepository: TagRepository, sharedWorkflowRepository: SharedWorkflowRepository, sharedCredentialsRepository: SharedCredentialsRepository, userRepository: UserRepository, variablesRepository: VariablesRepository, workflowRepository: WorkflowRepository, workflowTagMappingRepository: WorkflowTagMappingRepository, workflowService: WorkflowService, credentialsService: CredentialsService, tagService: TagService, folderRepository: FolderRepository, instanceSettings: InstanceSettings);
    getRemoteVersionIdsFromFiles(): Promise<SourceControlWorkflowVersionId[]>;
    getLocalVersionIdsFromDb(): Promise<SourceControlWorkflowVersionId[]>;
    getRemoteCredentialsFromFiles(): Promise<Array<ExportableCredential & {
        filename: string;
    }>>;
    getLocalCredentialsFromDb(): Promise<Array<ExportableCredential & {
        filename: string;
    }>>;
    getRemoteVariablesFromFile(): Promise<Variables[]>;
    getLocalVariablesFromDb(): Promise<Variables[]>;
    getRemoteFoldersAndMappingsFromFile(): Promise<{
        folders: ExportableFolder[];
    }>;
    getLocalFoldersAndMappingsFromDb(): Promise<{
        folders: ExportableFolder[];
    }>;
    getRemoteTagsAndMappingsFromFile(): Promise<{
        tags: TagEntity[];
        mappings: WorkflowTagMapping[];
    }>;
    getLocalTagsAndMappingsFromDb(): Promise<{
        tags: TagEntity[];
        mappings: WorkflowTagMapping[];
    }>;
    importWorkflowFromWorkFolder(candidates: SourceControlledFile[], userId: string): Promise<{
        id: string;
        name: string;
    }[]>;
    importCredentialsFromWorkFolder(candidates: SourceControlledFile[], userId: string): Promise<{
        id: string;
        name: string;
        type: string;
    }[]>;
    importTagsFromWorkFolder(candidate: SourceControlledFile): Promise<{
        tags: TagEntity[];
        mappings: WorkflowTagMapping[];
    } | undefined>;
    importFoldersFromWorkFolder(user: User, candidate: SourceControlledFile): Promise<{
        folders: ExportableFolder[];
    } | undefined>;
    importVariablesFromWorkFolder(candidate: SourceControlledFile, valueOverrides?: {
        [key: string]: string;
    }): Promise<{
        imported: string[];
    } | undefined>;
    deleteWorkflowsNotInWorkfolder(user: User, candidates: SourceControlledFile[]): Promise<void>;
    deleteCredentialsNotInWorkfolder(user: User, candidates: SourceControlledFile[]): Promise<void>;
    deleteVariablesNotInWorkfolder(candidates: SourceControlledFile[]): Promise<void>;
    deleteTagsNotInWorkfolder(candidates: SourceControlledFile[]): Promise<void>;
    deleteFoldersNotInWorkfolder(candidates: SourceControlledFile[]): Promise<void>;
    private findOrCreateOwnerProject;
}
