import type { Wiki, WikiFlags } from '../types.js'; /** A single character/entity reference within a {@link WikiAppearingSection}. */ export interface WikiAppearanceEntry { name: string; pageTitle: string; statusNote?: string; } /** Characters, locations, items, and concepts appearing in a comic, grouped by role. */ export interface WikiAppearingSection { featuredCharacters: WikiAppearanceEntry[]; supportingCharacters: WikiAppearanceEntry[]; antagonists: WikiAppearanceEntry[]; otherCharacters: WikiAppearanceEntry[]; locations: WikiAppearanceEntry[]; items: WikiAppearanceEntry[]; concepts: WikiAppearanceEntry[]; } /** Flat key/value map parsed from a page's infobox template. */ export type WikiStrContent = Record; /** An alternate cover for a comic issue, with its own artist credits. */ export interface WikiComicCoverVariant { coverNumber: number; artists: string[]; imageUrl?: string; imageLabel?: string; } /** Creative credits for a comic issue, grouped by role. */ export interface WikiCredits { writers: string[]; artists: string[]; inkers: string[]; colorists: string[]; letterers: string[]; editors: string[]; executiveEditors: string[]; } /** A single comic-book issue, as returned by {@link dcFandomPlugin}'s `getComic`/`getComicById`. */ export interface WikiComic { title: string; volume: string; issue: string; cover: string; pageId: number; credits: WikiCredits; releaseDate: WikiReleaseDate; synopsis: string; rating: string; event: string; storyTitles: string[]; appearing: WikiAppearingSection; quotation?: { quote?: string; speaker?: string; }; coverVariants: WikiComicCoverVariant[]; notes: string[]; trivia: string[]; /** Base URL of the wiki this comic was fetched from, e.g. `https://dc.fandom.com`. */ sourceWiki: string; } /** A comic's release date, as separate day/month/year strings from the infobox. */ export interface WikiReleaseDate { releaseDay: string; releaseMonth: string; releaseYear: string; } /** A comic-book volume/series, as returned by {@link dcFandomPlugin}'s `getVolume`/`getVolumeById`. */ export interface WikiVolume { title: string; thumbnail: string; pageId: number; type: string; startDate: { month: string; year: string; }; endDate: { month: string; year: string; }; previousVolume: string; nextVolume: string; creators: string[]; featured: string[]; storyArcs: string[]; crossovers: string[]; history: string; totalIssues: string; annualIssues: { title: string; year: string; }[]; specialIssues: { title: string; year: string; }[]; issueList: string[]; /** Fetches the comics that are part of this volume, resolved from `issueList`. */ getComics(flags?: Pick & { fields?: (keyof WikiComic)[]; }): Promise; /** Base URL of the wiki this volume was fetched from, e.g. `https://dc.fandom.com`. */ sourceWiki: string; } /** A single heading/text block from a character's "History" section. */ export interface WikiCharacterHistorySection { heading: string; text: string; } /** A character, as returned by {@link dcFandomPlugin}'s `getCharacter`/`getCharacterById`. */ export interface WikiCharacter { name: string; image: string; thumbnail: string; pageId: number; realName: string; mainAlias: string; aliases: string[]; alignment: string; identity: string; affiliation: string; relatives: string; universe: string; baseOfOperations: string; alienRace: string; gender: string; height: string; weight: string; eyes: string; hair: string; citizenship: string; maritalStatus: string; occupation: string; creators: string[]; first: string; last: string; quotation?: { quote?: string; speaker?: string; source?: string; }; overview: string; history: WikiCharacterHistorySection[]; powers: string[]; abilities: string[]; weaknesses: string[]; equipment: string[]; transportation: string[]; weapons: string[]; notes: string[]; trivia: string[]; /** Fetches the comics this character appears in, via its `Category:.../Appearances` category. */ getAppearances(flags?: Pick & { fields?: (keyof WikiComic)[]; }): Promise; /** Base URL of the wiki this character was fetched from, e.g. `https://dc.fandom.com`. */ sourceWiki: string; } /** * Extends a base {@link Wiki} client with DC Fandom-specific lookups for comics, * volumes, and characters, built on top of the base client's generic page search. * * Parsing here is coupled to DC Fandom's own infobox field names (e.g. `Image`, * `RealName`, `StoryArcs`) and category names (e.g. `Category:Comics`, * `Category:Characters`). Pointing this plugin at a different wiki via * `wiki({ plugin: 'dc-fandom', url: ... })` will run without error, but on a wiki * whose schema doesn't follow the same conventions, results may come back partially * or entirely empty rather than throwing. * * @param wikiClient - The base client to build on, typically for `https://dc.fandom.com`. * @returns An object with `getComic`, `getComicById`, `getVolume`, `getVolumeById`, * `getCharacter`, `getCharacterById`, and `getCharacterAppearances`. */ export declare function dcFandomPlugin(wikiClient: Wiki): { getComic: { (query: string, flags?: Pick & { multiple?: false; fields?: (keyof WikiComic)[]; }): Promise; (query: string, flags?: Pick & { multiple: true; fields?: (keyof WikiComic)[]; }): Promise; (query: string, flags?: Pick & { multiple?: boolean; fields?: (keyof WikiComic)[]; }): Promise; }; getComicById: { (pageId: number, flags?: Pick & { fields?: (keyof WikiComic)[]; }): Promise; (pageId: number[], flags?: Pick & { fields?: (keyof WikiComic)[]; }): Promise; }; getVolume: { (query: string, flags?: Pick & { multiple?: false; fields?: (keyof WikiVolume)[]; }): Promise; (query: string, flags: Pick & { multiple: true; fields?: (keyof WikiVolume)[]; }): Promise; (query: string, flags?: Pick & { multiple?: boolean; fields?: (keyof WikiVolume)[]; }): Promise; }; getVolumeById: { (pageId: number, flags?: Pick & { fields?: (keyof WikiVolume)[]; }): Promise; (pageId: number[], flags?: Pick & { fields?: (keyof WikiVolume)[]; }): Promise; }; getCharacter: { (query: string, flags?: Pick & { multiple?: false; fields?: (keyof WikiCharacter)[]; }): Promise; (query: string, flags?: Pick & { multiple: true; fields?: (keyof WikiCharacter)[]; }): Promise; (query: string, flags?: Pick & { multiple?: boolean; fields?: (keyof WikiCharacter)[]; }): Promise; }; getCharacterById: (pageId: number, flags?: Pick & { fields?: (keyof WikiCharacter)[]; }) => Promise; getCharacterAppearances: { (characterTitle: string, flags?: Pick & { fields?: (keyof WikiComic)[]; }): Promise; (pageId: number, flags?: Pick & { fields?: (keyof WikiComic)[]; }): Promise; }; }; //# sourceMappingURL=dc-fandom.d.ts.map