# Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # # This source code is licensed under the terms described in the LICENSE file in # the root directory of this source tree. from datetime import datetime from typing import List, Optional, Protocol class KVStore(Protocol): # TODO: make the value type bytes instead of str async def set(self, key: str, value: str, expiration: Optional[datetime] = None) -> None: ... async def get(self, key: str) -> Optional[str]: ... async def delete(self, key: str) -> None: ... async def range(self, start_key: str, end_key: str) -> List[str]: ...