UNPKG

nostr-websocket-utils

Version:

Robust WebSocket utilities for Nostr applications with automatic reconnection, supporting both ESM and CommonJS. Features channel-based messaging, heartbeat monitoring, message queueing, and comprehensive error handling with type-safe handlers.

89 lines 2.83 kB
/** * @file NIP-16: Event Treatment * @module nips/nip-16 * @see https://github.com/nostr-protocol/nips/blob/master/16.md */ import type { NostrWSMessage } from '../types/messages.js'; import type { Logger } from '../types/logger.js'; /** * Event treatment types */ export declare const EventTreatment: { readonly EPHEMERAL: "ephemeral"; readonly REPLACEABLE: "replaceable"; readonly PERSISTENT: "persistent"; }; export type EventTreatmentType = typeof EventTreatment[keyof typeof EventTreatment]; /** * Replaceable event kinds (10000-19999) */ export declare const REPLACEABLE_EVENT_KINDS: { METADATA: number; CONTACT_LIST: number; CHANNEL_METADATA: number; CHANNEL_MESSAGE: number; USER_STATUS: number; USER_PROFILE: number; RELAY_LIST: number; BOOKMARKS: number; MUTE_LIST: number; PIN_LIST: number; RELAY_METADATA: number; CLIENT_PREFERENCES: number; CUSTOM_START: number; CUSTOM_END: number; }; /** * Ephemeral event kinds (20000-29999) */ export declare const EPHEMERAL_EVENT_KINDS: { TYPING_INDICATOR: number; ONLINE_STATUS: number; USER_PRESENCE: number; CUSTOM_START: number; CUSTOM_END: number; }; /** * Determines event treatment type * @param eventKind - Event kind number * @returns {EventTreatmentType} Event treatment type */ export declare function getEventTreatment(eventKind: number): EventTreatmentType; /** * Validates event treatment rules * @param message - Message to validate * @param logger - Logger instance * @returns {boolean} True if event follows treatment rules */ export declare function validateEventTreatment(message: NostrWSMessage, logger: Logger): boolean; /** * Storage management interface for different event types */ export interface EventStorageManager { /** * Determines if an event should be stored * @param event - Event to check * @returns {boolean} True if event should be stored */ shouldStore(event: Record<string, unknown>): boolean; /** * Gets storage duration for an event * @param event - Event to check * @returns {number} Storage duration in seconds (0 for permanent) */ getStorageDuration(event: Record<string, unknown>): number; /** * Checks if an event should replace another * @param newEvent - New event * @param existingEvent - Existing event * @returns {boolean} True if new event should replace existing */ shouldReplace(newEvent: Record<string, unknown>, existingEvent: Record<string, unknown>): boolean; } /** * Creates default event storage manager * @param logger - Logger instance * @returns {EventStorageManager} Storage manager */ export declare function createEventStorageManager(logger: Logger): EventStorageManager; //# sourceMappingURL=nip-16.d.ts.map