/// <reference types="react" />
import { Attachment, Property, PropertyMap, SourceOfData, UrgencyType } from '@parlor/common/amplify-schema';
import { CreateAccountModalProps } from '@parlor/components/modals/create-account-modal';
import { CreateUserFormValues, CreateUserModalProps } from '@parlor/components/modals/create-user-modal';
import { ModelWithDisplayName, ModelWithName, RenderAdminSelectorProps, RenderInboxSelectorProps, RenderRiskSelectorProps, RenderSentimentSelectorProps, RenderThemeSelectorProps, RenderTopicSelectorProps, RenderTypeSelectorProps } from '@parlor/components/select';
export type RenameButtonsMap = {
    cancel: string;
    save: string;
};
type RenameFieldsNameProps = {
    attachment?: null | string;
    attachmentPlaceholder?: null | string;
    businessLabels?: {
        details: {
            label: string;
            placeholder: string;
        };
        dueDate: {
            label: string;
            placeholder: string;
        };
        importance: {
            label: string;
            placeholder: string;
        };
        risk: {
            label: string;
            placeholder: string;
        };
        title: string;
    };
    description?: null | string;
    descriptionPlaceholder?: null | string;
    from?: null | string;
    fromPlaceholder?: null | string;
    inbox?: null | string;
    inboxPlaceholder?: null | string;
    manageNeedTitle?: null | string;
    theme?: null | string;
    themePlaceholder?: null | string;
    topic?: null | string;
    topicPlaceholder?: null | string;
    type?: null | string;
    typePlaceholder?: null | string;
    urgency?: null | string;
    urgencyPlaceholder?: null | string;
};
export type ConfigNeedFormValues = {
    account?: ModelWithDisplayName;
    adminAuthor?: RenderAdminSelectorProps;
    attachments?: (Attachment | File)[];
    description: string;
    dueDate?: Date;
    id: string;
    inbox?: RenderInboxSelectorProps;
    objectSource?: SourceOfData;
    properties?: Partial<Property[]>;
    risks?: RenderRiskSelectorProps[];
    sentiment?: RenderSentimentSelectorProps | null;
    themes?: RenderThemeSelectorProps[];
    topic?: RenderTopicSelectorProps;
    typeOption?: RenderTypeSelectorProps;
    urgency?: UrgencyType;
    user?: RenderAdminSelectorProps;
    userOrAccount?: RenderAdminSelectorProps | ModelWithDisplayName;
};
export type ConfigNeedModalProps<T extends ConfigNeedFormValues = ConfigNeedFormValues> = {
    classes?: {
        container?: string;
        vouContainer?: string;
    };
    customFieldProperties?: PropertyMap[];
    customFieldResponses?: Property[];
    excludedFields?: string[];
    isMultipleInboxes: boolean;
    isPortal?: boolean;
    isPortalForm?: boolean;
    isSubmitting?: boolean;
    isVOUForm?: boolean;
    item?: T;
    onCancel?(): void;
    onCreateAccount: (account: {
        displayName: string;
    }) => Promise<ModelWithDisplayName>;
    onCreateTheme?: (displayName: string) => Promise<ModelWithDisplayName>;
    onCreateTopic?: (name: string, options: {
        inboxID?: string;
    }) => Promise<ModelWithName>;
    onCreateUser: (user: CreateUserFormValues) => Promise<RenderAdminSelectorProps>;
    onSubmit?: (value: T) => Promise<unknown>;
    renameButtonsMap?: RenameButtonsMap;
    renameFieldsMap?: RenameFieldsNameProps;
    requiredFields: {
        from?: boolean;
        themes?: boolean;
        topic?: boolean;
        typeOption?: boolean;
        urgency?: boolean;
    };
    validateAccountName: CreateAccountModalProps['validateAccountName'];
    validateUserEmail: CreateUserModalProps['validateEmail'];
};
export declare const ConfigNeedModal: ({ classes, requiredFields, customFieldProperties, customFieldResponses, excludedFields, renameFieldsMap, renameButtonsMap, onCancel, onSubmit, onCreateUser, item, isMultipleInboxes, isVOUForm, validateAccountName, validateUserEmail, onCreateAccount, isSubmitting, onCreateTheme, onCreateTopic, isPortal, isPortalForm, }: ConfigNeedModalProps) => JSX.Element;
export {};
