import PropTypes from 'prop-types'; import React, { RefObject } from 'react'; import { FlatList, ListViewProps, ListRenderItemInfo, NativeSyntheticEvent, NativeScrollEvent, StyleProp, ViewStyle } from 'react-native'; import LoadEarlier from './LoadEarlier'; import Message from './Message'; import { User, IMessage, Reply } from './types'; export interface MessageContainerProps { messages?: TMessage[]; user?: User; listViewProps: Partial; inverted?: boolean; loadEarlier?: boolean; alignTop?: boolean; scrollToBottom?: boolean; scrollToBottomStyle?: StyleProp; invertibleScrollViewProps?: any; extraData?: any; scrollToBottomOffset?: number; forwardRef?: RefObject>; renderFooter?(props: MessageContainerProps): React.ReactNode; renderMessage?(props: Message['props']): React.ReactNode; renderLoadEarlier?(props: LoadEarlier['props']): React.ReactNode; scrollToBottomComponent?(): React.ReactNode; onLoadEarlier?(): void; onQuickReply?(replies: Reply[]): void; } interface State { showScrollBottom: boolean; } export default class MessageContainer extends React.PureComponent, State> { static defaultProps: { messages: never[]; user: {}; renderFooter: null; renderMessage: null; onLoadEarlier: () => void; onQuickReply: () => void; inverted: boolean; loadEarlier: boolean; listViewProps: {}; invertibleScrollViewProps: {}; extraData: null; scrollToBottom: boolean; scrollToBottomOffset: number; alignTop: boolean; scrollToBottomStyle: {}; }; static propTypes: { messages: PropTypes.Requireable<(object | null)[]>; user: PropTypes.Requireable; renderFooter: PropTypes.Requireable<(...args: any[]) => any>; renderMessage: PropTypes.Requireable<(...args: any[]) => any>; renderLoadEarlier: PropTypes.Requireable<(...args: any[]) => any>; onLoadEarlier: PropTypes.Requireable<(...args: any[]) => any>; listViewProps: PropTypes.Requireable; inverted: PropTypes.Requireable; loadEarlier: PropTypes.Requireable; invertibleScrollViewProps: PropTypes.Requireable; extraData: PropTypes.Requireable; scrollToBottom: PropTypes.Requireable; scrollToBottomOffset: PropTypes.Requireable; scrollToBottomComponent: PropTypes.Requireable<(...args: any[]) => any>; alignTop: PropTypes.Requireable; }; state: { showScrollBottom: boolean; }; componentDidMount(): void; componentWillUnmount(): void; componentDidUpdate(prevProps: MessageContainerProps): void; attachKeyboardListeners: () => void; detachKeyboardListeners: () => void; renderFooter: () => {} | null | undefined; renderLoadEarlier: () => {} | null | undefined; scrollTo(options: { animated?: boolean; offset: number; }): void; scrollToBottom: (animated?: boolean) => void; handleOnScroll: (event: NativeSyntheticEvent) => void; renderRow: ({ item, index }: ListRenderItemInfo) => {} | null | undefined; renderHeaderWrapper: () => JSX.Element; renderScrollBottomComponent(): {} | null | undefined; renderScrollToBottomWrapper(): JSX.Element; onLayoutList: () => void; keyExtractor: (item: TMessage) => string; render(): JSX.Element; } export {};