@burdenoff/microfe-housingvista 2026.703.13 → 2026.709.2

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 (163) hide show
  1. package/dist/generated/global-operations.d.ts +2 -0
  2. package/dist/generated/global-operations.d.ts.map +1 -0
  3. package/dist/generated/global-types.d.ts +23527 -0
  4. package/dist/generated/global-types.d.ts.map +1 -0
  5. package/dist/generated/wspace-operations.d.ts +267 -0
  6. package/dist/generated/wspace-operations.d.ts.map +1 -0
  7. package/dist/generated/wspace-operations.js +67 -0
  8. package/dist/generated/wspace-operations.js.map +1 -0
  9. package/dist/generated/wspace-types.d.ts +57868 -0
  10. package/dist/generated/wspace-types.d.ts.map +1 -0
  11. package/dist/housingvista/HousingVistaRoot.d.ts +5 -0
  12. package/dist/housingvista/HousingVistaRoot.d.ts.map +1 -0
  13. package/dist/housingvista/HousingVistaRoutes.d.ts +7 -0
  14. package/dist/housingvista/HousingVistaRoutes.d.ts.map +1 -0
  15. package/dist/housingvista/components/Breadcrumbs.d.ts +13 -0
  16. package/dist/housingvista/components/Breadcrumbs.d.ts.map +1 -0
  17. package/dist/housingvista/components/ChartCard.d.ts +12 -0
  18. package/dist/housingvista/components/ChartCard.d.ts.map +1 -0
  19. package/dist/housingvista/components/ContactOwnerDialog.d.ts +33 -0
  20. package/dist/housingvista/components/ContactOwnerDialog.d.ts.map +1 -0
  21. package/dist/housingvista/components/DataTable.d.ts +42 -0
  22. package/dist/housingvista/components/DataTable.d.ts.map +1 -0
  23. package/dist/housingvista/components/EmptyState.d.ts +19 -0
  24. package/dist/housingvista/components/EmptyState.d.ts.map +1 -0
  25. package/dist/housingvista/components/ErrorBoundary.d.ts +19 -0
  26. package/dist/housingvista/components/ErrorBoundary.d.ts.map +1 -0
  27. package/dist/housingvista/components/FileUploader.d.ts +16 -0
  28. package/dist/housingvista/components/FileUploader.d.ts.map +1 -0
  29. package/dist/housingvista/components/FilterBar.d.ts +13 -0
  30. package/dist/housingvista/components/FilterBar.d.ts.map +1 -0
  31. package/dist/housingvista/components/LoadingSkeleton.d.ts +10 -0
  32. package/dist/housingvista/components/LoadingSkeleton.d.ts.map +1 -0
  33. package/dist/housingvista/components/PageLayout.d.ts +18 -0
  34. package/dist/housingvista/components/PageLayout.d.ts.map +1 -0
  35. package/dist/housingvista/components/PropertyCard.d.ts +26 -0
  36. package/dist/housingvista/components/PropertyCard.d.ts.map +1 -0
  37. package/dist/housingvista/components/ReviewsSection.d.ts +12 -0
  38. package/dist/housingvista/components/ReviewsSection.d.ts.map +1 -0
  39. package/dist/housingvista/components/StatCard.d.ts +18 -0
  40. package/dist/housingvista/components/StatCard.d.ts.map +1 -0
  41. package/dist/housingvista/components/StatusBadge.d.ts +12 -0
  42. package/dist/housingvista/components/StatusBadge.d.ts.map +1 -0
  43. package/dist/housingvista/components/index.d.ts +17 -0
  44. package/dist/housingvista/components/index.d.ts.map +1 -0
  45. package/dist/housingvista/context/HousingVistaContext.d.ts +15 -0
  46. package/dist/housingvista/context/HousingVistaContext.d.ts.map +1 -0
  47. package/dist/housingvista/hooks/index.d.ts +804 -0
  48. package/dist/housingvista/hooks/index.d.ts.map +1 -0
  49. package/dist/housingvista/hooks/index.js +1 -0
  50. package/dist/housingvista/hooks/index.js.map +1 -1
  51. package/dist/housingvista/hooks/messages.d.ts +65 -0
  52. package/dist/housingvista/hooks/messages.d.ts.map +1 -0
  53. package/dist/housingvista/hooks/platform.d.ts +140 -0
  54. package/dist/housingvista/hooks/platform.d.ts.map +1 -0
  55. package/dist/housingvista/hooks/useHousingVistaAnalytics.d.ts +16 -0
  56. package/dist/housingvista/hooks/useHousingVistaAnalytics.d.ts.map +1 -0
  57. package/dist/housingvista/hooks/useHousingVistaAnalytics.js +57 -0
  58. package/dist/housingvista/hooks/useHousingVistaAnalytics.js.map +1 -0
  59. package/dist/housingvista/hooks/useServerPagination.d.ts +12 -0
  60. package/dist/housingvista/hooks/useServerPagination.d.ts.map +1 -0
  61. package/dist/housingvista/index.d.ts +13 -0
  62. package/dist/housingvista/index.d.ts.map +1 -0
  63. package/dist/housingvista/index.js +2 -0
  64. package/dist/housingvista/lib/toast.d.ts +11 -0
  65. package/dist/housingvista/lib/toast.d.ts.map +1 -0
  66. package/dist/housingvista/pages/HomePage.d.ts +7 -0
  67. package/dist/housingvista/pages/HomePage.d.ts.map +1 -0
  68. package/dist/housingvista/pages/HomePage.js +135 -132
  69. package/dist/housingvista/pages/HomePage.js.map +1 -1
  70. package/dist/housingvista/pages/amc/AMCManagementPage.d.ts +2 -0
  71. package/dist/housingvista/pages/amc/AMCManagementPage.d.ts.map +1 -0
  72. package/dist/housingvista/pages/analytics/AnalyticsPage.d.ts +2 -0
  73. package/dist/housingvista/pages/analytics/AnalyticsPage.d.ts.map +1 -0
  74. package/dist/housingvista/pages/analytics/AnalyticsPage.js +136 -134
  75. package/dist/housingvista/pages/analytics/AnalyticsPage.js.map +1 -1
  76. package/dist/housingvista/pages/assets/AssetDetailPage.d.ts +9 -0
  77. package/dist/housingvista/pages/assets/AssetDetailPage.d.ts.map +1 -0
  78. package/dist/housingvista/pages/assets/AssetManagementPage.d.ts +2 -0
  79. package/dist/housingvista/pages/assets/AssetManagementPage.d.ts.map +1 -0
  80. package/dist/housingvista/pages/assets/AssetManagementPage.js.map +1 -1
  81. package/dist/housingvista/pages/chat/ChatPage.d.ts +14 -0
  82. package/dist/housingvista/pages/chat/ChatPage.d.ts.map +1 -0
  83. package/dist/housingvista/pages/finance/HomeLoanDetailPage.d.ts +11 -0
  84. package/dist/housingvista/pages/finance/HomeLoanDetailPage.d.ts.map +1 -0
  85. package/dist/housingvista/pages/finance/HomeLoansPage.d.ts +2 -0
  86. package/dist/housingvista/pages/finance/HomeLoansPage.d.ts.map +1 -0
  87. package/dist/housingvista/pages/investments/InvestmentDetailPage.d.ts +2 -0
  88. package/dist/housingvista/pages/investments/InvestmentDetailPage.d.ts.map +1 -0
  89. package/dist/housingvista/pages/investments/InvestmentsPage.d.ts +2 -0
  90. package/dist/housingvista/pages/investments/InvestmentsPage.d.ts.map +1 -0
  91. package/dist/housingvista/pages/investments/InvestmentsPage.js.map +1 -1
  92. package/dist/housingvista/pages/legal/LegalPage.d.ts +2 -0
  93. package/dist/housingvista/pages/legal/LegalPage.d.ts.map +1 -0
  94. package/dist/housingvista/pages/legal/LegalServiceDetailPage.d.ts +12 -0
  95. package/dist/housingvista/pages/legal/LegalServiceDetailPage.d.ts.map +1 -0
  96. package/dist/housingvista/pages/market/AreaInsightsPage.d.ts +2 -0
  97. package/dist/housingvista/pages/market/AreaInsightsPage.d.ts.map +1 -0
  98. package/dist/housingvista/pages/market/MarketAnalyticsPage.d.ts +2 -0
  99. package/dist/housingvista/pages/market/MarketAnalyticsPage.d.ts.map +1 -0
  100. package/dist/housingvista/pages/marketplace/MarketplacePage.d.ts +2 -0
  101. package/dist/housingvista/pages/marketplace/MarketplacePage.d.ts.map +1 -0
  102. package/dist/housingvista/pages/marketplace/ServiceDetailPage.d.ts +12 -0
  103. package/dist/housingvista/pages/marketplace/ServiceDetailPage.d.ts.map +1 -0
  104. package/dist/housingvista/pages/offers/OffersPage.d.ts +10 -0
  105. package/dist/housingvista/pages/offers/OffersPage.d.ts.map +1 -0
  106. package/dist/housingvista/pages/properties/AddPropertyPage.d.ts +8 -0
  107. package/dist/housingvista/pages/properties/AddPropertyPage.d.ts.map +1 -0
  108. package/dist/housingvista/pages/properties/AddPropertyPage.js +279 -278
  109. package/dist/housingvista/pages/properties/AddPropertyPage.js.map +1 -1
  110. package/dist/housingvista/pages/properties/PropertiesPage.d.ts +7 -0
  111. package/dist/housingvista/pages/properties/PropertiesPage.d.ts.map +1 -0
  112. package/dist/housingvista/pages/properties/PropertiesPage.js +93 -86
  113. package/dist/housingvista/pages/properties/PropertiesPage.js.map +1 -1
  114. package/dist/housingvista/pages/properties/PropertyDetailPage.d.ts +9 -0
  115. package/dist/housingvista/pages/properties/PropertyDetailPage.d.ts.map +1 -0
  116. package/dist/housingvista/pages/properties/PropertyDetailPage.js +514 -511
  117. package/dist/housingvista/pages/properties/PropertyDetailPage.js.map +1 -1
  118. package/dist/housingvista/pages/rental/RentalManagementPage.d.ts +2 -0
  119. package/dist/housingvista/pages/rental/RentalManagementPage.d.ts.map +1 -0
  120. package/dist/housingvista/pages/settings/ProfilePage.d.ts +2 -0
  121. package/dist/housingvista/pages/settings/ProfilePage.d.ts.map +1 -0
  122. package/dist/housingvista/pages/settings/SettingsPage.d.ts +2 -0
  123. package/dist/housingvista/pages/settings/SettingsPage.d.ts.map +1 -0
  124. package/dist/housingvista/pages/shortlist/ShortlistPage.d.ts +8 -0
  125. package/dist/housingvista/pages/shortlist/ShortlistPage.d.ts.map +1 -0
  126. package/dist/housingvista/pages/transactions/TransactionDetailPage.d.ts +8 -0
  127. package/dist/housingvista/pages/transactions/TransactionDetailPage.d.ts.map +1 -0
  128. package/dist/housingvista/pages/transactions/TransactionsPage.d.ts +7 -0
  129. package/dist/housingvista/pages/transactions/TransactionsPage.d.ts.map +1 -0
  130. package/dist/housingvista/pages/transactions/milestones.d.ts +35 -0
  131. package/dist/housingvista/pages/transactions/milestones.d.ts.map +1 -0
  132. package/dist/housingvista/pages/verification/VerificationDetailPage.d.ts +10 -0
  133. package/dist/housingvista/pages/verification/VerificationDetailPage.d.ts.map +1 -0
  134. package/dist/housingvista/pages/verification/VerificationPage.d.ts +2 -0
  135. package/dist/housingvista/pages/verification/VerificationPage.d.ts.map +1 -0
  136. package/dist/housingvista/pages/viewings/ViewingsPage.d.ts +9 -0
  137. package/dist/housingvista/pages/viewings/ViewingsPage.d.ts.map +1 -0
  138. package/dist/housingvista/services/assistantApi.d.ts +90 -0
  139. package/dist/housingvista/services/assistantApi.d.ts.map +1 -0
  140. package/dist/housingvista/services/assistantApi.js +222 -0
  141. package/dist/housingvista/services/assistantApi.js.map +1 -0
  142. package/dist/housingvista/services/createSandboxAssistantTransport.d.ts +42 -0
  143. package/dist/housingvista/services/createSandboxAssistantTransport.d.ts.map +1 -0
  144. package/dist/housingvista/services/createSandboxAssistantTransport.js +120 -0
  145. package/dist/housingvista/services/createSandboxAssistantTransport.js.map +1 -0
  146. package/dist/housingvista/store/housingvistaStore.d.ts +72 -0
  147. package/dist/housingvista/store/housingvistaStore.d.ts.map +1 -0
  148. package/dist/housingvista/types/assistant.d.ts +16 -0
  149. package/dist/housingvista/types/assistant.d.ts.map +1 -0
  150. package/dist/housingvista/types/index.d.ts +1328 -0
  151. package/dist/housingvista/types/index.d.ts.map +1 -0
  152. package/dist/housingvista/utils/helpers.d.ts +25 -0
  153. package/dist/housingvista/utils/helpers.d.ts.map +1 -0
  154. package/dist/housingvista/utils/index.d.ts +2 -0
  155. package/dist/housingvista/utils/index.d.ts.map +1 -0
  156. package/dist/housingvista/utils/pageContext.d.ts +25 -0
  157. package/dist/housingvista/utils/pageContext.d.ts.map +1 -0
  158. package/dist/housingvista/utils/pageContext.js +77 -0
  159. package/dist/housingvista/utils/pageContext.js.map +1 -0
  160. package/dist/index.d.ts +6 -0
  161. package/dist/index.d.ts.map +1 -0
  162. package/dist/index.js +5 -3
  163. package/package.json +6 -2
