--- /dev/null
+// 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;
+}