import { DisposableBase } from '../disposable/base.js';
import type { EventArgs } from './args/index.js';
import { Event } from './index.js';
/**
 * A handler that provides subscribable, public events.
 * The handler is intended for internal (protected, private) use
 *
 * @export
 * @class EventHandler
 * @template TSender
 * @template {EventArgs | void} [TArgs=void]
 * @extends {DisposableBase}
 * @since 1.0.0
 */
export declare class EventHandler<TSender, TArgs extends EventArgs | void = void> extends DisposableBase {
    private _callbacks;
    private _event;
    private _detachEvent;
    constructor();
    /**
     * the subscribable event itself
     *
     * @readonly
     * @type {Event<TSender, TArgs>}
     * @memberof EventHandler
     * @since 1.0.0
     */
    get event(): Event<TSender, TArgs>;
    /**
     * trigger/invoke event
     *
     * @param {TSender} sender_
     * @param {TArgs} eventArgs_
     * @memberof EventHandler
     * @since 1.0.0
     */
    invoke(sender_: TSender, eventArgs_: TArgs): void;
    private subscribe;
    private unsubscribe;
    protected disposingInstance(): void;
    protected disposedInstance(): void;
}
