Source code for beaker.state._abc

from abc import ABC, abstractmethod
from typing import Literal, NamedTuple

from pyteal import Expr, TealType


class AppSpecSchemaFragment(NamedTuple):
    section: str
    data: dict


class StateStorage(ABC):
    @abstractmethod
    def app_spec_json(self) -> AppSpecSchemaFragment | None:
        ...

    @abstractmethod
    def num_keys(self) -> int:
        ...

    @abstractmethod
    def value_type(self) -> Literal[TealType.bytes, TealType.uint64]:
        ...


[docs]class GlobalStateStorage(StateStorage): @abstractmethod def initialize(self) -> Expr | None: ...
[docs]class LocalStateStorage(StateStorage): @abstractmethod def initialize(self, acct: Expr) -> Expr | None: ...
# class BoxStorage(ABC): # pass