warscript
Version:
A typescript library for Warcraft III using Warpack.
36 lines (35 loc) • 1.42 kB
TypeScript
/** @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;
}