| // Type definitions for TweetNaCl.js | 
|   | 
| export as namespace nacl; | 
|   | 
| declare var nacl: nacl; | 
| export = nacl; | 
|   | 
| declare namespace nacl { | 
|     export interface BoxKeyPair { | 
|         publicKey: Uint8Array; | 
|         secretKey: Uint8Array; | 
|     } | 
|   | 
|     export interface SignKeyPair { | 
|         publicKey: Uint8Array; | 
|         secretKey: Uint8Array; | 
|     } | 
|   | 
|     export interface secretbox { | 
|         (msg: Uint8Array, nonce: Uint8Array, key: Uint8Array): Uint8Array; | 
|         open(box: Uint8Array, nonce: Uint8Array, key: Uint8Array): Uint8Array | false; | 
|         readonly keyLength: number; | 
|         readonly nonceLength: number; | 
|         readonly overheadLength: number; | 
|     } | 
|   | 
|     export interface scalarMult { | 
|         (n: Uint8Array, p: Uint8Array): Uint8Array; | 
|         base(n: Uint8Array): Uint8Array; | 
|         readonly scalarLength: number; | 
|         readonly groupElementLength: number; | 
|     } | 
|   | 
|     namespace box { | 
|         export interface open { | 
|             (msg: Uint8Array, nonce: Uint8Array, publicKey: Uint8Array, secretKey: Uint8Array): Uint8Array | false; | 
|             after(box: Uint8Array, nonce: Uint8Array, key: Uint8Array): Uint8Array | false; | 
|         } | 
|   | 
|         export interface keyPair { | 
|             (): BoxKeyPair; | 
|             fromSecretKey(secretKey: Uint8Array): BoxKeyPair; | 
|         } | 
|     } | 
|   | 
|     export interface box { | 
|         (msg: Uint8Array, nonce: Uint8Array, publicKey: Uint8Array, secretKey: Uint8Array): Uint8Array; | 
|         before(publicKey: Uint8Array, secretKey: Uint8Array): Uint8Array; | 
|         after(msg: Uint8Array, nonce: Uint8Array, key: Uint8Array): Uint8Array; | 
|         open: box.open; | 
|         keyPair: box.keyPair; | 
|         readonly publicKeyLength: number; | 
|         readonly secretKeyLength: number; | 
|         readonly sharedKeyLength: number; | 
|         readonly nonceLength: number; | 
|         readonly overheadLength: number; | 
|     } | 
|   | 
|     namespace sign { | 
|         export interface detached { | 
|             (msg: Uint8Array, secretKey: Uint8Array): Uint8Array; | 
|             verify(msg: Uint8Array, sig: Uint8Array, publicKey: Uint8Array): boolean; | 
|         } | 
|   | 
|         export interface keyPair { | 
|             (): SignKeyPair; | 
|             fromSecretKey(secretKey: Uint8Array): SignKeyPair; | 
|             fromSeed(secretKey: Uint8Array): SignKeyPair; | 
|         } | 
|     } | 
|   | 
|     export interface sign { | 
|         (msg: Uint8Array, secretKey: Uint8Array): Uint8Array; | 
|         open(signedMsg: Uint8Array, publicKey: Uint8Array): Uint8Array | null; | 
|         detached: sign.detached; | 
|         keyPair: sign.keyPair; | 
|         readonly publicKeyLength: number; | 
|         readonly secretKeyLength: number; | 
|         readonly seedLength: number; | 
|         readonly signatureLength: number; | 
|     } | 
|   | 
|     export interface hash { | 
|         (msg: Uint8Array): Uint8Array; | 
|         readonly hashLength: number; | 
|     } | 
| } | 
|   | 
| declare interface nacl { | 
|     randomBytes(n: number): Uint8Array; | 
|     secretbox: nacl.secretbox; | 
|     scalarMult: nacl.scalarMult; | 
|     box: nacl.box; | 
|     sign: nacl.sign; | 
|     hash: nacl.hash; | 
|     verify(x: Uint8Array, y: Uint8Array): boolean; | 
|     setPRNG(fn: (x: Uint8Array, n: number) => void): void; | 
| } |