type FunctionDefinition = [string, string[]]; interface FunctionDefinitions { [key: string]: FunctionDefinition; } type FFICallback = (error: any, value: T) => void; export interface ForeignFunction { (...args: TArgs): TReturn; async(...args: [...TArgs, FFICallback]): void; } export interface Library { /** * @param path Path to the dynamic library * @param functions Object containing function definitions */ new (path: string, functions: FunctionDefinitions): T; /** * @param path Path to the dynamic library * @param functions Object containing function definitions */ (path: string, functions: FunctionDefinitions): T; } export declare const Library: Library; export {};