interface PlataProcess extends Cluster.PlataEvents {} declare namespace Cluster { type GetActionsObject> = { [K in keyof T]: { action: K, msg: T[K] } } type GetActions> = GetActionsObject[keyof T] type GetEmitFuncionsArgs> = { [K in keyof T]: [event: K, response: T[K]] }[keyof T] type GetOnFuncionsArgs> = { [K in keyof T]: [event: K, listener: (r: T[K]) => void | Promise] }[keyof T] interface PlataEvents { emit(...args: GetEmitFuncionsArgs | Cluster.UserActions) on(...args: GetOnFuncionsArgs | GetOnFuncionsArgs) once(...args: GetOnFuncionsArgs | GetOnFuncionsArgs) } type Actions = GetActions | GetActions type UserActions = GetActions }