/**
 * Various constant values used by different raster functions when setting [ImageryTileLayer#rasterFunction](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-ImageryTileLayer.html#rasterFunction)
 * or [ImageryLayer#rasterFunction](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-ImageryLayer.html#rasterFunction) properties.
 *
 * @since 4.26
 * @see [RasterFunction](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-RasterFunction.html)
 * @see [Client-side raster functions](https://ubatsukh.github.io/arcgis-js-api-demos/clientside-rasterfunctions/index.html)
 * @see [REST API Raster function objects](https://developers.arcgis.com/documentation/common-data-types/raster-function-objects.htm)
 */

/** Slope type constants used for the [slope raster function](https://developers.arcgis.com/documentation/common-data-types/raster-function-objects.htm#ESRI_SECTION1_641F092319AE46D1A9441F8D1FDF186C). */
export const slopeType: SlopeType;

export interface SlopeType {
  /**
   * The inclination of slope is calculated the same as DEGREE. but the z-factor is adjusted for scale. It uses the Pixel Size Power (PSP) and Pixel Size Factor
   * (PSF) values. which account for the resolution changes (scale) as the viewer zooms in and out.
   */
  adjusted: number;
  /** The inclination of slope is calculated in degrees. The values range from 0 to 90. */
  degree: number;
  /**
   * The inclination of slope is calculated as percentage values. The values range from 0 to infinity. A flat surface is 0 percent rise. whereas a 45-degree
   * surface is 100 percent rise. As the surface becomes more vertical. the percent rise becomes increasingly larger.
   */
  percentRise: number;
}

/**
 * Curvature type constants used for the [curvature raster function](https://developers.arcgis.com/rest/services-reference/enterprise/raster-function-objects/#curvature).
 *
 * @since 4.31
 */
export const curvatureType: CurvatureType;

export interface CurvatureType {
  /** Is perpendicular to the direction of the maximum slope. It affects the convergence and divergence of flow across a surface. */
  planform: number;
  /** Is parallel to the slope and indicates the direction of maximum slope. It affects the acceleration and deceleration of flow across the surface. */
  profile: number;
  /** Combines the profile and planform curvatures. */
  standard: number;
}

/**
 * Hillshade type constants used for the [hillshade raster function](https://developers.arcgis.com/rest/services-reference/enterprise/raster-function-objects/#hillshade).
 *
 * @since 4.31
 */
export const hillshadeType: HillshadeType;

export interface HillshadeType {
  /** Combines light from multiple sources to represent an enhanced visualization of the terrain. */
  multidirectional: number;
  /** Calculates hillshade from a single illumination direction. You can set the Azimuth and Altitude options to control the location of the light source. */
  traditional: number;
}

/** Method name constants used by the [band index raster functions](https://developers.arcgis.com/documentation/common-data-types/raster-function-objects.htm#ESRI_SECTION1_4D75298B90D94E6B87B0C9F28D5AE269). */
export const bandIndexType: BandIndexType;

