158 lines
3.5 KiB
TypeScript
158 lines
3.5 KiB
TypeScript
// User & Auth Types
|
|
// User & Auth Types
|
|
export interface User {
|
|
user_id: number | string;
|
|
user_name: string;
|
|
email?: string;
|
|
max_role: number | string;
|
|
privileges: string | string[];
|
|
}
|
|
|
|
export interface AuthResponse {
|
|
access_token: string;
|
|
privileges: string;
|
|
user_id: number;
|
|
max_role: number;
|
|
status: string;
|
|
}
|
|
|
|
export interface LoginCredentials {
|
|
username: string;
|
|
password: string;
|
|
}
|
|
|
|
// Subscription status for beneficiary
|
|
export interface BeneficiarySubscription {
|
|
status: 'active' | 'expired' | 'none' | 'expiring_soon';
|
|
startDate?: string; // ISO date
|
|
endDate?: string; // ISO date
|
|
planType?: 'monthly' | 'annual';
|
|
price?: number;
|
|
}
|
|
|
|
// Device/Sensor connected to beneficiary
|
|
export interface BeneficiaryDevice {
|
|
id: string;
|
|
type: 'motion' | 'door' | 'temperature' | 'bed' | 'other';
|
|
name: string;
|
|
location?: string;
|
|
status: 'online' | 'offline';
|
|
lastSeen?: string;
|
|
}
|
|
|
|
// Equipment/Kit delivery status
|
|
export type EquipmentStatus =
|
|
| 'none' // No equipment ordered
|
|
| 'ordered' // Kit ordered, waiting to ship
|
|
| 'shipped' // Kit shipped, in transit
|
|
| 'delivered' // Kit delivered, ready to activate
|
|
| 'active' // Equipment activated and working
|
|
| 'demo'; // Demo mode (DEMO-00000)
|
|
|
|
// Beneficiary Types (elderly people being monitored)
|
|
export interface Beneficiary {
|
|
id: number;
|
|
name: string;
|
|
avatar?: string;
|
|
device_id?: string;
|
|
status: 'online' | 'offline';
|
|
relationship?: string;
|
|
last_activity?: string;
|
|
sensor_data?: SensorData;
|
|
// Extended data from dashboard_single API
|
|
address?: string;
|
|
timezone?: string;
|
|
wellness_score?: number;
|
|
wellness_descriptor?: string;
|
|
last_location?: string;
|
|
temperature?: number;
|
|
units?: string;
|
|
sleep_hours?: number;
|
|
bedroom_temperature?: number;
|
|
before_last_location?: string;
|
|
last_detected_time?: string;
|
|
// Subscription & Devices
|
|
subscription?: BeneficiarySubscription;
|
|
devices?: BeneficiaryDevice[];
|
|
hasDevices?: boolean;
|
|
// Equipment status
|
|
equipmentStatus?: EquipmentStatus;
|
|
trackingNumber?: string; // Shipping tracking number
|
|
isDemo?: boolean; // Demo mode flag
|
|
// Invitations for sharing access
|
|
invitations?: {
|
|
id: string;
|
|
email: string;
|
|
role: string;
|
|
label?: string;
|
|
status: string;
|
|
created_at: string;
|
|
}[];
|
|
}
|
|
|
|
// Dashboard API response
|
|
export interface DashboardSingleResponse {
|
|
result_list: BeneficiaryDashboardData[];
|
|
status: string;
|
|
}
|
|
|
|
export interface BeneficiaryDashboardData {
|
|
user_id: number;
|
|
name: string;
|
|
address: string;
|
|
time_zone: string;
|
|
picture: string;
|
|
deployment_id: string;
|
|
wellness_score_percent: number;
|
|
wellness_descriptor: string;
|
|
wellness_descriptor_color: string;
|
|
last_location: string;
|
|
last_detected_time: string;
|
|
before_last_location: string;
|
|
temperature: number;
|
|
bedroom_temperature: number;
|
|
sleep_hours: number;
|
|
units: string;
|
|
location_list: string[];
|
|
}
|
|
|
|
export interface SensorData {
|
|
motion_detected?: boolean;
|
|
last_motion?: string;
|
|
door_status?: 'open' | 'closed';
|
|
temperature?: number;
|
|
humidity?: number;
|
|
last_updated?: string;
|
|
}
|
|
|
|
// Chat Types
|
|
export interface Message {
|
|
id: string;
|
|
role: 'user' | 'assistant';
|
|
content: string;
|
|
timestamp: Date;
|
|
}
|
|
|
|
export interface ChatResponse {
|
|
ok: boolean;
|
|
response: {
|
|
Command: string;
|
|
body: string;
|
|
language: string;
|
|
};
|
|
status: string;
|
|
}
|
|
|
|
// API Types
|
|
export interface ApiError {
|
|
message: string;
|
|
code?: string;
|
|
status?: number;
|
|
}
|
|
|
|
export interface ApiResponse<T> {
|
|
data?: T;
|
|
error?: ApiError;
|
|
ok: boolean;
|
|
}
|