// 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;
};

[ForDeprecatedCBindings]
protocol Drawing {
    Draw(Point p, Direction d);
    DrawLots(zx.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);
};
