// Type definitions for webos/pmloglib

type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
type Merge<M, N> = Omit<M, Extract<keyof M, keyof N>> & N;

/**
 * Logs with PmLogLib at the "emergency" level.
 */
export function emergency(
  messageId: string,
  keyVals: object,
  freeText: string,
): void;
/**
 * Logs with PmLogLib at the "alert" level.
 */
export function alert(
  messageId: string,
  keyVals: object,
  freeText: string,
): void;
/**
 * Logs with PmLogLib at the "critical" level.
 */
export function critical(
  messageId: string,
  keyVals: object,
  freeText: string,
): void;
/**
 * Logs with PmLogLib at the "error" level.
 */
export function error(
  messageId: string,
  keyVals: object,
  freeText: string,
): void;
/**
 * Logs with PmLogLib at the "warning" level.
 */
export function warning(
  messageId: string,
  keyVals: object,
  freeText: string,
): void;
/**
 * Logs with PmLogLib at the "notice" level.
 */
export function notice(
  messageId: string,
  keyVals: object,
  freeText: string,
): void;
/**
 * Logs with PmLogLib at the "info" level.
 */
export function info(
  messageId: string,
  keyVals: object,
  freeText: string,
): void;
/**
 * Logs with PmLogLib at the "debug" level.
 */
export function debug(freeText: string): void;
/**
 * Places a time-stamped performance log entry into the system log using the  `PmLogInfoWithClock()` 
method.
 */
export function perfLog(
  messageId: string,
  perfType: string,
  perfGroup: string,
): void;
