/*! * Copyright 2016 The ANTLR Project. All rights reserved. * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information. */ export interface Equatable { equals(other: any): boolean; hashCode(): number; } export interface Comparable { compareTo(o: T): number; } export interface JavaIterator { hasNext(): boolean; next(): E; remove(): void; } export interface JavaIterable { iterator(): JavaIterator; } export interface JavaCollection extends JavaIterable { add(e: E): boolean; addAll(collection: Collection): boolean; clear(): void; contains(o: any): boolean; containsAll(collection: Collection): boolean; equals(o: any): boolean; hashCode(): number; readonly isEmpty: boolean; iterator(): JavaIterator; remove(o: any): boolean; removeAll(collection: Collection): boolean; retainAll(collection: Collection): boolean; readonly size: number; toArray(): any[]; toArray(a: E[]): E[]; } export interface JavaSet extends JavaCollection { } export interface JavaMap extends Equatable { clear(): void; containsKey(key: K): boolean; containsValue(value: V): boolean; entrySet(): JavaSet>; get(key: K): V | undefined; readonly isEmpty: boolean; keySet(): JavaSet; put(key: K, value: V): V | undefined; putAll(m: JavaMap): void; remove(key: K): V | undefined; readonly size: number; values(): JavaCollection; } export declare namespace JavaMap { interface Entry extends Equatable { getKey(): K; getValue(): V; setValue(value: V): V; } } /** * Collection is a hybrid type can accept either JavaCollection or JavaScript Iterable */ export declare type Collection = JavaCollection | Iterable; /** * This adapter function allows Collection arguments to be used in JavaScript for...of loops */ export declare function asIterable(collection: Collection): Iterable;