import { Citation, PageState, PageResponse, UnsavedCitation, UnsavedAttachment } from '../../../../../@types';
export interface CitationMenuProps {
    /**
     * API call for fetching citations. These will populate the "Insert Citation/Attachment(s)" table.
     */
    fetchExistingCitations: (req: PageState) => Promise<PageResponse<Citation>>;
    /**
     * API call for creating a new citation/attachment.
     */
    onCreateCitation: (citation: UnsavedCitation) => Promise<Citation>;
    /**
     * API call for updating a citation/attachment.
     */
    onUpdateCitation: (citation: Citation) => Promise<Citation>;
    /**
     * API call for retrieving a citation by id
     */
    getCitationById: (id: number) => Promise<Citation>;
    /**
     * API call for storing an attachment (ex. in an s3 bucket)
     */
    onStoreAttachment: (citation: UnsavedAttachment) => Promise<Citation>;
    /**
     * Set which citations should be pre-checked in the citations table when this component is first rendered (used
     * to initialize useState).
     */
    initialSelectedIds?: number[];
    /**
     * Callback for when the user clicks the "Select" button. This passes an array of selected citations
     * that the user chose to the parent component.
     */
    onSelectCitations: (citationIds: number[]) => void;
    /**
     * Callback for when the user clicks the "Cancel" button. If you're using a modal, close your modal here.
     */
    onCancel: () => void;
    /**
     * Callback whenever the size of the content potentially changes. Use this if you're using something like
     * a Popper, so that it can reposition itself when the dimensions of its content changes.
     *
     * Currently, this will be called when the data in the citations table changes, and when the content itself changes (ex. clicks on "Add Citation")
     */
    onContentUpdate?: () => void;
    /**
     * Optional callback, used to notify parent that the user has changed their Citation's title.
     */
    onTitleChanged?: (id: number) => void;
}
export declare enum CitationMenuState {
    CITATIONS_TABLE = 0,
    ADD_CITATION = 1,
    EDIT_CITATION = 2,
    ADD_ATTACHMENT = 3,
    EDIT_ATTACHMENT = 4
}
/**
 * CitationMenu handles creating, updating, and selecting citations.
 *
 * Intended to be used within a bubble/pop-up/modal/dialog. For in-line citations, see CitationField instead.
 */
export declare function CitationMenu({ fetchExistingCitations, onCreateCitation, onUpdateCitation, getCitationById, onStoreAttachment, onSelectCitations, onCancel, initialSelectedIds, onContentUpdate, onTitleChanged, }: CitationMenuProps): import("react/jsx-runtime").JSX.Element | null;
export default CitationMenu;
