import { Nullable } from '@mlytics/core-ts/core/type/basic'; import { CommonDuty, CommonTaskOptions, SpecTask, TaskManager } from '@mlytics/core-ts/core/util/future'; import { Resource } from '../../../model/service/resource'; import { Request } from '../model/request'; import { ResourceCache } from '../model/resource'; import { AbstractFileDownloader } from './loader'; declare abstract class AbstractFileSeeker { protected _requester: AbstractFileRequester; protected _resourceCache: ResourceCache; protected abstract _initialize(): void; activate(): Promise; protected abstract _activate(): Promise; deactivate(): Promise; protected abstract _deactivate(): Promise; fetch(resource: Resource): Promise; prefetch(resource: Resource): Promise; protected _fetch(resource: Resource, isBlocking: boolean): Promise; protected _request(resource: Resource, isBlocking: boolean): Promise; cache(resource: Resource): Promise; protected _cache(resource: Resource): Promise; abort(resource: Resource): Promise; protected _hasCached(resource: Resource): boolean; protected _fetchCache(resource: Resource): Nullable; protected _storeCache(resource: Resource): void; } declare abstract class AbstractFileRequester { static readonly ABORTED_REQUEST_EXPIRY_TIME: number; protected _taskManager: TaskManager; protected _requestPool: Map; activate(): Promise; protected abstract _activate(): Promise; deactivate(): Promise; protected abstract _deactivate(): Promise; protected abstract _buildTasks(): Promise; fetch(resource: Resource): Promise; abort(resource: Resource): Promise; clear(resource: Resource): Promise; protected _abortRequest(request: Request): Promise; protected _buildRequest(resource: Resource): Promise; protected _fetchRequest(resource: Resource): Nullable; protected _storeRequest(resource: Resource, request: Request): void; protected _clearRequest(resource: Resource): void; protected abstract _buildObtainResourceTask(resource: Resource): Promise; protected _buildClearRequestTask(): Promise; protected _execClearRequestTaskCallee(): Promise; } declare class FileRequesterTaskName { static readonly CLEAR_REQUEST = "file requester: clear request"; static readonly OBTAIN_RESOURCE = "file requester: obtain resource"; } declare abstract class AbstractObtainResourceDuty extends CommonDuty { protected readonly _options: ObtainResourceDutyOptions; protected _downloader: AbstractFileDownloader; protected constructor(_options: ObtainResourceDutyOptions); protected abstract _initialize(): void; callee(): Promise; onFail(): Promise; onCancel(): Promise; } type ObtainResourceDutyOptions = CommonTaskOptions; export { AbstractFileSeeker, AbstractFileRequester, FileRequesterTaskName, AbstractObtainResourceDuty, ObtainResourceDutyOptions };