@d19n/youfibre-odin-sdk 2.0.13-beta.1 → 2.0.13

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 (239) hide show
  1. package/README.md +11 -10
  2. package/dist/actions-v2/CreateOrderFromBrskDto.d.ts +75 -0
  3. package/dist/actions-v2/CreateOrderItemFromBrskDto.d.ts +191 -0
  4. package/dist/actions-v2/CreateOrderItemFromBrskDto.js +52 -0
  5. package/dist/entities-v2/Order.d.ts +7 -0
  6. package/dist/entities-v2/Order.js +2 -0
  7. package/dist/entities-v2/OrderItem.d.ts +7 -0
  8. package/dist/entities-v2/OrderItem.js +2 -0
  9. package/dist/entities-v2/Product.d.ts +0 -42
  10. package/dist/entities-v2/Product.js +0 -2
  11. package/dist/records-v2/AccountCreditRecord.d.ts +62 -1
  12. package/dist/records-v2/AccountCreditRecord.js +91 -0
  13. package/dist/records-v2/AccountRecord.d.ts +306 -2
  14. package/dist/records-v2/AccountRecord.js +451 -0
  15. package/dist/records-v2/ActivityLogRecord.d.ts +122 -1
  16. package/dist/records-v2/ActivityLogRecord.js +190 -0
  17. package/dist/records-v2/ActivityRecord.d.ts +255 -2
  18. package/dist/records-v2/ActivityRecord.js +387 -0
  19. package/dist/records-v2/AddressRecord.d.ts +321 -0
  20. package/dist/records-v2/AddressRecord.js +532 -0
  21. package/dist/records-v2/AffiliateCodeRecord.d.ts +102 -1
  22. package/dist/records-v2/AffiliateCodeRecord.js +157 -0
  23. package/dist/records-v2/AppointmentRecord.d.ts +141 -0
  24. package/dist/records-v2/AppointmentRecord.js +235 -0
  25. package/dist/records-v2/BillingAdjustmentRecord.d.ts +81 -0
  26. package/dist/records-v2/BillingAdjustmentRecord.js +136 -0
  27. package/dist/records-v2/BillingRequestRecord.d.ts +178 -2
  28. package/dist/records-v2/BillingRequestRecord.js +271 -0
  29. package/dist/records-v2/BlockageA55Record.d.ts +103 -2
  30. package/dist/records-v2/BlockageA55Record.js +157 -0
  31. package/dist/records-v2/BrskEntityMigrationErrorRecord.d.ts +21 -1
  32. package/dist/records-v2/BrskEntityMigrationErrorRecord.js +21 -0
  33. package/dist/records-v2/CallEventRecord.d.ts +82 -1
  34. package/dist/records-v2/CallEventRecord.js +124 -0
  35. package/dist/records-v2/CallLegRecord.d.ts +82 -1
  36. package/dist/records-v2/CallLegRecord.js +124 -0
  37. package/dist/records-v2/CallRecord.d.ts +202 -1
  38. package/dist/records-v2/CallRecord.js +322 -0
  39. package/dist/records-v2/CallTransferRecord.d.ts +102 -1
  40. package/dist/records-v2/CallTransferRecord.js +157 -0
  41. package/dist/records-v2/CampaignRecord.d.ts +83 -2
  42. package/dist/records-v2/CampaignRecord.js +124 -0
  43. package/dist/records-v2/CaseRecord.d.ts +418 -2
  44. package/dist/records-v2/CaseRecord.js +667 -0
  45. package/dist/records-v2/ChangeReasonRecord.d.ts +171 -2
  46. package/dist/records-v2/ChangeReasonRecord.js +238 -0
  47. package/dist/records-v2/ChurnRequestRecord.d.ts +62 -1
  48. package/dist/records-v2/ChurnRequestRecord.js +91 -0
  49. package/dist/records-v2/ContactRecord.d.ts +560 -0
  50. package/dist/records-v2/ContactRecord.js +927 -0
  51. package/dist/records-v2/ContractBuyOutRecord.d.ts +162 -1
  52. package/dist/records-v2/ContractBuyOutRecord.js +256 -0
  53. package/dist/records-v2/ConversationFeedbackRecord.d.ts +102 -1
  54. package/dist/records-v2/ConversationFeedbackRecord.js +157 -0
  55. package/dist/records-v2/ConversationRecord.d.ts +102 -1
  56. package/dist/records-v2/ConversationRecord.js +157 -0
  57. package/dist/records-v2/CreditNoteRecord.d.ts +81 -0
  58. package/dist/records-v2/CreditNoteRecord.js +136 -0
  59. package/dist/records-v2/CrmDatasetRecord.d.ts +191 -2
  60. package/dist/records-v2/CrmDatasetRecord.js +271 -0
  61. package/dist/records-v2/CustomerDeviceAtaRecord.d.ts +21 -0
  62. package/dist/records-v2/CustomerDeviceAtaRecord.js +37 -0
  63. package/dist/records-v2/CustomerDeviceConfigurationRecord.d.ts +62 -1
  64. package/dist/records-v2/CustomerDeviceConfigurationRecord.js +91 -0
  65. package/dist/records-v2/CustomerDeviceOntRecord.d.ts +181 -0
  66. package/dist/records-v2/CustomerDeviceOntRecord.js +301 -0
  67. package/dist/records-v2/CustomerDeviceRouterRecord.d.ts +141 -0
  68. package/dist/records-v2/CustomerDeviceRouterRecord.js +235 -0
  69. package/dist/records-v2/CustomerPhonePortingRecord.d.ts +21 -0
  70. package/dist/records-v2/CustomerPhonePortingRecord.js +37 -0
  71. package/dist/records-v2/DiscountRecord.d.ts +121 -0
  72. package/dist/records-v2/DiscountRecord.js +202 -0
  73. package/dist/records-v2/EmailRecord.d.ts +230 -2
  74. package/dist/records-v2/EmailRecord.js +336 -0
  75. package/dist/records-v2/EmailSenderRecord.d.ts +42 -1
  76. package/dist/records-v2/EmailSenderRecord.js +58 -0
  77. package/dist/records-v2/EmailTemplateRecord.d.ts +21 -1
  78. package/dist/records-v2/EmailTemplateRecord.js +21 -0
  79. package/dist/records-v2/FieldServiceDispatchedProductRecord.d.ts +135 -2
  80. package/dist/records-v2/FieldServiceDispatchedProductRecord.js +189 -0
  81. package/dist/records-v2/FieldServiceProductRecord.d.ts +115 -2
  82. package/dist/records-v2/FieldServiceProductRecord.js +156 -0
  83. package/dist/records-v2/FileRecord.d.ts +1211 -2
  84. package/dist/records-v2/FileRecord.js +1902 -0
  85. package/dist/records-v2/ImpersonationTrackerRecord.d.ts +62 -1
  86. package/dist/records-v2/ImpersonationTrackerRecord.js +91 -0
  87. package/dist/records-v2/InternalInstallAuditRecord.d.ts +83 -2
  88. package/dist/records-v2/InternalInstallAuditRecord.js +124 -0
  89. package/dist/records-v2/InvoiceItemRecord.d.ts +40 -0
  90. package/dist/records-v2/InvoiceItemRecord.js +69 -0
  91. package/dist/records-v2/InvoiceRecord.d.ts +399 -2
  92. package/dist/records-v2/InvoiceRecord.js +635 -0
  93. package/dist/records-v2/KnowledgeArticleRecord.d.ts +98 -2
  94. package/dist/records-v2/KnowledgeArticleRecord.js +139 -0
  95. package/dist/records-v2/LeadRecord.d.ts +261 -0
  96. package/dist/records-v2/LeadRecord.js +433 -0
  97. package/dist/records-v2/MessageRecord.d.ts +99 -2
  98. package/dist/records-v2/MessageRecord.js +140 -0
  99. package/dist/records-v2/NetworkDeviceRecord.d.ts +43 -2
  100. package/dist/records-v2/NetworkDeviceRecord.js +58 -0
  101. package/dist/records-v2/NoteRecord.d.ts +1121 -1
  102. package/dist/records-v2/NoteRecord.js +1839 -0
  103. package/dist/records-v2/OfferRecord.d.ts +154 -2
  104. package/dist/records-v2/OfferRecord.js +221 -0
  105. package/dist/records-v2/OhAuditOfInstallationRecord.d.ts +83 -2
  106. package/dist/records-v2/OhAuditOfInstallationRecord.js +124 -0
  107. package/dist/records-v2/OhExternalAuditRecord.d.ts +83 -2
  108. package/dist/records-v2/OhExternalAuditRecord.js +124 -0
  109. package/dist/records-v2/OhInProgressAuditRecord.d.ts +83 -2
  110. package/dist/records-v2/OhInProgressAuditRecord.js +124 -0
  111. package/dist/records-v2/OhInstallationAuditRecord.d.ts +83 -2
  112. package/dist/records-v2/OhInstallationAuditRecord.js +124 -0
  113. package/dist/records-v2/OhRetroAuditRecord.d.ts +83 -2
  114. package/dist/records-v2/OhRetroAuditRecord.js +124 -0
  115. package/dist/records-v2/OneTouchSwitchRecord.d.ts +255 -2
  116. package/dist/records-v2/OneTouchSwitchRecord.js +387 -0
  117. package/dist/records-v2/OntReplacementApprovalRecord.d.ts +62 -1
  118. package/dist/records-v2/OntReplacementApprovalRecord.js +91 -0
  119. package/dist/records-v2/OrderCheckRecord.d.ts +21 -0
  120. package/dist/records-v2/OrderCheckRecord.js +37 -0
  121. package/dist/records-v2/OrderItemRecord.d.ts +309 -0
  122. package/dist/records-v2/OrderItemRecord.js +501 -0
  123. package/dist/records-v2/OrderKciRecord.d.ts +42 -1
  124. package/dist/records-v2/OrderKciRecord.js +58 -0
  125. package/dist/records-v2/OrderRecord.d.ts +620 -0
  126. package/dist/records-v2/OrderRecord.js +1026 -0
  127. package/dist/records-v2/OutageRecord.d.ts +42 -1
  128. package/dist/records-v2/OutageRecord.js +58 -0
  129. package/dist/records-v2/OverlayRealA55Record.d.ts +83 -2
  130. package/dist/records-v2/OverlayRealA55Record.js +124 -0
  131. package/dist/records-v2/PICRequestRecord.d.ts +62 -1
  132. package/dist/records-v2/PICRequestRecord.js +91 -0
  133. package/dist/records-v2/PaymentMethodRecord.d.ts +121 -0
  134. package/dist/records-v2/PaymentMethodRecord.js +202 -0
  135. package/dist/records-v2/PaymentMethodRefundRecord.d.ts +181 -0
  136. package/dist/records-v2/PaymentMethodRefundRecord.js +301 -0
  137. package/dist/records-v2/PaymentRecord.d.ts +82 -1
  138. package/dist/records-v2/PaymentRecord.js +124 -0
  139. package/dist/records-v2/PermissionToFailRecord.d.ts +61 -0
  140. package/dist/records-v2/PermissionToFailRecord.js +103 -0
  141. package/dist/records-v2/PgAccountValidationRecord.d.ts +21 -1
  142. package/dist/records-v2/PgAccountValidationRecord.js +21 -0
  143. package/dist/records-v2/PgContactRecord.d.ts +62 -1
  144. package/dist/records-v2/PgContactRecord.js +91 -0
  145. package/dist/records-v2/PgDirectDebitFileRecord.d.ts +95 -2
  146. package/dist/records-v2/PgDirectDebitFileRecord.js +123 -0
  147. package/dist/records-v2/PgDisputeRecord.d.ts +62 -1
  148. package/dist/records-v2/PgDisputeRecord.js +91 -0
  149. package/dist/records-v2/PgFileAllocationRecord.d.ts +115 -2
  150. package/dist/records-v2/PgFileAllocationRecord.js +156 -0
  151. package/dist/records-v2/PgLogRecord.d.ts +21 -1
  152. package/dist/records-v2/PgLogRecord.js +21 -0
  153. package/dist/records-v2/PgPaymentMethodRecord.d.ts +102 -1
  154. package/dist/records-v2/PgPaymentMethodRecord.js +157 -0
  155. package/dist/records-v2/PgSortCodeSubstitutionRecord.d.ts +21 -1
  156. package/dist/records-v2/PgSortCodeSubstitutionRecord.js +21 -0
  157. package/dist/records-v2/PgTransactionRecord.d.ts +135 -2
  158. package/dist/records-v2/PgTransactionRecord.js +189 -0
  159. package/dist/records-v2/PgVocalinkRecord.d.ts +21 -1
  160. package/dist/records-v2/PgVocalinkRecord.js +21 -0
  161. package/dist/records-v2/PgWebhookAttemptRecord.d.ts +42 -1
  162. package/dist/records-v2/PgWebhookAttemptRecord.js +58 -0
  163. package/dist/records-v2/PgWebhookRecord.d.ts +122 -1
  164. package/dist/records-v2/PgWebhookRecord.js +190 -0
  165. package/dist/records-v2/PhoneNumberRecord.d.ts +41 -0
  166. package/dist/records-v2/PhoneNumberRecord.js +70 -0
  167. package/dist/records-v2/PriceBookRecord.d.ts +21 -0
  168. package/dist/records-v2/PriceBookRecord.js +37 -0
  169. package/dist/records-v2/ProductRecord.d.ts +258 -2
  170. package/dist/records-v2/ProductRecord.js +351 -0
  171. package/dist/records-v2/PushNotificationRecord.d.ts +162 -1
  172. package/dist/records-v2/PushNotificationRecord.js +256 -0
  173. package/dist/records-v2/ReferralRecord.d.ts +143 -2
  174. package/dist/records-v2/ReferralRecord.js +223 -0
  175. package/dist/records-v2/RemediationOutcomeFormRecord.d.ts +83 -2
  176. package/dist/records-v2/RemediationOutcomeFormRecord.js +124 -0
  177. package/dist/records-v2/RemediationRequiredReasonRecord.d.ts +103 -2
  178. package/dist/records-v2/RemediationRequiredReasonRecord.js +157 -0
  179. package/dist/records-v2/ReturnsRecord.d.ts +62 -1
  180. package/dist/records-v2/ReturnsRecord.js +91 -0
  181. package/dist/records-v2/RewardRecord.d.ts +123 -2
  182. package/dist/records-v2/RewardRecord.js +190 -0
  183. package/dist/records-v2/SalesTerritoryRecord.d.ts +79 -2
  184. package/dist/records-v2/SalesTerritoryRecord.js +107 -0
  185. package/dist/records-v2/ScheduleSlotRecord.d.ts +42 -1
  186. package/dist/records-v2/ScheduleSlotRecord.js +58 -0
  187. package/dist/records-v2/ServiceAppointmentConfigRecord.d.ts +287 -2
  188. package/dist/records-v2/ServiceAppointmentConfigRecord.js +367 -0
  189. package/dist/records-v2/ServiceAppointmentRecord.d.ts +81 -0
  190. package/dist/records-v2/ServiceAppointmentRecord.js +136 -0
  191. package/dist/records-v2/ServiceRecord.d.ts +40 -0
  192. package/dist/records-v2/ServiceRecord.js +69 -0
  193. package/dist/records-v2/ServiceVisitAuditRecord.d.ts +83 -2
  194. package/dist/records-v2/ServiceVisitAuditRecord.js +124 -0
  195. package/dist/records-v2/SiteSpecificRiskAssessmentOutcomeFormRecord.d.ts +83 -2
  196. package/dist/records-v2/SiteSpecificRiskAssessmentOutcomeFormRecord.js +124 -0
  197. package/dist/records-v2/SmsMessageRecord.d.ts +175 -2
  198. package/dist/records-v2/SmsMessageRecord.js +255 -0
  199. package/dist/records-v2/SweeperMaintenanceAuditRecord.d.ts +83 -2
  200. package/dist/records-v2/SweeperMaintenanceAuditRecord.js +124 -0
  201. package/dist/records-v2/TeamRecord.d.ts +101 -0
  202. package/dist/records-v2/TeamRecord.js +169 -0
  203. package/dist/records-v2/TestEntityForVisualBuilderRecord.d.ts +115 -2
  204. package/dist/records-v2/TestEntityForVisualBuilderRecord.js +156 -0
  205. package/dist/records-v2/TimeSlotRecord.d.ts +21 -0
  206. package/dist/records-v2/TimeSlotRecord.js +37 -0
  207. package/dist/records-v2/TransactionRecord.d.ts +181 -1
  208. package/dist/records-v2/TransactionRecord.js +288 -0
  209. package/dist/records-v2/TwilioUserUpdateRecord.d.ts +42 -1
  210. package/dist/records-v2/TwilioUserUpdateRecord.js +58 -0
  211. package/dist/records-v2/UgAuditOfInstallationRecord.d.ts +83 -2
  212. package/dist/records-v2/UgAuditOfInstallationRecord.js +124 -0
  213. package/dist/records-v2/UgExternalAuditRecord.d.ts +83 -2
  214. package/dist/records-v2/UgExternalAuditRecord.js +124 -0
  215. package/dist/records-v2/UgInProgressAuditRecord.d.ts +83 -2
  216. package/dist/records-v2/UgInProgressAuditRecord.js +124 -0
  217. package/dist/records-v2/UgInstallationAuditRecord.d.ts +83 -2
  218. package/dist/records-v2/UgInstallationAuditRecord.js +124 -0
  219. package/dist/records-v2/UgRetroAuditRecord.d.ts +83 -2
  220. package/dist/records-v2/UgRetroAuditRecord.js +124 -0
  221. package/dist/records-v2/UserRecord.d.ts +400 -0
  222. package/dist/records-v2/UserRecord.js +663 -0
  223. package/dist/records-v2/VisitRecord.d.ts +121 -0
  224. package/dist/records-v2/VisitRecord.js +202 -0
  225. package/dist/records-v2/VoiceConfigurationRecord.d.ts +21 -0
  226. package/dist/records-v2/VoiceConfigurationRecord.js +37 -0
  227. package/dist/records-v2/WayleaveAuditRecord.d.ts +83 -2
  228. package/dist/records-v2/WayleaveAuditRecord.js +124 -0
  229. package/dist/records-v2/WorkOrderRecord.d.ts +1226 -2
  230. package/dist/records-v2/WorkOrderRecord.js +1865 -0
  231. package/dist/records-v2/WorkOrderStatusUpdateRecord.d.ts +75 -2
  232. package/dist/records-v2/WorkOrderStatusUpdateRecord.js +90 -0
  233. package/dist/records-v2/YfFieldServiceVisitRecord.d.ts +83 -2
  234. package/dist/records-v2/YfFieldServiceVisitRecord.js +124 -0
  235. package/dist/records-v2/YfStockAuditRecord.d.ts +103 -2
  236. package/dist/records-v2/YfStockAuditRecord.js +157 -0
  237. package/dist/records-v2/index.d.ts +1 -1
  238. package/dist/records-v2/index.js +5 -5
  239. package/package.json +1 -1
