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 }