1mod calculations;
5mod circuit_breaker;
6mod collections;
7mod content;
8mod formatting;
9mod network;
10mod security;
11mod statistics;
12mod time;
13mod time_window;
14mod validation;
15
16pub use statistics::{ExponentialBackoff, Histogram, SlidingWindow, StreamingStats};
18
19pub use circuit_breaker::{CircuitBreaker, CircuitState};
21
22pub use time_window::{BucketedTimeSeries, SlidingWindowRateLimiter, TimeBucket, TimeWindow};
24
25pub use time::{
27 format_timestamp, is_timestamp_valid, ms_to_secs, now_ms, now_secs, parse_duration_str,
28 secs_to_ms,
29};
30
31pub use formatting::{
33 cid_to_short_id, format_bandwidth, format_bytes, format_duration_ms, format_points,
34 format_ratio_as_percentage, generate_slug, normalize_tag, sanitize_string, sanitize_tag,
35 sanitize_tags, truncate_string,
36};
37
38pub use validation::{
40 is_private_ipv4, is_safe_string, is_valid_cid, is_valid_email, is_valid_hex, is_valid_ipv4,
41 is_valid_ipv6, is_valid_multiaddr, is_valid_peer_id, is_valid_port, is_valid_url,
42 is_valid_username, validate_and_sanitize_tag, validate_bandwidth_reasonable,
43 validate_blake3_hash, validate_challenge_nonce, validate_chunk_indices_batch,
44 validate_chunk_size, validate_cids_batch, validate_content_size_in_range,
45 validate_ed25519_public_key, validate_ed25519_signature, validate_emails_batch,
46 validate_hash_length, validate_latency, validate_nonce_length, validate_price_range,
47 validate_proof_freshness, validate_public_key_length, validate_signature_length,
48 validate_tags_list, validate_usernames_batch,
49};
50
51pub use calculations::{
53 actual_chunk_size, average, bps_to_mbps, byte_to_chunk_index, bytes_to_gb_f64,
54 calculate_bandwidth_mbps, calculate_content_price, calculate_creator_share,
55 calculate_demand_multiplier, calculate_ema, calculate_growth_rate, calculate_latency_ms,
56 calculate_mean, calculate_median, calculate_moving_average, calculate_percentage,
57 calculate_percentage_change, calculate_percentile, calculate_platform_fee,
58 calculate_provider_earnings, calculate_rate, calculate_reputation_bonus,
59 calculate_reputation_decay, calculate_reward_with_penalty, calculate_sliding_window_count,
60 calculate_stats, calculate_std_dev, calculate_storage_cost, calculate_token_bucket,
61 calculate_uptime_percentage, calculate_z_score, chunk_byte_range, chunk_offset, clamp,
62 estimate_transfer_time, gb_to_bytes_f64, is_outlier_iqr, is_rate_limit_allowed,
63 is_valid_chunk_index, is_within_tolerance, lerp, mbps_to_bps, normalize,
64 round_down_to_multiple, round_up_to_multiple, update_reputation,
65};
66
67pub use security::{
69 constant_time_eq, constant_time_eq_32, count_set_bits, decode_hex, encode_hex, generate_nonce,
70 is_all_zeros, random_jitter, rotate_bytes_left, rotate_bytes_right, xor_bytes,
71};
72
73pub use network::{
75 chunk_vec, extract_peer_id_from_multiaddr, generate_session_id, is_valid_peer_id_format,
76 parse_bandwidth_str,
77};
78
79pub use content::{get_file_extension, has_valid_extension, mime_to_category_hint};
81
82pub use collections::{
84 batch_by_size, deduplicate_preserve_order, find_duplicates, flatten, group_by, merge_sorted,
85 partition, skip, take, zip_with,
86};