import { Session, UuidPoolEventMap, UuidPoolModel, Widget } from '../index';
export declare class UuidPool extends Widget implements UuidPoolModel {
    model: UuidPoolModel;
    eventMap: UuidPoolEventMap;
    static readonly ZERO_UUID: string;
    uuids: string[];
    size: number;
    refillThreshold: number;
    failOnStarvation: boolean;
    refillInProgress: boolean;
    constructor();
    take(): string;
    refill(): void;
    fill(count: number): void;
    generateUuid(): string;
    /**
     * Creates a new UuidPool widget, i.e. without model adapter attached.
     * @param parent mandatory parent widget
     */
    protected static _createInstance(parent: Widget): UuidPool;
    /**
     * Installs a new UuidPool instanceof as an add-on to any desktop of this Scout app. It can then be
     * accessed conveniently by all other widgets by using the helper function <code>UuidPool.get()</code>.
     * <p>
     * Note: In the case of a RemoteApp, the add-on is provided by the UI server (see UuidPoolAddOnDesktopExtension.java).
     */
    static installDesktopAddOn(): void;
    /**
     * Returns an instanceof of UuidPool. If a desktop add-on of this type is available, this instance is returned.
     * Otherwise, a new instance is created.
     *
     * @param session Session object providing a desktop. If this is omitted, the first session of the app is used.
     * If the app does not have any active sessions (e.g. during unit testing), this argument is mandatory.
     */
    static get(session?: Session): UuidPool;
    /**
     * Convenience function for <code>UuidPool.get(session).take()</code>.
     *
     * @returns new UUID
     */
    static take(session?: Session): string;
}
//# sourceMappingURL=UuidPool.d.ts.map