prns-core 0.3.4

Pure Reticulum engine and wire contract for Personal Reticulum
mod blackhole;
mod command_execution;
mod commands;
mod deadlines;
mod destination_identity;
mod introspection;
mod management;
mod node_egress;
mod node_ingress;
mod proof;
mod reaction;
mod registration;
mod settlement;
mod state;
mod tunnel;
mod wake;

pub use blackhole::{
    BlackholeIdentityEffect, BlackholeSeedEffect, BlackholeSeedReport, UnblackholeIdentityEffect,
};
pub(crate) use destination_identity::RememberAnnouncedDestinationIdentityOutcome;
pub use destination_identity::{
    DestinationIdentityRetentionEffect, DestinationIdentitySeedOutcome, MarkDestinationUsedEffect,
    ReleaseDestinationEffect, RetainDestinationEffect, RetainIdentityEffect,
};
pub use management::{
    DropRouteEffect, DropRouteOutcome, DropRoutesViaEffect, DropRoutesViaOutcome,
};

cfg_if::cfg_if! {
    if #[cfg(feature = "runtime-metrics")] {
        mod metrics;

        pub use metrics::{
            AnnounceCommandCounts, AnnounceCommandOutcome, AnnounceIngressCounts,
            AnnounceIngressOutcome, AnnounceOrigin, AnnounceSourceKind,
            EngineAnnounceMetricsSnapshot, EngineMetricsSnapshot, IgnoreReasonCounts,
            IgnoreReasonKind, InterfaceAnnounceMetricsSnapshot, InterfaceKindCounts,
        };
    }
}

cfg_if::cfg_if! {
    if #[cfg(any(test, feature = "test-support"))] {
        pub mod test_support;
    }
}

pub use crate::routing::announce::{
    write_announce_wire_packet, write_path_response_announce_wire_packet,
    write_relayed_path_response_wire_packet, write_retransmitted_announce_wire_packet,
};
pub use crate::routing::path_requests::{
    write_path_request_wire_packet, PATH_REQUEST_DESTINATION, PATH_REQUEST_PAYLOAD_LEN,
};
pub use crate::routing::proof::{
    write_explicit_proof_wire_packet, write_implicit_proof_wire_packet,
    write_link_proof_wire_packet,
};
pub use crate::routing::RouteRemovalCause;
pub use crate::wire::WireError as EgressSerializeError;
pub use commands::*;
pub use introspection::{AnnounceRateState, RouteSnapshot};
pub use node_egress::ReemitAnnounce;
pub use node_ingress::IngestIo;
pub use reaction::{
    Directive, EngineReaction, FanTarget, Journaled, LinkClosedReason, PersistenceFlushCause,
    PersistenceFlushTarget,
};
pub use registration::{
    PersistedRoutePreflightError, PersistedRouteSignaturePending, PersistedRouteVerificationError,
    RouteSeedOutcome, SetTransportIdentityError, VerifiedPersistedRoute,
};
pub use state::{
    EngineProtocolPolicy, EngineState, LinkMtuDiscovery, LocalHopCountOverride,
    LocalOriginHopCount, ProofForm, RecursivePathRequestDefault,
};
pub use tunnel::WriteTunnelSynthesizeError;
pub use wake::{NextWake, WakeReason, WakeSchedule, WakeSchedules};

pub use crate::routing::warmth::{Departure, DEPARTED_INTERFACE_GRACE_MS};

pub use crate::crypto::ratchets::{RatchetEntropy, RatchetPolicy};
pub use crate::routing::announce::emit::{
    AnnounceAppDataBytes, AnnounceRejection, AnnounceWriteError, AnnounceWriteFailure,
    CommandedAnnounceWriteOutcome, PathResponseWriteOutcome,
};
pub use crate::routing::announce::held::HeldDropCause;
pub use crate::routing::announce::AnnounceObservation;
pub use crate::routing::delivery::send_group::{SendGroupEntropy, SendGroupWriteError};
pub use crate::routing::delivery::send_single::{
    EncryptOwed, FinishSendSinglePacketOutcome, SendSinglePacketDispatch, SendSinglePacketEntropy,
    SendSinglePacketPrepared, SendSinglePacketWriteError, SendSinglePacketWriteOutcome,
    SendSinglePacketWriteRejection,
};
pub use crate::routing::ingress::{
    AcceptedAnnounce, AnnounceIngest, AnnounceVerifyOwed, ClassifiedInboundPacket, DataPacket,
    DecryptOwed, DeferredCrypto, IgnoreReason, IngestPacketOutcome, Ingress, LinkRttOwed,
    PacketToForward, RatchetDecryptOwed, RebroadcastDecision,
};
pub use crate::routing::links::data::{
    link_mdu, LinkDataError, SendToLinkDispatch, SendToLinkWriteError, LINK_MDU,
};
pub use crate::routing::links::establish::{
    EstablishLinkEntropy, EstablishLinkWriteOutcome, LinkRequestDispatch,
    WriteEstablishLinkRejection, WriteLinkProofError, WriteLinkRttError, LINK_KEEPALIVE_MS,
};
pub use crate::routing::links::maintenance::{
    keepalive_ms_from, stale_ms_from, write_keepalive, write_link_close, LinkCloseDispatch,
    WriteLinkCloseError, KEEPALIVE_ECHO, KEEPALIVE_REQUEST,
};
pub use crate::routing::path_requests::pending::{
    CulledPathRequest, ExpiredPathRequest, SettledPathRequest, PATH_REQUEST_TIMEOUT_MS,
};
pub use crate::routing::path_requests::request_path::PathRequestWriteOutcome;
pub use crate::routing::path_requests::seen::PathRequestIdBytes;
pub use crate::routing::proof::{
    DeferredProofSign, ProofIngest, ProofObligation, ProofOwed, ProofRequest, WriteProofError,
};
pub use crate::units::InstantMillis;