import type { Schema, Struct } from '@strapi/strapi';

export interface AddressMapAddressMap extends Struct.ComponentSchema {
  collectionName: 'components_address_map_address_maps';
  info: {
    description: '';
    displayName: 'AddressMap';
  };
  attributes: {
    address: Schema.Attribute.RichText;
    button: Schema.Attribute.Component<'shared.links', false>;
    directionButton: Schema.Attribute.Component<'shared.links', false>;
    email: Schema.Attribute.Email &
      Schema.Attribute.Required &
      Schema.Attribute.Unique;
    mapData: Schema.Attribute.Component<'shared.map', false>;
    phone: Schema.Attribute.String;
    title: Schema.Attribute.String;
  };
}

export interface AmenitiesAmenities extends Struct.ComponentSchema {
  collectionName: 'components_amenities_amenities';
  info: {
    description: '';
    displayName: 'Amenities';
  };
  attributes: {
    description: Schema.Attribute.Text;
    image: Schema.Attribute.Component<'shared.amenities', true>;
    title: Schema.Attribute.String;
  };
}

export interface BannerBanner extends Struct.ComponentSchema {
  collectionName: 'components_banner_banners';
  info: {
    description: '';
    displayName: 'Banner';
  };
  attributes: {
    button: Schema.Attribute.Component<'shared.links', false>;
    description: Schema.Attribute.Text;
    image: Schema.Attribute.Component<'shared.image-set', false>;
    labels: Schema.Attribute.Component<'banner.labels', false>;
    specifications: Schema.Attribute.Component<'shared.specifications', true>;
    title: Schema.Attribute.String;
  };
}

export interface BannerLabels extends Struct.ComponentSchema {
  collectionName: 'components_banner_labels';
  info: {
    displayName: 'labels';
  };
  attributes: {
    scrollDown: Schema.Attribute.String;
  };
}

export interface ContactContact extends Struct.ComponentSchema {
  collectionName: 'components_contact_contact';
  info: {
    description: '';
    displayName: 'Contact';
  };
  attributes: {
    budgetOptions: Schema.Attribute.Component<'shared.select', true>;
    footerText: Schema.Attribute.Text;
    labels: Schema.Attribute.Component<'contact.labels', false>;
    purposeOptions: Schema.Attribute.Component<'shared.select', true>;
    title: Schema.Attribute.String;
    titleOptions: Schema.Attribute.Component<'shared.select', true>;
    unitSizeOptions: Schema.Attribute.Component<'shared.select', true>;
    unitTypeOptions: Schema.Attribute.Component<'shared.select', true>;
  };
}

export interface ContactLabels extends Struct.ComponentSchema {
  collectionName: 'components_contact_labels';
  info: {
    description: '';
    displayName: 'Labels';
  };
  attributes: {
    budget: Schema.Attribute.String;
    clearButtonLabel: Schema.Attribute.String;
    company: Schema.Attribute.String;
    date: Schema.Attribute.String;
    email: Schema.Attribute.String;
    errorCompanyRequired: Schema.Attribute.String;
    errorDateRequired: Schema.Attribute.String;
    errorEmailInvalid: Schema.Attribute.String;
    errorEmailRequired: Schema.Attribute.String;
    errorFirstNameInvalid: Schema.Attribute.String;
    errorFirstNameRequired: Schema.Attribute.String;
    errorLastNameInvalid: Schema.Attribute.String;
    errorLastNameRequired: Schema.Attribute.String;
    errorMobileInvalid: Schema.Attribute.String;
    errorMobileRequired: Schema.Attribute.String;
    errorPurposeRequired: Schema.Attribute.String;
    errorRecaptchaRequired: Schema.Attribute.String;
    errorSessionRequired: Schema.Attribute.String;
    errorTermsRequired: Schema.Attribute.String;
    errorTitleRequired: Schema.Attribute.String;
    errorUnitTypeRequired: Schema.Attribute.String;
    firstName: Schema.Attribute.String;
    formErrorText: Schema.Attribute.String;
    formSuccessText: Schema.Attribute.String;
    lastName: Schema.Attribute.String;
    mobile: Schema.Attribute.String;
    purpose: Schema.Attribute.String;
    residence: Schema.Attribute.String;
    session: Schema.Attribute.String;
    submitButtonLabel: Schema.Attribute.String;
    terms: Schema.Attribute.Text;
    title: Schema.Attribute.String;
    unitSize: Schema.Attribute.String;
    unitType: Schema.Attribute.String;
  };
}

