Q:

How to apply a function type interface to a non-variable function?

The problem
TypeScript allows to create interfaces for functions:
interface SearchFunc {
    (source: string, subString: string): boolean;
}

and the docs also tell how to define a variable function that implements such an interface:
let mySearch: SearchFunc;

However, I'm trying to tell TS that a function defined as
export function Vuikit()

implements that interface. How do I go about that?
Some attempts and context
export function Vuikit: MyFuncInterface

gives an error;
export function Vuikit(): MyFuncInterface

is something that has no arguments and returns MyFuncInterface and doesn't implement MyFuncInterface.
Since I'm trying to write a .d.ts file for an existing package, I can't do
let Vuikit: PluginObject<any> | PluginFunction<any>; // gives  TS2300: Duplicate identifier 'Vuikit'.
export Vuikit;

To provide more detail (may be it's an XY problem): the patch I've used for v-localize doesn't work in this case: with this vuikit.d.ts
// a minimal implementation to suppress warnings, to be improved later
// as an example, see https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/vue-select
declare module 'vuikit' {
    export function Vuikit (): any;
}

when I write
Vue.use(Vuikit);

I get the following error:

TS2769: No overload matches this call.    Overload 1 of 2, '(plugin: PluginObject | PluginFunction, options?: unknown): VueConstructor', gave the following error.     Argument of type 'typeof import("vuikit")' is not assignable to parameter of type 'PluginObject | PluginFunction'.       Property 'install' is missing in type 'typeof import("vuikit")' but required in type 'PluginObject'.   Overload 2 of 2, '(plugin: PluginObject | PluginFunction, ...options: any[]): VueConstructor', gave the following error.     Argument of type 'typeof import("vuikit")' is not assignable to parameter of type 'PluginObject | PluginFunction'.       Property 'install' is missing in type 'typeof import("vuikit")' but required in type 'PluginObject'.

As the last resort, I can do
Vue.use(Vuikit as any);

but I'd like to avoid this and make this more consistent. The idea is to try to tell that Vuikit implements either PluginObject<any> or PluginFunction<any>.

A:

It doesn't matter functions in the source module are defined as export function() { ... }, because you are writing .d.ts - that's how your code would typecheck, not how it's implemented. So, if you have a callabe interface, just define your functions with const func: YourInterface.
And, given that Typescript complaints about typeof import(), you are missing export default in your ambient declaration.
So, the result would be something like
declare module "Vuikit" {
    ...
    const Vuikit: PluginObject<any>;
    export default Vuikit;
}

