/// <reference types="node" />
/** Class extending Uint8Array to provide a partial implementation of NodeJS Buffer as a cross-platform shim. */
export declare class BufferShim extends Uint8Array {
    /**
     * @param {string|Buffer|BufferShim|ArrayBuffer|SharedArrayBuffer} input
     * @param {BufferEncoding} [encoding='utf8']
     */
    constructor(input: string | Buffer | BufferShim | ArrayBuffer | SharedArrayBuffer, encoding?: BufferEncoding);
    private static atob;
    private static btoa;
    private static fromUTF8ArrayOrASCIIArray;
    private static toUTF8Array;
    private static toUTF16Array;
    private static fromUTF16Array;
    private static toASCIIArrayOrBinaryArray;
    private static fromBinaryArray;
    private static toHexArray;
    private static fromHexArray;
    /** Copy a Buffer or BufferShim to an ArrayBuffer.
     * @param {Buffer|BufferShim} buffer
     * @returns {ArrayBuffer}
     */
    static toArrayBuffer(buffer: Buffer | BufferShim): ArrayBuffer;
    /** Copy an ArrayBuffer to a Buffer if possible or a BufferShim.
     * @param {ArrayBuffer} buffer
     * @returns {Buffer}
     */
    static toNodeBuffer(buffer: ArrayBuffer): BufferShim | Buffer;
    /** Fills this instance with a value.
     * @param {number|string|Buffer|BufferShim|Uint8Array} value
     * @param {number|BufferEncoding} [offset]
     * @param {number|BufferEncoding} [end]
     * @param {BufferEncoding} [encoding]
     * @returns {BufferShim}
     */
    fill(value: number | string | Buffer | BufferShim | Uint8Array): this;
    fill(value: number | string | Buffer | BufferShim | Uint8Array, encoding: BufferEncoding): this;
    fill(value: number | string | Buffer | BufferShim | Uint8Array, offset: number, end?: number): this;
    fill(value: number | string | Buffer | BufferShim | Uint8Array, offset: number, encoding?: BufferEncoding): this;
    fill(value: number | string | Buffer | BufferShim | Uint8Array, offset?: number, end?: number, encoding?: BufferEncoding): this;
    /** Returns this instance as a Uint8Array.
     * @returns {Uint8Array}
     */
    toUint8Array(): Uint8Array;
    /** Returns this instance as a NodeJS Buffer if possible.
     * @returns {Buffer}
     */
    toBuffer(): BufferShim | Buffer;
    /** Returns this instance as a string.
     * @param {BufferEncoding} [encoding='utf8']
     * @returns {string}
     */
    toString(encoding?: BufferEncoding): string;
    /** Tests if the current environment is using NodeJS Buffer implementation. */
    static get isNodeEnv(): boolean;
    /** Returns true if {buffer} is a Buffer
     * @param {any} buffer
     * @returns {boolean}
     */
    static isBuffer(buffer: any): boolean;
    /** Returns true if {buffer} is a BufferShim
     * @param {any} buffer
     * @returns {boolean}
     */
    static isBufferShim(buffer: any): boolean;
    /** Allocates a new buffer of {size} octets.
     * @param {number} size
     * @returns {BufferShim}
     */
    static alloc(size: number, fill?: number | string | Buffer | BufferShim | Uint8Array, encoding?: BufferEncoding): BufferShim;
    /** Allocates a new uninitialized buffer of {size} octets.
     * @param {number} size
     * @returns {BufferShim}
     */
    static allocUnsafe(size: number): BufferShim;
    /** Creates a new BufferShim from the given value.
     * @param {string|Buffer|BufferShim|ArrayBuffer|SharedArrayBuffer|Uint8Array|number[]} input
     * @param {BufferEncoding} [encoding='utf8']
     * @returns {BufferShim}
     */
    static from(arrayBuffer: ArrayBuffer | SharedArrayBuffer): BufferShim;
    static from(data: number[]): BufferShim;
    static from(data: Uint8Array): BufferShim;
    static from(obj: {
        valueOf(): string | object;
    } | {
        [Symbol.toPrimitive](hint: 'string'): string;
    }): BufferShim;
    static from(str: string, encoding?: BufferEncoding): BufferShim;
    /** Fills a given buffer with a value.
     * @param {BufferShim} buffer
     * @param {number|string|Buffer|BufferShim|Uint8Array} value
     * @param {number|BufferEncoding} [offset]
     * @param {number|BufferEncoding} [end]
     * @param {BufferEncoding} [encoding]
     * @returns {BufferShim}
     */
    static fill(buffer: BufferShim, value: number | string | Buffer | BufferShim | Uint8Array): BufferShim;
    static fill(buffer: BufferShim, value: number | string | Buffer | BufferShim | Uint8Array, encoding: BufferEncoding): BufferShim;
    static fill(buffer: BufferShim, value: number | string | Buffer | BufferShim | Uint8Array, offset: number, end?: number): BufferShim;
    static fill(buffer: BufferShim, value: number | string | Buffer | BufferShim | Uint8Array, offset: number, encoding?: BufferEncoding): BufferShim;
    static fill(buffer: BufferShim, value: number | string | Buffer | BufferShim | Uint8Array, offset?: number, end?: number, encoding?: BufferEncoding): BufferShim;
}
/** Global function for ignoring NodeJS env in class BufferShim.
 * @param {boolean} [ignore] - Sets the global value; if no boolean is passed, it will return the current setting.
 * @returns {boolean}
 */
export declare function ignoreNode(ignore?: boolean): boolean;
