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

using fuchsia.mem;

// Defines the attributes for a Link when the Link is created.
struct CreateLinkInfo {
    // Passed as root_json argument to StoryProvider.CreateStoryWithInfo()
    // Link.Set() to set the value in the root link of the new Story's primary
    // module.
    fuchsia.mem.Buffer initial_data;

    // If |allowed_types| is null, the Link contains JSON. No schema validation
    // is performed.
    LinkAllowedTypes? allowed_types;
};

struct LinkAllowedTypes {
    // The Link must contain an Entity (see Link.SetEntity()) that has at least
    // one of |allowed_entity_types| in its |Entity.GetTypes()| return value.
    //
    // If empty, allows any Entity type.
    vector<string> allowed_entity_types;
};
