/// import { EventEmitter } from 'events'; import { ChildProcess, ChildProcessWithoutNullStreams, ExecFileException, SpawnOptionsWithoutStdio } from 'child_process'; import { Readable } from 'stream'; import { IncomingMessage } from 'http'; declare type YTDlpEventNameDataTypeMap = { close: [number | null]; error: [Error]; progress: [Progress]; ytDlpEvent: [eventType: string, eventData: string]; }; declare type YTDlpEventName = keyof YTDlpEventNameDataTypeMap; declare type YTDlpEventListener = (...args: YTDlpEventNameDataTypeMap[EventName]) => void; declare type YTDlpEventNameToEventListenerFunction = (channel: K, listener: YTDlpEventListener) => ReturnType; declare type YTDlpEventNameToEventDataFunction = (channel: K, ...args: YTDlpEventNameDataTypeMap[K]) => ReturnType; export interface YTDlpEventEmitter extends EventEmitter { ytDlpProcess?: ChildProcessWithoutNullStreams; removeAllListeners(event?: YTDlpEventName | symbol): this; setMaxListeners(n: number): this; getMaxListeners(): number; listenerCount(eventName: YTDlpEventName): number; eventNames(): Array; addListener: YTDlpEventNameToEventListenerFunction; prependListener: YTDlpEventNameToEventListenerFunction; prependOnceListener: YTDlpEventNameToEventListenerFunction; on: YTDlpEventNameToEventListenerFunction; once: YTDlpEventNameToEventListenerFunction; removeListener: YTDlpEventNameToEventListenerFunction; off: YTDlpEventNameToEventListenerFunction; listeners(eventName: YTDlpEventName): Function[]; rawListeners(eventName: YTDlpEventName): Function[]; emit: YTDlpEventNameToEventDataFunction; } export interface YTDlpPromise extends Promise { ytDlpProcess?: ChildProcess; } declare type YTDlpReadableEventName = keyof YTDlpReadableEventNameDataTypeMap; declare type YTDlpReadableEventListener = (...args: YTDlpReadableEventNameDataTypeMap[EventName]) => void; declare type YTDlpReadableEventNameToEventListenerFunction = (event: K, listener: YTDlpReadableEventListener) => ReturnType; declare type YTDlpReadableEventNameToEventDataFunction = (event: K, ...args: YTDlpReadableEventNameDataTypeMap[K]) => ReturnType; declare type YTDlpReadableEventNameDataTypeMap = { close: []; progress: [progress: Progress]; ytDlpEvent: [eventType: string, eventData: string]; data: [chunk: any]; end: []; error: [error: Error]; pause: []; readable: []; resume: []; }; export interface YTDlpReadable extends Readable { ytDlpProcess?: ChildProcessWithoutNullStreams; /** * Event emitter * The defined events on documents including: * 1. close * 2. data * 3. end * 4. error * 5. pause * 6. readable * 7. resume * 8. ytDlpEvent * 9. progress */ addListener: YTDlpReadableEventNameToEventListenerFunction; emit: YTDlpReadableEventNameToEventDataFunction; on: YTDlpReadableEventNameToEventListenerFunction; once: YTDlpReadableEventNameToEventListenerFunction; prependListener: YTDlpReadableEventNameToEventListenerFunction; prependOnceListener: YTDlpReadableEventNameToEventListenerFunction; removeListener: YTDlpReadableEventNameToEventListenerFunction; } export interface YTDlpOptions extends SpawnOptionsWithoutStdio { maxBuffer?: number; } export interface Progress { percent?: number; totalSize?: string; currentSpeed?: string; eta?: string; } export default class YTDlpWrap { private binaryPath; constructor(binaryPath?: string); getBinaryPath(): string; setBinaryPath(binaryPath: string): void; private static createGetMessage; private static processMessageToFile; static downloadFile(fileURL: string, filePath: string): Promise; static getGithubReleases(page?: number, perPage?: number): Promise; static downloadFromGithub(filePath?: string, version?: string, platform?: NodeJS.Platform): Promise; exec(ytDlpArguments?: string[], options?: YTDlpOptions, abortSignal?: AbortSignal | null): YTDlpEventEmitter; execPromise(ytDlpArguments?: string[], options?: YTDlpOptions, abortSignal?: AbortSignal | null): YTDlpPromise; execStream(ytDlpArguments?: string[], options?: YTDlpOptions, abortSignal?: AbortSignal | null): YTDlpReadable; getExtractors(): Promise; getExtractorDescriptions(): Promise; getHelp(): Promise; getUserAgent(): Promise; getVersion(): Promise; getVideoInfo(ytDlpArguments: string | string[]): Promise; static bindAbortSignal(signal: AbortSignal | null, process: ChildProcess): void; static setDefaultOptions(options: YTDlpOptions): YTDlpOptions; static createError(code: number | ExecFileException | null, processError: Error | null, stderrData: string): Error; static emitYoutubeDlEvents(stringData: string, emitter: YTDlpEventEmitter | YTDlpReadable): void; } export {};