//! Data Transfer Objects for the StemeDB HTTP API.
//!
//! These types define the JSON API contract. They use hex-encoded strings
//! for binary data (hashes, signatures, agent IDs) to be JSON-friendly.
//!
//! # Conversion Pattern
//!
//! DTOs convert to/from internal stemedb-core types:
//! - Request DTOs → internal types (decode hex to bytes)
//! - Internal types → Response DTOs (encode bytes to hex)

// Module declarations
pub mod advanced;
pub mod audit;
pub mod concepts;
pub mod create;
pub mod enums;
pub mod escalation;
pub mod gold_standard;
pub mod query_params;
pub mod responses;
pub mod skeptic;

// Re-export all public types for backward compatibility
// This allows existing code to use `use crate::dto::*;` without changes

// From enums module
pub use enums::{
    LensDto, LifecycleDto, ObjectValueDto, SignatureDto, SourceClassDto, SupersessionTypeDto,
};

// From create module
pub use create::{
    CreateAssertionRequest, CreateEpochRequest, CreateResponse, CreateVoteRequest,
    DecayTrustRanksRequest, DecayTrustRanksResponse, StoreSourceRequest, StoreSourceResponse,
    SupersedeRequest, SupersedeResponse,
};

// From query_params module
pub use query_params::QueryParams;

// From responses module
pub use responses::{
    AssertionResponse, ChangeEntryDto, ErrorResponse, HealthResponse, LayeredQueryResponse,
    ProvenanceResponse, QueryResponse, TierResolutionDto,
};

// From audit module
pub use audit::{
    AuditQueryParams, ContributingAssertionDto, QueryAuditListResponse, QueryAuditResponse,
    QueryParamsAuditDto, TraceParams, TraceResponse,
};

// From skeptic module
pub use skeptic::{
    AgentSummaryDto, ClaimSummaryDto, ResolutionStatusDto, SkepticQueryParams, SkepticResponse,
    SourceSummaryDto,
};

// From advanced module
pub use advanced::{ConstraintEntryDto, ConstraintsQueryParams, ConstraintsResponse};

// From escalation module
pub use escalation::{EscalationEventDto, EscalationLevelDto, EscalationListResponse};

// From gold_standard module
pub use gold_standard::{
    CreateGoldStandardRequest, CreateGoldStandardResponse, GoldStandardDto,
    GoldStandardListResponse, VerificationResult, VerifyAgentRequest,
};

// From concepts module
pub use concepts::{
    AliasMapping, AliasOriginDto, AliasResponse, AliasSuggestion, ConceptPathInfo,
    CreateAliasRequest, DeleteAliasRequest, DeleteAliasResponse, ListAliasesParams,
    ListAliasesResponse, ResolveAliasParams, ResolveAliasResponse, SuggestAliasesResponse,
};
