/**
 * Fixed-sized container structure, where ends are connected into a circle/ring
 * This is a FIFO structure (first in, first out)
 * @see https://en.wikipedia.org/wiki/Circular_buffer
 * @template V
 */
export class RingBuffer<V> {
    /**
     * @param {number} size
     */
    constructor(size: number);
    /**
     * Capacity of the buffer, number of slots
     * @type {number}
     */
    size: number;
    /**
     *
     * @type {number}
     */
    head: number;
    /**
     *
     * @type {number}
     */
    tail: number;
    /**
     * Number of used slots. Starts at 0, goes up to {@link #size}
     * @type {number}
     */
    count: number;
    /**
     *
     * @type {V[]}
     */
    data: V[];
    /**
     *
     * @param {number} new_size
     */
    resize(new_size: number): void;
    /**
     *
     * @return {V}
     */
    getHead(): V;
    /**
     *
     * @param {number} offset
     * @returns {V}
     */
    getFromHead(offset: number): V;
    clear(): void;
    /**
     *
     * @param {V} element
     */
    push(element: V): void;
    /**
     * Remove element from the tail
     * @returns {V|undefined}
     */
    shift(): V | undefined;
    /**
     *
     * @param {number} index
     */
    removeElementByIndex(index: number): void;
    /**
     * Removed first element that fulfills the criteria
     * @param {function(V):boolean} condition
     * @param {*} [thisArg]
     * @returns {V|undefined}
     */
    removeIf(condition: (arg0: V) => boolean, thisArg?: any): V | undefined;
    /**
     *
     * @param {function(V)} visitor
     * @param {*} [thisArg]
     */
    forEach(visitor: (arg0: V) => any, thisArg?: any): void;
    /**
     *
     * @param {V} value
     * @returns {boolean}
     */
    contains(value: V): boolean;
}
//# sourceMappingURL=RingBuffer.d.ts.map