// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

[DartPackage="_mojo_for_test_only",
 JavaPackage="org.chromium.mojo.bindings.test.mojom.sample",
 JavaConstantsClassName="InterfaceConstants",
 Foo="hello world"]
module sample;

const uint64 kLong = 4405;

enum Enum {
  VALUE,
};

interface Provider {
  EchoString(string a) => (string a);
  EchoStrings(string a, string b) => (string a, string b);
  EchoMessagePipeHandle(handle<message_pipe> a) => (handle<message_pipe> a);
  EchoEnum(Enum a) => (Enum a);
  EchoInt(int32 a) => (int32 a);
};

interface IntegerAccessor {
  GetInteger() => (int64 data, [MinVersion=2] Enum type);
  [MinVersion=1]
  SetInteger(int64 data, [MinVersion=3] Enum type);
};

// Used for testing that structs are generated for request params and response
// params.  Also used to test the generated method ordinals.
interface SampleInterface {
  SampleMethod1@1(int32 in1, string? in2) => (string? out1, Enum out2);
  SampleMethod0@0();
  SampleMethod2@2();
};