@@ -0,0 +1,1328 @@
1
+ import { default as React } from 'react';
2
+
3
+ export interface NavItem {
4
+ id: string;
5
+ label: string;
6
+ icon?: React.ReactNode;
7
+ path: string;
8
+ badge?: number;
9
+ order?: number;
10
+ group?: string;
11
+ visible?: boolean;
12
+ children?: NavItem[];
13
+ }
14
+ export interface FooterItem {
15
+ id: string;
16
+ label: string;
17
+ icon?: string;
18
+ onClick?: () => void;
19
+ type?: 'status' | 'action' | 'info';
20
+ order?: number;
21
+ badge?: string;
22
+ section?: 'left' | 'center' | 'right';
23
+ visible?: boolean;
24
+ }
25
+ export interface HousingVistaRootProps {
26
+ basePath: string;
27
+ navigate: (path: string) => void;
28
+ currentUser?: {
29
+ id: string;
30
+ email: string;
31
+ firstName?: string;
32
+ lastName?: string;
33
+ avatar?: string;
34
+ username?: string;
35
+ name?: string;
36
+ role?: string;
37
+ };
38
+ tenantId?: string;
39
+ workspaceId?: string;
40
+ apiGatewayUrl?: string;
41
+ authToken?: string;
42
+ registerNavItems?: (items: NavItem | NavItem[]) => () => void;
43
+ registerFooterItems?: (items: FooterItem | FooterItem[]) => () => void;
44
+ }
45
+ export interface User {
46
+ id: string;
47
+ email: string;
48
+ firstName: string;
49
+ lastName: string;
50
+ phone?: string;
51
+ avatar?: string;
52
+ roles: UserRole[];
53
+ currentRole: UserRole;
54
+ status: 'active' | 'inactive' | 'pending';
55
+ createdAt: Date;
56
+ updatedAt: Date;
57
+ }
58
+ export interface UserRole {
59
+ id: string;
60
+ name: UserRoleName;
61
+ permissions: Permission[];
62
+ organizationId?: string;
63
+ context?: RoleContext;
64
+ }
65
+ export type UserRoleName = 'property_owner' | 'tenant' | 'property_broker' | 'estate_developer' | 'estate_manager' | 'investor' | 'service_provider' | 'admin' | 'super_admin';
66
+ export interface Permission {
67
+ resource: string;
68
+ actions: string[];
69
+ conditions?: Record<string, string | number | boolean>;
70
+ }
71
+ export interface RoleContext {
72
+ organizationId?: string;
73
+ propertyId?: string;
74
+ projectId?: string;
75
+ geographicScope?: string[];
76
+ }
77
+ export interface Property {
78
+ id: string;
79
+ title: string;
80
+ description: string;
81
+ type: PropertyType;
82
+ status: PropertyStatus;
83
+ category: PropertyCategory;
84
+ price: PropertyPrice;
85
+ location: PropertyLocation;
86
+ specifications: PropertySpecifications;
87
+ amenities: Amenity[];
88
+ images: PropertyImage[];
89
+ documents: PropertyDocument[];
90
+ virtualTours?: VirtualTour[];
91
+ owner: PropertyOwner;
92
+ manager?: PropertyManager;
93
+ features: PropertyFeature[];
94
+ createdAt: Date;
95
+ updatedAt: Date;
96
+ verificationStatus: VerificationStatus;
97
+ availability: PropertyAvailability;
98
+ }
99
+ export type PropertyType = 'residential' | 'commercial' | 'industrial' | 'agricultural' | 'mixed_use';
100
+ export type PropertyCategory = 'apartment' | 'house' | 'villa' | 'office' | 'retail' | 'warehouse' | 'land' | 'plot';
101
+ export type PropertyStatus = 'for_sale' | 'for_rent' | 'sold' | 'rented' | 'under_contract' | 'off_market';
102
+ export interface PropertyPrice {
103
+ amount: number;
104
+ currency: string;
105
+ type: 'sale' | 'rent' | 'lease';
106
+ period?: 'monthly' | 'quarterly' | 'yearly';
107
+ negotiable: boolean;
108
+ pricePerSqft?: number;
109
+ }
110
+ export interface PropertyLocation {
111
+ address: string;
112
+ city: string;
113
+ state: string;
114
+ country: string;
115
+ pincode: string;
116
+ postalCode?: string;
117
+ coordinates: {
118
+ latitude: number;
119
+ longitude: number;
120
+ lat?: number;
121
+ lng?: number;
122
+ };
123
+ neighborhood: string;
124
+ landmarks: string[];
125
+ }
126
+ export interface PropertySpecifications {
127
+ totalArea: number;
128
+ carpetArea?: number;
129
+ builtUpArea?: number;
130
+ bedrooms?: number;
131
+ bathrooms?: number;
132
+ floors?: number;
133
+ totalFloors?: number;
134
+ parking?: number;
135
+ balconies?: number;
136
+ furnishingStatus: 'furnished' | 'semi_furnished' | 'unfurnished';
137
+ ageOfProperty?: number;
138
+ facing?: string;
139
+ yearBuilt?: number;
140
+ furnishing?: 'furnished' | 'semi_furnished' | 'unfurnished';
141
+ floor?: number;
142
+ area?: {
143
+ total: number;
144
+ carpet?: number;
145
+ builtUp?: number;
146
+ };
147
+ }
148
+ export interface Amenity {
149
+ id: string;
150
+ name: string;
151
+ category: string;
152
+ available: boolean;
153
+ }
154
+ export interface PropertyImage {
155
+ id: string;
156
+ url: string;
157
+ title?: string;
158
+ description?: string;
159
+ type: 'exterior' | 'interior' | 'amenity' | 'floor_plan' | 'location';
160
+ order: number;
161
+ isPrimary: boolean;
162
+ }
163
+ export interface PropertyDocument {
164
+ id: string;
165
+ name: string;
166
+ type: string;
167
+ url: string;
168
+ verificationStatus: VerificationStatus;
169
+ uploadedAt: Date;
170
+ }
171
+ export interface PropertyOwner {
172
+ id: string;
173
+ name: string;
174
+ email: string;
175
+ phone: string;
176
+ verified: boolean;
177
+ }
178
+ export interface PropertyManager {
179
+ id: string;
180
+ name: string;
181
+ company: string;
182
+ email: string;
183
+ phone: string;
184
+ license?: string;
185
+ }
186
+ export type VerificationStatus = 'pending' | 'verified' | 'rejected';
187
+ export interface PropertyAvailability {
188
+ available: boolean;
189
+ availableFrom?: Date;
190
+ availableTo?: Date;
191
+ restrictions?: string[];
192
+ }
193
+ export interface PropertyFeature {
194
+ id: string;
195
+ name: string;
196
+ category: string;
197
+ value?: string;
198
+ }
199
+ export interface VirtualTour {
200
+ id: string;
201
+ propertyId: string;
202
+ title: string;
203
+ description?: string;
204
+ type: VirtualTourType;
205
+ scenes: VirtualTourScene[];
206
+ thumbnail: string;
207
+ duration?: number;
208
+ createdAt: Date;
209
+ updatedAt: Date;
210
+ isPublic: boolean;
211
+ viewCount: number;
212
+ }
213
+ export type VirtualTourType = '360_panorama' | 'video_walkthrough' | 'interactive_3d' | 'floor_plan_tour';
214
+ export interface VirtualTourScene {
215
+ id: string;
216
+ title: string;
217
+ description?: string;
218
+ type: 'panorama' | 'video' | '3d_model';
219
+ mediaUrl: string;
220
+ thumbnailUrl: string;
221
+ order: number;
222
+ hotspots: VirtualTourHotspot[];
223
+ viewpoint?: VirtualTourViewpoint;
224
+ roomType?: string;
225
+ area?: number;
226
+ }
227
+ export interface VirtualTourHotspot {
228
+ id: string;
229
+ type: 'navigation' | 'info' | 'media' | 'external';
230
+ position: {
231
+ x: number;
232
+ y: number;
233
+ z?: number;
234
+ };
235
+ rotation?: {
236
+ pitch: number;
237
+ yaw: number;
238
+ };
239
+ targetSceneId?: string;
240
+ content?: VirtualTourHotspotContent;
241
+ animation?: VirtualTourAnimation;
242
+ }
243
+ export interface VirtualTourHotspotContent {
244
+ title: string;
245
+ description?: string;
246
+ mediaUrl?: string;
247
+ mediaType?: 'image' | 'video' | 'audio';
248
+ link?: string;
249
+ }
250
+ export interface VirtualTourViewpoint {
251
+ position: {
252
+ x: number;
253
+ y: number;
254
+ z: number;
255
+ };
256
+ rotation: {
257
+ pitch: number;
258
+ yaw: number;
259
+ roll: number;
260
+ };
261
+ fov: number;
262
+ }
263
+ export interface VirtualTourAnimation {
264
+ type: 'pulse' | 'bounce' | 'rotate' | 'glow';
265
+ duration: number;
266
+ loop: boolean;
267
+ }
268
+ export interface VirtualTourStats {
269
+ totalViews: number;
270
+ uniqueViews: number;
271
+ averageViewDuration: number;
272
+ completionRate: number;
273
+ popularScenes: {
274
+ sceneId: string;
275
+ viewCount: number;
276
+ avgDuration: number;
277
+ }[];
278
+ }
279
+ export interface Transaction {
280
+ id: string;
281
+ type: TransactionType;
282
+ status: TransactionStatus;
283
+ property: Property;
284
+ buyer?: User;
285
+ seller?: User;
286
+ tenant?: User;
287
+ landlord?: User;
288
+ broker?: User;
289
+ amount: number;
290
+ currency: string;
291
+ commission?: Commission;
292
+ documents: TransactionDocument[];
293
+ milestones: TransactionMilestone[];
294
+ escrow?: EscrowDetails;
295
+ createdAt: Date;
296
+ updatedAt: Date;
297
+ expectedCompletionDate?: Date;
298
+ actualCompletionDate?: Date;
299
+ }
300
+ export type TransactionType = 'sale' | 'purchase' | 'rental' | 'lease';
301
+ export type TransactionStatus = 'draft' | 'negotiation' | 'under_contract' | 'pending_approval' | 'approved' | 'in_progress' | 'completed' | 'cancelled' | 'disputed';
302
+ export interface Commission {
303
+ brokerCommission: number;
304
+ platformCommission: number;
305
+ otherCharges: CommissionCharge[];
306
+ }
307
+ export interface CommissionCharge {
308
+ type: string;
309
+ amount: number;
310
+ description: string;
311
+ }
312
+ export interface TransactionDocument {
313
+ id: string;
314
+ name: string;
315
+ type: string;
316
+ url: string;
317
+ signed: boolean;
318
+ signedBy?: User[];
319
+ signedAt?: Date;
320
+ required: boolean;
321
+ }
322
+ export interface TransactionMilestone {
323
+ id: string;
324
+ title: string;
325
+ description: string;
326
+ dueDate: Date;
327
+ completedAt?: Date;
328
+ status: 'pending' | 'in_progress' | 'completed' | 'overdue';
329
+ responsible: User;
330
+ }
331
+ export interface EscrowDetails {
332
+ id: string;
333
+ amount: number;
334
+ status: 'created' | 'funded' | 'released' | 'refunded';
335
+ fundedAt?: Date;
336
+ releasedAt?: Date;
337
+ conditions: string[];
338
+ }
339
+ export interface Investment {
340
+ id: string;
341
+ title: string;
342
+ property: Property;
343
+ investmentType: InvestmentType;
344
+ totalValue: number;
345
+ fractionalShares?: FractionalShare[];
346
+ investors: Investor[];
347
+ returns: InvestmentReturn[];
348
+ status: InvestmentStatus;
349
+ startDate: Date;
350
+ maturityDate?: Date;
351
+ riskLevel: 'low' | 'medium' | 'high';
352
+ }
353
+ export type InvestmentType = 'full_ownership' | 'fractional' | 'reits' | 'fund';
354
+ export interface FractionalShare {
355
+ id: string;
356
+ percentage: number;
357
+ investor: User;
358
+ purchasePrice: number;
359
+ purchaseDate: Date;
360
+ }
361
+ export interface Investor {
362
+ user: User;
363
+ investmentAmount: number;
364
+ shares: number;
365
+ joinedAt: Date;
366
+ }
367
+ export interface InvestmentReturn {
368
+ id: string;
369
+ type: 'rental' | 'appreciation' | 'dividend';
370
+ amount: number;
371
+ date: Date;
372
+ investor: User;
373
+ }
374
+ export type InvestmentStatus = 'draft' | 'open' | 'funding' | 'active' | 'mature' | 'closed';
375
+ export interface ServiceProvider {
376
+ id: string;
377
+ name: string;
378
+ company: string;
379
+ category: ServiceCategory;
380
+ services: Service[];
381
+ location: ServiceLocation;
382
+ rating: number;
383
+ reviewCount: number;
384
+ reviews: ServiceReview[];
385
+ certifications: Certification[];
386
+ availability: ServiceAvailability;
387
+ pricing: ServicePricing[];
388
+ portfolio: PortfolioItem[];
389
+ }
390
+ export type ServiceCategory = 'maintenance' | 'cleaning' | 'security' | 'landscaping' | 'repair' | 'renovation' | 'pest_control' | 'legal' | 'financial';
391
+ export interface Service {
392
+ id: string;
393
+ name: string;
394
+ description: string;
395
+ category: ServiceCategory;
396
+ duration: string;
397
+ pricing: ServicePricing;
398
+ }
399
+ export interface ServiceLocation {
400
+ areas: string[];
401
+ maxDistance: number;
402
+ travelCharge?: number;
403
+ }
404
+ export interface ServiceReview {
405
+ id: string;
406
+ user: User;
407
+ rating: number;
408
+ comment: string;
409
+ date: Date;
410
+ verified: boolean;
411
+ }
412
+ export interface Certification {
413
+ id: string;
414
+ name: string;
415
+ issuedBy: string;
416
+ issuedDate: Date;
417
+ expiryDate?: Date;
418
+ verified: boolean;
419
+ }
420
+ export interface ServiceAvailability {
421
+ days: string[];
422
+ hours: {
423
+ start: string;
424
+ end: string;
425
+ };
426
+ emergency24x7: boolean;
427
+ }
428
+ export interface ServicePricing {
429
+ type: 'fixed' | 'hourly' | 'per_sqft' | 'negotiable';
430
+ amount: number;
431
+ currency: string;
432
+ minimumCharge?: number;
433
+ }
434
+ export interface PortfolioItem {
435
+ id: string;
436
+ title: string;
437
+ description: string;
438
+ images: string[];
439
+ completedDate: Date;
440
+ client?: string;
441
+ }
442
+ export interface AMCPackage {
443
+ id: string;
444
+ name: string;
445
+ description: string;
446
+ services: AMCService[];
447
+ duration: number;
448
+ price: number;
449
+ currency: string;
450
+ coverage: AMCCoverage;
451
+ terms: string[];
452
+ restrictions: string[];
453
+ renewalOptions: RenewalOption[];
454
+ }
455
+ export interface AMCService {
456
+ id: string;
457
+ name: string;
458
+ frequency: ServiceFrequency;
459
+ included: boolean;
460
+ additionalCost?: number;
461
+ description: string;
462
+ }
463
+ export type ServiceFrequency = 'monthly' | 'quarterly' | 'half_yearly' | 'yearly' | 'on_demand';
464
+ export interface AMCCoverage {
465
+ propertyTypes: PropertyType[];
466
+ maxProperties: number;
467
+ maxArea: number;
468
+ emergencySupport: boolean;
469
+ responseTime: string;
470
+ }
471
+ export interface RenewalOption {
472
+ duration: number;
473
+ discountPercentage: number;
474
+ conditions: string[];
475
+ }
476
+ /** Simplified AMC contract record used on the AMC page. */
477
+ export interface AMCContract {
478
+ id: string;
479
+ propertyId: string;
480
+ propertyTitle: string;
481
+ packageName: string;
482
+ providerName: string;
483
+ status: 'active' | 'expiring_soon' | 'expired' | 'cancelled';
484
+ startDate: string;
485
+ endDate: string;
486
+ monthlyCost: number;
487
+ nextServiceDate: string;
488
+ servicesIncluded: string[];
489
+ }
490
+ export interface AnalyticsData {
491
+ id: string;
492
+ metric: string;
493
+ value: number;
494
+ unit: string;
495
+ period: TimePeriod;
496
+ trend: TrendDirection;
497
+ comparison?: ComparisonData;
498
+ lastUpdated: Date;
499
+ }
500
+ export interface TimePeriod {
501
+ start: Date;
502
+ end: Date;
503
+ granularity: 'daily' | 'weekly' | 'monthly' | 'quarterly' | 'yearly';
504
+ }
505
+ export type TrendDirection = 'up' | 'down' | 'stable';
506
+ export interface ComparisonData {
507
+ period: TimePeriod;
508
+ value: number;
509
+ changePercentage: number;
510
+ }
511
+ export interface DashboardWidget {
512
+ id: string;
513
+ type: WidgetType;
514
+ title: string;
515
+ data: Record<string, unknown>;
516
+ config: WidgetConfig;
517
+ position: WidgetPosition;
518
+ }
519
+ export type WidgetType = 'chart' | 'metric' | 'table' | 'map' | 'list' | 'calendar';
520
+ export interface WidgetConfig {
521
+ size: 'small' | 'medium' | 'large';
522
+ refreshInterval?: number;
523
+ filters?: Record<string, string | number | boolean>;
524
+ }
525
+ export interface WidgetPosition {
526
+ x: number;
527
+ y: number;
528
+ width: number;
529
+ height: number;
530
+ }
531
+ /** Analytics page KPI card. */
532
+ export interface AnalyticsKPI {
533
+ id: string;
534
+ label: string;
535
+ value: number;
536
+ previousValue: number;
537
+ unit: string;
538
+ trend: TrendDirection;
539
+ changePercent: number;
540
+ sparkline?: number[];
541
+ }
542
+ /** Analytics page chart data. */
543
+ export interface AnalyticsChartData {
544
+ kpis: AnalyticsKPI[];
545
+ revenueByMonth: {
546
+ month: string;
547
+ revenue: number;
548
+ expenses: number;
549
+ }[];
550
+ propertyTypeDistribution: {
551
+ type: string;
552
+ count: number;
553
+ value: number;
554
+ }[];
555
+ occupancyRate: {
556
+ month: string;
557
+ rate: number;
558
+ }[];
559
+ }
560
+ export interface PaginationInfo {
561
+ page: number;
562
+ limit: number;
563
+ total: number;
564
+ totalPages: number;
565
+ }
566
+ export interface SearchFilters {
567
+ query?: string;
568
+ category?: string;
569
+ location?: string;
570
+ priceRange?: {
571
+ min: number;
572
+ max: number;
573
+ };
574
+ areaRange?: {
575
+ min: number;
576
+ max: number;
577
+ };
578
+ facing?: string[];
579
+ floorRange?: {
580
+ min: number;
581
+ max: number;
582
+ };
583
+ possessionStatus?: 'ready_to_move' | 'under_construction' | 'new_launch';
584
+ ageOfProperty?: {
585
+ min: number;
586
+ max: number;
587
+ };
588
+ amenities?: string[];
589
+ furnishingStatus?: string[];
590
+ sortBy?: string;
591
+ sortOrder?: 'asc' | 'desc';
592
+ }
593
+ export interface MapBounds {
594
+ northeast: {
595
+ lat: number;
596
+ lng: number;
597
+ };
598
+ southwest: {
599
+ lat: number;
600
+ lng: number;
601
+ };
602
+ }
603
+ export interface MapViewport {
604
+ center: {
605
+ lat: number;
606
+ lng: number;
607
+ };
608
+ zoom: number;
609
+ bounds?: MapBounds;
610
+ }
611
+ export interface PropertyAlert {
612
+ id: string;
613
+ userId: string;
614
+ name: string;
615
+ filters: SearchFilters;
616
+ alertFrequency: 'immediate' | 'daily' | 'weekly';
617
+ isActive: boolean;
618
+ createdAt: Date;
619
+ lastTriggered?: Date;
620
+ }
621
+ export interface SavedSearch {
622
+ id: string;
623
+ userId: string;
624
+ name: string;
625
+ filters: SearchFilters;
626
+ alertsEnabled: boolean;
627
+ createdAt: Date;
628
+ lastUsed: Date;
629
+ }
630
+ export interface PropertyComparison {
631
+ id: string;
632
+ userId: string;
633
+ properties: Property[];
634
+ createdAt: Date;
635
+ name?: string;
636
+ }
637
+ export interface Wishlist {
638
+ id: string;
639
+ userId: string;
640
+ name: string;
641
+ properties: WishlistProperty[];
642
+ isDefault: boolean;
643
+ createdAt: Date;
644
+ updatedAt: Date;
645
+ }
646
+ export interface WishlistProperty {
647
+ propertyId: string;
648
+ addedAt: Date;
649
+ notes?: string;
650
+ tags?: string[];
651
+ }
652
+ export interface EMICalculation {
653
+ loanAmount: number;
654
+ interestRate: number;
655
+ tenureYears: number;
656
+ monthlyEMI: number;
657
+ totalPayment: number;
658
+ totalInterest: number;
659
+ }
660
+ export interface PropertyValuation {
661
+ propertyId: string;
662
+ estimatedValue: number;
663
+ confidence: number;
664
+ lastUpdated: Date;
665
+ factors: ValuationFactor[];
666
+ }
667
+ export interface ValuationFactor {
668
+ name: string;
669
+ impact: 'positive' | 'negative' | 'neutral';
670
+ weight: number;
671
+ description: string;
672
+ }
673
+ export interface APIResponse<T> {
674
+ data: T;
675
+ success: boolean;
676
+ message?: string;
677
+ pagination?: PaginationInfo;
678
+ }
679
+ export interface APIError {
680
+ code: string;
681
+ message: string;
682
+ details?: Record<string, string | number | boolean>;
683
+ }
684
+ export interface FormField {
685
+ name: string;
686
+ label: string;
687
+ type: string;
688
+ required: boolean;
689
+ validation?: ValidationRule[];
690
+ options?: FormOption[];
691
+ }
692
+ export interface ValidationRule {
693
+ type: string;
694
+ value?: string | number | boolean;
695
+ message: string;
696
+ }
697
+ export interface FormOption {
698
+ value: string;
699
+ label: string;
700
+ }
701
+ export interface Notification {
702
+ id: string;
703
+ type: NotificationType;
704
+ title: string;
705
+ message: string;
706
+ data?: Record<string, unknown>;
707
+ read: boolean;
708
+ createdAt: Date;
709
+ userId: string;
710
+ }
711
+ export type NotificationType = 'info' | 'success' | 'warning' | 'error' | 'property_alert' | 'transaction_update' | 'service_request' | 'payment_reminder';
712
+ export interface ThemeConfig {
713
+ mode: 'light' | 'dark' | 'system';
714
+ primaryColor: string;
715
+ accentColor: string;
716
+ borderRadius: string;
717
+ fontSize: string;
718
+ }
719
+ export interface ChatConversation {
720
+ id: string;
721
+ participants: User[];
722
+ type: 'direct' | 'group' | 'property_inquiry';
723
+ propertyId?: string;
724
+ title?: string;
725
+ lastMessage?: ChatMessage;
726
+ unreadCount: number;
727
+ isActive: boolean;
728
+ createdAt: Date;
729
+ updatedAt: Date;
730
+ metadata?: ChatMetadata;
731
+ }
732
+ export interface ChatMessage {
733
+ id: string;
734
+ conversationId: string;
735
+ senderId: string;
736
+ content: string;
737
+ type: MessageType;
738
+ attachments?: ChatAttachment[];
739
+ replyToMessageId?: string;
740
+ reactions?: ChatReaction[];
741
+ editedAt?: Date;
742
+ deletedAt?: Date;
743
+ isRead: boolean;
744
+ deliveredAt?: Date;
745
+ readAt?: Date;
746
+ createdAt: Date;
747
+ }
748
+ export type MessageType = 'text' | 'image' | 'video' | 'audio' | 'document' | 'location' | 'property_card' | 'system' | 'call_invitation';
749
+ export interface ChatAttachment {
750
+ id: string;
751
+ type: 'image' | 'video' | 'audio' | 'document';
752
+ url: string;
753
+ name: string;
754
+ size: number;
755
+ mimeType: string;
756
+ thumbnail?: string;
757
+ }
758
+ export interface ChatReaction {
759
+ userId: string;
760
+ emoji: string;
761
+ createdAt: Date;
762
+ }
763
+ export interface ChatMetadata {
764
+ propertyTitle?: string;
765
+ inquiryType?: 'viewing' | 'purchase' | 'rent' | 'investment';
766
+ scheduledViewing?: Date;
767
+ lastSeen?: Record<string, Date>;
768
+ typing?: Record<string, boolean>;
769
+ }
770
+ export interface ChatNotification {
771
+ id: string;
772
+ userId: string;
773
+ conversationId: string;
774
+ messageId: string;
775
+ type: 'new_message' | 'message_reaction' | 'user_joined' | 'user_left';
776
+ isRead: boolean;
777
+ createdAt: Date;
778
+ }
779
+ export interface TypingIndicator {
780
+ conversationId: string;
781
+ userId: string;
782
+ username: string;
783
+ isTyping: boolean;
784
+ timestamp: Date;
785
+ }
786
+ export interface OnlineStatus {
787
+ userId: string;
788
+ status: 'online' | 'offline' | 'away' | 'busy';
789
+ lastSeen: Date;
790
+ }
791
+ export interface KYCDocument {
792
+ id: string;
793
+ type: 'aadhaar' | 'pan' | 'driving_license' | 'passport' | 'voter_id' | 'utility_bill' | 'bank_statement';
794
+ documentNumber: string;
795
+ documentUrl: string;
796
+ status: 'pending' | 'verified' | 'rejected';
797
+ uploadedAt: Date;
798
+ verifiedAt?: Date;
799
+ rejectionReason?: string;
800
+ expiryDate?: Date;
801
+ }
802
+ export interface KYCVerification {
803
+ id: string;
804
+ userId: string;
805
+ status: 'not_started' | 'in_progress' | 'under_review' | 'verified' | 'rejected';
806
+ submittedAt?: Date;
807
+ verifiedAt?: Date;
808
+ rejectedAt?: Date;
809
+ documents: KYCDocument[];
810
+ verificationLevel: 'basic' | 'standard' | 'premium';
811
+ verificationScore: number;
812
+ rejectionReasons?: string[];
813
+ verifiedBy?: string;
814
+ notes?: string;
815
+ createdAt: Date;
816
+ updatedAt: Date;
817
+ }
818
+ export interface OwnerVerification {
819
+ id: string;
820
+ ownerId: string;
821
+ kycVerification: KYCVerification;
822
+ propertyOwnershipProof: PropertyOwnershipDocument[];
823
+ incomeVerification?: IncomeVerificationDocument[];
824
+ creditScore?: number;
825
+ bankVerification?: BankVerificationDocument;
826
+ status: 'pending' | 'verified' | 'rejected' | 'expired';
827
+ verificationBadge?: VerificationBadge;
828
+ lastVerificationDate?: Date;
829
+ nextRenewalDate?: Date;
830
+ createdAt: Date;
831
+ updatedAt: Date;
832
+ }
833
+ export interface PropertyOwnershipDocument {
834
+ id: string;
835
+ type: 'sale_deed' | 'title_deed' | 'property_card' | 'registration_document' | 'mutation_certificate';
836
+ documentUrl: string;
837
+ propertyId: string;
838
+ status: 'pending' | 'verified' | 'rejected';
839
+ verifiedBy?: string;
840
+ verificationDate?: Date;
841
+ rejectionReason?: string;
842
+ uploadedAt: Date;
843
+ }
844
+ export interface IncomeVerificationDocument {
845
+ id: string;
846
+ type: 'salary_slip' | 'bank_statement' | 'itr' | 'form16' | 'business_registration' | 'ca_certificate';
847
+ documentUrl: string;
848
+ monthYear?: string;
849
+ assessmentYear?: string;
850
+ status: 'pending' | 'verified' | 'rejected';
851
+ verifiedIncome?: number;
852
+ verificationDate?: Date;
853
+ uploadedAt: Date;
854
+ }
855
+ export interface BankVerificationDocument {
856
+ id: string;
857
+ bankName: string;
858
+ accountNumber: string;
859
+ ifscCode: string;
860
+ accountHolderName: string;
861
+ documentUrl: string;
862
+ status: 'pending' | 'verified' | 'rejected';
863
+ verificationDate?: Date;
864
+ uploadedAt: Date;
865
+ }
866
+ export interface VerificationBadge {
867
+ type: 'kyc_verified' | 'income_verified' | 'property_owner' | 'trusted_landlord' | 'priority_partner';
868
+ level: 'bronze' | 'silver' | 'gold' | 'platinum';
869
+ issuedDate: Date;
870
+ expiryDate?: Date;
871
+ description: string;
872
+ icon: string;
873
+ color: string;
874
+ }
875
+ export interface UserReview {
876
+ id: string;
877
+ reviewerId: string;
878
+ reviewedUserId: string;
879
+ propertyId?: string;
880
+ transactionId?: string;
881
+ rating: number;
882
+ title: string;
883
+ comment: string;
884
+ reviewType: 'tenant_review' | 'landlord_review' | 'broker_review' | 'service_provider_review';
885
+ isVerified: boolean;
886
+ helpfulCount: number;
887
+ reportCount: number;
888
+ status: 'active' | 'hidden' | 'reported';
889
+ createdAt: Date;
890
+ updatedAt: Date;
891
+ }
892
+ export interface VerificationRequest {
893
+ id: string;
894
+ userId: string;
895
+ verificationType: 'kyc' | 'income' | 'property_ownership' | 'bank_account';
896
+ status: 'pending' | 'in_progress' | 'completed' | 'rejected';
897
+ priority: 'low' | 'medium' | 'high';
898
+ requestedBy: string;
899
+ assignedTo?: string;
900
+ submittedDocuments: string[];
901
+ requiredDocuments: string[];
902
+ estimatedCompletionTime: Date;
903
+ actualCompletionTime?: Date;
904
+ notes?: string;
905
+ createdAt: Date;
906
+ updatedAt: Date;
907
+ }
908
+ /** Simplified verification list item used on the Verification page. */
909
+ export interface VerificationItem {
910
+ id: string;
911
+ entityType: 'property' | 'user' | 'document' | 'income' | 'bank_account';
912
+ entityId: string;
913
+ entityLabel: string;
914
+ status: 'pending' | 'in_progress' | 'verified' | 'rejected';
915
+ submittedDate: string;
916
+ reviewerName?: string;
917
+ priority: 'low' | 'medium' | 'high';
918
+ notes?: string;
919
+ }
920
+ export interface TenantVerification {
921
+ id: string;
922
+ tenantId: string;
923
+ propertyId?: string;
924
+ landlordId?: string;
925
+ kycVerification: KYCVerification;
926
+ incomeVerification?: IncomeVerificationDocument[];
927
+ employmentVerification?: EmploymentVerificationDocument;
928
+ referenceChecks?: TenantReferenceCheck[];
929
+ creditScore?: number;
930
+ bankVerification?: BankVerificationDocument;
931
+ rentalHistory?: RentalHistoryRecord[];
932
+ backgroundCheck?: BackgroundCheckResult;
933
+ verificationPackage: 'basic' | 'standard' | 'premium';
934
+ status: 'pending' | 'in_progress' | 'verified' | 'rejected' | 'expired';
935
+ verificationBadge?: VerificationBadge;
936
+ trustScore: number;
937
+ lastVerificationDate?: Date;
938
+ nextRenewalDate?: Date;
939
+ cost: number;
940
+ createdAt: Date;
941
+ updatedAt: Date;
942
+ }
943
+ export interface EmploymentVerificationDocument {
944
+ id: string;
945
+ companyName: string;
946
+ designation: string;
947
+ workEmail: string;
948
+ hrContactNumber: string;
949
+ joiningDate: Date;
950
+ currentSalary: number;
951
+ employmentType: 'permanent' | 'contract' | 'freelance' | 'business_owner';
952
+ workLocation: string;
953
+ documentUrl?: string;
954
+ status: 'pending' | 'verified' | 'rejected';
955
+ verificationDate?: Date;
956
+ verifiedBy?: string;
957
+ rejectionReason?: string;
958
+ uploadedAt: Date;
959
+ }
960
+ export interface TenantReferenceCheck {
961
+ id: string;
962
+ referenceType: 'previous_landlord' | 'employer' | 'personal' | 'professional';
963
+ referenceName: string;
964
+ referencePhone: string;
965
+ referenceEmail?: string;
966
+ relationship: string;
967
+ contactedAt?: Date;
968
+ response?: {
969
+ overall_rating: number;
970
+ payment_history: 'excellent' | 'good' | 'average' | 'poor';
971
+ property_maintenance: 'excellent' | 'good' | 'average' | 'poor';
972
+ behavior: 'excellent' | 'good' | 'average' | 'poor';
973
+ would_recommend: boolean;
974
+ comments?: string;
975
+ };
976
+ status: 'pending' | 'contacted' | 'completed' | 'unreachable';
977
+ verifiedBy?: string;
978
+ createdAt: Date;
979
+ updatedAt: Date;
980
+ }
981
+ export interface RentalHistoryRecord {
982
+ id: string;
983
+ propertyAddress: string;
984
+ landlordName: string;
985
+ landlordContact: string;
986
+ tenancyStartDate: Date;
987
+ tenancyEndDate?: Date;
988
+ monthlyRent: number;
989
+ reasonForLeaving?: string;
990
+ landlordRating?: number;
991
+ paymentRecord: 'always_on_time' | 'mostly_on_time' | 'occasionally_late' | 'frequently_late';
992
+ propertyCondition: 'excellent' | 'good' | 'average' | 'poor';
993
+ isVerified: boolean;
994
+ verificationDate?: Date;
995
+ createdAt: Date;
996
+ }
997
+ export interface BackgroundCheckResult {
998
+ id: string;
999
+ criminalRecord: {
1000
+ hasCriminalRecord: boolean;
1001
+ details?: string[];
1002
+ verificationDate: Date;
1003
+ };
1004
+ courtCases: {
1005
+ hasCourtCases: boolean;
1006
+ details?: string[];
1007
+ verificationDate: Date;
1008
+ };
1009
+ financialDefaulter: {
1010
+ isDefaulter: boolean;
1011
+ details?: string[];
1012
+ verificationDate: Date;
1013
+ };
1014
+ addressVerification: {
1015
+ isVerified: boolean;
1016
+ verificationMethod: 'police_verification' | 'utility_bill' | 'aadhar_verification';
1017
+ verificationDate: Date;
1018
+ };
1019
+ overallRiskLevel: 'low' | 'medium' | 'high';
1020
+ summary: string;
1021
+ verificationAgency: string;
1022
+ reportUrl?: string;
1023
+ completedAt: Date;
1024
+ }
1025
+ export interface RentPayment {
1026
+ id: string;
1027
+ propertyId: string;
1028
+ landlordId: string;
1029
+ tenantId: string;
1030
+ leaseId: string;
1031
+ amount: number;
1032
+ dueDate: Date;
1033
+ paidDate?: Date;
1034
+ status: 'pending' | 'paid' | 'overdue' | 'partial' | 'failed';
1035
+ paymentMethod?: 'bank_transfer' | 'upi' | 'credit_card' | 'debit_card' | 'cash' | 'cheque';
1036
+ transactionId?: string;
1037
+ receiptUrl?: string;
1038
+ lateFeesApplied?: number;
1039
+ discountApplied?: number;
1040
+ month: string;
1041
+ year: number;
1042
+ notes?: string;
1043
+ reminders: PaymentReminder[];
1044
+ createdAt: Date;
1045
+ updatedAt: Date;
1046
+ }
1047
+ export interface PaymentReminder {
1048
+ id: string;
1049
+ type: 'email' | 'sms' | 'push' | 'whatsapp';
1050
+ sentAt: Date;
1051
+ status: 'sent' | 'delivered' | 'failed';
1052
+ template: string;
1053
+ daysBefore: number;
1054
+ }
1055
+ export interface RentCollection {
1056
+ id: string;
1057
+ propertyId: string;
1058
+ landlordId: string;
1059
+ tenantId: string;
1060
+ monthlyRent: number;
1061
+ securityDeposit: number;
1062
+ maintenanceCharges: number;
1063
+ leaseStartDate: Date;
1064
+ leaseEndDate: Date;
1065
+ rentDueDate: number;
1066
+ lateFeePenalty: number;
1067
+ gracePeriodDays: number;
1068
+ autoDebitEnabled: boolean;
1069
+ preferredPaymentMethod: string[];
1070
+ status: 'active' | 'paused' | 'terminated';
1071
+ payments: RentPayment[];
1072
+ totalCollected: number;
1073
+ totalPending: number;
1074
+ collectionEfficiency: number;
1075
+ averageDelayDays: number;
1076
+ createdAt: Date;
1077
+ updatedAt: Date;
1078
+ }
1079
+ export interface PaymentReport {
1080
+ id: string;
1081
+ collectionId: string;
1082
+ reportType: 'monthly' | 'quarterly' | 'yearly' | 'custom';
1083
+ period: {
1084
+ startDate: Date;
1085
+ endDate: Date;
1086
+ };
1087
+ totalRentDue: number;
1088
+ totalCollected: number;
1089
+ totalPending: number;
1090
+ totalOverdue: number;
1091
+ collectionRate: number;
1092
+ averagePaymentDelay: number;
1093
+ onTimePayments: number;
1094
+ latePayments: number;
1095
+ failedPayments: number;
1096
+ topPaymentMethods: {
1097
+ method: string;
1098
+ count: number;
1099
+ amount: number;
1100
+ }[];
1101
+ monthlyBreakdown: {
1102
+ month: string;
1103
+ due: number;
1104
+ collected: number;
1105
+ pending: number;
1106
+ rate: number;
1107
+ }[];
1108
+ generatedAt: Date;
1109
+ reportUrl?: string;
1110
+ }
1111
+ export interface AutoDebitSetup {
1112
+ id: string;
1113
+ collectionId: string;
1114
+ tenantId: string;
1115
+ bankAccountId: string;
1116
+ status: 'active' | 'inactive' | 'failed' | 'cancelled';
1117
+ mandateId: string;
1118
+ maxAmount: number;
1119
+ startDate: Date;
1120
+ endDate?: Date;
1121
+ nextDebitDate: Date;
1122
+ failureCount: number;
1123
+ lastFailureReason?: string;
1124
+ createdAt: Date;
1125
+ updatedAt: Date;
1126
+ }
1127
+ export interface PaymentNotification {
1128
+ id: string;
1129
+ paymentId: string;
1130
+ recipientId: string;
1131
+ type: 'payment_due' | 'payment_overdue' | 'payment_received' | 'payment_failed' | 'auto_debit_failed';
1132
+ channel: 'email' | 'sms' | 'push' | 'whatsapp';
1133
+ title: string;
1134
+ message: string;
1135
+ status: 'sent' | 'delivered' | 'failed' | 'read';
1136
+ scheduledAt?: Date;
1137
+ sentAt?: Date;
1138
+ deliveredAt?: Date;
1139
+ readAt?: Date;
1140
+ metadata?: Record<string, unknown>;
1141
+ createdAt: Date;
1142
+ }
1143
+ export interface DashboardStats {
1144
+ totalProperties: number;
1145
+ totalValue: number;
1146
+ occupancyRate: number;
1147
+ monthlyRevenue: number;
1148
+ activeTransactions: number;
1149
+ pendingVerifications: number;
1150
+ totalInvestments: number;
1151
+ investmentReturns: number;
1152
+ totalTenants: number;
1153
+ maintenanceRequests: number;
1154
+ unreadMessages: number;
1155
+ upcomingViewings: number;
1156
+ }
1157
+ export interface RecentActivity {
1158
+ id: string;
1159
+ type: 'property_listed' | 'transaction_update' | 'payment_received' | 'maintenance_request' | 'viewing_scheduled' | 'document_uploaded' | 'offer_received' | 'lease_signed';
1160
+ title: string;
1161
+ description: string;
1162
+ timestamp: string;
1163
+ entityId?: string;
1164
+ entityType?: string;
1165
+ actorName?: string;
1166
+ actorAvatar?: string;
1167
+ }
1168
+ export interface RentalUnit {
1169
+ id: string;
1170
+ propertyId: string;
1171
+ propertyTitle: string;
1172
+ unitNumber: string;
1173
+ tenantName: string;
1174
+ tenantEmail: string;
1175
+ tenantPhone: string;
1176
+ monthlyRent: number;
1177
+ leaseStart: string;
1178
+ leaseEnd: string;
1179
+ status: 'occupied' | 'vacant' | 'notice_period' | 'maintenance';
1180
+ lastPaymentDate: string;
1181
+ paymentStatus: 'paid' | 'pending' | 'overdue';
1182
+ securityDeposit: number;
1183
+ }
1184
+ export interface Asset {
1185
+ id: string;
1186
+ title: string;
1187
+ type: PropertyType;
1188
+ category: PropertyCategory;
1189
+ location: string;
1190
+ currentValue: number;
1191
+ purchasePrice: number;
1192
+ purchaseDate: string;
1193
+ appreciationPercent: number;
1194
+ rentalYield?: number;
1195
+ status: 'active' | 'under_renovation' | 'pending_sale' | 'sold';
1196
+ imageUrl: string;
1197
+ lastValuationDate: string;
1198
+ }
1199
+ export interface MarketplaceService {
1200
+ id: string;
1201
+ name: string;
1202
+ providerName: string;
1203
+ category: ServiceCategory;
1204
+ description: string;
1205
+ rating: number;
1206
+ reviewCount: number;
1207
+ priceRange: string;
1208
+ availableAreas: string[];
1209
+ responseTime: string;
1210
+ verified: boolean;
1211
+ imageUrl: string;
1212
+ featured: boolean;
1213
+ }
1214
+ export interface ConversationListItem {
1215
+ id: string;
1216
+ title: string;
1217
+ participants: {
1218
+ id: string;
1219
+ name: string;
1220
+ avatar?: string;
1221
+ }[];
1222
+ lastMessage: string;
1223
+ lastMessageTime: string;
1224
+ unreadCount: number;
1225
+ type: 'direct' | 'group' | 'property_inquiry';
1226
+ propertyId?: string;
1227
+ propertyTitle?: string;
1228
+ messages: ConversationMessage[];
1229
+ }
1230
+ export interface ConversationMessage {
1231
+ id: string;
1232
+ senderId: string;
1233
+ senderName: string;
1234
+ content: string;
1235
+ timestamp: string;
1236
+ type: 'text' | 'image' | 'document' | 'system';
1237
+ }
1238
+ export interface LegalService {
1239
+ id: string;
1240
+ title: string;
1241
+ category: 'title_search' | 'lease_review' | 'dispute_resolution' | 'registration' | 'compliance' | 'will_trust';
1242
+ description: string;
1243
+ providerName: string;
1244
+ providerRating: number;
1245
+ estimatedDuration: string;
1246
+ priceRange: string;
1247
+ status: 'available' | 'busy' | 'unavailable';
1248
+ consultationFee: number;
1249
+ documentsRequired: string[];
1250
+ }
1251
+ export interface HomeLoan {
1252
+ id: string;
1253
+ bankName: string;
1254
+ bankLogo: string;
1255
+ interestRate: number;
1256
+ maxTenure: number;
1257
+ maxAmount: number;
1258
+ processingFee: string;
1259
+ emiPerLakh: number;
1260
+ features: string[];
1261
+ rating: number;
1262
+ specialOffer?: string;
1263
+ prepaymentCharges: string;
1264
+ }
1265
+ export interface MarketTrend {
1266
+ month: string;
1267
+ avgPrice: number;
1268
+ avgRent: number;
1269
+ demandIndex: number;
1270
+ supplyIndex: number;
1271
+ priceChangePercent: number;
1272
+ }
1273
+ export interface AreaInsight {
1274
+ id: string;
1275
+ areaName: string;
1276
+ city: string;
1277
+ avgPropertyPrice: number;
1278
+ avgRentalYield: number;
1279
+ appreciationRate: number;
1280
+ safetyScore: number;
1281
+ connectivityScore: number;
1282
+ amenitiesScore: number;
1283
+ schoolsNearby: number;
1284
+ hospitalsNearby: number;
1285
+ population: number;
1286
+ greenCoverPercent: number;
1287
+ upcomingProjects: number;
1288
+ }
1289
+ export interface Alert {
1290
+ id: string;
1291
+ type: 'payment_due' | 'lease_expiry' | 'maintenance' | 'price_alert' | 'document_expiry' | 'verification';
1292
+ severity: 'info' | 'warning' | 'critical';
1293
+ title: string;
1294
+ message: string;
1295
+ entityId?: string;
1296
+ entityType?: string;
1297
+ dueDate?: string;
1298
+ isRead: boolean;
1299
+ createdAt: string;
1300
+ }
1301
+ export interface UserProfile {
1302
+ id: string;
1303
+ email: string;
1304
+ firstName: string;
1305
+ lastName: string;
1306
+ phone?: string;
1307
+ avatar?: string;
1308
+ bio?: string;
1309
+ company?: string;
1310
+ designation?: string;
1311
+ preferredLanguage: string;
1312
+ preferredCurrency: string;
1313
+ notificationPreferences: NotificationPreferences;
1314
+ twoFactorEnabled: boolean;
1315
+ theme: ThemeConfig;
1316
+ }
1317
+ export interface NotificationPreferences {
1318
+ email: boolean;
1319
+ sms: boolean;
1320
+ push: boolean;
1321
+ whatsapp: boolean;
1322
+ propertyAlerts: boolean;
1323
+ transactionUpdates: boolean;
1324
+ paymentReminders: boolean;
1325
+ marketingEmails: boolean;
1326
+ }
1327
+ export type { AssistantMode, AssistantArtifact } from './assistant';
1328
+ //# sourceMappingURL=index.d.ts.map