@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,14 +13,21 @@
13
13
  * await record.createImpersonationTracker({ ... }).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 { ImpersonationTrackerProperties } from '../entities-v2/ImpersonationTracker';
23
26
  import { CreateImpersonationTrackerProperties } from '../actions-v2/CreateImpersonationTrackerDto';
27
+ import { UserRecord } from './UserRecord';
28
+ import { ContactRecord } from './ContactRecord';
29
+ /** Valid entity types for ImpersonationTracker */
30
+ export declare type ImpersonationTrackerType = 'DEFAULT';
24
31
  /**
25
32
  * Builder for action execution with dryRun support
26
33
  *
@@ -84,6 +91,8 @@ export declare class ImpersonationTrackerRecord<TProps = ImpersonationTrackerPro
84
91
  private _provider;
85
92
  private _pendingLinks;
86
93
  private _preGeneratedId;
94
+ private _users?;
95
+ private _contacts?;
87
96
  /**
88
97
  * Create a record wrapper.
89
98
  * @param record - The underlying record, or null for create operations
@@ -96,7 +105,7 @@ export declare class ImpersonationTrackerRecord<TProps = ImpersonationTrackerPro
96
105
  /** Record ID - always available (pre-generated for new records) */
97
106
  get id(): string;
98
107
  get entity(): string;
99
- get type(): string | undefined;
108
+ get type(): ImpersonationTrackerType | undefined;
100
109
  /** Record properties - empty object for new (unsaved) records */
101
110
  get properties(): TProps;
102
111
  get title(): string | undefined;
@@ -109,6 +118,58 @@ export declare class ImpersonationTrackerRecord<TProps = ImpersonationTrackerPro
109
118
  get groups(): string[];
110
119
  /** Access the underlying OdinRecord (null for new records) */
111
120
  get record(): OdinRecord<TProps> | null;
121
+ /**
122
+ * Type guard: check if this record is of type DEFAULT
123
+ *
124
+ * When this returns true, TypeScript automatically narrows the type,
125
+ * giving you access to DEFAULT-specific properties.
126
+ *
127
+ * @example
128
+ * ```typescript
129
+ * if (record.isDefault()) {
130
+ * // TypeScript knows record.properties is ImpersonationTrackerProperties
131
+ * console.log(record.properties.SomeTypeSpecificField);
132
+ * }
133
+ * ```
134
+ * @remarks This is the default record type
135
+ */
136
+ isDefault(): this is ImpersonationTrackerRecord<ImpersonationTrackerProperties>;
137
+ /** Valid labels for User associations */
138
+ static readonly usersLabels: readonly ["User__ImpersonationTracker"];
139
+ /**
140
+ * Access linked User records
141
+ * @remarks Available labels: User__ImpersonationTracker
142
+ * @throws Error if called on a new (unsaved) record
143
+ *
144
+ * @example
145
+ * ```typescript
146
+ * // Get all linked User records
147
+ * const items = await record.users.list();
148
+ * const first = await record.users.first();
149
+ *
150
+ * // Filter by label
151
+ * const specific = await record.users.first({ label: 'User__ImpersonationTracker' });
152
+ * ```
153
+ */
154
+ get users(): RecordLinkManager<UserRecord, typeof ImpersonationTrackerRecord['usersLabels'][number]>;
155
+ /** Valid labels for Contact associations */
156
+ static readonly contactsLabels: readonly ["ImpersonationTracker__Contact"];
157
+ /**
158
+ * Access linked Contact records
159
+ * @remarks Available labels: ImpersonationTracker__Contact
160
+ * @throws Error if called on a new (unsaved) record
161
+ *
162
+ * @example
163
+ * ```typescript
164
+ * // Get all linked Contact records
165
+ * const items = await record.contacts.list();
166
+ * const first = await record.contacts.first();
167
+ *
168
+ * // Filter by label
169
+ * const specific = await record.contacts.first({ label: 'ImpersonationTracker__Contact' });
170
+ * ```
171
+ */
172
+ get contacts(): RecordLinkManager<ContactRecord, typeof ImpersonationTrackerRecord['contactsLabels'][number]>;
112
173
  /**
113
174
  * Queue a link to be created with the next action.
114
175
  * Works for both create and update actions.
@@ -14,6 +14,8 @@
14
14
  * await record.createImpersonationTracker({ ... }).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.isImpersonationTrackerRecord = exports.ImpersonationTrackerRecord = 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 UserRecord_1 = require("./UserRecord");
36
+ const ContactRecord_1 = require("./ContactRecord");
32
37
  /**
33
38
  * Builder for action execution with dryRun support
34
39
  *
@@ -140,6 +145,85 @@ class ImpersonationTrackerRecord {
140
145
  /** Access the underlying OdinRecord (null for new records) */
