// 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.
@available(added=HEAD)
library fuchsia.hardware.powersource.test;

using fuchsia.hardware.powersource;

/// Controller interface to allow modification of source state.
closed protocol SourceSimulator {
    /// Sets source info.
    strict SetPowerInfo(struct {
        info fuchsia.hardware.powersource.SourceInfo;
    });
    /// Sets battery info.
    strict SetBatteryInfo(struct {
        info fuchsia.hardware.powersource.BatteryInfo;
    });
};