@@ -13,13 +13,19 @@
13
13
  * await record.createOutage({ ... }).execute();
14
14
  * ```
15
15
  *
16
+ * Entity Types: DEFAULT
17
+ *
16
18
  * AUTO-GENERATED - DO NOT EDIT DIRECTLY
17
19
  */
18
20
  import { OdinRecord, OdinRecordLinkDto } from '@d19n/odin-types/dist/core';
19
21
  import { PipelineStageEntity } from '@d19n/odin-types/dist/core';
20
22
  import { IDbRecordCreateUpdateRes } from '@d19n/odin-types/dist/core/interfaces/v1.db.interfaces';
21
23
  import { IOdinProvider } from '@d19n/odin-sdk-generator/dist/odin-sdk-types';
24
+ import { RecordLinkManager } from '@d19n/odin-sdk-generator/dist/record-link-manager';
22
25
  import { OutageProperties } from '../entities-v2/Outage';
26
+ import { CaseRecord } from './CaseRecord';
27
+ /** Valid entity types for Outage */
28
+ export declare type OutageType = 'DEFAULT';
23
29
  /**
24
30
  * Builder for action execution with dryRun support
25
31
  *
@@ -83,6 +89,7 @@ export declare class OutageRecord<TProps = OutageProperties> {
83
89
  private _provider;
84
90
  private _pendingLinks;
85
91
  private _preGeneratedId;
92
+ private _cases?;
86
93
  /**
87
94
  * Create a record wrapper.
88
95
  * @param record - The underlying record, or null for create operations
@@ -95,7 +102,7 @@ export declare class OutageRecord<TProps = OutageProperties> {
95
102
  /** Record ID - always available (pre-generated for new records) */
96
103
  get id(): string;
97
104
  get entity(): string;
98
- get type(): string | undefined;
105
+ get type(): OutageType | undefined;
99
106
  /** Record properties - empty object for new (unsaved) records */
100
107
  get properties(): TProps;
101
108
  get title(): string | undefined;
@@ -108,6 +115,40 @@ export declare class OutageRecord<TProps = OutageProperties> {
108
115
  get groups(): string[];
109
116
  /** Access the underlying OdinRecord (null for new records) */
110
117
  get record(): OdinRecord<TProps> | null;
118
+ /**
119
+ * Type guard: check if this record is of type DEFAULT
120
+ *
121
+ * When this returns true, TypeScript automatically narrows the type,
122
+ * giving you access to DEFAULT-specific properties.
123
+ *
124
+ * @example
125
+ * ```typescript
126
+ * if (record.isDefault()) {
127
+ * // TypeScript knows record.properties is OutageProperties
128
+ * console.log(record.properties.SomeTypeSpecificField);
129
+ * }
130
+ * ```
131
+ * @remarks This is the default record type
132
+ */
133
+ isDefault(): this is OutageRecord<OutageProperties>;
134
+ /** Valid labels for Case associations */
135
+ static readonly casesLabels: readonly ["Outage__Case", "Outage"];
136
+ /**
137
+ * Access linked Case records
138
+ * @remarks Available labels: Outage__Case, Outage
139
+ * @throws Error if called on a new (unsaved) record
140
+ *
141
+ * @example
142
+ * ```typescript
143
+ * // Get all linked Case records
144
+ * const items = await record.cases.list();
145
+ * const first = await record.cases.first();
146
+ *
147
+ * // Filter by label
148
+ * const specific = await record.cases.first({ label: 'Outage__Case' });
149
+ * ```
150
+ */
151
+ get cases(): RecordLinkManager<CaseRecord, typeof OutageRecord['casesLabels'][number]>;
111
152
  /**
112
153
  * Queue a link to be created with the next action.
113
154
  * Works for both create and update actions.
@@ -14,6 +14,8 @@
14
14
  * await record.createOutage({ ... }).execute();
15
15
  * ```
