@startuml download_model
actor User
participant "Environment" as env
participant "ModelDownloader" as downloader

User -> downloader: download_model()
activate downloader

downloader -> env: Get MODEL_CLASS
activate env
env --> downloader: 'hf' or 'gguf'
deactivate env

alt MODEL_CLASS is 'hf'
    downloader -> downloader: download_hf_model()
    activate downloader
    downloader -> downloader: model_file_exists_and_valid()
    downloader -> downloader: write_model_path_to_txt_file()
    deactivate downloader
else MODEL_CLASS is 'gguf'
    downloader -> downloader: download_gguf_model()
    activate downloader
    downloader -> downloader: model_file_exists_and_valid()
    downloader -> downloader: write_model_path_to_txt_file()
    deactivate downloader
else Unsupported model class
    downloader -> User: Print "Unsupported model class"
end

deactivate downloader
@enduml