import { type AgentConfigValidationResponse, type AgentVersionListItemDto } from '@n8n/api-types';
import { Logger } from '@n8n/backend-common';
import type { User } from '@n8n/db';
import { CredentialsService } from '../../credentials/credentials.service';
import { EventService } from '../../events/event.service';
import { Telemetry } from '../../telemetry';
import { AgentCustomToolsService } from './agent-custom-tools.service';
import { AgentModificationTelemetryService, type AgentActor } from './agent-modification-telemetry.service';
import { AgentRuntimeCacheService } from './agent-runtime-cache.service';
import { AgentSetupCompletionService } from './agent-setup-completion.service';
import { AgentValidationService } from './agent-validation.service';
import type { AgentHistory } from './entities/agent-history.entity';
import type { AgentTaskSnapshot } from './entities/agent-task-snapshot.entity';
import type { Agent } from './entities/agent.entity';
import { AgentHistoryRepository } from './repositories/agent-history.repository';
import { AgentTaskSnapshotRepository } from './repositories/agent-task-snapshot.repository';
import { AgentTaskRepository } from './repositories/agent-task.repository';
import { AgentRepository } from './repositories/agent.repository';
import { SubAgentCleanupService } from './sub-agents/sub-agent-cleanup.service';
export type AgentPublishTrigger = 'explicit' | 'republish';
export interface AgentPublishEmitter {
    by: AgentActor;
    trigger: Exclude<AgentPublishTrigger, 'republish'>;
}
export type ValidAgentConfigValidationResponse = AgentConfigValidationResponse & {
    status: 'valid';
};
export interface PublishAgentResult {
    agent: Agent;
    draftValidation?: ValidAgentConfigValidationResponse;
}
export declare class AgentPublishService {
    private readonly logger;
    private readonly agentRepository;
    private readonly agentHistoryRepository;
    private readonly agentTaskSnapshotRepository;
    private readonly agentTaskRepository;
    private readonly customToolsService;
    private readonly runtimeCacheService;
    private readonly subAgentCleanupService;
    private readonly agentValidationService;
    private readonly credentialsService;
    private readonly telemetry;
    private readonly eventService;
    private readonly setupCompletionService;
    private readonly modificationTelemetry;
    constructor(logger: Logger, agentRepository: AgentRepository, agentHistoryRepository: AgentHistoryRepository, agentTaskSnapshotRepository: AgentTaskSnapshotRepository, agentTaskRepository: AgentTaskRepository, customToolsService: AgentCustomToolsService, runtimeCacheService: AgentRuntimeCacheService, subAgentCleanupService: SubAgentCleanupService, agentValidationService: AgentValidationService, credentialsService: CredentialsService, telemetry: Telemetry, eventService: EventService, setupCompletionService: AgentSetupCompletionService, modificationTelemetry: AgentModificationTelemetryService);
    publishAgent(agentId: string, projectId: string, user: User, emitter: AgentPublishEmitter, versionId?: string): Promise<PublishAgentResult>;
    private assertPublishable;
    unpublishAgent(agentId: string, projectId: string, user: User, by: AgentActor): Promise<Agent>;
    private trackPublished;
    private trackUnpublished;
    revertToPublishedAgent(agentId: string, projectId: string, user: User, modifiedBy: AgentActor): Promise<Agent>;
    revertToVersion(agentId: string, projectId: string, versionId: string, user: User, modifiedBy: AgentActor): Promise<Agent>;
    private recordRevert;
    hasPublishHistory(agentId: string): Promise<boolean>;
    getVersion(agentId: string, projectId: string, versionId: string): Promise<{
        agent: Agent;
        version: AgentHistory;
        tasks: AgentTaskSnapshot[];
    }>;
    listPublishHistory(agentId: string, projectId: string, take: number, skip: number): Promise<AgentVersionListItemDto[]>;
    private snapshotConfiguredTasks;
    private pickConfiguredSkillBodies;
    private restoreTasksFromSnapshot;
}
