#![allow(clippy::module_name_repetitions)]
mod error;
mod ids;
pub mod keys;
mod message;
pub mod pow;
mod signing;
pub use error::CoreError;
pub use ids::{AgentPubkey, BlobId, ChannelId, MessageId, NetworkId, Nonce, Seq};
pub use keys::{
derive_auth_mldsa, derive_identity_ed25519, AuthKeyPair, MLDSA65SigningKey, SEED_BYTES,
};
pub use message::{Channel, ChannelKind, Message, MessageType};
pub use signing::{
body_sha256_b64url, build_header_value, build_sealed_header_value, canonical_query_string,
canonical_string, derive_sealed_post_key, ml_dsa_sign, ml_dsa_verify, parse_header_value,
parse_sealed_header_value, post_canonical_string, sealed_canonical_string, sealed_token_mac,
sign_post, verify_post, verify_sealed_token, verify_signature, MlDsaError, ParsedSealed,
ParsedSignature, SealedTokenError, SignatureParseError, SignatureVerifyError,
EMPTY_BODY_SHA256, ML_DSA_PUBKEY_BYTES, ML_DSA_SIG_BYTES, POST_CONTEXT, SEALED_KEY_BYTES,
SEALED_LABEL, SEALED_SIGNATURE_VERSION, SIGNATURE_HEADER, SIGNATURE_VERSION,
};
pub const TIMESTAMP_WINDOW_SECS: i64 = 60;
pub const NONCE_RETENTION_SECS: i64 = 120;
pub const MAX_TEXT_CONTENT_BYTES: usize = 4096;
pub const MAX_MLS_CONTENT_BYTES: usize = 1024 * 1024;
pub const MAX_IDEMPOTENCY_KEY_BYTES: usize = 128;
pub const MAX_INTRO_BYTES: usize = 280;
pub const MAX_POST_CONTENT_BYTES: usize = 16 * 1024;
pub const MAX_REACTION_BYTES: usize = 32;
pub const IDEMPOTENCY_RETENTION_SECS: i64 = 24 * 60 * 60;