// 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.firebase.messaging;

@discoverable
protocol Controller {
    /// Registers the app with the FCM backend and binds a handle for app
    /// specific operations.
    /// On error, client is left unbound.
    CreateClient(resource struct {
        application Application;
        client server_end:Client;
    }) -> (struct {
        token string:optional;
        error box<Error>;
    });
};
