import type { Nanos } from "./core"; /** * Allows derived type structures to show through */ export type Prettify = { [K in keyof T]: T[K]; }; /** * WithRequired is a utility Type allows a type to specify required fields */ export type WithRequired = T & { [P in K]-?: T[P]; }; export type ValueResult = { isError: false; value: T; }; export type ErrorResult = { isError: true; error: Error; }; /** * Result is a value that may have resulted in an error. */ export type Result = ValueResult | ErrorResult; export declare function extend(a: any, ...b: any[]): any; export interface Pending { pending: number; write: (c: number) => void; wrote: (c: number) => void; err: (err: Error) => void; close: () => void; promise: () => Promise; resolved: boolean; done: boolean; } export declare function render(frame: Uint8Array): string; export interface Timeout extends Promise { cancel: () => void; } export declare function timeout(ms: number, asyncTraces?: boolean): Timeout; export interface Delay extends Promise { cancel: () => void; } export declare function delay(ms?: number): Delay; export declare function deadline(p: Promise, millis?: number): Promise; export interface Deferred extends Promise { /** * Resolves the Deferred to a value T * @param value */ resolve: (value?: T | PromiseLike) => void; /** * Rejects the Deferred * @param reason */ reject: (reason?: any) => void; } /** * Returns a Promise that has a resolve/reject methods that can * be used to resolve and defer the Deferred. */ export declare function deferred(): Deferred; export declare function debugDeferred(): Deferred; export declare function shuffle(a: T[]): T[]; export declare function collect(iter: AsyncIterable): Promise; export declare class Perf { timers: Map; measures: Map; constructor(); mark(key: string): void; measure(key: string, startKey: string, endKey: string): void; getEntries(): { name: string; duration: number; }[]; } export declare class SimpleMutex { max: number; current: number; waiting: Deferred[]; /** * @param max number of concurrent operations */ constructor(max?: number); /** * Returns a promise that resolves when the mutex is acquired */ lock(): Promise; /** * Release an acquired mutex - must be called */ unlock(): void; } /** * Returns a new number between .5*n and 1.5*n. * If the n is 0, returns 0. * @param n */ export declare function jitter(n: number): number; export interface Backoff { backoff(attempt: number): number; } /** * Returns a Backoff with the specified interval policy set. * @param policy */ export declare function backoff(policy?: number[]): Backoff; /** * Converts the specified millis into Nanos * @param millis */ export declare function nanos(millis: number): Nanos; /** * Convert the specified Nanos into millis * @param ns */ export declare function millis(ns: Nanos): number;