/*
|--------------------------------------------------------------------------
| Typage de `nspell`
|--------------------------------------------------------------------------
|
| `nspell@2.1.5` est publié en CommonJS sans fichier de types (`main: lib/index.js`,
| aucun `index.d.ts` dans le paquet). Sans cette déclaration, `npm run types` échoue sur
| « Could not find a declaration file for module 'nspell' ».
|
| On déclare la forme ESM (`export default`) : c'est celle que Vite expose après interop
| CJS→ESM, et `dictionary.ts` retombe sur l'export direct pour les autres runtimes.
*/

declare module 'nspell' {
    export interface NSpell {
        /** `true` si le mot est accepté tel quel par le dictionnaire. */
        correct(word: string): boolean;
        /** Suggestions ordonnées par distance d'édition — liste vide si le mot est correct. */
        suggest(word: string): string[];
        spell(word: string): { correct: boolean; forbidden: boolean; warn: boolean };
        add(word: string, model?: string): NSpell;
        remove(word: string): NSpell;
    }

    /** Fabrique : reçoit le contenu texte de `index.aff` puis de `index.dic`. */
    export type NSpellFactory = (aff: string, dic: string) => NSpell;

    const nspell: NSpellFactory;

    export default nspell;
}
