@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,24 @@
13
13
  * await record.createOffer({ ... }).execute();
14
14
  * ```
15
15
  *
16
+ * Entity Types: DEFAULT, RECONTRACT, STANDARD
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 { OfferProperties } from '../entities-v2/Offer';
24
+ import { RecordLinkManager } from '@d19n/odin-sdk-generator/dist/record-link-manager';
25
+ import { OfferProperties, RecontractOfferProperties, StandardOfferProperties } from '../entities-v2/Offer';
23
26
  import { OfferCreateProperties } from '../actions-v2/OfferCreateDto';
24
27
  import { OfferUpdateProperties } from '../actions-v2/OfferUpdateDto';
28
+ import { LeadRecord } from './LeadRecord';
29
+ import { DiscountRecord } from './DiscountRecord';
30
+ import { ProductRecord } from './ProductRecord';
31
+ import { OrderItemRecord } from './OrderItemRecord';
32
+ /** Valid entity types for Offer */
33
+ export declare type OfferType = 'DEFAULT' | 'RECONTRACT' | 'STANDARD';
25
34
  /**
26
35
  * Builder for action execution with dryRun support
27
36
  *
@@ -85,6 +94,11 @@ export declare class OfferRecord<TProps = OfferProperties> {
85
94
  private _provider;
86
95
  private _pendingLinks;
87
96
  private _preGeneratedId;
97
+ private _leads?;
98
+ private _discounts?;
99
+ private _products?;
100
+ private _offers?;
101
+ private _orderItems?;
88
102
  /**
89
103
  * Create a record wrapper.
90
104
  * @param record - The underlying record, or null for create operations
@@ -97,7 +111,7 @@ export declare class OfferRecord<TProps = OfferProperties> {
97
111
  /** Record ID - always available (pre-generated for new records) */
98
112
  get id(): string;
99
113
  get entity(): string;
100
- get type(): string | undefined;
114
+ get type(): OfferType | undefined;
101
115
  /** Record properties - empty object for new (unsaved) records */
102
116
  get properties(): TProps;
103
117
  get title(): string | undefined;
@@ -110,6 +124,144 @@ export declare class OfferRecord<TProps = OfferProperties> {
110
124
  get groups(): string[];
111
125
  /** Access the underlying OdinRecord (null for new records) */
112
126
  get record(): OdinRecord<TProps> | null;
127
+ /**
128
+ * Type guard: check if this record is of type DEFAULT
129
+ *
130
+ * When this returns true, TypeScript automatically narrows the type,
131
+ * giving you access to DEFAULT-specific properties.
132
+ *
133
+ * @example
134
+ * ```typescript
135
+ * if (record.isDefault()) {
136
+ * // TypeScript knows record.properties is OfferProperties
137
+ * console.log(record.properties.SomeTypeSpecificField);
138
+ * }
139
+ * ```
140
+ * @remarks This is the default record type
141
+ */
142
+ isDefault(): this is OfferRecord<OfferProperties>;
143
+ /**
144
+ * Type guard: check if this record is of type RECONTRACT
145
+ *
146
+ * When this returns true, TypeScript automatically narrows the type,
147
+ * giving you access to RECONTRACT-specific properties.
148
+ *
149
+ * @example
150
+ * ```typescript
151
+ * if (record.isRecontract()) {
152
+ * // TypeScript knows record.properties is RecontractOfferProperties
153
+ * console.log(record.properties.SomeTypeSpecificField);
154
+ * }
155
+ * ```
156
+ * @remarks RECONTRACT
157
+ */
158
+ isRecontract(): this is OfferRecord<RecontractOfferProperties>;
159
+ /**
160
+ * Type guard: check if this record is of type STANDARD
161
+ *
162
+ * When this returns true, TypeScript automatically narrows the type,
163
+ * giving you access to STANDARD-specific properties.
164
+ *
165
+ * @example
166
+ * ```typescript
167
+ * if (record.isStandard()) {
168
+ * // TypeScript knows record.properties is StandardOfferProperties
169
+ * console.log(record.properties.SomeTypeSpecificField);
170
+ * }
171
+ * ```
172
+ * @remarks STANDARD
173
+ */
174
+ isStandard(): this is OfferRecord<StandardOfferProperties>;
175
+ /** Valid labels for Lead associations */
176
+ static readonly leadsLabels: readonly ["Lead__Offer"];
177
+ /**
178
+ * Access linked Lead records
179
+ * @remarks Available labels: Lead__Offer
180
+ * @throws Error if called on a new (unsaved) record
181
+ *
182
+ * @example
183
+ * ```typescript
184
+ * // Get all linked Lead records
185
+ * const items = await record.leads.list();
186
+ * const first = await record.leads.first();
187
+ *
188
+ * // Filter by label
189
+ * const specific = await record.leads.first({ label: 'Lead__Offer' });
190
+ * ```
191
+ */
192
+ get leads(): RecordLinkManager<LeadRecord, typeof OfferRecord['leadsLabels'][number]>;
193
+ /** Valid labels for Discount associations */
194
+ static readonly discountsLabels: readonly ["Offer__Discount"];
195
+ /**
196
+ * Access linked Discount records
197
+ * @remarks Available labels: Offer__Discount
198
+ * @throws Error if called on a new (unsaved) record
199
+ *
200
+ * @example
201
+ * ```typescript
202
+ * // Get all linked Discount records
203
+ * const items = await record.discounts.list();
204
+ * const first = await record.discounts.first();
205
+ *
206
+ * // Filter by label
207
+ * const specific = await record.discounts.first({ label: 'Offer__Discount' });
208
+ * ```
209
+ */
210
+ get discounts(): RecordLinkManager<DiscountRecord, typeof OfferRecord['discountsLabels'][number]>;
211
+ /** Valid labels for Product associations */
212
+ static readonly productsLabels: readonly ["Offer__Product"];
213
+ /**
214
+ * Access linked Product records
215
+ * @remarks Available labels: Offer__Product
216
+ * @throws Error if called on a new (unsaved) record
217
+ *
218
+ * @example
219
+ * ```typescript
220
+ * // Get all linked Product records
221
+ * const items = await record.products.list();
222
+ * const first = await record.products.first();
223
+ *
224
+ * // Filter by label
225
+ * const specific = await record.products.first({ label: 'Offer__Product' });
226
+ * ```
227
+ */
228
+ get products(): RecordLinkManager<ProductRecord, typeof OfferRecord['productsLabels'][number]>;
229
+ /** Valid labels for Offer associations */
230
+ static readonly offersLabels: readonly ["Offer__Offer"];
231
+ /**
232
+ * Access linked Offer records
233
+ * @remarks Available labels: Offer__Offer
234
+ * @throws Error if called on a new (unsaved) record
235
+ *
236
+ * @example
237
+ * ```typescript
238
+ * // Get all linked Offer records
239
+ * const items = await record.offers.list();
240
+ * const first = await record.offers.first();
241
+ *
242
+ * // Filter by label
243
+ * const specific = await record.offers.first({ label: 'Offer__Offer' });
244
+ * ```
245
+ */
246
+ get offers(): RecordLinkManager<OfferRecord, typeof OfferRecord['offersLabels'][number]>;
247
+ /** Valid labels for OrderItem associations */
248
+ static readonly orderItemsLabels: readonly ["OrderItem__Offer"];
249
+ /**
250
+ * Access linked OrderItem records
251
+ * @remarks Available labels: OrderItem__Offer
252
+ * @throws Error if called on a new (unsaved) record
253
+ *
254
+ * @example
255
+ * ```typescript
256
+ * // Get all linked OrderItem records
257
+ * const items = await record.orderItems.list();
258
+ * const first = await record.orderItems.first();
259
+ *
260
+ * // Filter by label
261
+ * const specific = await record.orderItems.first({ label: 'OrderItem__Offer' });
262
+ * ```
263
+ */
264
+ get orderItems(): RecordLinkManager<OrderItemRecord, typeof OfferRecord['orderItemsLabels'][number]>;
113
265
  /**
114
266
  * Queue a link to be created with the next action.
115
267
  * Works for both create and update actions.
@@ -14,6 +14,8 @@
14
14
  * await record.createOffer({ ... }).execute();
15
15
  * ```
