Files
nostrlib/kinds.go
T
2026-06-06 11:42:21 -03:00

586 lines
20 KiB
Go

package nostr
import "strconv"
type Kind uint16
func (kind Kind) Num() uint16 { return uint16(kind) }
func (kind Kind) String() string { return "kind::" + kind.Name() + "<" + strconv.Itoa(int(kind)) + ">" }
func (kind Kind) Name() string {
switch kind {
case KindProfileMetadata:
return "ProfileMetadata"
case KindTextNote:
return "TextNote"
case KindRecommendServer:
return "RecommendServer"
case KindFollowList:
return "FollowList"
case KindEncryptedDirectMessage:
return "EncryptedDirectMessage"
case KindDeletion:
return "Deletion"
case KindRepost:
return "Repost"
case KindReaction:
return "Reaction"
case KindBadgeAward:
return "BadgeAward"
case KindSimpleGroupChatMessage:
return "SimpleGroupChatMessage"
case KindSimpleGroupThreadedReply:
return "SimpleGroupThreadedReply"
case KindSimpleGroupThread:
return "SimpleGroupThread"
case KindSimpleGroupReply:
return "SimpleGroupReply"
case KindSeal:
return "Seal"
case KindDirectMessage:
return "DirectMessage"
case KindFileMessage:
return "FileMessage"
case KindGenericRepost:
return "GenericRepost"
case KindReactionToWebsite:
return "ReactionToWebsite"
case KindPhoto:
return "Photo"
case KindNormalVideoEvent:
return "NormalVideoEvent"
case KindShortVideoEvent:
return "ShortVideoEvent"
case KindPublicMessage:
return "PublicMessage"
case KindChannelCreation:
return "ChannelCreation"
case KindChannelMetadata:
return "ChannelMetadata"
case KindChannelMessage:
return "ChannelMessage"
case KindChannelHideMessage:
return "ChannelHideMessage"
case KindChannelMuteUser:
return "ChannelMuteUser"
case KindPodcastEpisode:
return "PodcastEpisode"
case KindChess:
return "Chess"
case KindMergeRequests:
return "MergeRequests"
case KindPollResponse:
return "PollResponse"
case KindBid:
return "Bid"
case KindBidConfirmation:
return "BidConfirmation"
case KindOpenTimestamps:
return "OpenTimestamps"
case KindGiftWrap:
return "GiftWrap"
case KindFileMetadata:
return "FileMetadata"
case KindPoll:
return "Poll"
case KindComment:
return "Comment"
case KindVoiceMessage:
return "VoiceMessage"
case KindScroll:
return "Scroll"
case KindVoiceMessageComment:
return "VoiceMessageComment"
case KindLiveChatMessage:
return "LiveChatMessage"
case KindCodeSnippet:
return "CodeSnippet"
case KindPatch:
return "Patch"
case KindGitPullRequest:
return "GitPullRequest"
case KindGitPullRequestUpdate:
return "GitPullRequestUpdate"
case KindIssue:
return "Issue"
case KindReply:
return "Reply"
case KindStatusOpen:
return "StatusOpen"
case KindStatusApplied:
return "StatusApplied"
case KindStatusClosed:
return "StatusClosed"
case KindStatusDraft:
return "StatusDraft"
case KindProblemTracker:
return "ProblemTracker"
case KindReporting:
return "Reporting"
case KindLabel:
return "Label"
case KindRelayReviews:
return "RelayReviews"
case KindAIEmbeddings:
return "AIEmbeddings"
case KindTorrent:
return "Torrent"
case KindTorrentComment:
return "TorrentComment"
case KindCoinjoinPool:
return "CoinjoinPool"
case KindDecoupledKeyClientAnnouncement:
return "DecoupledKeyClientAnnouncement"
case KindDecoupledEncryptionKeyDistribution:
return "DecoupledEncryptionKeyDistribution"
case KindCommunityPostApproval:
return "CommunityPostApproval"
case KindJobFeedback:
return "JobFeedback"
case KindReservedCashuWalletTokens:
return "ReservedCashuWalletTokens"
case KindCashuWalletTokens:
return "CashuWalletTokens"
case KindCashuWalletHistory:
return "CashuWalletHistory"
case KindGeocacheLog:
return "GeocacheLog"
case KindGeocacheProofOfFind:
return "GeocacheProofOfFind"
case KindSimpleGroupPutUser:
return "SimpleGroupPutUser"
case KindSimpleGroupRemoveUser:
return "SimpleGroupRemoveUser"
case KindSimpleGroupEditMetadata:
return "SimpleGroupEditMetadata"
case KindSimpleGroupDeleteEvent:
return "SimpleGroupDeleteEvent"
case KindSimpleGroupCreateGroup:
return "SimpleGroupCreateGroup"
case KindSimpleGroupDeleteGroup:
return "SimpleGroupDeleteGroup"
case KindSimpleGroupCreateInvite:
return "SimpleGroupCreateInvite"
case KindSimpleGroupJoinRequest:
return "SimpleGroupJoinRequest"
case KindSimpleGroupLeaveRequest:
return "SimpleGroupLeaveRequest"
case KindZapGoal:
return "ZapGoal"
case KindNutZap:
return "NutZap"
case KindTidalLogin:
return "TidalLogin"
case KindZapRequest:
return "ZapRequest"
case KindZap:
return "Zap"
case KindHighlights:
return "Highlights"
case KindMuteList:
return "MuteList"
case KindPinList:
return "PinList"
case KindRelayListMetadata:
return "RelayListMetadata"
case KindBookmarkList:
return "BookmarkList"
case KindCommunityList:
return "CommunityList"
case KindPublicChatList:
return "PublicChatList"
case KindBlockedRelayList:
return "BlockedRelayList"
case KindSearchRelayList:
return "SearchRelayList"
case KindSimpleGroupList:
return "SimpleGroupList"
case KindFavoriteRelaysList:
return "FavoriteRelaysList"
case KindPrivateEventRelayList:
return "PrivateEventRelayList"
case KindInterestList:
return "InterestList"
case KindNutZapInfo:
return "NutZapInfo"
case KindMediaFollows:
return "MediaFollows"
case KindEmojiList:
return "EmojiList"
case KindDecoupledKeyAnnouncement:
return "DecoupledKeyAnnouncement"
case KindDMRelayList:
return "DMRelayList"
case KindFavoritePodcasts:
return "FavoritePodcasts"
case KindUserServerList:
return "UserServerList"
case KindFileStorageServerList:
return "FileStorageServerList"
case KindGoodWikiAuthorList:
return "GoodWikiAuthorList"
case KindGoodWikiRelayList:
return "GoodWikiRelayList"
case KindPodcastMetadata:
return "PodcastMetadata"
case KindAuthoredPodcasts:
return "AuthoredPodcasts"
case KindRelayMonitorAnnouncement:
return "RelayMonitorAnnouncement"
case KindRoomPresence:
return "RoomPresence"
case KindUserGraspList:
return "UserGraspList"
case KindProxyAnnouncement:
return "ProxyAnnouncement"
case KindTransportMethodAnnouncement:
return "TransportMethodAnnouncement"
case KindNWCWalletInfo:
return "NWCWalletInfo"
case KindNsiteRoot:
return "NsiteRoot"
case KindCashuWalletEvent:
return "CashuWalletEvent"
case KindLightningPubRPC:
return "LightningPubRPC"
case KindClientAuthentication:
return "ClientAuthentication"
case KindNWCWalletRequest:
return "NWCWalletRequest"
case KindNWCWalletResponse:
return "NWCWalletResponse"
case KindNostrConnect:
return "NostrConnect"
case KindBlobs:
return "Blobs"
case KindHTTPAuth:
return "HTTPAuth"
case KindCategorizedPeopleList:
return "CategorizedPeopleList"
case KindCategorizedBookmarksList:
return "CategorizedBookmarksList"
case KindRelaySets:
return "RelaySets"
case KindBookmarkSets:
return "BookmarkSets"
case KindCuratedSets:
return "CuratedSets"
case KindCuratedVideoSets:
return "CuratedVideoSets"
case KindMuteSets:
return "MuteSets"
case KindProfileBadges:
return "ProfileBadges"
case KindBadgeDefinition:
return "BadgeDefinition"
case KindInterestSets:
return "InterestSets"
case KindStallDefinition:
return "StallDefinition"
case KindProductDefinition:
return "ProductDefinition"
case KindMarketplaceUI:
return "MarketplaceUI"
case KindProductSoldAsAuction:
return "ProductSoldAsAuction"
case KindArticle:
return "Article"
case KindDraftArticle:
return "DraftArticle"
case KindEmojiSets:
return "EmojiSets"
case KindModularArticleHeader:
return "ModularArticleHeader"
case KindModularArticleContent:
return "ModularArticleContent"
case KindReleaseArtifactSets:
return "ReleaseArtifactSets"
case KindApplicationSpecificData:
return "ApplicationSpecificData"
case KindRelayDiscovery:
return "RelayDiscovery"
case KindAppCurationSet:
return "AppCurationSet"
case KindLiveEvent:
return "LiveEvent"
case KindInteractiveRoom:
return "InteractiveRoom"
case KindConferenceEvent:
return "ConferenceEvent"
case KindUserStatuses:
return "UserStatuses"
case KindSlideSet:
return "SlideSet"
case KindClassifiedListing:
return "ClassifiedListing"
case KindDraftClassifiedListing:
return "DraftClassifiedListing"
case KindRepositoryAnnouncement:
return "RepositoryAnnouncement"
case KindRepositoryState:
return "RepositoryState"
case KindWikiArticle:
return "WikiArticle"
case KindRedirects:
return "Redirects"
case KindDraftEvent:
return "DraftEvent"
case KindLinkSet:
return "LinkSet"
case KindFeed:
return "Feed"
case KindDateCalendarEvent:
return "DateCalendarEvent"
case KindTimeCalendarEvent:
return "TimeCalendarEvent"
case KindCalendar:
return "Calendar"
case KindCalendarEventRSVP:
return "CalendarEventRSVP"
case KindHandlerRecommendation:
return "HandlerRecommendation"
case KindHandlerInformation:
return "HandlerInformation"
case KindSoftwareApplication:
return "SoftwareApplication"
case KindLegacyNsiteFile:
return "LegacyNsiteFile"
case KindVideoViewEvent:
return "VideoViewEvent"
case KindCommunityDefinition:
return "CommunityDefinition"
case KindNsiteNamed:
return "NsiteNamed"
case KindGeocacheListing:
return "GeocacheListing"
case KindGeocacheLogEntry:
return "GeocacheLogEntry"
case KindCashuMintAnnouncement:
return "CashuMintAnnouncement"
case KindFedimintAnnouncement:
return "FedimintAnnouncement"
case KindPeerToPeerOrderEvents:
return "PeerToPeerOrderEvents"
case KindSimpleGroupMetadata:
return "SimpleGroupMetadata"
case KindSimpleGroupAdmins:
return "SimpleGroupAdmins"
case KindSimpleGroupMembers:
return "SimpleGroupMembers"
case KindSimpleGroupRoles:
return "SimpleGroupRoles"
case KindSimpleGroupLiveKitParticipants:
return "SimpleGroupLiveKitParticipants"
case KindStarterPacks:
return "StarterPacks"
case KindMediaStarterPacks:
return "MediaStarterPacks"
case KindWebBookmarks:
return "WebBookmarks"
}
return "unknown"
}
const (
KindProfileMetadata Kind = 0
KindTextNote Kind = 1
KindRecommendServer Kind = 2
KindFollowList Kind = 3
KindEncryptedDirectMessage Kind = 4
KindDeletion Kind = 5
KindRepost Kind = 6
KindReaction Kind = 7
KindBadgeAward Kind = 8
KindSimpleGroupChatMessage Kind = 9
KindSimpleGroupThreadedReply Kind = 10
KindSimpleGroupThread Kind = 11
KindSimpleGroupReply Kind = 12
KindSeal Kind = 13
KindDirectMessage Kind = 14
KindFileMessage Kind = 15
KindGenericRepost Kind = 16
KindReactionToWebsite Kind = 17
KindPhoto Kind = 20
KindNormalVideoEvent Kind = 21
KindShortVideoEvent Kind = 22
KindPublicMessage Kind = 24
KindChannelCreation Kind = 40
KindChannelMetadata Kind = 41
KindChannelMessage Kind = 42
KindChannelHideMessage Kind = 43
KindChannelMuteUser Kind = 44
KindPodcastEpisode Kind = 54
KindChess Kind = 64
KindMergeRequests Kind = 818
KindPollResponse Kind = 1018
KindBid Kind = 1021
KindBidConfirmation Kind = 1022
KindOpenTimestamps Kind = 1040
KindGiftWrap Kind = 1059
KindFileMetadata Kind = 1063
KindPoll Kind = 1068
KindComment Kind = 1111
KindVoiceMessage Kind = 1222
KindScroll Kind = 1227
KindVoiceMessageComment Kind = 1244
KindLiveChatMessage Kind = 1311
KindCodeSnippet Kind = 1337
KindPatch Kind = 1617
KindGitPullRequest Kind = 1618
KindGitPullRequestUpdate Kind = 1619
KindIssue Kind = 1621
KindReply Kind = 1622
KindStatusOpen Kind = 1630
KindStatusApplied Kind = 1631
KindStatusClosed Kind = 1632
KindStatusDraft Kind = 1633
KindProblemTracker Kind = 1971
KindReporting Kind = 1984
KindLabel Kind = 1985
KindRelayReviews Kind = 1986
KindAIEmbeddings Kind = 1987
KindTorrent Kind = 2003
KindTorrentComment Kind = 2004
KindCoinjoinPool Kind = 2022
KindDecoupledKeyClientAnnouncement Kind = 4454
KindDecoupledEncryptionKeyDistribution Kind = 4455
KindCommunityPostApproval Kind = 4550
KindJobFeedback Kind = 7000
KindReservedCashuWalletTokens Kind = 7374
KindCashuWalletTokens Kind = 7375
KindCashuWalletHistory Kind = 7376
KindGeocacheLog Kind = 7516
KindGeocacheProofOfFind Kind = 7517
KindSimpleGroupPutUser Kind = 9000
KindSimpleGroupRemoveUser Kind = 9001
KindSimpleGroupEditMetadata Kind = 9002
KindSimpleGroupDeleteEvent Kind = 9005
KindSimpleGroupCreateGroup Kind = 9007
KindSimpleGroupDeleteGroup Kind = 9008
KindSimpleGroupCreateInvite Kind = 9009
KindSimpleGroupJoinRequest Kind = 9021
KindSimpleGroupLeaveRequest Kind = 9022
KindZapGoal Kind = 9041
KindNutZap Kind = 9321
KindTidalLogin Kind = 9467
KindZapRequest Kind = 9734
KindZap Kind = 9735
KindHighlights Kind = 9802
KindMuteList Kind = 10000
KindPinList Kind = 10001
KindRelayListMetadata Kind = 10002
KindBookmarkList Kind = 10003
KindCommunityList Kind = 10004
KindPublicChatList Kind = 10005
KindBlockedRelayList Kind = 10006
KindSearchRelayList Kind = 10007
KindSimpleGroupList Kind = 10009
KindFavoriteRelaysList Kind = 10012
KindPrivateEventRelayList Kind = 10013
KindInterestList Kind = 10015
KindNutZapInfo Kind = 10019
KindMediaFollows Kind = 10020
KindEmojiList Kind = 10030
KindDecoupledKeyAnnouncement Kind = 10044
KindDMRelayList Kind = 10050
KindFavoritePodcasts Kind = 10054
KindUserServerList Kind = 10063
KindFileStorageServerList Kind = 10096
KindGoodWikiAuthorList Kind = 10101
KindGoodWikiRelayList Kind = 10102
KindPodcastMetadata Kind = 10154
KindAuthoredPodcasts Kind = 10164
KindRelayMonitorAnnouncement Kind = 10166
KindRoomPresence Kind = 10312
KindUserGraspList Kind = 10317
KindProxyAnnouncement Kind = 10377
KindTransportMethodAnnouncement Kind = 11111
KindNWCWalletInfo Kind = 13194
KindNsiteRoot Kind = 15128
KindCashuWalletEvent Kind = 17375
KindLightningPubRPC Kind = 21000
KindClientAuthentication Kind = 22242
KindNWCWalletRequest Kind = 23194
KindNWCWalletResponse Kind = 23195
KindNostrConnect Kind = 24133
KindBlobs Kind = 24242
KindHTTPAuth Kind = 27235
KindCategorizedPeopleList Kind = 30000
KindCategorizedBookmarksList Kind = 30001
KindRelaySets Kind = 30002
KindBookmarkSets Kind = 30003
KindCuratedSets Kind = 30004
KindCuratedVideoSets Kind = 30005
KindMuteSets Kind = 30007
KindProfileBadges Kind = 30008
KindBadgeDefinition Kind = 30009
KindInterestSets Kind = 30015
KindStallDefinition Kind = 30017
KindProductDefinition Kind = 30018
KindMarketplaceUI Kind = 30019
KindProductSoldAsAuction Kind = 30020
KindArticle Kind = 30023
KindDraftArticle Kind = 30024
KindEmojiSets Kind = 30030
KindModularArticleHeader Kind = 30040
KindModularArticleContent Kind = 30041
KindReleaseArtifactSets Kind = 30063
KindApplicationSpecificData Kind = 30078
KindRelayDiscovery Kind = 30166
KindAppCurationSet Kind = 30267
KindLiveEvent Kind = 30311
KindInteractiveRoom Kind = 30312
KindConferenceEvent Kind = 30313
KindUserStatuses Kind = 30315
KindSlideSet Kind = 30388
KindClassifiedListing Kind = 30402
KindDraftClassifiedListing Kind = 30403
KindRepositoryAnnouncement Kind = 30617
KindRepositoryState Kind = 30618
KindWikiArticle Kind = 30818
KindRedirects Kind = 30819
KindDraftEvent Kind = 31234
KindLinkSet Kind = 31388
KindFeed Kind = 31890
KindDateCalendarEvent Kind = 31922
KindTimeCalendarEvent Kind = 31923
KindCalendar Kind = 31924
KindCalendarEventRSVP Kind = 31925
KindHandlerRecommendation Kind = 31989
KindHandlerInformation Kind = 31990
KindSoftwareApplication Kind = 32267
KindLegacyNsiteFile Kind = 34128
KindVideoViewEvent Kind = 34237
KindCommunityDefinition Kind = 34550
KindNsiteNamed Kind = 35128
KindGeocacheListing Kind = 37515
KindGeocacheLogEntry Kind = 37516
KindCashuMintAnnouncement Kind = 38172
KindFedimintAnnouncement Kind = 38173
KindPeerToPeerOrderEvents Kind = 38383
KindSimpleGroupMetadata Kind = 39000
KindSimpleGroupAdmins Kind = 39001
KindSimpleGroupMembers Kind = 39002
KindSimpleGroupRoles Kind = 39003
KindSimpleGroupLiveKitParticipants Kind = 39004
KindStarterPacks Kind = 39089
KindMediaStarterPacks Kind = 39092
KindWebBookmarks Kind = 39701
)
func (kind Kind) IsRegular() bool {
return kind < 10000 && kind != 0 && kind != 3
}
func (kind Kind) IsReplaceable() bool {
return kind == 0 || kind == 3 || (10000 <= kind && kind < 20000)
}
func (kind Kind) IsEphemeral() bool {
return 20000 <= kind && kind < 30000
}
func (kind Kind) IsAddressable() bool {
return 30000 <= kind && kind < 40000
}