@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
@@ -19,8 +19,10 @@ import { OdinRecord, OdinRecordLinkDto } from '@d19n/odin-types/dist/core';
19
19
  import { PipelineStageEntity } from '@d19n/odin-types/dist/core';
20
20
  import { IDbRecordCreateUpdateRes } from '@d19n/odin-types/dist/core/interfaces/v1.db.interfaces';
21
21
  import { IOdinProvider } from '@d19n/odin-sdk-generator/dist/odin-sdk-types';
22
+ import { RecordLinkManager } from '@d19n/odin-sdk-generator/dist/record-link-manager';
22
23
  import { ServiceProperties } from '../entities-v2/Service';
23
24
  import { UpdateServiceProperties } from '../actions-v2/UpdateServiceDto';
25
+ import { ProductRecord } from './ProductRecord';
24
26
  /**
25
27
  * Builder for action execution with dryRun support
26
28
  *
@@ -84,6 +86,8 @@ export declare class ServiceRecord<TProps = ServiceProperties> {
84
86
  private _provider;
85
87
  private _pendingLinks;
86
88
  private _preGeneratedId;
89
+ private _products?;
90
+ private _services?;
87
91
  /**
88
92
  * Create a record wrapper.
89
93
  * @param record - The underlying record, or null for create operations
@@ -109,6 +113,42 @@ export declare class ServiceRecord<TProps = ServiceProperties> {
109
113
  get groups(): string[];
110
114
  /** Access the underlying OdinRecord (null for new records) */
111
115
  get record(): OdinRecord<TProps> | null;
116
+ /** Valid labels for Product associations */
117
+ static readonly productsLabels: readonly ["Product__Service"];
118
+ /**
119
+ * Access linked Product records
120
+ * @remarks Available labels: Product__Service
121
+ * @throws Error if called on a new (unsaved) record
122
+ *
123
+ * @example
124
+ * ```typescript
125
+ * // Get all linked Product records
126
+ * const items = await record.products.list();
127
+ * const first = await record.products.first();
128
+ *
129
+ * // Filter by label
130
+ * const specific = await record.products.first({ label: 'Product__Service' });
131
+ * ```
132
+ */
133
+ get products(): RecordLinkManager<ProductRecord, typeof ServiceRecord['productsLabels'][number]>;
134
+ /** Valid labels for Service associations */
135
+ static readonly servicesLabels: readonly ["Service__Service"];
136
+ /**
137
+ * Access linked Service records
138
+ * @remarks Available labels: Service__Service
139
+ * @throws Error if called on a new (unsaved) record
140
+ *
141
+ * @example
142
+ * ```typescript
143
+ * // Get all linked Service records
144
+ * const items = await record.services.list();
145
+ * const first = await record.services.first();
146
+ *
147
+ * // Filter by label
148
+ * const specific = await record.services.first({ label: 'Service__Service' });
149
+ * ```
150
+ */
151
+ get services(): RecordLinkManager<ServiceRecord, typeof ServiceRecord['servicesLabels'][number]>;
112
152
  /**
113
153
  * Queue a link to be created with the next action.
114
154
  * Works for both create and update actions.
@@ -29,6 +29,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.isServiceRecord = exports.ServiceRecord = void 0;
30
30
  const uuid_1 = require("uuid");
31
31
  const core_1 = require("@d19n/odin-types/dist/core");
32
+ const record_link_manager_1 = require("@d19n/odin-sdk-generator/dist/record-link-manager");
33
+ const ProductRecord_1 = require("./ProductRecord");
32
34
  /**
33
35
  * Builder for action execution with dryRun support
34
36
  *
@@ -139,6 +141,66 @@ class ServiceRecord {
139
141
  get groups() { var _a; return ((_a = this._record) === null || _a === void 0 ? void 0 : _a.groups) || []; }
140
142
  /** Access the underlying OdinRecord (null for new records) */
141
143
  get record() { return this._record; }
