// Copyright 2020 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.weave;

using fuchsia.mem as mem;
using zx;

/// Protocol to allow components to provide initial configuration data derived from
/// an existing Weave implementation to ensure continuity of the Weave fabric and
/// other Weave settings or configuration data.
@discoverable
protocol Bootstrap {
    /// Import a JSON-formatted Weave config providing data in the format
    /// expected to satisfy the Weave DeviceLayer
    /// [ConfigurationManager](https://github.com/openweave/openweave-core/blob/master/src/adaptations/device-layer/include/Weave/DeviceLayer/ConfigurationManager.h).
    ///
    /// Configuration is guaranteed to have been persisted upon successful
    /// completion of this call.
    ImportWeaveConfig(resource struct {
        config_json mem.Buffer;
    }) -> (struct {}) error zx.status;
};