export interface BandIndexType {
  /**
   * The Burn Area Index (BAI) uses the reflectance values in the red and NIR portion of the spectrum to identify the areas of the terrain affected by fire.
   * See [BAI raster function](https://pro.arcgis.com/en/pro-app/latest/arcpy/spatial-analyst/bai.htm).
   */
  BAI: number;
  /**
   * Chlorophyll index - Green (CIG) method is a vegetation index for estimating the chlorophyll content in leaves using the ratio
   * of reflectivity in the NIR and green bands.
   */
  CIG: number;
  /**
   * The Chlorophyll Index - Red-Edge (CIre) method is a vegetation index for estimating the chlorophyll content in leaves using
   * the ratio of reflectivity in the NIR and red-edge bands.
   */
  CIRe: number;
  /**
   * The Clay Minerals (clayMinerals) ratio method is a geological index for identifying mineral features containing clay and alunite using two shortwave infrared (SWIR) bands.
   * It is used in mineral composite mapping. See [clayMinerals raster function](https://pro.arcgis.com/en/pro-app/latest/arcpy/spatial-analyst/clayminerals.htm).
   */
  clayMinerals: number;
  /**
   * The Enhanced Vegetation Index (EVI) method is an optimized vegetation index that accounts for atmospheric influences and vegetation background signal. It's similar to NDVI but
   * is less sensitive to background and atmospheric noise, and it does not become as saturated as NDVI when viewing areas with very dense green vegetation.
   * [EVI raster function](https://pro.arcgis.com/en/pro-app/latest/arcpy/spatial-analyst/evi.htm).
   */
  EVI: number;
  /**
   * The Ferrous Minerals (ferrousMinerals) ratio method is a geological index for identifying rock features containing some quantity of iron-bearing minerals using the SWIR and NIR bands.
   * It is used in mineral composite mapping. [ferrousMinerals raster function](https://pro.arcgis.com/en/pro-app/latest/arcpy/spatial-analyst/ferrousminerals.htm).
   */
  ferrousMinerals: number;
  /**
   * The Global Environmental Monitoring Index (GEMI) method is a nonlinear vegetation index for global environmental monitoring from satellite imagery.
   * It's similar to NDVI, but it's less sensitive to atmospheric effects. It is affected by bare soil; therefore, it's not recommended for use in areas of sparse or moderately dense vegetation.
   */
  GEMI: number;
  /**
   * The Green Normalized Difference Vegetation Index (GNDVI) method is a vegetation index for estimating photo synthetic activity and is a commonly used vegetation index
   * to determine water and nitrogen uptake into the plant canopy.
   */
  GNDVI: number;
  /**
   * The Green Vegetation Index (GVI) method was originally designed from Landsat MSS imagery and has been modified for Landsat TM imagery. It's also known as the Landsat
   * TM Tasseled Cap green vegetation index. It can be used with imagery whose bands share the same spectral characteristics.
   */
  GVITM: number;
  /**
   * The Iron Oxide (ironOxide) ratio method is a geological index for identifying rock features that have experienced oxidation of iron-bearing sulfides using the red and blue bands.
   * It is useful in identifying iron oxide features below vegetation canopies and is used in mineral composite mapping. [ironOxide raster function](https://pro.arcgis.com/en/pro-app/latest/arcpy/spatial-analyst/ironoxide.htm).
   */
  ironOxide: number;
  /**
   * The Modified Normalized Difference Water Index (MNDWI) uses green and SWIR bands for the enhancement of open water features. It also diminishes built-up area features that are often correlated
   * with open water in other indices.
   */
  MNDWI: number;
  /** The Modified Soil Adjusted Vegetation Index (MSAVI) method minimizes the effect of bare soil on the SAVI. */
  MSAVI: number;
  /**
   * The Modified Triangular Vegetation Index (MTVI2) method is a vegetation index for detecting leaf chlorophyll content at the canopy scale while being relatively insensitive
   * to leaf area index. It uses reflectance in the green, red, and NIR bands.
   */
  MTVI2: number;
  /**
   * The Normalized Burn Ratio Index (NBRI) uses the NIR and SWIR bands to emphasize burned areas, while mitigating illumination and atmospheric effects. Your images should be
   * corrected to reflectance values before using this index. See [NRB raster function](https://pro.arcgis.com/en/pro-app/latest/arcpy/spatial-analyst/nbr.htm).
   */
  NBR: number;
  /**
   * The Normalized Difference Built-up Index (NDBI) uses the NIR and SWIR bands to emphasize manufactured built-up areas. It is ratio based to mitigate the effects of terrain
   * illumination differences as well as atmospheric effects. [NDBI raster function](https://pro.arcgis.com/en/pro-app/latest/arcpy/spatial-analyst/ndbi.htm).
   */
  NDBI: number;
  /**
   * The Normalized Difference Moisture Index (NDMI) is sensitive to the moisture levels in vegetation. It is used to monitor droughts and fuel levels in fire-prone areas.
   * It uses NIR and SWIR bands to create a ratio designed to mitigate illumination and atmospheric effects. [NDMI raster function](https://pro.arcgis.com/en/pro-app/latest/arcpy/spatial-analyst/ndmi.htm).
   */
  NDMI: number;
  /**
   * The Normalized Difference Snow Index (NDSI) is designed to use MODIS (band 4 and band 6) and Landsat TM (band 2 and band 5) for identification of snow cover while ignoring
   * cloud cover. Since it is ratio based, it also mitigates atmospheric effects. [NDSI raster function](https://pro.arcgis.com/en/pro-app/latest/arcpy/spatial-analyst/ndsi.htm).
   */
  NDSI: number;
  /**
   * The Normalized Difference Vegetation Index (NDVI) method is a standardized index allowing you to generate an image displaying greenness (relative biomass). This index
   * takes advantage of the contrast of the characteristics of two bands from a multispectral raster dataset—the chlorophyll pigment absorptions in the red band and the high reflectivity of plant
   * materials in the NIR band.
   */
  NDVI: number;
  /**
   * The Red-Edge NDVI (NDVIre) method is a vegetation index for estimating vegetation health using the red-edge band. It is especially useful for estimating crop health
   * in the mid to late stages of growth, when the chlorophyll concentration is relatively higher. Also, NDVIre can be used to map the within-field variability of nitrogen foliage to understand the
   * fertilizer requirements of crops.
   */
  NDVIRe: number;
  /**
   * The Normalized Difference Water Index (NDWI) method is an index for delineating and monitoring content changes in surface water. It is computed with the NIR and green bands.
   * See [NDWI raster function](https://pro.arcgis.com/en/pro-app/latest/arcpy/spatial-analyst/ndwi.htm).
   */
  NDWI: number;
  /**
   * The Perpendicular Vegetation Index (PVI) method is similar to a difference vegetation index; however, it is sensitive to atmospheric variations. When using this method
   * to compare images, it should only be used on images that have been atmospherically corrected.
   */
  PVI: number;
  /**
   * The Red-Edge Triangulated Vegetation Index (RTVICore) method is a vegetation index for estimating leaf area index and biomass. This index uses reflectance in the NIR,
   * red-edge, and green spectral bands.
   */
  RTVICore: number;
  /**
   * The Soil-Adjusted Vegetation Index (SAVI) method is a vegetation index that attempts to minimize soil brightness influences using a soil-brightness correction factor.
   * This is often used in arid regions where vegetative cover is low, and it outputs values between -1.0 and 1.0.
   */
  SAVI: number;
  /**
   * The Simple Ratio (SR) method is a common vegetation index for estimating the amount of vegetation. It is the ratio of light scattered in the NIR and absorbed in red bands,
   * which reduces the effects of atmosphere and topography.
   */
  SR: number;
  /**
   * The Red-Edge Simple Ratio (SRre) method is a vegetation index for estimating the amount of healthy and stressed vegetation. It is the ratio of light scattered in the NIR and red-edge bands,
   * which reduces the effects of atmosphere and topography.
   */
  SRRe: number;
  /**
   * The Sultan's process takes a six-band 8-bit image and uses the Sultan's Formula method to produce a three-band 8-bit image. The resulting image highlights rock formations
   * called ophiolites on coastlines. This formula was designed based on the TM or ETM bands of a Landsat 5 or 7 scene.
   */
  Sultan: number;
  /**
   * The Transformed Soil Adjusted Vegetation Index (TSAVI) method is a vegetation index that minimizes soil brightness influences by assuming the soil line has an arbitrary
   * slope and intercept.
   */
  TSAVI: number;
  /**
   * User defined method. When using the user defined method to define your band arithmetic algorithm, you can enter
   * a single-line algebraic formula to create a single-band output. The supported operators are -,+,/,*, and unary -. To identify the bands, add B or b
   * to the beginning of the band number.
   */
  userDefined: number;
  /** The Visible Atmospherically Resistant Index (VARI) method is a vegetation index for estimating vegetation fraction quantitatively with only the visible range of the spectrum. */
  VARI: number;
  /**
   * The Weighted Normalized Difference Water Index (WNDWI) method is a water index developed to reduce errors typically encountered in other water indices, including water turbidity, small water bodies,
   * or shadow in remote sensing scenes.
   */
  WNDWI: number;
}

