From c5042735b3817fb7c214075eb9fa9a6a3f18f885 Mon Sep 17 00:00:00 2001
From: Jaco Greeff <jacogr@gmail.com>
Date: Thu, 21 Jun 2018 13:40:56 +0200
Subject: [PATCH] Add PeerInfo

---
 peer-id/index.d.ts           |  2 +-
 peer-info/index.d.ts         | 48 ++++++++++++++++++++++++++++++++++++
 peer-info/peer-info-tests.ts |  0
 peer-info/tsconfig.json      | 16 ++++++++++++
 peer-info/tslint.json        |  1 +
 5 files changed, 66 insertions(+), 1 deletion(-)
 create mode 100644 peer-info/index.d.ts
 create mode 100644 peer-info/peer-info-tests.ts
 create mode 100644 peer-info/tsconfig.json
 create mode 100644 peer-info/tslint.json

diff --git a/peer-id/index.d.ts b/peer-id/index.d.ts
index 60ab1ef..4e26402 100644
--- a/peer-id/index.d.ts
+++ b/peer-id/index.d.ts
@@ -35,4 +35,4 @@ declare class PeerId {
     toJSON (): JSON;
 }
 
-export = PeerId;
+export default PeerId;
diff --git a/peer-info/index.d.ts b/peer-info/index.d.ts
new file mode 100644
index 0000000..56e3ab4
--- /dev/null
+++ b/peer-info/index.d.ts
@@ -0,0 +1,48 @@
+// Type definitions for peer-id 0.10.7
+// Project: https://github.com/libp2p/js-peer-id
+// Definitions by: Jaco Greeff <https://github.com/jacogr>
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+/// <reference types="node"/>
+
+import MultiAddr from 'multiaddr';
+import PeerId from 'peer-id';
+
+type CreateCb = (error: Error | null, peerId?: PeerId) => any;
+
+type CreateOptions = {
+    bits: number
+};
+
+type JSON = {
+    id: string,
+    pubKey: string,
+    privKey: string
+};
+
+type MultiAddrSet = {
+    size: number;
+
+    add (addr: MultiAddr): void;
+    addSafe (add: MultiAddr): void;
+    delete (addr: MultiAddr): void;
+    forEach (cb: (addr: MultiAddr, index: number) => any): void;
+    has (addr: MultiAddr): boolean;
+    replace (addr: MultiAddr, other: MultiAddr): void;
+    toArray (): MultiAddr[];
+};
+
+declare class PeerInfo {
+    constructor (id?: PeerId);
+
+    static create (optsOrCb: CreateOptions | CreateCb, cb?: CreateCb): PeerInfo;
+    static isPeerInfo (info: any): info is PeerInfo;
+
+    multiaddrs: MultiAddrSet;
+
+    connect (addr: MultiAddr): void;
+    disconnect (): void;
+    isConnected (): boolean;
+}
+
+export default PeerInfo;
diff --git a/peer-info/peer-info-tests.ts b/peer-info/peer-info-tests.ts
new file mode 100644
index 0000000..e69de29
diff --git a/peer-info/tsconfig.json b/peer-info/tsconfig.json
new file mode 100644
index 0000000..932e246
--- /dev/null
+++ b/peer-info/tsconfig.json
@@ -0,0 +1,16 @@
+{
+    "compilerOptions": {
+        "module": "commonjs",
+        "lib": ["es6"],
+        "noImplicitAny": true,
+        "noImplicitThis": true,
+        "strictFunctionTypes": true,
+        "strictNullChecks": true,
+        "baseUrl": "../",
+        "typeRoots": ["../"],
+        "types": [],
+        "noEmit": true,
+        "forceConsistentCasingInFileNames": true
+    },
+    "files": ["index.d.ts", "bn.js-tests.ts"]
+}
diff --git a/peer-info/tslint.json b/peer-info/tslint.json
new file mode 100644
index 0000000..3db14f8
--- /dev/null
+++ b/peer-info/tslint.json
@@ -0,0 +1 @@
+{ "extends": "dtslint/dt.json" }