16
16
  *
17
+ * Entity Types: DEFAULT, RECONTRACT, STANDARD
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,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
29
31
  exports.isOfferRecord = exports.OfferRecord = 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 LeadRecord_1 = require("./LeadRecord");
36
+ const DiscountRecord_1 = require("./DiscountRecord");
37
+ const ProductRecord_1 = require("./ProductRecord");
38
+ const OrderItemRecord_1 = require("./OrderItemRecord");
32
39
  /**
33
40
  * Builder for action execution with dryRun support
34
41
  *
@@ -140,6 +147,207 @@ class OfferRecord {
140
147
  /** Access the underlying OdinRecord (null for new records) */
141
148
  get record() { return this._record; }
142
149
  // ============================================
150
+ // TYPE GUARDS (with TypeScript type predicates)
151
+ // ============================================
152
+ /**
153
+ * Type guard: check if this record is of type DEFAULT
154
+ *
155
+ * When this returns true, TypeScript automatically narrows the type,
156
+ * giving you access to DEFAULT-specific properties.
157
+ *
158
+ * @example
159
+ * ```typescript
160
+ * if (record.isDefault()) {
161
+ * // TypeScript knows record.properties is OfferProperties
162
+ * console.log(record.properties.SomeTypeSpecificField);
163
+ * }
164
+ * ```
165
+ * @remarks This is the default record type
166
+ */
167
+ isDefault() { var _a; return ((_a = this._record) === null || _a === void 0 ? void 0 : _a.type) === 'DEFAULT'; }
168
+ /**
169
+ * Type guard: check if this record is of type RECONTRACT
170
+ *
171
+ * When this returns true, TypeScript automatically narrows the type,
172
+ * giving you access to RECONTRACT-specific properties.
173
+ *
174
+ * @example
175
+ * ```typescript
176
+ * if (record.isRecontract()) {
177
+ * // TypeScript knows record.properties is RecontractOfferProperties
178
+ * console.log(record.properties.SomeTypeSpecificField);
179
+ * }
180
+ * ```
181
+ * @remarks RECONTRACT
182
+ */
183
+ isRecontract() { var _a; return ((_a = this._record) === null || _a === void 0 ? void 0 : _a.type) === 'RECONTRACT'; }
184
+ /**
185
+ * Type guard: check if this record is of type STANDARD
186
+ *
187
+ * When this returns true, TypeScript automatically narrows the type,
188
+ * giving you access to STANDARD-specific properties.
189
+ *
190
+ * @example
191
+ * ```typescript
192
+ * if (record.isStandard()) {
193
+ * // TypeScript knows record.properties is StandardOfferProperties
194
+ * console.log(record.properties.SomeTypeSpecificField);
195
+ * }
196
+ * ```
197
+ * @remarks STANDARD
198
+ */
199
+ isStandard() { var _a; return ((_a = this._record) === null || _a === void 0 ? void 0 : _a.type) === 'STANDARD'; }
200
+ /**
201
+ * Access linked Lead records
202
+ * @remarks Available labels: Lead__Offer
203
+ * @throws Error if called on a new (unsaved) record
204
+ *
205
+ * @example
206
+ * ```typescript
207
+ * // Get all linked Lead records
208
+ * const items = await record.leads.list();
209
+ * const first = await record.leads.first();
210
+ *
211
+ * // Filter by label
212
+ * const specific = await record.leads.first({ label: 'Lead__Offer' });
213
+ * ```
214
+ */
215
+ get leads() {
216
+ var _a;
217
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
218
+ throw new Error('Cannot access links on a new (unsaved) record');
219
+ if (!this._leads) {
220
+ this._leads = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
221
+ sourceEntity: 'ProductModule:Offer',
222
+ targetEntity: 'CrmModule:Lead',
223
+ targetModuleName: 'CrmModule',
224
+ targetEntityName: 'Lead',
225
+ labels: ['Lead__Offer'],
226
+ }, LeadRecord_1.LeadRecord);
227
+ }
228
+ return this._leads;
229
+ }
230
+ /**
231
+ * Access linked Discount records
232
+ * @remarks Available labels: Offer__Discount
233
+ * @throws Error if called on a new (unsaved) record
234
+ *
235
+ * @example
236
+ * ```typescript
237
+ * // Get all linked Discount records
238
+ * const items = await record.discounts.list();
239
+ * const first = await record.discounts.first();
240
+ *
241
+ * // Filter by label
242
+ * const specific = await record.discounts.first({ label: 'Offer__Discount' });
243
+ * ```
244
+ */
245
+ get discounts() {
246
+ var _a;
247
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
248
+ throw new Error('Cannot access links on a new (unsaved) record');
249
+ if (!this._discounts) {
250
+ this._discounts = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
251
+ sourceEntity: 'ProductModule:Offer',
252
+ targetEntity: 'ProductModule:Discount',
253
+ targetModuleName: 'ProductModule',
254
+ targetEntityName: 'Discount',
255
+ labels: ['Offer__Discount'],
256
+ }, DiscountRecord_1.DiscountRecord);
257
+ }
258
+ return this._discounts;
259
+ }
260
+ /**
261
+ * Access linked Product records
262
+ * @remarks Available labels: Offer__Product
263
+ * @throws Error if called on a new (unsaved) record
264
+ *
265
+ * @example
266
+ * ```typescript
267
+ * // Get all linked Product records
268
+ * const items = await record.products.list();
269
+ * const first = await record.products.first();
270
+ *
271
+ * // Filter by label
272
+ * const specific = await record.products.first({ label: 'Offer__Product' });
273
+ * ```
274
+ */
275
+ get products() {
276
+ var _a;
277
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
278
+ throw new Error('Cannot access links on a new (unsaved) record');
279
+ if (!this._products) {
280
+ this._products = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
281
+ sourceEntity: 'ProductModule:Offer',
282
+ targetEntity: 'ProductModule:Product',
283
+ targetModuleName: 'ProductModule',
284
+ targetEntityName: 'Product',
285
+ labels: ['Offer__Product'],
286
+ }, ProductRecord_1.ProductRecord);
287
+ }
288
+ return this._products;
289
+ }
290
+ /**
291
+ * Access linked Offer records
292
+ * @remarks Available labels: Offer__Offer
293
+ * @throws Error if called on a new (unsaved) record
294
+ *
295
+ * @example
296
+ * ```typescript
297
+ * // Get all linked Offer records
298
+ * const items = await record.offers.list();
299
+ * const first = await record.offers.first();
300
+ *
301
+ * // Filter by label
302
+ * const specific = await record.offers.first({ label: 'Offer__Offer' });
303
+ * ```
304
+ */
305
+ get offers() {
306
+ var _a;
307
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
308
+ throw new Error('Cannot access links on a new (unsaved) record');
309
+ if (!this._offers) {
310
+ this._offers = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
311
+ sourceEntity: 'ProductModule:Offer',
312
+ targetEntity: 'ProductModule:Offer',
313
+ targetModuleName: 'ProductModule',
314
+ targetEntityName: 'Offer',
315
+ labels: ['Offer__Offer'],
316
+ }, OfferRecord);
317
+ }
318
+ return this._offers;
319
+ }
320
+ /**
321
+ * Access linked OrderItem records
322
+ * @remarks Available labels: OrderItem__Offer
323
+ * @throws Error if called on a new (unsaved) record
324
+ *
325
+ * @example
326
+ * ```typescript
327
+ * // Get all linked OrderItem records
328
+ * const items = await record.orderItems.list();
329
+ * const first = await record.orderItems.first();
330
+ *
331
+ * // Filter by label
332
+ * const specific = await record.orderItems.first({ label: 'OrderItem__Offer' });
333
+ * ```
334
+ */
335
+ get orderItems() {
336
+ var _a;
337
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
338
+ throw new Error('Cannot access links on a new (unsaved) record');
339
+ if (!this._orderItems) {
340
+ this._orderItems = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
341
+ sourceEntity: 'ProductModule:Offer',
342
+ targetEntity: 'OrderModule:OrderItem',
343
+ targetModuleName: 'OrderModule',
344
+ targetEntityName: 'OrderItem',
345
+ labels: ['OrderItem__Offer'],
346
+ }, OrderItemRecord_1.OrderItemRecord);
347
+ }
348
+ return this._orderItems;
349
+ }
350
+ // ============================================
143
351
  // LINK MANAGEMENT
