import { type ImplDecorator, HttpClient, Logger } from 'egg'; import type { BinaryName, BinaryTaskConfig } from '../../../../config/binaries.ts'; import type { BinaryType } from '../../enum/Binary.ts'; declare const platforms: readonly ['darwin', 'linux', 'win32']; export interface BinaryItem { name: string; isDir: boolean; url: string; size: string | number; date: string; ignoreDownloadStatuses?: number[]; } export interface FetchResult { items: BinaryItem[]; nextParams?: any; } export declare const BINARY_ADAPTER_ATTRIBUTE: unique symbol; export declare abstract class AbstractBinary { protected logger: Logger; protected httpclient: HttpClient; abstract initFetch(binaryName: BinaryName): Promise; abstract fetch(dir: string, binaryName: BinaryName, lastData?: Record): Promise; finishFetch(_success: boolean, _binaryName: BinaryName): Promise; protected requestXml(url: string): Promise; protected requestJSON(url: string, requestHeaders?: Record): Promise; protected listNodeABIVersions(): Promise; protected listNodePlatforms(): readonly ["darwin", "linux", "win32"]; protected listNodeArchs(binaryConfig?: BinaryTaskConfig): Record; protected listNodeLibcs(): Record<(typeof platforms)[number], string[]>; } export declare const BinaryAdapter: ImplDecorator; export {};