import { DialogProps } from '@mui/material/Dialog';
import { IFileModel, IOption, IPartData } from './models';
import { ICropDimensions } from '../ImageCropDialog/model';
/**
 * The props type of [[`PartDialog`]].
 */
export interface IPartDialog extends DialogProps {
    /**
     * If `true`, a  loading overlay is displayed on save button.
     * Should be set to `true` while saving to disable user interactions.
     */
    isLoading?: boolean;
    /**
     * Data of part form.
     *
     * ```
     * export interface IPartData {
     *    id: string;
     *    name: string;
     *    description?: string;
     *    externalName?: string;
     *    material?: string;
     *    customer?: string;
     *    designMaterial?: string;
     *    customerReference?: string;
     *    materialForm?: number | string;
     * }
     * ```
     */
    formData?: IPartData;
    /**
     * Source for the currently part thumbnail.
     */
    thumbnailSrc?: string;
    /**
     *  The dimensions use for the crop and part thumbnail.
     *
     * ```
     * export interface ICropDimensions {
     *     width: number;
     *     height: number;
     *     border: number;
     * }
     * ```
     */
    cropDimensions?: ICropDimensions;
    /**
     * Options for material.
     *
     * ```
     * export interface IOption {
     *     id: string | number;
     *     name: string;
     * }
     * ```
     */
    materials: ReadonlyArray<IOption>;
    /**
     * Options for customer.
     *
     * ```
     * export interface IOption {
     *     id: string | number;
     *     name: string;
     * }
     * ```
     */
    customers: ReadonlyArray<IOption>;
    /**
     * Options for materialForm.
     *
     * ```
     * export interface IOption {
     *     id: string | number;
     *     name: string;
     * }
     * ```
     */
    materialForms: ReadonlyArray<IOption>;
    /**
     * Callback function called when the save button is clicked.
     *
     * ```
     * export interface IPartData {
     *    id: string;
     *    name: string;
     *    description?: string;
     *    externalName?: string;
     *    material?: string;
     *    customer?: string;
     *    designMaterial?: string;
     *    customerReference?: string;
     *    materialForm?: number | string;
     * }
     * ```
     *
     * ```
     * export interface IFileModel {
     *     sourceData?: string;
     *     isChanged?: boolean;
     * }
     * ```
     * @param {IPartData} part With all properties from [[IPartData]].
     * @param {IFileModel} thumbnail Returns a thumbnail model, sourceData was DataURL base 64. if thumbnail has been changed, then the isChanged will return true.
     * @return {void}.
     */
    onSave: (part: IPartData, thumbnail?: IFileModel) => void;
    /**
     * Callback function called when the cancel button is clicked.
     * Set open property to `false` to close the dialog.
     */
    onCancel: () => void;
}
/**
 * @param {IPartDialog} props - provides the properties fo React component
 * @return {ReactNode} - provides the react component to be ingested
 **/
export declare const PartDialog: (props: IPartDialog) => import("react/jsx-runtime").JSX.Element | null;
