# Path: crowd_anki/anki/adapters/anki_deck.py
# class AnkiDeck:
#     _data: dict
# 
#     deck_name_separator = '::'
# 
#     @property
#     def data(self):
#         return self._data
# 
#     @property
#     def is_dynamic(self):
#         return bool(self.data['dyn'])
# 
#     @property
#     def name(self):
#         return self.data['name']
# 
# Path: crowd_anki/anki/adapters/deck_manager.py
# class DeckManager(ABC):
#     @abstractmethod
#     def all(self) -> Iterable[AnkiDeck]:
#         pass
# 
#     @abstractmethod
#     def leaf_decks(self, overrides: Iterable[AnkiDeck] = tuple()) -> Iterable[AnkiDeck]:
#         pass
# 
#     @abstractmethod
#     def for_names(self, names: Iterable[str]):
#         pass
# 
#     def decks_by_name(self):
#         return {deck.name: deck for deck in self.all()}


from abc import ABC, abstractmethod
from dataclasses import dataclass
from typing import Callable, Iterable
from ..anki.adapters.anki_deck import AnkiDeck
from ..anki.adapters.deck_manager import DeckManager




class Archiver(ABC):
    @abstractmethod
    def archive(self, decks: Iterable = tuple(), reason: str = None):
        pass



# Path: crowd_anki/anki/adapters/anki_deck.py
# class AnkiDeck:
#     _data: dict
# 
#     deck_name_separator = '::'
# 
#     @property
#     def data(self):
#         return self._data
# 
#     @property
#     def is_dynamic(self):
#         return bool(self.data['dyn'])
# 
#     @property
#     def name(self):
#         return self.data['name']
# 
# Path: crowd_anki/anki/adapters/deck_manager.py
# class DeckManager(ABC):
#     @abstractmethod
#     def all(self) -> Iterable[AnkiDeck]:
#         pass
# 
#     @abstractmethod
#     def leaf_decks(self, overrides: Iterable[AnkiDeck] = tuple()) -> Iterable[AnkiDeck]:
#         pass
# 
#     @abstractmethod
#     def for_names(self, names: Iterable[str]):
#         pass
# 
#     def decks_by_name(self):
#         return {deck.name: deck for deck in self.all()}


# Path: crowd_anki/history/archiver.py
from abc import ABC, abstractmethod
from dataclasses import dataclass
from typing import Callable, Iterable
from ..anki.adapters.anki_deck import AnkiDeck
from ..anki.adapters.deck_manager import DeckManager





class Archiver(ABC):
    @abstractmethod
    def archive(self, decks: Iterable = tuple(), reason: str = None):
        pass



@dataclass