export type FeedAuthor = {
    name: string;
    url?: string;
    email?: string;
    avatar?: string;
};
export type FeedCategory = {
    name: string;
    domain?: string;
    label?: string;
};
export type FeedEnclosure = {
    url: string;
    type: string;
    length?: number;
    title?: string;
    duration?: number;
};
export type FeedImage = {
    url: string;
    title?: string;
    link?: string;
    width?: number;
    height?: number;
};
export type PodcastFeed = {
    type?: "episodic" | "serial";
    explicit?: boolean;
    owner?: {
        name: string;
        email: string;
    };
    category?: string | {
        name: string;
        subcategory?: string;
    }[];
    image?: string;
    newFeedUrl?: string;
    block?: boolean;
    complete?: boolean;
};
export type PodcastItem = {
    duration?: number | string;
    explicit?: boolean;
    episode?: number;
    season?: number;
    episodeType?: "full" | "trailer" | "bonus";
    image?: string;
    block?: boolean;
};
export type FeedItemExtensions = {
    xmlElements?: import("./xml.js").XmlNode[];
    jsonProperties?: Record<string, unknown>;
};
export type FeedItem = {
    id: string;
    title?: string;
    link?: string;
    content?: string;
    contentText?: string;
    summary?: string;
    date?: string | Date;
    updated?: string | Date;
    authors?: FeedAuthor[];
    categories?: FeedCategory[];
    image?: string;
    enclosures?: FeedEnclosure[];
    language?: string;
    podcast?: PodcastItem;
    extensions?: FeedItemExtensions;
};
export type FeedExtensions = {
    xmlNamespaces?: Record<string, string>;
    xmlElements?: import("./xml.js").XmlNode[];
    jsonProperties?: Record<string, unknown>;
};
export type Feed = {
    title: string;
    link: string;
    description?: string;
    id?: string;
    language?: string;
    copyright?: string;
    updated?: string | Date;
    generator?: string;
    image?: FeedImage;
    favicon?: string;
    authors?: FeedAuthor[];
    categories?: FeedCategory[];
    items: FeedItem[];
    ttl?: number;
    skipHours?: number[];
    skipDays?: string[];
    nextUrl?: string;
    podcast?: PodcastFeed;
    feedLinks?: {
        rss?: string;
        atom?: string;
        json?: string;
        hub?: string;
    };
    extensions?: FeedExtensions;
};
export type FeedFormat = "rss" | "atom" | "json";
export type FeedOptions = {
    sanitize?: boolean;
    pretty?: boolean;
    stylesheet?: string;
};
export type FeedOutput = {
    rss: string;
    atom: string;
    json: string;
};
