// 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 | null; 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 boxProps { export interface open { (msg: Uint8Array, nonce: Uint8Array, publicKey: Uint8Array, secretKey: Uint8Array): Uint8Array | null; after(box: Uint8Array, nonce: Uint8Array, key: Uint8Array): Uint8Array | null; } 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: boxProps.open; keyPair: boxProps.keyPair; readonly publicKeyLength: number; readonly secretKeyLength: number; readonly sharedKeyLength: number; readonly nonceLength: number; readonly overheadLength: number; } namespace signProps { 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: signProps.detached; keyPair: signProps.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; }