UNPKG

warscript

Version:

A typescript library for Warcraft III using Warpack.

36 lines (35 loc) 1.42 kB
/** @noSelfInFile */ import { Event } from "./event"; declare global { type PromiseExecutor<T> = ConstructorParameters<typeof Promise<T>>[0]; type PromiseResolve<T> = Parameters<PromiseExecutor<T>>[0]; type PromiseReject = Parameters<PromiseExecutor<unknown>>[1]; } export declare class OperationMonitor<T> extends Promise<T> { private readonly o; constructor(operation: Operation<T>, ...args: ConstructorParameters<typeof Promise<T>>); cancel(): boolean; } declare const OperationContinue: unique symbol; type OperationContinue = typeof OperationContinue; export { OperationContinue }; export declare abstract class Operation<T> { protected constructor(); private started; protected progress: number; protected maximum: number; isCanceled: boolean; get isStarted(): boolean; execute(): OperationMonitor<T>; protected abstract estimate(): number | Promise<number>; protected abstract work(): T | OperationContinue | Promise<T | OperationContinue>; get onSuccess(): Event<[operation: Operation<T>, result: T]>; get onFailure(): Event<[operation: Operation<T>, reason?: any]>; get onComplete(): Event<[ operation: Operation<T>, ...result: [success: true, result: T] | [success: false, reason?: any] ]>; get onProgress(): Event<[operation: Operation<T>]>; protected abstract doCancel(): boolean; cancel(): boolean; }