I'm using firebase@5.5.8 and typescript@3.1.4

whenever I create a document from firestore i get an object of type `firebase.firestore.DocumentReference` as expected

If I call the `get(options?: firebase.firestore.GetOptions|undefined)` I'll get a object of type `firebase.firestore.DocumentSnapshot` as expected

If i call `data(options?: firebase.firestore.DataOptions|undefined)` I'll get either a firebase.firestore.DocumentData object or undefined, as expected

Now, on my manager object, I know what I'm writing to the databse, so I can make the assertion that whatever DocumentData you get out of my manager, you'll get a Client as shown

```
export interface Client {
    name: string;
    website?: string;
    description?: string;
    visible: boolean;
}

```

I want to create an interface for my manager object that expresses that. So I've tried:

```
export interface FirebaseDocumentSnapshot<T> extends $firebase.firestore.DocumentSnapshot {
    data(options?: $firebase.firestore.SnapshotOptions | undefined): T|undefined
}

export interface FirebaseDocumentReference<T> extends $firebase.firestore.DocumentReference {
    get(options?: $firebase.firestore.GetOptions | undefined): Promise<FirebaseDocumentSnapshot<T>>
}

```

The problem i've got is here:

```
const client: Client = mapClient(args);

const result: FirebaseDocumentReference<Client> = await $db.add(client);

```

the error is:

[ts]

```
Type 'DocumentReference' is not assignable to type 'FirebaseDocumentReference<Client>'.
  Types of property 'get' are incompatible.
    Type '(options?: GetOptions | undefined) => Promise<DocumentSnapshot>' is not assignable to type '(options?: GetOptions | undefined) => Promise<FirebaseDocumentSnapshot<Client>>'.
      Type 'Promise<DocumentSnapshot>' is not assignable to type 'Promise<FirebaseDocumentSnapshot<Client>>'.
        Type 'DocumentSnapshot' is not assignable to type 'FirebaseDocumentSnapshot<Client>'.
          Types of property 'data' are incompatible.
            Type '(options?: SnapshotOptions | undefined) => DocumentData | undefined' is not assignable to type '(options?: SnapshotOptions | undefined) => Client | undefined'.
              Type 'DocumentData | undefined' is not assignable to type 'Client | undefined'.
                Type 'DocumentData' is not assignable to type 'Client'.
                  Property 'name' is missing in type 'DocumentData'. [2322]
const result: FirebaseDocumentReference<Client>

```

How can i declare the interfaces so I can know the type of the resulting object?