import Foundation
import Postbox

public enum SecureIdRequestedFormField: Equatable {
    case just(SecureIdRequestedFormFieldValue)
    case oneOf([SecureIdRequestedFormFieldValue])
}

public enum SecureIdRequestedFormFieldValue: Equatable {
    case personalDetails(nativeName: Bool)
    case passport(selfie: Bool, translation: Bool)
    case driversLicense(selfie: Bool, translation: Bool)
    case idCard(selfie: Bool, translation: Bool)
    case internalPassport(selfie: Bool, translation: Bool)
    case passportRegistration(translation: Bool)
    case address
    case utilityBill(translation: Bool)
    case bankStatement(translation: Bool)
    case rentalAgreement(translation: Bool)
    case phone
    case email
    case temporaryRegistration(translation: Bool)
}

public struct SecureIdForm: Equatable {
    public let peerId: PeerId
    public let requestedFields: [SecureIdRequestedFormField]
    public let values: [SecureIdValueWithContext]
    
    public init(peerId: PeerId, requestedFields: [SecureIdRequestedFormField], values: [SecureIdValueWithContext]) {
        self.peerId = peerId
        self.requestedFields = requestedFields
        self.values = values
    }
    
    public static func ==(lhs: SecureIdForm, rhs: SecureIdForm) -> Bool {
        if lhs.peerId != rhs.peerId {
            return false
        }
        if lhs.requestedFields != rhs.requestedFields {
            return false
        }
        if lhs.values != rhs.values {
            return false
        }
        return true
    }
}