// 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 fuchsia.shell.ermine;

// Interface for the showing or hiding the Ask bar and receiving notifications
// when it is shown or dismissed by the user.
[Discoverable]
protocol AskBar {
    // Load the Ask bar at the supplied elevation.
    Load(float32 elevation);

    // Show the Ask bar.
    Show();

    // Hide the Ask bar.
    Hide();

    // Event stream when Ask bar is shown.
    -> OnVisible();

    // Event stream when the Ask bar is hidden.
    -> OnHidden();
};
