UNPKG

warscript

Version:

A typescript library for Warcraft III using Warpack.

29 lines (28 loc) 3.27 kB
/** @noSelfInFile */ import { AbstractDestroyable, Destructor } from "../destroyable"; export type BehaviorConstructor<T extends Behavior<any>, Parameters extends any[] = any[]> = OmitConstructor<typeof Behavior<any>> & (abstract new (...parameters: Parameters) => T); declare const enum BehaviorPropertyKey { PREVIOUS_BEHAVIOR = 0, NEXT_BEHAVIOR = 1, TIMER = 2 } export declare abstract class Behavior<T, PeriodicActionParameters extends any[] = any[]> extends AbstractDestroyable { protected readonly object: T; private [BehaviorPropertyKey.PREVIOUS_BEHAVIOR]?; private [BehaviorPropertyKey.NEXT_BEHAVIOR]?; private [BehaviorPropertyKey.TIMER]?; protected constructor(object: T); protected onDestroy(): Destructor; protected onPeriod(...parameters: PeriodicActionParameters): void; protected startPeriodicAction(interval: number, ...parameters: PeriodicActionParameters): void; protected stopPeriodicAction(): void; static count<T extends Behavior<any>, ConstructorParameters extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, limit?: number): number; static getFirst<T extends Behavior<any>, ConstructorParameters extends any[], Count extends [number] | []>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, ...[count]: Count): Count extends [number] ? T[] : T | undefined; static getLast<T extends Behavior<any>, ConstructorParameters extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never): T | undefined; static getAll<T extends Behavior<any>, ConstructorParameters extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never): T[]; static forFirst<T extends Behavior<any>, ConstructorParameters extends any[], ConsumerParameters extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, count: number, consumer: (behavior: T, ...parameters: ConsumerParameters) => any, ...parameters: ConsumerParameters): number; static forFirst<T extends Behavior<any>, ConstructorParameters extends any[], K extends KeysOfType<T, (...args: any) => any>>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, count: number, key: K, ...parameters: T[K] extends (...args: any) => any ? Parameters<T[K]> : never): number; static forAll<T extends Behavior<any>, ConstructorParameters extends any[], ConsumerParameters extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, consumer: (behavior: T, ...parameters: ConsumerParameters) => unknown, ...parameters: ConsumerParameters): number; static forAll<T extends Behavior<any>, ConstructorParameters extends any[], K extends KeysOfType<T, (...args: any) => any>>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, key: K, ...parameters: T[K] extends (...args: any) => any ? Parameters<T[K]> : never): number; } export {};