//! Social graph module for AiFastDb
//!
//! Provides specialized types and algorithms for social network analysis:
//! - Person management and friend relationships
//! - Path finding between people (social path discovery)
//! - Network analysis (N-degree contacts, mutual friends, relationship strength)
//! - Item matching (shared items discovery)
//! - Attribute matching (shared attributes, compatibility analysis)
//! - Birthday matching (same birthday discovery and recommendations)
//! - Family tree (genealogy) management and relationship calculation
//! - **High-concurrency graph store** for high-throughput write workloads
//!
//! # Store Implementation
//!
//! [`SocialStoreV2`]: High-concurrency implementation backed by sharded GraphShardRouter
//!
//! # Example
//!
//! ```ignore
//! use aifastdb_core::social::{SocialStoreV2, SocialStoreV2Config, PersonInput};
//!
//! // Create store with high-throughput config
//! let config = SocialStoreV2Config::new("data/social")
//!     .with_shard_count(8)
//!     .high_throughput();
//! let store = SocialStoreV2::new(config);
//!
//! // Sync API
//! let person = store.add_person(PersonInput {
//!     name: "Alice".to_string(),
//!     ..Default::default()
//! });
//!
//! // Or use async API for better concurrency
//! let person = store.add_person_async(input).await?;
//! ```

pub mod types;
pub mod store_v2;
pub mod path_finder;
pub mod network_analyzer;
pub mod item_matcher;
pub mod attribute_matcher;
pub mod birthday_matcher;
pub mod family_tree;
pub mod concurrent;
pub mod vector_wal;


// Re-export commonly used types
pub use types::*;
pub use store_v2::{SocialStoreV2, SocialStoreV2Config, PerformanceSummary, VectorSearchConfig, VectorEntitySearchResult};
pub use path_finder::PathFinder;
pub use network_analyzer::NetworkAnalyzer;
pub use item_matcher::ItemMatcher;
pub use attribute_matcher::AttributeMatcher;
pub use birthday_matcher::{BirthdayMatcher, BirthdayMatchResult, BirthdayMatchType, BirthdayStats, BirthdayIndex};
pub use family_tree::{
    FamilyTreeMatcher, Gender, FamilyRelationType, FamilyMemberInput,
    FamilyPath, FamilyPathStep, PathDirection, FamilyTree, FamilyStats,
};
pub use vector_wal::{VectorWAL, VectorWALEntry, VectorWALOp};