import {
  InventoryLevelAirtableFields,
  LocationAirtableFields,
  OrderAirtableFields,

} from '../';
import {
  CustomerTypeName,
  InventoryLevelTypeName,
  LineItemTypeName,
  LocationTypeName,
  OrderTypeName,
  ProductTypeName,
  ProductVariantTypeName,
  ShopifyObjectType
} from '../../../models';

import { CustomerAirtableFields } from './CustomerAirtableFields';
import { LineItemAirtableFields } from './LineItemAirtableFields';
import { ProductAirtableFields } from './ProductAirtableFields';
import { ProductVariantAirtableFields } from './ProductVariantAirtableFields';

export * from './ShopifyObjectAirtableFields';
export * from './ProductAirtableFields';
export * from './ProductVariantAirtableFields';
export * from './OrderAirtableFields';
export * from './LocationAirtableFields';
export * from './InventoryLevelAirtableFields';
export * from './LineItemAirtableFields';
export * from './CustomerAirtableFields';

export type ShopifyObjectsAirtableFields = ProductAirtableFields | ProductVariantAirtableFields | OrderAirtableFields | LocationAirtableFields | InventoryLevelAirtableFields | LineItemAirtableFields | CustomerAirtableFields;

type _ShopifyObjectsAirtableFieldsMap = Record<ShopifyObjectType, ShopifyObjectsAirtableFields>;

export interface ShopifyObjectsAirtableFieldsMap extends _ShopifyObjectsAirtableFieldsMap {
  [ProductTypeName]: ProductAirtableFields;
  [ProductVariantTypeName]: ProductVariantAirtableFields;
  [OrderTypeName]: OrderAirtableFields;
  [LocationTypeName]: LocationAirtableFields;
  [LineItemTypeName]: LineItemAirtableFields;
  [CustomerTypeName]: CustomerAirtableFields;
  [InventoryLevelTypeName]: InventoryLevelAirtableFields;
};