/**
 * Copyright (c) Nicolas Gallagher.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @flow
 */
import type { AccessibilityProps } from '../../__types__/Accessibility';
import type { ElementType } from 'react';
import { omit, pick } from '#internal/filterObjectProperties';
import hyphenateString from '#internal/hyphenateString';
import { StyleSheet } from '../style-sheet';
export type AccessibilityStyledProps = {| ...AccessibilityProps,
  classList?: ?Array<string>,
  style?: any,
  testID?: ?string,
|};
type Props = Object;
const hasOwnProperty = Object.prototype.hasOwnProperty;
const isArray = Array.isArray;
const passList = {
  accessibilityActiveDescendant: true,
  accessibilityAtomic: true,
  accessibilityAutoComplete: true,
  accessibilityBusy: true,
  accessibilityChecked: true,
  accessibilityColumnCount: true,
  accessibilityColumnIndex: true,
  accessibilityColumnSpan: true,
  accessibilityControls: true,
  accessibilityCurrent: true,
  accessibilityDescribedBy: true,
  accessibilityDetails: true,
  accessibilityDisabled: true,
  accessibilityErrorMessage: true,
  accessibilityExpanded: true,
  accessibilityFlowTo: true,
  accessibilityHasPopup: true,
  accessibilityHidden: true,
  accessibilityInvalid: true,
  accessibilityKeyShortcuts: true,
  accessibilityLabel: true,
  accessibilityLabelledBy: true,
  accessibilityLevel: true,
  accessibilityLiveRegion: true,
  accessibilityModal: true,
  accessibilityMultiline: true,
  accessibilityMultiSelectable: true,
  accessibilityOrientation: true,
  accessibilityOwns: true,
  accessibilityPlaceholder: true,
  accessibilityPosInSet: true,
  accessibilityPressed: true,
  accessibilityReadOnly: true,
  accessibilityRequired: true,
  accessibilityRole: true,
  accessibilityRoleDescription: true,
  accessibilityRowCount: true,
  accessibilityRowIndex: true,
  accessibilityRowSpan: true,
  accessibilitySelected: true,
  accessibilitySetSize: true,
  accessibilitySort: true,
  accessibilityValueMax: true,
  accessibilityValueMin: true,
  accessibilityValueNow: true,
  accessibilityValueText: true,
  focusable: true,
  dataSet: true,
  nativeID: true,
  style: true,
  testID: true
};
declare export function filterProps(props: Props): Props;
declare function excludeProps(props: Props): Props;
declare function flattenIDRefList(idRefList: string | Array<string>): string;
declare export default function createAccessibilityStyledProps(elementType: ElementType, props: ?Props): Object;