import { CollectionModuleConfig } from './collection-modules/collection-module-config'; export interface RootConfigAlterationHook { key: string; name: string; } export interface CLIScheduledFunction { functionName: string; policyStatuses: Array; frequency: any; } export interface CLIFulfillmentData { [key: string]: { label: string; valueType: string | number | 'enum' | 'currency'; isValue?: boolean; valueOptions?: { [key: string]: string }; }; } export interface CLIFulfillmentType { key: string; label: string; fulfillmentData: CLIFulfillmentData; } export interface RootConfigRead { settings: Record; scheduledFunctions: CLIScheduledFunction[]; fulfillmentTypes: CLIFulfillmentType[]; stack: string; } export interface RootConfigWrite extends RootConfigRead { configVersion?: string; // Included for backwards compatability productModuleName: string; productModuleKey: string; organizationId: string; host: string; alterationHooks: RootConfigAlterationHook[]; applicationAlterationHooks: RootConfigAlterationHook[]; memberAlterationHooks: RootConfigAlterationHook[]; codeFileOrder: string[]; // Order in which the files needs to be concatenated } export const isProductModuleConfig = (config: RootConfigWrite | CollectionModuleConfig): config is RootConfigWrite => !!(config as RootConfigWrite).productModuleKey;