// Copyright 2023 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.inspect;

@available(added=16)
const MAX_NAME_LENGTH uint64 = 4096;

@discoverable
@available(added=16, replaced=21)
closed protocol InspectSink {
    /// Publishes a handle to the `fuchsia.inspect.Tree` protocol that the server can use to read
    /// Inspect data, including lazy nodes.
    strict Publish(resource table {
        1: tree client_end:Tree;
        2: name string:MAX_NAME_LENGTH;
    });
};

@discoverable
@available(added=21)
open protocol InspectSink {
    /// Publishes a handle to the `fuchsia.inspect.Tree` protocol that the server can use to read
    /// Inspect data, including lazy nodes.
    flexible Publish(resource table {
        1: tree client_end:Tree;
        2: name string:MAX_NAME_LENGTH;
    });
};