16
16
  *
17
+ * Entity Types: DEFAULT
18
+ *
17
19
  * AUTO-GENERATED - DO NOT EDIT DIRECTLY
18
20
  */
19
21
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -29,6 +31,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
29
31
  exports.isOutageRecord = exports.OutageRecord = void 0;
30
32
  const uuid_1 = require("uuid");
31
33
  const core_1 = require("@d19n/odin-types/dist/core");
34
+ const record_link_manager_1 = require("@d19n/odin-sdk-generator/dist/record-link-manager");
35
+ const CaseRecord_1 = require("./CaseRecord");
32
36
  /**
33
37
  * Builder for action execution with dryRun support
34
38
  *
@@ -140,6 +144,55 @@ class OutageRecord {
140
144
  /** Access the underlying OdinRecord (null for new records) */
141
145
  get record() { return this._record; }
142
146
  // ============================================
147
+ // TYPE GUARDS (with TypeScript type predicates)
148
+ // ============================================
149
+ /**
150
+ * Type guard: check if this record is of type DEFAULT
151
+ *
152
+ * When this returns true, TypeScript automatically narrows the type,
153
+ * giving you access to DEFAULT-specific properties.
154
+ *
155
+ * @example
156
+ * ```typescript
157
+ * if (record.isDefault()) {
158
+ * // TypeScript knows record.properties is OutageProperties
159
+ * console.log(record.properties.SomeTypeSpecificField);
160
+ * }
161
+ * ```
162
+ * @remarks This is the default record type
163
+ */
164
+ isDefault() { var _a; return ((_a = this._record) === null || _a === void 0 ? void 0 : _a.type) === 'DEFAULT'; }
165
+ /**
166
+ * Access linked Case records
167
+ * @remarks Available labels: Outage__Case, Outage
168
+ * @throws Error if called on a new (unsaved) record
169
+ *
170
+ * @example
171
+ * ```typescript
172
+ * // Get all linked Case records
173
+ * const items = await record.cases.list();
174
+ * const first = await record.cases.first();
175
+ *
176
+ * // Filter by label
177
+ * const specific = await record.cases.first({ label: 'Outage__Case' });
178
+ * ```
179
+ */
180
+ get cases() {
181
+ var _a;
182
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
183
+ throw new Error('Cannot access links on a new (unsaved) record');
184
+ if (!this._cases) {
185
+ this._cases = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
186
+ sourceEntity: 'ServiceModule:Outage',
187
+ targetEntity: 'SupportModule:Case',
188
+ targetModuleName: 'SupportModule',
189
+ targetEntityName: 'Case',
190
+ labels: ['Outage__Case', 'Outage'],
191
+ }, CaseRecord_1.CaseRecord);
192
+ }
193
+ return this._cases;
194
+ }
195
+ // ============================================
143
196
  // LINK MANAGEMENT
