/** @luaIterator @tupleReturn */
export interface IGCOptimizedListEntriesIterable<T> extends Iterable<T> {
}
/** @luaIterator */
export interface IGCOptimizedListValuesIterable<T> extends Iterable<T> {
}
export declare class GCOptimizedList<T> {
    static readonly Empty: GCOptimizedList<any>;
    readonly size: number;
    protected items: Map<number, T>;
    protected indices: Map<T, number>;
    protected _size: number;
    constructor(...entries: T[]);
    forEach(callback: (value: T) => any): void;
    entries(): IGCOptimizedListEntriesIterable<[number, T]>;
    values(): IGCOptimizedListValuesIterable<T>;
    add(value: T): void;
    clear(): void;
    delete(index: number): boolean;
    deleteValue(value: T): boolean;
    indexOf(value: T): number | null;
    get(index: number): T | undefined;
    empty(): boolean;
    hasIndex(index: number): boolean;
    hasValue(value: T): boolean;
    shift(): T | undefined;
    pop(): T | undefined;
}
