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

//! Broadcast Audio Profile Common Library
//!
//! Contains common structs and implenmentations for implementing:
//!  - Broadcast Audio Scan Service
//!  - Basic Audio Profile Scan Delegator
//!  - Basic Audio Profile Broadcast Assistant

pub mod types;
