/** @internal NOTE: Internal APIs. Subject to change. Use of these APIs in production applications is not supported. */ /** */
import { Observable } from '@babylonjs/core/Misc/observable';
type TypedArrayLike<K> = ArrayLike<K> & {
    buffer: ArrayBufferLike;
    BYTES_PER_ELEMENT: number;
    set(array: ArrayLike<K>, offset?: number): void;
};
/**
 * A growable typed array.
 */
export declare class LazyResizableTypedArray<K, T extends TypedArrayLike<K>> {
    private readonly _factory;
    private _uint8;
    /**
     * Direct access to the Typed array. Reference may change if {@link setMinLength} is called.
     * Therefore avoid storing a refernce to this buffer in other places.
     */
    buffer: T;
    /** Triggered after (and if) buffer has been resized when {@link setMinLength} was called. */
    onResized: Observable<LazyResizableTypedArray<K, T>>;
    /** Constructor
     * @param _factory Array creation factory. Allows us to create any kind of resizable typed array.
     */
    constructor(_factory: (length: number) => T);
    /**
     * Uint8Array view of {@link buffer}.
     * @returns Uint8Array wrapping {@link buffer}.
     */
    get uint8(): Uint8Array;
    /** `true` if {@link buffer} is empty. */
    get isEmpty(): boolean;
    /**
     * Sets minimum length of array. Array is only resized if `minLength` is larger than
     * current array size.
     * @param minLength New minimal size of array.
     * @returns `true` if array was resized.
     */
    setMinLength(minLength: number): boolean;
    /** Empties array. ({@link buffer} is set to zero sized array.) */
    reset(): void;
}
export {};
//# sourceMappingURL=LazyResizableTypedArray.d.ts.map