141
146
  get record() { return this._record; }
142
147
  // ============================================
148
+ // TYPE GUARDS (with TypeScript type predicates)
149
+ // ============================================
150
+ /**
151
+ * Type guard: check if this record is of type DEFAULT
152
+ *
153
+ * When this returns true, TypeScript automatically narrows the type,
154
+ * giving you access to DEFAULT-specific properties.
155
+ *
156
+ * @example
157
+ * ```typescript
158
+ * if (record.isDefault()) {
159
+ * // TypeScript knows record.properties is ImpersonationTrackerProperties
160
+ * console.log(record.properties.SomeTypeSpecificField);
161
+ * }
162
+ * ```
163
+ * @remarks This is the default record type
164
+ */
165
+ isDefault() { var _a; return ((_a = this._record) === null || _a === void 0 ? void 0 : _a.type) === 'DEFAULT'; }
166
+ /**
167
+ * Access linked User records
168
+ * @remarks Available labels: User__ImpersonationTracker
169
+ * @throws Error if called on a new (unsaved) record
170
+ *
171
+ * @example
172
+ * ```typescript
173
+ * // Get all linked User records
174
+ * const items = await record.users.list();
175
+ * const first = await record.users.first();
176
+ *
177
+ * // Filter by label
178
+ * const specific = await record.users.first({ label: 'User__ImpersonationTracker' });
179
+ * ```
180
+ */
181
+ get users() {
182
+ var _a;
183
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
184
+ throw new Error('Cannot access links on a new (unsaved) record');
185
+ if (!this._users) {
186
+ this._users = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
187
+ sourceEntity: 'IdentityModule:ImpersonationTracker',
188
+ targetEntity: 'IdentityModule:User',
189
+ targetModuleName: 'IdentityModule',
190
+ targetEntityName: 'User',
191
+ labels: ['User__ImpersonationTracker'],
192
+ }, UserRecord_1.UserRecord);
193
+ }
194
+ return this._users;
195
+ }
196
+ /**
197
+ * Access linked Contact records
198
+ * @remarks Available labels: ImpersonationTracker__Contact
199
+ * @throws Error if called on a new (unsaved) record
200
+ *
201
+ * @example
202
+ * ```typescript
203
+ * // Get all linked Contact records
204
+ * const items = await record.contacts.list();
205
+ * const first = await record.contacts.first();
206
+ *
207
+ * // Filter by label
208
+ * const specific = await record.contacts.first({ label: 'ImpersonationTracker__Contact' });
209
+ * ```
210
+ */
211
+ get contacts() {
212
+ var _a;
213
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
214
+ throw new Error('Cannot access links on a new (unsaved) record');
215
+ if (!this._contacts) {
216
+ this._contacts = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
217
+ sourceEntity: 'IdentityModule:ImpersonationTracker',
218
+ targetEntity: 'CrmModule:Contact',
219
+ targetModuleName: 'CrmModule',
220
+ targetEntityName: 'Contact',
221
+ labels: ['ImpersonationTracker__Contact'],
222
+ }, ContactRecord_1.ContactRecord);
223
+ }
224
+ return this._contacts;
225
+ }
226
+ // ============================================
143
227
  // LINK MANAGEMENT
144
228
  // ============================================
145
229
  /**
@@ -215,6 +299,13 @@ class ImpersonationTrackerRecord {
215
299
  }
216
300
  }
217
301
  exports.ImpersonationTrackerRecord = ImpersonationTrackerRecord;
302
+ // ============================================
303
+ // TYPED LINK ACCESSORS
304
+ // ============================================
305
+ /** Valid labels for User associations */
306
+ ImpersonationTrackerRecord.usersLabels = ['User__ImpersonationTracker'];
307
+ /** Valid labels for Contact associations */
308
+ ImpersonationTrackerRecord.contactsLabels = ['ImpersonationTracker__Contact'];
218
309
  /** Type guard to check if an object is a ImpersonationTrackerRecord */
