// 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.modular;

// This service is provided by a Session Agent. When the Session Agent is
// started, this service is called by the intelligence framework and provided
// with capabilities that Session Agents may use.
// TODO(miguelfrde): these services can be exposed to Session Agents in the
// namespace by creating a new realm (back then environment). For that reason,
// we had to have the component itself expose an outgoing service for
// initialization. Now, we can give each component separate service instances,
// which allows us to avoid this unnecessary exchange of services.
[Discoverable]
interface SessionAgentInitializer {
  1: Initialize(FocusProvider focus_provider, PuppetMaster puppet_master);
};
