import { MuiBaseEvent } from '../muiEvent'; import { GridEventLookup, GridEvents } from './gridEventLookup'; type PublisherArgsNoEvent = [E, T['params']]; type PublisherArgsRequiredEvent = [E, T['params'], T['event']]; type PublisherArgsOptionalEvent = PublisherArgsRequiredEvent | PublisherArgsNoEvent; type PublisherArgsEvent = {} extends T['event'] ? PublisherArgsOptionalEvent : PublisherArgsRequiredEvent; type PublisherArgsParams = [E, T['params']]; type PublisherArgsNoParams = [E]; type GridEventPublisherArg = T extends { params: any; event: MuiBaseEvent; } ? PublisherArgsEvent : T extends { params: any; } ? PublisherArgsParams : PublisherArgsNoParams; export type GridEventPublisher = (...params: GridEventPublisherArg) => void; export {};