// Copyright 2018 The Chromium OS 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 OOBE_CONFIG_LOAD_OOBE_CONFIG_INTERFACE_H_
#define OOBE_CONFIG_LOAD_OOBE_CONFIG_INTERFACE_H_

#include <string>

#include <base/macros.h>

namespace oobe_config {

class LoadOobeConfigInterface {
 public:
  LoadOobeConfigInterface() = default;
  LoadOobeConfigInterface(const LoadOobeConfigInterface&) = delete;
  LoadOobeConfigInterface& operator=(const LoadOobeConfigInterface&) = delete;

  virtual ~LoadOobeConfigInterface() = default;

  // Populates |config| with the oobe config file in json format. Additionally
  // populates the |enrollment_domain| if exist any. On error it returns false
  // otherwise it returns true.
  virtual bool GetOobeConfigJson(std::string* config,
                                 std::string* enrollment_domain) = 0;
};

}  // namespace oobe_config

#endif  // OOBE_CONFIG_LOAD_OOBE_CONFIG_INTERFACE_H_
