import { rpc } from './rpc' import { Middleware } from './middleware' import type * as T from '../types' export class Client { public register( eventName: EventName, callback: T.RageFW_ClientCallback, options?: { middlewares?: T.RageFW_MiddlewareOptions }, ): Client { rpc.register< Parameters, ReturnType | Promise, EventName >(eventName, async (...data) => { if (!options?.middlewares) return await callback(...data) await Middleware.process(options.middlewares, callback, data) }) return this } public unregister( eventName: EventName, ): Client { rpc.unregister(eventName) return this } } // new Client() // .register('customClientEvent', async (a, b) => true) // .unregister('customClientEvent')