import { AnyJson, Codec, IHash } from '../types';
/**
 * @name Base
 * @description A type extends the Base class, when it holds a value
 */
export default abstract class Base<T extends Codec> implements Codec {
    protected raw: T;
    constructor(value?: any);
    /**
     * @description The length of the value when encoded as a Uint8Array
     */
    readonly encodedLength: number;
    /**
     * @description returns a hash of the contents
     */
    readonly hash: IHash;
    /**
     * @description Checks if the value is an empty value
     */
    readonly isEmpty: boolean;
    /**
     * @description Compares the value of the input to see if there is a match
     */
    eq(other?: any): boolean;
    /**
     * @description Returns a hex string representation of the value. isLe returns a LE (number-only) representation
     */
    toHex(isLe?: boolean): string;
    /**
     * @description Converts the Object to JSON, typically used for RPC transfers
     */
    toJSON(): AnyJson;
    /**
     * @description Returns the string representation of the value
     */
    toString(): 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)
     */
    toU8a(isBare?: boolean): Uint8Array;
    /**
     * @description Returns the base runtime type name for this instance
     */
    toRawType(): string;
}
