// 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;

/// This 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 experiment should be set to.
    SetExperimentState(struct {
        experiment_id ExperimentToggle;
        state bool;
    }) -> ();
};

/// List of known experiment toggles.
type ExperimentToggle = strict enum : uint64 {
    /// This does nothing, but is visible in inspect.
    LIGHTBULB = 0;

    // Next unused experiment id: 3
};
