import { Logger } from '@n8n/backend-common';
import type { User, WorkflowEntity } from '@n8n/db';
import { ProjectRepository } from '@n8n/db';
import { ProjectService } from '../../../../services/project.service.ee';
import { WorkflowService } from '../../../../workflows/workflow.service';
import type { PersistedWorkflowPlanItem } from './workflow-import.types';
import { WorkflowPublishingPolicy, type WorkflowPublishingBlockedReason, type WorkflowPublishingOutcome } from './workflow-publishing-policy.types';
export interface WorkflowPublishingResult {
    workflow: WorkflowEntity;
    publishing: WorkflowPublishingOutcome;
}
export declare class WorkflowPublisher {
    private readonly logger;
    private readonly projectRepository;
    private readonly projectService;
    private readonly workflowService;
    constructor(logger: Logger, projectRepository: ProjectRepository, projectService: ProjectService, workflowService: WorkflowService);
    assertCanPublish(user: User, projectId: string, policy: WorkflowPublishingPolicy, projectPendingCreation?: boolean): Promise<void>;
    apply(user: User, item: PersistedWorkflowPlanItem, workflow: WorkflowEntity, policy: WorkflowPublishingPolicy, publishBlocked: ReadonlyMap<string, WorkflowPublishingBlockedReason>): Promise<WorkflowPublishingResult>;
}
