import { EventInvocationOpts, IEventSource, TypedEventHandler } from '../typed-event-interfaces';
/**
 * A basic, typed event
 *
 * @export
 * @class TypedEvent
 * @implements {IEventSource<TSender, TArgs>}
 * @param {TSender} sender The event's source (usually the particular instance raising the event)
 * as should be provided to the event handlers
 * @param {TArgs} args The arguments to provide to the handlers
 */
export declare class TypedEvent<TSender, TArgs> implements IEventSource<TSender, TArgs> {
    protected _handlers: TypedEventHandler<TSender, TArgs>[];
    attach(handler: TypedEventHandler<TSender, TArgs>): void;
    detach(handler: TypedEventHandler<TSender, TArgs>): void;
    invoke(sender: TSender, args: TArgs, options?: EventInvocationOpts): void;
    invokeAsync(sender: TSender, args: TArgs, options?: EventInvocationOpts): Promise<void>;
    private tryRemoveHandler;
}