219
310
  function isImpersonationTrackerRecord(obj) {
220
311
  return obj instanceof ImpersonationTrackerRecord;
@@ -13,13 +13,21 @@
13
13
  * await record.createInternalInstallAudit({ ... }).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 { InternalInstallAuditProperties } from '../entities-v2/InternalInstallAudit';
24
+ import { RecordLinkManager } from '@d19n/odin-sdk-generator/dist/record-link-manager';
25
+ import { InternalInstallAuditProperties, OutcomeFormInternalInstallAuditProperties } from '../entities-v2/InternalInstallAudit';
26
+ import { NoteRecord } from './NoteRecord';
27
+ import { WorkOrderRecord } from './WorkOrderRecord';
28
+ import { FileRecord } from './FileRecord';
29
+ /** Valid entity types for InternalInstallAudit */
30
+ export declare type InternalInstallAuditType = 'OUTCOME_FORM';
23
31
  /**
24
32
  * Builder for action execution with dryRun support
25
33
  *
@@ -83,6 +91,9 @@ export declare class InternalInstallAuditRecord<TProps = InternalInstallAuditPro
83
91
  private _provider;
84
92
  private _pendingLinks;
85
93
  private _preGeneratedId;
94
+ private _notes?;
95
+ private _workOrders?;
96
+ private _files?;
86
97
  /**
87
98
  * Create a record wrapper.
88
99
  * @param record - The underlying record, or null for create operations
@@ -95,7 +106,7 @@ export declare class InternalInstallAuditRecord<TProps = InternalInstallAuditPro
95
106
  /** Record ID - always available (pre-generated for new records) */
96
107
  get id(): string;
97
108
  get entity(): string;
98
- get type(): string | undefined;
109
+ get type(): InternalInstallAuditType | undefined;
99
110
  /** Record properties - empty object for new (unsaved) records */
100
111
  get properties(): TProps;
101
112
  get title(): string | undefined;
@@ -108,6 +119,76 @@ export declare class InternalInstallAuditRecord<TProps = InternalInstallAuditPro
108
119
  get groups(): string[];
109
120
  /** Access the underlying OdinRecord (null for new records) */
110
121
  get record(): OdinRecord<TProps> | null;
122
+ /**
123
+ * Type guard: check if this record is of type OUTCOME_FORM
124
+ *
125
+ * When this returns true, TypeScript automatically narrows the type,
126
+ * giving you access to OUTCOME_FORM-specific properties.
127
+ *
128
+ * @example
129
+ * ```typescript
130
+ * if (record.isOutcomeForm()) {
131
+ * // TypeScript knows record.properties is OutcomeFormInternalInstallAuditProperties
132
+ * console.log(record.properties.SomeTypeSpecificField);
133
+ * }
134
+ * ```
135
+ * @remarks outcome form
136
+ */
137
+ isOutcomeForm(): this is InternalInstallAuditRecord<OutcomeFormInternalInstallAuditProperties>;
138
+ /** Valid labels for Note associations */
139
+ static readonly notesLabels: readonly ["InternalInstallAudit_Note"];
140
+ /**
141
+ * Access linked Note records
142
+ * @remarks Available labels: InternalInstallAudit_Note
143
+ * @throws Error if called on a new (unsaved) record
144
+ *
145
+ * @example
146
+ * ```typescript
147
+ * // Get all linked Note records
148
+ * const items = await record.notes.list();
149
+ * const first = await record.notes.first();
150
+ *
151
+ * // Filter by label
152
+ * const specific = await record.notes.first({ label: 'InternalInstallAudit_Note' });
153
+ * ```
154
+ */
155
+ get notes(): RecordLinkManager<NoteRecord, typeof InternalInstallAuditRecord['notesLabels'][number]>;
156
+ /** Valid labels for WorkOrder associations */
157
+ static readonly workOrdersLabels: readonly ["WorkOrder_InternalInstallAudit"];
158
+ /**
159
+ * Access linked WorkOrder records
160
+ * @remarks Available labels: WorkOrder_InternalInstallAudit
161
+ * @throws Error if called on a new (unsaved) record
162
+ *
163
+ * @example
164
+ * ```typescript
165
+ * // Get all linked WorkOrder records
166
+ * const items = await record.workOrders.list();
167
+ * const first = await record.workOrders.first();
168
+ *
169
+ * // Filter by label
170
+ * const specific = await record.workOrders.first({ label: 'WorkOrder_InternalInstallAudit' });
171
+ * ```
172
+ */
173
+ get workOrders(): RecordLinkManager<WorkOrderRecord, typeof InternalInstallAuditRecord['workOrdersLabels'][number]>;
174
+ /** Valid labels for File associations */
175
+ static readonly filesLabels: readonly ["InternalInstallAudit_File"];
176
+ /**
177
+ * Access linked File records
178
+ * @remarks Available labels: InternalInstallAudit_File
179
+ * @throws Error if called on a new (unsaved) record
180
+ *
181
+ * @example
182
+ * ```typescript
183
+ * // Get all linked File records
184
+ * const items = await record.files.list();
185
+ * const first = await record.files.first();
186
+ *
187
+ * // Filter by label
188
+ * const specific = await record.files.first({ label: 'InternalInstallAudit_File' });
189
+ * ```
190
+ */
191
+ get files(): RecordLinkManager<FileRecord, typeof InternalInstallAuditRecord['filesLabels'][number]>;
111
192
  /**
112
193
  * Queue a link to be created with the next action.
113
194
  * Works for both create and update actions.
@@ -14,6 +14,8 @@
14
14
  * await record.createInternalInstallAudit({ ... }).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.isInternalInstallAuditRecord = exports.InternalInstallAuditRecord = 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 InternalInstallAuditRecord {
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 OutcomeFormInternalInstallAuditProperties
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: InternalInstallAudit_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: 'InternalInstallAudit_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:InternalInstallAudit',
189
+ targetEntity: 'SupportModule:Note',
190
+ targetModuleName: 'SupportModule',
191
+ targetEntityName: 'Note',
192
+ labels: ['InternalInstallAudit_Note'],
193
+ }, NoteRecord_1.NoteRecord);
194
+ }
195
+ return this._notes;
196
+ }
197
+ /**
198
+ * Access linked WorkOrder records
199
+ * @remarks Available labels: WorkOrder_InternalInstallAudit
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_InternalInstallAudit' });
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:InternalInstallAudit',
219
+ targetEntity: 'FieldServiceModule:WorkOrder',
220
+ targetModuleName: 'FieldServiceModule',
221
+ targetEntityName: 'WorkOrder',
222
+ labels: ['WorkOrder_InternalInstallAudit'],
223
+ }, WorkOrderRecord_1.WorkOrderRecord);
224
+ }
225
+ return this._workOrders;
226
+ }
227
+ /**
228
+ * Access linked File records
229
+ * @remarks Available labels: InternalInstallAudit_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: 'InternalInstallAudit_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:InternalInstallAudit',
249
+ targetEntity: 'SchemaModule:File',
250
+ targetModuleName: 'SchemaModule',
251
+ targetEntityName: 'File',
252
+ labels: ['InternalInstallAudit_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 InternalInstallAuditRecord {
215
330
  }
216
331
  }
217
332
  exports.InternalInstallAuditRecord = InternalInstallAuditRecord;
333
+ // ============================================
334
+ // TYPED LINK ACCESSORS
335
+ // ============================================
336
+ /** Valid labels for Note associations */
337
+ InternalInstallAuditRecord.notesLabels = ['InternalInstallAudit_Note'];
338
+ /** Valid labels for WorkOrder associations */
339
+ InternalInstallAuditRecord.workOrdersLabels = ['WorkOrder_InternalInstallAudit'];
340
+ /** Valid labels for File associations */
341
+ InternalInstallAuditRecord.filesLabels = ['InternalInstallAudit_File'];
218
342
  /** Type guard to check if an object is a InternalInstallAuditRecord */
219
343
  function isInternalInstallAuditRecord(obj) {
220
344
  return obj instanceof InternalInstallAuditRecord;
@@ -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 { InvoiceItemProperties } from '../entities-v2/InvoiceItem';
23
24
  import { CreateInvoiceItemProperties } from '../actions-v2/CreateInvoiceItemDto';
25
+ import { InvoiceRecord } from './InvoiceRecord';
24
26
  /**
25
27
  * Builder for action execution with dryRun support
26
28
  *
@@ -84,6 +86,8 @@ export declare class InvoiceItemRecord<TProps = InvoiceItemProperties> {
84
86
  private _provider;
85
87
  private _pendingLinks;
86
88
  private _preGeneratedId;
89
+ private _invoices?;
90
+ private _invoiceItems?;
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 InvoiceItemRecord<TProps = InvoiceItemProperties> {
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 Invoice associations */
117
+ static readonly invoicesLabels: readonly ["Invoice__InvoiceItem"];
118
+ /**
119
+ * Access linked Invoice records
120
+ * @remarks Available labels: Invoice__InvoiceItem
121
+ * @throws Error if called on a new (unsaved) record
122
+ *
123
+ * @example
124
+ * ```typescript
125
+ * // Get all linked Invoice records
126
+ * const items = await record.invoices.list();
127
+ * const first = await record.invoices.first();
128
+ *
129
+ * // Filter by label
130
+ * const specific = await record.invoices.first({ label: 'Invoice__InvoiceItem' });
131
+ * ```
132
+ */
133
+ get invoices(): RecordLinkManager<InvoiceRecord, typeof InvoiceItemRecord['invoicesLabels'][number]>;
134
+ /** Valid labels for InvoiceItem associations */
135
+ static readonly invoiceItemsLabels: readonly ["InvoiceItem__InvoiceItem"];
136
+ /**
137
+ * Access linked InvoiceItem records
138
+ * @remarks Available labels: InvoiceItem__InvoiceItem
139
+ * @throws Error if called on a new (unsaved) record
140
+ *
141
+ * @example
142
+ * ```typescript
143
+ * // Get all linked InvoiceItem records
144
+ * const items = await record.invoiceItems.list();
145
+ * const first = await record.invoiceItems.first();
146
+ *
147
+ * // Filter by label
148
+ * const specific = await record.invoiceItems.first({ label: 'InvoiceItem__InvoiceItem' });
149
+ * ```
150
+ */
151
+ get invoiceItems(): RecordLinkManager<InvoiceItemRecord, typeof InvoiceItemRecord['invoiceItemsLabels'][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.isInvoiceItemRecord = exports.InvoiceItemRecord = 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 InvoiceRecord_1 = require("./InvoiceRecord");
32
34
  /**
33
35
  * Builder for action execution with dryRun support
34
36
  *
@@ -139,6 +141,66 @@ class InvoiceItemRecord {
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 Invoice records
146
+ * @remarks Available labels: Invoice__InvoiceItem
147
+ * @throws Error if called on a new (unsaved) record
148
+ *
149
+ * @example
150
+ * ```typescript
151
+ * // Get all linked Invoice records
152
+ * const items = await record.invoices.list();
153
+ * const first = await record.invoices.first();
154
+ *
155
+ * // Filter by label
156
+ * const specific = await record.invoices.first({ label: 'Invoice__InvoiceItem' });
157
+ * ```
158
+ */
159
+ get invoices() {
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._invoices) {
164
+ this._invoices = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
165
+ sourceEntity: 'BillingModule:InvoiceItem',
166
+ targetEntity: 'BillingModule:Invoice',
167
+ targetModuleName: 'BillingModule',
168
+ targetEntityName: 'Invoice',
169
+ labels: ['Invoice__InvoiceItem'],
170
+ }, InvoiceRecord_1.InvoiceRecord);
171
+ }
172
+ return this._invoices;
173
+ }
174
+ /**
175
+ * Access linked InvoiceItem records
176
+ * @remarks Available labels: InvoiceItem__InvoiceItem
177
+ * @throws Error if called on a new (unsaved) record
178
+ *
179
+ * @example
180
+ * ```typescript
181
+ * // Get all linked InvoiceItem records
182
+ * const items = await record.invoiceItems.list();
183
+ * const first = await record.invoiceItems.first();
184
+ *
185
+ * // Filter by label
186
+ * const specific = await record.invoiceItems.first({ label: 'InvoiceItem__InvoiceItem' });
187
+ * ```
188
+ */
189
+ get invoiceItems() {
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._invoiceItems) {
194
+ this._invoiceItems = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
195
+ sourceEntity: 'BillingModule:InvoiceItem',
196
+ targetEntity: 'BillingModule:InvoiceItem',
197
+ targetModuleName: 'BillingModule',
198
+ targetEntityName: 'InvoiceItem',
199
+ labels: ['InvoiceItem__InvoiceItem'],
200
+ }, InvoiceItemRecord);
201
+ }
202
+ return this._invoiceItems;
203
+ }
142
204
  // ============================================
143
205
  // LINK MANAGEMENT
144
206
  // ============================================
@@ -215,6 +277,13 @@ class InvoiceItemRecord {
215
277
  }
216
278
  }
217
279
  exports.InvoiceItemRecord = InvoiceItemRecord;
280
+ // ============================================
281
+ // TYPED LINK ACCESSORS
282
+ // ============================================
283
+ /** Valid labels for Invoice associations */
284
+ InvoiceItemRecord.invoicesLabels = ['Invoice__InvoiceItem'];
285
+ /** Valid labels for InvoiceItem associations */
286
+ InvoiceItemRecord.invoiceItemsLabels = ['InvoiceItem__InvoiceItem'];
218
287
  /** Type guard to check if an object is a InvoiceItemRecord */
219
288
  function isInvoiceItemRecord(obj) {
220
289
  return obj instanceof InvoiceItemRecord;