/** Predefined raster color map name constants used for the [Colormap raster function](https://developers.arcgis.com/documentation/common-data-types/raster-function-objects.htm#GUID-5DDFC961-A857-445F-A983-13AF67D45833). */
export const colormapName: ColormapName;

export interface ColormapName {
  /** A color map that gradually changes from cyan to purple to black. */
  elevation: string;
  /** A color map that gradually changes from black to white. */
  gray: string;
  /** A colormap to visualize a hillshade product. It has a color scheme that gradually changes from black to white depending on topography. */
  hillshade: string;
  /** colormap to visualize vegetation. Values near zero are blue. Low values are brown. Then the colors gradually change from red. to orange. to yellow. to green. and to black as the vegetation index goes from low to high. */
  NDVI: string;
  /** A colormap to visualize vegetation. Low values range from white to green. Then the colors range from gray. to purple. to violet. to dark blue. and to black as the vegetation index goes from low to high. */
  NDVI2: string;
  /** A colormap to visualize vegetation. Values near zero are blue. Then the colors gradually change from red. to orange. and to green as the vegetation index goes from low to high. */
  NDVI3: string;
  /** A random colormap. */
  random: string;
}

/** Predefined raster color ramp name constants used for the [Colormap raster function](https://developers.arcgis.com/documentation/common-data-types/raster-function-objects.htm#GUID-5DDFC961-A857-445F-A983-13AF67D45833). */
export const colorRampName: ColorRampName;

