/*! Copyright 2023-2024 the gnablib contributors MPL-1.1 */
import { IReadTyped } from './interfaces/IReadTyped.js';
import type { IReadArray } from './interfaces/IReadArray.js';
import type { IReadWriteArray } from './interfaces/IReadWriteArray.js';
import { IWriteTyped } from './interfaces/IWriteTyped.js';
import { IBufferer } from './interfaces/IBufferer.js';
import { IBuildable } from './interfaces/IBuildable.js';
declare const consoleDebugSymbol: unique symbol;
declare class SharedTyped<T extends IReadTyped<T>> {
    protected _view: T;
    [index: number]: number;
    constructor(_view: T);
    get byteLength(): number;
    get byteOffset(): number;
    get BYTES_PER_ELEMENT(): number;
    get length(): number;
    get capacity(): number;
    at(idx: number): number | undefined;
    clone(start?: number | undefined, end?: number | undefined): T;
    entries(): IterableIterator<[number, number]>;
    every(predicate: (value: number, index: number) => unknown, thisArg?: unknown): boolean;
    filter(predicate: (value: number, index: number) => unknown, thisArg?: unknown): T;
    find(predicate: (value: number, index: number) => boolean, thisArg?: unknown): number | undefined;
    findIndex(predicate: (value: number, index: number) => boolean, thisArg?: unknown): number;
    forEach(action: (value: number, index: number) => void, thisArg?: unknown): void;
    includes(searchElement: number, fromIndex?: number | undefined): boolean;
    indexOf(searchElement: number, fromIndex?: number | undefined): number;
    join(separator?: string): string;
    keys(): IterableIterator<number>;
    lastIndexOf(searchElement: number, fromIndex?: number): number;
    map(callBack: (value: number, index: number) => number, thisArg?: unknown): T;
    some(predicate: (value: number, index: number) => unknown, thisArg?: unknown): boolean;
    values(): IterableIterator<number>;
    toString(): string;
    toJSON(): unknown;
    [consoleDebugSymbol](): T;
    [Symbol.iterator](): IterableIterator<number>;
}
export declare class ReadonlyTyped<T extends IReadTyped<T>> extends SharedTyped<T> implements IReadArray<T> {
    private readonly base;
    constructor(base: IBuildable<T>, data: ArrayBufferLike | IBufferer, startEl?: number, lengthEls?: number);
    readonlySpan(start?: number | undefined, end?: number | undefined): IReadArray<T>;
    get [Symbol.toStringTag](): string;
}
export declare class FixedTyped<T extends IWriteTyped<T>> extends SharedTyped<T> implements IReadWriteArray<T> {
    private readonly base;
    constructor(base: IBuildable<T>, data: ArrayBufferLike | IBufferer, start?: number, length?: number);
    setEl(idx: number, value: number): void;
    fill(value: number, start?: number | undefined, length?: number | undefined): IReadWriteArray<T>;
    readonlySpan(start?: number | undefined, end?: number | undefined): IReadArray<T>;
    reverse(): IReadWriteArray<T>;
    set(array: ArrayLike<number>, offset?: number | undefined): void;
    sort(compareFn?: ((a: number, b: number) => number) | undefined): IReadWriteArray<T>;
    span(start?: number | undefined, length?: number | undefined): IReadWriteArray<T>;
    get [Symbol.toStringTag](): string;
}
export declare class ScalingTyped<T extends IWriteTyped<T>> extends SharedTyped<T> implements IReadWriteArray<T> {
    private readonly base;
    private _data;
    private _sizeLocked;
    constructor(base: IBuildable<T>, length: number | undefined, capacity: number | undefined);
    private _resize;
    private assertSpace;
    get capacity(): number;
    set capacity(elCount: number);
    fill(value: number, start?: number | undefined, length?: number | undefined): IReadWriteArray<T>;
    readonlySpan(start?: number | undefined, length?: number | undefined): IReadArray<T>;
    reverse(): IReadWriteArray<T>;
    set(array: ArrayLike<number>, offset?: number | undefined): void;
    setEl(idx: number, value: number): void;
    sort(compareFn?: ((a: number, b: number) => number) | undefined): IReadWriteArray<T>;
    span(start?: number | undefined, length?: number | undefined): IReadWriteArray<T>;
    get [Symbol.toStringTag](): string;
}
export declare class ReadonlyUint8Array extends ReadonlyTyped<Uint8Array> {
    constructor(data: ArrayBufferLike | IBufferer, startEl?: number | undefined, lengthEls?: number | undefined);
}
export declare class ReadonlyUint16Array extends ReadonlyTyped<Uint16Array> {
    constructor(data: ArrayBufferLike | IBufferer, start?: number | undefined, length?: number | undefined);
}
export declare class ReadonlyUint32Array extends ReadonlyTyped<Uint32Array> {
    constructor(data: ArrayBufferLike | IBufferer, start?: number | undefined, end?: number | undefined);
}
export declare class ReadonlyInt8Array extends ReadonlyTyped<Int8Array> {
    constructor(data: ArrayBufferLike | IBufferer, start?: number | undefined, end?: number | undefined);
}
export declare class ReadonlyInt16Array extends ReadonlyTyped<Int16Array> {
    constructor(data: ArrayBufferLike | IBufferer, start?: number | undefined, end?: number | undefined);
}
export declare class ReadonlyInt32Array extends ReadonlyTyped<Int32Array> {
    constructor(data: ArrayBufferLike | IBufferer, start?: number | undefined, end?: number | undefined);
}
export declare class ReadonlyFloat32Array extends ReadonlyTyped<Float32Array> {
    constructor(data: ArrayBufferLike | IBufferer, start?: number | undefined, end?: number | undefined);
}
export declare class ReadonlyFloat64Array extends ReadonlyTyped<Float64Array> {
    constructor(data: ArrayBufferLike | IBufferer, start?: number | undefined, end?: number | undefined);
}
export declare class ReadonlyUint8ClampedArray extends ReadonlyTyped<Uint8ClampedArray> {
    constructor(data: ArrayBufferLike | IBufferer, start?: number | undefined, end?: number | undefined);
}
export declare class FixedUint8Array extends FixedTyped<Uint8Array> {
    constructor(data: ArrayBufferLike | IBufferer, start?: number | undefined, length?: number | undefined);
}
export declare class FixedUint16Array extends FixedTyped<Uint16Array> {
    constructor(data: ArrayBufferLike | IBufferer, start?: number | undefined, length?: number | undefined);
}
export declare class FixedUint32Array extends FixedTyped<Uint32Array> {
    constructor(data: ArrayBufferLike | IBufferer, start?: number | undefined, end?: number | undefined);
}
export declare class FixedInt8Array extends FixedTyped<Int8Array> {
    constructor(data: ArrayBufferLike | IBufferer, start?: number | undefined, end?: number | undefined);
}
export declare class FixedInt16Array extends FixedTyped<Int16Array> {
    constructor(data: ArrayBufferLike | IBufferer, start?: number | undefined, end?: number | undefined);
}
export declare class FixedInt32Array extends FixedTyped<Int32Array> {
    constructor(data: ArrayBufferLike | IBufferer, start?: number | undefined, end?: number | undefined);
}
export declare class FixedFloat32Array extends FixedTyped<Float32Array> {
    constructor(data: ArrayBufferLike | IBufferer, start?: number | undefined, end?: number | undefined);
}
export declare class FixedFloat64Array extends FixedTyped<Float64Array> {
    constructor(data: ArrayBufferLike | IBufferer, start?: number | undefined, end?: number | undefined);
}
export declare class FixedUint8ClampedArray extends FixedTyped<Uint8ClampedArray> {
    constructor(data: ArrayBuffer | Uint8ClampedArray, start?: number | undefined, end?: number | undefined);
}
export declare class ScalingUint8Array extends ScalingTyped<Uint8Array> {
    constructor(length?: number, capacity?: number);
}
export declare class ScalingUint16Array extends ScalingTyped<Uint16Array> {
    constructor(length?: number, capacity?: number);
}
export declare class ScalingUint32Array extends ScalingTyped<Uint32Array> {
    constructor(length?: number, capacity?: number);
}
export declare class ScalingInt8Array extends ScalingTyped<Int8Array> {
    constructor(length?: number, capacity?: number);
}
export declare class ScalingInt16Array extends ScalingTyped<Int16Array> {
    constructor(length?: number, capacity?: number);
}
export declare class ScalingInt32Array extends ScalingTyped<Int32Array> {
    constructor(length?: number, capacity?: number);
}
export declare class ScalingFloat32Array extends ScalingTyped<Float32Array> {
    constructor(length?: number, capacity?: number);
}
export declare class ScalingFloat64Array extends ScalingTyped<Float64Array> {
    constructor(length?: number, capacity?: number);
}
export declare class ScalingUint8ClampedArray extends ScalingTyped<Uint8ClampedArray> {
    constructor(length?: number, capacity?: number);
}
export {};
