import { PureComponent } from 'react';
import { StyleProp, ViewStyle } from 'react-native';
import { ButtonProps } from './Button';
import { SwatchesProps } from './Swatches';
import { StepperProps } from './Stepper';
import { CommerceDataSource, CommerceTypes } from '@brandingbrand/fscommerce';
export interface AddToCartProps {
    product: CommerceTypes.Product;
    commerceDataSource: CommerceDataSource;
    defaultVariantId?: string;
    onChangeOption?: (name: string, value: string, variant?: CommerceTypes.Variant) => void;
    onAddToCart?: (cart: Promise<CommerceTypes.Cart>) => void;
    style?: StyleProp<ViewStyle>;
    swatchesStyle?: StyleProp<ViewStyle>;
    stepperStyle?: StyleProp<ViewStyle>;
    buttonStyle?: StyleProp<ViewStyle>;
    actionBarStyle?: StyleProp<ViewStyle>;
    buttonProps?: Partial<ButtonProps>;
    swatchesProps?: Partial<SwatchesProps>;
    stepperProps?: Partial<StepperProps>;
    renderStepper?(onChange: (count: number) => void): JSX.Element;
    renderButton?(onPress: () => void): JSX.Element;
}
export interface AddToCartOptionValue {
    name: string;
    value: string;
}
export interface AddToCartState {
    quantity: number;
    optionValues: AddToCartOptionValue[];
    variantId?: string;
}
export declare class AddToCart extends PureComponent<AddToCartProps, AddToCartState> {
    static getDerivedStateFromProps(nextProps: AddToCartProps): Partial<AddToCartState> | null;
    constructor(props: AddToCartProps);
    determineVariant(props: AddToCartProps): string;
    changeQty: (count: number) => void;
    addToCart: () => void;
    updateOption: (name: string, value: string) => void;
    _renderStepper(): JSX.Element;
    _renderButton(): JSX.Element;
    render(): JSX.Element;
}
