import type { DiarizationPreference } from "../../../transcription/whisper/types.js";
import type { CacheMode, ContentFetchDiagnostics, TranscriptDiagnostics, TranscriptSegment, TranscriptSource } from "../types.js";
export declare const DEFAULT_TIMEOUT_MS = 120000;
export declare const DEFAULT_MAX_CONTENT_CHARACTERS = 8000;
export declare const DEFAULT_CACHE_MODE: CacheMode;
export type YoutubeTranscriptMode = "auto" | "web" | "apify" | "yt-dlp" | "no-auto";
export type MediaTranscriptMode = "auto" | "prefer";
export type EmbeddedVideoMode = "auto" | "off" | "prefer" | "both";
export type FirecrawlMode = "off" | "auto" | "always";
export type ContentFormat = "text" | "markdown";
export type MarkdownMode = "off" | "auto" | "llm" | "readability";
export type SourceMetrics = {
    platform: "youtube";
    videoId: string;
    viewCount: number | null;
    observedAt: string;
};
export interface FetchLinkContentOptions {
    timeoutMs?: number;
    maxCharacters?: number;
    cacheMode?: CacheMode;
    youtubeTranscript?: YoutubeTranscriptMode;
    mediaTranscript?: MediaTranscriptMode;
    embeddedVideo?: EmbeddedVideoMode;
    transcriptTimestamps?: boolean;
    transcriptDiarization?: DiarizationPreference | null;
    transcriptVideoDownload?: boolean;
    firecrawl?: FirecrawlMode;
    format?: ContentFormat;
    markdownMode?: MarkdownMode;
    fileMtime?: number | null;
    throwOnAssetLikeHtmlError?: boolean;
}
export interface TranscriptResolution {
    diagnostics?: TranscriptDiagnostics;
    source: TranscriptSource | null;
    text: string | null;
    metadata?: Record<string, unknown> | null;
    segments?: TranscriptSegment[] | null;
}
export interface ExtractedLinkContent {
    url: string;
    title: string | null;
    description: string | null;
    siteName: string | null;
    content: string;
    truncated: boolean;
    totalCharacters: number;
    wordCount: number;
    transcriptCharacters: number | null;
    transcriptLines: number | null;
    transcriptWordCount: number | null;
    transcriptSource: TranscriptSource | null;
    transcriptionProvider: string | null;
    transcriptMetadata: Record<string, unknown> | null;
    transcriptSegments: TranscriptSegment[] | null;
    transcriptTimedText: string | null;
    mediaDurationSeconds: number | null;
    sourceMetrics?: SourceMetrics | null;
    video: {
        kind: "youtube" | "direct";
        url: string;
    } | null;
    isVideoOnly: boolean;
    diagnostics: ContentFetchDiagnostics;
}
export interface FinalizationArguments {
    url: string;
    baseContent: string;
    contentSections?: Array<{
        heading: string;
        content: string;
    }> | null;
    maxCharacters: number | null;
    title: string | null;
    description: string | null;
    siteName: string | null;
    transcriptResolution: TranscriptResolution;
    video: {
        kind: "youtube" | "direct";
        url: string;
    } | null;
    isVideoOnly: boolean;
    diagnostics: ContentFetchDiagnostics;
}
