import React from 'react';
import { UseFormReturn } from 'react-hook-form';
import { Artifact, Need, Property, Risk, SurveyResponse } from '@parlor/common/amplify-schema';
import { AdditionalDetailsFormValues, AdditionalDetailsProps } from '@parlor/components/need-components/additional-details';
import { BusinessCaseFormValues } from '@parlor/components/need-components/business-case';
import { Fields, ManageNeedFormValues, ManageNeedProps } from '@parlor/components/need-components/manage-need';
import { NeedDetailsProps } from '@parlor/components/need-components/need-details';
import { NeedHeaderProps } from '@parlor/components/need-components/need-header/need-header';
import { RenderAdminSelectorProps } from '@parlor/components/select';
export type NeedItemFormValues = AdditionalDetailsFormValues & ManageNeedFormValues & BusinessCaseFormValues & {
    id: string;
    isProcessed?: boolean;
    isResolved?: boolean;
    seen?: boolean;
};
export type NeedItemProps = NeedItemInnerProps & {
    error: Error;
    loading?: boolean;
};
export type GetFields = (options: Pick<UseFormReturn<NeedItemFormValues>, 'getValues' | 'setValue'>) => Fields;
type NeedItemInnerProps = NeedItemFormValues & {
    id: string;
} & Omit<NeedHeaderProps, 'avatarUrl'> & Omit<ManageNeedProps, 'defaultOpen' | 'fieldOptions'> & Omit<AdditionalDetailsProps, 'defaultOpen'> & NeedDetailsProps & {
    additionalDetails: string;
    adminAuthor?: RenderAdminSelectorProps;
    artifact?: Partial<Artifact>;
    customFieldResponses?: Property[];
    defaultOpenFormBlocks?: {
        AdditionalDetails?: boolean;
        BusinessCase?: boolean;
        ManageNeed?: boolean;
    };
    dueDate?: Date;
    fieldOptions: Fields;
    id: string;
    isPullout?: boolean;
    isWrap?: boolean;
    notesAggregate: Need['notesAggregate'];
    onChange: (values: ManageNeedFormValues) => Promise<unknown>;
    onClose?: () => void;
    onDelete?: (need: {
        id: string;
    }) => void;
    risks?: Risk[];
    surveyResponse?: Partial<SurveyResponse>;
};
export declare const NewInboxDefaultOpenBlocks: {
    BusinessCase: boolean;
    ManageNeed: boolean;
    AdditionalDetails: boolean;
};
export declare const NeedItem: React.MemoExoticComponent<({ loading, error, ...props }: NeedItemProps) => JSX.Element>;
export {};
