// Copyright 2023 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

library fuchsia.hwinfo.mock;

using fuchsia.hwinfo;

/// This Setter protocol is used to set the return values for a hwinfo mock.
@discoverable
closed protocol Setter {
    /// Sets the responses from the mock.
    ///
    /// When this method returns future calls to the mocked hwinfo service
    /// will return the given values until a subsequent request to
    /// SetResponses.
    strict SetResponses(struct {
        device fuchsia.hwinfo.DeviceInfo;
        product fuchsia.hwinfo.ProductInfo;
        board fuchsia.hwinfo.BoardInfo;
    }) -> ();
};
