// 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 fuchsia.services.examples;

[Discoverable]
interface MindReader {
  /// When this method is called the service will attempt to guess
  /// what the calling process is thinking.
  ReadMind() -> (string response);
};

[Discoverable]
interface ThoughtLeaker {
  /// This service is used to leak the current thought of the process.
  /// If this service is exposed to the [MindReader] it will connect
  /// to it to extract the current thought.
  CurrentThought() -> (string response);
};
