///
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 {};