/* * NOSTR Core Library - NIP-011: Relay Information Document */ #ifndef NIP011_H #define NIP011_H #include "nip001.h" #include // NIP-11 Relay Information structures // Basic relay information typedef struct { char* name; char* description; char* pubkey; char* contact; char* software; char* version; int* supported_nips; size_t supported_nips_count; } nostr_relay_basic_info_t; // Relay limitations typedef struct { int max_message_length; int max_subscriptions; int max_filters; int max_limit; int max_subid_length; int min_prefix; int max_event_tags; int max_content_length; int min_pow_difficulty; int auth_required; // -1 = not specified, 0 = false, 1 = true int payment_required; // -1 = not specified, 0 = false, 1 = true int restricted_writes; // -1 = not specified, 0 = false, 1 = true long created_at_lower_limit; long created_at_upper_limit; } nostr_relay_limitations_t; // Content limitations typedef struct { char** relay_countries; size_t relay_countries_count; } nostr_relay_content_limitations_t; // Community preferences typedef struct { char** language_tags; size_t language_tags_count; char** tags; size_t tags_count; char* posting_policy; } nostr_relay_community_preferences_t; // Icon information typedef struct { char* icon; } nostr_relay_icon_t; // Complete relay information structure typedef struct { nostr_relay_basic_info_t basic; int has_limitations; nostr_relay_limitations_t limitations; int has_content_limitations; nostr_relay_content_limitations_t content_limitations; int has_community_preferences; nostr_relay_community_preferences_t community_preferences; int has_icon; nostr_relay_icon_t icon; } nostr_relay_info_t; // Function declarations int nostr_nip11_fetch_relay_info(const char* relay_url, nostr_relay_info_t** info_out, int timeout_seconds); void nostr_nip11_relay_info_free(nostr_relay_info_t* info); #endif // NIP011_H