import { MessagePasserTarget } from "./types";
declare type ForcePromise<R> = R extends Promise<any> ? R : Promise<R>;
declare type PromisifiedMethod<T extends Function> = T extends (...args: infer U) => infer R ? (...args: U) => ForcePromise<R> : never;
declare type PromisifiedObject<T extends object> = {
    [key in keyof T]: T[key] extends Function ? PromisifiedMethod<T[key]> : () => ForcePromise<T[key]>;
};
export declare const createAsyncGetProxy: <T extends object>(onGet: (propertyKey: string, args: any[]) => any) => PromisifiedObject<T>;
export declare const sendMessagePasserMessage: <T>(target: MessagePasserTarget, propertyKey: string, params: any[]) => Promise<T>;
export declare const createMessagePasserClient: <T extends object>(target: MessagePasserTarget) => PromisifiedObject<T>;
export {};
