import { DailyEvent, DailyEventObject } from '@daily-co/daily-js';
declare type EnsureArray<T> = T extends DailyEvent ? [T] : T;
declare type EventObjectsFor<T> = EnsureArray<T> extends (infer U)[] ? U extends DailyEvent ? DailyEventObject<U> : never : never;
declare type EventCallback<T extends DailyEvent | DailyEvent[]> = (events: EventObjectsFor<T>[]) => void;
/**
 * Sets up a throttled daily event listener using [on](https://docs.daily.co/reference/daily-js/instance-methods/on) method.
 * When this hook is unmounted the event listener is unregistered using [off](https://docs.daily.co/reference/daily-js/instance-methods/off).
 *
 * In comparison to useDailyEvent the callback passed here will be called with an array of event objects.
 *
 * You can pass an array of DailyEvents to register multiple daily events with a single callback handler.
 * The events returned in the callback parameter are guaranteed to be in the same order as they were emitted.
 *
 * @param ev The DailyEvent to register or an array of DailyEvent to register.
 * @param callback A memoized callback reference to run when throttled events are emitted.
 * @param throttleTimeout The minimum waiting time until the callback is called again. Default: 500
 */
export declare const useThrottledDailyEvent: <T extends DailyEvent>(ev: T | T[], callback: EventCallback<EnsureArray<T>>, throttleTimeout?: number, INTERNAL_priority?: boolean) => void;
export {};
