import { FormItemModel, LinkModel } from "."
import { PageModel } from "./abstractions"
import * as PageSection from "./pageSections"

export interface BlogCatalogPageModel extends PageModel {
  featuredBlogSection: PageSection.FeaturedBlogSectionModel
}

export interface BlogItemPageModel extends PageModel {
  commentsSection: PageSection.CommentsSectionModel 
}

export interface HomePageModel extends PageModel {
  featuresSection: PageSection.FeaturesSectionModel,
  testimonialsSection: PageSection.TestimonialsSectionModel,
  featuredBlogsSection: PageSection.FeaturedBlogsSectionModel,
  callToActionSection: PageSection.CallToActionSectionModel
}

export interface ShopCartPageModel extends PageModel {
  productsSection: PageSection.CartProductsSectionModel
}

export interface ShopCatalogPageModel extends PageModel {
  shopItemsSection: PageSection.ShopItemsSectionModel
}

export interface ShopCheckoutPageModel extends PageModel {
  billingAddressSection: PageSection.BillingAddressSectionModel,
  shippingAddressSection: PageSection.ShippingAddressSectionModel,
  settingsSection: PageSection.CheckoutSettingsSectionModel,
  summarySection: PageSection.CheckoutSummarySectionModel,
  paymentSection: PageSection.PaymentSectionModel,
  submit: FormItemModel
}

export interface ShopItemPageModel extends PageModel {
  productSection: PageSection.ProductSectionModel
  relatedProductsSection: PageSection.RelatedProductsSectionModel
}

export interface SignInPageModel extends PageModel {
  title: string,
  email: FormItemModel,
  password: FormItemModel,
  dontHaveAnAccount: string,
  signUpLink: LinkModel,
  submit: FormItemModel
}

export interface SignUpPageModel extends PageModel {
  title: string,
  username: FormItemModel,
  email: FormItemModel,
  reEmail: FormItemModel
  password: FormItemModel,
  rePassword: FormItemModel,
  acceptTermsAndConditions: string,
  submit: FormItemModel
}