# Path: crowd_anki/history/anki_repo.py
# class AnkiRepo(ABC):
#     @abstractmethod
#     def stage_all(self):
#         pass
# 
#     @abstractmethod
#     def commit(self, message: str = None):
#         pass
# 
# Path: crowd_anki/history/archiver.py
# 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/export/deck_exporter.py
# class DeckExporter(ABC):
#     @abstractmethod
#     def export_to_directory(self, deck: AnkiDeck, output_dir: Path, copy_media=True) -> Path:
#         pass


from dataclasses import dataclass
from pathlib import Path
from typing import Iterable, Callable
from .anki_repo import AnkiRepo
from .archiver import Archiver
from ..anki.adapters.anki_deck import AnkiDeck
from ..export.deck_exporter import DeckExporter



@dataclass
class AnkiDeckArchiver(Archiver):
    deck: AnkiDeck

# Path: crowd_anki/history/anki_repo.py
# class AnkiRepo(ABC):
#     @abstractmethod
#     def stage_all(self):
#         pass
# 
#     @abstractmethod
#     def commit(self, message: str = None):
#         pass
# 
# Path: crowd_anki/history/archiver.py
# 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/export/deck_exporter.py
# class DeckExporter(ABC):
#     @abstractmethod
#     def export_to_directory(self, deck: AnkiDeck, output_dir: Path, copy_media=True) -> Path:
#         pass


# Path: crowd_anki/history/anki_deck_archiver.py
from dataclasses import dataclass
from pathlib import Path
from typing import Iterable, Callable
from .anki_repo import AnkiRepo
from .archiver import Archiver
from ..anki.adapters.anki_deck import AnkiDeck
from ..export.deck_exporter import DeckExporter




@dataclass
class AnkiDeckArchiver(Archiver):
    deck: AnkiDeck

    output_directory: Path