import { DateLike } from "../../../common/types.js";
import { AdminNs } from "../../../namespaces/admin/common/types.js";
import { CcNs } from "../../../namespaces/cc/common/types.js";
import { CreativeCommonsNs } from "../../../namespaces/creativecommons/common/types.js";
import { DcNs } from "../../../namespaces/dc/common/types.js";
import { DcTermsNs } from "../../../namespaces/dcterms/common/types.js";
import { GeoNs } from "../../../namespaces/geo/common/types.js";
import { GeoRssNs } from "../../../namespaces/georss/common/types.js";
import { GooglePlayNs } from "../../../namespaces/googleplay/common/types.js";
import { ItunesNs } from "../../../namespaces/itunes/common/types.js";
import { MediaNs } from "../../../namespaces/media/common/types.js";
import { OpenSearchNs } from "../../../namespaces/opensearch/common/types.js";
import { PingbackNs } from "../../../namespaces/pingback/common/types.js";
import { PscNs } from "../../../namespaces/psc/common/types.js";
import { SlashNs } from "../../../namespaces/slash/common/types.js";
import { SyNs } from "../../../namespaces/sy/common/types.js";
import { ThrNs } from "../../../namespaces/thr/common/types.js";
import { TrackbackNs } from "../../../namespaces/trackback/common/types.js";
import { WfwNs } from "../../../namespaces/wfw/common/types.js";
import { AtomNs } from "../../../namespaces/atom/common/types.js";
import { ContentNs } from "../../../namespaces/content/common/types.js";
import { AcastNs } from "../../../namespaces/acast/common/types.js";
import { BlogChannelNs } from "../../../namespaces/blogchannel/common/types.js";
import { FeedPressNs } from "../../../namespaces/feedpress/common/types.js";
import { PodcastNs } from "../../../namespaces/podcast/common/types.js";
import { PrismNs } from "../../../namespaces/prism/common/types.js";
import { RawVoiceNs } from "../../../namespaces/rawvoice/common/types.js";
import { SourceNs } from "../../../namespaces/source/common/types.js";
import { SpotifyNs } from "../../../namespaces/spotify/common/types.js";
//#region src/feeds/rss/common/types.d.ts
declare namespace Rss {
  /** @internal Intermediary type before Person refactoring. Do not use downstream. */
  type PersonLike = string | {
    name?: string;
    email?: string;
  };
  type Person = string;
  type Category = {
    name: string;
    domain?: string;
  };
  type Cloud = {
    domain: string;
    port: number;
    path: string;
    registerProcedure: string;
    protocol: string;
  };
  type Image = {
    url: string;
    title: string;
    link: string;
    description?: string;
    height?: number;
    width?: number;
  };
  type TextInput = {
    title: string;
    description: string;
    name: string;
    link: string;
  };
  type Enclosure = {
    url: string;
    length: number;
    type: string;
  };
  type SkipHours = Array<number>;
  type SkipDays = Array<string>;
  type Guid = {
    value: string;
    isPermaLink?: boolean;
  };
  type Source = {
    title: string;
    url?: string;
  };
  type Item<TDate extends DateLike, TPerson extends PersonLike = Person> = {
    title?: string;
    link?: string;
    description?: string;
    authors?: Array<TPerson>;
    categories?: Array<Category>;
    comments?: string;
    enclosures?: Array<Enclosure>;
    guid?: Guid;
    pubDate?: TDate;
    source?: Source;
    atom?: AtomNs.Entry<TDate>;
    cc?: CcNs.ItemOrFeed;
    dc?: DcNs.ItemOrFeed<TDate>;
    content?: ContentNs.Item;
    creativeCommons?: CreativeCommonsNs.ItemOrFeed;
    slash?: SlashNs.Item;
    itunes?: ItunesNs.Item;
    podcast?: PodcastNs.Item;
    psc?: PscNs.Item;
    googleplay?: GooglePlayNs.Item;
    media?: MediaNs.ItemOrFeed;
    georss?: GeoRssNs.ItemOrFeed;
    geo?: GeoNs.ItemOrFeed;
    thr?: ThrNs.Item;
    dcterms?: DcTermsNs.ItemOrFeed<TDate>;
    prism?: PrismNs.Item<TDate>;
    wfw?: WfwNs.Item;
    sourceNs?: SourceNs.Item;
    rawvoice?: RawVoiceNs.Item;
    spotify?: SpotifyNs.Item;
    pingback?: PingbackNs.Item;
    trackback?: TrackbackNs.Item;
    acast?: AcastNs.Item;
  } & ({
    title: string;
  } | {
    description: string;
  });
  type Feed<TDate extends DateLike, TPerson extends PersonLike = Person> = {
    title: string;
    link?: string;
    description: string;
    language?: string;
    copyright?: string;
    managingEditor?: TPerson;
    webMaster?: TPerson;
    pubDate?: TDate;
    lastBuildDate?: TDate;
    categories?: Array<Category>;
    generator?: string;
    docs?: string;
    cloud?: Cloud;
    ttl?: number;
    image?: Image;
    rating?: string;
    textInput?: TextInput;
    skipHours?: Array<number>;
    skipDays?: Array<string>;
    items?: Array<Item<TDate, TPerson>>;
    atom?: AtomNs.Feed<TDate>;
    cc?: CcNs.ItemOrFeed;
    dc?: DcNs.ItemOrFeed<TDate>;
    sy?: SyNs.Feed<TDate>;
    itunes?: ItunesNs.Feed;
    podcast?: PodcastNs.Feed<TDate>;
    googleplay?: GooglePlayNs.Feed;
    media?: MediaNs.ItemOrFeed;
    georss?: GeoRssNs.ItemOrFeed;
    geo?: GeoNs.ItemOrFeed;
    dcterms?: DcTermsNs.ItemOrFeed<TDate>;
    prism?: PrismNs.Feed<TDate>;
    creativeCommons?: CreativeCommonsNs.ItemOrFeed;
    feedpress?: FeedPressNs.Feed;
    opensearch?: OpenSearchNs.Feed;
    admin?: AdminNs.Feed;
    sourceNs?: SourceNs.Feed;
    blogChannel?: BlogChannelNs.Feed;
    rawvoice?: RawVoiceNs.Feed<TDate>;
    spotify?: SpotifyNs.Feed;
    pingback?: PingbackNs.Feed;
    acast?: AcastNs.Feed;
  };
}
//#endregion
export { Rss };