import { Component } from 'react'; import type { ReactNode } from 'react'; import PropTypes from 'prop-types'; import type { StyleProp, ViewStyle, TextStyle } from 'react-native'; import type { QuickRepliesProps } from './QuickReplies'; import type { MessageTextProps } from './MessageText'; import type { MessageImageProps } from './MessageImage'; import type { TimeProps } from './Time'; import { User, IMessage, LeftRightStyle, Reply, Omit, MessageVideoProps, MessageAudioProps } from './Models'; export declare type RenderMessageImageProps = Omit, 'containerStyle' | 'wrapperStyle'> & MessageImageProps; export declare type RenderMessageVideoProps = Omit, 'containerStyle' | 'wrapperStyle'> & MessageVideoProps; export declare type RenderMessageAudioProps = Omit, 'containerStyle' | 'wrapperStyle'> & MessageAudioProps; export declare type RenderMessageTextProps = Omit, 'containerStyle' | 'wrapperStyle'> & MessageTextProps; export interface BubbleProps { user?: User; touchableProps?: object; renderUsernameOnMessage?: boolean; isCustomViewBottom?: boolean; inverted?: boolean; position: 'left' | 'right'; currentMessage?: TMessage; nextMessage?: TMessage; previousMessage?: TMessage; optionTitles?: string[]; containerStyle?: LeftRightStyle; wrapperStyle?: LeftRightStyle; textStyle?: LeftRightStyle; bottomContainerStyle?: LeftRightStyle; tickStyle?: StyleProp; containerToNextStyle?: LeftRightStyle; containerToPreviousStyle?: LeftRightStyle; usernameStyle?: TextStyle; quickReplyStyle?: StyleProp; quickReplyTextStyle?: StyleProp; onPress?(context?: any, message?: any): void; onLongPress?(context?: any, message?: any): void; onQuickReply?(replies: Reply[]): void; renderMessageImage?(props: RenderMessageImageProps): ReactNode; renderMessageVideo?(props: RenderMessageVideoProps): ReactNode; renderMessageAudio?(props: RenderMessageAudioProps): ReactNode; renderMessageText?(props: RenderMessageTextProps): ReactNode; renderCustomView?(bubbleProps: BubbleProps): ReactNode; renderTime?(timeProps: TimeProps): ReactNode; renderTicks?(currentMessage: TMessage): ReactNode; renderUsername?(): ReactNode; renderQuickReplySend?(): ReactNode; renderQuickReplies?(quickReplies: QuickRepliesProps): ReactNode; } declare class Bubble extends Component> { static contextType: import("react").Context; static defaultProps: { inverted: boolean; textStyle: undefined; quickReplyStyle: undefined; quickReplyTextStyle: undefined; renderQuickReplySend: undefined; isCustomViewBottom: boolean; renderUsernameOnMessage: boolean; touchableProps: {}; onPress: null; onLongPress: null; renderMessageImage: null; renderMessageVideo: null; renderMessageAudio: null; renderMessageText: null; renderCustomView: null; renderUsername: null; renderTicks: null; renderTime: null; renderQuickReplies: null; onQuickReply: null; position: string; optionTitles: string[]; currentMessage: { text: null; createdAt: null; image: null; }; nextMessage: {}; previousMessage: {}; containerStyle: {}; wrapperStyle: {}; bottomContainerStyle: {}; tickStyle: {}; usernameStyle: {}; containerToNextStyle: {}; containerToPreviousStyle: {}; }; static propTypes: { user: PropTypes.Validator; touchableProps: PropTypes.Requireable; onLongPress: PropTypes.Requireable<(...args: any[]) => any>; renderMessageImage: PropTypes.Requireable<(...args: any[]) => any>; renderMessageVideo: PropTypes.Requireable<(...args: any[]) => any>; renderMessageAudio: PropTypes.Requireable<(...args: any[]) => any>; renderMessageText: PropTypes.Requireable<(...args: any[]) => any>; renderCustomView: PropTypes.Requireable<(...args: any[]) => any>; isCustomViewBottom: PropTypes.Requireable; renderUsernameOnMessage: PropTypes.Requireable; renderUsername: PropTypes.Requireable<(...args: any[]) => any>; renderTime: PropTypes.Requireable<(...args: any[]) => any>; renderTicks: PropTypes.Requireable<(...args: any[]) => any>; renderQuickReplies: PropTypes.Requireable<(...args: any[]) => any>; onQuickReply: PropTypes.Requireable<(...args: any[]) => any>; position: PropTypes.Requireable; optionTitles: PropTypes.Requireable<(string | null | undefined)[]>; currentMessage: PropTypes.Requireable; nextMessage: PropTypes.Requireable; previousMessage: PropTypes.Requireable; containerStyle: PropTypes.Requireable; right: PropTypes.Requireable; }>>; wrapperStyle: PropTypes.Requireable; right: PropTypes.Requireable; }>>; bottomContainerStyle: PropTypes.Requireable; right: PropTypes.Requireable; }>>; tickStyle: PropTypes.Requireable; usernameStyle: PropTypes.Requireable; containerToNextStyle: PropTypes.Requireable; right: PropTypes.Requireable; }>>; containerToPreviousStyle: PropTypes.Requireable; right: PropTypes.Requireable; }>>; }; onPress: () => void; onLongPress: () => void; styledBubbleToNext(): (StyleProp | { borderBottomLeftRadius: number; } | { borderBottomRightRadius: number; })[] | null; styledBubbleToPrevious(): (StyleProp | { borderTopLeftRadius: number; } | { borderTopRightRadius: number; })[] | null; renderQuickReplies(): ReactNode; renderMessageText(): ReactNode; renderMessageImage(): ReactNode; renderMessageVideo(): ReactNode; renderMessageAudio(): ReactNode; renderTicks(): ReactNode; renderTime(): ReactNode; renderUsername(): JSX.Element | null; renderCustomView(): ReactNode; renderBubbleContent(): JSX.Element; render(): JSX.Element; } export default Bubble;