// 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 fuchsia.hardware.pty;

/// Manages virtual console sessions.
@discoverable
closed protocol SessionManager {
    /// Create a new virtual console session.
    strict CreateSession(resource struct {
        session server_end:fuchsia.hardware.pty.Device;
    });

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