// 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 fidl.test.coding.fuchsia;

enum TestEnum : uint32 {
    ONE = 1;
};

protocol Llcpp {
    Action() -> (int32 v);
    EnumAction() -> (TestEnum v);
};

protocol Example {
    TwoWay(string in) -> (string out);
    OneWay(string in);
    -> OnEvent(string out);
};

protocol Simple {
    /// Replies with the value requested.
    Echo(int32 request) -> (int32 reply);

    /// Never actually replies.  Just closes instead.
    Close() -> (int32 v);
};
