wiil-core-js 0.0.82

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 (261) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +174 -0
  3. package/dist/core/account/index.d.ts +7 -0
  4. package/dist/core/account/index.js +23 -0
  5. package/dist/core/account/organization.schema.d.ts +118 -0
  6. package/dist/core/account/organization.schema.js +91 -0
  7. package/dist/core/account/project.schema.d.ts +121 -0
  8. package/dist/core/account/project.schema.js +102 -0
  9. package/dist/core/account/supported-business-verticals.d.ts +8 -0
  10. package/dist/core/account/supported-business-verticals.js +23 -0
  11. package/dist/core/assistant-setups/assistant-setup-result.schema.d.ts +115 -0
  12. package/dist/core/assistant-setups/assistant-setup-result.schema.js +17 -0
  13. package/dist/core/assistant-setups/base-assistant-setup.schema.d.ts +61 -0
  14. package/dist/core/assistant-setups/base-assistant-setup.schema.js +29 -0
  15. package/dist/core/assistant-setups/index.d.ts +4 -0
  16. package/dist/core/assistant-setups/index.js +21 -0
  17. package/dist/core/assistant-setups/phone-assistant-setup.schema.d.ts +63 -0
  18. package/dist/core/assistant-setups/phone-assistant-setup.schema.js +14 -0
  19. package/dist/core/assistant-setups/web-assitant-setup.schema.d.ts +56 -0
  20. package/dist/core/assistant-setups/web-assitant-setup.schema.js +17 -0
  21. package/dist/core/base.schema.d.ts +34 -0
  22. package/dist/core/base.schema.js +36 -0
  23. package/dist/core/business-mgt/appointment-additional-info.schema.d.ts +63 -0
  24. package/dist/core/business-mgt/appointment-additional-info.schema.js +53 -0
  25. package/dist/core/business-mgt/appointment-field-config.schema.d.ts +251 -0
  26. package/dist/core/business-mgt/appointment-field-config.schema.js +49 -0
  27. package/dist/core/business-mgt/bookings.shared.schema.d.ts +47 -0
  28. package/dist/core/business-mgt/bookings.shared.schema.js +60 -0
  29. package/dist/core/business-mgt/business-location.schema.d.ts +327 -0
  30. package/dist/core/business-mgt/business-location.schema.js +176 -0
  31. package/dist/core/business-mgt/customer-management/customer-group.schema.d.ts +87 -0
  32. package/dist/core/business-mgt/customer-management/customer-group.schema.js +53 -0
  33. package/dist/core/business-mgt/customer-management/customer.schema.d.ts +156 -0
  34. package/dist/core/business-mgt/customer-management/customer.schema.js +93 -0
  35. package/dist/core/business-mgt/customer-management/index.d.ts +7 -0
  36. package/dist/core/business-mgt/customer-management/index.js +23 -0
  37. package/dist/core/business-mgt/customer-management/shipping-address.schema.d.ts +112 -0
  38. package/dist/core/business-mgt/customer-management/shipping-address.schema.js +79 -0
  39. package/dist/core/business-mgt/customer.schema.d.ts +111 -0
  40. package/dist/core/business-mgt/customer.schema.js +73 -0
  41. package/dist/core/business-mgt/discount-rule.schema.d.ts +183 -0
  42. package/dist/core/business-mgt/discount-rule.schema.js +108 -0
  43. package/dist/core/business-mgt/index.d.ts +16 -0
  44. package/dist/core/business-mgt/index.js +38 -0
  45. package/dist/core/business-mgt/menu-config.schema.d.ts +165 -0
  46. package/dist/core/business-mgt/menu-config.schema.js +86 -0
  47. package/dist/core/business-mgt/menu-management/index.d.ts +11 -0
  48. package/dist/core/business-mgt/menu-management/index.js +27 -0
  49. package/dist/core/business-mgt/menu-management/menu-catalog.schema.d.ts +386 -0
  50. package/dist/core/business-mgt/menu-management/menu-catalog.schema.js +58 -0
  51. package/dist/core/business-mgt/menu-management/menu-config.schema.d.ts +301 -0
  52. package/dist/core/business-mgt/menu-management/menu-config.schema.js +169 -0
  53. package/dist/core/business-mgt/menu-management/menu-item-variant.schema.d.ts +143 -0
  54. package/dist/core/business-mgt/menu-management/menu-item-variant.schema.js +86 -0
  55. package/dist/core/business-mgt/menu-management/menu-pricing-rule.schema.d.ts +239 -0
  56. package/dist/core/business-mgt/menu-management/menu-pricing-rule.schema.js +117 -0
  57. package/dist/core/business-mgt/menu-management/menu-set.schema.d.ts +420 -0
  58. package/dist/core/business-mgt/menu-management/menu-set.schema.js +283 -0
  59. package/dist/core/business-mgt/menu-management/menu.order.schema.d.ts +654 -0
  60. package/dist/core/business-mgt/menu-management/menu.order.schema.js +204 -0
  61. package/dist/core/business-mgt/menu-management/modifier.schema.d.ts +585 -0
  62. package/dist/core/business-mgt/menu-management/modifier.schema.js +341 -0
  63. package/dist/core/business-mgt/menu.order.schema.d.ts +335 -0
  64. package/dist/core/business-mgt/menu.order.schema.js +149 -0
  65. package/dist/core/business-mgt/order.schema.d.ts +222 -0
  66. package/dist/core/business-mgt/order.schema.js +205 -0
  67. package/dist/core/business-mgt/pricing-rule.shared.schema.d.ts +56 -0
  68. package/dist/core/business-mgt/pricing-rule.shared.schema.js +68 -0
  69. package/dist/core/business-mgt/product-config.schema.d.ts +177 -0
  70. package/dist/core/business-mgt/product-config.schema.js +106 -0
  71. package/dist/core/business-mgt/product-management/index.d.ts +12 -0
  72. package/dist/core/business-mgt/product-management/index.js +28 -0
  73. package/dist/core/business-mgt/product-management/product-axis-binding.schema.d.ts +54 -0
  74. package/dist/core/business-mgt/product-management/product-axis-binding.schema.js +54 -0
  75. package/dist/core/business-mgt/product-management/product-config.schema.d.ts +1042 -0
  76. package/dist/core/business-mgt/product-management/product-config.schema.js +392 -0
  77. package/dist/core/business-mgt/product-management/product-display.schema.d.ts +548 -0
  78. package/dist/core/business-mgt/product-management/product-display.schema.js +80 -0
  79. package/dist/core/business-mgt/product-management/product-order.schema.d.ts +493 -0
  80. package/dist/core/business-mgt/product-management/product-order.schema.js +158 -0
  81. package/dist/core/business-mgt/product-management/product-pricing-rule.schema.d.ts +167 -0
  82. package/dist/core/business-mgt/product-management/product-pricing-rule.schema.js +68 -0
  83. package/dist/core/business-mgt/product-management/product-set.schema.d.ts +488 -0
  84. package/dist/core/business-mgt/product-management/product-set.schema.js +273 -0
  85. package/dist/core/business-mgt/product-management/product-variant-axis.schema.d.ts +156 -0
  86. package/dist/core/business-mgt/product-management/product-variant-axis.schema.js +98 -0
  87. package/dist/core/business-mgt/product-management/product-variant.schema.d.ts +219 -0
  88. package/dist/core/business-mgt/product-management/product-variant.schema.js +130 -0
  89. package/dist/core/business-mgt/product-order.schema.d.ts +326 -0
  90. package/dist/core/business-mgt/product-order.schema.js +153 -0
  91. package/dist/core/business-mgt/property-config.schema.d.ts +621 -0
  92. package/dist/core/business-mgt/property-config.schema.js +224 -0
  93. package/dist/core/business-mgt/property-inquiry.schema.d.ts +222 -0
  94. package/dist/core/business-mgt/property-inquiry.schema.js +112 -0
  95. package/dist/core/business-mgt/property-management/index.d.ts +6 -0
  96. package/dist/core/business-mgt/property-management/index.js +22 -0
  97. package/dist/core/business-mgt/property-management/property-config.schema.d.ts +1306 -0
  98. package/dist/core/business-mgt/property-management/property-config.schema.js +367 -0
  99. package/dist/core/business-mgt/property-management/property-inquiry.schema.d.ts +254 -0
  100. package/dist/core/business-mgt/property-management/property-inquiry.schema.js +131 -0
  101. package/dist/core/business-mgt/reservation-mgt/assignment/index.d.ts +3 -0
  102. package/dist/core/business-mgt/reservation-mgt/assignment/index.js +19 -0
  103. package/dist/core/business-mgt/reservation-mgt/assignment/reservation-rental-assignment.schema.d.ts +139 -0
  104. package/dist/core/business-mgt/reservation-mgt/assignment/reservation-rental-assignment.schema.js +90 -0
  105. package/dist/core/business-mgt/reservation-mgt/assignment/reservation-room-assignment.schema.d.ts +104 -0
  106. package/dist/core/business-mgt/reservation-mgt/assignment/reservation-room-assignment.schema.js +70 -0
  107. package/dist/core/business-mgt/reservation-mgt/assignment/reservation-table-assignment.schema.d.ts +104 -0
  108. package/dist/core/business-mgt/reservation-mgt/assignment/reservation-table-assignment.schema.js +72 -0
  109. package/dist/core/business-mgt/reservation-mgt/index.d.ts +14 -0
  110. package/dist/core/business-mgt/reservation-mgt/index.js +31 -0
  111. package/dist/core/business-mgt/reservation-mgt/reservation-floor-plan-definition.schema.d.ts +180 -0
  112. package/dist/core/business-mgt/reservation-mgt/reservation-floor-plan-definition.schema.js +75 -0
  113. package/dist/core/business-mgt/reservation-mgt/reservation-maintenance-block.schema.d.ts +91 -0
  114. package/dist/core/business-mgt/reservation-mgt/reservation-maintenance-block.schema.js +57 -0
  115. package/dist/core/business-mgt/reservation-mgt/reservation-rental.schema.d.ts +334 -0
  116. package/dist/core/business-mgt/reservation-mgt/reservation-rental.schema.js +179 -0
  117. package/dist/core/business-mgt/reservation-mgt/reservation-room.schema.d.ts +195 -0
  118. package/dist/core/business-mgt/reservation-mgt/reservation-room.schema.js +106 -0
  119. package/dist/core/business-mgt/reservation-mgt/reservation-section.schema.d.ts +402 -0
  120. package/dist/core/business-mgt/reservation-mgt/reservation-section.schema.js +198 -0
  121. package/dist/core/business-mgt/reservation-mgt/reservation-settings.schema.d.ts +229 -0
  122. package/dist/core/business-mgt/reservation-mgt/reservation-settings.schema.js +127 -0
  123. package/dist/core/business-mgt/reservation-mgt/reservation-slot-query.schema.d.ts +382 -0
  124. package/dist/core/business-mgt/reservation-mgt/reservation-slot-query.schema.js +322 -0
  125. package/dist/core/business-mgt/reservation-mgt/reservation-table-layout.schema.d.ts +123 -0
  126. package/dist/core/business-mgt/reservation-mgt/reservation-table-layout.schema.js +83 -0
  127. package/dist/core/business-mgt/reservation-mgt/reservation-table.schema.d.ts +167 -0
  128. package/dist/core/business-mgt/reservation-mgt/reservation-table.schema.js +84 -0
  129. package/dist/core/business-mgt/reservation-mgt/reservation.schema.d.ts +0 -0
  130. package/dist/core/business-mgt/reservation-mgt/reservation.schema.js +153 -0
  131. package/dist/core/business-mgt/reservation-mgt/resource/index.d.ts +4 -0
  132. package/dist/core/business-mgt/reservation-mgt/resource/index.js +20 -0
  133. package/dist/core/business-mgt/reservation-mgt/resource/reservation-resource-category.schema.d.ts +157 -0
  134. package/dist/core/business-mgt/reservation-mgt/resource/reservation-resource-category.schema.js +76 -0
  135. package/dist/core/business-mgt/reservation-mgt/resource/reservation-resource-instance.schema.d.ts +137 -0
  136. package/dist/core/business-mgt/reservation-mgt/resource/reservation-resource-instance.schema.js +94 -0
  137. package/dist/core/business-mgt/reservation-mgt/resource/reservation-resource.schema.d.ts +713 -0
  138. package/dist/core/business-mgt/reservation-mgt/resource/reservation-resource.schema.js +363 -0
  139. package/dist/core/business-mgt/reservation-mgt/resource/resource-versioning.schema.d.ts +151 -0
  140. package/dist/core/business-mgt/reservation-mgt/resource/resource-versioning.schema.js +147 -0
  141. package/dist/core/business-mgt/reservation-resource.schema.d.ts +154 -0
  142. package/dist/core/business-mgt/reservation-resource.schema.js +100 -0
  143. package/dist/core/business-mgt/reservation.schema.d.ts +119 -0
  144. package/dist/core/business-mgt/reservation.schema.js +89 -0
  145. package/dist/core/business-mgt/service-appointment.schema.d.ts +105 -0
  146. package/dist/core/business-mgt/service-appointment.schema.js +69 -0
  147. package/dist/core/business-mgt/service-config.schema.d.ts +453 -0
  148. package/dist/core/business-mgt/service-config.schema.js +102 -0
  149. package/dist/core/business-mgt/service-management/appointment-additional-info.schema.d.ts +110 -0
  150. package/dist/core/business-mgt/service-management/appointment-additional-info.schema.js +78 -0
  151. package/dist/core/business-mgt/service-management/appointment-field-config.schema.d.ts +304 -0
  152. package/dist/core/business-mgt/service-management/appointment-field-config.schema.js +75 -0
  153. package/dist/core/business-mgt/service-management/business-service-config.schema.d.ts +1226 -0
  154. package/dist/core/business-mgt/service-management/business-service-config.schema.js +317 -0
  155. package/dist/core/business-mgt/service-management/index.d.ts +13 -0
  156. package/dist/core/business-mgt/service-management/index.js +29 -0
  157. package/dist/core/business-mgt/service-management/service-appointment.schema.d.ts +531 -0
  158. package/dist/core/business-mgt/service-management/service-appointment.schema.js +116 -0
  159. package/dist/core/business-mgt/service-management/service-person.schema.d.ts +122 -0
  160. package/dist/core/business-mgt/service-management/service-person.schema.js +66 -0
  161. package/dist/core/business-mgt/service-management/service-pricing-rule.schema.d.ts +221 -0
  162. package/dist/core/business-mgt/service-management/service-pricing-rule.schema.js +118 -0
  163. package/dist/core/business-mgt/service-management/service-provider.schema.d.ts +90 -0
  164. package/dist/core/business-mgt/service-management/service-provider.schema.js +54 -0
  165. package/dist/core/business-mgt/service-management/service-slot-query.schema.d.ts +90 -0
  166. package/dist/core/business-mgt/service-management/service-slot-query.schema.js +113 -0
  167. package/dist/core/business-mgt/service-management/service-time-off.schema.d.ts +121 -0
  168. package/dist/core/business-mgt/service-management/service-time-off.schema.js +95 -0
  169. package/dist/core/business-mgt/service-person.schema.d.ts +43 -0
  170. package/dist/core/business-mgt/service-person.schema.js +38 -0
  171. package/dist/core/business-mgt/tax-rule.schema.d.ts +161 -0
  172. package/dist/core/business-mgt/tax-rule.schema.js +90 -0
  173. package/dist/core/conversation/conversation-config.schema.d.ts +644 -0
  174. package/dist/core/conversation/conversation-config.schema.js +351 -0
  175. package/dist/core/conversation/conversation-message.schema.d.ts +307 -0
  176. package/dist/core/conversation/conversation-message.schema.js +275 -0
  177. package/dist/core/conversation/index.d.ts +12 -0
  178. package/dist/core/conversation/index.js +28 -0
  179. package/dist/core/conversation/outbound-call.schema.d.ts +209 -0
  180. package/dist/core/conversation/outbound-call.schema.js +116 -0
  181. package/dist/core/conversation/outbound-email.schema.d.ts +338 -0
  182. package/dist/core/conversation/outbound-email.schema.js +150 -0
  183. package/dist/core/conversation/outbound-sms.schema.d.ts +163 -0
  184. package/dist/core/conversation/outbound-sms.schema.js +85 -0
  185. package/dist/core/conversation/outbound-template.schema.d.ts +375 -0
  186. package/dist/core/conversation/outbound-template.schema.js +160 -0
  187. package/dist/core/conversation/translation-config.schema.d.ts +92 -0
  188. package/dist/core/conversation/translation-config.schema.js +88 -0
  189. package/dist/core/conversation/translation-conversation.schema.d.ts +469 -0
  190. package/dist/core/conversation/translation-conversation.schema.js +175 -0
  191. package/dist/core/index.d.ts +12 -0
  192. package/dist/core/index.js +30 -0
  193. package/dist/core/service-configuration/agent-config.schema.d.ts +236 -0
  194. package/dist/core/service-configuration/agent-config.schema.js +152 -0
  195. package/dist/core/service-configuration/base-agent-setup.d.ts +147 -0
  196. package/dist/core/service-configuration/base-agent-setup.js +123 -0
  197. package/dist/core/service-configuration/call-transfer-config.schema.d.ts +60 -0
  198. package/dist/core/service-configuration/call-transfer-config.schema.js +53 -0
  199. package/dist/core/service-configuration/deployment-config.schema.d.ts +522 -0
  200. package/dist/core/service-configuration/deployment-config.schema.js +271 -0
  201. package/dist/core/service-configuration/dynamic_setup/base-agent-setup.d.ts +130 -0
  202. package/dist/core/service-configuration/dynamic_setup/base-agent-setup.js +110 -0
  203. package/dist/core/service-configuration/dynamic_setup/index.d.ts +10 -0
  204. package/dist/core/service-configuration/dynamic_setup/index.js +26 -0
  205. package/dist/core/service-configuration/dynamic_setup/phone-agent-setup.d.ts +111 -0
  206. package/dist/core/service-configuration/dynamic_setup/phone-agent-setup.js +56 -0
  207. package/dist/core/service-configuration/dynamic_setup/web-agent-setup.d.ts +113 -0
  208. package/dist/core/service-configuration/dynamic_setup/web-agent-setup.js +55 -0
  209. package/dist/core/service-configuration/index.d.ts +17 -0
  210. package/dist/core/service-configuration/index.js +33 -0
  211. package/dist/core/service-configuration/instruction-config.schema.d.ts +183 -0
  212. package/dist/core/service-configuration/instruction-config.schema.js +139 -0
  213. package/dist/core/service-configuration/interaction-channels.schema.d.ts +469 -0
  214. package/dist/core/service-configuration/interaction-channels.schema.js +390 -0
  215. package/dist/core/service-configuration/knowledge.schema.d.ts +107 -0
  216. package/dist/core/service-configuration/knowledge.schema.js +106 -0
  217. package/dist/core/service-configuration/phone-config.schema.d.ts +206 -0
  218. package/dist/core/service-configuration/phone-config.schema.js +121 -0
  219. package/dist/core/service-configuration/phone-number.schema.d.ts +236 -0
  220. package/dist/core/service-configuration/phone-number.schema.js +211 -0
  221. package/dist/core/service-configuration/provisioning-config.d.ts +429 -0
  222. package/dist/core/service-configuration/provisioning-config.js +307 -0
  223. package/dist/core/service-configuration/support-llm.d.ts +95 -0
  224. package/dist/core/service-configuration/support-llm.js +76 -0
  225. package/dist/core/service-configuration/voice-language.schema.d.ts +200 -0
  226. package/dist/core/service-configuration/voice-language.schema.js +166 -0
  227. package/dist/core/type-definitions/account-definitions.d.ts +82 -0
  228. package/dist/core/type-definitions/account-definitions.js +88 -0
  229. package/dist/core/type-definitions/business-definitions.d.ts +394 -0
  230. package/dist/core/type-definitions/business-definitions.js +447 -0
  231. package/dist/core/type-definitions/conversation.type.definition.d.ts +223 -0
  232. package/dist/core/type-definitions/conversation.type.definition.js +236 -0
  233. package/dist/core/type-definitions/display-order.d.ts +154 -0
  234. package/dist/core/type-definitions/display-order.js +154 -0
  235. package/dist/core/type-definitions/dynamic-fields/field-definition.schema.d.ts +165 -0
  236. package/dist/core/type-definitions/dynamic-fields/field-definition.schema.js +97 -0
  237. package/dist/core/type-definitions/dynamic-fields/field-types.d.ts +49 -0
  238. package/dist/core/type-definitions/dynamic-fields/field-types.js +104 -0
  239. package/dist/core/type-definitions/dynamic-fields/index.d.ts +9 -0
  240. package/dist/core/type-definitions/dynamic-fields/index.js +25 -0
  241. package/dist/core/type-definitions/index.d.ts +10 -0
  242. package/dist/core/type-definitions/index.js +26 -0
  243. package/dist/core/type-definitions/knowledge-definitions.d.ts +30 -0
  244. package/dist/core/type-definitions/knowledge-definitions.js +37 -0
  245. package/dist/core/type-definitions/service-config.definitions.d.ts +112 -0
  246. package/dist/core/type-definitions/service-config.definitions.js +135 -0
  247. package/dist/core/validators/channel-validation.d.ts +19 -0
  248. package/dist/core/validators/channel-validation.js +40 -0
  249. package/dist/core/validators/index.d.ts +5 -0
  250. package/dist/core/validators/index.js +21 -0
  251. package/dist/index.d.ts +6 -0
  252. package/dist/index.js +24 -0
  253. package/dist/request/index.d.ts +5 -0
  254. package/dist/request/index.js +21 -0
  255. package/dist/request/models/index.d.ts +6 -0
  256. package/dist/request/models/index.js +22 -0
  257. package/dist/request/models/paginated-quest.schema.d.ts +33 -0
  258. package/dist/request/models/paginated-quest.schema.js +35 -0
  259. package/dist/request/models/paginated-result.schema.d.ts +124 -0
  260. package/dist/request/models/paginated-result.schema.js +94 -0
  261. package/package.json +43 -0