export interface ColorRampName {
  /** Aspect. */
  aspect: string;
  /** Black to White. */
  blackToWhite: string;
  /** Blue Bright. */
  blueBright: string;
  /** Blue-Green Bright. */
  blueGreenBright: string;
  /** Blue-Green Light to Dark. */
  blueGreenLightToDark: string;
  /** Blue Light to Dark. */
  blueLightToDark: string;
  /** Brown Light to Dark. */
  brownLightToDark: string;
  /** Brown to Blue Green Diverging. Bright. */
  brownToBlueGreenDivergingBright: string;
  /** Brown to Blue Green Diverging. Dark. */
  brownToBlueGreenDivergingDark: string;
  /** Coefficient Bias. */
  coefficientBias: string;
  /** Cold to Hot Diverging. */
  coldToHotDiverging: string;
  /** Condition Number. */
  conditionNumber: string;
  /** Cyan-Light to Blue-Dark. */
  cyanLightToBlueDark: string;
  /** Cyan to Purple. */
  cyanToPurple: string;
  /** Distance. */
  distance: string;
  /** Elevation #1. */
  elevation1: string;
  /** Elevation #2. */
  elevation2: string;
  /** Errors. */
  errors: string;
  /** Gray Light to Dark. */
  grayLightToDark: string;
  /** Green Bright. */
  greenBright: string;
  /** Green Light to Dark. */
  greenLightToDark: string;
  /** Green to Blue. */
  greenToBlue: string;
  /** Orange Bright. */
  orangeBright: string;
  /** Orange Light to Dark. */
  orangeLightToDark: string;
  /** Partial Spectrum. */
  partialSpectrum: string;
  /** Partial Spectrum 1 Diverging. */
  partialSpectrum1Diverging: string;
  /** Partial Spectrum 2 Diverging. */
  partialSpectrum2Diverging: string;
  /** Pink to YellowGreen Diverging. Bright. */
  pinkToYellowGreenDivergingBright: string;
  /** Pink to YellowGreen Diverging. Dark. */
  pinkToYellowGreenDivergingDark: string;
  /** Precipitation. */
  precipitation: string;
  /** Prediction. */
  prediction: string;
  /** Purple-Blue Bright. */
  purpleBlueBright: string;
  /** Purple-Blue Light to Dark. */
  purpleBlueLightToDark: string;
  /** Purple Bright. */
  purpleBright: string;
  /** Purple-Red Bright. */
  purpleRedBright: string;
  /** Purple-Red Light to Dark. */
  purpleRedLightToDark: string;
  /** Purple to Green Diverging. Bright. */
  purpleToGreenDivergingBright: string;
  /** Purple to Green Diverging. Dark. */
  purpleToGreenDivergingDark: string;
  /** Red Bright. */
  redBright: string;
  /** Red Light to Dark. */
  redLightToDark: string;
  /** Red to Blue Diverging. Bright. */
  redToBlueDivergingBright: string;
  /** Red to Blue Diverging. Dark. */
  redToBlueDivergingDark: string;
  /** Red to Green. */
  redToGreen: string;
  /** Red to Green Diverging. Bright. */
  redToGreenDivergingBright: string;
  /** Red to Green Diverging. Dark. */
  redToGreenDivergingDark: string;
  /** Slope. */
  slope: string;
  /** Spectrum-Full Bright. */
  spectrumFullBright: string;
  /** Spectrum-Full Dark. */
  spectrumFullDark: string;
  /** Spectrum-Full Light. */
  spectrumFullLight: string;
  /** Surface. */
  surface: string;
  /** Temperature. */
  temperature: string;
  /** White to Black. */
  whiteToBlack: string;
  /** Yellow-Green Bright. */
  yellowGreenBright: string;
  /** Yellow-Green Light to Dark. */
  yellowGreenLightToDark: string;
  /** Yellow to Dark Red. */
  yellowToDarkRed: string;
  /** Yellow to Green to Dark Blue. */
  yellowToGreenToDarkBlue: string;
  /** Yellow to Red. */
  yellowToRed: string;
}

