import { EQueueOperationalState } from '../../queue-manager/index.js';
export declare enum ESystemStateTransitionReason {
    SYSTEM_INIT = "SYSTEM_INIT",
    RECOVERY = "RECOVERY",
    PURGE_QUEUE_START = "PURGE_QUEUE_START",
    PURGE_QUEUE_CANCEL = "PURGE_QUEUE_CANCEL",
    PURGE_QUEUE_FAIL = "PURGE_QUEUE_FAIL",
    PURGE_QUEUE_COMPLETE = "PURGE_QUEUE_COMPLETE"
}
export declare enum EStateTransitionReason {
    MANUAL = "MANUAL",
    SCHEDULED = "SCHEDULED",
    EMERGENCY = "EMERGENCY",
    PERFORMANCE = "PERFORMANCE",
    ERROR = "ERROR",
    CONFIG_CHANGE = "CONFIG_CHANGE",
    TESTING = "TESTING",
    OTHER = "OTHER"
}
export type EQueueStateTransitionReason = ESystemStateTransitionReason | EStateTransitionReason;
export type TQueueStateTransitionOptions = Partial<Omit<IQueueStateTransition, 'from' | 'to' | 'timestamp'>>;
export type TQueueStateTransitionUserOptions = Omit<TQueueStateTransitionOptions, 'lockId' | 'lockOwner'> & {
    reason?: EStateTransitionReason;
};
export declare enum EQueueStateLockOwner {
    PURGE_JOB = 0
}
export interface IQueueStateTransition {
    from: EQueueOperationalState | null;
    to: EQueueOperationalState;
    reason: EQueueStateTransitionReason;
    timestamp: number;
    description?: string;
    lockId?: string;
    lockOwner?: EQueueStateLockOwner;
    metadata?: Record<string, unknown>;
}
//# sourceMappingURL=queue-state.d.ts.map