import type { TrackType } from '../domain/configuration'; import type { RawError } from '../domain/error/error.types'; import type { Observable } from '../tools/observable'; import type { Payload, HttpRequestEvent, HttpResponse, BandwidthStats } from './httpRequest'; export declare const MAX_ONGOING_BYTES_COUNT: number; export declare const MAX_ONGOING_REQUESTS = 32; export declare const MAX_QUEUE_BYTES_COUNT: number; export declare const MAX_BACKOFF_TIME: number; export declare const INITIAL_BACKOFF_TIME = 1000; declare const enum TransportStatus { UP = 0, FAILURE_DETECTED = 1, DOWN = 2 } export interface RetryState { transportStatus: TransportStatus; currentBackoffTime: number; bandwidthMonitor: ReturnType; queuedPayloads: ReturnType>; queueFullReported: boolean; } type SendStrategy = (payload: Body, onResponse: (r: HttpResponse) => void) => void; export declare function sendWithRetryStrategy(payload: Body, state: RetryState, sendStrategy: SendStrategy, trackType: TrackType, reportError: (error: RawError) => void, requestObservable: Observable>): void; export declare function newRetryState(): RetryState; declare function newPayloadQueue(): { bytesCount: number; enqueue(payload: Body): boolean; first(): Body; dequeue(): Body | undefined; size(): number; isFull(): boolean; }; declare function newBandwidthMonitor(): { ongoingRequestCount: number; ongoingByteCount: number; canHandle(payload: Payload): boolean; add(payload: Payload): void; remove(payload: Payload): void; stats(): BandwidthStats; }; export {};