interface RawAction { (...args: any[]): Promise | void; } interface ActionFactory { (target: T): T; } declare function foo(): ActionFactory; export default foo()(function foobar(param: string): void { });