import {FocusOnValue} from "./gravity/qualifiers/focusOn/FocusOnValue.js";

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects birds
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function bird(): FocusOnValue {
  return new FocusOnValue('bird');
}

/**
 * @summary qualifier
 * @description Detects dogs
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function dog(): FocusOnValue {
  return new FocusOnValue('dog');
}

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects cats
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function cat(): FocusOnValue {
  return new FocusOnValue('cat');
}

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects microwaves
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function microwave(): FocusOnValue {
  return new FocusOnValue('microwave');
}

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects refrigerators
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function refrigerator(): FocusOnValue {
  return new FocusOnValue('refrigerator');
}

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects bottles
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function bottle(): FocusOnValue {
  return new FocusOnValue('bottle');
}

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects sinks
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function sink(): FocusOnValue {
  return new FocusOnValue('sink');
}

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects skateboards
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function skateboard(): FocusOnValue {
  return new FocusOnValue('skateboard');
}

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects people
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function person(): FocusOnValue {
  return new FocusOnValue('person');
}


/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects the largest face in an image with the Advanced Facial Attribute Detection add-on and makes it the focus of the transformation.
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function advancedFace(): FocusOnValue {
  return new FocusOnValue('adv_face');
}

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects all faces in an image with the Advanced Facial Attribute Detection add-on and makes them the focus of the transformation.
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function advancedFaces(): FocusOnValue {
  return new FocusOnValue('adv_faces');
}

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects all eyes in an image with the Advanced Facial Attribute Detection add-on and makes them the focus of the transformation.
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function advancedEyes(): FocusOnValue {
  return new FocusOnValue('adv_eyes');
}

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects the largest face in the asset and makes it the focus of the transformation.
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function face(): FocusOnValue {
  return new FocusOnValue('face');
}

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects all the faces in the asset and makes them the focus of the transformation.
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function faces(): FocusOnValue {
  return new FocusOnValue('faces');
}

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects all the faces in the asset and makes them the focus of the transformation.
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function background(): FocusOnValue {
  return new FocusOnValue('background');
}

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects aeroplane
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function aeroplane(): FocusOnValue {
  return new FocusOnValue('aeroplane');
}

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects bicycle
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function bicycle(): FocusOnValue {
  return new FocusOnValue('bicycle');
}

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects boat
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function boat(): FocusOnValue {
  return new FocusOnValue('boat');
}

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects bus
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function bus(): FocusOnValue {
  return new FocusOnValue('bus');
}

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects car
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function car(): FocusOnValue {
  return new FocusOnValue('car');
}

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects chair
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function chair(): FocusOnValue {
  return new FocusOnValue('chair');
}


/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects cow
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function cow(): FocusOnValue {
  return new FocusOnValue('cow');
}

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects diningtable
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function diningtable(): FocusOnValue {
  return new FocusOnValue('diningtable');
}

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects horse
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function horse(): FocusOnValue {
  return new FocusOnValue('horse');
}

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects motorbike
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function motorbike(): FocusOnValue {
  return new FocusOnValue('motorbike');
}

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects pottedplant
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function pottedplant(): FocusOnValue {
  return new FocusOnValue('pottedplant');
}

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects sheep
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function sheep(): FocusOnValue {
  return new FocusOnValue('sheep');
}

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects sofa
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function sofa(): FocusOnValue {
  return new FocusOnValue('sofa');
}

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects train
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function train(): FocusOnValue {
  return new FocusOnValue('train');
}

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detects tvmonitor
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function tvmonitor(): FocusOnValue {
  return new FocusOnValue('tvmonitor');
}

/**
 * @summary qualifier
 * @memberOf Qualifiers.FocusOn
 * @description Detect all text elements in an image using the {@link https://cloudinary.com/documentation/ocr_text_detection_and_extraction_addon|OCR Text Detection and Extraction add-on} and use the detected bounding box coordinates as the basis of the transformation.
 * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue
 */
function ocr(): FocusOnValue {
  return new FocusOnValue('ocr_text');
}




/**
 * @memberOf Qualifiers
 * @namespace FocusOn
 * @see Visit {@link Qualifiers.Gravity|Gravity} for an example
 */
const FocusOn = {
  person,
  cat,
  microwave,
  refrigerator,
  skateboard,
  bird,
  bottle,
  dog,
  sink,
  face,
  train,
  sofa,
  sheep,
  pottedplant,
  horse,
  faces,
  cow,
  bus,
  boat,
  advancedEyes,
  advancedFace,
  advancedFaces,
  aeroplane,
  background,
  bicycle,
  car,
  chair,
  diningtable,
  tvmonitor,
  motorbike,
  ocr
};


export {
  FocusOnValue,
  FocusOn,
  person,
  cat,
  microwave,
  refrigerator,
  skateboard,
  bird,
  bottle,
  dog,
  sink,
  face,
  train,
  sofa,
  sheep,
  pottedplant,
  horse,
  faces,
  cow,
  bus,
  boat,
  advancedEyes,
  advancedFace,
  advancedFaces,
  aeroplane,
  background,
  bicycle,
  car,
  chair,
  diningtable,
  tvmonitor,
  motorbike,
  ocr
};