import { Nullable } from '@mlytics/core-ts/core/type/basic'; import { SpecQueue } from '@mlytics/core-ts/core/util/queue'; import { Payload } from '@mlytics/core-ts/utility/requester'; import { Resource } from '../../../model/service/resource'; import { CDNSource } from '../../../servant/mcdn/model/mcdn'; import { AbstractDownloader } from './base/loader'; declare class BaseDownloaderProxyName { static readonly HTTP = "http"; } declare abstract class AbstractDownloaderAgent { makeProxyClasses(): DownloaderProxyConstructor[]; protected abstract get _proxyNames(): string[]; protected abstract get _proxyClasses(): Map; } declare abstract class AbstractDownloaderProxy extends AbstractDownloader { fetch(): Promise; protected abstract _setup(): Promise; protected _beforeFetch(): Promise; protected _afterFetch(): Promise; } interface DownloaderProxyConstructor { new (resource: Resource): AbstractDownloaderProxy; } declare abstract class AbstractHttpDownloaderProxy extends AbstractDownloaderProxy { protected readonly _resource: Resource; protected _aborter: import("abort-controller").default; protected _payload: Payload; protected _requestURI: string; protected constructor(_resource: Resource); protected _fetching(): Promise; protected get _responseStatus(): number; protected _buildAborter(): Promise; protected _buildPayload(): Promise; protected _handleEntireContent(): Promise; protected _handlePartialContent(): Promise; protected _handleInvalidContent(): Promise; protected _concatResourceChunk(isPartial: boolean): Promise; protected _updateResourceType(): Promise; protected _updateResourceTotal(): Promise; protected _abort(): Promise; } declare class MCDNDownloaderProxy extends AbstractHttpDownloaderProxy { protected readonly _resource: Resource; protected _error?: Nullable; protected _source: CDNSource; protected _sources: SpecQueue; protected _startSize: number; protected _startTime: number; protected _measurement: PerformanceResourceTiming; constructor(_resource: Resource); protected _setup(): Promise; protected _resetStates(): Promise; protected _checkStates(): Promise; protected get _isWithinStartDelay(): boolean; protected _ensureSources(): Promise; protected _fetchSource(): Promise; protected _buildRequestURI(): Promise; protected _fetching(): Promise; protected get _shouldRetry(): boolean; protected _buildMeasurement(): Promise; protected _recordDownload(): Promise; protected _clearPerformance(): Promise; } export { BaseDownloaderProxyName, AbstractDownloaderAgent, AbstractDownloaderProxy, DownloaderProxyConstructor, AbstractHttpDownloaderProxy, MCDNDownloaderProxy };