import { CloseEvents } from './closed.js';
import { ErrorEvents } from './errored.js';
import { SuperEventMap, SuperEventTarget, SuperEventWaiter } from './target.js';

declare function waitOrThrow<M extends SuperEventMap, K extends keyof M, R>(target: SuperEventTarget<M>, type: K, callback: SuperEventWaiter<M[K], R>, signal?: AbortSignal): Promise<R>;
declare function waitWithCloseAndErrorOrThrow<M extends SuperEventMap & CloseEvents & ErrorEvents, K extends keyof M, R>(target: SuperEventTarget<M>, type: K, callback: SuperEventWaiter<M[K], R>, signal?: AbortSignal): Promise<R>;

export { waitOrThrow, waitWithCloseAndErrorOrThrow };
