Convert js files in `model/` to Typescript

Convert `JamiDaemon.js` to Typescript
Add `model/util.ts` containing some utility types.

Gitlab: #30
Change-Id: Ia5d120330011e89a0be28732965ae9814ab68d19
diff --git a/model/Contact.ts b/model/Contact.ts
new file mode 100644
index 0000000..01d4a02
--- /dev/null
+++ b/model/Contact.ts
@@ -0,0 +1,48 @@
+class Contact {
+  private readonly uri: string;
+  private displayName: string | undefined = undefined;
+  private registeredName: string | undefined = undefined;
+
+  constructor(uri: string) {
+    this.uri = uri;
+  }
+
+  static from(object: Contact) {
+    const contact = new Contact(object.uri);
+    if (object.registeredName) contact.setRegisteredName(object.registeredName);
+    return contact;
+  }
+
+  getUri() {
+    return this.uri;
+  }
+
+  getRegisteredName() {
+    return this.registeredName;
+  }
+
+  setRegisteredName(name: string | undefined) {
+    this.registeredName = name;
+  }
+
+  isRegisteredNameResolved() {
+    return this.registeredName !== undefined;
+  }
+
+  getDisplayName() {
+    return this.getDisplayNameNoFallback() || this.getUri();
+  }
+
+  getDisplayNameNoFallback() {
+    return this.displayName || this.getRegisteredName();
+  }
+
+  async getObject() {
+    return {
+      uri: this.uri,
+      registeredName: await this.registeredName,
+    };
+  }
+}
+
+export default Contact;