import { CreateProjectDto, DeleteProjectDto, UpdateProjectDto, AddUsersToProjectDto, ChangeUserRoleInProject, ListProjectsQueryDto } from '@n8n/api-types';
import { AuthenticatedRequest, ProjectRepository } from '@n8n/db';
import type { Scope } from '@n8n/permissions';
import { Response } from 'express';
import { EventService } from '../events/event.service';
import { ProvisioningService } from '../modules/provisioning.ee/provisioning.service.ee';
import type { ProjectRequest } from '../requests';
import { ProjectService } from '../services/project.service.ee';
import { UserManagementMailer } from '../user-management/email';
export declare class ProjectController {
    private readonly projectsService;
    private readonly projectRepository;
    private readonly eventService;
    private readonly userManagementMailer;
    private readonly provisioningService;
    constructor(projectsService: ProjectService, projectRepository: ProjectRepository, eventService: EventService, userManagementMailer: UserManagementMailer, provisioningService: ProvisioningService);
    getAllProjects(req: AuthenticatedRequest, res: Response, payload: ListProjectsQueryDto): Promise<Response<any, Record<string, any>> | import("@n8n/db").Project[]>;
    getProjectCounts(): Promise<Record<"personal" | "team", number>>;
    createProject(req: AuthenticatedRequest, _res: Response, payload: CreateProjectDto): Promise<{
        role: string;
        scopes: Scope[];
        name: string;
        type: "personal" | "team";
        icon: {
            type: "emoji" | "icon";
            value: string;
        } | null;
        description: string | null;
        projectRelations: import("@n8n/db").ProjectRelation[];
        sharedCredentials: import("@n8n/db").SharedCredentials[];
        sharedWorkflows: import("@n8n/db").SharedWorkflow[];
        secretsProviderAccess: import("@n8n/db").ProjectSecretsProviderAccess[];
        variables: import("@n8n/db").Variables[];
        roleMappingRules: import("@n8n/db").RoleMappingRule[];
        creatorId: string | null;
        creator?: import("@n8n/typeorm").Relation<import("@n8n/db").User>;
        id: string;
        generateId(): void;
        createdAt: Date;
        updatedAt: Date;
        setUpdateDate(): void;
    }>;
    getMyProjects(req: AuthenticatedRequest, _res: Response): Promise<ProjectRequest.GetMyProjectsResponse>;
    getPersonalProject(req: AuthenticatedRequest): Promise<{
        scopes: Scope[];
        name: string;
        type: "personal" | "team";
        icon: {
            type: "emoji" | "icon";
            value: string;
        } | null;
        description: string | null;
        projectRelations: import("@n8n/db").ProjectRelation[];
        sharedCredentials: import("@n8n/db").SharedCredentials[];
        sharedWorkflows: import("@n8n/db").SharedWorkflow[];
        secretsProviderAccess: import("@n8n/db").ProjectSecretsProviderAccess[];
        variables: import("@n8n/db").Variables[];
        roleMappingRules: import("@n8n/db").RoleMappingRule[];
        creatorId: string | null;
        creator?: import("@n8n/typeorm").Relation<import("@n8n/db").User>;
        id: string;
        generateId(): void;
        createdAt: Date;
        updatedAt: Date;
        setUpdateDate(): void;
    }>;
    getProject(req: AuthenticatedRequest, _res: Response, projectId: string): Promise<ProjectRequest.ProjectWithRelations>;
    updateProject(_req: AuthenticatedRequest, _res: Response, payload: UpdateProjectDto, projectId: string): Promise<void>;
    addProjectUsers(req: AuthenticatedRequest, res: Response, projectId: string, payload: AddUsersToProjectDto): Promise<Response<any, Record<string, any>>>;
    changeProjectUserRole(req: AuthenticatedRequest, res: Response, projectId: string, userId: string, body: ChangeUserRoleInProject): Promise<Response<any, Record<string, any>>>;
    deleteProjectUser(req: AuthenticatedRequest, res: Response, projectId: string, userId: string): Promise<Response<any, Record<string, any>>>;
    deleteProject(req: AuthenticatedRequest, _res: Response, query: DeleteProjectDto, projectId: string): Promise<void>;
}
