import ISaveData from '../interface/ISaveData.js';
import '../interface/export/ExportedCanvas.js';
import '../interface/canvas/ICanvasBaseMemory.js';
import '../interface/ITickersSteps.js';
import 'pixi.js';
import '../TickerBase-3rLpDpmb.js';
import '../types/StorageElementType.js';
import '../types/TickerIdType.js';
import '../types/PauseType.js';
import '../types/RepeatType.js';
import '../interface/TickerHistory.js';
import '../interface/export/ExportedStep.js';
import '../interface/IHistoryStep.js';
import 'deep-diff';
import '../classes/ChoiceMenuOption.js';
import '../types/LabelIdType.js';
import '../classes/Label.js';
import '../types/StepLabelType.js';
import '@drincs/pixi-vn/dist/override';
import '../classes/LabelAbstract.js';
import '../types/StepHistoryDataType.js';
import '../interface/LabelProps.js';
import '../types/CloseType.js';
import '../types/LabelRunModeType.js';
import '../interface/IOpenedLabel.js';
import '../interface/export/ExportedStorage.js';
import '../classes/DialogueBaseModel.js';
import '../classes/CharacterBaseModel.js';
import '../interface/CharacterBaseModelProps.js';
import '../classes/StoredClassModel.js';

/**
 * Get the save data
 * @returns The save data
 */
declare function getSaveData(): ISaveData;
/**
 * 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: ISaveData, 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): ISaveData;

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