/* This file is automatically generated for @graphcommerce/magento-product */

export * from '.'
import { Plugin as GoogleDatalayerAddProductsToCartForm } from '@graphcommerce/google-datalayer/plugins/GoogleDatalayerAddProductsToCartForm'
import { Plugin as GoogleDatalayerProductListItem } from '@graphcommerce/google-datalayer/plugins/GoogleDatalayerProductListItem'
import { Plugin as GoogleDatalayerProductListItemsBase } from '@graphcommerce/google-datalayer/plugins/GoogleDatalayerProductListItemsBase'
import { Plugin as GoogleDatalayerViewItem } from '@graphcommerce/google-datalayer/plugins/GoogleDatalayerViewItem'
import { Plugin as WishlistProductAddToCartFormPlugin } from '@graphcommerce/magento-wishlist/plugins/WishlistProductAddToCartFormPlugin'
import { ComponentProps } from 'react'
import { 
  AddProductsToCartForm as AddProductsToCartFormBase,
  ProductListItem as ProductListItemBase,
  ProductListItemsBase as ProductListItemsBaseBase,
  ProductPageMeta as ProductPageMetaBase,
} from '.'

/**
 * Interceptor for `<AddProductsToCartForm/>` with these plugins:
 * 
 * - `@graphcommerce/magento-wishlist/plugins/WishlistProductAddToCartFormPlugin`
 * - `@graphcommerce/google-datalayer/plugins/GoogleDatalayerAddProductsToCartForm`
 */
type AddProductsToCartFormProps = ComponentProps<typeof AddProductsToCartFormBase>

function WishlistProductAddToCartFormPluginInterceptor(props: AddProductsToCartFormProps) {
  return <WishlistProductAddToCartFormPlugin {...props} Prev={AddProductsToCartFormBase} />
}
function GoogleDatalayerAddProductsToCartFormInterceptor(props: AddProductsToCartFormProps) {
  return <GoogleDatalayerAddProductsToCartForm {...props} Prev={WishlistProductAddToCartFormPluginInterceptor} />
}
export const AddProductsToCartForm = GoogleDatalayerAddProductsToCartFormInterceptor

/**
 * Interceptor for `<ProductListItem/>` with these plugins:
 * 
 * - `@graphcommerce/google-datalayer/plugins/GoogleDatalayerProductListItem`
 */
type ProductListItemProps = ComponentProps<typeof ProductListItemBase>

function GoogleDatalayerProductListItemInterceptor(props: ProductListItemProps) {
  return <GoogleDatalayerProductListItem {...props} Prev={ProductListItemBase} />
}
export const ProductListItem = GoogleDatalayerProductListItemInterceptor

/**
 * Interceptor for `<ProductListItemsBase/>` with these plugins:
 * 
 * - `@graphcommerce/google-datalayer/plugins/GoogleDatalayerProductListItemsBase`
 */
type ProductListItemsBaseProps = ComponentProps<typeof ProductListItemsBaseBase>

function GoogleDatalayerProductListItemsBaseInterceptor(props: ProductListItemsBaseProps) {
  return <GoogleDatalayerProductListItemsBase {...props} Prev={ProductListItemsBaseBase} />
}
export const ProductListItemsBase = GoogleDatalayerProductListItemsBaseInterceptor

/**
 * Interceptor for `<ProductPageMeta/>` with these plugins:
 * 
 * - `@graphcommerce/google-datalayer/plugins/GoogleDatalayerViewItem`
 */
type ProductPageMetaProps = ComponentProps<typeof ProductPageMetaBase>

function GoogleDatalayerViewItemInterceptor(props: ProductPageMetaProps) {
  return <GoogleDatalayerViewItem {...props} Prev={ProductPageMetaBase} />
}
export const ProductPageMeta = GoogleDatalayerViewItemInterceptor
