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

using zx;
using fuchsia.hardware.pty;

/// Manages virtual console sessions.
[Discoverable, ForDeprecatedCBindings]
protocol SessionManager {
    /// Create a new virtual console session.
    // TODO(fxbug.dev/33204): Remove response status and debug why this doesn't work async when we switch
    // to new pty impl.
    CreateSession(request<fuchsia.hardware.pty.Device> session) -> (zx.status status);

    /// Returns true if virtcon currently has a display that it can display something on.
    HasPrimaryConnected() -> (bool connected);
};
