import { AnyNumber, Codec, IHash, Registry } from '../types';
import BN from 'bn.js';
export declare type UIntBitLength = 8 | 16 | 32 | 64 | 128 | 256;
export declare const DEFAULT_UINT_BITS = 64;
/**
 * @name AbstractInt
 * @ignore
 * @noInheritDoc
 */
export default abstract class AbstractInt extends BN implements Codec {
    readonly registry: Registry;
    protected _bitLength: UIntBitLength;
    private _isHexJson;
    private _isNegative;
    protected constructor(registry: Registry, isNegative: boolean, value?: AnyNumber, bitLength?: UIntBitLength, isHexJson?: boolean);
    /** @internal */
    static decodeAbstracInt(value: AnyNumber, bitLength: UIntBitLength, isNegative: boolean): string;
    /** @internal */
    private static decodeAbstracIntU8a;
    /**
     * @description The length of the value when encoded as a Uint8Array
     */
    get encodedLength(): number;
    /**
     * @description returns a hash of the contents
     */
    get hash(): IHash;
    /**
     * @description Checks if the value is a zero value (align elsewhere)
     */
    get isEmpty(): boolean;
    /**
     * @description Returns the number of bits in the value
     */
    bitLength(): UIntBitLength;
    /**
     * @description Compares the value of the input to see if there is a match
     */
    eq(other?: any): boolean;
    /**
     * @description True if this value is the max of the type
     */
    isMax(): boolean;
    /**
     * @description Returns the BN representation of the number. (Compatibility)
     */
    toBn(): BN;
    /**
     * @description Returns a hex string representation of the value
     */
    abstract toHex(): string;
    /**
     * @description Converts the Object to JSON, typically used for RPC transfers
     */
    toJSON(): any;
    /**
     * @description Returns the base runtime type name for this instance
     */
    abstract toRawType(): string;
    /**
     * @description Returns the string representation of the value
     * @param base The base to use for the conversion
     */
    toString(base?: number): string;
    /**
     * @description Encodes the value as a Uint8Array as per the SCALE specifications
     * @param isBare true when the value has none of the type-specific prefixes (internal)
     */
    abstract toU8a(isBare?: boolean): Uint8Array;
}
