// Copyright 2020 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.benchmarkfidl;

type ByteVector = struct {
    bytes vector<uint8>;
};

closed protocol ByteVectorEventProtocol {
    strict -> Send(struct {
        val ByteVector;
    });
};

closed protocol ByteVectorEchoCall {
    strict Echo(struct {
        val ByteVector;
    }) -> (struct {
        val ByteVector;
    });
};

@transport("Driver")
closed protocol ByteVectorEchoCallDriver {
    strict Echo(struct {
        val ByteVector;
    }) -> (struct {
        val ByteVector;
    });
};
