Skip to content

constants

constants

Shared constants for the models layer.

Defines enumerations and other constants that are used across multiple model modules. Placing them here avoids circular dependencies between the models and utils layers.

See Also

bigbrotr.models.relay: Uses NetworkType to classify relay URLs during construction. bigbrotr.nips.nip66: Relies on network type for overlay-specific health checks. bigbrotr.models.service_state: Uses ServiceName and imports EventKind for service state types.

Classes

NetworkType

Bases: StrEnum

Network type enum for relay classification.

Each relay URL is classified into exactly one network type during Relay construction. The scheme is then enforced per network: clearnet requires wss:// (TLS), while overlay networks use ws:// (encryption handled by the overlay).

Attributes:

  • CLEARNET –

    Public internet relay using wss:// (TLS required).

  • TOR –

    Tor hidden service identified by a .onion hostname.

  • I2P –

    I2P eepsite identified by a .i2p hostname.

  • LOKI –

    Lokinet service identified by a .loki hostname.

  • LOCAL –

    Private or reserved IP address (rejected during validation).

  • UNKNOWN –

    Hostname that could not be classified (rejected during validation).

Examples:

Network detection is performed by Relay._detect_network():

Relay("wss://relay.damus.io").network   # NetworkType.CLEARNET
Relay("ws://abc123.onion").network       # NetworkType.TOR
Relay("ws://relay.i2p").network          # NetworkType.I2P
Warning

LOCAL and UNKNOWN network types cause Relay construction to raise ValueError. They exist for internal detection logic and are never exposed on a successfully constructed instance.

See Also

Relay: Performs network detection and scheme enforcement. RelayDbParams: Stores the network type as a string for database persistence.

ServiceName

Bases: StrEnum

Canonical service identifiers used in logging, metrics, and persistence.

Each member corresponds to one of the eight services. The string values are used as the service_name column in the service_state table and as the service label in Prometheus metrics.

Attributes:

  • SEEDER –

    One-shot bootstrapping service (Seeder).

  • FINDER –

    Continuous relay URL discovery service (Finder).

  • VALIDATOR –

    WebSocket-based Nostr protocol validation service (Validator).

  • MONITOR –

    NIP-11 / NIP-66 health monitoring service (Monitor).

  • SYNCHRONIZER –

    Cursor-based event collection service (Synchronizer).

  • REFRESHER –

    Periodic materialized view refresh service (Refresher).

  • API –

    REST API for read-only database access (Api).

  • DVM –

    NIP-90 Data Vending Machine service (Dvm).

See Also

BaseService: Abstract base class that uses SERVICE_NAME for logging context. queries: SQL functions that filter service_state rows by service name.

EventKind

Bases: IntEnum

Well-known Nostr event kinds used across services.

Each member corresponds to a NIP-defined event kind that BigBrotr processes or publishes.

Attributes:

  • SET_METADATA –

    Kind 0 -- user profile metadata (NIP-01).

  • RECOMMEND_RELAY –

    Kind 2 -- legacy relay recommendation (NIP-01, deprecated).

  • CONTACTS –

    Kind 3 -- contact list with relay hints (NIP-02).

  • RELAY_LIST –

    Kind 10002 -- NIP-65 relay list metadata.

  • NIP66_TEST –

    Kind 22456 -- ephemeral NIP-66 relay test event.

  • MONITOR_ANNOUNCEMENT –

    Kind 10166 -- NIP-66 monitor announcement (replaceable, published by the Monitor service).

  • RELAY_DISCOVERY –

    Kind 30166 -- NIP-66 relay discovery event (parameterized replaceable, published by the Monitor service).

See Also

Event: The event wrapper that carries these kinds. EVENT_KIND_MAX: Maximum valid event kind value (65535).