144
197
  // ============================================
145
198
  /**
@@ -208,6 +261,11 @@ class OutageRecord {
208
261
  }
209
262
  }
210
263
  exports.OutageRecord = OutageRecord;
264
+ // ============================================
265
+ // TYPED LINK ACCESSORS
266
+ // ============================================
267
+ /** Valid labels for Case associations */
268
+ OutageRecord.casesLabels = ['Outage__Case', 'Outage'];
211
269
  /** Type guard to check if an object is a OutageRecord */
212
270
  function isOutageRecord(obj) {
213
271
  return obj instanceof OutageRecord;
@@ -13,14 +13,22 @@
13
13
  * await record.createOverlayRealA55({ ... }).execute();
14
14
  * ```
15
15
  *
16
+ * Entity Types: OUTCOME_FORM
17
+ *
16
18
  * AUTO-GENERATED - DO NOT EDIT DIRECTLY
17
19
  */
18
20
  import { OdinRecord, OdinRecordLinkDto } from '@d19n/odin-types/dist/core';
19
21
  import { PipelineStageEntity } from '@d19n/odin-types/dist/core';
20
22
  import { IDbRecordCreateUpdateRes } from '@d19n/odin-types/dist/core/interfaces/v1.db.interfaces';
21
23
  import { IOdinProvider } from '@d19n/odin-sdk-generator/dist/odin-sdk-types';
22
- import { OverlayRealA55Properties } from '../entities-v2/OverlayRealA55';
24
+ import { RecordLinkManager } from '@d19n/odin-sdk-generator/dist/record-link-manager';
25
+ import { OverlayRealA55Properties, OutcomeFormOverlayRealA55Properties } from '../entities-v2/OverlayRealA55';
23
26
  import { OverlayA55UpdateProperties } from '../actions-v2/OverlayA55UpdateDto';
27
+ import { NoteRecord } from './NoteRecord';
28
+ import { WorkOrderRecord } from './WorkOrderRecord';
29
+ import { FileRecord } from './FileRecord';
30
+ /** Valid entity types for OverlayRealA55 */
31
+ export declare type OverlayRealA55Type = 'OUTCOME_FORM';
24
32
  /**
25
33
  * Builder for action execution with dryRun support
26
34
  *
@@ -84,6 +92,9 @@ export declare class OverlayRealA55Record<TProps = OverlayRealA55Properties> {
84
92
  private _provider;
85
93
  private _pendingLinks;
86
94
  private _preGeneratedId;
95
+ private _notes?;
96
+ private _workOrders?;
97
+ private _files?;
87
98
  /**
88
99
  * Create a record wrapper.
89
100
  * @param record - The underlying record, or null for create operations
@@ -96,7 +107,7 @@ export declare class OverlayRealA55Record<TProps = OverlayRealA55Properties> {
96
107
  /** Record ID - always available (pre-generated for new records) */
97
108
  get id(): string;
98
109
  get entity(): string;
99
- get type(): string | undefined;
110
+ get type(): OverlayRealA55Type | undefined;
100
111
  /** Record properties - empty object for new (unsaved) records */
101
112
  get properties(): TProps;
102
113
  get title(): string | undefined;
@@ -109,6 +120,76 @@ export declare class OverlayRealA55Record<TProps = OverlayRealA55Properties> {
109
120
  get groups(): string[];
110
121
  /** Access the underlying OdinRecord (null for new records) */
111
122
  get record(): OdinRecord<TProps> | null;
123
+ /**
124
+ * Type guard: check if this record is of type OUTCOME_FORM
125
+ *
126
+ * When this returns true, TypeScript automatically narrows the type,
127
+ * giving you access to OUTCOME_FORM-specific properties.
128
+ *
129
+ * @example
130
+ * ```typescript
131
+ * if (record.isOutcomeForm()) {
132
+ * // TypeScript knows record.properties is OutcomeFormOverlayRealA55Properties
133
+ * console.log(record.properties.SomeTypeSpecificField);
134
+ * }
135
+ * ```
136
+ * @remarks outcome form
137
+ */
138
+ isOutcomeForm(): this is OverlayRealA55Record<OutcomeFormOverlayRealA55Properties>;
139
+ /** Valid labels for Note associations */
140
+ static readonly notesLabels: readonly ["OverlayRealA55_Note"];
141
+ /**
142
+ * Access linked Note records
143
+ * @remarks Available labels: OverlayRealA55_Note
144
+ * @throws Error if called on a new (unsaved) record
145
+ *
146
+ * @example
147
+ * ```typescript
148
+ * // Get all linked Note records
149
+ * const items = await record.notes.list();
150
+ * const first = await record.notes.first();
151
+ *
152
+ * // Filter by label
153
+ * const specific = await record.notes.first({ label: 'OverlayRealA55_Note' });
154
+ * ```
155
+ */
156
+ get notes(): RecordLinkManager<NoteRecord, typeof OverlayRealA55Record['notesLabels'][number]>;
157
+ /** Valid labels for WorkOrder associations */
158
+ static readonly workOrdersLabels: readonly ["WorkOrder_OverlayRealA55"];
159
+ /**
160
+ * Access linked WorkOrder records
161
+ * @remarks Available labels: WorkOrder_OverlayRealA55
162
+ * @throws Error if called on a new (unsaved) record
163
+ *
164
+ * @example
165
+ * ```typescript
166
+ * // Get all linked WorkOrder records
167
+ * const items = await record.workOrders.list();
168
+ * const first = await record.workOrders.first();
169
+ *
170
+ * // Filter by label
171
+ * const specific = await record.workOrders.first({ label: 'WorkOrder_OverlayRealA55' });
172
+ * ```
173
+ */
174
+ get workOrders(): RecordLinkManager<WorkOrderRecord, typeof OverlayRealA55Record['workOrdersLabels'][number]>;
175
+ /** Valid labels for File associations */
176
+ static readonly filesLabels: readonly ["OverlayRealA55_File"];
177
+ /**
178
+ * Access linked File records
179
+ * @remarks Available labels: OverlayRealA55_File
180
+ * @throws Error if called on a new (unsaved) record
181
+ *
182
+ * @example
183
+ * ```typescript
184
+ * // Get all linked File records
185
+ * const items = await record.files.list();
186
+ * const first = await record.files.first();
187
+ *
188
+ * // Filter by label
189
+ * const specific = await record.files.first({ label: 'OverlayRealA55_File' });
190
+ * ```
191
+ */
192
+ get files(): RecordLinkManager<FileRecord, typeof OverlayRealA55Record['filesLabels'][number]>;
112
193
  /**
113
194
  * Queue a link to be created with the next action.
114
195
  * Works for both create and update actions.
@@ -14,6 +14,8 @@
14
14
  * await record.createOverlayRealA55({ ... }).execute();
15
15
  * ```
16
16
  *
17
+ * Entity Types: OUTCOME_FORM
18
+ *
17
19
  * AUTO-GENERATED - DO NOT EDIT DIRECTLY
18
20
  */
19
21
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -29,6 +31,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
29
31
  exports.isOverlayRealA55Record = exports.OverlayRealA55Record = void 0;
30
32
  const uuid_1 = require("uuid");
31
33
  const core_1 = require("@d19n/odin-types/dist/core");
34
+ const record_link_manager_1 = require("@d19n/odin-sdk-generator/dist/record-link-manager");
35
+ const NoteRecord_1 = require("./NoteRecord");
36
+ const WorkOrderRecord_1 = require("./WorkOrderRecord");
37
+ const FileRecord_1 = require("./FileRecord");
32
38
  /**
33
39
  * Builder for action execution with dryRun support
34
40
  *
@@ -140,6 +146,115 @@ class OverlayRealA55Record {
140
146
  /** Access the underlying OdinRecord (null for new records) */
141
147
  get record() { return this._record; }
142
148
  // ============================================
149
+ // TYPE GUARDS (with TypeScript type predicates)
150
+ // ============================================
151
+ /**
152
+ * Type guard: check if this record is of type OUTCOME_FORM
153
+ *
154
+ * When this returns true, TypeScript automatically narrows the type,
155
+ * giving you access to OUTCOME_FORM-specific properties.
156
+ *
157
+ * @example
158
+ * ```typescript
159
+ * if (record.isOutcomeForm()) {
160
+ * // TypeScript knows record.properties is OutcomeFormOverlayRealA55Properties
161
+ * console.log(record.properties.SomeTypeSpecificField);
162
+ * }
163
+ * ```
164
+ * @remarks outcome form
165
+ */
166
+ isOutcomeForm() { var _a; return ((_a = this._record) === null || _a === void 0 ? void 0 : _a.type) === 'OUTCOME_FORM'; }
167
+ /**
168
+ * Access linked Note records
169
+ * @remarks Available labels: OverlayRealA55_Note
170
+ * @throws Error if called on a new (unsaved) record
171
+ *
172
+ * @example
173
+ * ```typescript
174
+ * // Get all linked Note records
175
+ * const items = await record.notes.list();
176
+ * const first = await record.notes.first();
177
+ *
178
+ * // Filter by label
179
+ * const specific = await record.notes.first({ label: 'OverlayRealA55_Note' });
180
+ * ```
181
+ */
182
+ get notes() {
183
+ var _a;
184
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
185
+ throw new Error('Cannot access links on a new (unsaved) record');
186
+ if (!this._notes) {
187
+ this._notes = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
188
+ sourceEntity: 'FieldServiceModule:OverlayRealA55',
189
+ targetEntity: 'SupportModule:Note',
190
+ targetModuleName: 'SupportModule',
191
+ targetEntityName: 'Note',
192
+ labels: ['OverlayRealA55_Note'],
193
+ }, NoteRecord_1.NoteRecord);
194
+ }
195
+ return this._notes;
196
+ }
197
+ /**
198
+ * Access linked WorkOrder records
199
+ * @remarks Available labels: WorkOrder_OverlayRealA55
200
+ * @throws Error if called on a new (unsaved) record
201
+ *
202
+ * @example
203
+ * ```typescript
204
+ * // Get all linked WorkOrder records
205
+ * const items = await record.workOrders.list();
206
+ * const first = await record.workOrders.first();
207
+ *
208
+ * // Filter by label
209
+ * const specific = await record.workOrders.first({ label: 'WorkOrder_OverlayRealA55' });
210
+ * ```
211
+ */
212
+ get workOrders() {
213
+ var _a;
214
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
215
+ throw new Error('Cannot access links on a new (unsaved) record');
216
+ if (!this._workOrders) {
217
+ this._workOrders = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
218
+ sourceEntity: 'FieldServiceModule:OverlayRealA55',
219
+ targetEntity: 'FieldServiceModule:WorkOrder',
220
+ targetModuleName: 'FieldServiceModule',
221
+ targetEntityName: 'WorkOrder',
222
+ labels: ['WorkOrder_OverlayRealA55'],
223
+ }, WorkOrderRecord_1.WorkOrderRecord);
224
+ }
225
+ return this._workOrders;
226
+ }
227
+ /**
228
+ * Access linked File records
229
+ * @remarks Available labels: OverlayRealA55_File
230
+ * @throws Error if called on a new (unsaved) record
231
+ *
232
+ * @example
233
+ * ```typescript
234
+ * // Get all linked File records
235
+ * const items = await record.files.list();
236
+ * const first = await record.files.first();
237
+ *
238
+ * // Filter by label
239
+ * const specific = await record.files.first({ label: 'OverlayRealA55_File' });
240
+ * ```
241
+ */
242
+ get files() {
243
+ var _a;
244
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
245
+ throw new Error('Cannot access links on a new (unsaved) record');
246
+ if (!this._files) {
247
+ this._files = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
248
+ sourceEntity: 'FieldServiceModule:OverlayRealA55',
249
+ targetEntity: 'SchemaModule:File',
250
+ targetModuleName: 'SchemaModule',
251
+ targetEntityName: 'File',
252
+ labels: ['OverlayRealA55_File'],
253
+ }, FileRecord_1.FileRecord);
254
+ }
255
+ return this._files;
256
+ }
257
+ // ============================================
143
258
  // LINK MANAGEMENT
