import SaveData from '../interface/SaveData.js';
import '../interface/export/ExportedCanvas.js';
import '../types/PauseTickerType.js';
import '../interface/canvas/memory/CanvasBaseItemMemory.js';
import '../interface/canvas/memory/ContainerMemory.js';
import 'pixi.js';
import '../types/ContainerChild.js';
import '../classes/canvas/CanvasBaseItem.js';
import '../interface/TickerHistory.js';
import '../types/TickerIdType.js';
import '../interface/TickerArgs.js';
import '../interface/TickersSequence.js';
import '../types/PauseType.js';
import '../types/RepeatType.js';
import '../interface/export/ExportedSounds.js';
import '../interface/SoundOptions.js';
import '@pixi/sound';
import '../types/SoundFilterMemory.js';
import '../interface/export/ExportedStep.js';
import '../interface/HistoryStep.js';
import 'deep-diff';
import 'microdiff';
import '../classes/ChoiceMenuOption.js';
import '../types/LabelIdType.js';
import '../types/StorageElementType.js';
import '../classes/Label.js';
import '../classes/LabelAbstract.js';
import '../types/StepLabelType.js';
import '@drincs/pixi-vn';
import '../interface/LabelProps.js';
import '../types/CloseType.js';
import '../types/LabelRunModeType.js';
import '../interface/OpenedLabel.js';
import '../interface/export/ExportedStorage.js';
import '../classes/Dialogue.js';
import '../interface/CharacterInterface.js';

/**
 * Clear all game data. This function is used to reset the game.
 */
declare function clearAllGameDatas(): void;
/**
 * Get the save data
 * @returns The save data
 */
declare function getSaveData(): SaveData;
/**
 * Get the save data as a JSON string
 * @returns The save data as a JSON string
 * @example
 * ```typescript
 * export function saveGame() {
 *     const jsonString = getSaveJson()
 *     const blob = new Blob([jsonString], { type: "application/json" });
 *     const url = URL.createObjectURL(blob);
 *     const a = document.createElement('a');
 *     a.href = url;
 *     a.download = "save.json";
 *     a.click();
 * }
 * ```
 */
declare function getSaveJson(): string;
/**
 * Load the save data
 * @param data The save data
 * @param navigate The function to navigate to a path
 */
declare function loadSaveData(data: SaveData, navigate: (path: string) => void): Promise<void>;
/**
 * Load the save data from a JSON string
 * @param dataString The save data as a JSON string
 * @param navigate The function to navigate to a path
 * @example
 * ```typescript
 * export function loadGameSave(navigate: (path: string) => void, afterLoad?: () => void) {
 *     // load the save data from a JSON file
 *     const input = document.createElement('input');
 *     input.type = 'file';
 *     input.accept = 'application/json';
 *     input.onchange = (e) => {
 *         const file = (e.target as HTMLInputElement).files?.[0];
 *         if (file) {
 *             const reader = new FileReader();
 *             reader.onload = (e) => {
 *                 const jsonString = e.target?.result as string;
 *                 // load the save data from the JSON string
 *                 loadSaveJson(jsonString, navigate);
 *                 afterLoad && afterLoad();
 *             };
 *             reader.readAsText(file);
 *         }
 *     };
 *     input.click();
 * }
 * ```
 */
declare function loadSaveJson(dataString: string, navigate: (path: string) => void): Promise<void>;
/**
 * Convert a JSON string to a save data
 * @param json The JSON string
 * @returns The save data
 */
declare function jsonToSaveData(json: string): SaveData;

export { clearAllGameDatas, getSaveData, getSaveJson, jsonToSaveData, loadSaveData, loadSaveJson };
