@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,15 +13,22 @@
13
13
  * await record.createKnowledgeArticle({ ... }).execute();
14
14
  * ```
15
15
  *
16
+ * Entity Types: RELEASE_NOTE, USER_GUIDE
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 { KnowledgeArticleProperties } from '../entities-v2/KnowledgeArticle';
24
+ import { RecordLinkManager } from '@d19n/odin-sdk-generator/dist/record-link-manager';
25
+ import { KnowledgeArticleProperties, ReleaseNoteKnowledgeArticleProperties, UserGuideKnowledgeArticleProperties } from '../entities-v2/KnowledgeArticle';
23
26
  import { KnowledgeArticleReleaseNoteCreateProperties } from '../actions-v2/KnowledgeArticleReleaseNoteCreateDto';
24
27
  import { KnowledgeArticleUserGuideCreateProperties } from '../actions-v2/KnowledgeArticleUserGuideCreateDto';
28
+ import { NoteRecord } from './NoteRecord';
29
+ import { FileRecord } from './FileRecord';
30
+ /** Valid entity types for KnowledgeArticle */
31
+ export declare type KnowledgeArticleType = 'RELEASE_NOTE' | 'USER_GUIDE';
25
32
  /**
26
33
  * Builder for action execution with dryRun support
27
34
  *
@@ -85,6 +92,9 @@ export declare class KnowledgeArticleRecord<TProps = KnowledgeArticleProperties>
85
92
  private _provider;
86
93
  private _pendingLinks;
87
94
  private _preGeneratedId;
95
+ private _notes?;
96
+ private _files?;
97
+ private _knowledgeArticles?;
88
98
  /**
89
99
  * Create a record wrapper.
90
100
  * @param record - The underlying record, or null for create operations
@@ -97,7 +107,7 @@ export declare class KnowledgeArticleRecord<TProps = KnowledgeArticleProperties>
97
107
  /** Record ID - always available (pre-generated for new records) */
98
108
  get id(): string;
99
109
  get entity(): string;
100
- get type(): string | undefined;
110
+ get type(): KnowledgeArticleType | undefined;
101
111
  /** Record properties - empty object for new (unsaved) records */
102
112
  get properties(): TProps;
103
113
  get title(): string | undefined;
@@ -110,6 +120,92 @@ export declare class KnowledgeArticleRecord<TProps = KnowledgeArticleProperties>
110
120
  get groups(): string[];
111
121
  /** Access the underlying OdinRecord (null for new records) */
112
122
  get record(): OdinRecord<TProps> | null;
123
+ /**
124
+ * Type guard: check if this record is of type RELEASE_NOTE
125
+ *
126
+ * When this returns true, TypeScript automatically narrows the type,
127
+ * giving you access to RELEASE_NOTE-specific properties.
128
+ *
129
+ * @example
130
+ * ```typescript
131
+ * if (record.isReleaseNote()) {
132
+ * // TypeScript knows record.properties is ReleaseNoteKnowledgeArticleProperties
133
+ * console.log(record.properties.SomeTypeSpecificField);
134
+ * }
135
+ * ```
136
+ * @remarks Odin Release Note
137
+ */
138
+ isReleaseNote(): this is KnowledgeArticleRecord<ReleaseNoteKnowledgeArticleProperties>;
139
+ /**
140
+ * Type guard: check if this record is of type USER_GUIDE
141
+ *
142
+ * When this returns true, TypeScript automatically narrows the type,
143
+ * giving you access to USER_GUIDE-specific properties.
144
+ *
145
+ * @example
146
+ * ```typescript
147
+ * if (record.isUserGuide()) {
148
+ * // TypeScript knows record.properties is UserGuideKnowledgeArticleProperties
149
+ * console.log(record.properties.SomeTypeSpecificField);
150
+ * }
151
+ * ```
152
+ * @remarks Odin User Guide
153
+ */
154
+ isUserGuide(): this is KnowledgeArticleRecord<UserGuideKnowledgeArticleProperties>;
155
+ /** Valid labels for Note associations */
156
+ static readonly notesLabels: readonly ["KnowledgeArticle__Note"];
157
+ /**
158
+ * Access linked Note records
159
+ * @remarks Available labels: KnowledgeArticle__Note
160
+ * @throws Error if called on a new (unsaved) record
161
+ *
162
+ * @example
163
+ * ```typescript
164
+ * // Get all linked Note records
165
+ * const items = await record.notes.list();
166
+ * const first = await record.notes.first();
167
+ *
168
+ * // Filter by label
169
+ * const specific = await record.notes.first({ label: 'KnowledgeArticle__Note' });
170
+ * ```
171
+ */
172
+ get notes(): RecordLinkManager<NoteRecord, typeof KnowledgeArticleRecord['notesLabels'][number]>;
173
+ /** Valid labels for File associations */
174
+ static readonly filesLabels: readonly ["KnowledgeArticle__File"];
175
+ /**
176
+ * Access linked File records
177
+ * @remarks Available labels: KnowledgeArticle__File
178
+ * @throws Error if called on a new (unsaved) record
179
+ *
180
+ * @example
181
+ * ```typescript
182
+ * // Get all linked File records
183
+ * const items = await record.files.list();
184
+ * const first = await record.files.first();
185
+ *
186
+ * // Filter by label
187
+ * const specific = await record.files.first({ label: 'KnowledgeArticle__File' });
188
+ * ```
189
+ */
190
+ get files(): RecordLinkManager<FileRecord, typeof KnowledgeArticleRecord['filesLabels'][number]>;
191
+ /** Valid labels for KnowledgeArticle associations */
192
+ static readonly knowledgeArticlesLabels: readonly ["KnowledgeArticle__KnowledgeArticle"];
193
+ /**
194
+ * Access linked KnowledgeArticle records
195
+ * @remarks Available labels: KnowledgeArticle__KnowledgeArticle
196
+ * @throws Error if called on a new (unsaved) record
197
+ *
198
+ * @example
199
+ * ```typescript
200
+ * // Get all linked KnowledgeArticle records
201
+ * const items = await record.knowledgeArticles.list();
202
+ * const first = await record.knowledgeArticles.first();
203
+ *
204
+ * // Filter by label
205
+ * const specific = await record.knowledgeArticles.first({ label: 'KnowledgeArticle__KnowledgeArticle' });
206
+ * ```
207
+ */
208
+ get knowledgeArticles(): RecordLinkManager<KnowledgeArticleRecord, typeof KnowledgeArticleRecord['knowledgeArticlesLabels'][number]>;
113
209
  /**
114
210
  * Queue a link to be created with the next action.
115
211
  * Works for both create and update actions.
@@ -14,6 +14,8 @@
14
14
  * await record.createKnowledgeArticle({ ... }).execute();
15
15
  * ```
