from abc import ABC, abstractmethod
from dataclasses import dataclass
from datetime import datetime
from typing import List
@dataclass
class StorageReceipt:
key: str
hash: str timestamp: datetime
backend_metadata: dict
class PythonStorageBackend(ABC):
@abstractmethod
async def write(self, key: str, record: bytes) -> StorageReceipt: ...
@abstractmethod
async def read(self, key: str) -> bytes: ...
@abstractmethod
async def verify(self, key: str, receipt: StorageReceipt) -> bool: ...
@abstractmethod
async def list_keys(self, prefix: str, start: datetime, end: datetime) -> List[str]: ...