import type { IRange } from './IRange'; import type { ILinkedList, ILinkedListNode } from './LinkedList'; export interface ISelectedElementGettable { getSelectedElement(range: IRange): any[][]; } export declare function ISelectedElementGettableDecorator ISelectedElementGettable & ILinkedList>(constructor: T): { new (...args: any[]): { getSelectedElement(range: IRange): any[][]; readonly children: (ILinkedListNode & ISelectedElementGettable & { start: number; })[]; head: (ILinkedListNode & ISelectedElementGettable & { start: number; }) | null; tail: (ILinkedListNode & ISelectedElementGettable & { start: number; }) | null; beforeAdd?(nodes: (ILinkedListNode & ISelectedElementGettable & { start: number; })[], index: number, prevNode: (ILinkedListNode & ISelectedElementGettable & { start: number; }) | null, nextNode: (ILinkedListNode & ISelectedElementGettable & { start: number; }) | null, array: (ILinkedListNode & ISelectedElementGettable & { start: number; })[]): void; afterAdd?(nodes: (ILinkedListNode & ISelectedElementGettable & { start: number; })[], index: number, prevNode: (ILinkedListNode & ISelectedElementGettable & { start: number; }) | null, nextNode: (ILinkedListNode & ISelectedElementGettable & { start: number; }) | null, array: (ILinkedListNode & ISelectedElementGettable & { start: number; })[]): void; addLast(node: ILinkedListNode & ISelectedElementGettable & { start: number; }): void; addAfter(node: ILinkedListNode & ISelectedElementGettable & { start: number; }, target: ILinkedListNode & ISelectedElementGettable & { start: number; }): void; addBefore(node: ILinkedListNode & ISelectedElementGettable & { start: number; }, target: ILinkedListNode & ISelectedElementGettable & { start: number; }): void; addAtIndex(node: ILinkedListNode & ISelectedElementGettable & { start: number; }, index: number): void; addAll(nodes: (ILinkedListNode & ISelectedElementGettable & { start: number; })[]): void; beforeRemove?(nodes: (ILinkedListNode & ISelectedElementGettable & { start: number; })[], index: number, prevNode: (ILinkedListNode & ISelectedElementGettable & { start: number; }) | null, nextNode: (ILinkedListNode & ISelectedElementGettable & { start: number; }) | null, array: (ILinkedListNode & ISelectedElementGettable & { start: number; })[]): void; afterRemove?(nodes: (ILinkedListNode & ISelectedElementGettable & { start: number; })[], index: number, prevNode: (ILinkedListNode & ISelectedElementGettable & { start: number; }) | null, nextNode: (ILinkedListNode & ISelectedElementGettable & { start: number; }) | null, array: (ILinkedListNode & ISelectedElementGettable & { start: number; })[]): void; remove(node: ILinkedListNode & ISelectedElementGettable & { start: number; }): void; removeAll(): (ILinkedListNode & ISelectedElementGettable & { start: number; })[]; removeAllFrom(node: ILinkedListNode & ISelectedElementGettable & { start: number; }): (ILinkedListNode & ISelectedElementGettable & { start: number; })[]; splice(start: number, deleteCount: number, nodes?: (ILinkedListNode & ISelectedElementGettable & { start: number; })[] | undefined): (ILinkedListNode & ISelectedElementGettable & { start: number; })[]; findIndex(node: ILinkedListNode & ISelectedElementGettable & { start: number; }): void; }; } & T;