#pragma once

namespace PapyrusInterface {
    
    // Function declarations for Papyrus registration
    RE::BSFixedString TakePhoto(
        RE::StaticFunctionTag*,
        RE::BSFixedString basePath,
        RE::BSFixedString imageType,
        float jpgCompression,
        RE::BSFixedString compressionMode,
        float gifMultiFrameDuration
    );
    
    RE::BSFixedString Get_Result(RE::StaticFunctionTag*);
    bool Cancel(RE::StaticFunctionTag*);
    bool CheckPath(RE::StaticFunctionTag*, RE::BSFixedString path);
    
    // Worker thread function
    void CaptureWorkerThread(
        std::string basePath,
        std::string imageType,
        float jpgCompression,
        std::string compressionMode,
        float gifMultiFrameDuration
    );
    
    // Registration function
    bool RegisterFunctions(RE::BSScript::IVirtualMachine* vm);
    
    // Helper functions
    std::string ToLowerCase(const std::string& str);
    bool IsValidPath(const std::string& pathStr);
}