// Copyright 2022 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.driverhandle;

using zx;

@transport("Driver")
protocol DriverProtocol {};

@bindings_denylist("rust, cpp, hlcpp, dart, libfuzzer")
type ClientEndWrapper = resource struct {
    value client_end:DriverProtocol;
};

@bindings_denylist("rust, cpp, hlcpp, dart, libfuzzer")
type ServerEndWrapper = resource struct {
    value server_end:DriverProtocol;
};

@transport("Driver")
@bindings_denylist("rust, cpp, hlcpp, dart, libfuzzer")
protocol HandlesInProtocol {
    SendHandles(resource struct {
        t resource table {
            1: zircon_handle zx.handle:EVENT;
            2: fdf_handle client_end:DriverProtocol;
        };
    });
};