144
352
  // ============================================
145
353
  /**
@@ -247,6 +455,19 @@ class OfferRecord {
247
455
  }
248
456
  }
249
457
  exports.OfferRecord = OfferRecord;
458
+ // ============================================
459
+ // TYPED LINK ACCESSORS
460
+ // ============================================
461
+ /** Valid labels for Lead associations */
462
+ OfferRecord.leadsLabels = ['Lead__Offer'];
463
+ /** Valid labels for Discount associations */
464
+ OfferRecord.discountsLabels = ['Offer__Discount'];
465
+ /** Valid labels for Product associations */
466
+ OfferRecord.productsLabels = ['Offer__Product'];
467
+ /** Valid labels for Offer associations */
468
+ OfferRecord.offersLabels = ['Offer__Offer'];
469
+ /** Valid labels for OrderItem associations */
470
+ OfferRecord.orderItemsLabels = ['OrderItem__Offer'];
250
471
  /** Type guard to check if an object is a OfferRecord */
251
472
  function isOfferRecord(obj) {
252
473
  return obj instanceof OfferRecord;
@@ -13,14 +13,22 @@
13
13
  * await record.createOhAuditOfInstallation({ ... }).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 { OhAuditOfInstallationProperties } from '../entities-v2/OhAuditOfInstallation';
24
+ import { RecordLinkManager } from '@d19n/odin-sdk-generator/dist/record-link-manager';
25
+ import { OhAuditOfInstallationProperties, OutcomeFormOhAuditOfInstallationProperties } from '../entities-v2/OhAuditOfInstallation';
23
26
  import { OhAuditOfInstallationCreateProperties } from '../actions-v2/CompleteInstallWorkOrderFlowDto';
27
+ import { NoteRecord } from './NoteRecord';
28
+ import { WorkOrderRecord } from './WorkOrderRecord';
29
+ import { FileRecord } from './FileRecord';
30
+ /** Valid entity types for OhAuditOfInstallation */
31
+ export declare type OhAuditOfInstallationType = 'OUTCOME_FORM';
24
32
  /**
25
33
  * Builder for action execution with dryRun support
26
34
  *
@@ -84,6 +92,9 @@ export declare class OhAuditOfInstallationRecord<TProps = OhAuditOfInstallationP
84
92
  private _provider;
85
93
  private _pendingLinks;
86
94
  private _preGeneratedId;
95
+ private _notes?;
96
+ private _workOrders?;
97
+ private _files?;
87
98
  /**
88
99
  * Create a record wrapper.
89
100
  * @param record - The underlying record, or null for create operations
@@ -96,7 +107,7 @@ export declare class OhAuditOfInstallationRecord<TProps = OhAuditOfInstallationP
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(): OhAuditOfInstallationType | 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 OhAuditOfInstallationRecord<TProps = OhAuditOfInstallationP
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 OutcomeFormOhAuditOfInstallationProperties
133
+ * console.log(record.properties.SomeTypeSpecificField);
134
+ * }
135
+ * ```
136
+ * @remarks outcome form
137
+ */
138
+ isOutcomeForm(): this is OhAuditOfInstallationRecord<OutcomeFormOhAuditOfInstallationProperties>;
139
+ /** Valid labels for Note associations */
140
+ static readonly notesLabels: readonly ["OhAuditOfInstallation__Note"];
141
+ /**
142
+ * Access linked Note records
143
+ * @remarks Available labels: OhAuditOfInstallation__Note
144
+ * @throws Error if called on a new (unsaved) record
145
+ *
146
+ * @example
147
+ * ```typescript
148
+ * // Get all linked Note records
149
+ * const items = await record.notes.list();
150
+ * const first = await record.notes.first();
151
+ *
152
+ * // Filter by label
153
+ * const specific = await record.notes.first({ label: 'OhAuditOfInstallation__Note' });
154
+ * ```
155
+ */
156
+ get notes(): RecordLinkManager<NoteRecord, typeof OhAuditOfInstallationRecord['notesLabels'][number]>;
157
+ /** Valid labels for WorkOrder associations */
158
+ static readonly workOrdersLabels: readonly ["WorkOrder_OhAuditOfInstallation"];
159
+ /**
160
+ * Access linked WorkOrder records
161
+ * @remarks Available labels: WorkOrder_OhAuditOfInstallation
162
+ * @throws Error if called on a new (unsaved) record
163
+ *
164
+ * @example
165
+ * ```typescript
166
+ * // Get all linked WorkOrder records
167
+ * const items = await record.workOrders.list();
168
+ * const first = await record.workOrders.first();
169
+ *
170
+ * // Filter by label
171
+ * const specific = await record.workOrders.first({ label: 'WorkOrder_OhAuditOfInstallation' });
172
+ * ```
173
+ */
174
+ get workOrders(): RecordLinkManager<WorkOrderRecord, typeof OhAuditOfInstallationRecord['workOrdersLabels'][number]>;
175
+ /** Valid labels for File associations */
176
+ static readonly filesLabels: readonly ["OhAuditOfInstallation__File"];
177
+ /**
178
+ * Access linked File records
179
+ * @remarks Available labels: OhAuditOfInstallation__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: 'OhAuditOfInstallation__File' });
190
+ * ```
191
+ */
192
+ get files(): RecordLinkManager<FileRecord, typeof OhAuditOfInstallationRecord['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.