import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
// import { StoreModule } from '@ngrx/store';
// import { EffectsModule } from '@ngrx/effects';

import { TranslateModule } from '@ngx-translate/core';

import { EuiButtonModule } from '@eui/components/eui-button';
import { EuiPageModule } from '@eui/components/eui-page';

// -- eUI module imports specific (recommended for treeshakability)
const EUI_MODULES = [
    EuiButtonModule,
    EuiPageModule,
];

// -- Components --
import { @module.class.name@Component } from './components/main.component';

const COMPONENTS = [
    @module.class.name@Component,
];

// -- Containers --
import { @module.class.name@ContainerComponent } from './containers/container.component';

const CONTAINERS = [
    @module.class.name@ContainerComponent,
];

// -- Effects --
const EFFECTS = [
];

// -- Reducer --
// import { TOKEN, reducerProvider } from './store/reducers';

// -- Services --
const SERVICES = [
];

// -- Constants --
import { namespace } from './constants';

// -- Routes --
import { RoutingModule } from './routing-module';

@NgModule({
    imports: [
        CommonModule,
        // StoreModule.forFeature(namespace, TOKEN),
        // EffectsModule.forFeature(EFFECTS),
        TranslateModule,

        ...EUI_MODULES,
    ],
    declarations: [
        ...COMPONENTS,
        ...CONTAINERS,
    ],
    providers: [
        // reducerProvider,
        ...SERVICES,
    ],
    exports: [],
})
export class @module.class.name@CommonModule {
}

@NgModule({
    imports: [
        @module.class.name@CommonModule,
        RoutingModule,
    ],
    exports: [
        @module.class.name@CommonModule,
    ],
})
export class @module.class.name@Module {
}
