export declare namespace Models { interface IConventionCenterBody { address: string; city: string; countryName: string; countryAbbreviation: string; displayText: string; loc: { lat: number; lng: number; }; name: string; stateAbbreviation: string; stateName: string; zipcode: string; } interface IDeprecatedConventionCenterBody { name: string; loc: { lat: number; lng: number; }; } interface IDeprecatedConventionCenter extends IDeprecatedConventionCenterBody { _id: string; } interface IConventionCenter extends IConventionCenterBody { _id: string; } interface IEventBody { name: string; startDay: string; endDay: string; } interface IEvent extends IEventBody { _id: string; conventionCenterId: string; } enum PropertyType { Condo = "Condo", Home = "Home", Room = "Room" } enum PropertyBookingMode { Instant = "Instant", ReservationByRequest = "ReservationByRequest" } interface IPropertyBookingModeInfo { name: string; } interface IPropertyBody { name: string; type: PropertyType; numBeds: number; numBaths: number; numBedrooms: number; maxGuests: number; nightMinimum: number; profilePhotoUri: string; photoUris: string[]; description: string; bookingMode: PropertyBookingMode; address: { line1: string; line2: string; city: string; state: string; zipCode: string; }; loc: { lat: number; lng: number; }; } interface ISyncCalendarBody { name: string; uri: string; } interface IPropertyDatedRuleCore { startDay: string; endDay: string; nightMinimum?: number; } interface IPropertyDatedRule extends IPropertyDatedRuleCore { _id: string; } interface IProperty extends IPropertyBody { _id: string; dateCreatedISO: string; managerId: string; datedRules: IPropertyDatedRule[]; amenities: AmenityType[]; pricing: { weekdayDefault: number; weekendDefault: number; cleaningFee: number; customRanges: ICustomPriceRange[]; } | null; calendars: { _id: string; uri: string; name: string; }[]; } enum AmenityType { WiFi = "WiFi", AirConditioning = "AirConditioning", Heater = "Heater", Washer = "Washer", Dryer = "Dryer", IroningSet = "Iron/Ironing Board", Towels = "Towels", BeddingAndLinens = "BeddingAndLinens", Toiletries = "Toiletries", HairDryer = "HairDryer", TV = "TV", Cable = "Cable", Streaming = "Streaming", SmokeAlarm = "SmokeAlarm", CarbonMonoxideAlarm = "CarbonMonoxideAlarm", FireExtinguisher = "FireExtinguisher", AirMattress = "AirMattress", ExteriorSecurityCamera = "ExteriorSecurityCamera", InteriorSecurityCamera = "InteriorSecurityCamera", FullKitchen = "FullKitchen", Oven = "Oven", Stove = "Stove", Refrigerator = "Refrigerator", CoffeeMaker = "CoffeeMaker", DishWasher = "DishWasher", Microwave = "Microwave", DishesAndUtensils = "DishesAndUtensils", PotsAndPans = "PotsAndPans", StreetParking = "StreetParking", Driveway = "Driveway", Garage = "Garage" } interface IAmenityInfo { name: string; } interface ICustomPriceRange { startDay: string; endDay: string; price: number; note?: string; } interface IFilteredProperty extends Models.IProperty { distanceToConvention?: number; pricingValue?: number; chosenDatesNightMinimum?: number; } enum TripType { OtherPlatform = "OtherPlatform", LetsConvention = "LetsConvention", Blocked = "Blocked" } interface ITripCore { propertyId: string; arrivalDay: string; departureDay: string; } interface ITrip extends ITripCore { _id: string; createdAt: string; type: TripType; } interface IOtherPlatformTrip extends ITrip { calendarId: string; } interface ILCTripBody extends ITripCore { guestInfo: { id: string; fullName: string; email: string; phoneNumber: string; company?: string; numGuests: number; numParkingSpots: number; promoCode: string; }; } interface ICreateTripRequest extends ILCTripBody { cardToken?: string; paymentMethod?: string; } enum TripRequestState { Pending = "Pending", Approved = "Approved", Denied = "Denied", Cancelled = "Cancelled" } interface ILCTrip extends ITrip, ILCTripBody { cost: Models.IBookingCost; requestState: TripRequestState; paymentMethod?: string; stripeChargeId?: string; paymentIntentId?: string; failedPaymentCode: string | null; stripeRefundId?: string; } enum UserType { Admin = "Admin", Guest = "Guest", Host = "Host" } interface IUserCore { firstName: string; lastName: string; email: string; phoneNumber: string; } interface IUserBody extends IUserCore { password: string; } interface IUser extends IUserCore { _id: string; type: UserType; dateJoinedISO: string; hashedPassword: string; stripeCustomerId?: string; } interface IHost extends IUser { paypalEmail?: string; } interface IMyTrip { property: Models.IProperty; trip: Models.ILCTrip; } interface IQuestionBody { fullName: string; email: string; phoneNumber: string; question: string; } interface IConciergeBody { fullName: string; email: string; phoneNumber: string; desiredDates: string; desiredLocation: string; desiredBudget: string; requestType: string; maximumHeadCount: string; miscellaneous: string; } interface IQuestion extends IQuestionBody { _id: string; dateCreatedISO: string; } interface ILoginCreds { email: string; password: string; } interface IAuthDTO { authToken: string; user: IUser; } interface IEvent { _id: string; startDay: string; endDay: string; name: string; } interface IBookingCost { propertyId: string; arrivalDay: string; departureDay: string; cleaningFee: number; serviceFee: number; bookingFee: number; hostFee: number; } interface IMessageBody { body: string; seen: boolean; senderId: string; recipientId: string; propertyId: string; dateISO: string; emailSent: boolean; } interface IMessage extends IMessageBody { _id: string; } interface InboxItem { otherUser: Models.IUser; lastMessage: Models.IMessage; } interface UpdateTripPaymentMethodBody { paymentMethod: string; } interface ICalendar { _id: string; uri: string; name: string; propertyId: string; } interface IPendingTripPayment { tripId: string; } interface IConversation { _id: string; userIds: string[]; lastMessage: IMessage; } }