import type { ItemsProviderFn } from '@breadstone/mosaik-elements-foundation/dist/Controls/Types/ItemsProvider';
/**
 * Represents a Google Font item.
 *
 * @public
 */
export interface IGoogleFont {
    /**
     * The font family name.
     */
    family: string;
    /**
     * The category of the font (e.g., 'sans-serif', 'serif', 'display', 'handwriting', 'monospace').
     */
    category: string;
    /**
     * The available variants (e.g., 'regular', 'italic', '700', '700italic').
     */
    variants: Array<string>;
    /**
     * The available subsets (e.g., 'latin', 'latin-ext', 'cyrillic').
     */
    subsets: Array<string>;
    /**
     * The version of the font.
     */
    version: string;
    /**
     * The last modification date.
     */
    lastModified: string;
    /**
     * The files object containing URLs for each variant.
     */
    files: Record<string, string>;
}
/**
 * Options for the Google Fonts provider.
 *
 * @public
 */
export interface IGoogleFontsProviderOptions {
    /**
     * The Google Fonts API key.
     * You can obtain one from https://developers.google.com/fonts/docs/developer_api
     */
    apiKey: string;
    /**
     * Optional: Sort order for the fonts.
     * @default 'alpha'
     */
    sort?: 'alpha' | 'date' | 'popularity' | 'style' | 'trending';
    /**
     * Optional: Filter fonts by subset.
     */
    subset?: string;
    /**
     * Optional: Maximum number of fonts to return per request.
     * @default 50
     */
    pageSize?: number;
    /**
     * Optional: Whether to cache results.
     * @default true
     */
    cache?: boolean;
}
/**
 * Creates an items provider function for Google Fonts.
 * This provider can be used with the AutoCompleteBox component to provide
 * font family suggestions from the Google Fonts API.
 *
 * @example
 * ```typescript
 * const fontProvider = createGoogleFontsProvider({
 *   apiKey: 'YOUR_API_KEY',
 *   sort: 'popularity',
 *   pageSize: 30
 * });
 *
 * // Use with AutoCompleteBox
 * element.itemsProvider = fontProvider;
 * element.displayMemberPath = 'family';
 * element.valueMemberPath = 'family';
 * ```
 *
 * @public
 * @param options - The provider options.
 * @returns An ItemsProviderFn that fetches fonts from the Google Fonts API.
 */
export declare function createGoogleFontsProvider(options: IGoogleFontsProviderOptions): ItemsProviderFn<IGoogleFont>;
/**
 * Clears the cache of the Google Fonts provider.
 * Call this if you need to refresh the font list.
 *
 * @public
 * @param provider - The provider function to clear cache for.
 */
export declare function clearGoogleFontsCache(provider: ItemsProviderFn<IGoogleFont>): void;
/**
 * Loads a Google Font dynamically.
 * This can be used in combination with the renderItem function to preview fonts.
 *
 * @example
 * ```typescript
 * element.renderItem = (item: IGoogleFont, index: number) => {
 *   loadGoogleFont(item.family);
 *   return html`<span style="font-family: '${item.family}'">${item.family}</span>`;
 * };
 * ```
 *
 * @public
 * @param family - The font family name to load.
 * @param variants - Optional array of variants to load (default: ['regular']).
 */
export declare function loadGoogleFont(family: string, variants?: Array<string>): void;
/**
 * Creates a simple local fonts provider that doesn't require an API key.
 * Uses a predefined list of common fonts.
 *
 * @example
 * ```typescript
 * const fontProvider = createLocalFontsProvider();
 * element.itemsProvider = fontProvider;
 * ```
 *
 * @public
 * @returns An ItemsProviderFn that provides a list of common fonts.
 */
export declare function createLocalFontsProvider(): ItemsProviderFn<IGoogleFont>;
//# sourceMappingURL=GoogleFontsProvider.d.ts.map