import type { HelpTopic } from './help_topic.js';
export interface HelpServiceInit {
    /**
     * Mapping of help categories to their respective JSON or YAML file URLs.
     *
     * Example:
     * ```typescript
     * {
     *   property: '/help/property.yaml',
     *   entity: '/help/entity.yaml',
     *   // ...
     * }
     * ```
     */
    categories: Record<string, string>;
    /**
     * Current version of the help data.
     * Used to determine if an update is needed.
     * Should follow semantic versioning (e.g., "1.0.0").
     * By convention it should be the version of the app.
     */
    version: string;
}
/**
 * HelpServiceController manages help topics stored in IndexedDB.
 * It supports loading topics from JSON or YAML files, querying, and searching.
 */
export declare class HelpServiceController {
    private db;
    private initPromise;
    /**
     * The current version of the help data.
     * Used to determine if an update is needed.
     */
    private currentVersion;
    /**
     * The available help categories and their corresponding files.
     */
    private categories;
    private static readonly DB_NAME;
    private static readonly DB_VERSION;
    private _initialized;
    /**
     * Indicates whether the help service has been initialized.
     * Initialization includes setting up the IndexedDB and loading help data if necessary.
     */
    get initialized(): boolean;
    /**
     * Promise that resolves when the help service is fully initialized.
     * If the service is already initialized, it resolves immediately.
     */
    get untilReady(): Promise<void>;
    constructor(init: HelpServiceInit);
    /**
     * Initialize the help service
     */
    private initialize;
    private doInitialize;
    /**
     * Initialize IndexedDB database
     */
    private initDatabase;
    /**
     * Check if help data needs to be updated and update if necessary
     */
    private checkAndUpdateHelpData;
    /**
     * Load help data from JSON files and store in IndexedDB
     */
    private loadHelpDataFromFiles;
    /**
     * Load topics from a JSON or YAML file
     */
    private loadTopicsFromFile;
    /**
     * Generate a unique key for a topic
     */
    private getTopicKey;
    /**
     * Get a specific help topic
     */
    getTopic(category: string, id: string): Promise<HelpTopic | undefined>;
    /**
     * Get all topics for a specific category
     */
    getTopicsByCategory(category: string): Promise<HelpTopic[]>;
    /**
     * Search topics by title or content
     */
    searchTopics(query: string): Promise<HelpTopic[]>;
    /**
     * Get all available topics
     */
    getAllTopics(): Promise<HelpTopic[]>;
    /**
     * Get current version
     */
    getVersion(): string | null;
    /**
     * Force refresh of help data (useful for development)
     */
    forceRefresh(): Promise<void>;
    /**
     * Clear all help data from IndexedDB
     */
    clearAllData(): Promise<void>;
}
//# sourceMappingURL=help_service_controller.d.ts.map