import React, { Component } from 'react';
import { Animated, ImageStyle, ImageURISource, StyleProp, TextStyle, ViewStyle } from 'react-native';
export interface AccordionProps {
    animationDuration?: number;
    arrowIconImage?: ImageURISource;
    arrowIconStyle?: StyleProp<ImageStyle>;
    openIconImage?: ImageURISource;
    openIconStyle?: StyleProp<ImageStyle>;
    closedIconImage?: ImageURISource;
    closedIconStyle?: StyleProp<ImageStyle>;
    content?: JSX.Element;
    contentStyle?: StyleProp<ViewStyle>;
    disableAnimation?: boolean;
    iconFormat?: 'image' | 'plusminus' | 'arrow';
    openStyle?: StyleProp<ViewStyle>;
    openTitleStyle?: StyleProp<ViewStyle>;
    padding?: number;
    plusMinusStyle?: StyleProp<TextStyle>;
    renderContent?: () => React.ReactNode;
    state?: 'open' | 'closed';
    style?: StyleProp<ViewStyle>;
    title: JSX.Element;
    titleContainerStyle?: StyleProp<ViewStyle>;
    titleHeight?: number;
    titleStyle?: StyleProp<ViewStyle>;
    titleUnderlayColor?: string;
}
export interface AccordionState {
    arrowTranslateAnimation: Animated.Value;
    contentHeightAnimation: Animated.Value;
    isOpen: boolean;
    isMeasuring: boolean;
    hasMeasured: boolean;
    padding: {
        paddingLeft: number;
        paddingRight: number;
    };
    titleTouchableHighlight: {
        height: number;
    };
}
export declare class Accordion extends Component<AccordionProps, AccordionState> {
    static defaultProps: Partial<AccordionProps>;
    static getDerivedStateFromProps(nextProps: AccordionProps, prevState: AccordionState): Partial<AccordionState> | null;
    private contentView;
    constructor(props: AccordionProps);
    render(): JSX.Element;
    private animateContent;
    private contentOnLayout;
    private shouldEnableAnimation;
    private renderIcon;
    private toggleAccordion;
}
