// Copyright 2015 The Weave Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef LIBWEAVE_SRC_UTILS_H_
#define LIBWEAVE_SRC_UTILS_H_

#include <memory>
#include <string>

#include <base/values.h>
#include <weave/error.h>

namespace weave {

namespace errors {
extern const char kErrorDomain[];
extern const char kSchemaError[];
extern const char kInvalidCategoryError[];
extern const char kInvalidPackageError[];
}  // namespace errors

// kDefaultCategory represents a default state property category for standard
// properties from "base" package which are provided by buffet and not any of
// the daemons running on the device.
const char kDefaultCategory[] = "";

// Helper function to load a JSON dictionary from a string.
std::unique_ptr<base::DictionaryValue> LoadJsonDict(
    const std::string& json_string,
    ErrorPtr* error);

std::unique_ptr<base::DictionaryValue> ErrorInfoToJson(const Error& error);

}  // namespace weave

#endif  // LIBWEAVE_SRC_UTILS_H_
