// Copyright 2021 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.starnix.developer;

using fuchsia.url;
using zx;

type ShellParams = resource table {
    1: standard_in zx.handle:SOCKET;
    2: standard_out zx.handle:SOCKET;
    3: standard_err zx.handle:SOCKET;
};

protocol ShellController {
    -> OnTerminated(struct {
        return_code int32;
    });
};

@discoverable
protocol Manager {
    VsockConnect(resource struct {
        port uint32;
        bridge_socket zx.handle:SOCKET;
    });
    Start(struct {
        url fuchsia.url.Url;
    }) -> ();
    StartShell(resource struct {
        params ShellParams;
        controller server_end:ShellController;
    });
};