/** The missing band action constants available for the [Extract band raster function](https://developers.arcgis.com/documentation/common-data-types/raster-function-objects.htm#ESRI_SECTION1_2FC6FEAA2801446B9578A7C90B1DD6AB). */
export const missingBandAction: MissingBandAction;

export interface MissingBandAction {
  /** Finds the best available band to use in place of the missing band based on wavelength. so that the function will not fail. */
  bestMatch: number;
  /** If the input dataset is missing any band specified in the Band parameter. the function will fail. */
  fail: number;
}

/**
 * The NoData interpretation constants used for the [Mask raster function](https://developers.arcgis.com/documentation/common-data-types/raster-function-objects.htm#ESRI_SECTION1_5515B13D320B408B9F70B9B8344028FF).
 * This refers to how NoData Values will impact the output image.
 */
export const noDataInterpretation: NoDataInterpretation;

export interface NoDataInterpretation {
  /** The NoData values you specify for each band must occur in the same pixel for the output image to contain the NoData pixel. */
  matchAll: number;
  /** If the NoData value you specify occurs for a cell in a specified band. that cell in the output image will be NoData. */
  matchAny: number;
}

/**
 * Kernel type constants used for the [Convolution raster function](https://developers.arcgis.com/documentation/common-data-types/raster-function-objects.htm#ESRI_SECTION1_B69A71FDFD7C46A6860A7302A9AD3B17).
 * Gradient filters can be used for edge detection in 45 degree increments. Laplacian filters are often used for edge detection. They are often applied to
 * an image that has first been smoothed to reduce its sensitivity to noise. Line detection filters. like the gradient filters. can be used to perform edge detection.
 * The Sobel filter is used for edge detection.
 */
export const convolutionKernel: ConvolutionKernel;

