import type { HandlerFunction, TriggerHandler, TriggerAddParameters, TriggerRemoveConditions, TriggerSearchConditions, TriggerLike } from "./TriggerLike.js"; /** * イベント通知機構クラス。 */ export declare class Trigger implements TriggerLike { /** * 登録されているイベントハンドラの数。 */ length: number; /** * 登録されたすべてのハンドラ。 * @private */ _handlers: TriggerHandler[]; constructor(); /** * このTriggerにハンドラを追加する。 * @param func ハンドラの関数 * @param owner ハンドラのオーナー。 `func` を呼び出す時に `this` として用いられる値 */ add(func: HandlerFunction, owner?: unknown): void; /** * このTriggerにハンドラを追加する。 * @param params 登録するハンドラの情報 */ add(params: TriggerAddParameters): void; /** * このTriggerにハンドラを追加する。 * 本メソッドにより追加されたハンドラは実行後に破棄される。 * @param func ハンドラの関数 * @param owner ハンドラのオーナー。 `func` を呼び出す時に `this` として用いられる値 */ addOnce(func: HandlerFunction, owner?: unknown): void; /** * このTriggerにハンドラを追加する。 * 本メソッドにより追加されたハンドラは実行後に破棄される。 * @param params 登録するハンドラの情報 */ addOnce(params: TriggerAddParameters): void; /** * このTriggerにハンドラを追加する。 * @deprecated 互換性のために残されている。代わりに `add()` を利用すべきである。 */ handle(owner: any, func?: HandlerFunction, name?: string): void; /** * このTriggerを発火する。 * * 登録された全ハンドラの関数を、引数 `arg` を与えて呼び出す。 * 呼び出し後、次のいずれかの条件を満たす全ハンドラの登録は解除される。 * * ハンドラが `addOnce()` で登録されていた場合 * * ハンドラが `add()` で登録される際に `once: true` オプションが与えられていた場合 * * ハンドラが Promise 以外の truthy な値を返した場合 * * @param arg ハンドラに与えられる引数 */ fire(arg: T): void; /** * 指定した条件に一致したハンドラが登録されているかを返す。 * 指定されなかった条件は、条件として無視される(登録時の値に関わらず一致するとみなされる)。 * * @param func 条件として用いるハンドラの関数 * @param owner 条件として用いるハンドラのオーナー */ contains(func: HandlerFunction | null, owner?: unknown): boolean; /** * 指定した条件に一致したハンドラが登録されているかを返す。 * 指定されなかった条件は、条件として無視される(登録時の値に関わらず一致するとみなされる)。 * * @param params 検索の条件 */ contains(params: TriggerSearchConditions): boolean; /** * 関数が `func` であり、かつオーナーが `owner` であるハンドラを削除する。 * 同じ組み合わせで複数登録されている場合、index が最も小さいハンドラのみ削除する。 * * @param func 削除条件として用いるハンドラの関数 * @param owner 削除条件として用いるハンドラのオーナー。省略した場合、 `undefined` */ remove(func: HandlerFunction, owner?: unknown): void; /** * 指定した条件に完全一致するハンドラを削除する。 * 同じ組み合わせで複数登録されている場合、index が最も小さいハンドラのみ削除する。 * * @param params 削除するハンドラの条件 */ remove(params: TriggerRemoveConditions): void; /** * 指定した条件に部分一致するイベントハンドラを削除する。 * * 本メソッドは引数に与えた条件に一致したイベントハンドラを全て削除する。 * 引数の条件を一部省略した場合、その値の内容が登録時と異なっていても対象のイベントハンドラは削除される。 * 引数に与えた条件と完全に一致したイベントハンドラのみを削除したい場合は `this.remove()` を用いる。 * 引数を省略した場合は全てのイベントハンドラを削除する。 * * @param params 削除するイベントハンドラの条件 */ removeAll(params?: TriggerRemoveConditions): void; /** * このTriggerを破棄する。 */ destroy(): void; /** * このTriggerが破棄されているかを返す。 */ destroyed(): boolean; /** * @private */ _addHandler(params: TriggerHandler, index?: number): void; /** * @private */ _comparePartial(target: TriggerSearchConditions, compare: TriggerSearchConditions): boolean; }