import Core from '../../core/Core';
import SessionsRequest from '../SessionsRequest';
import RequestQueue from './RequestQueue';
import SendabilityPolicy from './SendabilityPolicy';
import RetryPolicy from './RetryPolicy';
import FlushController from './FlushController';
import ExpirationRecovery from './ExpirationRecovery';
/**
 * Core request processing orchestrator
 */
export default class RequestProcessor {
    private core;
    private queue;
    private sendabilityPolicy;
    private retryPolicy;
    private flushController;
    private expirationRecovery;
    private processing;
    private processTimeout;
    private startRequest;
    private onWillSendListeners;
    private onRequestSentListeners;
    constructor(core: Core, queue: RequestQueue, sendabilityPolicy: SendabilityPolicy, retryPolicy: RetryPolicy, flushController: FlushController, expirationRecovery: ExpirationRecovery);
    /**
     * Add listener hooks
     */
    setListeners(onWillSend: ((request: SessionsRequest) => void)[], onRequestSent: ((request: SessionsRequest) => void)[]): void;
    /**
     * Process requests in the queue
     */
    processRequests(): void;
    /**
     * Prepare request params and send it
     */
    private prepareAndSendRequest;
    /**
     * Handle successful request
     */
    private onRequestSuccess;
    /**
     * Handle failed request
     */
    private onRequestFailure;
    /**
     * Handle request that cannot be sent
     */
    private handleUnsendableRequest;
    /**
     * Prepare request parameters (inject sessionId and beatTime)
     */
    private prepareRequestParams;
    /**
     * Get request description for logging
     */
    private getRequestDescription;
    /**
     * Delay request processing
     */
    private delayProcessing;
    /**
     * Clear processing timeout
     */
    private clearProcessingTimeout;
    /**
     * Reset in-flight processor state without tearing it down.
     * Used by destroySession() so the host can immediately start a fresh session.
     */
    resetState(): void;
    /**
     * Destroy processor (cleanup)
     */
    destroy(): void;
}
