| declare var hash: Hash; | 
|   | 
| declare module "hash.js" { | 
|     export = hash; | 
| } | 
|   | 
| interface BlockHash<T> { | 
|     hmacStrength: number | 
|     padLength: number | 
|     endian: 'big' | 'little' | 
| } | 
|   | 
| interface MessageDigest<T> { | 
|     blockSize: number | 
|     outSize: number | 
|     update(msg: any, enc?: 'hex'): T | 
|     digest(): number[] | 
|     digest(enc: 'hex'): string | 
| } | 
|   | 
| interface Hash { | 
|     hmac: HmacConstructor | 
|     ripemd: RipemdSet | 
|     ripemd160: Ripemd160Constructor | 
|     sha: ShaSet | 
|     sha1: Sha1Constructor | 
|     sha224: Sha224Constructor | 
|     sha256: Sha256Constructor | 
|     sha384: Sha384Constructor | 
|     sha512: Sha512Constructor | 
|     utils: Utils | 
| } | 
|   | 
| interface Utils { | 
|     toArray(msg: any, enc: 'hex'): Array<number> | 
|     toHex(msg: any): string | 
| } | 
|   | 
| interface RipemdSet { | 
|     ripemd160: Ripemd160Constructor | 
| } | 
|   | 
| interface ShaSet { | 
|     sha1: Sha1Constructor | 
|     sha224: Sha224Constructor | 
|     sha256: Sha256Constructor | 
|     sha384: Sha384Constructor | 
|     sha512: Sha512Constructor | 
| } | 
|   | 
| interface HmacConstructor { (hash: BlockHash<any>, key: any, enc?: 'hex'): Hmac } | 
| interface Ripemd160Constructor { (): Ripemd160 } | 
| interface Sha1Constructor { (): Sha1; } | 
| interface Sha224Constructor { (): Sha224; } | 
| interface Sha256Constructor { (): Sha256; } | 
| interface Sha384Constructor { (): Sha384; } | 
| interface Sha512Constructor { (): Sha512; } | 
|   | 
| interface Hmac extends MessageDigest<Hmac> { | 
|     blockSize: 512 | 
|     outSize: 160 | 
| } | 
|   | 
| interface Ripemd160 extends BlockHash<Ripemd160>, MessageDigest<Ripemd160> { | 
|     blockSize: 512 | 
|     hmacStrength: 192 | 
|     outSize: 160 | 
|     padLength: 64 | 
|     endian: 'little' | 
| } | 
|   | 
| interface Sha1 extends BlockHash<Sha1>, MessageDigest<Sha1> { | 
|     blockSize: 512 | 
|     hmacStrength: 80 | 
|     outSize: 160 | 
|     padLength: 64 | 
|     endian: 'big' | 
| } | 
| interface Sha224 extends BlockHash<Sha224>, MessageDigest<Sha224> { | 
|     blockSize: 512 | 
|     hmacStrength: 192 | 
|     outSize: 224 | 
|     padLength: 64 | 
|     endian: 'big' | 
| } | 
| interface Sha256 extends BlockHash<Sha256>, MessageDigest<Sha256> { | 
|     blockSize: 512 | 
|     hmacStrength: 192 | 
|     outSize: 256 | 
|     padLength: 64 | 
|     endian: 'big' | 
| } | 
| interface Sha384 extends BlockHash<Sha384>, MessageDigest<Sha384> { | 
|     blockSize: 1024 | 
|     hmacStrength: 192 | 
|     outSize: 384 | 
|     padLength: 128 | 
|     endian: 'big' | 
| } | 
| interface Sha512 extends BlockHash<Sha512>, MessageDigest<Sha512> { | 
|     blockSize: 1024 | 
|     hmacStrength: 192 | 
|     outSize: 512 | 
|     padLength: 128 | 
|     endian: 'big' | 
| } |