// Copyright 2019 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.pkg;

/// Configures a package resolver.
[Discoverable]
protocol PackageResolverAdmin {
    /// Sets an experiment toggle to a specific state (on or off).
    ///
    /// Experiment states are not persisted and apply only while the resolver
    /// is running.
    ///
    /// + request `experiment_id` the experiment to enable or disable.
    /// + request `state` the state the experimnet should be set to.
    /// * error a zx.status value indicating success or failure.
    ///     Fails with `ZX_ERR_INVALID_ARGS if the experiment is unknown
    ///     to the resolver.
    SetExperimentState(ExperimentToggle experiment_id, bool state) -> ();
};

/// List of known experiment toggles
enum ExperimentToggle : uint64 {
    /// Does nothing, but visible in inspect.
    LIGHTBULB = 0;

    // Next unused experiment id: 3
};
