//
// Copyright © 2022 Nevis Security AG. All rights reserved.
//

import NevisMobileAuthentication

struct PinPolicyMessage: Decodable {
	// MARK: Properties

	let minLength: Int
	let maxLength: Int
}

extension PinPolicyMessage {
	func asPinPolicy(operationId: String) -> PinPolicy {
		PinPolicyImpl(operationId: operationId, minLength: minLength, maxLength: maxLength)
	}
}

extension AuthCloudApiRegistrationMessage {
	var pinPolicy: PinPolicy? {
		pinPolicyMessage?.asPinPolicy(operationId: operationId)
	}
}

extension OutOfBandRegistrationMessage {
	var pinPolicy: PinPolicy? {
		pinPolicyMessage?.asPinPolicy(operationId: operationId)
	}
}

extension PinChangeMessage {
	var pinPolicy: PinPolicy? {
		pinPolicyMessage?.asPinPolicy(operationId: operationId)
	}
}

extension RegistrationMessage {
	var pinPolicy: PinPolicy? {
		pinPolicyMessage?.asPinPolicy(operationId: operationId)
	}
}
