import type { LeaderElectionClient } from '../scaling/leader-election-client';
import type { Logger } from '@n8n/backend-common';
import type { ErrorReporter, InstanceSettings } from 'n8n-core';
import type { MultiMainStrategy } from './multi-main-setup.types';
type EmitFn = (event: 'leader-takeover' | 'leader-stepdown') => void;
export declare class MultiMainSetupV2 implements MultiMainStrategy {
    private readonly logger;
    private readonly instanceSettings;
    private readonly errorReporter;
    private readonly client;
    private readonly emit;
    private leaderCheckInProgress;
    private get hostId();
    constructor(logger: Logger, instanceSettings: InstanceSettings, errorReporter: ErrorReporter, client: LeaderElectionClient, emit: EmitFn);
    init(): Promise<void>;
    shutdown(): Promise<void>;
    checkLeader(): Promise<void>;
    private checkAreWeStillLeader;
    private checkCanBecomeLeader;
    private takeOverAsLeader;
    private stepDownToFollower;
    fetchLeaderKey(): Promise<string | null>;
    private logRedisCommandFailure;
}
export {};