export interface ConvolutionKernel {
  /** East gradient detection. Gradient filters can be used for edge detection in 45 degree increments. */
  gradientEast: number;
  /** North gradient detection. Gradient filters can be used for edge detection in 45 degree increments. */
  gradientNorth: number;
  /** -North east gradient detection. Gradient filters can be used for edge detection in 45 degree increments. */
  gradientNorthEast: number;
  /** -North west gradient detection. Gradient filters can be used for edge detection in 45 degree increments. */
  gradientNorthWest: number;
  /** South gradient detection. Gradient filters can be used for edge detection in 45 degree increments. */
  gradientSouth: number;
  /** West gradient detection. Gradient filters can be used for edge detection in 45 degree increments. */
  gradientWest: number;
  /** Laplacian filters are often used for edge detection. They are often applied to an image that has first been smoothed to reduce its sensitivity to noise. */
  laplacian3x3: number;
  /** Laplacian filters are often used for edge detection. They are often applied to an image that has first been smoothed to reduce its sensitivity to noise. */
  laplacian5x5: number;
  /** Horizontal line detection. Line detection filters. like the gradient filters. can be used to perform edge detection. */
  lineDetectionHorizontal: number;
  /** Left diagonal line detection. Line detection filters. like the gradient filters. can be used to perform edge detection. */
  lineDetectionLeftDiagonal: number;
  /** Right diagonal line detection. Line detection filters. like the gradient filters. can be used to perform edge detection. */
  lineDetectionRightDiagonal: number;
  /** Vertical line detection. Line detection filters. like the gradient filters. can be used to perform edge detection. */
  lineDetectionVertical: number;
  /** No kernel type is specified. */
  none: number;
  /** The point spread function portrays the distribution of light from a point source through a lense. This will introduce a slight blurring effect. */
  pointSpread: number;
  /** Sharpens the date by calculating the focal sum statistic for each cell of the input using a weighted kernel neighborhood. It brings out the boundaries between features (for example. where a water body meets the forest). thus sharpening edges between objects. */
  sharpen: number;
  /** Sharpens the date by calculating the focal sum statistic for each cell of the input using a weighted kernel neighborhood. It brings out the boundaries between features (for example. where a water body meets the forest). thus sharpening edges between objects. */
  sharpen2: number;
  /** Sharpens the date by calculating the focal sum statistic for each cell of the input using a weighted kernel neighborhood. It brings out the boundaries between features (for example. where a water body meets the forest). thus sharpening edges between objects. */
  sharpening3x3: number;
  /** Sharpens the date by calculating the focal sum statistic for each cell of the input using a weighted kernel neighborhood. It brings out the boundaries between features (for example. where a water body meets the forest). thus sharpening edges between objects. */
  sharpening5x5: number;
  /** Smooths the data by reducing local variation and removing noise. Calculates the average (mean) value for each neighborhood. The effect is that the high and low values within each neighborhood are averaged out. reducing the extreme values in the data. */
  smoothArithmeticMean: number;
  /** Smooths (low-pass) the data by reducing local variation and removing noise. Calculates the average (mean) value for each neighborhood. The effect is that the high and low values within each neighborhood are averaged out. reducing the extreme values in the data. */
  smoothing3x3: number;
  /** Smooths (low-pass) the data by reducing local variation and removing noise. Calculates the average (mean) value for each neighborhood. The effect is that the high and low values within each neighborhood are averaged out. reducing the extreme values in the data. */
  smoothing5x5: number;
  /** The horizontal Sobel filter is used for edge detection. */
  sobelHorizontal: number;
  /** The vertical Sobel filter is used for edge detection. */
  sobelVertical: number;
  /** User defined kernel type. */
  userDefined: number;
}

/** Stretch type constants used for the [stretch raster function](https://developers.arcgis.com/documentation/common-data-types/raster-function-objects.htm#ESRI_SECTION1_7545363F0B8A4B7B931A54B3C4189D9D). */
export const stretchType: StretchType;

export interface StretchType {
  /** The histogram equalization stretch type. */
  histogramEqualization: number;
  /** The minMax stretch type applies a linear stretch based on the output minimum and output maximum pixel values. which are used as the endpoints for the histogram. */
  minMax: number;
  /** If the stretch type is None. no stretch method will be applied. even if statistics exist. */
  none: number;
  /** The percent clip stretch type applies a linear stretch between the defined percent clip minimum and percent clip maximum pixel values. */
  percentClip: number;
  /** The Sigmoid contrast stretch is designed to highlight moderate pixel values in your imagery while maintaining sufficient contrast at the extremes. */
  sigmoid: number;
  /** The standard deviation stretch type applies a linear stretch between the values defined by the standard deviation (n) value. */
  standardDeviation: number;
}

/**
 * The local arithmetic operations types. Refer to the [Local raster functions](https://developers.arcgis.com/documentation/common-data-types/raster-function-objects.htm#ESRI_SECTION1_FC0CE22F62094A7FB5B3C562D175FDCE)
 * for more info.
 */
export const localArithmeticOperation: LocalArithmeticOperation;

