Consider the following:

I have an `AbstractTaskProcessor` that looks like the following:

```js
export abstract class AbstractTaskProcessor<T> {

     abstract process(args: T): Promise<void>

}

```

example implementation

```js
interface AccountScoringJobInput {
  accountName: string,
  accountId: string
}

class ScoringTaskProcessor extends AbstractTaskProcessor<AccountScoringJobInput> {
   process(args: AccountScoringJobInput) { // do some work}
}

```

now i want to make a generic processTask function that i would like to call like so:

```js
processTask(ScoringTaskProcessor, {accountName: 'lala', accountId: '123'})

```

what is the typings to do that such that the first argument is an implementation of the `AbstractTaskProcessor`, and the second argument is the args defined by its definition?