import { RPC } from './RPC';
type SmartRPCNode = RPC & {
    [prop: string | symbol]: SmartRPCNode;
} & (<T = any>(...args: any[]) => Promise<T>);
interface SmartRPC<T = RPC> extends RPC {
    new (...args: any[]): SmartRPC<T>;
    [prop: string]: SmartRPCNode | any;
}
type SmartifyOptions = {
    exclude: (string | symbol)[];
};
declare function SmartifyInstance<T>(target: T, options?: SmartifyOptions): SmartRPCNode;
declare function Smartify<T extends object>(target: T, options?: SmartifyOptions): SmartRPC<T>;
export type { SmartRPCNode };
export { SmartRPC, Smartify, SmartifyInstance };
