import type { ITextDisplayerData } from "../../main_thread/types";
import type { IRange } from "../../utils/ranges";
import type { ITextDisplayerInterface } from "../segment_sinks";
import type { IPushTextDataCoreMessage, IRemoveTextDataCoreMessage, IResetTextDisplayerCoreMessage, IStopTextDisplayerCoreMessage } from "../types";
/**
 * Implementation of an `ITextDisplayerInterface` for the Core, that can run in
 * a WebWorker (so, in a different thread than the `ITextDisplayer`).
 *
 * @class CoreTextDisplayerInterface
 */
export default class CoreTextDisplayerInterface implements ITextDisplayerInterface {
    private _contentId;
    private _messageSender;
    _queues: {
        pushTextData: Array<{
            resolve: (ranges: IRange[]) => void;
            reject: (err: unknown) => void;
        }>;
        remove: Array<{
            resolve: (ranges: IRange[]) => void;
            reject: (err: unknown) => void;
        }>;
    };
    /**
     * @param {string} contentId
     * @param {Object} messageSender
     */
    constructor(contentId: string, messageSender: (msg: ICoreTextDisplayerInterfaceMessage) => void);
    /**
     * @see ITextDisplayerInterface
     */
    pushTextData(infos: ITextDisplayerData): Promise<IRange[]>;
    /**
     * @see ITextDisplayerInterface
     */
    remove(start: number, end: number): Promise<IRange[]>;
    /**
     * @see ITextDisplayerInterface
     */
    reset(): void;
    /**
     * @see ITextDisplayerInterface
     */
    stop(reason: string | undefined): void;
    private _resetCurrentQueue;
    /**
     * @param {Array.<Object>} ranges
     */
    onPushedTrackSuccess(ranges: IRange[]): void;
    /**
     * @param {unknown} err
     */
    onPushedTrackError(err: Error): void;
    /**
     * @param {Array.<Object>} ranges
     */
    onRemoveSuccess(ranges: IRange[]): void;
    /**
     * @param {unknown} err
     */
    onRemoveError(err: Error): void;
}
type ICoreTextDisplayerInterfaceMessage = IPushTextDataCoreMessage | IRemoveTextDataCoreMessage | IStopTextDisplayerCoreMessage | IResetTextDisplayerCoreMessage;
export {};
//# sourceMappingURL=core_text_displayer_interface.d.ts.map