// 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]
protocol StateWatcher {
  /// Will immediately return on first call; subsequent calls will return on
  /// change.
  Watch() -> (State state);
};

/// Enum of different possible setup states
enum State {
  /// 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;
};
