import forbidExtraProps from 'prop-types-exact';

import and from './and';
import between from './between';
import booleanSome from './booleanSome';
import childrenHavePropXorChildren from './childrenHavePropXorChildren';
import childrenOf from './childrenOf';
import childrenOfType from './childrenOfType';
import childrenSequenceOf from './childrenSequenceOf';
import componentWithName from './componentWithName';
import disallowedIf from './disallowedIf';
import elementType from './elementType';
import empty from './empty';
import explicitNull from './explicitNull';
import integer from './integer';
import keysOf from './keysOf';
import mutuallyExclusiveProps from './mutuallyExclusiveProps';
import mutuallyExclusiveTrueProps from './mutuallyExclusiveTrueProps';
import nChildren from './nChildren';
import nonNegativeInteger from './nonNegativeInteger';
import nonNegativeNumber from './nonNegativeNumber';
import numericString from './numericString';
import object from './object';
import or from './or';
import range from './range';
import ref from './ref';
import requiredBy from './requiredBy';
import restrictedProp from './restrictedProp';
import sequenceOf from './sequenceOf';
import shape from './shape';
import stringEndsWith from './stringEndsWith';
import stringStartsWith from './stringStartsWith';
import uniqueArray from './uniqueArray';
import uniqueArrayOf from './uniqueArrayOf';
import valuesOf from './valuesOf';
import withShape from './withShape';

module.exports = {
  and,
  between,
  booleanSome,
  childrenHavePropXorChildren,
  childrenOf,
  childrenOfType,
  childrenSequenceOf,
  componentWithName,
  disallowedIf,
  elementType,
  empty,
  explicitNull,
  forbidExtraProps,
  integer,
  keysOf,
  mutuallyExclusiveProps,
  mutuallyExclusiveTrueProps,
  nChildren,
  nonNegativeInteger,
  nonNegativeNumber,
  numericString,
  object,
  or,
  range,
  ref,
  requiredBy,
  restrictedProp,
  sequenceOf,
  shape,
  stringEndsWith,
  stringStartsWith,
  uniqueArray,
  uniqueArrayOf,
  valuesOf,
  withShape,
};
