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