/**
 * <%= titleCase(pluralDomainName) %> Domain
 * v<%= zionAppsGeneratorVersion %> | Generated on <%= zionAppsGeneratorBuildDate %>
 */
import {
  <%= pascalCase(singularDomainName) %>,<% if (extendDomainCode) { %>
  INgRxCoreError,<% } %>
  INgRxCoreLastResult,
  INgRxCoreModuleConfig,
  INgRxCoreState<% if (extendDomainCode) { %>,
  NgRxCoreEmptyPayloadActionGenerator,
  NgRxCoreItemActionGenerator,
  NgRxCoreListActionGenerator<% } %>
} from '@zionusa-nx-workspace/shared/domain';
import { INgRxCoreActionSet, INgRxCoreActionType } from '@zionusa-nx-workspace/shared/ngrx-core';
import { sharedEnvironment } from '@zionusa-nx-workspace/shared/environment';<% if (extendDomainCode) { %>

export interface I<%= pascalCase(pluralDomainName) %>ActionType extends INgRxCoreActionType {
  // Add additional action types
  EmptyExample: string;
  ErrorExample: string;
  ItemExample: string;
  ListExample: string;
}

export interface I<%= pascalCase(pluralDomainName) %>Actions extends INgRxCoreActionSet<<%= pascalCase(singularDomainName) %>, number> {
  EmptyExample: NgRxCoreEmptyPayloadActionGenerator;
  ErrorExample: NgRxCoreItemActionGenerator<INgRxCoreError>;
  ItemExample: NgRxCoreItemActionGenerator<<%= pascalCase(singularDomainName) %>>;
  ListExample: NgRxCoreListActionGenerator<<%= pascalCase(singularDomainName) %>>;
  Type: I<%= pascalCase(pluralDomainName) %>ActionType;
}<% } %>

export interface <%= pascalCase(pluralDomainName) %>State extends INgRxCoreState<<%= pascalCase(singularDomainName) %>> {
  currentId: string | number | null;
  lastResult: INgRxCoreLastResult | null;
  loaded: boolean;
}

export const <%= pascalCase(pluralDomainName) %>Config: INgRxCoreModuleConfig = {
  ...sharedEnvironment,
  autoSaveDelay: 100,
  endpoint: sharedEnvironment.<%= baseUri %> + '/<%= paramCase(pluralDomainName) %>',
  idProperty: '<%= idPropertyName %>',
  initialStateMap: {},
  pluralName: '<%= pascalCase(pluralDomainName) %>',
  singularName: '<%= pascalCase(singularDomainName) %>',
  timeoutForRequests: 30000,
};