144
+ /**
145
+ * Access linked Product records
146
+ * @remarks Available labels: Product__Service
147
+ * @throws Error if called on a new (unsaved) record
148
+ *
149
+ * @example
150
+ * ```typescript
151
+ * // Get all linked Product records
152
+ * const items = await record.products.list();
153
+ * const first = await record.products.first();
154
+ *
155
+ * // Filter by label
156
+ * const specific = await record.products.first({ label: 'Product__Service' });
157
+ * ```
158
+ */
159
+ get products() {
160
+ var _a;
161
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
162
+ throw new Error('Cannot access links on a new (unsaved) record');
163
+ if (!this._products) {
164
+ this._products = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
165
+ sourceEntity: 'ServiceModule:Service',
166
+ targetEntity: 'ProductModule:Product',
167
+ targetModuleName: 'ProductModule',
168
+ targetEntityName: 'Product',
169
+ labels: ['Product__Service'],
170
+ }, ProductRecord_1.ProductRecord);
171
+ }
172
+ return this._products;
173
+ }
174
+ /**
175
+ * Access linked Service records
176
+ * @remarks Available labels: Service__Service
177
+ * @throws Error if called on a new (unsaved) record
178
+ *
179
+ * @example
180
+ * ```typescript
181
+ * // Get all linked Service records
182
+ * const items = await record.services.list();
183
+ * const first = await record.services.first();
184
+ *
185
+ * // Filter by label
186
+ * const specific = await record.services.first({ label: 'Service__Service' });
187
+ * ```
188
+ */
189
+ get services() {
190
+ var _a;
191
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
192
+ throw new Error('Cannot access links on a new (unsaved) record');
193
+ if (!this._services) {
194
+ this._services = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
195
+ sourceEntity: 'ServiceModule:Service',
196
+ targetEntity: 'ServiceModule:Service',
197
+ targetModuleName: 'ServiceModule',
198
+ targetEntityName: 'Service',
199
+ labels: ['Service__Service'],
200
+ }, ServiceRecord);
201
+ }
202
+ return this._services;
203
+ }
142
204
  // ============================================
143
205
  // LINK MANAGEMENT
144
206
  // ============================================
@@ -208,6 +270,13 @@ class ServiceRecord {
208
270
  }
209
271
  }
210
272
  exports.ServiceRecord = ServiceRecord;
273
+ // ============================================
274
+ // TYPED LINK ACCESSORS
275
+ // ============================================
276
+ /** Valid labels for Product associations */
277
+ ServiceRecord.productsLabels = ['Product__Service'];
278
+ /** Valid labels for Service associations */
279
+ ServiceRecord.servicesLabels = ['Service__Service'];
211
280
  /** Type guard to check if an object is a ServiceRecord */
