import { createModule } from '@bcs/sdk/lib/sdk-core/persistence';

import getActions from './actions';
import { DEFAULT_STATE, MODULE_NAME } from './constants';
import getReducers from './reducers';
import getSagas from './sagas';
import {
  bankSignersSelector,
  sentStatusSelector,
} from './selectors';
import {
  IApiEntities,
  IOwnStore,
  Permissions,
  Routes,
  StorageKeys,
} from './types';

export const declaration = createModule<
  IOwnStore,
  {},
  StorageKeys,
  IApiEntities,
  Routes,
  Permissions
  >((opts) => {
    const actions = getActions(opts);
    const reducers = getReducers(actions);
    const sagas = getSagas(opts, actions);
    const selectors = {
      bankSigner: bankSignersSelector,
      sentStatus: sentStatusSelector,
    };

    return {
      name: MODULE_NAME,
      description: 'Модуль-хэлпер для модулей ЭДО и ДКБО. Нужен, чтобы добавлять сущность bankSigners',
      defaultStore: DEFAULT_STATE,
      actions: {
        getBankSignersAction: actions.getBankSignersAction,
        postBankSignersAction: actions.postBankSignersAction,
      },
      selectors,
      reducers,
      sagas,
    };
  });
