@d19n/youfibre-odin-sdk 2.0.345 → 2.0.347

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/README.md +3 -1
  2. package/dist/api-sdk-v2/AccountApi.d.ts +4 -0
  3. package/dist/api-sdk-v2/AccountApi.js +12 -0
  4. package/dist/api-sdk-v2/CaseApi.d.ts +2 -0
  5. package/dist/api-sdk-v2/CaseApi.js +6 -0
  6. package/dist/api-sdk-v2/ContactApi.d.ts +2 -0
  7. package/dist/api-sdk-v2/ContactApi.js +6 -0
  8. package/dist/api-sdk-v2/FrustrationEventApi.d.ts +50 -0
  9. package/dist/api-sdk-v2/FrustrationEventApi.js +161 -0
  10. package/dist/api-sdk-v2/FrustrationScoreApi.d.ts +54 -0
  11. package/dist/api-sdk-v2/FrustrationScoreApi.js +173 -0
  12. package/dist/db-sdk-v2/AccountDb.d.ts +4 -0
  13. package/dist/db-sdk-v2/AccountDb.js +12 -0
  14. package/dist/db-sdk-v2/CaseDb.d.ts +2 -0
  15. package/dist/db-sdk-v2/CaseDb.js +6 -0
  16. package/dist/db-sdk-v2/ContactDb.d.ts +2 -0
  17. package/dist/db-sdk-v2/ContactDb.js +6 -0
  18. package/dist/db-sdk-v2/FrustrationEventDb.d.ts +122 -0
  19. package/dist/db-sdk-v2/FrustrationEventDb.js +210 -0
  20. package/dist/db-sdk-v2/FrustrationScoreDb.d.ts +126 -0
  21. package/dist/db-sdk-v2/FrustrationScoreDb.js +222 -0
  22. package/dist/entities-v2/Account.d.ts +6 -0
  23. package/dist/entities-v2/Case.d.ts +87 -4
  24. package/dist/entities-v2/Case.js +47 -5
  25. package/dist/entities-v2/Contact.d.ts +3 -0
  26. package/dist/entities-v2/Conversation.d.ts +6 -0
  27. package/dist/entities-v2/Conversation.js +6 -0
  28. package/dist/entities-v2/FrustrationEvent.d.ts +222 -0
  29. package/dist/entities-v2/FrustrationEvent.js +160 -0
  30. package/dist/entities-v2/FrustrationScore.d.ts +171 -0
  31. package/dist/entities-v2/FrustrationScore.js +123 -0
  32. package/package.json +1 -1
@@ -24,6 +24,8 @@ import { AddressProperties } from './Address';
24
24
  import { MobileConfigurationProperties } from './MobileConfiguration';
25
25
  import { FileProperties } from './File';
26
26
  import { DataIssueProperties } from './DataIssue';
27
+ import { FrustrationScoreProperties } from './FrustrationScore';
28
+ import { FrustrationEventProperties } from './FrustrationEvent';
27
29
  /**
28
30
  * Available types for Account records
29
31
  */
@@ -794,6 +796,10 @@ export declare class Account extends OdinRecord<AccountProperties> {
794
796
  File: OdinLink<LinkedOdinRecord<FileProperties>>;
795
797
  /** Linked DataIssue records (DataIssue__Account) */
796
798
  DataIssue: OdinLink<LinkedOdinRecord<DataIssueProperties>>;
799
+ /** Linked FrustrationScore records (FrustrationScore__Account) */
800
+ FrustrationScore: OdinLink<LinkedOdinRecord<FrustrationScoreProperties>>;
801
+ /** Linked FrustrationEvent records (FrustrationEvent__Account) */
802
+ FrustrationEvent: OdinLink<LinkedOdinRecord<FrustrationEventProperties>>;
797
803
  }
798
804
  /**
799
805
  * RabbitMQ routing keys for Account events
@@ -37,6 +37,7 @@ import { CallProperties } from './Call';
37
37
  import { QaReportProperties } from './QaReport';
38
38
  import { QaEvaluationProperties } from './QaEvaluation';
39
39
  import { CoachingSessionProperties } from './CoachingSession';
40
+ import { FrustrationScoreProperties } from './FrustrationScore';
40
41
  /**
41
42
  * Available types for Case records
42
43
  */
