import { ActionSheetOptions } from '@expo/react-native-action-sheet'; import PropTypes from 'prop-types'; import React from 'react'; import { Animated, FlatList, StyleProp, TextInput, TextStyle, ViewStyle } from 'react-native'; import { LightboxProps } from 'react-native-lightbox-v2'; import { Actions, ActionsProps } from './Actions'; import { Avatar, AvatarProps } from './Avatar'; import Bubble from './Bubble'; import { Composer, ComposerProps } from './Composer'; import { Day, DayProps } from './Day'; import GiftedAvatar from './GiftedAvatar'; import { InputToolbar, InputToolbarProps } from './InputToolbar'; import { LoadEarlier, LoadEarlierProps } from './LoadEarlier'; import Message from './Message'; import MessageContainer from './MessageContainer'; import { MessageImage, MessageImageProps } from './MessageImage'; import { MessageText, MessageTextProps } from './MessageText'; import { IMessage, LeftRightStyle, MessageAudioProps, MessageVideoProps, Reply, User } from './Models'; import { QuickRepliesProps } from './QuickReplies'; import { Send, SendProps } from './Send'; import { SystemMessage, SystemMessageProps } from './SystemMessage'; import { Time, TimeProps } from './Time'; import * as utils from './utils'; export interface GiftedChatProps { messageContainerRef?: React.RefObject>; textInputRef?: React.RefObject; messages?: TMessage[]; isTyping?: boolean; messagesContainerStyle?: StyleProp; text?: string; alignTop?: boolean; scrollToBottom?: boolean; scrollToBottomStyle?: StyleProp; initialText?: string; placeholder?: string; disableComposer?: boolean; user?: User; locale?: string; timeFormat?: string; dateFormat?: string; loadEarlier?: boolean; isLoadingEarlier?: boolean; showUserAvatar?: boolean; showAvatarForEveryMessage?: boolean; isKeyboardInternallyHandled?: boolean; renderAvatarOnTop?: boolean; inverted?: boolean; imageProps?: Message['props']; lightboxProps?: LightboxProps; bottomOffset?: number; minInputToolbarHeight?: number; listViewProps?: any; textInputProps?: any; keyboardShouldPersistTaps?: any; maxInputLength?: number; forceGetKeyboardHeight?: boolean; alwaysShowSend?: boolean; imageStyle?: StyleProp; extraData?: any; minComposerHeight?: number; maxComposerHeight?: number; options?: { [key: string]: any; }; optionTintColor?: string; quickReplyStyle?: StyleProp; quickReplyTextStyle?: StyleProp; isCustomViewBottom?: boolean; infiniteScroll?: boolean; timeTextStyle?: LeftRightStyle; actionSheet?(): { showActionSheetWithOptions: (options: ActionSheetOptions, callback: (i: number) => void) => void; }; onPressAvatar?(user: User): void; onLongPressAvatar?(user: User): void; messageIdGenerator?(message?: TMessage): string; onSend?(messages: TMessage[]): void; onLoadEarlier?(): void; renderLoading?(): React.ReactNode; renderLoadEarlier?(props: LoadEarlierProps): React.ReactNode; renderAvatar?: null | ((props: AvatarProps) => React.ReactNode); renderBubble?(props: Bubble['props']): React.ReactNode; renderSystemMessage?(props: SystemMessageProps): React.ReactNode; onPress?(context: any, message: TMessage): void; onLongPress?(context: any, message: TMessage): void; renderUsername?(user: User): React.ReactNode; renderMessage?(message: Message['props']): React.ReactNode; renderMessageText?(messageText: MessageTextProps): React.ReactNode; renderMessageImage?(props: MessageImageProps): React.ReactNode; renderMessageVideo?(props: MessageVideoProps): React.ReactNode; renderMessageAudio?(props: MessageAudioProps): React.ReactNode; renderCustomView?(props: Bubble['props']): React.ReactNode; renderDay?(props: DayProps): React.ReactNode; renderTime?(props: TimeProps): React.ReactNode; renderFooter?(): React.ReactNode; renderChatEmpty?(): React.ReactNode; renderChatFooter?(): React.ReactNode; renderInputToolbar?(props: InputToolbarProps): React.ReactNode; renderComposer?(props: ComposerProps): React.ReactNode; renderActions?(props: ActionsProps): React.ReactNode; renderSend?(props: SendProps): React.ReactNode; renderAccessory?(props: InputToolbarProps): React.ReactNode; onPressActionButton?(): void; onInputTextChanged?(text: string): void; parsePatterns?(linkStyle: TextStyle): any; onQuickReply?(replies: Reply[]): void; renderQuickReplies?(quickReplies: QuickRepliesProps): React.ReactNode; renderQuickReplySend?(): React.ReactNode; scrollToBottomComponent?(): React.ReactNode; shouldUpdateMessage?(props: Message['props'], nextProps: Message['props']): boolean; } export interface GiftedChatState { isInitialized: boolean; composerHeight?: number; messagesContainerHeight?: number | Animated.Value; typingDisabled: boolean; text?: string; messages?: TMessage[]; } declare function GiftedChat(props: GiftedChatProps): JSX.Element; declare namespace GiftedChat { var propTypes: { messages: PropTypes.Requireable<(object | null | undefined)[]>; messagesContainerStyle: PropTypes.Requireable; text: PropTypes.Requireable; initialText: PropTypes.Requireable; placeholder: PropTypes.Requireable; disableComposer: PropTypes.Requireable; messageIdGenerator: PropTypes.Requireable<(...args: any[]) => any>; user: PropTypes.Requireable; onSend: PropTypes.Requireable<(...args: any[]) => any>; locale: PropTypes.Requireable; timeFormat: PropTypes.Requireable; dateFormat: PropTypes.Requireable; isKeyboardInternallyHandled: PropTypes.Requireable; loadEarlier: PropTypes.Requireable; onLoadEarlier: PropTypes.Requireable<(...args: any[]) => any>; isLoadingEarlier: PropTypes.Requireable; renderLoading: PropTypes.Requireable<(...args: any[]) => any>; renderLoadEarlier: PropTypes.Requireable<(...args: any[]) => any>; renderAvatar: PropTypes.Requireable<(...args: any[]) => any>; showUserAvatar: PropTypes.Requireable; actionSheet: PropTypes.Requireable<(...args: any[]) => any>; onPressAvatar: PropTypes.Requireable<(...args: any[]) => any>; onLongPressAvatar: PropTypes.Requireable<(...args: any[]) => any>; renderUsernameOnMessage: PropTypes.Requireable; renderAvatarOnTop: PropTypes.Requireable; isCustomViewBottom: PropTypes.Requireable; renderBubble: PropTypes.Requireable<(...args: any[]) => any>; renderSystemMessage: PropTypes.Requireable<(...args: any[]) => any>; onLongPress: PropTypes.Requireable<(...args: any[]) => any>; renderMessage: PropTypes.Requireable<(...args: any[]) => any>; renderMessageText: PropTypes.Requireable<(...args: any[]) => any>; renderMessageImage: PropTypes.Requireable<(...args: any[]) => any>; imageProps: PropTypes.Requireable; videoProps: PropTypes.Requireable; audioProps: PropTypes.Requireable; lightboxProps: PropTypes.Requireable; renderCustomView: PropTypes.Requireable<(...args: any[]) => any>; renderDay: PropTypes.Requireable<(...args: any[]) => any>; renderTime: PropTypes.Requireable<(...args: any[]) => any>; renderFooter: PropTypes.Requireable<(...args: any[]) => any>; renderChatEmpty: PropTypes.Requireable<(...args: any[]) => any>; renderChatFooter: PropTypes.Requireable<(...args: any[]) => any>; renderInputToolbar: PropTypes.Requireable<(...args: any[]) => any>; renderComposer: PropTypes.Requireable<(...args: any[]) => any>; renderActions: PropTypes.Requireable<(...args: any[]) => any>; renderSend: PropTypes.Requireable<(...args: any[]) => any>; renderAccessory: PropTypes.Requireable<(...args: any[]) => any>; onPressActionButton: PropTypes.Requireable<(...args: any[]) => any>; bottomOffset: PropTypes.Requireable; minInputToolbarHeight: PropTypes.Requireable; listViewProps: PropTypes.Requireable; keyboardShouldPersistTaps: PropTypes.Requireable; onInputTextChanged: PropTypes.Requireable<(...args: any[]) => any>; maxInputLength: PropTypes.Requireable; forceGetKeyboardHeight: PropTypes.Requireable; inverted: PropTypes.Requireable; textInputProps: PropTypes.Requireable; extraData: PropTypes.Requireable; minComposerHeight: PropTypes.Requireable; maxComposerHeight: PropTypes.Requireable; alignTop: PropTypes.Requireable; }; var append: (currentMessages: TMessage[] | undefined, messages: TMessage[], inverted?: boolean) => TMessage[]; var prepend: (currentMessages: TMessage[] | undefined, messages: TMessage[], inverted?: boolean) => TMessage[]; } export * from './Models'; export { GiftedChat, Actions, Avatar, Bubble, SystemMessage, MessageImage, MessageText, Composer, Day, InputToolbar, LoadEarlier, Message, MessageContainer, Send, Time, GiftedAvatar, utils, };