// Event interface IEventResponseData { alwaysShowWaitingList: boolean | null; isTimeSlotEvent: boolean; minimumAge: number | string | null; name: string; redirectUrl: string | null; referralsEnabled: boolean; salesEnd: string; salesEnded: boolean; salesStart: boolean | null; salesStarted: boolean; slug: string; startDate: string; timezone: string; country: any; timeslotSettings: ITimeslotSettings | undefined | null; preregEnabled: boolean; preregStarted: boolean; preregEnded: boolean; allowMultipleTicketTypePurchases: boolean | null; } interface ITimeslotSettings { minPricePerDate: any; showPrice: boolean; groupsInfo: any; availableDates: string[]; timeSlotDateInfo: any; } interface IEventResponse extends IAxiosResponseData { data: { attributes: IEventResponseData; relationships: Array; type: string; }; } // Tickets interface ITicketData { displayName: string; displayTicket: boolean; feeIncluded: boolean; feeMode: string; feeText: string; id: string; maxQuantity: number; minQuantity: number; multiplier: number; oldPrice: number; optionName: string; price: number; priceCurrency: string; priceSymbol: string; salesEnded: boolean; salesStarted: boolean; soldOut: number; x_face_value: number; isForward: boolean; soldOutMessage: number | string; sortOrder: number; tags: Array; taxName: string; taxesIncluded: boolean; } interface ITicketItemData { [key: number]: ITicketData; } interface ITicketsResponseData { promoCodeValidationMessage: string | null; validPromoCode: boolean; is_access_code: boolean; isPromotionsEnabled: boolean; showWaitingList: boolean; tickets: ITicketItemData; ValidPromoCode: boolean; } interface ITicketsAdaptedResponseData extends ITicketsResponseData { tickets: ITicketData[]; } interface ITimeslotsAdaptedData extends ITicketsResponseData { timeslots: {[key: string]: { [key: string]: ITicketData[] }}; } interface ITicketsResponse extends IAxiosResponseData { data: { attributes: ITicketsResponseData; relationships: Array; type: string; }; } interface ITicketsAdaptedResponse extends IAxiosResponseData { data: { attributes: ITicketsAdaptedResponseData; relationships: Array; type: string; }; } interface ITimeslotsAdaptedResponse extends IAxiosResponseData { data: { attributes: ITimeslotsAdaptedData; relationships: Array; type: string; }; } // Countries interface ICountriesAdaptedData { label: string; value: string; } interface ICountriesResponseData { [key: number]: string; code: string; id: string; name: string; } interface ICountriesResponse extends IAxiosResponseData { data: ICountriesResponseData[]; } // Country States interface IStatesData { [key: number]: string; } interface IStatesResponse extends IAxiosResponseData { data: IStatesData; } // Waiting List interface IWaitingListRequestData { attributes : { email: string; firstName: string; lastName: string; quantity: string; ticketTypeId: string; }; } type IWaitingListResponse = IAxiosResponseData // RSVP interface IRSVPRequestData { email: string; } type IRSVPResponse = IAxiosResponseData interface TimeSlotsResponse extends IAxiosResponseData { data: string[]; }