import ContentsquareSDK

@objc(CSQInterfacePropertyTracking)
public class CSQInterfacePropertyTracking: NSObject {
    let CSQType: _CSQ.Type
    
    @objc
    public convenience override init() {
        self.init(CSQ.self)
    }
    
    init(_ CSQType: _CSQ.Type) {
        self.CSQType = CSQType
        super.init()
    }
    
    @objc
    public func addDynamicStringVar(_ key: String, value: String) {
        let dynamicVar = DynamicVar(key: key, value: value)
        CSQType.addDynamicVar(dynamicVar)
    }
    
    @objc
    public func addDynamicIntVar(_ key: String, value: UInt32) {
        let dynamicVar = DynamicVar(key: key, value: value)
        CSQType.addDynamicVar(dynamicVar)
    }
    
    @objc
    public func addEventProperties(_ properties: [String: Any]?) {
        let processedProperties = PropertyValueConverter.processPropertyValues(properties)
        CSQType.addEventProperties(processedProperties)
    }
    
    @objc
    public func removeEventProperty(_ key: String) {
        CSQType.removeEventProperty(key)
    }
    
    @objc
    public func clearEventProperties() {
        CSQType.clearEventProperties()
    }
    
    @objc
    public func addUserProperties(_ properties: [String: Any]) {
        let processedProperties = PropertyValueConverter.processPropertyValues(properties)
        CSQType.addUserProperties(processedProperties)
    }
}

