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