Files
waseel/types/type.d.ts
T

185 lines
4.1 KiB
TypeScript

import { TextInputProps, TouchableOpacityProps } from "react-native";
declare interface Driver {
id: number;
first_name: string;
last_name: string;
profile_image_url: string;
car_image_url: string;
car_seats: number;
rating: number;
service: string;
online?: boolean;
latitude?: number | null;
longitude?: number | null;
user_id?: string | null;
car_model?: string | null;
last_seen?: string | null;
}
declare interface MarkerData {
latitude: number;
longitude: number;
id: number;
title?: string;
profile_image_url: string;
car_image_url: string;
car_seats: number;
rating: number;
first_name: string;
last_name: string;
service?: string;
online?: boolean;
car_model?: string | null;
time?: number;
price?: string;
}
declare interface MapProps {
destinationLatitude?: number;
destinationLongitude?: number;
onDriverTimesCalculated?: (driversWithTimes: MarkerData[]) => void;
selectedDriver?: number | null;
onMapReady?: () => void;
}
declare interface Ride {
ride_id?: number;
origin_address: string;
destination_address: string;
origin_latitude: number;
origin_longitude: number;
destination_latitude: number;
destination_longitude: number;
ride_time: number;
fare_price: number;
payment_status: string;
status: string;
service: string;
driver_id: number | null;
user_id?: string;
payment_order_id?: string | null;
created_at: string;
completed_at?: string | null;
cancelled_at?: string | null;
driver: {
id: number | null;
first_name: string | null;
last_name: string | null;
car_seats: number | null;
profile_image_url: string | null;
car_image_url: string | null;
rating: number | null;
service: string | null;
car_model: string | null;
};
}
declare interface RideOffer {
id: number;
ride_id: number;
driver_id: number;
status: string;
offered_at: string;
responded_at: string | null;
ride?: Ride;
}
declare interface NearbyPlace {
name: string;
address: string;
latitude: number;
longitude: number;
/** Straight-line distance from the rider. */
distanceMeters?: number;
/** Distance and time along the actual driving route, when one was found. */
routeDistanceMeters?: number;
routeDurationSeconds?: number;
category?: string;
}
declare interface ButtonProps extends TouchableOpacityProps {
title: string;
bgVariant?: "primary" | "secondary" | "danger" | "outline" | "success";
textVariant?: "primary" | "default" | "secondary" | "danger" | "success";
iconLeft?: React.ComponentType<any>;
iconRight?: React.ComponentType<any>;
className?: string;
}
declare interface GoogleInputProps {
icon?: string;
initialLocation?: string;
containerStyles?: string;
textInputBackgroundColor?: string;
handlePress: ({
latitude,
longitude,
address,
}: {
latitude: number;
longitude: number;
address: string;
}) => void;
}
declare interface InputFieldProps extends TextInputProps {
label: string;
icon?: any;
secureTextEntry?: boolean;
labelStyles?: string;
containerStyles?: string;
inputStyles?: string;
iconStyles?: string;
className?: string;
}
declare interface PaymentProps {
fullName: string;
email: string;
amount: string;
driverId: number;
rideTime: number;
}
declare interface LocationStore {
userLatitude: number | null;
userLongitude: number | null;
userAddress: string | null;
destinationLatitude: number | null;
destinationLongitude: number | null;
destinationAddress: string | null;
setUserLocation: ({
latitude,
longitude,
address,
}: {
latitude: number;
longitude: number;
address: string;
}) => void;
setDestinationLocation: ({
latitude,
longitude,
address,
}: {
latitude: number;
longitude: number;
address: string;
}) => void;
}
declare interface DriverStore {
drivers: MarkerData[];
selectedDriver: number | null;
setSelectedDriver: (driverId: number) => void;
setDrivers: (drivers: MarkerData[]) => void;
clearSelectedDriver: () => void;
}
declare interface DriverCardProps {
item: MarkerData;
selected: number;
setSelected: () => void;
}