export interface LocalArithmeticOperation {
  /** Calculates the absolute value of the cells in a raster. */
  abs: number;
  /** Divides the values of two rasters on a cell-by-cell basis. */
  divide: number;
  /** Calculates the base e exponential of the cells in a raster. */
  exp: number;
  /** Calculates the base 2 exponential of the cells in a raster. */
  exp2: number;
  /** Calculates the base 10 exponential of the cells in a raster. */
  exp10: number;
  /** Converts each cell value of a raster into a floating-point representation. */
  float: number;
  /** Converts each cell value of a raster to an integer by truncation. */
  int: number;
  /** Calculates the natural logarithm (base e) of cells in a raster. */
  ln: number;
  /** Calculates the base 2 logarithm of cells in a raster. */
  log2: number;
  /** Calculates the base 10 logarithm of cells in a raster. */
  log10: number;
  /** Subtracts the value of the second input raster from the value of the first input raster on a cell-by-cell basis. */
  minus: number;
  /** Finds the remainder (modulo) of the first raster when divided by the second raster on a cell-by-cell basis. */
  mod: number;
  /** Changes the sign (multiplies by -1) of the cell values of the input raster on a cell-by-cell basis. */
  negate: number;
  /** Adds (sums) the values of two rasters on a cell-by-cell basis. */
  plus: number;
  /** Raises the cell values in a raster to the power of the values found in another raster. */
  power: number;
  /** Returns the next lower integer value. just represented as a floating point. for each cell in a raster. */
  roundDown: number;
  /** Returns the next higher integer value. just represented as a floating point. for each cell in a raster. */
  roundUp: number;
  /** Calculates the square root of the cell values in a raster. */
  sqrt: number;
  /** Calculates the square of the cell values in a raster. */
  square: number;
  /** Multiplies the values of two rasters on a cell-by-cell basis. */
  times: number;
}

/**
 * The local logical operations type constants. Refer to the [Local raster functions](https://developers.arcgis.com/documentation/common-data-types/raster-function-objects.htm#ESRI_SECTION1_FC0CE22F62094A7FB5B3C562D175FDCE)
 * for more info.
 */
export const localLogicalOperation: LocalLogicalOperation;

export interface LocalLogicalOperation {
  /** Performs a Bitwise And operation on the binary values of two input rasters. */
  bitwiseAnd: number;
  /** Performs a Bitwise Left Shift operation on the binary values of two input rasters. */
  bitwiseLeftShift: number;
  /** Performs a Bitwise Not (complement) operation on the binary value of an input raster. */
  bitwiseNot: number;
  /** Performs a Bitwise Or operation on the binary values of two input rasters. */
  bitwiseOr: number;
  /** Performs a Bitwise Right Shift operation on the binary values of two input rasters. */
  bitwiseRightShift: number;
  /** Performs a Bitwise eXclusive Or operation on the binary values of two input rasters. */
  bitwiseXOr: number;
  /** Performs a Boolean And operation on the cell values of two input rasters. */
  booleanAnd: number;
  /** Performs a Boolean Not (complement) operation on the cell values of the input raster. */
  booleanNot: number;
  /** Performs a Boolean Or operation on the cell values of two input rasters. */
  booleanOr: number;
  /** Performs a Boolean eXclusive Or operation on the cell values of two input rasters. */
  booleanXOr: number;
  /** Performs a Relational equal-to operation on two inputs on a cell-by-cell basis. */
  equalTo: number;
  /** Performs a Relational greater-than operation on two inputs on a cell-by-cell basis. */
  greaterThan: number;
  /** Performs a Relational greater-than-or-equal-to operation on two inputs on a cell-by-cell basis. */
  greaterThanEqual: number;
  /** Determines which values from the input raster are NoData on a cell-by-cell basis. */
  isNull: number;
  /** Performs a Relational less-than operation on two inputs on a cell-by-cell basis. */
  lessThan: number;
  /** Performs a Relational less-than-or-equal-to operation on two inputs on a cell-by-cell basis. */
  lessThanEqual: number;
  /** Performs a Relational not-equal-to operation on two inputs on a cell-by-cell basis. */
  notEqual: number;
}

/**
 * The local trigonometric operations type constants. Refer to the [Local raster functions](https://developers.arcgis.com/documentation/common-data-types/raster-function-objects.htm#ESRI_SECTION1_FC0CE22F62094A7FB5B3C562D175FDCE)
 * for more info.
 */
export const localTrigonometricOperation: LocalTrigonometricOperation;

