export interface Market {
  locale: string;
  country: string;
  phonePrefix?: string;
  mastheadDirOverride?: 'rtl';
}

export interface MarketInfo extends Market {
  market: string;
}

export type LpEnvironment = 'shared' | 'prod';

export interface LpSetupConfig {
  locale: MarketInfo['locale'];
  lpMessagingOverride?: boolean;
}

export type LpCallback = (available: boolean, reason: string) => void;

export interface LpInitConfig extends LpSetupConfig {
  callback?: LpCallback;
}

interface LpChatConfigForLocale {
  default?: number;
  lpMessaging: number;
}

export interface LpChatConfig {
  siteId: string;
  locales: Record<MarketInfo['locale'], LpChatConfigForLocale>;
}

export type LpChatConfigForEnv = Record<LpEnvironment, LpChatConfig>;

export interface SDE {
  type: 'ctmrinfo' | 'lead';
  info?: {
    customerId: string;
    accountName: string;
    userName?: string;
    role?: string;
  };
  lead?: {
    topic: string;
  };
}

export interface StartChatType {
  supportRequestId: string;
  topic: string;
  userName?: string;
  question?: string;
  excludePrechatLines: boolean;
}

export enum ENGAGEMENT_STATE {
  NotAvailable,
  Online,
  Offline,
}

export interface LpEvent {
  msg: {
    state: ENGAGEMENT_STATE;
  };
}
