import { DataToken } from "./datatoken.js"; import { Position } from "./position.js"; type EventKind = 'start' | 'end' | 'token'; export declare abstract class Event { kind: EventKind; uuid?: string; metadata?: any; readonly name: string; readonly position: number; constructor(kind: EventKind, name: string, position: Position); static start: (name: string, position: Position | number, metadata?: any) => Event.Start; static end: (name: string, position: Position | number) => Event.End; static token: (data: string, position: Position | number) => Event.Token; static trackedStart: (name: string, position: Position | number, metadata?: any) => Event.TrackedStart; static trackedEndOf: (start: Event.TrackedStart, position: Position) => Event.TrackedEnd; static describes: (item: any) => boolean; static isStart: (event: any) => boolean; static isTStart: (event: any) => boolean; static isEnd: (event: any) => boolean; static isTEnd: (event: any) => boolean; static isToken: (event: any) => boolean; static isTokenLike: (event: any) => boolean; static asToken: (event: DataToken | Event.Token) => Event.Token; static squish: (prev: any, next: any) => Event[]; static toScannable: (mixedForm: (string | Event | DataToken)[]) => Event[]; } export declare namespace Event { class Start extends Event { readonly metadata: any; constructor(name: string, position: Position, metadata?: any); } class TrackedStart extends Event { readonly metadata: any; readonly rangeID: string; constructor(name: string, position: Position, instanceID: string, metadata?: any); } class End extends Event { constructor(name: string, position: Position); } class TrackedEnd extends Event { readonly rangeID: string; constructor(name: string, position: Position, instanceID: string); } class Token extends Event { readonly data: string; constructor(position: Position | number, data: string); get token(): DataToken; } } export {}; //# sourceMappingURL=event.d.ts.map