import type { CreateFolderDto, DeleteFolderDto, UpdateFolderDto } from '@n8n/api-types';
import type { EntityManager } from '@n8n/typeorm';
import { Folder } from '../databases/entities/folder';
import { FolderTagMappingRepository } from '../databases/repositories/folder-tag-mapping.repository';
import { FolderRepository } from '../databases/repositories/folder.repository';
import { WorkflowRepository } from '../databases/repositories/workflow.repository';
import type { ListQuery } from '../requests';
export interface SimpleFolderNode {
    id: string;
    name: string;
    children: SimpleFolderNode[];
}
export declare class FolderService {
    private readonly folderRepository;
    private readonly folderTagMappingRepository;
    private readonly workflowRepository;
    constructor(folderRepository: FolderRepository, folderTagMappingRepository: FolderTagMappingRepository, workflowRepository: WorkflowRepository);
    createFolder({ parentFolderId, name }: CreateFolderDto, projectId: string): Promise<{
        name: string;
        parentFolderId: string | null;
        parentFolder: Folder | null;
        subFolders: Folder[];
        workflows: import("../databases/entities/workflow-entity").WorkflowEntity[];
        tags: import("../databases/entities/tag-entity").TagEntity[];
        id: string;
        createdAt: Date;
        updatedAt: Date;
        workflowCount: boolean;
        subFolderCount: number;
    }>;
    updateFolder(folderId: string, projectId: string, { name, tagIds, parentFolderId }: UpdateFolderDto): Promise<void>;
    findFolderInProjectOrFail(folderId: string, projectId: string, em?: EntityManager): Promise<Folder>;
    getFolderTree(folderId: string, projectId: string): Promise<SimpleFolderNode[]>;
    deleteFolder(folderId: string, projectId: string, { transferToFolderId }: DeleteFolderDto): Promise<void>;
    transferAllFoldersToProject(fromProjectId: string, toProjectId: string, tx?: EntityManager): Promise<import("@n8n/typeorm").UpdateResult>;
    private transformFolderPathToTree;
    getFolderAndWorkflowCount(folderId: string, projectId: string): Promise<{
        totalSubFolders: number;
        totalWorkflows: number;
    }>;
    getManyAndCount(projectId: string, options: ListQuery.Options): Promise<[import("../databases/entities/folder").FolderWithWorkflowAndSubFolderCount[], number]>;
}
