+ log(text: string): void;
+ emit(event: string, data: any);
+}
+
+export interface ISelectionManager {
+ selectionText: string;
+}
+
+export interface ICharMeasure {
+ width: number;
+ height: number;
+ measure(): void;
+}
+
+export interface ILinkifier {
+ linkifyRow(rowIndex: number): void;
+ attachHypertextLinkHandler(handler: LinkMatcherHandler): void;
+ registerLinkMatcher(regex: RegExp, handler: LinkMatcherHandler, options?: LinkMatcherOptions): number;
+ deregisterLinkMatcher(matcherId: number): boolean;
+}
+
+interface ICircularList<T> {
+ length: number;
+ maxLength: number;
+
+ forEach(callbackfn: (value: T, index: number, array: T[]) => void): void;
+ get(index: number): T;
+ set(index: number, value: T): void;
+ push(value: T): void;
+ pop(): T;
+ splice(start: number, deleteCount: number, ...items: T[]): void;
+ trimStart(count: number): void;
+ shiftElements(start: number, count: number, offset: number): void;
+}
+
+export interface LinkMatcherOptions {
+ /**
+ * The index of the link from the regex.match(text) call. This defaults to 0
+ * (for regular expressions without capture groups).
+ */
+ matchIndex?: number;
+ /**
+ * A callback that validates an individual link, returning true if valid and
+ * false if invalid.
+ */
+ validationCallback?: LinkMatcherValidationCallback;
+ /**
+ * The priority of the link matcher, this defines the order in which the link
+ * matcher is evaluated relative to others, from highest to lowest. The
+ * default value is 0.
+ */
+ priority?: number;