import type { IVeevaClmBinderFields, IVeevaConfig, VeevaEnv } from "@inizioevoke/veeva-astroclm-core/types";
import { formatExtId as __formatExtId } from '@inizioevoke/veeva-astroclm-core/lib';

interface IVeevaConfigArgs {
  veevaEnv?: VeevaEnv;
  isTraining?: boolean;
}
export default function ({ veevaEnv = 'client', isTraining = false }: IVeevaConfigArgs = {}): IVeevaConfig {
  const isEvokeBuild = veevaEnv === 'evoke';
  const EXT_ID = `##EXTERNAL_ID##${isTraining ? '_TRN' : ''}`;
  const PRESENTATION_NAME = '##PRESENTATION_NAME##';

  const formatExtId = (id: string) => {
    return __formatExtId(EXT_ID, id);
  };

  const binderFields: IVeevaClmBinderFields = {
    // language: isEvokeBuild ? undefined : 'English',
    // crmOrg: isEvokeBuild ? undefined : { crmId: ['CRM_ORD_ID'] },
    // crmProduct: isEvokeBuild ? undefined : { id: 'VEEVA_ID_FROM_URL' },
    // crmDetailGroup: isEvokeBuild ? undefined : { id: 'VEEVA_ID_FROM_URL' },
    // detailGroup: undefined
  };

  return {
    dimensions: { width: ##DIMENSIONS_WIDTH##, height: ##DIMENSIONS_HEIGHT## },
    thumbnails: {
      default: {
        queryStringParams: {
          screenshots: true
        }
      }
    },
    presentation: {
      externalId: EXT_ID,
      presentationId: `##PRESENTATION_ID##${isTraining ? '_trn' : ''}`,
      product: '##PRODUCT##',
      name: `${PRESENTATION_NAME}${isTraining ? ' [Training]' : ''}`,
      country: 'United States',
      isTraining,
      crmTarget: '##CRM_TARGET##',
      ...binderFields,

      shared: {
        externalId: formatExtId('SHARED'),
        ...binderFields
      },

      slideSettings: {
        mediaType: 'HTML',
        disableActions: ##DISABLE_ACTIONS##,
        iosResolution: '##IOS_RESOLUTION##',
        ...binderFields
      },
      slides: ##SLIDES##
    }
  };
}

// SLIDE_IDS: [##SLIDE_IDS##]
