import React from 'react';
import { Attachment, SourceOfData } from '@parlor/common/amplify-schema';
import { CreateAccountModalProps } from '@parlor/components/modals/create-account-modal/create-account-modal';
import { CreateUserFormValues, CreateUserModalProps } from '@parlor/components/modals/create-user-modal/create-user-modal';
import { GetFields } from '@parlor/components/need-components/need-item';
import { ModelWithDisplayName, RenderAdminSelectorProps, RenderInboxSelectorProps } from '@parlor/components/select';
import { ArtifactBylineProps } from '../artifact-byline';
import { ArtifactDetailsProps } from '../artifact-details';
import { ArtifactFormProps } from '../artifact-form';
import { ArtifactHeaderProps } from '../artifact-header/artifact-header';
import { ManageArtifactProps } from '../manage-artifact';
export type ArtifactItemProps = ArtifactItemInnerProps & {
    error?: Error;
    loading?: boolean;
};
export type ArtifactFormValues = {
    account?: ModelWithDisplayName;
    adminAssigned?: RenderAdminSelectorProps;
    adminAuthor?: RenderAdminSelectorProps;
    attachments?: (Attachment | File)[];
    createdAt?: string;
    description: string;
    id: string;
    inbox?: RenderInboxSelectorProps;
    isProcessed?: boolean;
    name?: string;
    needsCount?: number;
    objectSource?: SourceOfData;
    user?: RenderAdminSelectorProps;
};
type ArtifactItemInnerProps = ArtifactBylineProps & ArtifactFormProps & ArtifactHeaderProps & ManageArtifactProps & Omit<ArtifactDetailsProps, 'updateDescription'> & {
    adminAuthor?: RenderAdminSelectorProps;
    artifact: ArtifactFormValues;
    defaultIsEditMode?: boolean;
    defaultIsLongMode?: boolean;
    defaultIsTabsCollapsedMode?: boolean;
    defaultOpen?: boolean;
    isEditMode?: boolean;
    isLongMode?: boolean;
    isPullout?: boolean;
    isTabsCollapsedMode?: boolean;
    manageNeedFieldOptions: GetFields;
    needsComponent?: JSX.Element;
    onCancel?: VoidFunction;
    onCreateAccount: (account: {
        displayName: string;
    }) => Promise<ModelWithDisplayName>;
    onCreateUser: (user: CreateUserFormValues) => Promise<RenderAdminSelectorProps>;
    onDelete?: (artifact: {
        id: string;
    }) => void;
    onHighlightClick?: (needId: string) => void;
    onSubmit: (values: ArtifactFormValues) => Promise<unknown>;
    onToggleEditMode?(nextState: boolean): void;
    onToggleLongMode?(nextState: boolean): void;
    onToggleTabsCollapseMode?(nextState: boolean): void;
    validateAccountName: CreateAccountModalProps['validateAccountName'];
    validateUserEmail: CreateUserModalProps['validateEmail'];
};
export declare const ArtifactItem: React.MemoExoticComponent<({ loading, error, ...props }: ArtifactItemProps) => JSX.Element>;
export {};
