mod common;
mod constants;
pub mod limits;
mod models;
pub mod traits;
mod types;
mod uri_parser;
mod utils;

// Re-export constants
pub use constants::{APP_PATH, PROTOCOL, PUBLIC_PATH, VERSION};
// Re-export common utilities
pub use common::validate_crockford_id;
#[doc(inline)]
pub use limits::*;
// Re-export domain types
pub use models::blob::PubkyAppBlob;
pub use models::bookmark::PubkyAppBookmark;
pub use models::feed::{PubkyAppFeed, PubkyAppFeedLayout, PubkyAppFeedReach, PubkyAppFeedSort};
pub use models::file::{PubkyAppFile, VALID_MIME_TYPES};
pub use models::follow::PubkyAppFollow;
pub use models::last_read::PubkyAppLastRead;
pub use models::mute::PubkyAppMute;
pub use models::post::{
    PubkyAppCollectionContent, PubkyAppPost, PubkyAppPostEmbed, PubkyAppPostKind,
};
pub use models::tag::PubkyAppTag;
pub use models::user::{PubkyAppUser, PubkyAppUserLink};
pub use models::PubkyAppObject;
pub use types::PubkyId;
pub use uri_parser::{ParsedUri, Resource};
pub use utils::*;

// Our WASM module
#[cfg(target_arch = "wasm32")]
mod wasm;
// Re-export the Wasm functions so they're available to wasm-pack
#[cfg(target_arch = "wasm32")]
pub use wasm::*;
