import { Node, Path } from 'slate';
import type { ElementWithReference } from './ElementWithReference';
import { CustomElementPlugin } from '../../baseEditor';
import { EntityAccessor, EntityId, FieldValue, RelativeSingleField } from '@contember/binding';
import { EditorReferenceBlocks } from '../templating';
import { NormalizedEmbedHandlers } from '../embed';
import { NormalizedBlocks } from '../../../blocks';
declare type ReferenceElementType = 'reference';
export declare const referenceElementType: ReferenceElementType;
export interface ReferenceElement extends ElementWithReference {
    type: ReferenceElementType;
}
export declare const isReferenceElement: (node: Node) => node is ReferenceElement;
export interface ReferenceElementOptions {
    referenceDiscriminationField: RelativeSingleField | undefined;
    editorReferenceBlocks: EditorReferenceBlocks;
    embedHandlers: NormalizedEmbedHandlers | undefined;
    embedReferenceDiscriminateBy: FieldValue | undefined;
    embedContentDiscriminationField: RelativeSingleField | undefined;
    embedSubBlocks: NormalizedBlocks | undefined;
    getReferencedEntity: (path: Path, referenceId: EntityId) => EntityAccessor;
}
export declare const createReferenceElementPlugin: (args: ReferenceElementOptions) => CustomElementPlugin<ReferenceElement>;
export {};
//# sourceMappingURL=ReferenceElement.d.ts.map