import { Patch, Lang, AssetCategory, CategoryDataMap, SummonerIcon, SummonerIconSet, SummonerEmote, WardSkin, WardSkinSet, LootItem, Champion, Skinline, Universe, Skins, Added, VersionInfo, Skin, RarityEnum } from './types/index.js'; export { Augment, Borders, CategoryData, Chroma, CosmeticsCategory, DataManifest, DescriptionInfo, Emblem, Layer, Overlay, QuestSkinInfo, RegionalDescription, RegionalRarity, Role, SkinAugments, SkinLineRef, SkinType, SkinsDomainCategory, Tier } from './types/index.js'; type DataSource = { kind: "cdragon"; patch?: Patch; } | { kind: "release"; baseUrl?: string; version?: string; }; interface LoadOptions { lang?: Lang; source?: DataSource; fetch?: typeof globalThis.fetch; /** Override patch for transforms when source is release. */ patch?: Patch; } declare function loadCategory(category: C, opts?: LoadOptions): Promise; interface ClientOptions { lang?: Lang; source?: DataSource; fetch?: typeof globalThis.fetch; /** Default patch override for CDragon loads / path rewriting. */ patch?: Patch; } interface LeagueFanAssetsClient { readonly lang: Lang; readonly source: DataSource; load(category: C): Promise; summonerIcons(): Promise; summonerIconSets(): Promise; summonerEmotes(): Promise; wardSkins(): Promise; wardSkinSets(): Promise; loot(): Promise; champions(): Promise; skinlines(): Promise; universes(): Promise; skins(): Promise; added(): Promise; version(): Promise; } declare function createClient(options?: ClientOptions): LeagueFanAssetsClient; declare class FetchError extends Error { readonly status: number; readonly url: string; constructor(url: string, status: number, statusText: string); } declare function fetchJson(url: string, opts?: { fetch?: typeof globalThis.fetch; }): Promise; declare const ASSET_CATEGORIES: readonly ["summoner-icons", "summoner-icon-sets", "summoner-emotes", "ward-skins", "ward-skin-sets", "loot", "champions", "skinlines", "universes", "skins", "added", "version"]; declare const PUBLISHED_DATA_CATEGORIES: readonly ["summoner-icons", "summoner-icon-sets", "summoner-emotes", "ward-skins", "ward-skin-sets", "loot", "champions", "skinlines", "universes", "skins", "added"]; declare const DEFAULT_DATA_LANGUAGES: readonly ["default", "zh_cn"]; interface CategoryMeta { id: AssetCategory; domain: "cosmetics" | "champions" | "skins" | "meta"; description: string; } declare const CATEGORY_META: Record; declare const CDRAGON = "https://raw.communitydragon.org"; declare const TENCENT_PROFILE_ICON_CDN = "https://dlied1.qq.com/lolapp/lol/summoner/profileicon/"; /** CDragon filename for a category (under global/{lang}/v1/). */ declare const CATEGORY_CDRAGON_FILE: Partial>; declare function dataRoot(opts?: { patch?: Patch; lang?: Lang; }): string; declare function cdragonDataUrl(opts: { category: AssetCategory; lang?: Lang; patch?: Patch; }): string; /** Default patch preference by domain when using live CDragon. */ declare function defaultPatchForCategory(category: AssetCategory): Patch; declare const DDRAGON_REALM_TENCENT = "https://ddragon.leagueoflegends.com/realms/tencent.json"; declare const DDRAGON_REALM_NA = "https://ddragon.leagueoflegends.com/realms/na.json"; declare function getGameVersion(opts?: { fetch?: typeof globalThis.fetch; realmUrl?: string; }): Promise; declare function getVersionInfo(opts?: { fetch?: typeof globalThis.fetch; realmUrl?: string; }): Promise; /** * Default GitHub Releases download base (latest data release). * Assets are flat: `{lang}__{category}.json` e.g. `zh_cn__summoner-icons.json`. */ declare const DEFAULT_RELEASE_BASE = "https://github.com/league-fan/league-fan-assets/releases/latest/download"; declare function releaseBaseUrl(opts?: { baseUrl?: string; version?: string; }): string; /** Flatten path for GitHub Release asset names. */ declare function releaseAssetName(relPath: string): string; declare function releaseDataUrl(opts: { category: AssetCategory; lang?: Lang; version?: string; baseUrl?: string; }): string; declare function releaseManifestUrl(opts?: { baseUrl?: string; version?: string; }): string; interface AssetUrlOptions { patch?: Patch; /** Text language; image binaries still resolve under global/default. */ lang?: Lang; category?: AssetCategory; } /** * Resolve a CDragon game-data path (or passthrough absolute URL) to HTTPS. * Mirrors historical league-fan-assets + feat-nextjs behavior. */ declare function assetUrl(path: string | null | undefined, opts?: AssetUrlOptions): string; /** Deep-walk object/array and rewrite string fields that look like game-data paths. */ declare function rewritePathsDeep(value: T, opts?: AssetUrlOptions): T; interface TransformOpts { lang?: Lang; patch?: Patch; } declare function transformSummonerIcons(raw: unknown[], opts?: TransformOpts): SummonerIcon[]; declare function transformSummonerIconSets(raw: unknown, opts?: TransformOpts): SummonerIconSet[]; declare function transformSummonerEmotes(raw: unknown[], opts?: TransformOpts): SummonerEmote[]; declare function transformWardSkins(raw: unknown[], opts?: TransformOpts): WardSkin[]; declare function transformWardSkinSets(raw: unknown, opts?: TransformOpts): WardSkinSet[]; declare function transformLoot(raw: unknown, opts?: TransformOpts): LootItem[]; declare function filterLootChests(raw: unknown, opts?: { lang?: Lang; patch?: Patch; }): LootItem[]; declare function transformChampions(raw: unknown[], opts?: { lang?: Lang; patch?: Patch; }): Champion[]; interface SkinTransformOpts { lang?: Lang; patch?: Patch; /** Prefix base skins with "Original " (default true for default/en). */ originalPrefix?: boolean; } /** * Expand quest skin tiers into individual skin entries and normalize paths. * Port of feat-nextjs scraper getLatestSkins. */ declare function transformSkins(raw: Skins | Record, opts?: SkinTransformOpts): Skins; declare function transformSkinlines(raw: unknown[], _opts?: SkinTransformOpts): Skinline[]; declare function transformUniverses(raw: unknown[], opts?: SkinTransformOpts): Universe[]; declare function computeAdded(opts: { current: { champions: Champion[]; skinlines: Skinline[]; skins: Skins; universes: Universe[]; }; previous: { champions: Champion[]; skinlines: Skinline[]; skins: Skins; universes: Universe[]; }; }): Added; interface SplitSkinId { champId: number; skinIndex: number; } /** Skin id layout: champId * 1000 + skinIndex */ declare function splitSkinId(id: number): SplitSkinId; /** Legacy tuple form used by some scrapers: [champId, skinIndex] */ declare function splitId(id: number): [number, number]; /** Champion alias substitutions used by community tools / wiki. */ declare const ALIAS_SUBSTITUTIONS: Record; declare function substitute(value: string, sets?: Record): string; declare const raritiesMap: Partial>; declare function getRarityUrl(rarity: string, opts?: { patch?: Patch; }): { imgUrl: string; name: string; } | null; declare function modelviewerUrl(skinId: number): string; export { ALIAS_SUBSTITUTIONS, ASSET_CATEGORIES, Added, AssetCategory, CATEGORY_CDRAGON_FILE, CATEGORY_META, CDRAGON, CategoryDataMap, type CategoryMeta, Champion, type ClientOptions, DDRAGON_REALM_NA, DDRAGON_REALM_TENCENT, DEFAULT_DATA_LANGUAGES, DEFAULT_RELEASE_BASE, type DataSource, FetchError, Lang, type LeagueFanAssetsClient, type LoadOptions, LootItem, PUBLISHED_DATA_CATEGORIES, Patch, RarityEnum, Skin, Skinline, Skins, type SplitSkinId, SummonerEmote, SummonerIcon, SummonerIconSet, TENCENT_PROFILE_ICON_CDN, Universe, VersionInfo, WardSkin, WardSkinSet, assetUrl, cdragonDataUrl, computeAdded, createClient, dataRoot, defaultPatchForCategory, fetchJson, filterLootChests, getGameVersion, getRarityUrl, getVersionInfo, loadCategory, modelviewerUrl, raritiesMap, releaseAssetName, releaseBaseUrl, releaseDataUrl, releaseManifestUrl, rewritePathsDeep, splitId, splitSkinId, substitute, transformChampions, transformLoot, transformSkinlines, transformSkins, transformSummonerEmotes, transformSummonerIconSets, transformSummonerIcons, transformUniverses, transformWardSkinSets, transformWardSkins };