@@ -0,0 +1,367 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BusinessPropertyCatalogSchema = exports.PropertyCatalogSchema = exports.UpdatePropertySchema = exports.CreatePropertySchema = exports.UpdatePropertyAddressSchema = exports.CreatePropertyAddressSchema = exports.UpdatePropertyCategorySchema = exports.CreatePropertyCategorySchema = exports.PropertySchema = exports.LandDetailsSchema = exports.CommercialDetailsSchema = exports.ResidentialDetailsSchema = exports.PropertyFeaturesSchema = exports.PropertyAddressSchema = exports.PropertyCategorySchema = void 0;
7
+ const zod_1 = __importDefault(require("zod"));
8
+ const base_schema_1 = require("../../base.schema");
9
+ const display_order_1 = require("../../type-definitions/display-order");
10
+ const type_definitions_1 = require("../../type-definitions");
11
+ /**
12
+ * @fileoverview Property configuration schema definitions for property management.
13
+ * @module business-mgt/property-management
14
+ *
15
+ * Property management schemas for real estate listings including residential,
16
+ * commercial, and land properties with categories, addresses, and type-specific details.
17
+ */
18
+ // ============================================================================
19
+ // PROPERTY CATEGORY SCHEMA
20
+ // ============================================================================
21
+ /**
22
+ * Property category schema.
23
+ * Organizes properties into logical groups (e.g., Luxury Homes, Commercial Offices).
24
+ *
25
+ * @typedef {Object} PropertyCategory
26
+ * @property {string} name - Category name
27
+ * @property {string} [description] - Category description
28
+ * @property {PropertyType} propertyType - Type of property
29
+ * @property {number} [displayOrder] - Display order in listing
30
+ * @property {boolean} isDefault - Whether this is the default category
31
+ */
32
+ exports.PropertyCategorySchema = base_schema_1.BaseModelSchema.safeExtend({
33
+ name: zod_1.default.string().min(1, "Category name is required").describe("Category name (e.g., Luxury Homes, Commercial Offices)"),
34
+ description: zod_1.default.string().optional().describe("Category description"),
35
+ propertyType: zod_1.default.enum(type_definitions_1.PropertyType).describe("Type of property (residential, commercial, land)"),
36
+ displayOrder: zod_1.default.number().int().optional().describe("Display order in listing"),
37
+ isDefault: zod_1.default.boolean().default(false).describe("Whether this is the default category"),
38
+ });
39
+ // ============================================================================
40
+ // PROPERTY ADDRESS SCHEMA
41
+ // ============================================================================
42
+ /**
43
+ * Property address schema.
44
+ * Standalone address entity for property locations with verification support.
45
+ *
46
+ * @typedef {Object} PropertyAddress
47
+ * @property {string} street - Street address
48
+ * @property {string} [unit] - Unit or apartment number
49
+ * @property {string} city - City name
50
+ * @property {string} state - State or province
51
+ * @property {string} [postalCode] - Postal or ZIP code
52
+ * @property {string} country - Country
53
+ * @property {Object} [coordinates] - Geographic coordinates
54
+ * @property {string} [neighborhood] - Neighborhood name
55
+ * @property {string} [district] - Administrative district
56
+ * @property {boolean} isVerified - Whether address is verified
57
+ * @property {number} [verifiedAt] - Verification timestamp
58
+ * @property {string} [primaryUserAccountId] - User account managing property
59
+ */
60
+ exports.PropertyAddressSchema = base_schema_1.BaseModelSchema.safeExtend({
61
+ street: zod_1.default.string().min(1, "Street address is required").describe("Street address"),
62
+ unit: zod_1.default.string().nullable().optional().describe("Unit or apartment number"),
63
+ city: zod_1.default.string().min(1, "City is required").describe("City name"),
64
+ state: zod_1.default.string().min(1, "State is required").describe("State or province"),
65
+ postalCode: zod_1.default.string().nullable().optional().describe("Postal or ZIP code"),
66
+ country: zod_1.default.string().min(1, "Country is required").describe("Country"),
67
+ coordinates: zod_1.default.object({
68
+ latitude: zod_1.default.number().min(-90).max(90).describe("Latitude coordinate"),
69
+ longitude: zod_1.default.number().min(-180).max(180).describe("Longitude coordinate"),
70
+ }).nullable().optional().describe("Geographic coordinates"),
71
+ neighborhood: zod_1.default.string().nullable().optional().describe("Neighborhood or district name"),
72
+ district: zod_1.default.string().nullable().optional().describe("Administrative district"),
73
+ isVerified: zod_1.default.boolean().default(false).describe("Whether address has been verified"),
74
+ verifiedAt: zod_1.default.number().nullable().optional().describe("Timestamp when address was verified"),
75
+ primaryUserAccountId: zod_1.default.string().nullable().optional().describe("User account managing the property at this address"),
76
+ });
77
+ // ============================================================================
78
+ // PROPERTY DETAILS SCHEMAS
79
+ // ============================================================================
80
+ /**
81
+ * Property features schema.
82
+ * Shared features across all property types.
83
+ *
84
+ * @typedef {Object} PropertyFeatures
85
+ * @property {number} [parkingSpaces] - Number of parking spaces
86
+ * @property {string[]} amenities - List of amenities
87
+ * @property {string[]} utilities - Available utilities
88
+ */
89
+ exports.PropertyFeaturesSchema = zod_1.default.object({
90
+ parkingSpaces: zod_1.default.number().int().nonnegative().nullable().optional().describe("Number of parking spaces"),
91
+ amenities: zod_1.default.array(zod_1.default.string()).default([]).describe("List of amenities (pool, gym, etc.)"),
92
+ utilities: zod_1.default.array(zod_1.default.string()).default([]).describe("Available utilities (gas, electric, water, etc.)"),
93
+ });
94
+ /**
95
+ * Residential details schema.
96
+ * Details for houses, apartments, condos, townhouses, villas.
97
+ *
98
+ * @typedef {Object} ResidentialDetails
99
+ * @property {number} bedrooms - Number of bedrooms
100
+ * @property {number} bathrooms - Number of bathrooms
101
+ * @property {number} [halfBaths] - Number of half bathrooms
102
+ * @property {number} squareFootage - Total square footage
103
+ * @property {number} [lotSize] - Lot size
104
+ * @property {string} lotSizeUnit - Unit for lot size
105
+ * @property {number} [yearBuilt] - Year built
106
+ * @property {number} [floors] - Number of floors
107
+ * @property {string} [basementType] - Basement type
108
+ * @property {boolean} [atticFinished] - Whether attic is finished
109
+ * @property {string} [heatingType] - Heating system type
110
+ * @property {string} [coolingType] - Cooling system type
111
+ * @property {string} [roofType] - Roof material
112
+ * @property {string} [exteriorMaterial] - Exterior material
113
+ * @property {number} [garageSpaces] - Number of garage spaces
114
+ * @property {boolean} hasPool - Whether has pool
115
+ * @property {boolean} hasFireplace - Whether has fireplace
116
+ */
117
+ exports.ResidentialDetailsSchema = zod_1.default.object({
118
+ bedrooms: zod_1.default.number().int().nonnegative().describe("Number of bedrooms"),
119
+ bathrooms: zod_1.default.number().nonnegative().describe("Number of bathrooms"),
120
+ halfBaths: zod_1.default.number().int().nonnegative().nullable().optional().describe("Number of half bathrooms"),
121
+ squareFootage: zod_1.default.number().positive().describe("Total square footage"),
122
+ lotSize: zod_1.default.number().positive().nullable().optional().describe("Lot size"),
123
+ lotSizeUnit: zod_1.default.enum(['sqft', 'acres', 'sqm', 'hectares']).default('sqft').describe("Unit for lot size"),
124
+ yearBuilt: zod_1.default.number().int().min(1800).max(2100).nullable().optional().describe("Year the property was built"),
125
+ floors: zod_1.default.number().int().positive().nullable().optional().describe("Number of floors"),
126
+ basementType: zod_1.default.enum(['none', 'unfinished', 'partial', 'finished']).nullable().optional().describe("Basement type"),
127
+ atticFinished: zod_1.default.boolean().nullable().optional().describe("Whether attic is finished"),
128
+ heatingType: zod_1.default.string().nullable().optional().describe("Heating system type (e.g., forced air, radiant)"),
129
+ coolingType: zod_1.default.string().nullable().optional().describe("Cooling system type (e.g., central, window)"),
130
+ roofType: zod_1.default.string().nullable().optional().describe("Roof material (e.g., shingle, tile, metal)"),
131
+ exteriorMaterial: zod_1.default.string().nullable().optional().describe("Exterior material (e.g., brick, vinyl, stucco)"),
132
+ garageSpaces: zod_1.default.number().int().nonnegative().nullable().optional().describe("Number of garage spaces"),
133
+ hasPool: zod_1.default.boolean().default(false).describe("Whether property has a pool"),
134
+ hasFireplace: zod_1.default.boolean().default(false).describe("Whether property has a fireplace"),
135
+ });
136
+ /**
137
+ * Commercial details schema.
138
+ * Details for office, retail, warehouse, industrial properties.
139
+ *
140
+ * @typedef {Object} CommercialDetails
141
+ * @property {number} squareFootage - Total square footage
142
+ * @property {number} [usableSquareFootage] - Usable square footage
143
+ * @property {number} [floors] - Number of floors
144
+ * @property {number} [ceilingHeight] - Ceiling height in feet
145
+ * @property {number} [loadingDocks] - Number of loading docks
146
+ * @property {number} [driveInDoors] - Number of drive-in doors
147
+ * @property {boolean} freightElevator - Has freight elevator
148
+ * @property {boolean} passengerElevator - Has passenger elevator
149
+ * @property {string} zoningType - Zoning classification
150
+ * @property {number} [yearBuilt] - Year built
151
+ * @property {string} [previousUse] - Previous use
152
+ * @property {string} [buildOutStatus] - Build-out status
153
+ * @property {string} [hvacType] - HVAC system type
154
+ * @property {string} [powerCapacity] - Electrical power capacity
155
+ * @property {boolean} sprinklerSystem - Has sprinkler system
156
+ */
157
+ exports.CommercialDetailsSchema = zod_1.default.object({
158
+ squareFootage: zod_1.default.number().positive().describe("Total square footage"),
159
+ usableSquareFootage: zod_1.default.number().positive().nullable().optional().describe("Usable square footage"),
160
+ floors: zod_1.default.number().int().positive().nullable().optional().describe("Number of floors"),
161
+ ceilingHeight: zod_1.default.number().positive().nullable().optional().describe("Ceiling height in feet"),
162
+ loadingDocks: zod_1.default.number().int().nonnegative().nullable().optional().describe("Number of loading docks"),
163
+ driveInDoors: zod_1.default.number().int().nonnegative().nullable().optional().describe("Number of drive-in doors"),
164
+ freightElevator: zod_1.default.boolean().default(false).describe("Whether property has freight elevator"),
165
+ passengerElevator: zod_1.default.boolean().default(false).describe("Whether property has passenger elevator"),
166
+ zoningType: zod_1.default.string().describe("Zoning classification"),
167
+ yearBuilt: zod_1.default.number().int().min(1800).max(2100).nullable().optional().describe("Year the property was built"),
168
+ previousUse: zod_1.default.string().nullable().optional().describe("Previous use of the property"),
169
+ buildOutStatus: zod_1.default.enum(['shell', 'partial', 'turnkey']).nullable().optional().describe("Build-out status"),
170
+ hvacType: zod_1.default.string().nullable().optional().describe("HVAC system type"),
171
+ powerCapacity: zod_1.default.string().nullable().optional().describe("Electrical power capacity"),
172
+ sprinklerSystem: zod_1.default.boolean().default(false).describe("Whether property has sprinkler system"),
173
+ });
174
+ /**
175
+ * Land details schema.
176
+ * Details for lots, farms, and acreage properties.
177
+ *
178
+ * @typedef {Object} LandDetails
179
+ * @property {number} lotSize - Lot size
180
+ * @property {string} lotSizeUnit - Unit for lot size
181
+ * @property {string} zoning - Zoning classification
182
+ * @property {string} [topography] - Land topography
183
+ * @property {number} [roadFrontage] - Road frontage in feet
184
+ * @property {string} [roadAccess] - Road access type
185
+ * @property {string[]} utilitiesAvailable - Available utilities
186
+ * @property {string} [waterSource] - Water source
187
+ * @property {string} [sewerType] - Sewer type
188
+ * @property {string} [soilType] - Soil type
189
+ * @property {boolean} floodZone - Whether in flood zone
190
+ * @property {string} [floodZoneDesignation] - FEMA flood zone
191
+ * @property {string} [easements] - Easements description
192
+ * @property {boolean} surveyAvailable - Whether survey available
193
+ * @property {string} [mineralRights] - Mineral rights status
194
+ * @property {number} [timberValue] - Estimated timber value
195
+ */
196
+ exports.LandDetailsSchema = zod_1.default.object({
197
+ lotSize: zod_1.default.number().positive().describe("Lot size"),
198
+ lotSizeUnit: zod_1.default.enum(['sqft', 'acres', 'sqm', 'hectares']).default('acres').describe("Unit for lot size"),
199
+ zoning: zod_1.default.string().describe("Zoning classification"),
200
+ topography: zod_1.default.enum(['flat', 'sloped', 'hilly', 'mixed']).nullable().optional().describe("Land topography"),
201
+ roadFrontage: zod_1.default.number().positive().nullable().optional().describe("Road frontage in feet"),
202
+ roadAccess: zod_1.default.enum(['paved', 'gravel', 'dirt', 'none']).nullable().optional().describe("Road access type"),
203
+ utilitiesAvailable: zod_1.default.array(zod_1.default.string()).default([]).describe("Available utilities (water, sewer, electric, gas)"),
204
+ waterSource: zod_1.default.enum(['municipal', 'well', 'none', 'unknown']).nullable().optional().describe("Water source"),
205
+ sewerType: zod_1.default.enum(['municipal', 'septic', 'none', 'unknown']).nullable().optional().describe("Sewer type"),
206
+ soilType: zod_1.default.string().nullable().optional().describe("Soil type or classification"),
207
+ floodZone: zod_1.default.boolean().default(false).describe("Whether property is in a flood zone"),
208
+ floodZoneDesignation: zod_1.default.string().nullable().optional().describe("FEMA flood zone designation"),
209
+ easements: zod_1.default.string().nullable().optional().describe("Easements description"),
210
+ surveyAvailable: zod_1.default.boolean().default(false).describe("Whether survey is available"),
211
+ mineralRights: zod_1.default.enum(['included', 'excluded', 'partial', 'unknown']).nullable().optional().describe("Mineral rights status"),
212
+ timberValue: zod_1.default.number().nonnegative().nullable().optional().describe("Estimated timber value"),
213
+ });
214
+ // ============================================================================
215
+ // PROPERTY SCHEMA
216
+ // ============================================================================
217
+ /**
218
+ * Property schema.
219
+ * Main property listing with pricing, details, and type-specific information.
220
+ *
221
+ * @typedef {Object} Property
222
+ * @property {string} categoryId - Category ID
223
+ * @property {PropertyCategory} [category] - Property category
224
+ * @property {string} title - Property listing title
225
+ * @property {string} [description] - Detailed description
226
+ * @property {PropertyType} propertyType - Type of property
227
+ * @property {PropertySubType} propertySubType - Subtype of property
228
+ * @property {string} addressId - Address ID
229
+ * @property {PropertyAddress} [address] - Property address
230
+ * @property {ListingType} listingType - Type of listing
231
+ * @property {ListingStatus} listingStatus - Current listing status
232
+ * @property {number} [salePrice] - Sale price
233
+ * @property {string} salePriceCurrency - Currency for sale price
234
+ * @property {number} [rentalPrice] - Rental price
235
+ * @property {RentalPeriod} [rentalPeriod] - Rental period
236
+ * @property {string} rentalPriceCurrency - Currency for rental price
237
+ * @property {boolean} priceNegotiable - Whether price is negotiable
238
+ * @property {PropertyFeatures} [features] - Property features
239
+ * @property {PropertyCondition} [condition] - Property condition
240
+ * @property {boolean} furnished - Whether furnished
241
+ * @property {string[]} images - Image URLs
242
+ * @property {string} [virtualTourUrl] - Virtual tour URL
243
+ * @property {string} [videoUrl] - Video tour URL
244
+ * @property {number} [availableFrom] - Available from timestamp
245
+ * @property {number} [availableTo] - Available until timestamp
246
+ * @property {boolean} isActive - Whether active
247
+ * @property {boolean} isFeatured - Whether featured
248
+ * @property {boolean} isVerified - Whether verified
249
+ * @property {string} [externalId] - External system ID
250
+ * @property {string} [mlsNumber] - MLS listing number
251
+ * @property {ResidentialDetails} [residentialDetails] - Residential details
252
+ * @property {CommercialDetails} [commercialDetails] - Commercial details
253
+ * @property {LandDetails} [landDetails] - Land details
254
+ */
255
+ exports.PropertySchema = base_schema_1.BaseModelSchema.safeExtend({
256
+ categoryId: zod_1.default.string().describe("ID of the category this property belongs to"),
257
+ category: exports.PropertyCategorySchema.optional().describe("Property category"),
258
+ // Basic Info
259
+ title: zod_1.default.string().min(1, "Property title is required").describe("Property listing title"),
260
+ description: zod_1.default.string().optional().describe("Detailed property description"),
261
+ propertyType: zod_1.default.enum(type_definitions_1.PropertyType).describe("Type of property"),
262
+ propertySubType: zod_1.default.enum(type_definitions_1.PropertySubType).describe("Subtype of property"),
263
+ // Location
264
+ addressId: zod_1.default.string().describe("ID of the property address"),
265
+ address: exports.PropertyAddressSchema.nullable().optional().describe("Property address (populated)"),
266
+ // Listing Info
267
+ listingType: zod_1.default.enum(type_definitions_1.ListingType).describe("Type of listing (sale, rent, or both)"),
268
+ listingStatus: zod_1.default.enum(type_definitions_1.ListingStatus).default(type_definitions_1.ListingStatus.DRAFT).describe("Current listing status"),
269
+ // Sale Pricing
270
+ salePrice: zod_1.default.number().nonnegative().nullable().optional().describe("Sale price"),
271
+ salePriceCurrency: zod_1.default.string().default('USD').describe("Currency for sale price"),
272
+ // Rental Pricing
273
+ rentalPrice: zod_1.default.number().nonnegative().nullable().optional().describe("Rental price"),
274
+ rentalPeriod: zod_1.default.enum(type_definitions_1.RentalPeriod).nullable().optional().describe("Rental period (daily, weekly, monthly, yearly)"),
275
+ rentalPriceCurrency: zod_1.default.string().default('USD').describe("Currency for rental price"),
276
+ // Pricing Options
277
+ priceNegotiable: zod_1.default.boolean().default(false).describe("Whether price is negotiable"),
278
+ // Features
279
+ features: exports.PropertyFeaturesSchema.optional().describe("Property features"),
280
+ // Condition
281
+ condition: zod_1.default.enum(type_definitions_1.PropertyCondition).nullable().optional().describe("Property condition"),
282
+ furnished: zod_1.default.boolean().default(false).describe("Whether property is furnished"),
283
+ // Media
284
+ images: zod_1.default.array(zod_1.default.string()).default([]).describe("Array of image URLs"),
285
+ virtualTourUrl: zod_1.default.url().nullable().optional().describe("Virtual tour URL"),
286
+ videoUrl: zod_1.default.url().nullable().optional().describe("Video tour URL"),
287
+ // Availability
288
+ availableFrom: zod_1.default.number().nullable().optional().describe("Available from date (timestamp)"),
289
+ availableTo: zod_1.default.number().nullable().optional().describe("Available until date (timestamp) - for rentals"),
290
+ // Flags
291
+ isActive: zod_1.default.boolean().default(true).describe("Whether property is active in listings"),
292
+ isFeatured: zod_1.default.boolean().default(false).describe("Whether property is featured"),
293
+ isVerified: zod_1.default.boolean().default(false).describe("Whether property has been verified"),
294
+ // Reference
295
+ externalId: zod_1.default.string().nullable().optional().describe("External system reference ID"),
296
+ mlsNumber: zod_1.default.string().nullable().optional().describe("MLS listing number"),
297
+ // Type-specific details (populated based on propertyType)
298
+ residentialDetails: exports.ResidentialDetailsSchema.nullable().optional().describe("Residential-specific details (when propertyType is 'residential')"),
299
+ commercialDetails: exports.CommercialDetailsSchema.nullable().optional().describe("Commercial-specific details (when propertyType is 'commercial')"),
300
+ landDetails: exports.LandDetailsSchema.nullable().optional().describe("Land-specific details (when propertyType is 'land')"),
301
+ });
302
+ // ============================================================================
303
+ // CREATE/UPDATE SCHEMAS
304
+ // ============================================================================
305
+ /**
306
+ * Schema for creating a new property category.
307
+ */
308
+ exports.CreatePropertyCategorySchema = exports.PropertyCategorySchema.omit({
309
+ id: true,
310
+ createdAt: true,
311
+ updatedAt: true,
312
+ }).safeExtend({
313
+ placement: display_order_1.CreateDisplayOrderPlacementSchema.optional(),
314
+ });
315
+ /**
316
+ * Schema for updating an existing property category.
317
+ */
318
+ exports.UpdatePropertyCategorySchema = exports.CreatePropertyCategorySchema.partial().safeExtend({
319
+ id: zod_1.default.string().describe("Unique identifier of the PropertyCategory to update"),
320
+ });
321
+ /**
322
+ * Schema for creating a new property address.
323
+ */
324
+ exports.CreatePropertyAddressSchema = exports.PropertyAddressSchema.omit({
325
+ id: true,
326
+ createdAt: true,
327
+ updatedAt: true,
328
+ verifiedAt: true,
329
+ });
330
+ /**
331
+ * Schema for updating an existing property address.
332
+ */
333
+ exports.UpdatePropertyAddressSchema = exports.CreatePropertyAddressSchema.partial().safeExtend({
334
+ id: zod_1.default.string().describe("Unique identifier of the PropertyAddress to update"),
335
+ });
336
+ /**
337
+ * Schema for creating a new property.
338
+ */
339
+ exports.CreatePropertySchema = exports.PropertySchema.omit({
340
+ id: true,
341
+ createdAt: true,
342
+ updatedAt: true,
343
+ category: true,
344
+ address: true,
345
+ });
346
+ /**
347
+ * Schema for updating an existing property.
348
+ */
349
+ exports.UpdatePropertySchema = exports.CreatePropertySchema.partial().safeExtend({
350
+ id: zod_1.default.string().describe("Unique identifier of the Property to update"),
351
+ });
352
+ // ============================================================================
353
+ // CATALOG SCHEMAS
354
+ // ============================================================================
355
+ /**
356
+ * Property Catalog schema.
357
+ * Category with its property listings.
358
+ */
359
+ exports.PropertyCatalogSchema = zod_1.default.object({
360
+ propertyCategory: exports.PropertyCategorySchema,
361
+ items: zod_1.default.array(exports.PropertySchema).describe("List of properties in this category"),
362
+ }).describe("Schema representing a property category and its listings");
363
+ /**
364
+ * Business Property Catalog schema.
365
+ * Full property catalog array.
366
+ */
367
+ exports.BusinessPropertyCatalogSchema = zod_1.default.array(exports.PropertyCatalogSchema).describe("Schema representing a business property catalog");
@@ -0,0 +1,254 @@
1
+ import z from "zod";
2
+ import { PropertyInquiryType, PropertyInquiryStatus } from "../../type-definitions";
3
+ /**
4
+ * @fileoverview Property Inquiry schema definitions for property management.
5
+ * @module business-mgt/property-inquiry
6
+ *
7
+ * Property inquiries track leads and customer interest in properties,
8
+ * including viewing scheduling, follow-ups, and conversion tracking.
9
+ */
10
+ /**
11
+ * Property Inquiry schema.
12
+ * Tracks customer inquiries about properties with viewing and follow-up management.
13
+ *
14
+ * @typedef {Object} PropertyInquiry
15
+ * @property {string} propertyId - ID of the property being inquired about
16
+ * @property {string} [customerId] - ID of existing contact in system
17
+ * @property {Object} [customer] - Contact details of the inquirer
18
+ * @property {PropertyInquiryType} inquiryType - Type of inquiry
19
+ * @property {string} [message] - Inquiry message from the contact
20
+ * @property {string} source - Source of the inquiry
21
+ * @property {PropertyInquiryStatus} status - Current status of the inquiry
22
+ * @property {number} [preferredViewingDate] - Contact's preferred viewing date
23
+ * @property {string} [preferredViewingTime] - Contact's preferred viewing time
24
+ * @property {number} [scheduledViewingDate] - Scheduled viewing date
25
+ * @property {boolean} viewingCompleted - Whether the viewing has been completed
26
+ * @property {string} [viewingNotes] - Notes from the viewing
27
+ * @property {number} [followUpDate] - Next follow-up date
28
+ * @property {string} [followUpNotes] - Notes for follow-up
29
+ * @property {string} [assignedAgentId] - ID of the assigned agent
30
+ * @property {boolean} convertedToTransaction - Whether inquiry converted to a transaction
31
+ * @property {string} [transactionId] - ID of the resulting transaction
32
+ * @property {string} [transactionType] - Type of transaction (purchase or lease)
33
+ * @property {boolean} interestedInBuying - Whether contact is interested in buying
34
+ * @property {boolean} interestedInRenting - Whether contact is interested in renting
35
+ * @property {number} [budgetMin] - Minimum budget
36
+ * @property {number} [budgetMax] - Maximum budget
37
+ * @property {string} [notes] - Internal notes about the inquiry
38
+ * @property {string} [appointmentRecordId] - Linked appointment record ID
39
+ * @property {string} [cancelReason] - Reason for cancellation
40
+ * @property {string} [serviceConversationConfigId] - Service conversation config ID
41
+ */
42
+ export declare const PropertyInquirySchema: z.ZodObject<{
43
+ id: z.ZodString;
44
+ createdAt: z.ZodOptional<z.ZodNumber>;
45
+ updatedAt: z.ZodOptional<z.ZodNumber>;
46
+ propertyId: z.ZodString;
47
+ customerId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
48
+ customer: z.ZodOptional<z.ZodNullable<z.ZodObject<{
49
+ id: z.ZodString;
50
+ createdAt: z.ZodOptional<z.ZodNumber>;
51
+ updatedAt: z.ZodOptional<z.ZodNumber>;
52
+ customerId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
53
+ phone_number: z.ZodOptional<z.ZodNullable<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>>;
54
+ firstname: z.ZodOptional<z.ZodNullable<z.ZodString>>;
55
+ lastname: z.ZodOptional<z.ZodNullable<z.ZodString>>;
56
+ company: z.ZodOptional<z.ZodString>;
57
+ timezone: z.ZodOptional<z.ZodString>;
58
+ email: z.ZodOptional<z.ZodEmail>;
59
+ preferred_language: z.ZodDefault<z.ZodString>;
60
+ preferred_contact_method: z.ZodDefault<z.ZodEnum<typeof import("../../type-definitions").PreferredContactMethod>>;
61
+ best_time_to_call: z.ZodOptional<z.ZodEnum<typeof import("../../type-definitions").BestTimeToCall>>;
62
+ notes: z.ZodOptional<z.ZodString>;
63
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
64
+ custom_fields: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
65
+ channelId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
66
+ address: z.ZodOptional<z.ZodObject<{
67
+ street: z.ZodString;
68
+ street2: z.ZodOptional<z.ZodString>;
69
+ city: z.ZodString;
70
+ state: z.ZodString;
71
+ postalCode: z.ZodString;
72
+ country: z.ZodString;
73
+ }, z.core.$strip>>;
74
+ isValidatedNames: z.ZodDefault<z.ZodBoolean>;
75
+ customerGroupId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
76
+ }, z.core.$strip>>>;
77
+ inquiryType: z.ZodEnum<typeof PropertyInquiryType>;
78
+ message: z.ZodOptional<z.ZodNullable<z.ZodString>>;
79
+ source: z.ZodDefault<z.ZodString>;
80
+ status: z.ZodDefault<z.ZodEnum<typeof PropertyInquiryStatus>>;
81
+ preferredViewingDate: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
82
+ preferredViewingTime: z.ZodOptional<z.ZodNullable<z.ZodString>>;
83
+ scheduledViewingDate: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
84
+ viewingCompleted: z.ZodDefault<z.ZodBoolean>;
85
+ viewingNotes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
86
+ followUpDate: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
87
+ followUpNotes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
88
+ assignedAgentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
89
+ convertedToTransaction: z.ZodDefault<z.ZodBoolean>;
90
+ transactionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
91
+ transactionType: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
92
+ purchase: "purchase";
93
+ lease: "lease";
94
+ }>>>;
95
+ interestedInBuying: z.ZodDefault<z.ZodBoolean>;
96
+ interestedInRenting: z.ZodDefault<z.ZodBoolean>;
97
+ budgetMin: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
98
+ budgetMax: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
99
+ notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
100
+ appointmentRecordId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
101
+ cancelReason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
102
+ serviceConversationConfigId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
103
+ }, z.core.$strip>;
104
+ /**
105
+ * Schema for creating a new property inquiry.
106
+ */
107
+ export declare const CreatePropertyInquirySchema: z.ZodObject<{
108
+ message: z.ZodOptional<z.ZodNullable<z.ZodString>>;
109
+ source: z.ZodDefault<z.ZodString>;
110
+ status: z.ZodDefault<z.ZodEnum<typeof PropertyInquiryStatus>>;
111
+ customerId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
112
+ notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
113
+ cancelReason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
114
+ serviceConversationConfigId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
115
+ propertyId: z.ZodString;
116
+ inquiryType: z.ZodEnum<typeof PropertyInquiryType>;
117
+ preferredViewingDate: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
118
+ preferredViewingTime: z.ZodOptional<z.ZodNullable<z.ZodString>>;
119
+ scheduledViewingDate: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
120
+ viewingCompleted: z.ZodDefault<z.ZodBoolean>;
121
+ viewingNotes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
122
+ followUpDate: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
123
+ followUpNotes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
124
+ assignedAgentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
125
+ convertedToTransaction: z.ZodDefault<z.ZodBoolean>;
126
+ transactionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
127
+ transactionType: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
128
+ purchase: "purchase";
129
+ lease: "lease";
130
+ }>>>;
131
+ interestedInBuying: z.ZodDefault<z.ZodBoolean>;
132
+ interestedInRenting: z.ZodDefault<z.ZodBoolean>;
133
+ budgetMin: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
134
+ budgetMax: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
135
+ appointmentRecordId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
136
+ }, z.core.$strip>;
137
+ /**
138
+ * Schema for updating an existing property inquiry.
139
+ *
140
+ * @remarks
141
+ * Fields that carry a `.default()` on the base schema are re-declared here as plain
142
+ * `.optional()` (without defaults). In Zod, `.partial()` does not strip defaults, so a
143
+ * partial update would otherwise inject those defaults (e.g., `status`, `source`) on
144
+ * `.parse()` and submit values the caller never set.
145
+ */
146
+ export declare const UpdatePropertyInquirySchema: z.ZodObject<{
147
+ message: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
148
+ customerId: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
149
+ notes: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
150
+ cancelReason: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
151
+ serviceConversationConfigId: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
152
+ propertyId: z.ZodOptional<z.ZodString>;
153
+ inquiryType: z.ZodOptional<z.ZodEnum<typeof PropertyInquiryType>>;
154
+ preferredViewingDate: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
155
+ preferredViewingTime: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
156
+ scheduledViewingDate: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
157
+ viewingNotes: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
158
+ followUpDate: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
159
+ followUpNotes: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
160
+ assignedAgentId: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
161
+ transactionId: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
162
+ transactionType: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodEnum<{
163
+ purchase: "purchase";
164
+ lease: "lease";
165
+ }>>>>;
166
+ budgetMin: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
167
+ budgetMax: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
168
+ appointmentRecordId: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
169
+ id: z.ZodString;
170
+ source: z.ZodOptional<z.ZodString>;
171
+ status: z.ZodOptional<z.ZodEnum<typeof PropertyInquiryStatus>>;
172
+ viewingCompleted: z.ZodOptional<z.ZodBoolean>;
173
+ convertedToTransaction: z.ZodOptional<z.ZodBoolean>;
174
+ interestedInBuying: z.ZodOptional<z.ZodBoolean>;
175
+ interestedInRenting: z.ZodOptional<z.ZodBoolean>;
176
+ }, z.core.$strip>;
177
+ /**
178
+ * Schema for quick status update on property inquiry.
179
+ */
180
+ export declare const UpdatePropertyInquiryStatusSchema: z.ZodObject<{
181
+ id: z.ZodString;
182
+ status: z.ZodEnum<typeof PropertyInquiryStatus>;
183
+ scheduledViewingDate: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
184
+ viewingCompleted: z.ZodOptional<z.ZodBoolean>;
185
+ viewingNotes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
186
+ followUpDate: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
187
+ followUpNotes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
188
+ }, z.core.$strip>;
189
+ export type PropertyInquiry = z.infer<typeof PropertyInquirySchema>;
190
+ export type CreatePropertyInquiry = z.infer<typeof CreatePropertyInquirySchema>;
191
+ export type UpdatePropertyInquiry = z.infer<typeof UpdatePropertyInquirySchema>;
192
+ export type UpdatePropertyInquiryStatus = z.infer<typeof UpdatePropertyInquiryStatusSchema>;
193
+ /**
194
+ * Property inquiry filter options.
195
+ * @interface PropertyInquiryFilters
196
+ */
197
+ export interface PropertyInquiryFilters {
198
+ /** Text search across message/notes */
199
+ search?: string;
200
+ /** Filter by property ID */
201
+ propertyId?: string;
202
+ /** Filter by customer ID */
203
+ customerId?: string;
204
+ /** Filter by status(es) */
205
+ status?: PropertyInquiryStatus[];
206
+ /** Filter by inquiry type */
207
+ inquiryType?: PropertyInquiryType;
208
+ /** Filter by assigned agent */
209
+ assignedAgentId?: string;
210
+ /** Filter by source */
211
+ source?: string;
212
+ /** Filter by conversion status */
213
+ convertedToTransaction?: boolean;
214
+ /** Filter by buying interest */
215
+ interestedInBuying?: boolean;
216
+ /** Filter by renting interest */
217
+ interestedInRenting?: boolean;
218
+ /** Filter by viewing completed status */
219
+ viewingCompleted?: boolean;
220
+ /** Filter by date range */
221
+ dateRange?: {
222
+ start?: number;
223
+ end?: number;
224
+ };
225
+ /** Filter by follow-up date range */
226
+ followUpDateRange?: {
227
+ start?: number;
228
+ end?: number;
229
+ };
230
+ }
231
+ /**
232
+ * Property inquiry sorting options.
233
+ * @interface PropertyInquirySorting
234
+ */
235
+ export interface PropertyInquirySorting {
236
+ /** Field to sort by */
237
+ field: 'createdAt' | 'scheduledViewingDate' | 'followUpDate' | 'status';
238
+ /** Sort direction */
239
+ direction: 'asc' | 'desc';
240
+ }
241
+ /**
242
+ * Property inquiry query options.
243
+ * @interface PropertyInquiryQueryOptions
244
+ */
245
+ export interface PropertyInquiryQueryOptions {
246
+ /** Page number (1-indexed) */
247
+ page: number;
248
+ /** Items per page */
249
+ pageSize: number;
250
+ /** Optional filters */
251
+ filters?: PropertyInquiryFilters;
252
+ /** Optional sorting */
253
+ sorting?: PropertyInquirySorting;
254
+ }