nostr_core_lib/nostr_core/nip011.h

85 lines
2.0 KiB
C

/*
* NOSTR Core Library - NIP-011: Relay Information Document
*/
#ifndef NIP011_H
#define NIP011_H
#include "nip001.h"
#include <stddef.h>
// 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