// Copyright 2022 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.

// WARNING: This file is machine generated by bindc.

#ifndef BIND_TEST_LIB_BINDLIB_
#define BIND_TEST_LIB_BINDLIB_

#include <string>

#include <bind/another/bindlibrary/cpp/bind.h>

namespace bind_test_lib {

static const char KINGFISHER[] = "test.lib.KINGFISHER";
static const char KINGFISHER_BELTED[] = "test.lib.KINGFISHER.BELTED";

static const char MIMID[] = "test.lib.Mimid";
static const char MIMID_CATBIRD[] = "test.lib.Mimid.Catbird";
static const char MIMID_THRASHER[] = "test.lib.Mimid.Thrasher";
static const char MIMID_TREMBLER[] = "test.lib.Mimid.Trembler";
static const char MIMID_MOCKINGBIRD[] = "test.lib.Mimid.Mockingbird";

static const char PHAINOPEPLA[] = "test.lib.Phainopepla";

static const char THRUSH[] = "test.lib.THRUSH";
static const char THRUSH_HERMIT[] = "hermit_thrush";
static const char THRUSH_ROBIN[] = "robin";
static const char THRUSH_SOLITAIRE[] = "solitaire";

static const char WAXWING[] = "test.lib.WAXWING";

static const char PICIDAE[] = "test.lib.PICIDAE";
static constexpr uint32_t PICIDAE_FLICKER = 16;
static constexpr uint32_t PICIDAE_SAPSUCKER = 200;

static const char NUTHATCH[] = "test.lib.NUTHATCH";

static const char FLYCATCHER[] = "test.lib.FLYCATCHER";
static constexpr bool FLYCATCHER_PHOEBE = true;
static constexpr bool FLYCATCHER_KESTREL = false;

static constexpr uint32_t BIND_PROTOCOL_DEVICE = 10;
static constexpr uint32_t BIND_PROTOCOL_IMPL = 15;

}  // namespace bind_test_lib

#endif  // BIND_TEST_LIB_BINDLIB_
