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

/**
 * 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 };
