import { QueueConfiguration, QueueState, QueueUsage, QueueItem, QueueStatus } from './types';
/**
 * Central utility handling all queue storage and scheduling logic.
 * All data is persisted via the piece `context.store` (PROJECT scope).
 */
export declare class QueueManager {
    static getQueueConfiguration(context: any, queueId: string): Promise<QueueConfiguration | null>;
    /**
     * NOTE: Activepieces key-value store cannot list keys, so a full “list queues”
     *       is not possible without maintaining an external index. Stub returns [].
     */
    static listAllQueues(): Promise<QueueConfiguration[]>;
    static getQueueState(context: any, queueId: string): Promise<QueueState>;
    static getQueueUsage(context: any, queueId: string): Promise<QueueUsage>;
    static getQueueStatus(context: any, queueId: string): Promise<QueueStatus | null>;
    /** Check daily/hourly rate limits and return availability. */
    static checkRateLimits(context: any, queueId: string): Promise<{
        canSend: boolean;
        nextAvailableTime?: number;
        dailyRemaining?: number;
        hourlyRemaining?: number;
    }>;
    static calculateDelayMs(delayType: 'fixed' | 'random', delayUnit: 'seconds' | 'minutes' | 'hours' | 'days', delayValue?: number, delayMin?: number, delayMax?: number): number;
    static calculateItemDelay(context: any, queue: QueueConfiguration, limits: any): Promise<{
        delayMs: number;
        limitDelay: number;
        activeHoursDelay: number;
    }>;
    static isWithinActiveHours(activeHours: any): boolean;
    static getNextActiveTime(activeHours: any): number;
    static getNextActiveWindow(activeHours: any): string;
    static addItemToQueue(context: any, queueId: string, targetAction: string, actionConfig: any, delayMs: number): Promise<{
        queueItemId: string;
        releaseTime: number;
    }>;
    static getQueueItem(context: any, queueItemId: string): Promise<QueueItem | null>;
    static updateItemStatus(context: any, queueItemId: string, status: QueueItem['status'], error?: string): Promise<void>;
    static validateQueuePosition(context: any, queueItemId: string): Promise<{
        isValid: boolean;
        shouldRepause: boolean;
        newReleaseTime?: number;
        reason?: string;
    }>;
    static checkIfNextInQueue(context: any, currentItem: QueueItem): Promise<boolean>;
    static markExecutionComplete(context: any, queueId: string, queueItemId: string): Promise<void>;
    static cleanupQueueItem(context: any, queueId: string, queueItemId: string, releaseTime: number): Promise<void>;
    static incrementUsageCounters(context: any, queueId: string): Promise<void>;
    /**
     * Get all items in a queue with their details
     */
    static listQueueItems(context: any, queueId: string): Promise<QueueItem[]>;
    /**
     * Clear all items from a queue
     */
    static clearQueue(context: any, queueId: string): Promise<{
        clearedCount: number;
        queueId: string;
    }>;
    /**
     * Get complete queue information including configuration and status
     */
    static getQueueDetails(context: any, queueId: string): Promise<{
        configuration: QueueConfiguration | null;
        status: QueueStatus | null;
        state: QueueState;
        usage: QueueUsage;
    }>;
}
