///
import { AddToCartInput, Price, Product, ProductVariant, ProductVariantOption } from '../types';
type Comments = Record;
type Options = Record;
export interface AddToCartSubmit {
input: AddToCartInput;
optimistic: {
price?: Price;
previousPrice?: Price;
quantity: number;
product: Product;
variant?: ProductVariant;
};
}
interface AddToCartOptions {
product?: Product;
variant?: ProductVariant;
commentValidators?: {
[commentName: string]: ({ name, value }: {
name?: string;
value: string;
}) => string;
};
getMissingOptions?(): ProductVariantOption[] | null;
submit: (data: AddToCartSubmit) => Promise;
initialValues?: Record;
}
export interface AddToCartFormikValues {
quantity: number;
comments: Comments;
options?: Options;
[otherValues: string]: any;
}
export interface AddToCartFormikErrors {
quantity?: string;
comments?: Comments;
options?: Options;
[otherValues: string]: any;
}
export declare function useAddToCart({ product, variant, submit, commentValidators, getMissingOptions, initialValues }: AddToCartOptions): {
form: {
initialValues: AddToCartFormikValues;
initialErrors: import("formik").FormikErrors;
initialTouched: import("formik").FormikTouched;
initialStatus: any;
handleBlur: {
(e: import("react").FocusEvent): void;
(fieldOrEvent: T): T extends string ? (e: any) => void : void;
};
handleChange: {
(e: import("react").ChangeEvent): void;
>(field: T_1): T_1 extends import("react").ChangeEvent ? void : (e: string | import("react").ChangeEvent) => void;
};
handleReset: (e: any) => void;
handleSubmit: (e?: import("react").FormEvent) => void;
resetForm: (nextState?: Partial>) => void;
setErrors: (errors: import("formik").FormikErrors) => void;
setFormikState: (stateOrCb: import("formik").FormikState | ((state: import("formik").FormikState) => import("formik").FormikState)) => void;
setFieldTouched: (field: string, touched?: boolean, shouldValidate?: boolean) => Promise | Promise>;
setFieldValue: (field: string, value: any, shouldValidate?: boolean) => Promise | Promise>;
setFieldError: (field: string, value: string) => void;
setStatus: (status: any) => void;
setSubmitting: (isSubmitting: boolean) => void;
setTouched: (touched: import("formik").FormikTouched, shouldValidate?: boolean) => Promise | Promise>;
setValues: (values: import("react").SetStateAction, shouldValidate?: boolean) => Promise | Promise>;
submitForm: () => Promise;
validateForm: (values?: AddToCartFormikValues) => Promise>;
validateField: (name: string) => Promise | Promise;
isValid: boolean;
dirty: boolean;
unregisterField: (name: string) => void;
registerField: (name: string, { validate }: any) => void;
getFieldProps: (nameOrOptions: string | import("formik").FieldConfig) => import("formik").FieldInputProps;
getFieldMeta: (name: string) => import("formik").FieldMetaProps;
getFieldHelpers: (name: string) => import("formik").FieldHelperProps;
validateOnBlur: boolean;
validateOnChange: boolean;
validateOnMount: boolean;
values: AddToCartFormikValues;
errors: import("formik").FormikErrors;
touched: import("formik").FormikTouched;
isSubmitting: boolean;
isValidating: boolean;
status?: any;
submitCount: number;
};
};
export {};