from dataclasses import dataclass
from pathlib import Path
from typing import Dict, List, Optional

from rule_structure import AssetRule, FileRule, SourceRule
from configuration import Configuration

@dataclass
class AssetProcessingContext:
    source_rule: SourceRule
    asset_rule: AssetRule
    workspace_path: Path
    engine_temp_dir: Path
    output_base_path: Path
    effective_supplier: Optional[str]
    asset_metadata: Dict
    processed_maps_details: Dict[str, Dict[str, Dict]]
    merged_maps_details: Dict[str, Dict[str, Dict]]
    files_to_process: List[FileRule]
    loaded_data_cache: Dict
    config_obj: Configuration
    status_flags: Dict
    incrementing_value: Optional[str]
    sha5_value: Optional[str]