// Copyright 2018 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.examples.simple;

using zx;

struct Point {
    int32 x;
    int32 y;
};

enum Direction : uint32 {
    Up = 0;
    Down = 1;
    Left = 2;
    Right = 3;
};

[Layout = "Simple"]
protocol Drawing {
    Draw(Point p, Direction d);
    DrawLots(handle<vmo> commands) -> (int32 result, Point p);
    DrawArray(array<Point>:4 points) -> (zx.status rv);
    -> DrawSucceeded(uint32 draws);
    Describe(string:64 one) -> (string:128 two);
};
