/**
 * 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 interface KindInfo {
  kind: number;
  name: string;
  description: string;
  nip: string | null;
  classification: 'regular' | 'replaceable' | 'ephemeral' | 'parameterized';
  deprecated: boolean;
  spec: string | null;
}

export interface KindRanges {
  regular: { start: number; end: number; description: string };
  replaceable: { start: number; end: number; description: string };
  ephemeral: { start: number; end: number; description: string };
  parameterized: { start: number; end: number; description: string };
}

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

export const KIND_RANGES: 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"
  }
};

export const PRIVILEGED_KINDS: number[] = [4,13,14,15,1059,1060,30078];

export const DIRECTORY_KINDS: number[] = [0,3,5,1984,10002,10000,10050];

export const KIND_ALIASES: Record<string, number> = {
  "SetMetadata": 0,
  "Follows": 3,
  "Contacts": 3,
  "Deletion": 5,
  "MemoryHole": 1984,
  "BlockList": 10000,
  "Article": 30023,
  "CategorizedPeopleList": 30000,
  "CategorizedBookmarksList": 30001
};

// Lookup map for fast access
const kindMap = new Map<number, KindInfo>(EVENT_KINDS.map(k => [k.kind, k]));

export function getKindInfo(kind: number): KindInfo | undefined {
  return kindMap.get(kind);
}

export function getKindName(kind: number): string {
  const info = kindMap.get(kind);
  return info ? info.name : `Kind ${kind}`;
}

export function isReplaceable(kind: number): boolean {
  if (kind === 0 || kind === 3) return true;
  return kind >= KIND_RANGES.replaceable.start && kind < KIND_RANGES.replaceable.end;
}

export function isEphemeral(kind: number): boolean {
  return kind >= KIND_RANGES.ephemeral.start && kind < KIND_RANGES.ephemeral.end;
}

export function isParameterized(kind: number): boolean {
  return kind >= KIND_RANGES.parameterized.start && kind <= KIND_RANGES.parameterized.end;
}

export function isPrivileged(kind: number): boolean {
  return PRIVILEGED_KINDS.includes(kind);
}

export function isDirectoryKind(kind: number): boolean {
  return DIRECTORY_KINDS.includes(kind);
}
