import React from 'react';
import { FileDownloadProps } from '../../components/FileDownload/FileDownload.types';
import { SocialProfile } from '../../directory/ServiceSocialLinks/ServiceSocialLinks.types';
import { ServiceContactProps } from '../../directory/ServiceContact/ServiceContact.types';
export interface EventProps {
    /**
     * The unique event id
     */
    id: string;
    /**
     * The event name/title
     */
    name: string;
    /**
     * The description as a plain HTML string
     */
    description: string;
    /**
     * The description as a react node
     */
    descriptionElement?: React.ReactNode;
    /**
     * The event start date and time in ISO format
     */
    startDateTime: string;
    /**
     * The event end date and time in ISO format
     */
    endDateTime?: string;
    /**
     * The event type/category
     */
    eventType?: string;
    /**
     * The target audience for the event
     */
    audience?: string[];
    /**
     * The organization hosting the event
     */
    organization: EventOrganizationProps;
    /**
     * Event location information
     */
    location?: EventLocationProps;
    /**
     * The optional service email address
     */
    email?: string;
    /**
     * The optional costs of the event
     */
    fees?: string;
    /**
     * The event website address
     */
    url?: string;
    /**
     * The event website url title
     */
    websiteUrlTitle?: string;
    /**
     * An array of contacts with phone numbers
     */
    contacts?: ServiceContactProps[];
    /**
     * An optional array of files/links belonging to the event
     */
    uploads?: FileDownloadProps[];
    /**
     * An optional array of social profile links
     */
    socialProfiles?: SocialProfile[];
    /**
     * When the event was updated. Expected format YYYY-MM-DD
     */
    updatedAt?: string;
    /**
     * The url to the shortlist
     */
    shortListPath?: string;
    /**
     * Is this event recurring?
     */
    isRecurring?: boolean;
    /**
     * Recurrence pattern information
     */
    recurrencePattern?: string;
    /**
     * Registration deadline
     */
    registrationDeadline?: string;
    /**
     * Maximum capacity for the event
     */
    capacity?: number;
    /**
     * Current number of registered attendees
     */
    currentAttendees?: number;
}
export interface EventOrganizationProps {
    /**
     * The unique identifier for the organization
     */
    id: string;
    /**
     * The name of the organization
     */
    name: string;
    /**
     * The description of the organization
     */
    description?: string;
    /**
     * The full path to the organization logo
     */
    logo?: string;
    /**
     * The organization website address
     */
    url?: string;
}
export interface EventLocationProps {
    /**
     * The unique identifier for the location
     */
    id: number;
    /**
     * The name of the location
     */
    name: string;
    /**
     * The optional description
     */
    description?: string;
    /**
     * Is the location visitable by the public?
     */
    isVisitable?: boolean;
    /**
     * The latitude of the location
     */
    latitude?: string;
    /**
     * The longitude of the location
     */
    longitude?: string;
    /**
     * The address information
     */
    address?: EventAddressProps;
    /**
     * An array of facilities that the location offers
     */
    accessibility?: EventAccessibilityProps[];
    /**
     * Is this a virtual/online event?
     */
    isVirtual?: boolean;
    /**
     * Virtual meeting link/information
     */
    virtualMeetingInfo?: string;
}
export interface EventAddressProps {
    /**
     * The unique identifier
     */
    id: number;
    /**
     * The street number and address line 1
     */
    address1: string;
    /**
     * Address line 2
     */
    address2?: string;
    /**
     * The city
     */
    city: string;
    /**
     * The county
     */
    county: string;
    /**
     * The postcode
     */
    postcode: string;
    /**
     * The country
     */
    country: string;
}
export interface EventAccessibilityProps {
    /**
     * The unique identifier
     */
    id: number;
    /**
     * The name of the facility offered by the location
     */
    accessibility: string;
}
