import { ViewArrayImpl } from "./services/view-array/view-array.impl";
import { RegexMatchViewComponent } from "./directives/ui/regex-match-view/regex-match-view.component";
import { NgModule } from 'ng-metadata/core';
import { QuayRoutesModule } from "./quay-routes.module";
import { DockerfilePathSelectComponent } from './directives/ui/dockerfile-path-select/dockerfile-path-select.component';
import { ContextPathSelectComponent } from './directives/ui/context-path-select/context-path-select.component';
import { ManageTriggerCustomGitComponent } from './directives/ui/manage-trigger-custom-git/manage-trigger-custom-git.component';
import { ManageTriggerGithostComponent } from './directives/ui/manage-trigger-githost/manage-trigger-githost.component';
import { LinearWorkflowComponent } from './directives/ui/linear-workflow/linear-workflow.component';
import { LinearWorkflowSectionComponent } from './directives/ui/linear-workflow/linear-workflow-section.component';
import { QuayConfigModule } from './quay-config.module';
import { AppPublicViewComponent } from './directives/ui/app-public-view/app-public-view.component';
import { VisibilityIndicatorComponent } from './directives/ui/visibility-indicator/visibility-indicator.component';
import { CorTableComponent } from './directives/ui/cor-table/cor-table.component';
import { CorTableColumn } from './directives/ui/cor-table/cor-table-col.component';
import { ChannelIconComponent } from './directives/ui/channel-icon/channel-icon.component';
import { TagSigningDisplayComponent } from './directives/ui/tag-signing-display/tag-signing-display.component';
import { RepositorySigningConfigComponent } from './directives/ui/repository-signing-config/repository-signing-config.component';
import { TimeMachineSettingsComponent } from './directives/ui/time-machine-settings/time-machine-settings.component';
import { DurationInputComponent } from './directives/ui/duration-input/duration-input.component';
import { BuildServiceImpl } from './services/build/build.service.impl';
import { AvatarServiceImpl } from './services/avatar/avatar.service.impl';
import { DockerfileServiceImpl } from './services/dockerfile/dockerfile.service.impl';
import { DataFileServiceImpl } from './services/datafile/datafile.service.impl';
import { UtilServiceImpl } from './services/util/util.service.impl';
import { QuayRequireDirective } from './directives/structural/quay-require/quay-require.directive';


/**
 * Main application module.
 */
@NgModule({
  imports: [
    QuayRoutesModule,
    QuayConfigModule,
  ],
  declarations: [
    RegexMatchViewComponent,
    DockerfilePathSelectComponent,
    ContextPathSelectComponent,
    ManageTriggerCustomGitComponent,
    ManageTriggerGithostComponent,
    LinearWorkflowComponent,
    LinearWorkflowSectionComponent,
    AppPublicViewComponent,
    VisibilityIndicatorComponent,
    CorTableComponent,
    CorTableColumn,
    ChannelIconComponent,
    QuayRequireDirective,
    TagSigningDisplayComponent,
    RepositorySigningConfigComponent,
    TimeMachineSettingsComponent,
    DurationInputComponent,
  ],
  providers: [
    ViewArrayImpl,
    BuildServiceImpl,
    AvatarServiceImpl,
    DockerfileServiceImpl,
    DataFileServiceImpl,
    UtilServiceImpl,
    {provide: 'fileReaderFactory', useValue: () => new FileReader()},
  ],
})
export class QuayModule {

}