/**
* First-in, first-out (FIFO) buffer (queue) with default item values.
*/
export default class Queue extends Array {
/**
* Add an item to the end of the queue.
*
* @param a Item to be enqueued
*/
enqueue(a: A): void;
/**
* Either handles and returns the first item in the queue (if the queue isn't empty) or
* makes and returns a default value.
*
* @param handle Callback for handling the first item in the queue
* @param init Callback for making the default value
*/
dequeueDefault(handle: (a: A) => B, init: () => B): B;
}