/**
 * classify-url.ts
 *
 * Classifies URLs passed via --url/--urls into specific source types.
 * Enables intelligent inference: a Sanity Studio release URL automatically
 * sets the perspective, a Studio document URL extracts the document ID, etc.
 *
 * Classification rules (applied in order):
 *   1. /releases/<id>         → Sanity Release (extract perspective)
 *   2. /structure/...;<uuid>  → Sanity Studio Document (extract doc ID + optional perspective)
 *   3. everything else        → Direct URL (fetch as documentation)
 */
/** Discriminated union of all classified URL types */
export type ClassifiedUrl = DirectUrl | SanityDocumentUrl | SanityReleaseUrl;
/** A URL classified as a direct documentation page (HTML, Markdown, etc.) */
export interface DirectUrl {
    type: "direct-url";
    url: string;
}
/** A URL classified as a Sanity Studio document URL */
export interface SanityDocumentUrl {
    documentId: string;
    perspectiveId?: string;
    studioOrigin: string;
    type: "sanity-document";
}
/** A URL classified as a Sanity Studio release URL */
export interface SanityReleaseUrl {
    perspectiveId: string;
    studioOrigin: string;
    type: "sanity-release";
}
/** Result of classifying multiple URLs */
export interface ClassificationResult {
    /** URLs classified as direct documentation pages */
    directUrls: string[];
    /** Sanity document IDs extracted from Studio document URLs */
    documentIds: string[];
    /** Perspective ID inferred from release or document URLs (first wins) */
    inferredPerspective?: string;
    /** Studio origin inferred from Sanity URLs (first wins) */
    inferredStudioOrigin?: string;
}
/**
 * Classify a single URL into one of the known source types.
 *
 * @param input - A URL string to classify
 * @returns A discriminated union describing the URL type and extracted metadata
 * @throws If the input is not a valid URL
 */
export declare function classifyUrl(input: string): ClassifiedUrl;
/**
 * Classify an array of URLs and aggregate the results.
 *
 * Collects direct URLs and document IDs into separate lists. Perspective
 * and studio origin are inferred from the first Sanity URL that provides them.
 *
 * @param urls - Array of URL strings to classify
 * @returns Aggregated classification result
 */
export declare function classifyUrls(urls: string[]): ClassificationResult;
