// 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.accessibility.tts;

/// An interface for TTS Engines provide speech output.
@discoverable
protocol EngineRegistry {
    /// A TTS engine registers itself to start listening for incoming speech
    /// output requests through `engine`.
    /// At the moment, only one TTS Engine can be registered at a time.
    /// This registry owners the first engine to register itself.
    /// If an engine crashes and wants to register again, calling this method
    /// will restart the connection. An error is returned if another engine is
    /// already registered.
    RegisterEngine(resource struct {
        engine client_end:Engine;
    }) -> (struct {}) error Error;
};
