declare const dropId: unique symbol; export type DropRef = { [dropId]: number; }; export declare abstract class Drop { private static weak; private static registry; private static idCtr; private dropId?; private dropRef?; protected constructor(); protected register(): void; private weak; abstract onDrop(): void; drop(): void; leak(): this; } export declare class DropPromise implements Promise { private readonly promise; private static dropFns; private static registry; private static idCtr; private dropId; private dropRef; [Symbol.toStringTag]: string; private constructor(); static of(promise: Promise, dropFn?: () => void): DropPromise; static ref(promise: Promise, dropRef: DropRef): DropPromise; then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined): Promise; catch(onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined): Promise; finally(onfinally?: (() => void) | null | undefined): Promise; } export declare class DropGenerator implements AsyncGenerator { private readonly generator; private static dropFns; private static registry; private static idCtr; private dropId; private dropRef; [Symbol.asyncIterator]: () => this; private constructor(); static of(generator: AsyncGenerator, dropFn?: () => void): DropGenerator; next(...args: [] | [TNext]): Promise>; return(value: TReturn | PromiseLike): Promise>; throw(e: any): Promise>; } export {};