import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { RouterModule } from '@angular/router';
import {
  ButtonModule,
  CardModule,
  CheckboxModule,
  DeleteDropdownModule,
  DropdownModule,
  IconModule,
  ModalModule,
  LoadingModule,
} from '@libs/ui';
import { SharedModule } from '../../shared/shared.module';
import { RecommendationsdModule } from '../recommendations/recommendations.module';
import { ConfirmationItemListComponent } from './components/confirmation-item-list/confirmation-item-list.component';
import { ConfirmationOverviewComponent } from './components/confirmation-overview/confirmation-overview.component';
import { PrinterSelectionModule } from '../../components/printer-selection/printer-selection.module';
import { CartRoutingModule } from './cart-routing.module';
import { DeliveryCartRowComponent } from './components/delivery-cart-row/delivery-cart-row.component';
import { DeliveryCartComponent } from './components/delivery-cart/delivery-cart.component';
import { InvoiceAddressComponent } from './components/invoice-address/invoice-address.component';
import { NotificationSettingsComponent } from './components/notification-settings/notification-settings.component';
import { PayMethodComponent } from './components/pay-method/pay-method.component';
import { PickUpCartRowComponent } from './components/pick-up-cart-row/pick-up-cart-row.component';
import { AffiliateAddressPipe } from './components/pick-up-cart/affiliate-address.pipe';
import { PickUpCartComponent } from './components/pick-up-cart/pick-up-cart.component';
import { TakeNowCartRowComponent } from './components/take-now-cart-row/take-now-cart-row.component';
import { TakeNowCartComponent } from './components/take-now-cart/take-now-cart.component';
import { CartConfirmationComponent } from './pages/cart-confirmation/cart-confirmation.component';
import { CartReviewComponent } from './pages/cart-review/cart-review.component';
import { ChangeOrderTypeComponent } from './components/change-order-type/change-order-type.component';
import { SearchDropdownModule } from '@libs/ui/lib/search-dropdown';
import { DownloadCartComponent } from './components/download-cart/download-cart.component';
import { DownloadCartRowComponent } from './components/download-cart-row/download-cart-row.component';

@NgModule({
  declarations: [
    CartReviewComponent,
    PayMethodComponent,
    CartConfirmationComponent,
    ConfirmationItemListComponent,
    ConfirmationOverviewComponent,
    DeliveryCartRowComponent,
    PickUpCartRowComponent,
    TakeNowCartRowComponent,
    NotificationSettingsComponent,
    InvoiceAddressComponent,
    CartReviewComponent,
    TakeNowCartComponent,
    DeliveryCartComponent,
    AffiliateAddressPipe,
    PickUpCartComponent,
    ChangeOrderTypeComponent,
    DownloadCartComponent,
    DownloadCartRowComponent,
  ],
  exports: [
    CartReviewComponent,
    PayMethodComponent,
    CartConfirmationComponent,
    ConfirmationItemListComponent,
    ConfirmationOverviewComponent,
    DeliveryCartRowComponent,
    PickUpCartRowComponent,
    TakeNowCartRowComponent,
    NotificationSettingsComponent,
    InvoiceAddressComponent,
    DeliveryCartComponent,
    TakeNowCartComponent,
    PickUpCartComponent,
    AffiliateAddressPipe,
    ChangeOrderTypeComponent,
  ],
  imports: [
    CommonModule,
    FormsModule,
    ReactiveFormsModule,
    SharedModule,
    RouterModule,
    CardModule,
    ModalModule,
    ButtonModule,
    CheckboxModule,
    DropdownModule,
    DeleteDropdownModule,
    IconModule,
    CartRoutingModule,
    RecommendationsdModule,
    PrinterSelectionModule,
    SearchDropdownModule,
    LoadingModule,
  ],
  providers: [AffiliateAddressPipe],
})
export class CartModule {}
