import SessionsRequest from '../SessionsRequest';
export interface FlushError {
    code: string;
    details?: unknown;
}
/**
 * Manages flush lifecycle with timeout and failure tracking
 */
export default class FlushController {
    private flushResolve;
    private flushReject;
    private flushTimeout;
    private failedRequests;
    private isActive;
    /**
     * Start a flush operation
     * @param timeoutMs - Timeout in milliseconds
     * @returns Promise that resolves when flush completes or rejects on timeout/failure
     */
    startFlush(timeoutMs: number): Promise<unknown>;
    /**
     * Record a failed request during flush
     * @param request - Failed request
     */
    recordFailedRequest(request: SessionsRequest): void;
    /**
     * Complete the flush (call when queue is empty)
     */
    complete(): void;
    /**
     * Fail the flush with an error
     * @param code - Error code
     * @param details - Error details
     */
    fail(code: string, details?: unknown): void;
    /**
     * Check if flush is currently active
     */
    isFlushing(): boolean;
    /**
     * Clear flush state
     */
    private clear;
    /**
     * Create a standardized error object
     */
    private createError;
}
