LICENSE
MANIFEST.in
README.md
pyproject.toml
src/baobab_mtg_rules_engine/__init__.py
src/baobab_mtg_rules_engine/py.typed
src/baobab_mtg_rules_engine.egg-info/PKG-INFO
src/baobab_mtg_rules_engine.egg-info/SOURCES.txt
src/baobab_mtg_rules_engine.egg-info/dependency_links.txt
src/baobab_mtg_rules_engine.egg-info/requires.txt
src/baobab_mtg_rules_engine.egg-info/top_level.txt
src/baobab_mtg_rules_engine/actions/__init__.py
src/baobab_mtg_rules_engine/actions/activate_simple_ability_action.py
src/baobab_mtg_rules_engine/actions/cast_spell_action.py
src/baobab_mtg_rules_engine/actions/declare_attacker_action.py
src/baobab_mtg_rules_engine/actions/declare_blocker_action.py
src/baobab_mtg_rules_engine/actions/game_action.py
src/baobab_mtg_rules_engine/actions/pass_priority_action.py
src/baobab_mtg_rules_engine/actions/play_land_action.py
src/baobab_mtg_rules_engine/actions/supported_action_kind.py
src/baobab_mtg_rules_engine/casting/__init__.py
src/baobab_mtg_rules_engine/casting/spell_cast_service.py
src/baobab_mtg_rules_engine/catalog/__init__.py
src/baobab_mtg_rules_engine/catalog/baobab_mtg_catalog_adapter.py
src/baobab_mtg_rules_engine/catalog/card_definition_port.py
src/baobab_mtg_rules_engine/catalog/card_gameplay_port.py
src/baobab_mtg_rules_engine/catalog/in_memory_card_catalog_adapter.py
src/baobab_mtg_rules_engine/combat/__init__.py
src/baobab_mtg_rules_engine/combat/attacker_declaration_service.py
src/baobab_mtg_rules_engine/combat/blocker_declaration_service.py
src/baobab_mtg_rules_engine/combat/combat_service.py
src/baobab_mtg_rules_engine/domain/__init__.py
src/baobab_mtg_rules_engine/domain/ability_like.py
src/baobab_mtg_rules_engine/domain/ability_on_stack.py
src/baobab_mtg_rules_engine/domain/card_reference.py
src/baobab_mtg_rules_engine/domain/effect_like.py
src/baobab_mtg_rules_engine/domain/event_type.py
src/baobab_mtg_rules_engine/domain/game.py
src/baobab_mtg_rules_engine/domain/game_event.py
src/baobab_mtg_rules_engine/domain/game_object.py
src/baobab_mtg_rules_engine/domain/game_object_id.py
src/baobab_mtg_rules_engine/domain/game_state.py
src/baobab_mtg_rules_engine/domain/in_game_card.py
src/baobab_mtg_rules_engine/domain/permanent.py
src/baobab_mtg_rules_engine/domain/phase.py
src/baobab_mtg_rules_engine/domain/player_state.py
src/baobab_mtg_rules_engine/domain/spell_on_stack.py
src/baobab_mtg_rules_engine/domain/step.py
src/baobab_mtg_rules_engine/domain/turn_state.py
src/baobab_mtg_rules_engine/domain/zone.py
src/baobab_mtg_rules_engine/domain/zone_location.py
src/baobab_mtg_rules_engine/domain/zone_type.py
src/baobab_mtg_rules_engine/engine/__init__.py
src/baobab_mtg_rules_engine/engine/legal_action_service.py
src/baobab_mtg_rules_engine/engine/null_priority_action_legality_port.py
src/baobab_mtg_rules_engine/engine/priority_action_legality_port.py
src/baobab_mtg_rules_engine/engine/priority_manager.py
src/baobab_mtg_rules_engine/engine/state_based_action_service.py
src/baobab_mtg_rules_engine/engine/step_transition_service.py
src/baobab_mtg_rules_engine/engine/turn_manager.py
src/baobab_mtg_rules_engine/exceptions/__init__.py
src/baobab_mtg_rules_engine/exceptions/baobab_mtg_rules_engine_exception.py
src/baobab_mtg_rules_engine/exceptions/deck_validation_error.py
src/baobab_mtg_rules_engine/exceptions/illegal_game_action_error.py
src/baobab_mtg_rules_engine/exceptions/insufficient_library_error.py
src/baobab_mtg_rules_engine/exceptions/invalid_game_state_error.py
src/baobab_mtg_rules_engine/exceptions/invalid_spell_target_error.py
src/baobab_mtg_rules_engine/exceptions/replay_sequence_error.py
src/baobab_mtg_rules_engine/exceptions/unsupported_rule_exception.py
src/baobab_mtg_rules_engine/exceptions/validation_exception.py
src/baobab_mtg_rules_engine/observability/__init__.py
src/baobab_mtg_rules_engine/observability/game_state_inspector.py
src/baobab_mtg_rules_engine/replay/__init__.py
src/baobab_mtg_rules_engine/replay/game_replay_service.py
src/baobab_mtg_rules_engine/replay/recorded_game_action.py
src/baobab_mtg_rules_engine/scenarios/__init__.py
src/baobab_mtg_rules_engine/scenarios/scenario_builder.py
src/baobab_mtg_rules_engine/scenarios/scenario_context.py
src/baobab_mtg_rules_engine/setup/__init__.py
src/baobab_mtg_rules_engine/setup/callback_mulligan_choice.py
src/baobab_mtg_rules_engine/setup/deck_definition.py
src/baobab_mtg_rules_engine/setup/deck_validator.py
src/baobab_mtg_rules_engine/setup/game_factory.py
src/baobab_mtg_rules_engine/setup/game_setup_request.py
src/baobab_mtg_rules_engine/setup/mulligan_choice_port.py
src/baobab_mtg_rules_engine/setup/mulligan_policy.py
src/baobab_mtg_rules_engine/stack/__init__.py
src/baobab_mtg_rules_engine/stack/stack_object.py
src/baobab_mtg_rules_engine/stack/stack_resolution_service.py
src/baobab_mtg_rules_engine/targeting/__init__.py
src/baobab_mtg_rules_engine/targeting/simple_target.py
src/baobab_mtg_rules_engine/targeting/target_validator.py