import type { ChainTriggerLike, ChainTriggerFilterFunction } from "./ChainTriggerLike.js"; import { Trigger } from "./Trigger.js"; import type { TriggerLike, TriggerRemoveConditions, HandlerFunction, TriggerAddParameters } from "./TriggerLike.js"; /** * 他のTriggerLikeに反応して発火するイベント通知機構。 */ export declare class ChainTrigger extends Trigger implements ChainTriggerLike { /** * fireするきっかけとなる `TriggerLike` 。 * この値は参照のためにのみ公開されている。外部から変更してはならない。 */ chain: TriggerLike; /** * フィルタ。 * `chain` がfireされたときに実行される。この関数が真を返した時のみ、このインスタンスはfireされる。 */ filter: ChainTriggerFilterFunction | null; /** * フィルタのオーナー。 * `filter` の呼び出し時、 `this` として与えられる。 */ filterOwner: unknown; /** * `chain`に実際に`add`されているか否か。 * @private */ _isActivated: boolean; /** * `ChainTrigger` のインスタンスを生成する。 * * このインスタンスは、 `chain` がfireされたときに `filter` を実行し、真を返した場合に自身をfireする。 * @param chain このインスタンスがfireするきっかけとなる TriggerLike * @param filter `chain` がfireされたときに実行される関数。省略された場合、または本関数の戻り値が真の場合、このインスタンスをfireする。 * @param filterOwner `filter` 呼び出し時に使われる `this` の値。 */ constructor(chain: TriggerLike, filter?: ChainTriggerFilterFunction, filterOwner?: unknown); add(func: HandlerFunction, owner?: unknown): void; add(params: TriggerAddParameters): void; addOnce(func: HandlerFunction, owner?: unknown): void; addOnce(params: TriggerAddParameters): void; remove(func: HandlerFunction, owner?: unknown): void; remove(params: TriggerRemoveConditions): void; removeAll(params?: TriggerRemoveConditions): void; destroy(): void; /** * @private */ _onChainTriggerFired(args: T): void; }