/** * Nostr Event Kinds Database * Auto-generated from https://git.mleku.dev/mleku/nostr/raw/branch/main/encoders/kind/kinds.json * Version: 2025-12-21 * Source: https://github.com/nostr-protocol/nips * * DO NOT EDIT - This file is auto-generated by scripts/fetch-kinds.js */ export const eventKinds = [ { "kind": 0, "name": "Metadata", "description": "User profile information (name, about, picture, nip05, etc.)", "nip": "01", "isReplaceable": true, "template": { "kind": 0, "content": "", "tags": [] } }, { "kind": 1, "name": "Short Text Note", "description": "Short-form text post (like a tweet)", "nip": "01", "template": { "kind": 1, "content": "", "tags": [] } }, { "kind": 2, "name": "Recommend Relay", "description": "Relay recommendation", "nip": "01", "deprecated": true, "template": { "kind": 2, "content": "", "tags": [] } }, { "kind": 3, "name": "Follows", "description": "Following list with optional relay hints", "nip": "02", "isReplaceable": true, "template": { "kind": 3, "content": "", "tags": [] } }, { "kind": 4, "name": "Encrypted Direct Message", "description": "Private message using NIP-04 encryption", "nip": "04", "deprecated": true, "template": { "kind": 4, "content": "", "tags": [] } }, { "kind": 5, "name": "Event Deletion Request", "description": "Request to delete events", "nip": "09", "template": { "kind": 5, "content": "", "tags": [] } }, { "kind": 6, "name": "Repost", "description": "Share/repost another text note", "nip": "18", "template": { "kind": 6, "content": "", "tags": [] } }, { "kind": 7, "name": "Reaction", "description": "Like, emoji reaction to an event", "nip": "25", "template": { "kind": 7, "content": "", "tags": [] } }, { "kind": 8, "name": "Badge Award", "description": "Award a badge to someone", "nip": "58", "template": { "kind": 8, "content": "", "tags": [] } }, { "kind": 9, "name": "Chat Message", "description": "Chat message", "nip": "C7", "template": { "kind": 9, "content": "", "tags": [] } }, { "kind": 10, "name": "Group Chat Threaded Reply", "description": "Threaded reply in group chat", "nip": "29", "deprecated": true, "template": { "kind": 10, "content": "", "tags": [] } }, { "kind": 11, "name": "Thread", "description": "Thread event", "nip": "7D", "template": { "kind": 11, "content": "", "tags": [] } }, { "kind": 12, "name": "Group Thread Reply", "description": "Reply in group thread", "nip": "29", "deprecated": true, "template": { "kind": 12, "content": "", "tags": [] } }, { "kind": 13, "name": "Seal", "description": "Sealed/encrypted event wrapper", "nip": "59", "template": { "kind": 13, "content": "", "tags": [] } }, { "kind": 14, "name": "Direct Message", "description": "Private direct message using NIP-17", "nip": "17", "template": { "kind": 14, "content": "", "tags": [] } }, { "kind": 15, "name": "File Message", "description": "File message in DMs", "nip": "17", "template": { "kind": 15, "content": "", "tags": [] } }, { "kind": 16, "name": "Generic Repost", "description": "Repost any event kind", "nip": "18", "template": { "kind": 16, "content": "", "tags": [] } }, { "kind": 17, "name": "Reaction to Website", "description": "Reaction to a website URL", "nip": "25", "template": { "kind": 17, "content": "", "tags": [] } }, { "kind": 20, "name": "Picture", "description": "Picture-first feed post", "nip": "68", "template": { "kind": 20, "content": "", "tags": [] } }, { "kind": 21, "name": "Video Event", "description": "Horizontal video event", "nip": "71", "template": { "kind": 21, "content": "", "tags": [] } }, { "kind": 22, "name": "Short-form Video", "description": "Short-form portrait video (like TikTok)", "nip": "71", "template": { "kind": 22, "content": "", "tags": [] } }, { "kind": 40, "name": "Channel Creation", "description": "Create a public chat channel", "nip": "28", "template": { "kind": 40, "content": "", "tags": [] } }, { "kind": 41, "name": "Channel Metadata", "description": "Set channel name, about, picture", "nip": "28", "template": { "kind": 41, "content": "", "tags": [] } }, { "kind": 42, "name": "Channel Message", "description": "Post message in channel", "nip": "28", "template": { "kind": 42, "content": "", "tags": [] } }, { "kind": 43, "name": "Channel Hide Message", "description": "Hide a message in channel", "nip": "28", "template": { "kind": 43, "content": "", "tags": [] } }, { "kind": 44, "name": "Channel Mute User", "description": "Mute a user in channel", "nip": "28", "template": { "kind": 44, "content": "", "tags": [] } }, { "kind": 62, "name": "Request to Vanish", "description": "Request permanent deletion of all user data", "nip": "62", "template": { "kind": 62, "content": "", "tags": [] } }, { "kind": 64, "name": "Chess (PGN)", "description": "Chess game in PGN format", "nip": "64", "template": { "kind": 64, "content": "", "tags": [] } }, { "kind": 443, "name": "KeyPackage", "description": "Marmot protocol key package", "nip": null, "spec": "Marmot", "template": { "kind": 443, "content": "", "tags": [] } }, { "kind": 444, "name": "Welcome Message", "description": "Marmot protocol welcome message", "nip": null, "spec": "Marmot", "template": { "kind": 444, "content": "", "tags": [] } }, { "kind": 445, "name": "Group Event", "description": "Marmot protocol group event", "nip": null, "spec": "Marmot", "template": { "kind": 445, "content": "", "tags": [] } }, { "kind": 818, "name": "Merge Requests", "description": "Git merge request", "nip": "54", "template": { "kind": 818, "content": "", "tags": [] } }, { "kind": 1018, "name": "Poll Response", "description": "Response to a poll", "nip": "88", "template": { "kind": 1018, "content": "", "tags": [] } }, { "kind": 1021, "name": "Bid", "description": "Auction bid", "nip": "15", "template": { "kind": 1021, "content": "", "tags": [] } }, { "kind": 1022, "name": "Bid Confirmation", "description": "Confirmation of auction bid", "nip": "15", "template": { "kind": 1022, "content": "", "tags": [] } }, { "kind": 1040, "name": "OpenTimestamps", "description": "OpenTimestamps attestation", "nip": "03", "template": { "kind": 1040, "content": "", "tags": [] } }, { "kind": 1059, "name": "Gift Wrap", "description": "Encrypted gift-wrapped event", "nip": "59", "template": { "kind": 1059, "content": "", "tags": [] } }, { "kind": 1060, "name": "Gift Wrap (Kind 4)", "description": "Gift wrap variant for NIP-04 compatibility", "nip": "59", "template": { "kind": 1060, "content": "", "tags": [] } }, { "kind": 1063, "name": "File Metadata", "description": "Metadata for shared files", "nip": "94", "template": { "kind": 1063, "content": "", "tags": [] } }, { "kind": 1068, "name": "Poll", "description": "Create a poll", "nip": "88", "template": { "kind": 1068, "content": "", "tags": [] } }, { "kind": 1111, "name": "Comment", "description": "Comment on events or external content", "nip": "22", "template": { "kind": 1111, "content": "", "tags": [] } }, { "kind": 1222, "name": "Voice Message", "description": "Voice message", "nip": "A0", "template": { "kind": 1222, "content": "", "tags": [] } }, { "kind": 1244, "name": "Voice Message Comment", "description": "Comment on voice message", "nip": "A0", "template": { "kind": 1244, "content": "", "tags": [] } }, { "kind": 1311, "name": "Live Chat Message", "description": "Message in live stream chat", "nip": "53", "template": { "kind": 1311, "content": "", "tags": [] } }, { "kind": 1337, "name": "Code Snippet", "description": "Code snippet post", "nip": "C0", "template": { "kind": 1337, "content": "", "tags": [] } }, { "kind": 1517, "name": "Bitcoin Block", "description": "Bitcoin block data", "nip": null, "spec": "Nostrocket", "template": { "kind": 1517, "content": "", "tags": [] } }, { "kind": 1617, "name": "Patches", "description": "Git patches", "nip": "34", "template": { "kind": 1617, "content": "", "tags": [] } }, { "kind": 1618, "name": "Pull Requests", "description": "Git pull request", "nip": "34", "template": { "kind": 1618, "content": "", "tags": [] } }, { "kind": 1619, "name": "Pull Request Updates", "description": "Updates to git pull request", "nip": "34", "template": { "kind": 1619, "content": "", "tags": [] } }, { "kind": 1621, "name": "Issues", "description": "Git issues", "nip": "34", "template": { "kind": 1621, "content": "", "tags": [] } }, { "kind": 1622, "name": "Git Replies", "description": "Replies on git objects", "nip": "34", "deprecated": true, "template": { "kind": 1622, "content": "", "tags": [] } }, { "kind": 1630, "name": "Status", "description": "Git status", "nip": "34", "template": { "kind": 1630, "content": "", "tags": [] } }, { "kind": 1631, "name": "Status", "description": "Git status", "nip": "34", "template": { "kind": 1631, "content": "", "tags": [] } }, { "kind": 1632, "name": "Status", "description": "Git status", "nip": "34", "template": { "kind": 1632, "content": "", "tags": [] } }, { "kind": 1633, "name": "Status", "description": "Git status", "nip": "34", "template": { "kind": 1633, "content": "", "tags": [] } }, { "kind": 1808, "name": "Live Stream", "description": "Live streaming event", "nip": null, "spec": "zap.stream", "template": { "kind": 1808, "content": "", "tags": [] } }, { "kind": 1971, "name": "Problem Tracker", "description": "Problem tracking", "nip": null, "spec": "Nostrocket", "template": { "kind": 1971, "content": "", "tags": [] } }, { "kind": 1984, "name": "Reporting", "description": "Report content or users", "nip": "56", "template": { "kind": 1984, "content": "", "tags": [] } }, { "kind": 1985, "name": "Label", "description": "Label/tag content with namespace", "nip": "32", "template": { "kind": 1985, "content": "", "tags": [] } }, { "kind": 1986, "name": "Relay Reviews", "description": "Reviews of relays", "nip": null, "template": { "kind": 1986, "content": "", "tags": [] } }, { "kind": 1987, "name": "AI Embeddings", "description": "AI embeddings/vector lists", "nip": null, "spec": "NKBIP-02", "template": { "kind": 1987, "content": "", "tags": [] } }, { "kind": 2003, "name": "Torrent", "description": "Torrent magnet link", "nip": "35", "template": { "kind": 2003, "content": "", "tags": [] } }, { "kind": 2004, "name": "Torrent Comment", "description": "Comment on torrent", "nip": "35", "template": { "kind": 2004, "content": "", "tags": [] } }, { "kind": 2022, "name": "Coinjoin Pool", "description": "Coinjoin coordination", "nip": null, "spec": "joinstr", "template": { "kind": 2022, "content": "", "tags": [] } }, { "kind": 4550, "name": "Community Post Approval", "description": "Approve post in community", "nip": "72", "template": { "kind": 4550, "content": "", "tags": [] } }, { "kind": 5000, "name": "Job Request", "description": "Data vending machine job request (start of range)", "nip": "90", "template": { "kind": 5000, "content": "", "tags": [] } }, { "kind": 6000, "name": "Job Result", "description": "Data vending machine job result (start of range)", "nip": "90", "template": { "kind": 6000, "content": "", "tags": [] } }, { "kind": 7000, "name": "Job Feedback", "description": "Feedback on job request/result", "nip": "90", "template": { "kind": 7000, "content": "", "tags": [] } }, { "kind": 7374, "name": "Reserved Cashu Wallet Tokens", "description": "Reserved Cashu wallet tokens", "nip": "60", "template": { "kind": 7374, "content": "", "tags": [] } }, { "kind": 7375, "name": "Cashu Wallet Tokens", "description": "Cashu wallet tokens", "nip": "60", "template": { "kind": 7375, "content": "", "tags": [] } }, { "kind": 7376, "name": "Cashu Wallet History", "description": "Cashu wallet transaction history", "nip": "60", "template": { "kind": 7376, "content": "", "tags": [] } }, { "kind": 7516, "name": "Geocache Log", "description": "Geocaching log entry", "nip": null, "spec": "geocaching", "template": { "kind": 7516, "content": "", "tags": [] } }, { "kind": 7517, "name": "Geocache Proof of Find", "description": "Proof of geocache find", "nip": null, "spec": "geocaching", "template": { "kind": 7517, "content": "", "tags": [] } }, { "kind": 8000, "name": "Add User", "description": "Add user to group", "nip": "43", "template": { "kind": 8000, "content": "", "tags": [] } }, { "kind": 8001, "name": "Remove User", "description": "Remove user from group", "nip": "43", "template": { "kind": 8001, "content": "", "tags": [] } }, { "kind": 9000, "name": "Group Control Events", "description": "Group control events (start of range)", "nip": "29", "template": { "kind": 9000, "content": "", "tags": [] } }, { "kind": 9041, "name": "Zap Goal", "description": "Fundraising goal for zaps", "nip": "75", "template": { "kind": 9041, "content": "", "tags": [] } }, { "kind": 9321, "name": "Nutzap", "description": "Cashu nutzap", "nip": "61", "template": { "kind": 9321, "content": "", "tags": [] } }, { "kind": 9467, "name": "Tidal Login", "description": "Tidal streaming login", "nip": null, "spec": "Tidal-nostr", "template": { "kind": 9467, "content": "", "tags": [] } }, { "kind": 9734, "name": "Zap Request", "description": "Request Lightning payment", "nip": "57", "template": { "kind": 9734, "content": "", "tags": [] } }, { "kind": 9735, "name": "Zap", "description": "Lightning payment receipt", "nip": "57", "template": { "kind": 9735, "content": "", "tags": [] } }, { "kind": 9802, "name": "Highlights", "description": "Highlighted text selection", "nip": "84", "template": { "kind": 9802, "content": "", "tags": [] } }, { "kind": 10000, "name": "Mute List", "description": "List of muted users/content", "nip": "51", "isReplaceable": true, "template": { "kind": 10000, "content": "", "tags": [] } }, { "kind": 10001, "name": "Pin List", "description": "Pinned events", "nip": "51", "isReplaceable": true, "template": { "kind": 10001, "content": "", "tags": [] } }, { "kind": 10002, "name": "Relay List Metadata", "description": "User's preferred relays for read/write", "nip": "65", "isReplaceable": true, "template": { "kind": 10002, "content": "", "tags": [] } }, { "kind": 10003, "name": "Bookmark List", "description": "Bookmarked events", "nip": "51", "isReplaceable": true, "template": { "kind": 10003, "content": "", "tags": [] } }, { "kind": 10004, "name": "Communities List", "description": "Communities user belongs to", "nip": "51", "isReplaceable": true, "template": { "kind": 10004, "content": "", "tags": [] } }, { "kind": 10005, "name": "Public Chats List", "description": "Public chats user is in", "nip": "51", "isReplaceable": true, "template": { "kind": 10005, "content": "", "tags": [] } }, { "kind": 10006, "name": "Blocked Relays List", "description": "Relays user has blocked", "nip": "51", "isReplaceable": true, "template": { "kind": 10006, "content": "", "tags": [] } }, { "kind": 10007, "name": "Search Relays List", "description": "Preferred search relays", "nip": "51", "isReplaceable": true, "template": { "kind": 10007, "content": "", "tags": [] } }, { "kind": 10008, "name": "Relay Group Configuration", "description": "Relay group configuration", "nip": null, "isReplaceable": true, "template": { "kind": 10008, "content": "", "tags": [] } }, { "kind": 10009, "name": "User Groups", "description": "Groups user belongs to", "nip": "29", "isReplaceable": true, "template": { "kind": 10009, "content": "", "tags": [] } }, { "kind": 10012, "name": "Favorite Relays List", "description": "User's favorite relays", "nip": "51", "isReplaceable": true, "template": { "kind": 10012, "content": "", "tags": [] } }, { "kind": 10013, "name": "Private Event Relay List", "description": "Relays for private events", "nip": "37", "isReplaceable": true, "template": { "kind": 10013, "content": "", "tags": [] } }, { "kind": 10015, "name": "Interests List", "description": "User interests/topics", "nip": "51", "isReplaceable": true, "template": { "kind": 10015, "content": "", "tags": [] } }, { "kind": 10019, "name": "Nutzap Mint Recommendation", "description": "Recommended Cashu mints for nutzaps", "nip": "61", "isReplaceable": true, "template": { "kind": 10019, "content": "", "tags": [] } }, { "kind": 10020, "name": "Media Follows", "description": "Followed media accounts", "nip": "51", "isReplaceable": true, "template": { "kind": 10020, "content": "", "tags": [] } }, { "kind": 10030, "name": "User Emoji List", "description": "Custom emoji list", "nip": "51", "isReplaceable": true, "template": { "kind": 10030, "content": "", "tags": [] } }, { "kind": 10050, "name": "DM Relays List", "description": "Relays to receive DMs on", "nip": "17", "isReplaceable": true, "template": { "kind": 10050, "content": "", "tags": [] } }, { "kind": 10051, "name": "KeyPackage Relays List", "description": "Marmot key package relays", "nip": null, "isReplaceable": true, "spec": "Marmot", "template": { "kind": 10051, "content": "", "tags": [] } }, { "kind": 10063, "name": "User Server List", "description": "Blossom server list", "nip": null, "isReplaceable": true, "spec": "Blossom", "template": { "kind": 10063, "content": "", "tags": [] } }, { "kind": 10096, "name": "File Storage Server List", "description": "File storage servers", "nip": "96", "isReplaceable": true, "deprecated": true, "template": { "kind": 10096, "content": "", "tags": [] } }, { "kind": 10166, "name": "Relay Monitor Announcement", "description": "Relay monitoring announcement", "nip": "66", "isReplaceable": true, "template": { "kind": 10166, "content": "", "tags": [] } }, { "kind": 10312, "name": "Room Presence", "description": "Presence in live room", "nip": "53", "isReplaceable": true, "template": { "kind": 10312, "content": "", "tags": [] } }, { "kind": 10377, "name": "Proxy Announcement", "description": "Nostr proxy announcement", "nip": null, "isReplaceable": true, "spec": "Nostr Epoxy", "template": { "kind": 10377, "content": "", "tags": [] } }, { "kind": 11111, "name": "Transport Method Announcement", "description": "Transport method announcement", "nip": null, "isReplaceable": true, "spec": "Nostr Epoxy", "template": { "kind": 11111, "content": "", "tags": [] } }, { "kind": 12345, "name": "Relay Policy Configuration", "description": "Relay-internal policy configuration (admin only)", "nip": null, "isReplaceable": true, "spec": "orly", "template": { "kind": 12345, "content": "", "tags": [] } }, { "kind": 13004, "name": "JWT Binding", "description": "Link between JWT certificate and pubkey", "nip": null, "isReplaceable": true, "template": { "kind": 13004, "content": "", "tags": [] } }, { "kind": 13194, "name": "Wallet Service Info", "description": "NWC wallet service information", "nip": "47", "isReplaceable": true, "template": { "kind": 13194, "content": "", "tags": [] } }, { "kind": 13534, "name": "Membership Lists", "description": "Group membership lists", "nip": "43", "isReplaceable": true, "template": { "kind": 13534, "content": "", "tags": [] } }, { "kind": 14388, "name": "User Sound Effect Lists", "description": "Sound effect lists", "nip": null, "isReplaceable": true, "spec": "Corny Chat", "template": { "kind": 14388, "content": "", "tags": [] } }, { "kind": 17375, "name": "Cashu Wallet Event", "description": "Cashu wallet event", "nip": "60", "isReplaceable": true, "template": { "kind": 17375, "content": "", "tags": [] } }, { "kind": 21000, "name": "Lightning Pub RPC", "description": "Lightning.Pub RPC", "nip": null, "isEphemeral": true, "spec": "Lightning.Pub", "template": { "kind": 21000, "content": "", "tags": [] } }, { "kind": 22242, "name": "Client Authentication", "description": "Authenticate to relay", "nip": "42", "isEphemeral": true, "template": { "kind": 22242, "content": "", "tags": [] } }, { "kind": 23194, "name": "Wallet Request", "description": "NWC wallet request", "nip": "47", "isEphemeral": true, "template": { "kind": 23194, "content": "", "tags": [] } }, { "kind": 23195, "name": "Wallet Response", "description": "NWC wallet response", "nip": "47", "isEphemeral": true, "template": { "kind": 23195, "content": "", "tags": [] } }, { "kind": 23196, "name": "Wallet Notification (NIP-04)", "description": "NWC wallet notification (NIP-04 encrypted)", "nip": "47", "isEphemeral": true, "template": { "kind": 23196, "content": "", "tags": [] } }, { "kind": 23197, "name": "Wallet Notification", "description": "NWC wallet notification", "nip": "47", "isEphemeral": true, "template": { "kind": 23197, "content": "", "tags": [] } }, { "kind": 24133, "name": "Nostr Connect", "description": "Remote signer connection", "nip": "46", "isEphemeral": true, "template": { "kind": 24133, "content": "", "tags": [] } }, { "kind": 24242, "name": "Blobs Stored on Mediaservers", "description": "Blossom blob storage", "nip": null, "isEphemeral": true, "spec": "Blossom", "template": { "kind": 24242, "content": "", "tags": [] } }, { "kind": 27235, "name": "HTTP Auth", "description": "Authenticate HTTP requests", "nip": "98", "isEphemeral": true, "template": { "kind": 27235, "content": "", "tags": [] } }, { "kind": 28934, "name": "Join Request", "description": "Request to join group", "nip": "43", "isEphemeral": true, "template": { "kind": 28934, "content": "", "tags": [] } }, { "kind": 28935, "name": "Invite Request", "description": "Invite to group", "nip": "43", "isEphemeral": true, "template": { "kind": 28935, "content": "", "tags": [] } }, { "kind": 28936, "name": "Leave Request", "description": "Leave group request", "nip": "43", "isEphemeral": true, "template": { "kind": 28936, "content": "", "tags": [] } }, { "kind": 30000, "name": "Follow Sets", "description": "Categorized people lists", "nip": "51", "isAddressable": true, "template": { "kind": 30000, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30001, "name": "Generic Lists", "description": "Generic categorized lists", "nip": "51", "isAddressable": true, "deprecated": true, "template": { "kind": 30001, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30002, "name": "Relay Sets", "description": "Categorized relay lists", "nip": "51", "isAddressable": true, "template": { "kind": 30002, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30003, "name": "Bookmark Sets", "description": "Categorized bookmark lists", "nip": "51", "isAddressable": true, "template": { "kind": 30003, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30004, "name": "Curation Sets", "description": "Curated content sets", "nip": "51", "isAddressable": true, "template": { "kind": 30004, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30005, "name": "Video Sets", "description": "Video playlists", "nip": "51", "isAddressable": true, "template": { "kind": 30005, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30007, "name": "Kind Mute Sets", "description": "Muted event kinds", "nip": "51", "isAddressable": true, "template": { "kind": 30007, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30008, "name": "Profile Badges", "description": "Badges displayed on profile", "nip": "58", "isAddressable": true, "template": { "kind": 30008, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30009, "name": "Badge Definition", "description": "Define a badge/achievement", "nip": "58", "isAddressable": true, "template": { "kind": 30009, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30015, "name": "Interest Sets", "description": "Interest/topic sets", "nip": "51", "isAddressable": true, "template": { "kind": 30015, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30017, "name": "Stall", "description": "Marketplace stall definition", "nip": "15", "isAddressable": true, "template": { "kind": 30017, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30018, "name": "Product", "description": "Marketplace product listing", "nip": "15", "isAddressable": true, "template": { "kind": 30018, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30019, "name": "Marketplace UI/UX", "description": "Marketplace interface settings", "nip": "15", "isAddressable": true, "template": { "kind": 30019, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30020, "name": "Product Sold as Auction", "description": "Auction product listing", "nip": "15", "isAddressable": true, "template": { "kind": 30020, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30023, "name": "Long-form Content", "description": "Blog post, article in markdown", "nip": "23", "isAddressable": true, "template": { "kind": 30023, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30024, "name": "Draft Long-form Content", "description": "Draft article", "nip": "23", "isAddressable": true, "template": { "kind": 30024, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30030, "name": "Emoji Sets", "description": "Custom emoji sets", "nip": "51", "isAddressable": true, "template": { "kind": 30030, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30040, "name": "Curated Publication Index", "description": "Publication index", "nip": null, "isAddressable": true, "spec": "NKBIP-01", "template": { "kind": 30040, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30041, "name": "Curated Publication Content", "description": "Publication content", "nip": null, "isAddressable": true, "spec": "NKBIP-01", "template": { "kind": 30041, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30063, "name": "Release Artifact Sets", "description": "Software release artifacts", "nip": "51", "isAddressable": true, "template": { "kind": 30063, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30078, "name": "Application-specific Data", "description": "App-specific key-value storage", "nip": "78", "isAddressable": true, "template": { "kind": 30078, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30166, "name": "Relay Discovery", "description": "Relay discovery/monitoring", "nip": "66", "isAddressable": true, "template": { "kind": 30166, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30267, "name": "App Curation Sets", "description": "Curated app sets", "nip": "51", "isAddressable": true, "template": { "kind": 30267, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30311, "name": "Live Event", "description": "Live streaming event", "nip": "53", "isAddressable": true, "template": { "kind": 30311, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30312, "name": "Interactive Room", "description": "Interactive live room", "nip": "53", "isAddressable": true, "template": { "kind": 30312, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30313, "name": "Conference Event", "description": "Conference/meetup event", "nip": "53", "isAddressable": true, "template": { "kind": 30313, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30315, "name": "User Statuses", "description": "User status updates", "nip": "38", "isAddressable": true, "template": { "kind": 30315, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30388, "name": "Slide Set", "description": "Presentation slides", "nip": null, "isAddressable": true, "spec": "Corny Chat", "template": { "kind": 30388, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30402, "name": "Classified Listing", "description": "Classified ad listing", "nip": "99", "isAddressable": true, "template": { "kind": 30402, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30403, "name": "Draft Classified Listing", "description": "Draft classified ad", "nip": "99", "isAddressable": true, "template": { "kind": 30403, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30617, "name": "Repository Announcements", "description": "Git repository announcement", "nip": "34", "isAddressable": true, "template": { "kind": 30617, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30618, "name": "Repository State Announcements", "description": "Git repository state", "nip": "34", "isAddressable": true, "template": { "kind": 30618, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30818, "name": "Wiki Article", "description": "Wiki article", "nip": "54", "isAddressable": true, "template": { "kind": 30818, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 30819, "name": "Redirects", "description": "URL redirects", "nip": "54", "isAddressable": true, "template": { "kind": 30819, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 31234, "name": "Draft Event", "description": "Draft of any event", "nip": "37", "isAddressable": true, "template": { "kind": 31234, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 31388, "name": "Link Set", "description": "Link collection", "nip": null, "isAddressable": true, "spec": "Corny Chat", "template": { "kind": 31388, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 31890, "name": "Feed", "description": "Custom feed definition", "nip": null, "isAddressable": true, "spec": "NUD: Custom Feeds", "template": { "kind": 31890, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 31922, "name": "Date-Based Calendar Event", "description": "All-day calendar event", "nip": "52", "isAddressable": true, "template": { "kind": 31922, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 31923, "name": "Time-Based Calendar Event", "description": "Calendar event with time", "nip": "52", "isAddressable": true, "template": { "kind": 31923, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 31924, "name": "Calendar", "description": "Calendar definition", "nip": "52", "isAddressable": true, "template": { "kind": 31924, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 31925, "name": "Calendar Event RSVP", "description": "RSVP to calendar event", "nip": "52", "isAddressable": true, "template": { "kind": 31925, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 31989, "name": "Handler Recommendation", "description": "Recommended app for event kind", "nip": "89", "isAddressable": true, "template": { "kind": 31989, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 31990, "name": "Handler Information", "description": "App handler declaration", "nip": "89", "isAddressable": true, "template": { "kind": 31990, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 32123, "name": "WaveLake Track", "description": "WaveLake music track", "nip": null, "isAddressable": true, "spec": "WaveLake", "template": { "kind": 32123, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 32267, "name": "Software Application", "description": "Software application listing", "nip": null, "isAddressable": true, "template": { "kind": 32267, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 32388, "name": "User Room Favorites", "description": "Favorite rooms", "nip": null, "isAddressable": true, "spec": "Corny Chat", "template": { "kind": 32388, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 33388, "name": "High Scores", "description": "Game high scores", "nip": null, "isAddressable": true, "spec": "Corny Chat", "template": { "kind": 33388, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 34235, "name": "Video Event Horizontal", "description": "Horizontal video event", "nip": "71", "isAddressable": true, "template": { "kind": 34235, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 34236, "name": "Video Event Vertical", "description": "Vertical video event", "nip": "71", "isAddressable": true, "template": { "kind": 34236, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 34388, "name": "Sound Effects", "description": "Sound effect definitions", "nip": null, "isAddressable": true, "spec": "Corny Chat", "template": { "kind": 34388, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 34550, "name": "Community Definition", "description": "Define a community", "nip": "72", "isAddressable": true, "template": { "kind": 34550, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 37516, "name": "Geocache Listing", "description": "Geocache location listing", "nip": null, "isAddressable": true, "spec": "geocaching", "template": { "kind": 37516, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 38172, "name": "Cashu Mint Announcement", "description": "Cashu mint announcement", "nip": "87", "isAddressable": true, "template": { "kind": 38172, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 38173, "name": "Fedimint Announcement", "description": "Fedimint announcement", "nip": "87", "isAddressable": true, "template": { "kind": 38173, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 38383, "name": "Peer-to-peer Order Events", "description": "P2P trading orders", "nip": "69", "isAddressable": true, "template": { "kind": 38383, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 39000, "name": "Group Metadata Events", "description": "Group metadata (start of range)", "nip": "29", "isAddressable": true, "template": { "kind": 39000, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 39089, "name": "Starter Packs", "description": "Starter pack lists", "nip": "51", "isAddressable": true, "template": { "kind": 39089, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 39092, "name": "Media Starter Packs", "description": "Media starter packs", "nip": "51", "isAddressable": true, "template": { "kind": 39092, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 39701, "name": "Web Bookmarks", "description": "Web URL bookmarks", "nip": "B0", "isAddressable": true, "template": { "kind": 39701, "content": "", "tags": [ [ "d", "identifier" ] ] } }, { "kind": 39998, "name": "ACL Event", "description": "Access control list event", "nip": null, "isAddressable": true, "template": { "kind": 39998, "content": "", "tags": [ [ "d", "identifier" ] ] } } ]; // Kind ranges for classification export const kindRanges = { "regular": { "start": 1000, "end": 9999, "description": "Regular events - all versions kept, never replaced" }, "replaceable": { "start": 10000, "end": 19999, "description": "Replaceable events - only latest per pubkey kept" }, "ephemeral": { "start": 20000, "end": 29999, "description": "Ephemeral events - forwarded but not stored" }, "parameterized": { "start": 30000, "end": 39999, "description": "Parameterized replaceable - replaced by d tag value" } }; // Privileged kinds (require auth) export const privilegedKinds = [4,13,14,15,1059,1060,30078]; // Directory kinds (public discovery) export const directoryKinds = [0,3,5,1984,10002,10000,10050]; // Kind aliases export const kindAliases = { "SetMetadata": 0, "Follows": 3, "Contacts": 3, "Deletion": 5, "MemoryHole": 1984, "BlockList": 10000, "Article": 30023, "CategorizedPeopleList": 30000, "CategorizedBookmarksList": 30001 }; // Helper function to get event kind by number export function getEventKind(kindNumber) { return eventKinds.find(k => k.kind === kindNumber); } // Alias for compatibility export function getKindInfo(kind) { return getEventKind(kind); } export function getKindName(kind) { const info = getEventKind(kind); return info ? info.name : `Kind ${kind}`; } // Helper function to search event kinds by name or description export function searchEventKinds(query) { const lowerQuery = query.toLowerCase(); return eventKinds.filter(k => k.name.toLowerCase().includes(lowerQuery) || k.description.toLowerCase().includes(lowerQuery) || k.kind.toString().includes(query) ); } // Helper function to get all event kinds grouped by category export function getEventKindsByCategory() { return { regular: eventKinds.filter(k => k.kind < 10000 && !k.isReplaceable), replaceable: eventKinds.filter(k => k.isReplaceable), ephemeral: eventKinds.filter(k => k.isEphemeral), addressable: eventKinds.filter(k => k.isAddressable) }; } // Helper function to create a template event with current timestamp export function createTemplateEvent(kindNumber, userPubkey = null) { const kindInfo = getEventKind(kindNumber); if (!kindInfo) { return { kind: kindNumber, content: "", tags: [], created_at: Math.floor(Date.now() / 1000), pubkey: userPubkey || "" }; } return { ...kindInfo.template, created_at: Math.floor(Date.now() / 1000), pubkey: userPubkey || "" }; } export function isReplaceable(kind) { if (kind === 0 || kind === 3) return true; return kind >= 10000 && kind < 19999; } export function isEphemeral(kind) { return kind >= 20000 && kind < 29999; } export function isAddressable(kind) { return kind >= 30000 && kind <= 39999; } export function isPrivileged(kind) { return privilegedKinds.includes(kind); } // Export kind categories for filtering in UI export const kindCategories = [ { id: "all", name: "All Kinds", filter: () => true }, { id: "regular", name: "Regular Events (0-9999)", filter: k => k.kind < 10000 && !k.isReplaceable }, { id: "replaceable", name: "Replaceable (10000-19999)", filter: k => k.isReplaceable }, { id: "ephemeral", name: "Ephemeral (20000-29999)", filter: k => k.isEphemeral }, { id: "addressable", name: "Addressable (30000-39999)", filter: k => k.isAddressable }, { id: "social", name: "Social", filter: k => [0, 1, 3, 6, 7].includes(k.kind) }, { id: "messaging", name: "Messaging", filter: k => [4, 9, 10, 11, 12, 14, 15, 40, 41, 42].includes(k.kind) }, { id: "lists", name: "Lists", filter: k => k.name.toLowerCase().includes("list") || k.name.toLowerCase().includes("set") }, { id: "marketplace", name: "Marketplace", filter: k => [30017, 30018, 30019, 30020, 1021, 1022, 30402, 30403].includes(k.kind) }, { id: "lightning", name: "Lightning/Zaps", filter: k => [9734, 9735, 9041, 9321, 7374, 7375, 7376].includes(k.kind) }, { id: "media", name: "Media", filter: k => [20, 21, 22, 1063, 1222, 1244].includes(k.kind) }, { id: "git", name: "Git/Code", filter: k => [818, 1337, 1617, 1618, 1619, 1621, 1622, 30617, 30618].includes(k.kind) }, { id: "calendar", name: "Calendar", filter: k => [31922, 31923, 31924, 31925].includes(k.kind) }, { id: "groups", name: "Groups", filter: k => (k.kind >= 9000 && k.kind <= 9030) || (k.kind >= 39000 && k.kind <= 39009) }, ];