// Copyright 2019 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.
/// Defines the protocols used to interface with the core Fuchsia identity
/// system.
///
/// Clients may use these protocols to access, maintain, and authenticate the
/// Fuchsia accounts and personae defined by the identity system.
///
/// The entry point is the discoverable `AccountManager` protocol. This provides
/// access to all accounts of the device and should only be accessible to a
/// small number of privileged clients. `AccountManager` may be used to acquire
/// less powerful `Account` and `Persona` handles that may then be passed to
/// other parts of the system.
library fuchsia.identity.account;
