//#region src/async.d.ts
declare const deferredPromise: <T>() => {
  promise: Promise<T>;
  resolve: (value: T) => void;
  reject: (error: Error) => void;
};
type DeferredPromise<T> = ReturnType<typeof deferredPromise<T>>;
declare const sleep: (ms: number, {
  signal
}?: {
  signal?: AbortSignal;
}) => Promise<void>;
declare class Queue {
  private readonly debounce?;
  private promise;
  constructor(debounce?: number | undefined);
  enqueue<T, Args extends unknown[]>(fn: (...args: Args) => Promise<T>, ...args: Args): Promise<T>;
}
declare class RateLimiter<T, Args extends unknown[]> {
  fn: (...args: Args) => Promise<T>;
  debounce: number;
  queues: Queue[];
  index: number;
  constructor(opts: {
    fn: (...args: Args) => Promise<T>;
    debounce: number;
    maxConcurrency: number;
  });
  request(...args: Args): Promise<T>;
}
declare const once: (target: EventTarget, event: string, opts?: {
  signal?: AbortSignal;
  timeout?: number;
}) => Promise<void>;
//#endregion
export { DeferredPromise, Queue, RateLimiter, deferredPromise, once, sleep };