import React, { Component } from 'react';
import { ImageURISource, StyleProp, TextStyle, ViewStyle } from 'react-native';
import { CommerceTypes } from '@brandingbrand/fscommerce';
import { SwatchStyle } from './Swatch';
export interface SwatchItemType extends CommerceTypes.OptionValue {
    color?: string;
    image?: ImageURISource;
}
export interface SwatchesProps extends SwatchStyle {
    title?: string;
    items: SwatchItemType[];
    defaultValue?: string;
    style?: StyleProp<ViewStyle>;
    renderSwatch?: (swatch: any) => React.ReactNode;
    label?: boolean;
    labelContainerStyle?: StyleProp<ViewStyle>;
    labelTitleStyle?: StyleProp<TextStyle>;
    labelValueStyle?: StyleProp<TextStyle>;
    renderLabel?: (swatch: any) => void;
    onChangeSwatch?: (swatch: any) => void;
    disabled?: boolean;
    maxSwatches?: number;
    renderMoreLess?: (showMore: boolean) => React.ReactNode;
    moreLessStyle?: StyleProp<ViewStyle>;
}
export interface SwatchesState {
    selected: any;
    shouldShowMoreLess: boolean;
    showMore: boolean;
}
export declare class Swatches extends Component<SwatchesProps, SwatchesState> {
    static getDerivedStateFromProps(nextProps: SwatchesProps): Partial<SwatchesState> | null;
    constructor(props: SwatchesProps);
    onSelect: (swatch: any) => void;
    _renderSwatch: (item: SwatchItemType, i: number) => JSX.Element;
    _renderLabel: (swatch: any) => void | JSX.Element;
    toggleMoreLess: () => void;
    _renderMoreLess: () => JSX.Element | null;
    render(): JSX.Element;
}
