import { IPlatformService } from '../platform/platformResolver'; import { DehydratedElementData, ElementData, ElementDataWrapper } from './element.interface'; export interface DehydratedElement { state: string; data: DehydratedElementData; originalData: DehydratedElementData; geohash?: string; type: string; hash: string; parent?: string; childrenData: ElementData[]; } export type DehydratedStringifiedElement = DehydratedElement & { data: string; originalData: string; childrenData: string[]; }; export interface IOfflineServiceImplementation extends IPlatformService { initializeStorage: () => Promise; saveElement: (hash: string, element: DehydratedElement) => Promise; removeElement: (hash: string) => Promise; getElement: (hash: string) => DehydratedElement | null; getElementsList: () => Promise; getLocalElementsList: () => Promise; saveListing: (hash: string, data: ElementDataWrapper[]) => Promise; getListing: (hash: string) => Promise; clearElementsAndListing: () => Promise; getItem: (key: string) => Promise; getAllKeys: () => Promise; setItem: (key: string, value: T) => Promise; removeItem: (key: string) => Promise; } export interface IOfflineService { implementation?: IOfflineServiceImplementation; initialize: () => Promise; initialized: () => boolean; } export interface OfflineStatus { currentStep?: string; lastError?: string; completedAt?: string; }