16
16
  *
17
+ * Entity Types: RELEASE_NOTE, USER_GUIDE
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.isKnowledgeArticleRecord = exports.KnowledgeArticleRecord = 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 FileRecord_1 = require("./FileRecord");
32
37
  /**
33
38
  * Builder for action execution with dryRun support
34
39
  *
@@ -140,6 +145,131 @@ class KnowledgeArticleRecord {
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 RELEASE_NOTE
152
+ *
153
+ * When this returns true, TypeScript automatically narrows the type,
154
+ * giving you access to RELEASE_NOTE-specific properties.
155
+ *
156
+ * @example
157
+ * ```typescript
158
+ * if (record.isReleaseNote()) {
159
+ * // TypeScript knows record.properties is ReleaseNoteKnowledgeArticleProperties
160
+ * console.log(record.properties.SomeTypeSpecificField);
161
+ * }
162
+ * ```
163
+ * @remarks Odin Release Note
164
+ */
165
+ isReleaseNote() { var _a; return ((_a = this._record) === null || _a === void 0 ? void 0 : _a.type) === 'RELEASE_NOTE'; }
166
+ /**
167
+ * Type guard: check if this record is of type USER_GUIDE
168
+ *
169
+ * When this returns true, TypeScript automatically narrows the type,
170
+ * giving you access to USER_GUIDE-specific properties.
171
+ *
172
+ * @example
173
+ * ```typescript
174
+ * if (record.isUserGuide()) {
175
+ * // TypeScript knows record.properties is UserGuideKnowledgeArticleProperties
176
+ * console.log(record.properties.SomeTypeSpecificField);
177
+ * }
178
+ * ```
179
+ * @remarks Odin User Guide
180
+ */
181
+ isUserGuide() { var _a; return ((_a = this._record) === null || _a === void 0 ? void 0 : _a.type) === 'USER_GUIDE'; }
182
+ /**
183
+ * Access linked Note records
184
+ * @remarks Available labels: KnowledgeArticle__Note
185
+ * @throws Error if called on a new (unsaved) record
186
+ *
187
+ * @example
188
+ * ```typescript
189
+ * // Get all linked Note records
190
+ * const items = await record.notes.list();
191
+ * const first = await record.notes.first();
192
+ *
193
+ * // Filter by label
194
+ * const specific = await record.notes.first({ label: 'KnowledgeArticle__Note' });
195
+ * ```
196
+ */
197
+ get notes() {
198
+ var _a;
199
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
200
+ throw new Error('Cannot access links on a new (unsaved) record');
201
+ if (!this._notes) {
202
+ this._notes = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
203
+ sourceEntity: 'SupportModule:KnowledgeArticle',
204
+ targetEntity: 'SupportModule:Note',
205
+ targetModuleName: 'SupportModule',
206
+ targetEntityName: 'Note',
207
+ labels: ['KnowledgeArticle__Note'],
208
+ }, NoteRecord_1.NoteRecord);
209
+ }
210
+ return this._notes;
211
+ }
212
+ /**
213
+ * Access linked File records
214
+ * @remarks Available labels: KnowledgeArticle__File
215
+ * @throws Error if called on a new (unsaved) record
216
+ *
217
+ * @example
218
+ * ```typescript
219
+ * // Get all linked File records
220
+ * const items = await record.files.list();
221
+ * const first = await record.files.first();
222
+ *
223
+ * // Filter by label
224
+ * const specific = await record.files.first({ label: 'KnowledgeArticle__File' });
225
+ * ```
226
+ */
227
+ get files() {
228
+ var _a;
229
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
230
+ throw new Error('Cannot access links on a new (unsaved) record');
231
+ if (!this._files) {
232
+ this._files = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
233
+ sourceEntity: 'SupportModule:KnowledgeArticle',
234
+ targetEntity: 'SchemaModule:File',
235
+ targetModuleName: 'SchemaModule',
236
+ targetEntityName: 'File',
237
+ labels: ['KnowledgeArticle__File'],
238
+ }, FileRecord_1.FileRecord);
239
+ }
240
+ return this._files;
241
+ }
242
+ /**
243
+ * Access linked KnowledgeArticle records
244
+ * @remarks Available labels: KnowledgeArticle__KnowledgeArticle
245
+ * @throws Error if called on a new (unsaved) record
246
+ *
247
+ * @example
248
+ * ```typescript
249
+ * // Get all linked KnowledgeArticle records
250
+ * const items = await record.knowledgeArticles.list();
251
+ * const first = await record.knowledgeArticles.first();
252
+ *
253
+ * // Filter by label
254
+ * const specific = await record.knowledgeArticles.first({ label: 'KnowledgeArticle__KnowledgeArticle' });
255
+ * ```
256
+ */
257
+ get knowledgeArticles() {
258
+ var _a;
259
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
260
+ throw new Error('Cannot access links on a new (unsaved) record');
261
+ if (!this._knowledgeArticles) {
262
+ this._knowledgeArticles = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
263
+ sourceEntity: 'SupportModule:KnowledgeArticle',
264
+ targetEntity: 'SupportModule:KnowledgeArticle',
265
+ targetModuleName: 'SupportModule',
266
+ targetEntityName: 'KnowledgeArticle',
267
+ labels: ['KnowledgeArticle__KnowledgeArticle'],
268
+ }, KnowledgeArticleRecord);
269
+ }
270
+ return this._knowledgeArticles;
271
+ }
272
+ // ============================================
143
273
  // LINK MANAGEMENT