export interface GalleryGallery extends Struct.ComponentSchema {
  collectionName: 'components_gallery_galleries';
  info: {
    description: '';
    displayName: 'Gallery';
  };
  attributes: {
    description: Schema.Attribute.Text;
    gallery: Schema.Attribute.Component<'shared.gallery', true>;
    subtitle: Schema.Attribute.String;
    title: Schema.Attribute.String;
  };
}

export interface ImageCarouselImageCarousel extends Struct.ComponentSchema {
  collectionName: 'components_image_carousel_image_carousels';
  info: {
    displayName: 'ImageCarousel';
  };
  attributes: {
    slides: Schema.Attribute.Component<'shared.amenities', true>;
  };
}

export interface MasterPlanMasterPlan extends Struct.ComponentSchema {
  collectionName: 'components_master_plan_master_plans';
  info: {
    displayName: 'MasterPlan';
  };
  attributes: {
    button: Schema.Attribute.Component<'shared.links', false>;
    description: Schema.Attribute.Text;
    image: Schema.Attribute.Component<'shared.image-set', false>;
    title: Schema.Attribute.String;
  };
}

export interface SharedAmenities extends Struct.ComponentSchema {
  collectionName: 'components_shared_amenities';
  info: {
    displayName: 'amenities';
  };
  attributes: {
    description: Schema.Attribute.Text;
    image: Schema.Attribute.Component<'shared.image-set', false>;
    title: Schema.Attribute.String;
  };
}

export interface SharedGallery extends Struct.ComponentSchema {
  collectionName: 'components_shared_galleries';
  info: {
    displayName: 'gallery';
  };
  attributes: {
    image: Schema.Attribute.Component<'shared.image-set', false>;
    title: Schema.Attribute.String;
  };
}

export interface SharedImageSet extends Struct.ComponentSchema {
  collectionName: 'components_shared_image_sets';
  info: {
    description: '';
    displayName: 'ImageSet';
  };
  attributes: {
    alternativeText: Schema.Attribute.String;
    height: Schema.Attribute.BigInteger;
    url: Schema.Attribute.String;
    width: Schema.Attribute.BigInteger;
  };
}

export interface SharedLinks extends Struct.ComponentSchema {
  collectionName: 'components_shared_links';
  info: {
    displayName: 'Links';
  };
  attributes: {
    label: Schema.Attribute.String;
    url: Schema.Attribute.String;
  };
}

export interface SharedMap extends Struct.ComponentSchema {
  collectionName: 'components_shared_maps';
  info: {
    description: '';
    displayName: 'Map';
  };
  attributes: {
    latitude: Schema.Attribute.Decimal;
    longitude: Schema.Attribute.Decimal;
    zoom: Schema.Attribute.Decimal;
  };
}

export interface SharedSelect extends Struct.ComponentSchema {
  collectionName: 'components_shared_selects';
  info: {
    displayName: 'Select';
  };
  attributes: {
    label: Schema.Attribute.String;
    value: Schema.Attribute.String;
  };
}

export interface SharedSpecifications extends Struct.ComponentSchema {
  collectionName: 'components_shared_specifications';
  info: {
    description: '';
    displayName: 'specifications';
  };
  attributes: {
    image: Schema.Attribute.Component<'shared.image-set', false>;
    label: Schema.Attribute.String;
    value: Schema.Attribute.String;
  };
}

export interface TermsAndConditionsTermsAndConditions
  extends Struct.ComponentSchema {
  collectionName: 'components_terms_and_conditions_terms_and_conditions';
  info: {
    displayName: 'TermsAndConditions';
  };
  attributes: {
    termsAndConditions: Schema.Attribute.RichText;
  };
}

declare module '@strapi/strapi' {
  export module Public {
    export interface ComponentSchemas {
      'address-map.address-map': AddressMapAddressMap;
      'amenities.amenities': AmenitiesAmenities;
      'banner.banner': BannerBanner;
      'banner.labels': BannerLabels;
      'contact.contact': ContactContact;
      'contact.labels': ContactLabels;
      'gallery.gallery': GalleryGallery;
      'image-carousel.image-carousel': ImageCarouselImageCarousel;
      'master-plan.master-plan': MasterPlanMasterPlan;
      'shared.amenities': SharedAmenities;
      'shared.gallery': SharedGallery;
      'shared.image-set': SharedImageSet;
      'shared.links': SharedLinks;
      'shared.map': SharedMap;
      'shared.select': SharedSelect;
      'shared.specifications': SharedSpecifications;
      'terms-and-conditions.terms-and-conditions': TermsAndConditionsTermsAndConditions;
    }
  }
}
