import { ProviderFactory } from '@uidu/editor-common';
import { MediaClientConfig } from '@uidu/media-core';
import { Node as PMNode } from 'prosemirror-model';
import { Decoration, DecorationSet, EditorView } from 'prosemirror-view';
import { EventDispatcher } from '../../../event-dispatcher';
import { getPosHandler, SelectionBasedNodeView } from '../../../nodeviews/ReactNodeView';
import { PortalProviderAPI } from '../../../ui/PortalProvider';
import { DispatchAnalyticsEvent } from '../../analytics';
import { MediaOptions } from '../types';
import { MediaSingleNodeProps, MediaSingleNodeViewProps } from './types';
export interface MediaSingleNodeState {
    width?: number;
    height?: number;
    viewMediaClientConfig?: MediaClientConfig;
    isCopying: boolean;
}
export default function MediaSingleNode(props: MediaSingleNodeProps): JSX.Element;
declare class MediaSingleNodeView extends SelectionBasedNodeView<MediaSingleNodeViewProps> {
    lastOffsetLeft: number;
    forceViewUpdate: boolean;
    createDomRef(): HTMLElement;
    viewShouldUpdate(nextNode: PMNode): boolean;
    getNodeMediaId(node: PMNode): string | undefined;
    update(node: PMNode, decorations: Decoration[], innerDecorations: DecorationSet, isValidUpdate?: (currentNode: PMNode, newNode: PMNode) => boolean): boolean;
    render(): JSX.Element;
    ignoreMutation(): boolean;
}
export declare const ReactMediaSingleNode: (portalProviderAPI: PortalProviderAPI, eventDispatcher: EventDispatcher, providerFactory: ProviderFactory, mediaOptions?: MediaOptions, fullWidthMode?: boolean, dispatchAnalyticsEvent?: DispatchAnalyticsEvent, isCopyPasteEnabled?: boolean) => (node: PMNode, view: EditorView, getPos: getPosHandler) => MediaSingleNodeView;
export {};
