import Foundation
import ComplyCubeMobileSDK

public final class StringStageParser: StageParser {
    public init() {}
    public func canParse(_ input: Any) -> Bool { input is String }

    public func parse(_ input: Any) throws -> ComplyCubeMobileSDKStage? {
        switch input as! String {
        case "intro", "welcome":        return WelcomeStageBuilder().build()
        case "consent":      return UserConsentStageBuilder().build()
        case "documentCapture" : return DocumentStageBuilder().build()
        case "complete":     return nil
        case "face_capture", "faceCapture":
            return BiometricStageBuilder().setType(type: .photo).build()
        case "videoCapture":
            return BiometricStageBuilder().setType(type: .video).build()
        case "addressCapture": return AddressCaptureStageBuilder().build()
        case "poaCapture" : return ProofOfAddressStageBuilder().build()
        default: return nil
        }
    }
}
