import { ResolutionListener } from './resolution-listener'; /** * An asyncronous resource that can be resolved. */ export declare abstract class AsyncResource { /** Whether this resource is resolved */ private resolved; /** Whether this resource is resolving */ private resolving; /** Array of resolution listeners */ private resolutionListeners; /** * Create a new AsyncResource * * @param resolve whether to resolve the resource now, defaults to false */ constructor(resolve: boolean); /** @returns whether this resource is resolved */ isResolved(): boolean; /** @returns whether this resource is resolving */ isResolving(): boolean; /** * Register a listener that will emit when this resource has been resolved sucessfully. * @param listener the listener for when this resource has been resolved */ registerResolutionListener(listener: ResolutionListener): void; /** * Resolve this resource. * * @returns a promise that completes once the resource is resolved */ abstract resolve(): Promise; /** * Setter for `resolved`. * @param resolved whether this resource is resolved */ protected setResolved(resolved: boolean): void; /** * Setter for `resolving`. * @param resolving whether the resource is resolving */ protected setResolving(resolving: boolean): void; }