144
259
  // ============================================
145
260
  /**
@@ -208,6 +323,15 @@ class OverlayRealA55Record {
208
323
  }
209
324
  }
210
325
  exports.OverlayRealA55Record = OverlayRealA55Record;
326
+ // ============================================
327
+ // TYPED LINK ACCESSORS
328
+ // ============================================
329
+ /** Valid labels for Note associations */
330
+ OverlayRealA55Record.notesLabels = ['OverlayRealA55_Note'];
331
+ /** Valid labels for WorkOrder associations */
332
+ OverlayRealA55Record.workOrdersLabels = ['WorkOrder_OverlayRealA55'];
333
+ /** Valid labels for File associations */
334
+ OverlayRealA55Record.filesLabels = ['OverlayRealA55_File'];
211
335
  /** Type guard to check if an object is a OverlayRealA55Record */
212
336
  function isOverlayRealA55Record(obj) {
213
337
  return obj instanceof OverlayRealA55Record;
@@ -13,16 +13,23 @@
13
13
  * await record.createPICRequest({ ... }).execute();
14
14
  * ```
15
15
  *
16
+ * Entity Types: DEFAULT
17
+ *
16
18
  * AUTO-GENERATED - DO NOT EDIT DIRECTLY
17
19
  */
18
20
  import { OdinRecord, OdinRecordLinkDto } from '@d19n/odin-types/dist/core';
19
21
  import { PipelineStageEntity } from '@d19n/odin-types/dist/core';
20
22
  import { IDbRecordCreateUpdateRes } from '@d19n/odin-types/dist/core/interfaces/v1.db.interfaces';
21
23
  import { IOdinProvider } from '@d19n/odin-sdk-generator/dist/odin-sdk-types';
24
+ import { RecordLinkManager } from '@d19n/odin-sdk-generator/dist/record-link-manager';
22
25
  import { PICRequestProperties } from '../entities-v2/PICRequest';
23
26
  import { CreatePicRequestProperties } from '../actions-v2/CancelOrderPreInstallDto';
24
27
  import { CompletePicRequestProperties } from '../actions-v2/CompletePicRequestDto';
25
28
  import { DefaultUpdatePicRequestProperties } from '../actions-v2/DefaultUpdatePicRequestDto';
29
+ import { OrderRecord } from './OrderRecord';
30
+ import { NoteRecord } from './NoteRecord';
31
+ /** Valid entity types for PICRequest */
32
+ export declare type PICRequestType = 'DEFAULT';
26
33
  /**
27
34
  * Builder for action execution with dryRun support
28
35
  *
@@ -148,6 +155,8 @@ export declare class PICRequestRecord<TProps = PICRequestProperties> {
148
155
  private _provider;
149
156
  private _pendingLinks;
150
157
  private _preGeneratedId;
158
+ private _orders?;
159
+ private _notes?;
151
160
  /**
152
161
  * Create a record wrapper.
153
162
  * @param record - The underlying record, or null for create operations
@@ -160,7 +169,7 @@ export declare class PICRequestRecord<TProps = PICRequestProperties> {
160
169
  /** Record ID - always available (pre-generated for new records) */
161
170
  get id(): string;
162
171
  get entity(): string;
163
- get type(): string | undefined;
172
+ get type(): PICRequestType | undefined;
164
173
  /** Record properties - empty object for new (unsaved) records */
165
174
  get properties(): TProps;
166
175
  get title(): string | undefined;
@@ -173,6 +182,58 @@ export declare class PICRequestRecord<TProps = PICRequestProperties> {
173
182
  get groups(): string[];
174
183
  /** Access the underlying OdinRecord (null for new records) */
175
184
  get record(): OdinRecord<TProps> | null;
185
+ /**
186
+ * Type guard: check if this record is of type DEFAULT
187
+ *
188
+ * When this returns true, TypeScript automatically narrows the type,
189
+ * giving you access to DEFAULT-specific properties.
190
+ *
191
+ * @example
192
+ * ```typescript
193
+ * if (record.isDefault()) {
194
+ * // TypeScript knows record.properties is PICRequestProperties
195
+ * console.log(record.properties.SomeTypeSpecificField);
196
+ * }
197
+ * ```
198
+ * @remarks This is the default record type
199
+ */
200
+ isDefault(): this is PICRequestRecord<PICRequestProperties>;
201
+ /** Valid labels for Order associations */
202
+ static readonly ordersLabels: readonly ["PICRequest__Order"];
203
+ /**
204
+ * Access linked Order records
205
+ * @remarks Available labels: PICRequest__Order
206
+ * @throws Error if called on a new (unsaved) record
207
+ *
208
+ * @example
209
+ * ```typescript
210
+ * // Get all linked Order records
211
+ * const items = await record.orders.list();
212
+ * const first = await record.orders.first();
213
+ *
214
+ * // Filter by label
215
+ * const specific = await record.orders.first({ label: 'PICRequest__Order' });
216
+ * ```
217
+ */
218
+ get orders(): RecordLinkManager<OrderRecord, typeof PICRequestRecord['ordersLabels'][number]>;
219
+ /** Valid labels for Note associations */
220
+ static readonly notesLabels: readonly ["PICRequest__Note"];
221
+ /**
222
+ * Access linked Note records
223
+ * @remarks Available labels: PICRequest__Note
224
+ * @throws Error if called on a new (unsaved) record
225
+ *
226
+ * @example
227
+ * ```typescript
228
+ * // Get all linked Note records
229
+ * const items = await record.notes.list();
230
+ * const first = await record.notes.first();
231
+ *
232
+ * // Filter by label
233
+ * const specific = await record.notes.first({ label: 'PICRequest__Note' });
234
+ * ```
235
+ */
236
+ get notes(): RecordLinkManager<NoteRecord, typeof PICRequestRecord['notesLabels'][number]>;
176
237
  /**
177
238
  * Queue a link to be created with the next action.
178
239
  * Works for both create and update actions.
@@ -14,6 +14,8 @@
14
14
  * await record.createPICRequest({ ... }).execute();
15
15
  * ```
16
16
  *
17
+ * Entity Types: DEFAULT
18
+ *
17
19
  * AUTO-GENERATED - DO NOT EDIT DIRECTLY
18
20
  */
19
21
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -29,6 +31,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
29
31
  exports.isPICRequestRecord = exports.PICRequestRecord = exports.CompletePicRequestFlowFlowBuilder = void 0;
30
32
  const uuid_1 = require("uuid");
31
33
  const core_1 = require("@d19n/odin-types/dist/core");
34
+ const record_link_manager_1 = require("@d19n/odin-sdk-generator/dist/record-link-manager");
35
+ const OrderRecord_1 = require("./OrderRecord");
36
+ const NoteRecord_1 = require("./NoteRecord");
32
37
  /**
33
38
  * Builder for action execution with dryRun support
34
39
  *
@@ -254,6 +259,85 @@ class PICRequestRecord {
254
259
  /** Access the underlying OdinRecord (null for new records) */
255
260
  get record() { return this._record; }
256
261
  // ============================================
262
+ // TYPE GUARDS (with TypeScript type predicates)
263
+ // ============================================
264
+ /**
265
+ * Type guard: check if this record is of type DEFAULT
266
+ *
267
+ * When this returns true, TypeScript automatically narrows the type,
268
+ * giving you access to DEFAULT-specific properties.
269
+ *
270
+ * @example
271
+ * ```typescript
272
+ * if (record.isDefault()) {
273
+ * // TypeScript knows record.properties is PICRequestProperties
274
+ * console.log(record.properties.SomeTypeSpecificField);
275
+ * }
276
+ * ```
277
+ * @remarks This is the default record type
278
+ */
279
+ isDefault() { var _a; return ((_a = this._record) === null || _a === void 0 ? void 0 : _a.type) === 'DEFAULT'; }
280
+ /**
281
+ * Access linked Order records
282
+ * @remarks Available labels: PICRequest__Order
283
+ * @throws Error if called on a new (unsaved) record
284
+ *
285
+ * @example
286
+ * ```typescript
287
+ * // Get all linked Order records
288
+ * const items = await record.orders.list();
289
+ * const first = await record.orders.first();
290
+ *
291
+ * // Filter by label
292
+ * const specific = await record.orders.first({ label: 'PICRequest__Order' });
293
+ * ```
294
+ */
295
+ get orders() {
296
+ var _a;
297
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
298
+ throw new Error('Cannot access links on a new (unsaved) record');
299
+ if (!this._orders) {
300
+ this._orders = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
301
+ sourceEntity: 'OrderModule:PICRequest',
302
+ targetEntity: 'OrderModule:Order',
303
+ targetModuleName: 'OrderModule',
304
+ targetEntityName: 'Order',
305
+ labels: ['PICRequest__Order'],
306
+ }, OrderRecord_1.OrderRecord);
307
+ }
308
+ return this._orders;
309
+ }
310
+ /**
311
+ * Access linked Note records
312
+ * @remarks Available labels: PICRequest__Note
313
+ * @throws Error if called on a new (unsaved) record
314
+ *
315
+ * @example
316
+ * ```typescript
317
+ * // Get all linked Note records
318
+ * const items = await record.notes.list();
319
+ * const first = await record.notes.first();
320
+ *
321
+ * // Filter by label
322
+ * const specific = await record.notes.first({ label: 'PICRequest__Note' });
323
+ * ```
324
+ */
325
+ get notes() {
326
+ var _a;
327
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
328
+ throw new Error('Cannot access links on a new (unsaved) record');
329
+ if (!this._notes) {
330
+ this._notes = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
331
+ sourceEntity: 'OrderModule:PICRequest',
332
+ targetEntity: 'SupportModule:Note',
333
+ targetModuleName: 'SupportModule',
334
+ targetEntityName: 'Note',
335
+ labels: ['PICRequest__Note'],
336
+ }, NoteRecord_1.NoteRecord);
337
+ }
338
+ return this._notes;
339
+ }
340
+ // ============================================
257
341
  // LINK MANAGEMENT
258
342
  // ============================================
259
343
  /**
@@ -446,6 +530,13 @@ class PICRequestRecord {
446
530
  }
447
531
  }
448
532
  exports.PICRequestRecord = PICRequestRecord;
533
+ // ============================================
534
+ // TYPED LINK ACCESSORS
535
+ // ============================================
536
+ /** Valid labels for Order associations */
537
+ PICRequestRecord.ordersLabels = ['PICRequest__Order'];
538
+ /** Valid labels for Note associations */
539
+ PICRequestRecord.notesLabels = ['PICRequest__Note'];
449
540
  /** Type guard to check if an object is a PICRequestRecord */
450
541
  function isPICRequestRecord(obj) {
451
542
  return obj instanceof PICRequestRecord;