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 { CcBlockModule } from '@cc/shared/block';

// -- Components --
import { @module.class.name@Component } from './components/sample.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';

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

        CcBlockModule,
    ],
    declarations: [
        ...COMPONENTS,
        ...CONTAINERS,
    ],
    providers: [
        reducerProvider,
        ...SERVICES,
    ],
    exports: [
        @module.class.name@ContainerComponent,
    ],
})
export class MainParticipantModule {
}
