// Copyright 2017 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;

// Agents use this interface to create Entity references that can subsequently
// be dereferenced into an |Entity| interface using |EntityResolver|.
// Agents that create entity references must also expose an |EntityProvider|
// service in their application's outgoing services, so that agents can provide
// data for |Entity|s that they create. This interface is available through an
// agent's |AgentContext|.
interface EntityReferenceFactory {
    // Agents call this to manufacture a reference for an Entity they will
    // provide. Returns an opaque, persistable |entity_reference| that components
    // can resolve into an |Entity| interface using |EntityResolver|. When data is
    // requested from an |Entity| interface resolved from this |entity_reference|,
    // the |cookie| associated with this |entity_reference| will be passed back to
    // the |EntityProvider| of the Agent that originally created this reference.
    //
    // |cookie| should uniquely identify the |Entity| within the scope of the
    // calling entity provider. For example, it may be used as the primary key
    // value for a database.
    1: CreateReference(string cookie) -> (string entity_reference);
};
