import Bindings import XCTestDynamicOverlay public struct LoadCMix { public var run: (String, Data, Data) throws -> CMix public func callAsFunction( storageDir: String, password: Data, cMixParamsJSON: Data = GetCMixParams.liveDefault() ) throws -> CMix { try run(storageDir, password, cMixParamsJSON) } } extension LoadCMix { public static let live = LoadCMix { storageDir, password, cMixParamsJSON in var error: NSError? let bindingsCMix = BindingsLoadCmix(storageDir, password, cMixParamsJSON, &error) if let error = error { throw error } guard let bindingsCMix = bindingsCMix else { fatalError("BindingsLoadCMix returned `nil` without providing error") } return CMix.live(bindingsCMix) } } extension LoadCMix { public static let unimplemented = LoadCMix( run: XCTUnimplemented("\(Self.self)") ) }