/**
 * Copyright 2014 Mozilla Foundation
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
export interface IDataInput {
    readBytes: (bytes: DataBuffer, offset?: number, length?: number) => void;
    readBoolean: () => boolean;
    readByte: () => number;
    readUnsignedByte: () => number;
    readShort: () => number;
    readUnsignedShort: () => number;
    readInt: () => number;
    readUnsignedInt: () => number;
    readFloat: () => number;
    readDouble: () => number;
    readMultiByte: (length: number, charSet: string) => string;
    readUTF: () => string;
    readUTFBytes: (length: number) => string;
    bytesAvailable: number;
    objectEncoding: number;
    endian: string;
}
export interface IDataOutput {
    writeBytes: (bytes: DataBuffer, offset?: number, length?: number) => void;
    writeBoolean: (value: boolean) => void;
    writeByte: (value: number) => void;
    writeShort: (value: number) => void;
    writeInt: (value: number) => void;
    writeUnsignedInt: (value: number) => void;
    writeFloat: (value: number) => void;
    writeDouble: (value: number) => void;
    writeMultiByte: (value: string, charSet: string) => void;
    writeUTF: (value: string) => void;
    writeUTFBytes: (value: string) => void;
    objectEncoding: number;
    endian: string;
}
export declare class PlainObjectDataBuffer {
    buffer: ArrayBuffer;
    length: number;
    littleEndian: boolean;
    constructor(buffer: ArrayBuffer, length: number, littleEndian: boolean);
}
export declare class DataBuffer implements IDataInput, IDataOutput {
    private static _nativeLittleEndian;
    private static INITIAL_SIZE;
    private _buffer;
    private _length;
    private _position;
    private _littleEndian;
    private _objectEncoding;
    private _u8;
    private _i32;
    private _f32;
    private _bitBuffer;
    private _bitLength;
    private static _arrayBufferPool;
    constructor(initialSize?: number);
    static FromArrayBuffer(buffer: ArrayBuffer, length?: number): DataBuffer;
    static FromPlainObject(source: PlainObjectDataBuffer): DataBuffer;
    toPlainObject(): PlainObjectDataBuffer;
    /**
     * Clone the DataBuffer in a way that guarantees the underlying ArrayBuffer to be copied
     * into an instance of the current global's ArrayBuffer.
     *
     * Important if the underlying buffer comes from a different global, in which case accessing
     * its elements is excruiciatingly slow.
     */
    clone(): DataBuffer;
    /**
     * By default, we only have a byte view. All other views are |null|.
     */
    private _resetViews;
    /**
     * We don't want to eagerly allocate views if we won't ever need them. You must call this method
     * before using a view of a certain type to make sure it's available. Once a view is allocated,
     * it is not re-allocated unless the view becomes |null| as a result of a call to |resetViews|.
     */
    private _requestViews;
    getBytes(): Uint8Array;
    private _ensureCapacity;
    clear(): void;
    readBoolean(): boolean;
    readByte(): number;
    readUnsignedByte(): number;
    readBytes(bytes: DataBuffer, offset?: number, length?: number): void;
    readShort(): number;
    readUnsignedShort(): number;
    readInt(): number;
    readUnsignedInt(): number;
    readFloat(): number;
    readDouble(): number;
    writeBoolean(value: boolean): void;
    writeByte(value: number): void;
    writeUnsignedByte(value: number): void;
    writeRawBytes(bytes: Uint8Array): void;
    writeBytes(bytes: DataBuffer, offset?: number, length?: number): void;
    writeShort(value: number): void;
    writeUnsignedShort(value: number): void;
    writeInt(value: number): void;
    write2Ints(a: number, b: number): void;
    write4Ints(a: number, b: number, c: number, d: number): void;
    writeUnsignedInt(value: number): void;
    write2UnsignedInts(a: number, b: number): void;
    write4UnsignedInts(a: number, b: number, c: number, d: number): void;
    writeFloat(value: number): void;
    write2Floats(a: number, b: number): void;
    write6Floats(a: number, b: number, c: number, d: number, e: number, f: number): void;
    writeDouble(value: number): void;
    readRawBytes(): Int8Array;
    writeUTF(value: string): void;
    writeUTFBytes(value: string): void;
    readUTF(): string;
    readUTFBytes(length: number): string;
    get length(): number;
    set length(value: number);
    get bytesAvailable(): number;
    get position(): number;
    get buffer(): ArrayBuffer;
    get bytes(): Uint8Array;
    get ints(): Int32Array;
    set position(position: number);
    get objectEncoding(): number;
    set objectEncoding(version: number);
    get endian(): string;
    set endian(type: string);
    toString(): string;
    toBlob(type: string): Blob;
    writeMultiByte(value: string, charSet: string): void;
    readMultiByte(length: number, charSet: string): string;
    getValue(name: number): any;
    setValue(name: number, value: any): void;
    readFixed(): number;
    readFixed8(): number;
    readFloat16(): number;
    readEncodedU32(): number;
    readBits(size: number): number;
    readUnsignedBits(size: number): number;
    readFixedBits(size: number): number;
    readString(length?: number): string;
    align(): void;
    deflate(): void;
    inflate(): void;
    compress(algorithm: string): void;
    uncompress(algorithm: string): void;
}
//# sourceMappingURL=DataBuffer.d.ts.map