#![doc = include_str!("../README.md")]
#![allow(clippy::explicit_auto_deref, clippy::disallowed_macros)]
#![warn(missing_docs)]
#![warn(rust_2018_idioms)]
#![warn(clippy::correctness)]
#![cfg_attr(not(test), warn(clippy::perf))]
#![cfg_attr(
    doc,
    warn(
        rustdoc::bare_urls,
        rustdoc::broken_intra_doc_links,
        rustdoc::invalid_codeblock_attributes,
        rustdoc::invalid_rust_codeblocks,
    )
)]
// Lint with many false-positives, and safer-ffi takes care of our safety anyways.
#![allow(improper_ctypes_definitions)]

#[allow(unused_imports)]
#[macro_use]
extern crate ext_trait;
#[allow(unused_extern_crates)]
extern crate ffi_sdk;
#[macro_use]
extern crate macro_rules_attribute;

#[cfg(test)]
extern crate self as dittolive_ditto;

#[macro_use]
#[doc(hidden)]
/// Internal utility functions / macros
pub mod utils;

pub mod disk_usage;

#[doc(hidden)]
#[deprecated(note = "See the 'identity' module instead")]
pub use crate::identity::auth;

#[doc(hidden)]
pub mod ditto;
#[doc(hidden)]
#[allow(deprecated)]
pub use crate::ditto::builder::DittoBuilder;
pub use crate::ditto::{
    init::{DittoAuthExpirationHandler, DittoConfig, DittoConfigConnect},
    AppId, Ditto, LogLevel,
};

pub mod dql;

pub mod error;

#[cfg(feature = "experimental")]
#[deprecated(
    since = "4.14.4",
    note = "Experimental module will be removed in SDK 5.0"
)]
pub mod experimental;

pub mod identity;

pub mod fs;

pub mod logger;

#[deprecated(since = "4.14.4", note = "Will be removed in SDK 5.0")]
pub mod observer;

pub mod prelude;

pub mod presence;

pub mod small_peer_info;

pub mod store;

// TODO(v5): remove
#[doc(hidden)]
#[allow(deprecated)]
pub use crate::store::query_builder::subscription;

pub mod sync;

pub mod transport;

// TODO(v5): remove
#[doc(hidden)]
#[allow(deprecated)]
pub use crate::store::query_builder::types;

#[cfg(test)]
pub(crate) mod test_helpers;