212
281
  function isServiceRecord(obj) {
213
282
  return obj instanceof ServiceRecord;
@@ -13,14 +13,22 @@
13
13
  * await record.createServiceVisitAudit({ ... }).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 { ServiceVisitAuditProperties } from '../entities-v2/ServiceVisitAudit';
24
+ import { RecordLinkManager } from '@d19n/odin-sdk-generator/dist/record-link-manager';
25
+ import { ServiceVisitAuditProperties, OutcomeFormServiceVisitAuditProperties } from '../entities-v2/ServiceVisitAudit';
23
26
  import { ServiceVisitAuditCreateProperties } from '../actions-v2/CompleteServiceWorkOrderFlowDto';
27
+ import { WorkOrderRecord } from './WorkOrderRecord';
28
+ import { NoteRecord } from './NoteRecord';
29
+ import { FileRecord } from './FileRecord';
30
+ /** Valid entity types for ServiceVisitAudit */
31
+ export declare type ServiceVisitAuditType = 'OUTCOME_FORM';
24
32
  /**
25
33
  * Builder for action execution with dryRun support
26
34
  *
@@ -84,6 +92,9 @@ export declare class ServiceVisitAuditRecord<TProps = ServiceVisitAuditPropertie
84
92
  private _provider;
85
93
  private _pendingLinks;
86
94
  private _preGeneratedId;
95
+ private _workOrders?;
96
+ private _notes?;
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 ServiceVisitAuditRecord<TProps = ServiceVisitAuditPropertie
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(): ServiceVisitAuditType | 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 ServiceVisitAuditRecord<TProps = ServiceVisitAuditPropertie
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 OutcomeFormServiceVisitAuditProperties
133
+ * console.log(record.properties.SomeTypeSpecificField);
134
+ * }
135
+ * ```
136
+ * @remarks outcome form
137
+ */
138
+ isOutcomeForm(): this is ServiceVisitAuditRecord<OutcomeFormServiceVisitAuditProperties>;
139
+ /** Valid labels for WorkOrder associations */
140
+ static readonly workOrdersLabels: readonly ["ServiceVisitAudit_WorkOrder", "WorkOrder_ServiceVisitAudit"];
141
+ /**
142
+ * Access linked WorkOrder records
143
+ * @remarks Available labels: ServiceVisitAudit_WorkOrder, WorkOrder_ServiceVisitAudit
144
+ * @throws Error if called on a new (unsaved) record
145
+ *
146
+ * @example
147
+ * ```typescript
148
+ * // Get all linked WorkOrder records
149
+ * const items = await record.workOrders.list();
150
+ * const first = await record.workOrders.first();
151
+ *
152
+ * // Filter by label
153
+ * const specific = await record.workOrders.first({ label: 'ServiceVisitAudit_WorkOrder' });
154
+ * ```
155
+ */
156
+ get workOrders(): RecordLinkManager<WorkOrderRecord, typeof ServiceVisitAuditRecord['workOrdersLabels'][number]>;
157
+ /** Valid labels for Note associations */
158
+ static readonly notesLabels: readonly ["ServiceVisitAudit__Note"];
159
+ /**
160
+ * Access linked Note records
161
+ * @remarks Available labels: ServiceVisitAudit__Note
162
+ * @throws Error if called on a new (unsaved) record
163
+ *
164
+ * @example
165
+ * ```typescript
166
+ * // Get all linked Note records
167
+ * const items = await record.notes.list();
168
+ * const first = await record.notes.first();
169
+ *
170
+ * // Filter by label
171
+ * const specific = await record.notes.first({ label: 'ServiceVisitAudit__Note' });
172
+ * ```
173
+ */
174
+ get notes(): RecordLinkManager<NoteRecord, typeof ServiceVisitAuditRecord['notesLabels'][number]>;
175
+ /** Valid labels for File associations */
176
+ static readonly filesLabels: readonly ["ServiceVisitAudit__File"];
177
+ /**
178
+ * Access linked File records
179
+ * @remarks Available labels: ServiceVisitAudit__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: 'ServiceVisitAudit__File' });
190
+ * ```
191
+ */
192
+ get files(): RecordLinkManager<FileRecord, typeof ServiceVisitAuditRecord['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.createServiceVisitAudit({ ... }).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.isServiceVisitAuditRecord = exports.ServiceVisitAuditRecord = 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 WorkOrderRecord_1 = require("./WorkOrderRecord");
36
+ const NoteRecord_1 = require("./NoteRecord");
37
+ const FileRecord_1 = require("./FileRecord");
32
38
  /**
33
39
  * Builder for action execution with dryRun support
34
40
  *
@@ -140,6 +146,115 @@ class ServiceVisitAuditRecord {
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 OutcomeFormServiceVisitAuditProperties
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 WorkOrder records
169
+ * @remarks Available labels: ServiceVisitAudit_WorkOrder, WorkOrder_ServiceVisitAudit
170
+ * @throws Error if called on a new (unsaved) record
171
+ *
172
+ * @example
173
+ * ```typescript
174
+ * // Get all linked WorkOrder records
175
+ * const items = await record.workOrders.list();
176
+ * const first = await record.workOrders.first();
177
+ *
178
+ * // Filter by label
179
+ * const specific = await record.workOrders.first({ label: 'ServiceVisitAudit_WorkOrder' });
180
+ * ```
181
+ */
182
+ get workOrders() {
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._workOrders) {
187
+ this._workOrders = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
188
+ sourceEntity: 'FieldServiceModule:ServiceVisitAudit',
189
+ targetEntity: 'FieldServiceModule:WorkOrder',
190
+ targetModuleName: 'FieldServiceModule',
191
+ targetEntityName: 'WorkOrder',
192
+ labels: ['ServiceVisitAudit_WorkOrder', 'WorkOrder_ServiceVisitAudit'],
193
+ }, WorkOrderRecord_1.WorkOrderRecord);
194
+ }
195
+ return this._workOrders;
196
+ }
197
+ /**
198
+ * Access linked Note records
199
+ * @remarks Available labels: ServiceVisitAudit__Note
200
+ * @throws Error if called on a new (unsaved) record
201
+ *
202
+ * @example
203
+ * ```typescript
204
+ * // Get all linked Note records
205
+ * const items = await record.notes.list();
206
+ * const first = await record.notes.first();
207
+ *
208
+ * // Filter by label
209
+ * const specific = await record.notes.first({ label: 'ServiceVisitAudit__Note' });
210
+ * ```
211
+ */
212
+ get notes() {
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._notes) {
217
+ this._notes = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
218
+ sourceEntity: 'FieldServiceModule:ServiceVisitAudit',
219
+ targetEntity: 'SupportModule:Note',
220
+ targetModuleName: 'SupportModule',
221
+ targetEntityName: 'Note',
222
+ labels: ['ServiceVisitAudit__Note'],
223
+ }, NoteRecord_1.NoteRecord);
224
+ }
225
+ return this._notes;
226
+ }
227
+ /**
228
+ * Access linked File records
229
+ * @remarks Available labels: ServiceVisitAudit__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: 'ServiceVisitAudit__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:ServiceVisitAudit',
249
+ targetEntity: 'SchemaModule:File',
250
+ targetModuleName: 'SchemaModule',
251
+ targetEntityName: 'File',
252
+ labels: ['ServiceVisitAudit__File'],
253
+ }, FileRecord_1.FileRecord);
254
+ }
255
+ return this._files;
256
+ }
257
+ // ============================================
143
258
  // LINK MANAGEMENT
144
259
  // ============================================
145
260
  /**
@@ -215,6 +330,15 @@ class ServiceVisitAuditRecord {
215
330
  }
216
331
  }
217
332
  exports.ServiceVisitAuditRecord = ServiceVisitAuditRecord;
333
+ // ============================================
334
+ // TYPED LINK ACCESSORS
335
+ // ============================================
336
+ /** Valid labels for WorkOrder associations */
337
+ ServiceVisitAuditRecord.workOrdersLabels = ['ServiceVisitAudit_WorkOrder', 'WorkOrder_ServiceVisitAudit'];
338
+ /** Valid labels for Note associations */
339
+ ServiceVisitAuditRecord.notesLabels = ['ServiceVisitAudit__Note'];
340
+ /** Valid labels for File associations */
341
+ ServiceVisitAuditRecord.filesLabels = ['ServiceVisitAudit__File'];
218
342
  /** Type guard to check if an object is a ServiceVisitAuditRecord */
