import {  FeatureModel, FormItemModel, ImageModel, LinkModel, MenuItemModel, TestimonialModel } from "./"
import { AddressPageSectionModel, PageSectionModel } from "./abstractions"

export interface BillingAddressSectionModel extends AddressPageSectionModel { }

export interface CallToActionSectionModel extends PageSectionModel {
  privacyDisclaimer?: string
  email?: FormItemModel
}

export interface CartProductsSectionModel extends PageSectionModel {
  product: string,
  price: string,
  quantity: string,
  subtotal: string,
  continueShopping: LinkModel,
  checkout: LinkModel
}

export interface CheckoutSettingsSectionModel extends PageSectionModel {
  shippingAddressSameAsBillingAddress: string,
  saveThisInformation: string
}

export interface CheckoutSummarySectionModel extends PageSectionModel {
  title: string,
  total: string,

  promoCode: FormItemModel,
  submit: FormItemModel
}

export interface CommentsSectionModel extends PageSectionModel {
  leaveComment: string
}

export interface FeaturedBlogSectionModel extends PageSectionModel {
  readTime: string
}

export interface FeaturedBlogsSectionModel extends PageSectionModel {}

export interface FeaturesSectionModel extends PageSectionModel {
  items: FeatureModel []
}

export interface PaymentSectionModel extends PageSectionModel {
  nameOnCard: FormItemModel,
  cardNumber: FormItemModel,
  expiration: FormItemModel,
  cvv: FormItemModel
}

export interface ProductSectionModel extends PageSectionModel {
  availableQuantity: string,
  addToCart: string
}

export interface RelatedProductsSectionModel extends PageSectionModel {
  addToCart: string
}

export interface ShippingAddressSectionModel extends AddressPageSectionModel { }

export interface TestimonialsSectionModel extends PageSectionModel {
  items: TestimonialModel []
}

export interface TitleSectionModel extends PageSectionModel {
  image?: ImageModel,
  primaryLink?: MenuItemModel,
  secondaryLink?: MenuItemModel,
  postedOnBy?: string
}

export interface ShopItemsSectionModel extends PageSectionModel {
  addToCart: string
}
