import type React from 'react'; import type {RefObject} from 'react'; import type {Faces} from './item/faces'; import type {Animated, StyleProp, TextStyle, ViewStyle} from 'react-native'; export type ListMethods = { scrollToIndex: (params: {index: number; animated: boolean}) => void; }; export type PickerItem = { value: T; label?: string; } & Record; export type KeyExtractor> = ( item: ItemT, index: number, ) => string; // renders export type RenderItemProps> = { item: ItemT; index: number; itemTextStyle: StyleProp | undefined; }; export type RenderItem> = ( props: RenderItemProps, ) => React.ReactElement | null; export type RenderItemContainerProps> = { listRef: RefObject; key?: string; item: ItemT; index: number; faces: ReadonlyArray; renderItem: RenderItem; itemTextStyle: StyleProp | undefined; enableScrollByTapOnItem: boolean | undefined; readOnly: boolean | undefined; }; export type RenderItemContainer> = ( props: RenderItemContainerProps, ) => React.ReactElement; export type RenderPickerItem> = (info: { key?: string; item: ItemT; index: number; }) => React.ReactElement; export type RenderListProps> = { ref: React.RefObject; data: ReadonlyArray; keyExtractor: KeyExtractor; renderItem: RenderPickerItem; itemHeight: number; pickerHeight: number; visibleItemCount: number; readOnly: boolean; initialIndex: number; scrollOffset: Animated.Value; onTouchStart: () => void; onTouchEnd: () => void; onTouchCancel: () => void; onScrollStart: (() => void) | undefined; onScrollEnd: () => void; contentContainerStyle: StyleProp | undefined; } & Record; export type RenderList> = ( props: RenderListProps, ) => React.ReactElement; export type RenderOverlayProps = { itemHeight: number; pickerWidth: number | 'auto' | `${number}%`; pickerHeight: number; overlayItemStyle: StyleProp | undefined; }; export type RenderOverlay = ( props: RenderOverlayProps, ) => React.ReactElement | null; // events export type ValueChangingEvent> = { item: ItemT; index: number; }; export type ValueChangedEvent> = { item: ItemT; index: number; }; export type OnValueChanging> = ( event: ValueChangingEvent, ) => void; export type OnValueChanged> = ( event: ValueChangedEvent, ) => void;