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

import NevisMobileAuthentication

actor PinChangeOperation: StandardOperation {
	typealias T = ()

	// MARK: Properties

	private(set) var state: OperationState
	let onSuccess: SuccessHandler
	let onError: ErrorHandler
	let pinChanger: PinChanger

	// MARK: Initialization

	init(operationId: String, method: ReactMethod, pinPolicy: PinPolicy?) {
		self.state = NoOperationState()
		self.onSuccess = OnSuccessImpl(operationId: operationId, method: method).onSuccess
		self.onError = OnErrorImpl(operationId: operationId, method: method).onError
		self.pinChanger = PinChangerImpl(operationId: operationId, pinPolicy: pinPolicy)
	}

	// MARK: Public Interface

	func update(state: PinChangeOperationState) -> PinChangeOperation {
		self.state = state
		return self
	}
}
