import { type Class, ErrorReporter } from 'n8n-core';
import { Logger } from 'n8n-core';
import { UnexpectedError } from 'n8n-workflow';
type HandlerFn = () => Promise<void> | void;
export type ServiceClass = Class<Record<string, HandlerFn>>;
export interface ShutdownHandler {
    serviceClass: ServiceClass;
    methodName: string;
}
export declare class ComponentShutdownError extends UnexpectedError {
    constructor(componentName: string, cause: Error);
}
export declare class ShutdownService {
    private readonly logger;
    private readonly errorReporter;
    private readonly handlersByPriority;
    private shutdownPromise;
    constructor(logger: Logger, errorReporter: ErrorReporter);
    register(priority: number, handler: ShutdownHandler): void;
    validate(): void;
    shutdown(): void;
    waitForShutdown(): Promise<void>;
    isShuttingDown(): boolean;
    private startShutdown;
    private shutdownComponent;
}
export {};
