// 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_PRIVET_CONSTANTS_H_
#define LIBWEAVE_SRC_PRIVET_CONSTANTS_H_

namespace weave {
namespace privet {

namespace errors {

extern const char kDomain[];

extern const char kInvalidClientCommitment[];
extern const char kInvalidFormat[];
extern const char kMissingAuthorization[];
extern const char kInvalidAuthorization[];
extern const char kInvalidAuthorizationScope[];
extern const char kAuthorizationExpired[];
extern const char kCommitmentMismatch[];
extern const char kUnknownSession[];
extern const char kInvalidAuthCode[];
extern const char kInvalidAuthMode[];
extern const char kInvalidRequestedScope[];
extern const char kAccessDenied[];
extern const char kInvalidParams[];
extern const char kSetupUnavailable[];
extern const char kDeviceBusy[];
extern const char kInvalidState[];
extern const char kInvalidSsid[];
extern const char kInvalidPassphrase[];
extern const char kNotFound[];
extern const char kNotImplemented[];
}  // namespace errors
}  // namespace privet
}  // namespace weave

#endif  // LIBWEAVE_SRC_PRIVET_CONSTANTS_H_
