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

/// Interface that allows watching of changes to the cast setup state.
@discoverable
closed protocol StateWatcher {
    /// Will immediately return on first call; subsequent calls will return on
    /// change.
    strict Watch() -> (struct {
        state State;
    });
};

/// Enum of different possible setup states
type State = strict enum {
    /// State is not determined.
    UNKNOWN = 0;

    /// Setup is not complete and is in progress.
    IN_PROGRESS = 1;

    /// Configured once but disconnected for now.
    OFFLINE = 2;

    /// Setup is complete and device is connected.
    COMPLETE = 3;
};