export interface LocalTrigonometricOperation {
  /** Calculates the inverse cosine of cells in a raster. */
  acos: number;
  /** Calculates the inverse hyperbolic cosine of cells in a raster. */
  acosh: number;
  /** Calculates the inverse sine of cells in a raster. */
  asin: number;
  /** Calculates the inverse hyperbolic sine of cells in a raster. */
  asinh: number;
  /** Calculates the inverse tangent of cells in a raster. */
  atan: number;
  /** Calculates the inverse tangent (based on x,y) of cells in a raster. */
  atan2: number;
  /** Calculates the inverse hyperbolic tangent of cells in a raster. */
  atanh: number;
  /** Calculates the cosine of cells in a raster. */
  cos: number;
  /** Calculates the hyperbolic cosine of cells in a raster. */
  cosh: number;
  /** Calculates the sine of cells in a raster. */
  sin: number;
  /** Calculates the hyperbolic sine of cells in a raster. */
  sinh: number;
  /** Calculates the tangent of cells in a raster. */
  tan: number;
  /** Calculates the hyperbolic tangent of cells in a raster. */
  tanh: number;
}

/**
 * The local cell statistics operations type constants. This function calculates a statistic on a pixel-by-pixel basis.
 * Refer to the [Local raster functions](https://developers.arcgis.com/documentation/common-data-types/raster-function-objects.htm#ESRI_SECTION1_FC0CE22F62094A7FB5B3C562D175FDCE)
 * for more info.
 */
export const cellStatisticalOperation: CellStatisticalOperation;

export interface CellStatisticalOperation {
  /** Determines the majority (value that occurs most often) of the inputs. */
  majority: number;
  /** Determines the majority (value that occurs most often) of the inputs. Only cells that have data values will be used in determining the statistic value. */
  majorityIgnoreNoData: number;
  /** Determines the maximum (largest value) of the inputs. */
  max: number;
  /** Determines the maximum (largest value) of the inputs. Only cells that have data values will be used in determining the statistic value. */
  maxIgnoreNoData: number;
  /** Determines the mean (average value) of the inputs. */
  mean: number;
  /** Determines the mean (average value) of the inputs. Only cells that have data values will be used in determining the statistic value. */
  meanIgnoreNoData: number;
  /** Calculates the median of the inputs. */
  med: number;
  /** Determines the median of the inputs. Only cells that have data values will be used in determining the statistic value. */
  medIgnoreNoData: number;
  /** Determines the minimum (smallest value) of the inputs. */
  min: number;
  /** Determines the minimum (smallest value) of the inputs. Only cells that have data values will be used in determining the statistic value. */
  minIgnoreNoData: number;
  /** Determines the minority (value that occurs least often) of the inputs. */
  minority: number;
  /** Determines the minority (value that occurs least often) of the inputs. Only cells that have data values will be used in determining the statistic value. */
  minorityIgnoreNoData: number;
  /** Calculates the range (difference between largest and smallest value) of the inputs. */
  range: number;
  /** Calculates the range (difference between largest and smallest value) of the inputs. Only cells that have data values will be used in determining the statistic value. */
  rangeIgnoreNoData: number;
  /** Calculates the standard deviation of the inputs. */
  stddev: number;
  /** Calculates the standard deviation of the inputs. Only cells that have data values will be used in determining the statistic value. */
  stddevIgnoreNoData: number;
  /** Calculates the sum (total of all values) of the inputs. */
  sum: number;
  /** Calculates the sum (total of all values) of the inputs. Only cells that have data values will be used in determining the statistic value. */
  sumIgnoreNoData: number;
  /** Calculates the variety (number of unique values) of the inputs. */
  variety: number;
  /** Calculates the variety (number of unique values) of the inputs. Only cells that have data values will be used in determining the statistic value. */
  varietyIgnoreNoData: number;
}

/**
 * The local conditional operations type constants. Refer to the [Local raster functions](https://developers.arcgis.com/documentation/common-data-types/raster-function-objects.htm#ESRI_SECTION1_FC0CE22F62094A7FB5B3C562D175FDCE)
 * for more info.
 */
export const localConditionalOperation: LocalConditionalOperation;

export interface LocalConditionalOperation {
  /** Performs a conditional If, Then, Else operation. When a Con operator is used, there usually needs to be two or more local functions chained together, where one local function states the criteria and the second local function is the Con operator which uses the criteria and dictates what the true and false outputs should be. */
  conditional: number;
  /** Set Null sets identified cell locations to NoData based on a specified criteria. It returns NoData if a conditional evaluation is true, and returns the value specified by another raster if it is false. */
  setNull: number;
}