219
343
  function isServiceVisitAuditRecord(obj) {
220
344
  return obj instanceof ServiceVisitAuditRecord;
@@ -13,15 +13,23 @@
13
13
  * await record.createSiteSpecificRiskAssessmentOutcomeForm({ ... }).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 { SiteSpecificRiskAssessmentOutcomeFormProperties } from '../entities-v2/SiteSpecificRiskAssessmentOutcomeForm';
24
+ import { RecordLinkManager } from '@d19n/odin-sdk-generator/dist/record-link-manager';
25
+ import { SiteSpecificRiskAssessmentOutcomeFormProperties, OutcomeFormSiteSpecificRiskAssessmentOutcomeFormProperties } from '../entities-v2/SiteSpecificRiskAssessmentOutcomeForm';
23
26
  import { CreateSsraProperties } from '../actions-v2/MoveInspectionWorkOrderToInProgressSubstantialDto';
24
27
  import { UpdateSsraProperties } from '../actions-v2/UpdateSsraDto';
28
+ import { NoteRecord } from './NoteRecord';
29
+ import { WorkOrderRecord } from './WorkOrderRecord';
30
+ import { FileRecord } from './FileRecord';
31
+ /** Valid entity types for SiteSpecificRiskAssessmentOutcomeForm */
32
+ export declare type SiteSpecificRiskAssessmentOutcomeFormType = 'OUTCOME_FORM';
25
33
  /**
26
34
  * Builder for action execution with dryRun support
27
35
  *
@@ -85,6 +93,9 @@ export declare class SiteSpecificRiskAssessmentOutcomeFormRecord<TProps = SiteSp
85
93
  private _provider;
86
94
  private _pendingLinks;
87
95
  private _preGeneratedId;
96
+ private _notes?;
97
+ private _workOrders?;
98
+ private _files?;
88
99
  /**
89
100
  * Create a record wrapper.
90
101
  * @param record - The underlying record, or null for create operations
@@ -97,7 +108,7 @@ export declare class SiteSpecificRiskAssessmentOutcomeFormRecord<TProps = SiteSp
97
108
  /** Record ID - always available (pre-generated for new records) */
98
109
  get id(): string;
99
110
  get entity(): string;
100
- get type(): string | undefined;
111
+ get type(): SiteSpecificRiskAssessmentOutcomeFormType | undefined;
101
112
  /** Record properties - empty object for new (unsaved) records */
102
113
  get properties(): TProps;
103
114
  get title(): string | undefined;
@@ -110,6 +121,76 @@ export declare class SiteSpecificRiskAssessmentOutcomeFormRecord<TProps = SiteSp
110
121
  get groups(): string[];
111
122
  /** Access the underlying OdinRecord (null for new records) */
112
123
  get record(): OdinRecord<TProps> | null;
124
+ /**
125
+ * Type guard: check if this record is of type OUTCOME_FORM
126
+ *
127
+ * When this returns true, TypeScript automatically narrows the type,
128
+ * giving you access to OUTCOME_FORM-specific properties.
129
+ *
130
+ * @example
131
+ * ```typescript
132
+ * if (record.isOutcomeForm()) {
133
+ * // TypeScript knows record.properties is OutcomeFormSiteSpecificRiskAssessmentOutcomeFormProperties
134
+ * console.log(record.properties.SomeTypeSpecificField);
135
+ * }
136
+ * ```
137
+ * @remarks outcome form
138
+ */
139
+ isOutcomeForm(): this is SiteSpecificRiskAssessmentOutcomeFormRecord<OutcomeFormSiteSpecificRiskAssessmentOutcomeFormProperties>;
140
+ /** Valid labels for Note associations */
141
+ static readonly notesLabels: readonly ["SiteSpecificRiskAssessmentOutcomeForm__Note"];
142
+ /**
143
+ * Access linked Note records
144
+ * @remarks Available labels: SiteSpecificRiskAssessmentOutcomeForm__Note
145
+ * @throws Error if called on a new (unsaved) record
146
+ *
147
+ * @example
148
+ * ```typescript
149
+ * // Get all linked Note records
150
+ * const items = await record.notes.list();
151
+ * const first = await record.notes.first();
152
+ *
153
+ * // Filter by label
154
+ * const specific = await record.notes.first({ label: 'SiteSpecificRiskAssessmentOutcomeForm__Note' });
155
+ * ```
156
+ */
157
+ get notes(): RecordLinkManager<NoteRecord, typeof SiteSpecificRiskAssessmentOutcomeFormRecord['notesLabels'][number]>;
158
+ /** Valid labels for WorkOrder associations */
159
+ static readonly workOrdersLabels: readonly ["WorkOrder__SiteSpecificRiskAssessmentOutcomeForm"];
160
+ /**
161
+ * Access linked WorkOrder records
162
+ * @remarks Available labels: WorkOrder__SiteSpecificRiskAssessmentOutcomeForm
163
+ * @throws Error if called on a new (unsaved) record
164
+ *
165
+ * @example
166
+ * ```typescript
167
+ * // Get all linked WorkOrder records
168
+ * const items = await record.workOrders.list();
169
+ * const first = await record.workOrders.first();
170
+ *
171
+ * // Filter by label
172
+ * const specific = await record.workOrders.first({ label: 'WorkOrder__SiteSpecificRiskAssessmentOutcomeForm' });
173
+ * ```
174
+ */
175
+ get workOrders(): RecordLinkManager<WorkOrderRecord, typeof SiteSpecificRiskAssessmentOutcomeFormRecord['workOrdersLabels'][number]>;
176
+ /** Valid labels for File associations */
177
+ static readonly filesLabels: readonly ["SiteSpecificRiskAssessmentOutcomeForm__File"];
178
+ /**
179
+ * Access linked File records
180
+ * @remarks Available labels: SiteSpecificRiskAssessmentOutcomeForm__File
181
+ * @throws Error if called on a new (unsaved) record
182
+ *
183
+ * @example
184
+ * ```typescript
185
+ * // Get all linked File records
186
+ * const items = await record.files.list();
187
+ * const first = await record.files.first();
188
+ *
189
+ * // Filter by label
190
+ * const specific = await record.files.first({ label: 'SiteSpecificRiskAssessmentOutcomeForm__File' });
191
+ * ```
192
+ */
193
+ get files(): RecordLinkManager<FileRecord, typeof SiteSpecificRiskAssessmentOutcomeFormRecord['filesLabels'][number]>;
113
194
  /**
114
195
  * Queue a link to be created with the next action.
115
196
  * Works for both create and update actions.