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

// Module parameters are named pointers to link instances.
struct CreateModuleParameterMapInfo {
    // Contains instructions to create each name in the parameter map.
    vector<CreateModuleParameterMapEntry>? property_info;
};

struct CreateModuleParameterMapEntry {
    string? key;
    CreateModuleParameterInfo value;
};

union CreateModuleParameterInfo {
    // Instructs parameter map initialization to either use an existing Link
    // (|link_path| is set) or create a new Link (|create_link| is set).
    LinkPath link_path;
    CreateLinkInfo create_link;
};
