// 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 test.processbuilder;

struct EnvVar {
    string key;
    string value;
};

[Discoverable]
protocol Util {
    GetArguments() -> (vector<string> args);
    GetArgumentCount() -> (uint64 count);
    GetEnvironment() -> (vector<EnvVar> vars);
    GetEnvironmentCount() -> (uint64 count);
    DumpNamespace() -> (string contents);
    ReadFile(string path) -> (string contents);
    GetLifecycleKoid() -> (uint64 koid);
};
