| import { MathCoach } from "./MathCoach"; | 
| /** | 
|  * Hilfsfunktionen für Werkzeug-Entwickler. Diese werden nicht durch die `ide-lib.js` | 
|  * ausgeliefert! | 
|  */ | 
| export declare namespace Helpers { | 
|     /** | 
|      * Bildet die MathCoach API nach, sodass diese auch Offline (ohne IDE) | 
|      * verfügbar ist. (Siehe auch `createStorageBasedApi`). | 
|      * | 
|      * **Hinweis**: Wenn die echte MathCoach-API der IDE verfügbar ist, hat der Aufruf | 
|      * dieser Funktion keinen Seiteneffekt. | 
|      * | 
|      * Anwendungsbeispiel | 
|      * | 
|      *      import { Helpers } from "@mathcoach/ide-api"; | 
|      *      Helpers.enableOfflineUsageIfNecessary(); | 
|      *      MC.isReady() // use the api | 
|      * | 
|      * @param contextFileExtension Datei-Erweiterung der Kontext-Datei (Das Werkzeug soll | 
|      * jedoch unabhängig von der Endung arbeiten können) | 
|      * @returns Gibt `true` zurück, wenn die Offline-Funktionalität aktiviert | 
|      * wurde, andernfalls `false` | 
|      */ | 
|     function enableOfflineUsageIfNecessary(contextFileExtension?: string): boolean; | 
|     /** | 
|      * Implementierung der MathCoach API zu Testzwecken. | 
|      * | 
|      * Das Dateisystem wird durch einen Storage implementiert. Einige Features der | 
|      * IDE (beispielsweise der Navigator) sind nicht verfügbar und führen keine Aktionen | 
|      * durch. Alle Aktionen werden in der Browser-Console geloggt. | 
|      * | 
|      * Anwendungsbeispiel | 
|      * | 
|      *      import { Helpers } from "@mathcoach/ide-api"; | 
|      *      const _MC = Helpers.createStorageBasedApi(); | 
|      *      const contextFile = await _MC.ide.getContextFile() // use the api | 
|      * | 
|      * @param contextFileExtension Die Datei-Erweiterung der Kontext-Datei. Das Werkzeug sollte | 
|      *      unabhängig davon implementiert sein, da der Administrator der MathCoach IDE unter | 
|      *      Umständen auf eine Alternative ausweichen muss. | 
|      * @param storage Storage-Implementierung, die zum Speichern von Dateien verwendet werden | 
|      *      soll. Standardmäßig wird der `LocalStorage` des Browsers verwendet | 
|      *      bzw. falls nicht verfügbar der `InMemoryStorage`. | 
|      * | 
|      */ | 
|     function createStorageBasedApi(contextFileExtension?: string, storage?: Storage): MathCoach.Api; | 
|     /** | 
|      * Type Guard, der prüft, ob es sich um eine gültige `MathCoach.File`-Referenz handelt. | 
|      * | 
|      * @param maybeFile Ein beliebiges Objekt, das geprüft werden soll | 
|      */ | 
|     function isFile(maybeFile: any): maybeFile is MathCoach.File; | 
|     /** | 
|      * Bildet die Kontext-Datei auf eine Aufgaben-Datei mit selben Namen ab. | 
|      * | 
|      * Ein Werkzeug speichert sein Datenmodell in der sogenannten Kontext-Datei. Soll | 
|      * eine MathCoach-Aufgabe generiert werden, ist es sinnvoll, wenn die Aufgaben-Datei | 
|      * den selben Namen wie die Kontext-Datei trägt (natürlich mit anderer Dateiendung). | 
|      * | 
|      * Beispielsweise wird eine Dateireferenz mit dem Pfad `"/path/to/myExercise.mcq.json"` | 
|      * auf eine Dateireferenz mit dem Pfad `"/path/to/myExercise.groovy"` abgebildet. | 
|      * | 
|      * Anwendungsbeispiel | 
|      * | 
|      *      import { Helpers } from "@mathcoach/ide-api"; | 
|      *      const contextFile: MathCoach.File = await MC.ide.getContextFile(); | 
|      *      const exerciseFile: MathCoach.File = Helpers.contextFileToExerciseFile(contextFile); | 
|      */ | 
|     function contextFileToExerciseFile(contextFile: MathCoach.File): MathCoach.File; | 
|     /** | 
|      * Storage auf Basis einer Map. Kann z.B. bei Unit-Tests verwendet | 
|      * werden, beid denen der LocalStorage nicht verfügbar ist. | 
|      */ | 
|     class InMemoryStorage implements Storage { | 
|         private readonly items; | 
|         get length(): number; | 
|         clear(): void; | 
|         getItem(key: string): string | null; | 
|         key(_index: number): string | null; | 
|         removeItem(key: string): void; | 
|         setItem(key: string, value: string): void; | 
|     } | 
| } |