kinds.rs (32488B)
1 pub const KIND_PROFILE: u32 = 0; 2 pub const KIND_POST: u32 = 1; 3 pub const KIND_FOLLOW: u32 = 3; 4 pub const KIND_DELETION_REQUEST: u32 = 5; 5 pub const KIND_REPOST: u32 = 6; 6 pub const KIND_REACTION: u32 = 7; 7 pub const KIND_SEAL: u32 = 13; 8 pub const KIND_MESSAGE: u32 = 14; 9 pub const KIND_MESSAGE_FILE: u32 = 15; 10 pub const KIND_GENERIC_REPOST: u32 = 16; 11 pub const KIND_APP_CUSTOM_DATA: u32 = 78; 12 pub const KIND_FARM_CRDT_CHANGE: u32 = KIND_APP_CUSTOM_DATA; 13 pub const KIND_GIFT_WRAP: u32 = 1059; 14 pub const KIND_FILE_METADATA: u32 = 1063; 15 pub const KIND_FARM_FILE_METADATA: u32 = KIND_FILE_METADATA; 16 pub const KIND_PUBLIC_FILE_METADATA: u32 = KIND_FILE_METADATA; 17 pub const KIND_COMMENT: u32 = 1111; 18 pub const KIND_REPORT: u32 = 1984; 19 pub const KIND_GROUP_PUT_USER: u32 = 9000; 20 pub const KIND_GROUP_REMOVE_USER: u32 = 9001; 21 pub const KIND_GROUP_EDIT_METADATA: u32 = 9002; 22 pub const KIND_GROUP_DELETE_EVENT: u32 = 9005; 23 pub const KIND_GROUP_CREATE_GROUP: u32 = 9007; 24 pub const KIND_GROUP_DELETE_GROUP: u32 = 9008; 25 pub const KIND_GROUP_CREATE_INVITE: u32 = 9009; 26 pub const KIND_GROUP_JOIN_REQUEST: u32 = 9021; 27 pub const KIND_GROUP_LEAVE_REQUEST: u32 = 9022; 28 pub const KIND_GEOCHAT: u32 = 20000; 29 pub const KIND_RELAY_AUTH: u32 = 22242; 30 pub const KIND_HTTP_AUTH: u32 = 27235; 31 pub const KIND_LIST_MUTE: u32 = 10000; 32 pub const KIND_LIST_PINNED_NOTES: u32 = 10001; 33 pub const KIND_LIST_READ_WRITE_RELAYS: u32 = 10002; 34 pub const KIND_LIST_BOOKMARKS: u32 = 10003; 35 pub const KIND_LIST_COMMUNITIES: u32 = 10004; 36 pub const KIND_LIST_PUBLIC_CHATS: u32 = 10005; 37 pub const KIND_LIST_BLOCKED_RELAYS: u32 = 10006; 38 pub const KIND_LIST_SEARCH_RELAYS: u32 = 10007; 39 pub const KIND_LIST_SIMPLE_GROUPS: u32 = 10009; 40 pub const KIND_LIST_RELAY_FEEDS: u32 = 10012; 41 pub const KIND_LIST_INTERESTS: u32 = 10015; 42 pub const KIND_LIST_MEDIA_FOLLOWS: u32 = 10020; 43 pub const KIND_LIST_EMOJIS: u32 = 10030; 44 pub const KIND_LIST_DM_RELAYS: u32 = 10050; 45 pub const KIND_LIST_GOOD_WIKI_AUTHORS: u32 = 10101; 46 pub const KIND_LIST_GOOD_WIKI_RELAYS: u32 = 10102; 47 pub const KIND_WIKI_MERGE_REQUEST: u32 = 818; 48 pub const KIND_WIKI_ARTICLE: u32 = 30818; 49 pub const KIND_WIKI_REDIRECT: u32 = 30819; 50 pub const KIND_LIST_SET_FOLLOW: u32 = 30000; 51 pub const KIND_LIST_SET_GENERIC: u32 = 30001; 52 pub const KIND_LIST_SET_RELAY: u32 = 30002; 53 pub const KIND_LIST_SET_BOOKMARK: u32 = 30003; 54 pub const KIND_LIST_SET_CURATION: u32 = 30004; 55 pub const KIND_LIST_SET_VIDEO: u32 = 30005; 56 pub const KIND_LIST_SET_PICTURE: u32 = 30006; 57 pub const KIND_LIST_SET_KIND_MUTE: u32 = 30007; 58 pub const KIND_LIST_SET_INTEREST: u32 = 30015; 59 pub const KIND_LIST_SET_EMOJI: u32 = 30030; 60 pub const KIND_LIST_SET_RELEASE_ARTIFACT: u32 = 30063; 61 pub const KIND_LIST_SET_APP_CURATION: u32 = 30267; 62 pub const KIND_ARTICLE: u32 = 30023; 63 pub const KIND_CALENDAR_DATE_EVENT: u32 = 31922; 64 pub const KIND_CALENDAR_TIME_EVENT: u32 = 31923; 65 pub const KIND_LIST_SET_CALENDAR: u32 = 31924; 66 pub const KIND_CALENDAR: u32 = KIND_LIST_SET_CALENDAR; 67 pub const KIND_CALENDAR_EVENT_RSVP: u32 = 31925; 68 pub const KIND_LIST_SET_STARTER_PACK: u32 = 39089; 69 pub const KIND_LIST_SET_MEDIA_STARTER_PACK: u32 = 39092; 70 pub const KIND_FARM: u32 = 30340; 71 pub const KIND_PLOT: u32 = 30350; 72 pub const KIND_COOP: u32 = 30360; 73 pub const KIND_DOCUMENT: u32 = 30361; 74 pub const KIND_RESOURCE_AREA: u32 = 30370; 75 pub const KIND_RESOURCE_HARVEST_CAP: u32 = 30371; 76 pub const KIND_ACCOUNT_CLAIM: u32 = 30380; 77 pub const KIND_VALIDATOR_SET: u32 = 30381; 78 pub const KIND_APP_DATA: u32 = 30078; 79 pub const KIND_FARM_WORKSPACE_MANIFEST: u32 = KIND_APP_DATA; 80 pub const KIND_CLASSIFIED_LISTING: u32 = 30402; 81 pub const KIND_APPLICATION_HANDLER: u32 = 31990; 82 pub const KIND_GROUP_METADATA: u32 = 39000; 83 pub const KIND_GROUP_ADMINS: u32 = 39001; 84 pub const KIND_GROUP_MEMBERS: u32 = 39002; 85 pub const KIND_GROUP_ROLES: u32 = 39003; 86 87 pub const KIND_ORDER_REQUEST: u32 = 3422; 88 pub const KIND_ORDER_DECISION: u32 = 3423; 89 pub const KIND_ORDER_CANCELLATION: u32 = 3432; 90 pub const KIND_TRADE_FORBIDDEN_3431: u32 = 3431; 91 pub const KIND_RHI_EVIDENCE_ATTESTATION: u32 = 3441; 92 pub const KIND_KNOWLEDGE_CLAIM: u32 = 3460; 93 pub const KIND_KNOWLEDGE_RELATION: u32 = 3461; 94 pub const KIND_KNOWLEDGE_REVIEW: u32 = 3462; 95 pub const KIND_KNOWLEDGE_FIELD_REPORT: u32 = 3463; 96 pub const KIND_KNOWLEDGE_CHANGE_PROPOSAL: u32 = 3464; 97 pub const KIND_CONTRIBUTION_ATTESTATION: u32 = 3465; 98 pub const KIND_TRADE_PROPOSAL: u32 = 3470; 99 pub const KIND_TRADE_DECISION: u32 = 3471; 100 pub const KIND_TRADE_REVISION_PROPOSAL: u32 = 3472; 101 pub const KIND_TRADE_REVISION_DECISION: u32 = 3473; 102 pub const KIND_TRADE_CANCELLATION: u32 = 3474; 103 pub const KIND_TRADE_SELLER_RESERVATION_ASSERTION: u32 = 3475; 104 pub const KIND_KNOWLEDGE_SOURCE: u32 = 30450; 105 pub const KIND_EVIDENCE_BOUNTY: u32 = 30451; 106 107 pub const CLASSIFIED_LISTING_EVENT_KINDS: [u32; 1] = [KIND_CLASSIFIED_LISTING]; 108 109 pub const WIKI_EVENT_KINDS: [u32; 3] = [ 110 KIND_WIKI_MERGE_REQUEST, 111 KIND_WIKI_ARTICLE, 112 KIND_WIKI_REDIRECT, 113 ]; 114 115 pub const KNOWLEDGE_MVP_EVENT_KINDS: [u32; 8] = [ 116 KIND_WIKI_MERGE_REQUEST, 117 KIND_WIKI_ARTICLE, 118 KIND_WIKI_REDIRECT, 119 KIND_KNOWLEDGE_SOURCE, 120 KIND_KNOWLEDGE_CLAIM, 121 KIND_KNOWLEDGE_RELATION, 122 KIND_KNOWLEDGE_REVIEW, 123 KIND_KNOWLEDGE_FIELD_REPORT, 124 ]; 125 126 pub const KNOWLEDGE_BETA_EVENT_KINDS: [u32; 3] = [ 127 KIND_EVIDENCE_BOUNTY, 128 KIND_KNOWLEDGE_CHANGE_PROPOSAL, 129 KIND_CONTRIBUTION_ATTESTATION, 130 ]; 131 132 pub const KNOWLEDGE_EVENT_KINDS: [u32; 11] = [ 133 KIND_WIKI_MERGE_REQUEST, 134 KIND_WIKI_ARTICLE, 135 KIND_WIKI_REDIRECT, 136 KIND_KNOWLEDGE_SOURCE, 137 KIND_KNOWLEDGE_CLAIM, 138 KIND_KNOWLEDGE_RELATION, 139 KIND_KNOWLEDGE_REVIEW, 140 KIND_KNOWLEDGE_FIELD_REPORT, 141 KIND_EVIDENCE_BOUNTY, 142 KIND_KNOWLEDGE_CHANGE_PROPOSAL, 143 KIND_CONTRIBUTION_ATTESTATION, 144 ]; 145 146 pub const KNOWLEDGE_ADDRESSABLE_EVENT_KINDS: [u32; 4] = [ 147 KIND_WIKI_ARTICLE, 148 KIND_WIKI_REDIRECT, 149 KIND_KNOWLEDGE_SOURCE, 150 KIND_EVIDENCE_BOUNTY, 151 ]; 152 153 pub const KNOWLEDGE_REGULAR_EVENT_KINDS: [u32; 7] = [ 154 KIND_WIKI_MERGE_REQUEST, 155 KIND_KNOWLEDGE_CLAIM, 156 KIND_KNOWLEDGE_RELATION, 157 KIND_KNOWLEDGE_REVIEW, 158 KIND_KNOWLEDGE_FIELD_REPORT, 159 KIND_KNOWLEDGE_CHANGE_PROPOSAL, 160 KIND_CONTRIBUTION_ATTESTATION, 161 ]; 162 163 pub const ORDER_EVENT_KINDS: [u32; 3] = [ 164 KIND_ORDER_REQUEST, 165 KIND_ORDER_DECISION, 166 KIND_ORDER_CANCELLATION, 167 ]; 168 169 pub const TRADE_MUTATION_EVENT_KINDS: [u32; 5] = [ 170 KIND_TRADE_PROPOSAL, 171 KIND_TRADE_DECISION, 172 KIND_TRADE_REVISION_PROPOSAL, 173 KIND_TRADE_REVISION_DECISION, 174 KIND_TRADE_CANCELLATION, 175 ]; 176 177 pub const COMMERCIAL_EVENT_KINDS: [u32; 6] = [ 178 KIND_CLASSIFIED_LISTING, 179 KIND_TRADE_PROPOSAL, 180 KIND_TRADE_DECISION, 181 KIND_TRADE_REVISION_PROPOSAL, 182 KIND_TRADE_REVISION_DECISION, 183 KIND_TRADE_CANCELLATION, 184 ]; 185 186 pub const KIND_JOB_REQUEST_MIN: u32 = 5000; 187 pub const KIND_JOB_REQUEST_MAX: u32 = 5999; 188 pub const KIND_JOB_RESULT_MIN: u32 = 6000; 189 pub const KIND_JOB_RESULT_MAX: u32 = 6999; 190 pub const KIND_JOB_FEEDBACK: u32 = 7000; 191 192 pub const HOME_FEED_CANDIDATE_KINDS: [u32; 9] = [ 193 KIND_POST, 194 KIND_REPOST, 195 KIND_GENERIC_REPOST, 196 KIND_ARTICLE, 197 KIND_CLASSIFIED_LISTING, 198 KIND_CALENDAR_DATE_EVENT, 199 KIND_CALENDAR_TIME_EVENT, 200 KIND_FARM, 201 KIND_PUBLIC_FILE_METADATA, 202 ]; 203 204 pub const EVENTS_CANDIDATE_KINDS: [u32; 4] = [ 205 KIND_CALENDAR_DATE_EVENT, 206 KIND_CALENDAR_TIME_EVENT, 207 KIND_CALENDAR, 208 KIND_CALENDAR_EVENT_RSVP, 209 ]; 210 211 pub const MARKET_CANDIDATE_KINDS: [u32; 3] = [ 212 KIND_CLASSIFIED_LISTING, 213 KIND_FARM, 214 KIND_PUBLIC_FILE_METADATA, 215 ]; 216 217 pub const MAP_CANDIDATE_KINDS: [u32; 7] = [ 218 KIND_FARM, 219 KIND_CLASSIFIED_LISTING, 220 KIND_CALENDAR_DATE_EVENT, 221 KIND_CALENDAR_TIME_EVENT, 222 KIND_POST, 223 KIND_ARTICLE, 224 KIND_PUBLIC_FILE_METADATA, 225 ]; 226 227 pub const PROFILE_PUBLIC_CONTENT_KINDS: [u32; 8] = [ 228 KIND_POST, 229 KIND_REPOST, 230 KIND_GENERIC_REPOST, 231 KIND_ARTICLE, 232 KIND_CLASSIFIED_LISTING, 233 KIND_CALENDAR_DATE_EVENT, 234 KIND_CALENDAR_TIME_EVENT, 235 KIND_PUBLIC_FILE_METADATA, 236 ]; 237 238 pub const MODERATION_ADMIN_CANDIDATE_KINDS: [u32; 1] = [KIND_REPORT]; 239 240 pub const NIP29_GROUP_KINDS: [u32; 13] = [ 241 KIND_GROUP_METADATA, 242 KIND_GROUP_ADMINS, 243 KIND_GROUP_MEMBERS, 244 KIND_GROUP_ROLES, 245 KIND_GROUP_PUT_USER, 246 KIND_GROUP_REMOVE_USER, 247 KIND_GROUP_EDIT_METADATA, 248 KIND_GROUP_DELETE_EVENT, 249 KIND_GROUP_CREATE_GROUP, 250 KIND_GROUP_DELETE_GROUP, 251 KIND_GROUP_CREATE_INVITE, 252 KIND_GROUP_JOIN_REQUEST, 253 KIND_GROUP_LEAVE_REQUEST, 254 ]; 255 256 pub const PRIVATE_FARM_OPS_KINDS: [u32; 16] = [ 257 KIND_FARM_WORKSPACE_MANIFEST, 258 KIND_FARM_CRDT_CHANGE, 259 KIND_FARM_FILE_METADATA, 260 KIND_GROUP_METADATA, 261 KIND_GROUP_ADMINS, 262 KIND_GROUP_MEMBERS, 263 KIND_GROUP_ROLES, 264 KIND_GROUP_PUT_USER, 265 KIND_GROUP_REMOVE_USER, 266 KIND_GROUP_EDIT_METADATA, 267 KIND_GROUP_DELETE_EVENT, 268 KIND_GROUP_CREATE_GROUP, 269 KIND_GROUP_DELETE_GROUP, 270 KIND_GROUP_CREATE_INVITE, 271 KIND_GROUP_JOIN_REQUEST, 272 KIND_GROUP_LEAVE_REQUEST, 273 ]; 274 275 pub const PUBLIC_SOCIAL_KINDS: [u32; 12] = [ 276 KIND_POST, 277 KIND_DELETION_REQUEST, 278 KIND_REPOST, 279 KIND_REACTION, 280 KIND_GENERIC_REPOST, 281 KIND_PUBLIC_FILE_METADATA, 282 KIND_COMMENT, 283 KIND_ARTICLE, 284 KIND_CALENDAR_DATE_EVENT, 285 KIND_CALENDAR_TIME_EVENT, 286 KIND_CALENDAR, 287 KIND_CALENDAR_EVENT_RSVP, 288 ]; 289 290 pub const UNAMBIGUOUS_PUBLIC_SOCIAL_KINDS: [u32; 11] = [ 291 KIND_POST, 292 KIND_DELETION_REQUEST, 293 KIND_REPOST, 294 KIND_REACTION, 295 KIND_GENERIC_REPOST, 296 KIND_COMMENT, 297 KIND_ARTICLE, 298 KIND_CALENDAR_DATE_EVENT, 299 KIND_CALENDAR_TIME_EVENT, 300 KIND_CALENDAR, 301 KIND_CALENDAR_EVENT_RSVP, 302 ]; 303 304 pub const MVP_SOCIAL_KINDS: [u32; 7] = [ 305 KIND_POST, 306 KIND_DELETION_REQUEST, 307 KIND_PUBLIC_FILE_METADATA, 308 KIND_COMMENT, 309 KIND_ARTICLE, 310 KIND_CALENDAR_DATE_EVENT, 311 KIND_CALENDAR_TIME_EVENT, 312 ]; 313 314 pub const PRODUCTION_SOCIAL_KINDS: [u32; 4] = [ 315 KIND_REPOST, 316 KIND_GENERIC_REPOST, 317 KIND_CALENDAR, 318 KIND_CALENDAR_EVENT_RSVP, 319 ]; 320 321 #[inline] 322 pub const fn is_classified_listing_kind(kind: u32) -> bool { 323 kind == KIND_CLASSIFIED_LISTING 324 } 325 326 #[inline] 327 pub const fn is_public_file_metadata_kind(kind: u32) -> bool { 328 kind == KIND_PUBLIC_FILE_METADATA 329 } 330 331 #[inline] 332 pub const fn is_ambiguous_public_social_kind(kind: u32) -> bool { 333 kind == KIND_PUBLIC_FILE_METADATA 334 } 335 336 #[inline] 337 pub const fn is_unambiguous_public_social_kind(kind: u32) -> bool { 338 matches!( 339 kind, 340 KIND_POST 341 | KIND_DELETION_REQUEST 342 | KIND_REPOST 343 | KIND_REACTION 344 | KIND_GENERIC_REPOST 345 | KIND_COMMENT 346 | KIND_ARTICLE 347 | KIND_CALENDAR_DATE_EVENT 348 | KIND_CALENDAR_TIME_EVENT 349 | KIND_CALENDAR 350 | KIND_CALENDAR_EVENT_RSVP 351 ) 352 } 353 354 #[inline] 355 pub const fn is_public_social_kind(kind: u32) -> bool { 356 is_unambiguous_public_social_kind(kind) || is_ambiguous_public_social_kind(kind) 357 } 358 359 #[inline] 360 pub const fn is_mvp_social_kind(kind: u32) -> bool { 361 matches!( 362 kind, 363 KIND_POST 364 | KIND_DELETION_REQUEST 365 | KIND_PUBLIC_FILE_METADATA 366 | KIND_COMMENT 367 | KIND_ARTICLE 368 | KIND_CALENDAR_DATE_EVENT 369 | KIND_CALENDAR_TIME_EVENT 370 ) 371 } 372 373 #[inline] 374 pub const fn is_production_social_kind(kind: u32) -> bool { 375 matches!( 376 kind, 377 KIND_REPOST | KIND_GENERIC_REPOST | KIND_CALENDAR | KIND_CALENDAR_EVENT_RSVP 378 ) 379 } 380 381 #[inline] 382 pub const fn is_wiki_event_kind(kind: u32) -> bool { 383 matches!( 384 kind, 385 KIND_WIKI_MERGE_REQUEST | KIND_WIKI_ARTICLE | KIND_WIKI_REDIRECT 386 ) 387 } 388 389 #[inline] 390 pub const fn is_knowledge_mvp_event_kind(kind: u32) -> bool { 391 matches!( 392 kind, 393 KIND_WIKI_MERGE_REQUEST 394 | KIND_WIKI_ARTICLE 395 | KIND_WIKI_REDIRECT 396 | KIND_KNOWLEDGE_SOURCE 397 | KIND_KNOWLEDGE_CLAIM 398 | KIND_KNOWLEDGE_RELATION 399 | KIND_KNOWLEDGE_REVIEW 400 | KIND_KNOWLEDGE_FIELD_REPORT 401 ) 402 } 403 404 #[inline] 405 pub const fn is_knowledge_beta_event_kind(kind: u32) -> bool { 406 matches!( 407 kind, 408 KIND_EVIDENCE_BOUNTY | KIND_KNOWLEDGE_CHANGE_PROPOSAL | KIND_CONTRIBUTION_ATTESTATION 409 ) 410 } 411 412 #[inline] 413 pub const fn is_knowledge_event_kind(kind: u32) -> bool { 414 is_knowledge_mvp_event_kind(kind) || is_knowledge_beta_event_kind(kind) 415 } 416 417 #[inline] 418 pub const fn is_knowledge_addressable_event_kind(kind: u32) -> bool { 419 matches!( 420 kind, 421 KIND_WIKI_ARTICLE | KIND_WIKI_REDIRECT | KIND_KNOWLEDGE_SOURCE | KIND_EVIDENCE_BOUNTY 422 ) 423 } 424 425 #[inline] 426 pub const fn is_knowledge_regular_event_kind(kind: u32) -> bool { 427 matches!( 428 kind, 429 KIND_WIKI_MERGE_REQUEST 430 | KIND_KNOWLEDGE_CLAIM 431 | KIND_KNOWLEDGE_RELATION 432 | KIND_KNOWLEDGE_REVIEW 433 | KIND_KNOWLEDGE_FIELD_REPORT 434 | KIND_KNOWLEDGE_CHANGE_PROPOSAL 435 | KIND_CONTRIBUTION_ATTESTATION 436 ) 437 } 438 439 #[inline] 440 pub const fn is_home_feed_candidate_kind(kind: u32) -> bool { 441 matches!( 442 kind, 443 KIND_POST 444 | KIND_REPOST 445 | KIND_GENERIC_REPOST 446 | KIND_ARTICLE 447 | KIND_CLASSIFIED_LISTING 448 | KIND_CALENDAR_DATE_EVENT 449 | KIND_CALENDAR_TIME_EVENT 450 | KIND_FARM 451 | KIND_PUBLIC_FILE_METADATA 452 ) 453 } 454 455 #[inline] 456 pub const fn is_events_candidate_kind(kind: u32) -> bool { 457 matches!( 458 kind, 459 KIND_CALENDAR_DATE_EVENT 460 | KIND_CALENDAR_TIME_EVENT 461 | KIND_CALENDAR 462 | KIND_CALENDAR_EVENT_RSVP 463 ) 464 } 465 466 #[inline] 467 pub const fn is_market_candidate_kind(kind: u32) -> bool { 468 matches!( 469 kind, 470 KIND_CLASSIFIED_LISTING | KIND_FARM | KIND_PUBLIC_FILE_METADATA 471 ) 472 } 473 474 #[inline] 475 pub const fn is_map_candidate_kind(kind: u32) -> bool { 476 matches!( 477 kind, 478 KIND_FARM 479 | KIND_CLASSIFIED_LISTING 480 | KIND_CALENDAR_DATE_EVENT 481 | KIND_CALENDAR_TIME_EVENT 482 | KIND_POST 483 | KIND_ARTICLE 484 | KIND_PUBLIC_FILE_METADATA 485 ) 486 } 487 488 #[inline] 489 pub const fn is_profile_public_content_kind(kind: u32) -> bool { 490 matches!( 491 kind, 492 KIND_POST 493 | KIND_REPOST 494 | KIND_GENERIC_REPOST 495 | KIND_ARTICLE 496 | KIND_CLASSIFIED_LISTING 497 | KIND_CALENDAR_DATE_EVENT 498 | KIND_CALENDAR_TIME_EVENT 499 | KIND_PUBLIC_FILE_METADATA 500 ) 501 } 502 503 #[inline] 504 pub const fn is_moderation_admin_candidate_kind(kind: u32) -> bool { 505 kind == KIND_REPORT 506 } 507 508 #[inline] 509 pub const fn is_nip29_group_kind(kind: u32) -> bool { 510 matches!( 511 kind, 512 KIND_GROUP_METADATA 513 | KIND_GROUP_ADMINS 514 | KIND_GROUP_MEMBERS 515 | KIND_GROUP_ROLES 516 | KIND_GROUP_PUT_USER 517 | KIND_GROUP_REMOVE_USER 518 | KIND_GROUP_EDIT_METADATA 519 | KIND_GROUP_DELETE_EVENT 520 | KIND_GROUP_CREATE_GROUP 521 | KIND_GROUP_DELETE_GROUP 522 | KIND_GROUP_CREATE_INVITE 523 | KIND_GROUP_JOIN_REQUEST 524 | KIND_GROUP_LEAVE_REQUEST 525 ) 526 } 527 528 #[inline] 529 pub const fn is_private_farm_ops_kind(kind: u32) -> bool { 530 kind == KIND_FARM_WORKSPACE_MANIFEST 531 || kind == KIND_FARM_CRDT_CHANGE 532 || kind == KIND_FARM_FILE_METADATA 533 || is_nip29_group_kind(kind) 534 } 535 536 #[inline] 537 pub const fn is_order_event_kind(kind: u32) -> bool { 538 matches!( 539 kind, 540 KIND_ORDER_REQUEST | KIND_ORDER_DECISION | KIND_ORDER_CANCELLATION 541 ) 542 } 543 544 #[inline] 545 pub const fn is_trade_mutation_event_kind(kind: u32) -> bool { 546 matches!( 547 kind, 548 KIND_TRADE_PROPOSAL 549 | KIND_TRADE_DECISION 550 | KIND_TRADE_REVISION_PROPOSAL 551 | KIND_TRADE_REVISION_DECISION 552 | KIND_TRADE_CANCELLATION 553 ) 554 } 555 556 #[inline] 557 pub const fn is_commercial_event_kind(kind: u32) -> bool { 558 is_classified_listing_kind(kind) || is_trade_mutation_event_kind(kind) 559 } 560 561 #[inline] 562 pub const fn is_nip51_standard_list_kind(kind: u32) -> bool { 563 matches!( 564 kind, 565 KIND_LIST_MUTE 566 | KIND_LIST_PINNED_NOTES 567 | KIND_LIST_READ_WRITE_RELAYS 568 | KIND_LIST_BOOKMARKS 569 | KIND_LIST_COMMUNITIES 570 | KIND_LIST_PUBLIC_CHATS 571 | KIND_LIST_BLOCKED_RELAYS 572 | KIND_LIST_SEARCH_RELAYS 573 | KIND_LIST_SIMPLE_GROUPS 574 | KIND_LIST_RELAY_FEEDS 575 | KIND_LIST_INTERESTS 576 | KIND_LIST_MEDIA_FOLLOWS 577 | KIND_LIST_EMOJIS 578 | KIND_LIST_DM_RELAYS 579 | KIND_LIST_GOOD_WIKI_AUTHORS 580 | KIND_LIST_GOOD_WIKI_RELAYS 581 ) 582 } 583 #[inline] 584 pub const fn is_nip51_list_set_kind(kind: u32) -> bool { 585 matches!( 586 kind, 587 KIND_LIST_SET_FOLLOW 588 | KIND_LIST_SET_GENERIC 589 | KIND_LIST_SET_RELAY 590 | KIND_LIST_SET_BOOKMARK 591 | KIND_LIST_SET_CURATION 592 | KIND_LIST_SET_VIDEO 593 | KIND_LIST_SET_PICTURE 594 | KIND_LIST_SET_KIND_MUTE 595 | KIND_LIST_SET_INTEREST 596 | KIND_LIST_SET_EMOJI 597 | KIND_LIST_SET_RELEASE_ARTIFACT 598 | KIND_LIST_SET_APP_CURATION 599 | KIND_LIST_SET_CALENDAR 600 | KIND_LIST_SET_STARTER_PACK 601 | KIND_LIST_SET_MEDIA_STARTER_PACK 602 ) 603 } 604 605 #[inline] 606 pub const fn is_request_kind(kind: u32) -> bool { 607 kind >= KIND_JOB_REQUEST_MIN && kind <= KIND_JOB_REQUEST_MAX 608 } 609 #[inline] 610 pub const fn is_result_kind(kind: u32) -> bool { 611 kind >= KIND_JOB_RESULT_MIN && kind <= KIND_JOB_RESULT_MAX 612 } 613 #[inline] 614 pub const fn result_kind_for_request_kind(kind: u32) -> Option<u32> { 615 if is_request_kind(kind) { 616 Some(kind + 1000) 617 } else { 618 None 619 } 620 } 621 #[inline] 622 pub const fn request_kind_for_result_kind(kind: u32) -> Option<u32> { 623 if is_result_kind(kind) { 624 Some(kind - 1000) 625 } else { 626 None 627 } 628 } 629 630 #[cfg(test)] 631 #[cfg_attr(coverage_nightly, coverage(off))] 632 mod tests { 633 use super::*; 634 635 #[test] 636 fn classifies_standard_list_kinds() { 637 assert!(is_nip51_standard_list_kind(KIND_LIST_MUTE)); 638 assert!(is_nip51_standard_list_kind(KIND_LIST_GOOD_WIKI_RELAYS)); 639 assert!(!is_nip51_standard_list_kind(KIND_PROFILE)); 640 } 641 642 #[test] 643 fn classifies_list_set_kinds() { 644 assert!(is_nip51_list_set_kind(KIND_LIST_SET_FOLLOW)); 645 assert!(is_nip51_list_set_kind(KIND_LIST_SET_MEDIA_STARTER_PACK)); 646 assert!(!is_nip51_list_set_kind(KIND_LIST_MUTE)); 647 } 648 649 #[test] 650 fn maps_job_request_and_result_kinds() { 651 assert!(is_request_kind(KIND_JOB_REQUEST_MIN)); 652 assert!(is_request_kind(KIND_JOB_REQUEST_MAX)); 653 assert!(!is_request_kind(KIND_JOB_REQUEST_MIN - 1)); 654 assert!(!is_request_kind(KIND_JOB_REQUEST_MAX + 1)); 655 656 assert!(is_result_kind(KIND_JOB_RESULT_MIN)); 657 assert!(is_result_kind(KIND_JOB_RESULT_MAX)); 658 assert!(!is_result_kind(KIND_JOB_RESULT_MIN - 1)); 659 assert!(!is_result_kind(KIND_JOB_RESULT_MAX + 1)); 660 661 assert_eq!( 662 result_kind_for_request_kind(KIND_JOB_REQUEST_MIN), 663 Some(KIND_JOB_RESULT_MIN) 664 ); 665 assert_eq!(result_kind_for_request_kind(KIND_JOB_RESULT_MIN), None); 666 assert_eq!( 667 request_kind_for_result_kind(KIND_JOB_RESULT_MIN), 668 Some(KIND_JOB_REQUEST_MIN) 669 ); 670 assert_eq!(request_kind_for_result_kind(KIND_JOB_REQUEST_MIN), None); 671 } 672 673 #[test] 674 fn exposes_field_event_kind_aliases() { 675 assert_eq!(KIND_APP_CUSTOM_DATA, 78); 676 assert_eq!(KIND_FARM_CRDT_CHANGE, KIND_APP_CUSTOM_DATA); 677 assert_eq!(KIND_FILE_METADATA, 1063); 678 assert_eq!(KIND_FARM_FILE_METADATA, KIND_FILE_METADATA); 679 assert_eq!(KIND_PUBLIC_FILE_METADATA, KIND_FILE_METADATA); 680 assert_eq!(KIND_FARM_WORKSPACE_MANIFEST, KIND_APP_DATA); 681 assert_eq!(KIND_RELAY_AUTH, 22242); 682 assert_eq!(KIND_HTTP_AUTH, 27235); 683 } 684 685 #[test] 686 fn exposes_social_event_kind_constants() { 687 assert_eq!(KIND_DELETION_REQUEST, 5); 688 assert_eq!(KIND_REPOST, 6); 689 assert_eq!(KIND_GENERIC_REPOST, 16); 690 assert_eq!(KIND_REPORT, 1984); 691 assert_eq!(KIND_ARTICLE, 30023); 692 assert_eq!(KIND_CALENDAR_DATE_EVENT, 31922); 693 assert_eq!(KIND_CALENDAR_TIME_EVENT, 31923); 694 assert_eq!(KIND_CALENDAR, KIND_LIST_SET_CALENDAR); 695 assert_eq!(KIND_CALENDAR_EVENT_RSVP, 31925); 696 } 697 698 #[test] 699 fn classifies_public_social_kinds() { 700 assert_eq!(PUBLIC_SOCIAL_KINDS.len(), 12); 701 assert_eq!(UNAMBIGUOUS_PUBLIC_SOCIAL_KINDS.len(), 11); 702 assert_eq!(MVP_SOCIAL_KINDS.len(), 7); 703 assert_eq!(PRODUCTION_SOCIAL_KINDS.len(), 4); 704 705 assert!(is_public_social_kind(KIND_POST)); 706 assert!(is_public_social_kind(KIND_DELETION_REQUEST)); 707 assert!(is_public_social_kind(KIND_PUBLIC_FILE_METADATA)); 708 assert!(is_public_file_metadata_kind(KIND_PUBLIC_FILE_METADATA)); 709 assert!(!is_public_file_metadata_kind(KIND_POST)); 710 assert!(is_public_social_kind(KIND_COMMENT)); 711 assert!(is_public_social_kind(KIND_REACTION)); 712 assert!(is_public_social_kind(KIND_ARTICLE)); 713 assert!(is_public_social_kind(KIND_CALENDAR_DATE_EVENT)); 714 assert!(is_public_social_kind(KIND_CALENDAR_TIME_EVENT)); 715 assert!(is_public_social_kind(KIND_REPOST)); 716 assert!(is_public_social_kind(KIND_GENERIC_REPOST)); 717 assert!(is_public_social_kind(KIND_CALENDAR)); 718 assert!(is_public_social_kind(KIND_CALENDAR_EVENT_RSVP)); 719 assert!(!is_public_social_kind(KIND_REPORT)); 720 assert!(!is_public_social_kind(KIND_CLASSIFIED_LISTING)); 721 assert!(!is_public_social_kind(KIND_LIST_READ_WRITE_RELAYS)); 722 assert!(!is_public_social_kind(KIND_FARM_CRDT_CHANGE)); 723 assert!(!is_public_social_kind(KIND_FARM_WORKSPACE_MANIFEST)); 724 725 assert!(is_mvp_social_kind(KIND_ARTICLE)); 726 assert!(is_mvp_social_kind(KIND_COMMENT)); 727 assert!(is_mvp_social_kind(KIND_DELETION_REQUEST)); 728 assert!(!is_mvp_social_kind(KIND_REPORT)); 729 assert!(!is_production_social_kind(KIND_REPORT)); 730 assert!(!is_production_social_kind(KIND_ARTICLE)); 731 assert!(is_ambiguous_public_social_kind(KIND_PUBLIC_FILE_METADATA)); 732 assert!(!is_unambiguous_public_social_kind( 733 KIND_PUBLIC_FILE_METADATA 734 )); 735 assert!(is_unambiguous_public_social_kind(KIND_ARTICLE)); 736 assert!(is_unambiguous_public_social_kind(KIND_DELETION_REQUEST)); 737 } 738 739 #[test] 740 fn classifies_knowledge_event_kinds() { 741 assert_eq!( 742 WIKI_EVENT_KINDS, 743 [ 744 KIND_WIKI_MERGE_REQUEST, 745 KIND_WIKI_ARTICLE, 746 KIND_WIKI_REDIRECT 747 ] 748 ); 749 assert_eq!(KNOWLEDGE_MVP_EVENT_KINDS.len(), 8); 750 assert_eq!(KNOWLEDGE_BETA_EVENT_KINDS.len(), 3); 751 assert_eq!(KNOWLEDGE_EVENT_KINDS.len(), 11); 752 assert_eq!(KNOWLEDGE_ADDRESSABLE_EVENT_KINDS.len(), 4); 753 assert_eq!(KNOWLEDGE_REGULAR_EVENT_KINDS.len(), 7); 754 755 assert_eq!(KIND_WIKI_MERGE_REQUEST, 818); 756 assert_eq!(KIND_WIKI_ARTICLE, 30818); 757 assert_eq!(KIND_WIKI_REDIRECT, 30819); 758 assert_eq!(KIND_KNOWLEDGE_SOURCE, 30450); 759 assert_eq!(KIND_EVIDENCE_BOUNTY, 30451); 760 assert_eq!(KIND_KNOWLEDGE_CLAIM, 3460); 761 assert_eq!(KIND_KNOWLEDGE_RELATION, 3461); 762 assert_eq!(KIND_KNOWLEDGE_REVIEW, 3462); 763 assert_eq!(KIND_KNOWLEDGE_FIELD_REPORT, 3463); 764 assert_eq!(KIND_KNOWLEDGE_CHANGE_PROPOSAL, 3464); 765 assert_eq!(KIND_CONTRIBUTION_ATTESTATION, 3465); 766 767 assert!(is_wiki_event_kind(KIND_WIKI_MERGE_REQUEST)); 768 assert!(is_wiki_event_kind(KIND_WIKI_ARTICLE)); 769 assert!(is_wiki_event_kind(KIND_WIKI_REDIRECT)); 770 assert!(!is_wiki_event_kind(KIND_KNOWLEDGE_CLAIM)); 771 assert!(is_knowledge_event_kind(KIND_WIKI_ARTICLE)); 772 assert!(is_knowledge_event_kind(KIND_KNOWLEDGE_CLAIM)); 773 assert!(is_knowledge_mvp_event_kind(KIND_KNOWLEDGE_FIELD_REPORT)); 774 assert!(is_knowledge_beta_event_kind(KIND_EVIDENCE_BOUNTY)); 775 assert!(is_knowledge_addressable_event_kind(KIND_KNOWLEDGE_SOURCE)); 776 assert!(is_knowledge_addressable_event_kind(KIND_EVIDENCE_BOUNTY)); 777 assert!(is_knowledge_regular_event_kind(KIND_WIKI_MERGE_REQUEST)); 778 assert!(is_knowledge_regular_event_kind( 779 KIND_CONTRIBUTION_ATTESTATION 780 )); 781 assert!(!is_knowledge_regular_event_kind(KIND_KNOWLEDGE_SOURCE)); 782 assert!(!is_knowledge_addressable_event_kind(KIND_KNOWLEDGE_CLAIM)); 783 assert!(!is_knowledge_event_kind(KIND_ARTICLE)); 784 } 785 786 #[test] 787 fn classifies_product_surface_candidate_kinds() { 788 assert_eq!(HOME_FEED_CANDIDATE_KINDS.len(), 9); 789 assert_eq!(EVENTS_CANDIDATE_KINDS.len(), 4); 790 assert_eq!(MARKET_CANDIDATE_KINDS.len(), 3); 791 assert_eq!(MAP_CANDIDATE_KINDS.len(), 7); 792 assert_eq!(PROFILE_PUBLIC_CONTENT_KINDS.len(), 8); 793 assert_eq!(MODERATION_ADMIN_CANDIDATE_KINDS.len(), 1); 794 assert_eq!(NIP29_GROUP_KINDS.len(), 13); 795 assert_eq!(PRIVATE_FARM_OPS_KINDS.len(), 16); 796 797 assert!(is_home_feed_candidate_kind(KIND_POST)); 798 assert!(is_home_feed_candidate_kind(KIND_REPOST)); 799 assert!(is_home_feed_candidate_kind(KIND_GENERIC_REPOST)); 800 assert!(is_home_feed_candidate_kind(KIND_ARTICLE)); 801 assert!(is_home_feed_candidate_kind(KIND_CLASSIFIED_LISTING)); 802 assert!(is_home_feed_candidate_kind(KIND_CALENDAR_DATE_EVENT)); 803 assert!(is_home_feed_candidate_kind(KIND_CALENDAR_TIME_EVENT)); 804 assert!(is_home_feed_candidate_kind(KIND_FARM)); 805 assert!(is_home_feed_candidate_kind(KIND_PUBLIC_FILE_METADATA)); 806 assert!(!is_home_feed_candidate_kind(KIND_REPORT)); 807 assert!(!is_home_feed_candidate_kind(KIND_FARM_CRDT_CHANGE)); 808 assert!(!is_home_feed_candidate_kind(KIND_RELAY_AUTH)); 809 assert!(!is_home_feed_candidate_kind(KIND_HTTP_AUTH)); 810 811 assert!(is_events_candidate_kind(KIND_CALENDAR_DATE_EVENT)); 812 assert!(is_events_candidate_kind(KIND_CALENDAR_TIME_EVENT)); 813 assert!(is_events_candidate_kind(KIND_CALENDAR)); 814 assert!(is_events_candidate_kind(KIND_CALENDAR_EVENT_RSVP)); 815 assert!(!is_events_candidate_kind(KIND_POST)); 816 assert!(!is_events_candidate_kind(KIND_FARM_CRDT_CHANGE)); 817 818 assert!(is_market_candidate_kind(KIND_CLASSIFIED_LISTING)); 819 assert!(is_market_candidate_kind(KIND_FARM)); 820 assert!(is_market_candidate_kind(KIND_PUBLIC_FILE_METADATA)); 821 assert!(!is_market_candidate_kind(KIND_REPORT)); 822 823 assert!(is_map_candidate_kind(KIND_FARM)); 824 assert!(is_map_candidate_kind(KIND_CLASSIFIED_LISTING)); 825 assert!(is_map_candidate_kind(KIND_CALENDAR_DATE_EVENT)); 826 assert!(is_map_candidate_kind(KIND_CALENDAR_TIME_EVENT)); 827 assert!(is_map_candidate_kind(KIND_POST)); 828 assert!(is_map_candidate_kind(KIND_ARTICLE)); 829 assert!(is_map_candidate_kind(KIND_PUBLIC_FILE_METADATA)); 830 assert!(!is_map_candidate_kind(KIND_REPORT)); 831 832 assert!(is_profile_public_content_kind(KIND_POST)); 833 assert!(is_profile_public_content_kind(KIND_REPOST)); 834 assert!(is_profile_public_content_kind(KIND_GENERIC_REPOST)); 835 assert!(is_profile_public_content_kind(KIND_ARTICLE)); 836 assert!(is_profile_public_content_kind(KIND_CLASSIFIED_LISTING)); 837 assert!(is_profile_public_content_kind(KIND_CALENDAR_DATE_EVENT)); 838 assert!(is_profile_public_content_kind(KIND_CALENDAR_TIME_EVENT)); 839 assert!(is_profile_public_content_kind(KIND_PUBLIC_FILE_METADATA)); 840 assert!(!is_profile_public_content_kind(KIND_REPORT)); 841 842 assert!(is_moderation_admin_candidate_kind(KIND_REPORT)); 843 assert!(!is_moderation_admin_candidate_kind(KIND_POST)); 844 845 assert!(is_private_farm_ops_kind(KIND_FARM_WORKSPACE_MANIFEST)); 846 assert!(is_private_farm_ops_kind(KIND_FARM_CRDT_CHANGE)); 847 assert!(is_private_farm_ops_kind(KIND_FARM_FILE_METADATA)); 848 assert!(is_nip29_group_kind(KIND_GROUP_METADATA)); 849 assert!(is_private_farm_ops_kind(KIND_GROUP_METADATA)); 850 assert!(is_private_farm_ops_kind(KIND_GROUP_ADMINS)); 851 assert!(is_private_farm_ops_kind(KIND_GROUP_MEMBERS)); 852 assert!(is_private_farm_ops_kind(KIND_GROUP_ROLES)); 853 assert!(is_private_farm_ops_kind(KIND_GROUP_PUT_USER)); 854 assert!(is_private_farm_ops_kind(KIND_GROUP_REMOVE_USER)); 855 assert!(is_private_farm_ops_kind(KIND_GROUP_EDIT_METADATA)); 856 assert!(is_private_farm_ops_kind(KIND_GROUP_DELETE_EVENT)); 857 assert!(is_private_farm_ops_kind(KIND_GROUP_CREATE_GROUP)); 858 assert!(is_private_farm_ops_kind(KIND_GROUP_DELETE_GROUP)); 859 assert!(is_private_farm_ops_kind(KIND_GROUP_CREATE_INVITE)); 860 assert!(is_private_farm_ops_kind(KIND_GROUP_JOIN_REQUEST)); 861 assert!(is_private_farm_ops_kind(KIND_GROUP_LEAVE_REQUEST)); 862 assert!(!is_private_farm_ops_kind(KIND_RELAY_AUTH)); 863 assert!(!is_private_farm_ops_kind(KIND_HTTP_AUTH)); 864 assert!(!is_private_farm_ops_kind(KIND_REPORT)); 865 } 866 867 #[test] 868 fn exposes_nip29_group_kind_constants() { 869 assert_eq!(KIND_GROUP_PUT_USER, 9000); 870 assert_eq!(KIND_GROUP_REMOVE_USER, 9001); 871 assert_eq!(KIND_GROUP_EDIT_METADATA, 9002); 872 assert_eq!(KIND_GROUP_DELETE_EVENT, 9005); 873 assert_eq!(KIND_GROUP_CREATE_GROUP, 9007); 874 assert_eq!(KIND_GROUP_DELETE_GROUP, 9008); 875 assert_eq!(KIND_GROUP_CREATE_INVITE, 9009); 876 assert_eq!(KIND_GROUP_JOIN_REQUEST, 9021); 877 assert_eq!(KIND_GROUP_LEAVE_REQUEST, 9022); 878 assert_eq!(KIND_GROUP_METADATA, 39000); 879 assert_eq!(KIND_GROUP_ADMINS, 39001); 880 assert_eq!(KIND_GROUP_MEMBERS, 39002); 881 assert_eq!(KIND_GROUP_ROLES, 39003); 882 } 883 884 #[test] 885 fn classifies_commercial_event_kinds() { 886 assert_eq!(CLASSIFIED_LISTING_EVENT_KINDS, [KIND_CLASSIFIED_LISTING]); 887 assert_eq!( 888 ORDER_EVENT_KINDS, 889 [ 890 KIND_ORDER_REQUEST, 891 KIND_ORDER_DECISION, 892 KIND_ORDER_CANCELLATION 893 ] 894 ); 895 assert_eq!( 896 TRADE_MUTATION_EVENT_KINDS, 897 [ 898 KIND_TRADE_PROPOSAL, 899 KIND_TRADE_DECISION, 900 KIND_TRADE_REVISION_PROPOSAL, 901 KIND_TRADE_REVISION_DECISION, 902 KIND_TRADE_CANCELLATION, 903 ] 904 ); 905 assert_eq!( 906 COMMERCIAL_EVENT_KINDS, 907 [ 908 KIND_CLASSIFIED_LISTING, 909 KIND_TRADE_PROPOSAL, 910 KIND_TRADE_DECISION, 911 KIND_TRADE_REVISION_PROPOSAL, 912 KIND_TRADE_REVISION_DECISION, 913 KIND_TRADE_CANCELLATION, 914 ] 915 ); 916 917 assert!(is_classified_listing_kind(KIND_CLASSIFIED_LISTING)); 918 assert!(!is_classified_listing_kind(KIND_PROFILE)); 919 920 assert!(is_order_event_kind(KIND_ORDER_REQUEST)); 921 assert!(is_order_event_kind(KIND_ORDER_DECISION)); 922 assert!(is_order_event_kind(KIND_ORDER_CANCELLATION)); 923 assert!(!is_order_event_kind(3424)); 924 assert!(!is_order_event_kind(3425)); 925 assert!(!is_order_event_kind(3433)); 926 assert!(!is_order_event_kind(3434)); 927 assert!(!is_order_event_kind(3435)); 928 assert!(!is_order_event_kind(3436)); 929 assert!(!is_order_event_kind(3440)); 930 assert!(!is_order_event_kind(3431)); 931 932 assert!(is_trade_mutation_event_kind(KIND_TRADE_PROPOSAL)); 933 assert!(is_trade_mutation_event_kind(KIND_TRADE_DECISION)); 934 assert!(is_trade_mutation_event_kind(KIND_TRADE_REVISION_PROPOSAL)); 935 assert!(is_trade_mutation_event_kind(KIND_TRADE_REVISION_DECISION)); 936 assert!(is_trade_mutation_event_kind(KIND_TRADE_CANCELLATION)); 937 assert!(!is_trade_mutation_event_kind(KIND_ORDER_REQUEST)); 938 assert!(!is_trade_mutation_event_kind(3440)); 939 940 assert!(is_commercial_event_kind(KIND_CLASSIFIED_LISTING)); 941 assert!(is_commercial_event_kind(KIND_TRADE_PROPOSAL)); 942 assert!(!is_commercial_event_kind(3440)); 943 assert!(!is_commercial_event_kind(KIND_ORDER_REQUEST)); 944 assert!(!is_commercial_event_kind(KIND_PROFILE)); 945 assert!(!is_commercial_event_kind(30403)); 946 assert!(!is_commercial_event_kind(5321)); 947 assert!(!is_commercial_event_kind(6321)); 948 } 949 }