export type Event = {
  Id: number;
  Availability;
  number;
  ChildAgeLimit: number;
  ChildrenAllowed: number;
  Created: Date;
  CreatedBy: string;
  EventDate: Date;
  EventDescription: string;
  UrlImageEvent?: string;
  IsChildrenAllowed: boolean;
  IsParentRequired: boolean;
  IsRegisteringEnabled: number;
  MaxGuests: number;
  Modified: Date;
  ModifiedBy: string;
  Name: string;
  ParentType: string;
  RegistrationStart: Date;
  UrlSurvey: string;
  Guests?: number;
  UnionizedAvailability?: number;
  UnionizedGuests?: number;
};

export type Relative = {
  FirstName: string;
  LastName: string;
  Age: number;
  TshirtSize?: string;
  TshirtSizeDisplay?: string;
  Relationship?: string;
  RelationshipCode?: string;
  Gender?: string;
  Birthdate?: string;
};

export type Field = {
  AvailableFieldId: number;
  EventExtraFieldId: number;
  EventId: number;
  FieldDisplayName: string;
  FieldName: string;
  FieldOrder: number;
  FieldType: string;
};

export type User = {
  EmployeeName: string;
  EmployeeNumber: number;
  Age: number;
  TshirtSize: string | null;
  TshirtSizeDisplay: string | null;
};

export type Volunteer = {
  VolunteerName: string;
};

export type SelectOptions = {
  value: string | number;
  label: string;
};

export type CatalogueOption = {
  FieldsCatalogueId: number;
  FieldsCatalogueName: string;
  FieldOption: string;
  FieldOptionOrder: number;
};

export type MessageOption = {
  ExtraCode: string | null;
  Message: string;
  StatusCode: string;
};

export type DropdownOption = CatalogueOption | MessageOption;

export type FilterValues = {
  orderBy: string;
  order: string;
  minCapacity: number;
  maxCapacity: number;
  startDate: Date;
  endDate: Date;
};
