import { QueryDoneCallback, QueryAbortCallback } from '@iconizza/api-redundancy'; import { IconizzaIconName } from '@iconizza/utils/lib/icon/name'; import { IconizzaIconLoaderCallback, IconizzaIconLoaderAbort } from './icons.js'; import { PartialIconizzaAPIConfig, GetAPIConfig } from './config.js'; import { IconizzaAPIModule, IconizzaAPIQueryParams } from './modules.js'; export { IconizzaAPICustomQueryParams } from './modules.js'; import { IconizzaIcon } from '@iconizza/types'; /** * Iconizza API functions */ interface IconizzaAPIFunctions { /** * Load icons */ loadIcons: (icons: (IconizzaIconName | string)[], callback?: IconizzaIconLoaderCallback) => IconizzaIconLoaderAbort; /** * Load one icon, using Promise syntax */ loadIcon: (icon: IconizzaIconName | string) => Promise>; /** * Add API provider */ addAPIProvider: (provider: string, customConfig: PartialIconizzaAPIConfig) => boolean; } /** * Exposed internal functions * * Used by plug-ins, such as Icon Finder * * Important: any changes published in a release must be backwards compatible. */ interface IconizzaAPIInternalFunctions { /** * Get API config, used by custom modules */ getAPIConfig: GetAPIConfig; /** * Set custom API module */ setAPIModule: (provider: string, item: IconizzaAPIModule) => void; /** * Send API query */ sendAPIQuery: (target: string | PartialIconizzaAPIConfig, query: IconizzaAPIQueryParams, callback: QueryDoneCallback) => QueryAbortCallback; /** * Set and get fetch() */ setFetch: (item: typeof fetch) => void; getFetch: () => typeof fetch | undefined; /** * List all API providers (from config) */ listAPIProviders: () => string[]; } export { IconizzaAPIFunctions, IconizzaAPIInternalFunctions, IconizzaAPIQueryParams };