144
274
  // ============================================
145
275
  /**
@@ -251,6 +381,15 @@ class KnowledgeArticleRecord {
251
381
  }
252
382
  }
253
383
  exports.KnowledgeArticleRecord = KnowledgeArticleRecord;
384
+ // ============================================
385
+ // TYPED LINK ACCESSORS
386
+ // ============================================
387
+ /** Valid labels for Note associations */
388
+ KnowledgeArticleRecord.notesLabels = ['KnowledgeArticle__Note'];
389
+ /** Valid labels for File associations */
390
+ KnowledgeArticleRecord.filesLabels = ['KnowledgeArticle__File'];
391
+ /** Valid labels for KnowledgeArticle associations */
392
+ KnowledgeArticleRecord.knowledgeArticlesLabels = ['KnowledgeArticle__KnowledgeArticle'];
254
393
  /** Type guard to check if an object is a KnowledgeArticleRecord */
255
394
  function isKnowledgeArticleRecord(obj) {
256
395
  return obj instanceof KnowledgeArticleRecord;
@@ -19,10 +19,24 @@ 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 { LeadProperties } from '../entities-v2/Lead';
23
24
  import { CreateLeadProperties } from '../actions-v2/CreateLeadDto';
24
25
  import { CreateLeadFromBrskProperties } from '../actions-v2/CreateLeadFromBrskDto';
25
26
  import { UpdateLeadProperties } from '../actions-v2/UpdateLeadDto';
27
+ import { NoteRecord } from './NoteRecord';
28
+ import { CallRecord } from './CallRecord';
29
+ import { OfferRecord } from './OfferRecord';
30
+ import { DiscountRecord } from './DiscountRecord';
31
+ import { ProductRecord } from './ProductRecord';
32
+ import { ContactRecord } from './ContactRecord';
33
+ import { OrderRecord } from './OrderRecord';
34
+ import { FileRecord } from './FileRecord';
35
+ import { WorkOrderRecord } from './WorkOrderRecord';
36
+ import { CrmDatasetRecord } from './CrmDatasetRecord';
37
+ import { VisitRecord } from './VisitRecord';
38
+ import { AddressRecord } from './AddressRecord';
39
+ import { AppointmentRecord } from './AppointmentRecord';
26
40
  /**
27
41
  * Builder for action execution with dryRun support
28
42
  *
@@ -86,6 +100,19 @@ export declare class LeadRecord<TProps = LeadProperties> {
86
100
  private _provider;
87
101
  private _pendingLinks;
88
102
  private _preGeneratedId;
103
+ private _notes?;
104
+ private _calls?;
105
+ private _offers?;
106
+ private _discounts?;
107
+ private _products?;
108
+ private _contacts?;
109
+ private _orders?;
110
+ private _files?;
111
+ private _workOrders?;
112
+ private _crmDatasets?;
113
+ private _visits?;
114
+ private _addresses?;
115
+ private _appointments?;
89
116
  /**
90
117
  * Create a record wrapper.
91
118
  * @param record - The underlying record, or null for create operations
@@ -111,6 +138,240 @@ export declare class LeadRecord<TProps = LeadProperties> {
111
138
  get groups(): string[];
112
139
  /** Access the underlying OdinRecord (null for new records) */
113
140
  get record(): OdinRecord<TProps> | null;
141
+ /** Valid labels for Note associations */
142
+ static readonly notesLabels: readonly ["Lead__Note"];
143
+ /**
144
+ * Access linked Note records
145
+ * @remarks Available labels: Lead__Note
146
+ * @throws Error if called on a new (unsaved) record
147
+ *
148
+ * @example
149
+ * ```typescript
150
+ * // Get all linked Note records
151
+ * const items = await record.notes.list();
152
+ * const first = await record.notes.first();
153
+ *
154
+ * // Filter by label
155
+ * const specific = await record.notes.first({ label: 'Lead__Note' });
156
+ * ```
157
+ */
158
+ get notes(): RecordLinkManager<NoteRecord, typeof LeadRecord['notesLabels'][number]>;
159
+ /** Valid labels for Call associations */
160
+ static readonly callsLabels: readonly ["Call__Lead"];
161
+ /**
162
+ * Access linked Call records
163
+ * @remarks Available labels: Call__Lead
164
+ * @throws Error if called on a new (unsaved) record
165
+ *
166
+ * @example
167
+ * ```typescript
168
+ * // Get all linked Call records
169
+ * const items = await record.calls.list();
170
+ * const first = await record.calls.first();
171
+ *
172
+ * // Filter by label
173
+ * const specific = await record.calls.first({ label: 'Call__Lead' });
174
+ * ```
175
+ */
176
+ get calls(): RecordLinkManager<CallRecord, typeof LeadRecord['callsLabels'][number]>;
177
+ /** Valid labels for Offer associations */
178
+ static readonly offersLabels: readonly ["Lead__Offer"];
179
+ /**
180
+ * Access linked Offer records
181
+ * @remarks Available labels: Lead__Offer
182
+ * @throws Error if called on a new (unsaved) record
183
+ *
184
+ * @example
185
+ * ```typescript
186
+ * // Get all linked Offer records
187
+ * const items = await record.offers.list();
188
+ * const first = await record.offers.first();
189
+ *
190
+ * // Filter by label
191
+ * const specific = await record.offers.first({ label: 'Lead__Offer' });
192
+ * ```
193
+ */
194
+ get offers(): RecordLinkManager<OfferRecord, typeof LeadRecord['offersLabels'][number]>;
195
+ /** Valid labels for Discount associations */
196
+ static readonly discountsLabels: readonly ["Lead__Discount"];
197
+ /**
198
+ * Access linked Discount records
199
+ * @remarks Available labels: Lead__Discount
200
+ * @throws Error if called on a new (unsaved) record
201
+ *
202
+ * @example
203
+ * ```typescript
204
+ * // Get all linked Discount records
205
+ * const items = await record.discounts.list();
206
+ * const first = await record.discounts.first();
207
+ *
208
+ * // Filter by label
209
+ * const specific = await record.discounts.first({ label: 'Lead__Discount' });
210
+ * ```
211
+ */
212
+ get discounts(): RecordLinkManager<DiscountRecord, typeof LeadRecord['discountsLabels'][number]>;
213
+ /** Valid labels for Product associations */
214
+ static readonly productsLabels: readonly ["Lead__Product"];
215
+ /**
216
+ * Access linked Product records
217
+ * @remarks Available labels: Lead__Product
218
+ * @throws Error if called on a new (unsaved) record
219
+ *
220
+ * @example
221
+ * ```typescript
222
+ * // Get all linked Product records
223
+ * const items = await record.products.list();
224
+ * const first = await record.products.first();
225
+ *
226
+ * // Filter by label
227
+ * const specific = await record.products.first({ label: 'Lead__Product' });
228
+ * ```
229
+ */
230
+ get products(): RecordLinkManager<ProductRecord, typeof LeadRecord['productsLabels'][number]>;
231
+ /** Valid labels for Contact associations */
232
+ static readonly contactsLabels: readonly ["Lead__Contact"];
233
+ /**
234
+ * Access linked Contact records
235
+ * @remarks Available labels: Lead__Contact
236
+ * @throws Error if called on a new (unsaved) record
237
+ *
238
+ * @example
239
+ * ```typescript
240
+ * // Get all linked Contact records
241
+ * const items = await record.contacts.list();
242
+ * const first = await record.contacts.first();
243
+ *
244
+ * // Filter by label
245
+ * const specific = await record.contacts.first({ label: 'Lead__Contact' });
246
+ * ```
247
+ */
248
+ get contacts(): RecordLinkManager<ContactRecord, typeof LeadRecord['contactsLabels'][number]>;
249
+ /** Valid labels for Order associations */
250
+ static readonly ordersLabels: readonly ["Lead_Order"];
251
+ /**
252
+ * Access linked Order records
253
+ * @remarks Available labels: Lead_Order
254
+ * @throws Error if called on a new (unsaved) record
255
+ *
256
+ * @example
257
+ * ```typescript
258
+ * // Get all linked Order records
259
+ * const items = await record.orders.list();
260
+ * const first = await record.orders.first();
261
+ *
262
+ * // Filter by label
263
+ * const specific = await record.orders.first({ label: 'Lead_Order' });
264
+ * ```
265
+ */
266
+ get orders(): RecordLinkManager<OrderRecord, typeof LeadRecord['ordersLabels'][number]>;
267
+ /** Valid labels for File associations */
268
+ static readonly filesLabels: readonly ["Lead__File"];
269
+ /**
270
+ * Access linked File records
271
+ * @remarks Available labels: Lead__File
272
+ * @throws Error if called on a new (unsaved) record
273
+ *
274
+ * @example
275
+ * ```typescript
276
+ * // Get all linked File records
277
+ * const items = await record.files.list();
278
+ * const first = await record.files.first();
279
+ *
280
+ * // Filter by label
281
+ * const specific = await record.files.first({ label: 'Lead__File' });
282
+ * ```
283
+ */
284
+ get files(): RecordLinkManager<FileRecord, typeof LeadRecord['filesLabels'][number]>;
285
+ /** Valid labels for WorkOrder associations */
286
+ static readonly workOrdersLabels: readonly ["WorkOrder__Lead"];
287
+ /**
288
+ * Access linked WorkOrder records
289
+ * @remarks Available labels: WorkOrder__Lead
290
+ * @throws Error if called on a new (unsaved) record
291
+ *
292
+ * @example
293
+ * ```typescript
294
+ * // Get all linked WorkOrder records
295
+ * const items = await record.workOrders.list();
296
+ * const first = await record.workOrders.first();
297
+ *
298
+ * // Filter by label
299
+ * const specific = await record.workOrders.first({ label: 'WorkOrder__Lead' });
300
+ * ```
301
+ */
302
+ get workOrders(): RecordLinkManager<WorkOrderRecord, typeof LeadRecord['workOrdersLabels'][number]>;
303
+ /** Valid labels for CrmDataset associations */
304
+ static readonly crmDatasetsLabels: readonly ["CrmDataset__Lead"];
305
+ /**
306
+ * Access linked CrmDataset records
307
+ * @remarks Available labels: CrmDataset__Lead
308
+ * @throws Error if called on a new (unsaved) record
309
+ *
310
+ * @example
311
+ * ```typescript
312
+ * // Get all linked CrmDataset records
313
+ * const items = await record.crmDatasets.list();
314
+ * const first = await record.crmDatasets.first();
315
+ *
316
+ * // Filter by label
317
+ * const specific = await record.crmDatasets.first({ label: 'CrmDataset__Lead' });
318
+ * ```
319
+ */
320
+ get crmDatasets(): RecordLinkManager<CrmDatasetRecord, typeof LeadRecord['crmDatasetsLabels'][number]>;
321
+ /** Valid labels for Visit associations */
322
+ static readonly visitsLabels: readonly ["Lead__Visit"];
323
+ /**
324
+ * Access linked Visit records
325
+ * @remarks Available labels: Lead__Visit
326
+ * @throws Error if called on a new (unsaved) record
327
+ *
328
+ * @example
329
+ * ```typescript
330
+ * // Get all linked Visit records
331
+ * const items = await record.visits.list();
332
+ * const first = await record.visits.first();
333
+ *
334
+ * // Filter by label
335
+ * const specific = await record.visits.first({ label: 'Lead__Visit' });
336
+ * ```
337
+ */
338
+ get visits(): RecordLinkManager<VisitRecord, typeof LeadRecord['visitsLabels'][number]>;
339
+ /** Valid labels for Address associations */
340
+ static readonly addressesLabels: readonly ["Lead_Address"];
341
+ /**
342
+ * Access linked Address records
343
+ * @remarks Available labels: Lead_Address
344
+ * @throws Error if called on a new (unsaved) record
345
+ *
346
+ * @example
347
+ * ```typescript
348
+ * // Get all linked Address records
349
+ * const items = await record.addresses.list();
350
+ * const first = await record.addresses.first();
351
+ *
352
+ * // Filter by label
353
+ * const specific = await record.addresses.first({ label: 'Lead_Address' });
354
+ * ```
355
+ */
356
+ get addresses(): RecordLinkManager<AddressRecord, typeof LeadRecord['addressesLabels'][number]>;
357
+ /** Valid labels for Appointment associations */
358
+ static readonly appointmentsLabels: readonly ["Lead_Appointment"];
359
+ /**
360
+ * Access linked Appointment records
361
+ * @remarks Available labels: Lead_Appointment
362
+ * @throws Error if called on a new (unsaved) record
363
+ *
364
+ * @example
365
+ * ```typescript
366
+ * // Get all linked Appointment records
367
+ * const items = await record.appointments.list();
368
+ * const first = await record.appointments.first();
369
+ *
370
+ * // Filter by label
371
+ * const specific = await record.appointments.first({ label: 'Lead_Appointment' });
372
+ * ```
373
+ */
374
+ get appointments(): RecordLinkManager<AppointmentRecord, typeof LeadRecord['appointmentsLabels'][number]>;
114
375
  /**
115
376
  * Queue a link to be created with the next action.
116
377
  * Works for both create and update actions.