import { type Overwrite } from '@augment-vir/common';
/**
 * Sub-class of `Event` with the type string part of the type signature.
 *
 * @category Internal
 */
export interface TypedEvent<EventType extends string> extends Event {
    readonly type: EventType;
}
/**
 * Define an `Event` sub-class with a type tied to its event type string.
 *
 * @category Events
 * @example
 *
 * ```ts
 * import {defineTypedEvent} from 'typed-event-target';
 *
 * defineTypedEvent('event-type-string');
 * ```
 */
export declare function defineTypedEvent<const EventType extends string>(type: EventType): (new (eventInitDict?: EventInit) => TypedEvent<EventType>) & Overwrite<typeof Event, Pick<TypedEvent<EventType>, "type">>;
