export interface Image {
    url: string;
    height?: number;
    width?: number;
    estimatedResolutionLevel?: ResolutionLevel;
}
export declare enum ResolutionLevel {
    UNKNOWN = 0,
    LOW = 1,
    MEDIUM = 2,
    HIGH = 3
}
export declare enum MediaFormat {
    MPEG_4 = "mp4",
    v3GPP = "3gp",
    WEBM = "webm",
    MP3 = "mp3",
    M4A = "m4a",
    WEBMA = "webma",
    WEBMA_OPUS = "webm",// WebM container with Opus codec
    OGG = "ogg",
    OPUS = "opus",
    FLAC = "flac",// High-quality lossless audio
    WAV = "wav",// Uncompressed audio
    SRT = "srt",
    TRANSCRIPT1 = "transcript1",
    TRANSCRIPT2 = "transcript2",
    TRANSCRIPT3 = "transcript3",
    TTML = "ttml",
    VTT = "vtt"
}
export interface AudioStream {
    url?: string;
    itag?: number;
    bitrate?: number;
    samplingRate?: number;
    audioTrackId?: string;
    audioTrackName?: string;
    audioTrackType?: AudioTrackType;
    format: MediaFormat;
    averageBitrate?: number;
    quality?: string;
    codec?: string;
    initRange?: Range;
    indexRange?: Range;
    approxDurationMs?: number;
    contentLength?: number;
    signatureCipher?: string;
    cipher?: string;
}
export interface VideoStream {
    url?: string;
    itag?: number;
    bitrate?: number;
    format: MediaFormat;
    resolution?: string;
    isVideoOnly?: boolean;
    fps?: number;
    quality?: string;
    codec?: string;
    width?: number;
    height?: number;
    initRange?: Range;
    indexRange?: Range;
    approxDurationMs?: number;
    contentLength?: number;
    signatureCipher?: string;
    cipher?: string;
}
export interface Range {
    start: string;
    end: string;
}
export declare enum AudioTrackType {
    ORIGINAL = "ORIGINAL",
    DUBBED = "DUBBED",
    DESCRIPTIVE = "DESCRIPTIVE"
}
export interface StreamInfo {
    id: string;
    name: string;
    url: string;
    originalUrl: string;
    streamType: StreamType;
    uploaderName?: string;
    uploaderUrl?: string;
    uploaderAvatars: Image[];
    thumbnails: Image[];
    description?: string;
    length: number;
    viewCount: number;
    uploadDate?: string;
    uploaderSubscriberCount?: number;
    ageLimit: number;
    likeCount?: number;
    dislikeCount?: number;
    audioStreams: AudioStream[];
    videoStreams: VideoStream[];
    videoOnlyStreams: VideoStream[];
    dashMpdUrl?: string;
    hlsUrl?: string;
    relatedItems: StreamInfoItem[];
    tags: string[];
    category?: string;
    licence?: string;
    languageInfo?: Locale;
    privacy?: Privacy;
    supportInfo?: string;
    hostInfo?: string;
    shortFormContent: boolean;
}
export declare enum StreamType {
    NONE = "NONE",
    VIDEO_STREAM = "VIDEO_STREAM",
    AUDIO_STREAM = "AUDIO_STREAM",
    LIVE_STREAM = "LIVE_STREAM",
    AUDIO_LIVE_STREAM = "AUDIO_LIVE_STREAM",
    POST = "POST"
}
export declare enum Privacy {
    PUBLIC = "PUBLIC",
    UNLISTED = "UNLISTED",
    PRIVATE = "PRIVATE",
    INTERNAL = "INTERNAL",
    OTHER = "OTHER"
}
export interface StreamInfoItem extends InfoItem {
    streamType: StreamType;
    duration: number;
    uploaderName?: string;
    uploaderUrl?: string;
    uploaderAvatars: Image[];
    uploadDate?: string;
    viewCount?: number;
    shortFormContent: boolean;
}
export interface InfoItem {
    infoType: InfoType;
    serviceId: number;
    url: string;
    name: string;
    thumbnails: Image[];
}
export declare enum InfoType {
    STREAM = "STREAM",
    PLAYLIST = "PLAYLIST",
    CHANNEL = "CHANNEL",
    COMMENT = "COMMENT"
}
export interface ChannelInfo {
    id: string;
    name: string;
    url: string;
    originalUrl: string;
    avatars: Image[];
    banners: Image[];
    description?: string;
    parentChannelName?: string;
    parentChannelUrl?: string;
    parentChannelAvatars: Image[];
    subscriberCount?: number;
    verified: boolean;
    relatedItems: InfoItem[];
    donationLinks: string[];
    tags: string[];
    supportInfo?: string;
}
export interface PlaylistInfo {
    id: string;
    name: string;
    url: string;
    originalUrl: string;
    thumbnails: Image[];
    banners: Image[];
    uploaderName?: string;
    uploaderUrl?: string;
    uploaderAvatars: Image[];
    streamCount?: number;
    description?: string;
    relatedItems: StreamInfoItem[];
}
export interface SearchResult {
    items: InfoItem[];
    suggestion?: string;
    corrected?: string;
    metaInfo: string[];
    errors: string[];
}
export interface Page {
    url?: string;
    id?: string;
    ids?: string[];
    cookies?: {
        [key: string]: string;
    };
}
export interface Locale {
    languageCode: string;
    countryCode?: string;
}
export interface MetaInfo {
    title: string;
    content: string;
    urls: string[];
}
export interface Comment {
    commentId: string;
    commentText: string;
    uploaderName: string;
    uploaderThumbnails: Image[];
    uploaderUrl?: string;
    uploaderAvatars: Image[];
    uploadDate?: string;
    likeCount?: number;
    textualUploadDate?: string;
    replyCount?: number;
    replies?: Page;
    hearted: boolean;
    pinned: boolean;
    uploaderVerified: boolean;
    creatorReply: boolean;
    parentCommentId?: string;
}
export declare class ExtractorException extends Error {
    cause?: Error | undefined;
    constructor(message: string, cause?: Error | undefined);
}
export declare class ParsingException extends ExtractorException {
    constructor(message: string, cause?: Error);
}
export declare class ContentNotAvailableException extends ParsingException {
    constructor(message: string, cause?: Error);
}
export declare class GeographicallyRestrictedException extends ContentNotAvailableException {
    constructor(message: string, cause?: Error);
}
export declare class AgeRestrictedException extends ContentNotAvailableException {
    constructor(message: string, cause?: Error);
}
export declare class PaidContentException extends ContentNotAvailableException {
    constructor(message: string, cause?: Error);
}
export declare class PrivateContentException extends ContentNotAvailableException {
    constructor(message: string, cause?: Error);
}
export declare class YoutubeMusicPremiumContentException extends ContentNotAvailableException {
    constructor(message: string, cause?: Error);
}
export declare class AccountTerminatedException extends ContentNotAvailableException {
    constructor(message: string, cause?: Error);
}
export declare class ContentNotSupportedException extends ParsingException {
    constructor(message: string, cause?: Error);
}
export declare class ReCaptchaException extends ParsingException {
    url: string;
    constructor(message: string, url: string, cause?: Error);
}
export declare class NetworkException extends ExtractorException {
    constructor(message: string, cause?: Error);
}
export declare class SoundCloudGoPlusContentException extends ContentNotAvailableException {
    constructor(message: string, cause?: Error);
}
//# sourceMappingURL=index.d.ts.map