import { Extension } from '@tiptap/core';
import { PluginKey } from '@tiptap/pm/state';
import { TimecodeMode } from '../../../../types/src/video-editor';

export interface TimeOptions {
    /**
     * The HTML attributes for the time widget.
     * @default {}
     */
    HTMLAttributes: Record<string, string>;
    /**
     * The frame rate for the time based feature.
     * @default 24
     */
    frameRate: number;
    /**
     * The placeholder text for the time based feature.
     * @default 'Enter a message...'
     */
    placeholder: string;
    /**
     * The time values (in seconds) for the time based feature.
     * Can be a single value or a range [start, end].
     * @default []
     */
    time: number[];
    /**
     * The timecode mode for the time based feature.
     * @default TimecodeMode.Standard
     */
    timecodeMode: TimecodeMode;
}
export interface TimeStorage {
    frameRate: number;
    placeholder: string;
    time: number[];
    timecodeMode: TimecodeMode;
}
declare module '@tiptap/core' {
    interface Commands<ReturnType> {
        time: {
            /**
             * Update the time decoration with new values.
             */
            setTime: (options: {
                frameRate?: number;
                placeholder?: string;
                time?: number[];
                timecodeMode?: TimecodeMode;
            }) => ReturnType;
        };
    }
}
/**
 * The plugin key for the time decoration plugin.
 */
export declare const TimePluginKey: PluginKey<any>;
/**
 * This extension adds a node decoration widget at the start of the document
 * displaying the time using cx-timecode component.
 */
export declare const Time: Extension<TimeOptions, TimeStorage>;
export default Time;
