import { Logger } from '@n8n/backend-common'; import { GlobalConfig } from '@n8n/config'; import { ExecutionRepository } from '@n8n/db'; import { ErrorReporter, InstanceSettings } from 'n8n-core'; import { ActiveExecutions } from '../active-executions'; import { EventService } from '../events/event.service'; import { JobProcessor } from './job-processor'; import type { Job, JobData, JobStatus, JobId, JobFinishedProps } from './scaling.types'; export declare class ScalingService { private readonly logger; private readonly errorReporter; private readonly activeExecutions; private readonly jobProcessor; private readonly globalConfig; private readonly executionRepository; private readonly instanceSettings; private readonly eventService; private queue; private jobResults; constructor(logger: Logger, errorReporter: ErrorReporter, activeExecutions: ActiveExecutions, jobProcessor: JobProcessor, globalConfig: GlobalConfig, executionRepository: ExecutionRepository, instanceSettings: InstanceSettings, eventService: EventService); setupQueue(): Promise; setupWorker(concurrency: number): void; private reportJobProcessingError; stop(): Promise; private pauseQueue; private stopMain; private stopWorker; pingQueue(): Promise; popJobResult(executionId: string): JobFinishedProps | undefined; getPendingJobCounts(): Promise<{ active: number; waiting: number; }>; addJob(jobData: JobData, { priority }: { priority: number; }): Promise>; getJob(jobId: JobId): Promise | null>; findJobsByStatus(statuses: JobStatus[]): Promise[]>; stopJob(job: Job): Promise; getRunningJobsCount(): number; private registerListeners; private registerWorkerListeners; private registerMainOrWebhookListeners; private isJobMessage; private handleMcpResponse; private decodeWebhookResponse; private assertQueue; private assertWorker; private readonly jobCounters; private queueMetricsInterval; get isQueueMetricsEnabled(): boolean; private scheduleQueueMetrics; private stopQueueMetrics; private readonly queueRecoveryContext; private scheduleQueueRecovery; private stopQueueRecovery; recoverFromQueue(): Promise; private toErrorMsg; private hasValidJobData; }