import { PersistedSlice } from '../slice/PersistedSlice';
import type { Peritext } from '../Peritext';
import type { SliceType } from '../slice/types';
import type { MarkerSlice } from '../slice/MarkerSlice';
import type { Slices } from '../slice/Slices';
import type { ITimestampStruct } from '../../../json-crdt-patch';
import type { Cursor } from './Cursor';
export declare class EditorSlices<T = string> {
    protected readonly txt: Peritext<T>;
    readonly slices: Slices<T>;
    constructor(txt: Peritext<T>, slices: Slices<T>);
    protected insAtCursors<S extends PersistedSlice<T>>(callback: (cursor: Cursor<T>) => S): S[];
    insStack(type: SliceType, data?: unknown | ITimestampStruct): PersistedSlice<T>[];
    insOne(type: SliceType, data?: unknown | ITimestampStruct): PersistedSlice<T>[];
    insErase(type: SliceType, data?: unknown | ITimestampStruct): PersistedSlice<T>[];
    insMarker(type: SliceType, data?: unknown, separator?: string): MarkerSlice<T>[];
    del(sliceOrId: PersistedSlice<T> | ITimestampStruct): void;
}
