import type { FieldType } from '@univerjs/core';
import type { MouseEvent, ReactNode } from 'react';
import type { BaseAttachmentValue } from '../../../services/base-attachment-io.service';
import type { IBasePeopleOption } from '../../panels/field-config/FieldConfigPanel';
export interface IRecordDetailFieldItem {
    id: string;
    name: string;
    type: FieldType;
    value?: ReactNode;
    rawValue?: unknown;
    config?: Record<string, unknown>;
    readonly?: boolean;
    system?: boolean;
}
export interface IRecordDetailPanelProps {
    open: boolean;
    title: string;
    recordId?: string | null;
    fields: IRecordDetailFieldItem[];
    currentIndex?: number;
    totalRecords?: number;
    onClose: () => void;
    onPreviousRecord?: () => void;
    onNextRecord?: () => void;
    onFieldChange?: (fieldId: string, value: unknown) => void;
    uploadAttachment?: (file: File) => Promise<BaseAttachmentValue>;
    personOptions?: IBasePeopleOption[];
    groupOptions?: IBasePeopleOption[];
    onAddField?: (anchor: HTMLElement) => void;
    onEditField?: (fieldId: string, anchor: HTMLElement) => void;
    onSubmit?: (options: IRecordDetailSubmitOptions) => void;
    onDeleteRecord?: () => void;
    onResizeStart?: (event: MouseEvent<HTMLElement>) => void;
}
export interface IRecordDetailSubmitOptions {
    addMoreAfterSubmission: boolean;
}
export interface IRecordDetailFloatingPanelProps {
    open: boolean;
    title: string;
    anchor: {
        left: number;
        top: number;
        width: number;
        height: number;
    } | null;
    fields: IRecordDetailFieldItem[];
    onClose: () => void;
    onOpenRecord: () => void;
    onFieldChange?: (fieldId: string, value: unknown) => void;
    onEditField?: (fieldId: string, anchor: HTMLElement) => void;
    onSubmit?: () => void;
    uploadAttachment?: (file: File) => Promise<BaseAttachmentValue>;
    personOptions?: IBasePeopleOption[];
    groupOptions?: IBasePeopleOption[];
}
export declare function RecordDetailPanel({ open, recordId, fields, currentIndex, totalRecords, onClose, onPreviousRecord, onNextRecord, onFieldChange, uploadAttachment, personOptions, groupOptions, onAddField, onEditField, onSubmit, onDeleteRecord, onResizeStart, }: IRecordDetailPanelProps): import("react").JSX.Element;
export declare function RecordDetailFloatingPanel({ open, title, anchor, fields, onClose, onOpenRecord, onFieldChange, onEditField, onSubmit, uploadAttachment, personOptions, groupOptions, }: IRecordDetailFloatingPanelProps): import("react").ReactPortal | null;
