// Copyright 2017 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.sys;

using fuchsia.io;
using zx;

type FlatNamespace = resource struct {
    /// The mount point for each of the directories below.
    ///
    /// For example, ["/pkg", "/svc"].
    paths vector<string>;

    /// The directories mounted at each path in the namespace.
    @available(replaced=10)
    directories vector<zx.Handle:CHANNEL>;
    @available(added=10)
    directories vector<client_end:fuchsia.io.Directory>;
};
