import { ZodSchema } from "zod"; export declare const JSONRPC_CLASS_METADATA = "rpc::class::metadata"; export declare const JSONRPC_METHOD_METADATA = "rpc::method::metadata"; export declare const JSONRPC_METHOD_OPENRPC_SCHEMAS = "rpc::method::openrpc::schemas"; export interface OpenRPCMethodMetadata { name?: string; params: ZodSchema; result?: ZodSchema; } export interface RpcMetadata { /** * The service namespace. RPC methods will be exposed in the format "namespacename.methodname" */ namespace: string; delimiter?: string; } export interface RpcMethodMetadata { /** * The external name of the RPC method. It will be combined with the namespace of the class in * the format `namespace.name`. If not specified, it will default to the method name. */ name?: string; } /** * Declares the controller to be a new JSON RPC service exposed at the specified namespace * * @params metadata - The service metadata. */ export declare function RpcService(metadata: RpcMetadata): (constructor: Function) => void; /** * Declares a new method to be exposed by the service. Note that the service must also be decorated * with the JSONRpcService decorator * * @param metadata - Specifies method options (e.g. the external name) */ export declare const RpcMethod: (metadata?: RpcMethodMetadata) => (target: any, propertyName: string, descriptor: PropertyDescriptor) => void; export declare const OpenRPCMethod: (metadata?: OpenRPCMethodMetadata) => (target: any, propertyName: string, descriptor: PropertyDescriptor) => void; export type ZodToOpenRPC = { params: ZodSchema; result?: ZodSchema; name?: string; }; export declare function ZodToOpenRPC(metadata: ZodToOpenRPC): (target: object | TFunction, propertyKey?: string | symbol | undefined, descriptor?: TypedPropertyDescriptor | undefined) => void;