@@ -348,6 +349,7 @@ export declare enum CaseProblem {
348
349
  * - `CUSTOMER_APP` - Customer App
349
350
  * - `CUSTOMER_PORTAL` - Customer Portal
350
351
  * - `EMAIL` - Email
352
+ * - `FACEBOOK_COMMENT` - Facebook comment
351
353
  * - `FACEBOOK_MESSENGER` - Facebook Messenger
352
354
  * - `IN_APP_CHAT` - In-App Chat
353
355
  * - `INSTAGRAM_DM` - Instagram DM
@@ -358,14 +360,14 @@ export declare enum CaseProblem {
358
360
  * - `TWITTER_X_DM` - Twitter/X DM
359
361
  * - `TWITTER_X_MENTION` - Twitter/X Mention
360
362
  * - `WEB_CHAT` - Web chat
361
- * - `WEB_FORM_BUSINESS` - Web form - Business
362
- * - ... and 1 more
363
+ * - ... and 2 more
363
364
  */
364
365
  export declare enum CaseChannel {
365
366
  CALL = "CALL",
366
367
  CUSTOMER_APP = "CUSTOMER_APP",
367
368
  CUSTOMER_PORTAL = "CUSTOMER_PORTAL",
368
369
  EMAIL = "EMAIL",
370
+ FACEBOOK_COMMENT = "FACEBOOK_COMMENT",
369
371
  FACEBOOK_MESSENGER = "FACEBOOK_MESSENGER",
370
372
  IN_APP_CHAT = "IN_APP_CHAT",
371
373
  INSTAGRAM_DM = "INSTAGRAM_DM",
@@ -435,7 +437,7 @@ export declare enum CaseCategory {
435
437
  * - `COPY_OF_INVOICE` - Copy of Invoice
436
438
  * - `CUSTOMER_DEVICE_ISSUE` - Customer Device Issue
437
439
  * - `DATA_SUBJECT_ACCESS_REQUEST` - Data Subject Access Request
438
- * - ... and 41 more
440
+ * - ... and 42 more
439
441
  */
440
442
  export declare enum CaseSubCategory {
441
443
  AMEND_BILLING_DATE = "AMEND_BILLING_DATE",
@@ -458,6 +460,7 @@ export declare enum CaseSubCategory {
458
460
  EQUIPMENT_RETURN_REFUND = "EQUIPMENT_RETURN_REFUND",
459
461
  ESCALATED_COMPLAINT = "ESCALATED_COMPLAINT",
460
462
  ETF_CUSTOMER_LEAVING_YF = "ETF_CUSTOMER_LEAVING",
463
+ FRUSTRATION_OUTREACH = "FRUSTRATION_OUTREACH",
461
464
  GDPR_DATA_BREACH = "GDPR_DATA_BREACH",
462
465
  INACTIVE_CHAT_NO_CUSTOMER_RESPONSE = "INACTIVE_CHAT_NO_CUSTOMER_RESPONSE",
463
466
  INSTALL_APPOINTMENT = "INSTALL_APPOINTMENT",
@@ -1041,6 +1044,38 @@ export declare enum CaseEnquirySubCategory {
1041
1044
  WI_FI_COVERAGE_SIGNAL_INCL_MESH_BOOSTER = "WIFI_COVERAGE_SIGNAL",
1042
1045
  YOU_FIBRE_APP_OTHER = "YOUFIBRE_APP_OTHER"
1043
1046
  }
1047
+ /**
1048
+ * Valid values for Case.FrustrationBand
1049
+ *
1050
+ * A copy of the Account's FrustrationScore stage when the Case was created or last refreshed. Written only by the frustration engine.
1051
+ *
1052
+ * @remarks Available options:
1053
+ * - `CRITICAL` - Critical
1054
+ * - `GREEN` - Green
1055
+ * - `ORANGE` - Orange
1056
+ * - `RED` - Red
1057
+ * - `YELLOW` - Yellow
1058
+ */
1059
+ export declare enum CaseFrustrationBand {
1060
+ CRITICAL = "CRITICAL",
1061
+ GREEN = "GREEN",
1062
+ ORANGE = "ORANGE",
1063
+ RED = "RED",
1064
+ YELLOW = "YELLOW"
1065
+ }
1066
+ /**
1067
+ * Valid values for Case.SaveContactMethod
1068
+ *
1069
+ * How an OTS/recontract retention save was made — call or email. Set only when RetentionOutcome is SAVED.
1070
+ *
1071
+ * @remarks Available options:
1072
+ * - `CALL` - Call
1073
+ * - `EMAIL` - Email
1074
+ */
1075
+ export declare enum CaseSaveContactMethod {
1076
+ CALL = "CALL",
1077
+ EMAIL = "EMAIL"
1078
+ }
1044
1079
  /**
1045
1080
  * Property keys for Case
1046
1081
  * Use these constants instead of string literals for type safety
@@ -1247,7 +1282,13 @@ export declare enum CasePropertyKeys {
1247
1282
  /** Why the customer contacted us, top level. 20-value business taxonomy (Categories.xlsx, 2026-09-11). Option position is PRECEDENCE, not display order — lowest number wins when several could apply. Classified by the Qwen categoriser (CASES-1862) and overridable by an agent. Distinct from Category, which stays the outage/retention operational discriminator. */
1248
1283
  EnquiryCategory = "EnquiryCategory",
1249
1284
  /** Why the customer contacted us, specific. 119-value business taxonomy (Categories.xlsx, 2026-09-11); every label is globally unique, so this value alone determines EnquiryCategory. Each category carries an "- other" catch-all so "nothing specific fits" has a defined answer. Parentage lives in the form action's enumOptionFilter (CASES-1861), not on the column. */
1250
- EnquirySubCategory = "EnquirySubCategory"
1285
+ EnquirySubCategory = "EnquirySubCategory",
1286
+ /** A copy of the Account's FrustrationScore.Score when the Case was created or last refreshed. Written only by the frustration engine; the live value is on the FrustrationScore record. */
1287
+ FrustrationScore = "FrustrationScore",
1288
+ /** A copy of the Account's FrustrationScore stage when the Case was created or last refreshed. Written only by the frustration engine. */
1289
+ FrustrationBand = "FrustrationBand",
1290
+ /** How an OTS/recontract retention save was made — call or email. Set only when RetentionOutcome is SAVED. */
1291
+ SaveContactMethod = "SaveContactMethod"
1251
1292
  }
1252
1293
  /**
1253
1294
  * Properties for Case records
@@ -1826,6 +1867,26 @@ export interface CaseProperties {
1826
1867
  * @enum {CaseEnquirySubCategory}
1827
1868
  */
1828
1869
  EnquirySubCategory: CaseEnquirySubCategory;
1870
+ /** A copy of the Account's FrustrationScore.Score when the Case was created or last refreshed. Written only by the frustration engine; the live value is on the FrustrationScore record.
1871
+ *
1872
+ * @type {NUMBER}
1873
+ * @default
1874
+ */
1875
+ FrustrationScore: number;
1876
+ /** A copy of the Account's FrustrationScore stage when the Case was created or last refreshed. Written only by the frustration engine.
1877
+ *
1878
+ * @type {ENUM}
1879
+ * @default
1880
+ * @enum {CaseFrustrationBand}
1881
+ */
1882
+ FrustrationBand: CaseFrustrationBand;
1883
+ /** How an OTS/recontract retention save was made — call or email. Set only when RetentionOutcome is SAVED.
1884
+ *
1885
+ * @type {ENUM}
1886
+ * @default
1887
+ * @enum {CaseSaveContactMethod}
1888
+ */
1889
+ SaveContactMethod: CaseSaveContactMethod;
1829
1890
  }
1830
1891
  /**
1831
1892
  * Properties for OUTAGE Case records
@@ -2404,6 +2465,26 @@ export interface OutageCaseProperties {
2404
2465
  * @enum {CaseEnquirySubCategory}
2405
2466
  */
2406
2467
  EnquirySubCategory: CaseEnquirySubCategory;
2468
+ /** A copy of the Account's FrustrationScore.Score when the Case was created or last refreshed. Written only by the frustration engine; the live value is on the FrustrationScore record.
2469
+ *
2470
+ * @type {NUMBER}
2471
+ * @default
2472
+ */
2473
+ FrustrationScore: number;
2474
+ /** A copy of the Account's FrustrationScore stage when the Case was created or last refreshed. Written only by the frustration engine.
2475
+ *
2476
+ * @type {ENUM}
2477
+ * @default
2478
+ * @enum {CaseFrustrationBand}
2479
+ */
2480
+ FrustrationBand: CaseFrustrationBand;
2481
+ /** How an OTS/recontract retention save was made — call or email. Set only when RetentionOutcome is SAVED.
2482
+ *
2483
+ * @type {ENUM}
2484
+ * @default
2485
+ * @enum {CaseSaveContactMethod}
2486
+ */
2487
+ SaveContactMethod: CaseSaveContactMethod;
2407
2488
  }
2408
2489
  /**
2409
2490
  * Case entity from SupportModule
@@ -2476,6 +2557,8 @@ export declare class Case extends OdinRecord<CaseProperties> {
2476
2557
  QaEvaluation: OdinLink<LinkedOdinRecord<QaEvaluationProperties>>;
2477
2558
  /** Linked CoachingSession records (Case__CoachingSession) */
2478
2559
  CoachingSession: OdinLink<LinkedOdinRecord<CoachingSessionProperties>>;
2560
+ /** Linked FrustrationScore records (FrustrationScore__Case) */
2561
+ FrustrationScore: OdinLink<LinkedOdinRecord<FrustrationScoreProperties>>;
2479
2562
  }
2480
2563
  /**
2481
2564
  * RabbitMQ routing keys for Case events
@@ -12,8 +12,8 @@
12
12
  * Generated from Odin schema definition
13
13
  */
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.ROUTING_KEY_LINK_CASE_ACTIVITY_LOG_CREATED = exports.ROUTING_KEY_CASE_OUTAGE_DELETED = exports.ROUTING_KEY_CASE_OUTAGE_UPDATED = exports.ROUTING_KEY_CASE_OUTAGE_CREATED = exports.ROUTING_KEY_CASE_DEFAULT_DELETED = exports.ROUTING_KEY_CASE_DEFAULT_UPDATED = exports.ROUTING_KEY_CASE_DEFAULT_CREATED = exports.ROUTING_KEY_CASE_DELETED = exports.ROUTING_KEY_CASE_UPDATED = exports.ROUTING_KEY_CASE_CREATED = exports.Case = exports.CasePropertyKeys = exports.CaseEnquirySubCategory = exports.CaseEnquiryCategory = exports.CaseDeprecated = exports.CaseRetentionOutcome = exports.CaseVulnerableCustomer = exports.CaseAutoResolutionStatus = exports.CaseLastDialOutcome = exports.CaseEscalationReason = exports.CaseOmbudsmanReason = exports.CaseSource = exports.CaseReasonForReview = exports.CaseImpact = exports.CaseCsatReason = exports.CaseBusinessArea = exports.CaseRetentionOffer = exports.CaseSla = exports.CaseReasonForLeaving = exports.CaseDpaCustomerType = exports.CaseDpaCustomerCategory = exports.CaseConversationStatus = exports.CaseBlockedReason = exports.CaseSubCategory = exports.CaseCategory = exports.CaseChannel = exports.CaseProblem = exports.CasePrimaryExceptionReason = exports.CasePrimaryException = exports.CaseFormalComplaint = exports.CaseOrigin = exports.CaseProviders = exports.CaseCsatResolutionReason = exports.CaseComplaint = exports.CaseCsatAgentReason = exports.OutageCaseStageKeys = exports.OutageCaseStageNames = exports.DefaultCaseStageKeys = exports.DefaultCaseStageNames = exports.CaseEntityTypes = void 0;
16
- exports.ROUTING_KEY_LINK_CASE_COACHING_SESSION_DELETED = exports.ROUTING_KEY_LINK_CASE_COACHING_SESSION_CREATED = exports.ROUTING_KEY_LINK_CASE_QA_EVALUATION_DELETED = exports.ROUTING_KEY_LINK_CASE_QA_EVALUATION_CREATED = exports.ROUTING_KEY_LINK_CASE_QA_REPORT_DELETED = exports.ROUTING_KEY_LINK_CASE_QA_REPORT_CREATED = exports.ROUTING_KEY_LINK_OUTBOUND_DIAL_SESSION_CASE_DELETED = exports.ROUTING_KEY_LINK_OUTBOUND_DIAL_SESSION_CASE_CREATED = exports.ROUTING_KEY_LINK_CASE_ONE_TOUCH_SWITCH_DELETED = exports.ROUTING_KEY_LINK_CASE_ONE_TOUCH_SWITCH_CREATED = exports.ROUTING_KEY_LINK_CASE_CASE_DELETED = exports.ROUTING_KEY_LINK_CASE_CASE_CREATED = exports.ROUTING_KEY_LINK_CASE_SMS_MESSAGE_DELETED = exports.ROUTING_KEY_LINK_CASE_SMS_MESSAGE_CREATED = exports.ROUTING_KEY_LINK_CASE_USER_DELETED = exports.ROUTING_KEY_LINK_CASE_USER_CREATED = exports.ROUTING_KEY_LINK_CASE_CONTRACT_BUY_OUT_DELETED = exports.ROUTING_KEY_LINK_CASE_CONTRACT_BUY_OUT_CREATED = exports.ROUTING_KEY_LINK_CASE_QUEUE_CHANGE_DELETED = exports.ROUTING_KEY_LINK_CASE_QUEUE_CHANGE_CREATED = exports.ROUTING_KEY_LINK_CASE_ADDRESS_DELETED = exports.ROUTING_KEY_LINK_CASE_ADDRESS_CREATED = exports.ROUTING_KEY_LINK_CASE_WORK_ORDER_DELETED = exports.ROUTING_KEY_LINK_CASE_WORK_ORDER_CREATED = exports.ROUTING_KEY_LINK_CASE_EMAIL_DELETED = exports.ROUTING_KEY_LINK_CASE_EMAIL_CREATED = exports.ROUTING_KEY_LINK_CASE_CONTACT_DELETED = exports.ROUTING_KEY_LINK_CASE_CONTACT_CREATED = exports.ROUTING_KEY_LINK_CASE_PUSH_NOTIFICATION_DELETED = exports.ROUTING_KEY_LINK_CASE_PUSH_NOTIFICATION_CREATED = exports.ROUTING_KEY_LINK_CASE_ORDER_DELETED = exports.ROUTING_KEY_LINK_CASE_ORDER_CREATED = exports.ROUTING_KEY_LINK_CASE_CONVERSATION_DELETED = exports.ROUTING_KEY_LINK_CASE_CONVERSATION_CREATED = exports.ROUTING_KEY_LINK_CASE_TEAM_DELETED = exports.ROUTING_KEY_LINK_CASE_TEAM_CREATED = exports.ROUTING_KEY_LINK_CASE_NOTE_DELETED = exports.ROUTING_KEY_LINK_CASE_NOTE_CREATED = exports.ROUTING_KEY_LINK_CASE_FILE_DELETED = exports.ROUTING_KEY_LINK_CASE_FILE_CREATED = exports.ROUTING_KEY_LINK_CASE_CASE_ACTION_DELETED = exports.ROUTING_KEY_LINK_CASE_CASE_ACTION_CREATED = exports.ROUTING_KEY_LINK_CASE_ACTIVITY_LOG_DELETED = void 0;
15
+ exports.ROUTING_KEY_CASE_OUTAGE_UPDATED = exports.ROUTING_KEY_CASE_OUTAGE_CREATED = exports.ROUTING_KEY_CASE_DEFAULT_DELETED = exports.ROUTING_KEY_CASE_DEFAULT_UPDATED = exports.ROUTING_KEY_CASE_DEFAULT_CREATED = exports.ROUTING_KEY_CASE_DELETED = exports.ROUTING_KEY_CASE_UPDATED = exports.ROUTING_KEY_CASE_CREATED = exports.Case = exports.CasePropertyKeys = exports.CaseSaveContactMethod = exports.CaseFrustrationBand = exports.CaseEnquirySubCategory = exports.CaseEnquiryCategory = exports.CaseDeprecated = exports.CaseRetentionOutcome = exports.CaseVulnerableCustomer = exports.CaseAutoResolutionStatus = exports.CaseLastDialOutcome = exports.CaseEscalationReason = exports.CaseOmbudsmanReason = exports.CaseSource = exports.CaseReasonForReview = exports.CaseImpact = exports.CaseCsatReason = exports.CaseBusinessArea = exports.CaseRetentionOffer = exports.CaseSla = exports.CaseReasonForLeaving = exports.CaseDpaCustomerType = exports.CaseDpaCustomerCategory = exports.CaseConversationStatus = exports.CaseBlockedReason = exports.CaseSubCategory = exports.CaseCategory = exports.CaseChannel = exports.CaseProblem = exports.CasePrimaryExceptionReason = exports.CasePrimaryException = exports.CaseFormalComplaint = exports.CaseOrigin = exports.CaseProviders = exports.CaseCsatResolutionReason = exports.CaseComplaint = exports.CaseCsatAgentReason = exports.OutageCaseStageKeys = exports.OutageCaseStageNames = exports.DefaultCaseStageKeys = exports.DefaultCaseStageNames = exports.CaseEntityTypes = void 0;
16
+ exports.ROUTING_KEY_LINK_CASE_COACHING_SESSION_DELETED = exports.ROUTING_KEY_LINK_CASE_COACHING_SESSION_CREATED = exports.ROUTING_KEY_LINK_CASE_QA_EVALUATION_DELETED = exports.ROUTING_KEY_LINK_CASE_QA_EVALUATION_CREATED = exports.ROUTING_KEY_LINK_CASE_QA_REPORT_DELETED = exports.ROUTING_KEY_LINK_CASE_QA_REPORT_CREATED = exports.ROUTING_KEY_LINK_OUTBOUND_DIAL_SESSION_CASE_DELETED = exports.ROUTING_KEY_LINK_OUTBOUND_DIAL_SESSION_CASE_CREATED = exports.ROUTING_KEY_LINK_CASE_ONE_TOUCH_SWITCH_DELETED = exports.ROUTING_KEY_LINK_CASE_ONE_TOUCH_SWITCH_CREATED = exports.ROUTING_KEY_LINK_CASE_CASE_DELETED = exports.ROUTING_KEY_LINK_CASE_CASE_CREATED = exports.ROUTING_KEY_LINK_CASE_SMS_MESSAGE_DELETED = exports.ROUTING_KEY_LINK_CASE_SMS_MESSAGE_CREATED = exports.ROUTING_KEY_LINK_CASE_USER_DELETED = exports.ROUTING_KEY_LINK_CASE_USER_CREATED = exports.ROUTING_KEY_LINK_CASE_CONTRACT_BUY_OUT_DELETED = exports.ROUTING_KEY_LINK_CASE_CONTRACT_BUY_OUT_CREATED = exports.ROUTING_KEY_LINK_CASE_QUEUE_CHANGE_DELETED = exports.ROUTING_KEY_LINK_CASE_QUEUE_CHANGE_CREATED = exports.ROUTING_KEY_LINK_CASE_ADDRESS_DELETED = exports.ROUTING_KEY_LINK_CASE_ADDRESS_CREATED = exports.ROUTING_KEY_LINK_CASE_WORK_ORDER_DELETED = exports.ROUTING_KEY_LINK_CASE_WORK_ORDER_CREATED = exports.ROUTING_KEY_LINK_CASE_EMAIL_DELETED = exports.ROUTING_KEY_LINK_CASE_EMAIL_CREATED = exports.ROUTING_KEY_LINK_CASE_CONTACT_DELETED = exports.ROUTING_KEY_LINK_CASE_CONTACT_CREATED = exports.ROUTING_KEY_LINK_CASE_PUSH_NOTIFICATION_DELETED = exports.ROUTING_KEY_LINK_CASE_PUSH_NOTIFICATION_CREATED = exports.ROUTING_KEY_LINK_CASE_ORDER_DELETED = exports.ROUTING_KEY_LINK_CASE_ORDER_CREATED = exports.ROUTING_KEY_LINK_CASE_CONVERSATION_DELETED = exports.ROUTING_KEY_LINK_CASE_CONVERSATION_CREATED = exports.ROUTING_KEY_LINK_CASE_TEAM_DELETED = exports.ROUTING_KEY_LINK_CASE_TEAM_CREATED = exports.ROUTING_KEY_LINK_CASE_NOTE_DELETED = exports.ROUTING_KEY_LINK_CASE_NOTE_CREATED = exports.ROUTING_KEY_LINK_CASE_FILE_DELETED = exports.ROUTING_KEY_LINK_CASE_FILE_CREATED = exports.ROUTING_KEY_LINK_CASE_CASE_ACTION_DELETED = exports.ROUTING_KEY_LINK_CASE_CASE_ACTION_CREATED = exports.ROUTING_KEY_LINK_CASE_ACTIVITY_LOG_DELETED = exports.ROUTING_KEY_LINK_CASE_ACTIVITY_LOG_CREATED = exports.ROUTING_KEY_CASE_OUTAGE_DELETED = void 0;
17
17
  const core_1 = require("@d19n/odin-types/dist/core");
18
18
  /**
19
19
  * Available types for Case records
@@ -340,6 +340,7 @@ var CaseProblem;
340
340
  * - `CUSTOMER_APP` - Customer App
341
341
  * - `CUSTOMER_PORTAL` - Customer Portal
342
342
  * - `EMAIL` - Email
343
+ * - `FACEBOOK_COMMENT` - Facebook comment
343
344
  * - `FACEBOOK_MESSENGER` - Facebook Messenger
344
345
  * - `IN_APP_CHAT` - In-App Chat
345
346
  * - `INSTAGRAM_DM` - Instagram DM
@@ -350,8 +351,7 @@ var CaseProblem;
350
351
  * - `TWITTER_X_DM` - Twitter/X DM
351
352
  * - `TWITTER_X_MENTION` - Twitter/X Mention
352
353
  * - `WEB_CHAT` - Web chat
353
- * - `WEB_FORM_BUSINESS` - Web form - Business
354
- * - ... and 1 more
354
+ * - ... and 2 more
355
355
  */
356
356
  var CaseChannel;
357
357
  (function (CaseChannel) {
@@ -359,6 +359,7 @@ var CaseChannel;
359
359
  CaseChannel["CUSTOMER_APP"] = "CUSTOMER_APP";
360
360
  CaseChannel["CUSTOMER_PORTAL"] = "CUSTOMER_PORTAL";
361
361
  CaseChannel["EMAIL"] = "EMAIL";
362
+ CaseChannel["FACEBOOK_COMMENT"] = "FACEBOOK_COMMENT";
362
363
  CaseChannel["FACEBOOK_MESSENGER"] = "FACEBOOK_MESSENGER";
363
364
  CaseChannel["IN_APP_CHAT"] = "IN_APP_CHAT";
364
365
  CaseChannel["INSTAGRAM_DM"] = "INSTAGRAM_DM";
@@ -429,7 +430,7 @@ var CaseCategory;
429
430
  * - `COPY_OF_INVOICE` - Copy of Invoice
430
431
  * - `CUSTOMER_DEVICE_ISSUE` - Customer Device Issue
431
432
  * - `DATA_SUBJECT_ACCESS_REQUEST` - Data Subject Access Request
432
- * - ... and 41 more
433
+ * - ... and 42 more
433
434
  */
434
435
  var CaseSubCategory;
435
436
  (function (CaseSubCategory) {
@@ -453,6 +454,7 @@ var CaseSubCategory;
453
454
  CaseSubCategory["EQUIPMENT_RETURN_REFUND"] = "EQUIPMENT_RETURN_REFUND";
454
455
  CaseSubCategory["ESCALATED_COMPLAINT"] = "ESCALATED_COMPLAINT";
455
456
  CaseSubCategory["ETF_CUSTOMER_LEAVING_YF"] = "ETF_CUSTOMER_LEAVING";
457
+ CaseSubCategory["FRUSTRATION_OUTREACH"] = "FRUSTRATION_OUTREACH";
456
458
  CaseSubCategory["GDPR_DATA_BREACH"] = "GDPR_DATA_BREACH";
457
459
  CaseSubCategory["INACTIVE_CHAT_NO_CUSTOMER_RESPONSE"] = "INACTIVE_CHAT_NO_CUSTOMER_RESPONSE";
458
460
  CaseSubCategory["INSTALL_APPOINTMENT"] = "INSTALL_APPOINTMENT";
@@ -1057,6 +1059,40 @@ var CaseEnquirySubCategory;
1057
1059
  CaseEnquirySubCategory["WI_FI_COVERAGE_SIGNAL_INCL_MESH_BOOSTER"] = "WIFI_COVERAGE_SIGNAL";
1058
1060
  CaseEnquirySubCategory["YOU_FIBRE_APP_OTHER"] = "YOUFIBRE_APP_OTHER";
1059
1061
  })(CaseEnquirySubCategory = exports.CaseEnquirySubCategory || (exports.CaseEnquirySubCategory = {}));
1062
+ /**
1063
+ * Valid values for Case.FrustrationBand
1064
+ *
1065
+ * A copy of the Account's FrustrationScore stage when the Case was created or last refreshed. Written only by the frustration engine.
1066
+ *
1067
+ * @remarks Available options:
1068
+ * - `CRITICAL` - Critical
1069
+ * - `GREEN` - Green
1070
+ * - `ORANGE` - Orange
1071
+ * - `RED` - Red
1072
+ * - `YELLOW` - Yellow
1073
+ */
1074
+ var CaseFrustrationBand;
1075
+ (function (CaseFrustrationBand) {
1076
+ CaseFrustrationBand["CRITICAL"] = "CRITICAL";
1077
+ CaseFrustrationBand["GREEN"] = "GREEN";
1078
+ CaseFrustrationBand["ORANGE"] = "ORANGE";
1079
+ CaseFrustrationBand["RED"] = "RED";
1080
+ CaseFrustrationBand["YELLOW"] = "YELLOW";
1081
+ })(CaseFrustrationBand = exports.CaseFrustrationBand || (exports.CaseFrustrationBand = {}));
1082
+ /**
1083
+ * Valid values for Case.SaveContactMethod
1084
+ *
1085
+ * How an OTS/recontract retention save was made — call or email. Set only when RetentionOutcome is SAVED.
1086
+ *
1087
+ * @remarks Available options:
1088
+ * - `CALL` - Call
1089
+ * - `EMAIL` - Email
1090
+ */
1091
+ var CaseSaveContactMethod;
1092
+ (function (CaseSaveContactMethod) {
1093
+ CaseSaveContactMethod["CALL"] = "CALL";
1094
+ CaseSaveContactMethod["EMAIL"] = "EMAIL";
1095
+ })(CaseSaveContactMethod = exports.CaseSaveContactMethod || (exports.CaseSaveContactMethod = {}));
1060
1096
  /**
1061
1097
  * Property keys for Case
1062
1098
  * Use these constants instead of string literals for type safety
@@ -1265,6 +1301,12 @@ var CasePropertyKeys;
1265
1301
  CasePropertyKeys["EnquiryCategory"] = "EnquiryCategory";
1266
1302
  /** Why the customer contacted us, specific. 119-value business taxonomy (Categories.xlsx, 2026-09-11); every label is globally unique, so this value alone determines EnquiryCategory. Each category carries an "- other" catch-all so "nothing specific fits" has a defined answer. Parentage lives in the form action's enumOptionFilter (CASES-1861), not on the column. */
1267
1303
  CasePropertyKeys["EnquirySubCategory"] = "EnquirySubCategory";
1304
+ /** A copy of the Account's FrustrationScore.Score when the Case was created or last refreshed. Written only by the frustration engine; the live value is on the FrustrationScore record. */
1305
+ CasePropertyKeys["FrustrationScore"] = "FrustrationScore";
1306
+ /** A copy of the Account's FrustrationScore stage when the Case was created or last refreshed. Written only by the frustration engine. */
1307
+ CasePropertyKeys["FrustrationBand"] = "FrustrationBand";
1308
+ /** How an OTS/recontract retention save was made — call or email. Set only when RetentionOutcome is SAVED. */
1309
+ CasePropertyKeys["SaveContactMethod"] = "SaveContactMethod";
1268
1310
  })(CasePropertyKeys = exports.CasePropertyKeys || (exports.CasePropertyKeys = {}));
1269
1311
  /**
1270
1312
  * Case entity from SupportModule
@@ -44,6 +44,7 @@ import { AffiliateCodeProperties } from './AffiliateCode';
44
44
  import { OrderProperties } from './Order';
45
45
  import { NpsSurveyProperties } from './NpsSurvey';
46
46
  import { ContractBuyOutProperties } from './ContractBuyOut';
47
+ import { FrustrationScoreProperties } from './FrustrationScore';
47
48
  /**
48
49
  * Available types for Contact records
49
50
  */
@@ -838,6 +839,8 @@ export declare class Contact extends OdinRecord<ContactProperties> {
838
839
  NpsSurvey: OdinLink<LinkedOdinRecord<NpsSurveyProperties>>;
839
840
  /** Linked ContractBuyOut records (Contact__ContractBuyOut) */
840
841
  ContractBuyOut: OdinLink<LinkedOdinRecord<ContractBuyOutProperties>>;
842
+ /** Linked FrustrationScore records (FrustrationScore__Contact) */
843
+ FrustrationScore: OdinLink<LinkedOdinRecord<FrustrationScoreProperties>>;
841
844
  }
842
845
  /**
843
846
  * RabbitMQ routing keys for Contact events
@@ -29,20 +29,26 @@ export declare enum ConversationEntityTypes {
29
29
  *
30
30
  * @remarks Available options:
31
31
  * - `WEB_CHAT` - Chat
32
+ * - `FACEBOOK_COMMENT` - Facebook comment
32
33
  * - `FACEBOOK_MESSENGER` - Facebook Messenger
33
34
  * - `IN_APP_CHAT` - In-App Chat
34
35
  * - `INSTAGRAM_DM` - Instagram DM
35
36
  * - `SMS`
36
37
  * - `TRUSTPILOT_SERVICE_REVIEW` - Trustpilot Service Review
38
+ * - `TWITTER_X_DM` - Twitter/X DM
39
+ * - `TWITTER_X_MENTION` - Twitter/X mention
37
40
  * - `WHATSAPP` - WhatsApp
38
41
  */
39
42
  export declare enum ConversationChannel {
40
43
  CHAT = "WEB_CHAT",
44
+ FACEBOOK_COMMENT = "FACEBOOK_COMMENT",
41
45
  FACEBOOK_MESSENGER = "FACEBOOK_MESSENGER",
42
46
  IN_APP_CHAT = "IN_APP_CHAT",
43
47
  INSTAGRAM_DM = "INSTAGRAM_DM",
44
48
  SMS = "SMS",
45
49
  TRUSTPILOT_SERVICE_REVIEW = "TRUSTPILOT_SERVICE_REVIEW",
50
+ TWITTER_X_DM = "TWITTER_X_DM",
51
+ TWITTER_X_MENTION = "TWITTER_X_MENTION",
46
52
  WHATS_APP = "WHATSAPP"
47
53
  }
48
54
  /**
@@ -29,21 +29,27 @@ var ConversationEntityTypes;
29
29
  *
30
30
  * @remarks Available options:
31
31
  * - `WEB_CHAT` - Chat
32
+ * - `FACEBOOK_COMMENT` - Facebook comment
32
33
  * - `FACEBOOK_MESSENGER` - Facebook Messenger
33
34
  * - `IN_APP_CHAT` - In-App Chat
34
35
  * - `INSTAGRAM_DM` - Instagram DM
35
36
  * - `SMS`
36
37
  * - `TRUSTPILOT_SERVICE_REVIEW` - Trustpilot Service Review
38
+ * - `TWITTER_X_DM` - Twitter/X DM
39
+ * - `TWITTER_X_MENTION` - Twitter/X mention
37
40
  * - `WHATSAPP` - WhatsApp
38
41
  */
39
42
  var ConversationChannel;
40
43
  (function (ConversationChannel) {
41
44
  ConversationChannel["CHAT"] = "WEB_CHAT";
45
+ ConversationChannel["FACEBOOK_COMMENT"] = "FACEBOOK_COMMENT";
42
46
  ConversationChannel["FACEBOOK_MESSENGER"] = "FACEBOOK_MESSENGER";
43
47
  ConversationChannel["IN_APP_CHAT"] = "IN_APP_CHAT";
44
48
  ConversationChannel["INSTAGRAM_DM"] = "INSTAGRAM_DM";
45
49
  ConversationChannel["SMS"] = "SMS";
46
50
  ConversationChannel["TRUSTPILOT_SERVICE_REVIEW"] = "TRUSTPILOT_SERVICE_REVIEW";
51
+ ConversationChannel["TWITTER_X_DM"] = "TWITTER_X_DM";
52
+ ConversationChannel["TWITTER_X_MENTION"] = "TWITTER_X_MENTION";
47
53
  ConversationChannel["WHATS_APP"] = "WHATSAPP";
48
54
  })(ConversationChannel = exports.ConversationChannel || (exports.ConversationChannel = {}));
49
55
  /**
@@ -0,0 +1,222 @@
1
+ /**
2
+ * FrustrationEvent Entity Definition
3
+ *
4
+ * One row per Odin change that scored an Account: event type, when, weight and weight version, plus a pointer at the source record. Append-only; the timeline and audit trail behind a FrustrationScore. No free text, no personal data.
5
+ *
6
+ * @module SupportModule
7
+ * @entity FrustrationEvent
8
+ * @schemaId 1ee547d3-e74a-4b6b-9a11-a087cc2d1ce9
9
+ *
10
+ * AUTO-GENERATED - DO NOT EDIT DIRECTLY
11
+ * Generated from Odin schema definition
12
+ */
13
+ import { OdinRecord, OdinLink, LinkedOdinRecord } from '@d19n/odin-types/dist/core';
14
+ import { AccountProperties } from './Account';
15
+ import { FrustrationScoreProperties } from './FrustrationScore';
16
+ /**
17
+ * Available types for FrustrationEvent records
18
+ */
19
+ export declare enum FrustrationEventEntityTypes {
20
+ /** This is the default record type */
21
+ DEFAULT = "DEFAULT"
22
+ }
23
+ /**
24
+ * Valid values for FrustrationEvent.EventType
25
+ *
26
+ * Which catalogue event this is, E01-E30 (business-processes/frustration-score/04-odin-event-mapping.md).
27
+ *
28
+ * @remarks Available options:
29
+ * - `E01` - E01 Customer opened live chat
30
+ * - `E02` - E02 Second chat within 48h
31
+ * - `E03` - E03 Complaint created
32
+ * - `E04` - E04 Complaint escalated
33
+ * - `E05` - E05 Engineer visit booked
34
+ * - `E06` - E06 Engineer visit cancelled
35
+ * - `E07` - E07 Engineer visit missed
36
+ * - `E08` - E08 Engineer arrived late
37
+ * - `E09` - E09 Engineer revisit required
38
+ * - `E10` - E10 Network outage started
39
+ * - `E11` - E11 Network outage resolved
40
+ * - `E12` - E12 Router offline over 24h
41
+ * - `E13` - E13 ONT offline
42
+ * - `E14` - E14 Payment failed
43
+ * - `E15` - E15 Payment overdue
44
+ * - ... and 15 more
45
+ */
46
+ export declare enum FrustrationEventEventType {
47
+ E01_CUSTOMER_OPENED_LIVE_CHAT = "E01",
48
+ E02_SECOND_CHAT_WITHIN_48H = "E02",
49
+ E03_COMPLAINT_CREATED = "E03",
50
+ E04_COMPLAINT_ESCALATED = "E04",
51
+ E05_ENGINEER_VISIT_BOOKED = "E05",
52
+ E06_ENGINEER_VISIT_CANCELLED = "E06",
53
+ E07_ENGINEER_VISIT_MISSED = "E07",
54
+ E08_ENGINEER_ARRIVED_LATE = "E08",
55
+ E09_ENGINEER_REVISIT_REQUIRED = "E09",
56
+ E10_NETWORK_OUTAGE_STARTED = "E10",
57
+ E11_NETWORK_OUTAGE_RESOLVED = "E11",
58
+ E12_ROUTER_OFFLINE_OVER_24H = "E12",
59
+ E13_ONT_OFFLINE = "E13",
60
+ E14_PAYMENT_FAILED = "E14",
61
+ E15_PAYMENT_OVERDUE = "E15",
62
+ E16_DIRECT_DEBIT_FAILED = "E16",
63
+ E17_SPEED_TEST_BELOW_EXPECTED = "E17",
64
+ E18_PACKAGE_DOWNGRADED = "E18",
65
+ E19_PACKAGE_UPGRADED = "E19",
66
+ E20_NEGATIVE_CSAT_SURVEY = "E20",
67
+ E21_POSITIVE_CSAT_SURVEY = "E21",
68
+ E22_TRUSTPILOT_REVIEW = "E22",
69
+ E23_BILLING_ADJUSTMENT = "E23",
70
+ E24_REFUND_ISSUED = "E24",
71
+ E25_REFERRAL_COMPLETED = "E25",
72
+ E26_COMPLAINT_RESOLVED = "E26",
73
+ E27_SUPPORT_TICKET_CLOSED = "E27",
74
+ E28_CUSTOMER_INACTIVE = "E28",
75
+ E29_CUSTOMER_USING_APP_REGULARLY = "E29",
76
+ E30_NO_ISSUES_FOR_30_DAYS = "E30"
77
+ }
78
+ /**
79
+ * Valid values for FrustrationEvent.Origin
80
+ *
81
+ * SYSTEM when an RMQ consumer mapped an Odin change; MANUAL when a Team Leader recorded it (AddFrustrationEvent).
82
+ *
83
+ * @remarks Available options:
84
+ * - `MANUAL` - Manual
85
+ * - `SYSTEM` - System
86
+ */
87
+ export declare enum FrustrationEventOrigin {
88
+ MANUAL = "MANUAL",
89
+ SYSTEM = "SYSTEM"
90
+ }
91
+ /**
92
+ * Property keys for FrustrationEvent
93
+ * Use these constants instead of string literals for type safety
94
+ */
95
+ export declare enum FrustrationEventPropertyKeys {
96
+ /** Which catalogue event this is, E01-E30 (business-processes/frustration-score/04-odin-event-mapping.md). */
97
+ EventType = "EventType",
98
+ /** When the source change happened, from the source record, not when the event was ingested. Decay is measured from here; older than 60 days contributes nothing. */
99
+ OccurredAt = "OccurredAt",
100
+ /** The points applied when this event was scored, before decay. Negative for positive events. Kept on the row so a later weight change does not rewrite history. */
101
+ Weight = "Weight",
102
+ /** The Config version the Weight came from. */
103
+ WeightVersion = "WeightVersion",
104
+ /** The source record type as Module:Entity, e.g. SupportModule:Case. Text so a new source needs no schema change. */
105
+ SourceEntity = "SourceEntity",
106
+ /** The source record uuid. */
107
+ SourceRecordId = "SourceRecordId",
108
+ /** The source record number an agent can open, e.g. CS123456 or WO98765. */
109
+ SourceRecordNumber = "SourceRecordNumber",
110
+ /** Source record id + the transition or field that changed. UNIQUE, so the same Odin change redelivered by RabbitMQ or replayed by a backfill cannot score twice. */
111
+ IdempotencyKey = "IdempotencyKey",
112
+ /** SYSTEM when an RMQ consumer mapped an Odin change; MANUAL when a Team Leader recorded it (AddFrustrationEvent). */
113
+ Origin = "Origin"
114
+ }
115
+ /**
116
+ * Properties for FrustrationEvent records
117
+ *
118
+ * @see SupportModule:FrustrationEvent
119
+ */
120
+ export interface FrustrationEventProperties {
121
+ /** Which catalogue event this is, E01-E30 (business-processes/frustration-score/04-odin-event-mapping.md).
122
+ *
123
+ * @type {ENUM}
124
+ * @default
125
+ * @enum {FrustrationEventEventType}
126
+ */
127
+ EventType: FrustrationEventEventType;
128
+ /** When the source change happened, from the source record, not when the event was ingested. Decay is measured from here; older than 60 days contributes nothing.
129
+ *
130
+ * @type {DATE_TIME}
131
+ * @default
132
+ */
133
+ OccurredAt: string;
134
+ /** The points applied when this event was scored, before decay. Negative for positive events. Kept on the row so a later weight change does not rewrite history.
135
+ *
136
+ * @type {NUMBER}
137
+ * @default
138
+ */
139
+ Weight: number;
140
+ /** The Config version the Weight came from.
141
+ *
142
+ * @type {TEXT}
143
+ * @default
144
+ */
145
+ WeightVersion: string;
146
+ /** The source record type as Module:Entity, e.g. SupportModule:Case. Text so a new source needs no schema change.
147
+ *
148
+ * @type {TEXT}
149
+ * @default
150
+ */
151
+ SourceEntity: string;
152
+ /** The source record uuid.
153
+ *
154
+ * @type {TEXT}
155
+ * @default
156
+ */
157
+ SourceRecordId: string;
158
+ /** The source record number an agent can open, e.g. CS123456 or WO98765.
159
+ *
160
+ * @type {TEXT}
161
+ * @default
162
+ */
163
+ SourceRecordNumber: string;
164
+ /** Source record id + the transition or field that changed. UNIQUE, so the same Odin change redelivered by RabbitMQ or replayed by a backfill cannot score twice.
165
+ *
166
+ * @type {TEXT}
167
+ * @default
168
+ */
169
+ IdempotencyKey: string;
170
+ /** SYSTEM when an RMQ consumer mapped an Odin change; MANUAL when a Team Leader recorded it (AddFrustrationEvent).
171
+ *
172
+ * @type {ENUM}
173
+ * @default
174
+ * @enum {FrustrationEventOrigin}
175
+ */
176
+ Origin: FrustrationEventOrigin;
177
+ }
178
+ /**
179
+ * FrustrationEvent entity from SupportModule
180
+ *
181
+ * One row per Odin change that scored an Account: event type, when, weight and weight version, plus a pointer at the source record. Append-only; the timeline and audit trail behind a FrustrationScore. No free text, no personal data.
182
+ *
183
+ * @module SupportModule
184
+ * @entity FrustrationEvent
185
+ * @schemaId 1ee547d3-e74a-4b6b-9a11-a087cc2d1ce9
186
+ * @recordPrefix CFE
187
+ * @capabilities searchable, updateable, undeletable, triggerable
188
+ */
189
+ export declare class FrustrationEvent extends OdinRecord<FrustrationEventProperties> {
190
+ entity: 'SupportModule:FrustrationEvent';
191
+ type: FrustrationEventEntityTypes;
192
+ schemaId: '1ee547d3-e74a-4b6b-9a11-a087cc2d1ce9';
193
+ properties: FrustrationEventProperties;
194
+ /** Linked Account records (FrustrationEvent__Account) */
195
+ Account: OdinLink<LinkedOdinRecord<AccountProperties>>;
196
+ /** Linked FrustrationScore records (FrustrationEvent__FrustrationScore) */
197
+ FrustrationScore: OdinLink<LinkedOdinRecord<FrustrationScoreProperties>>;
198
+ }
199
+ /**
200
+ * RabbitMQ routing keys for FrustrationEvent events
201
+ */
202
+ export declare const ROUTING_KEY_FRUSTRATION_EVENT_CREATED = "SupportModule.FrustrationEvent.SubDbRecordCreated";
203
+ export declare const ROUTING_KEY_FRUSTRATION_EVENT_UPDATED = "SupportModule.FrustrationEvent.SubDbRecordUpdated";
204
+ export declare const ROUTING_KEY_FRUSTRATION_EVENT_DELETED = "SupportModule.FrustrationEvent.SubDbRecordDeleted";
205
+ /**
206
+ * Type-specific routing keys for FrustrationEvent events
207
+ * Subscribe to these for events on specific entity types only
208
+ */
209
+ /** This is the default record type created */
210
+ export declare const ROUTING_KEY_FRUSTRATION_EVENT_DEFAULT_CREATED = "SupportModule.FrustrationEvent.DEFAULT.SubDbRecordCreated";
211
+ /** This is the default record type updated */
212
+ export declare const ROUTING_KEY_FRUSTRATION_EVENT_DEFAULT_UPDATED = "SupportModule.FrustrationEvent.DEFAULT.SubDbRecordUpdated";
213
+ /** This is the default record type deleted */
214
+ export declare const ROUTING_KEY_FRUSTRATION_EVENT_DEFAULT_DELETED = "SupportModule.FrustrationEvent.DEFAULT.SubDbRecordDeleted";
215
+ /** Event: FrustrationEvent__Account link created */
216
+ export declare const ROUTING_KEY_LINK_FRUSTRATION_EVENT_ACCOUNT_CREATED = "SupportModule.FrustrationEvent.Account.SubDbRecordAssociationCreated";
217
+ /** Event: FrustrationEvent__Account link deleted */
218
+ export declare const ROUTING_KEY_LINK_FRUSTRATION_EVENT_ACCOUNT_DELETED = "SupportModule.FrustrationEvent.Account.SubDbRecordAssociationDeleted";
219
+ /** Event: FrustrationEvent__FrustrationScore link created */
220
+ export declare const ROUTING_KEY_LINK_FRUSTRATION_EVENT_FRUSTRATION_SCORE_CREATED = "SupportModule.FrustrationEvent.FrustrationScore.SubDbRecordAssociationCreated";
221
+ /** Event: FrustrationEvent__FrustrationScore link deleted */
222
+ export declare const ROUTING_KEY_LINK_FRUSTRATION_EVENT_FRUSTRATION_SCORE_DELETED = "SupportModule.FrustrationEvent.FrustrationScore.SubDbRecordAssociationDeleted";