/**
 * @template T
 * @class
 */
export class Stack<T> {
    /**
     * @private
     * @type {T[]}
     */
    private data;
    /**
     * @readonly
     */
    readonly on: {
        removed: Signal<any, any, any, any, any, any, any, any>;
        added: Signal<any, any, any, any, any, any, any, any>;
    };
    /**
     * @returns {T[]}
     */
    asArray(): T[];
    /**
     *
     * @returns {boolean}
     */
    isEmpty(): boolean;
    /**
     * Performs out-of-order removal
     * @param {T} value
     * @returns {boolean}
     */
    remove(value: T): boolean;
    /**
     * Insert element at the top
     * @param {T} value
     */
    push(value: T): void;
    /**
     * Remove top element and return it
     * @returns {T|undefined}
     */
    pop(): T | undefined;
    /**
     * Return top element without removing it
     * @returns {T|undefined}
     */
    peek(): T | undefined;
    /**
     * Remove all elements from the stack
     */
    clear(): void;
}
import Signal from "../events/signal/Signal.js";
//# sourceMappingURL=Stack.d.ts.map