import type { SerwistEventTarget } from "./SerwistEventTarget.js";
/**
 * A minimal `Event` subclass shim.
 * This doesn't *actually* subclass `Event` because not all browsers support
 * constructable `EventTarget`, and using a real `Event` will error.
 * @private
 */
export declare class SerwistEvent<K extends keyof SerwistEventMap> {
    type: K;
    target?: SerwistEventTarget;
    sw?: ServiceWorker;
    originalEvent?: Event;
    isExternal?: boolean;
    constructor(type: K, props: Omit<SerwistEventMap[K], "target" | "type">);
}
export interface SerwistMessageEvent extends SerwistEvent<"message"> {
    data: any;
    originalEvent: Event;
    ports: readonly MessagePort[];
}
export interface SerwistLifecycleEvent extends SerwistEvent<keyof SerwistLifecycleEventMap> {
    isUpdate?: boolean;
}
export interface SerwistLifecycleWaitingEvent extends SerwistLifecycleEvent {
    wasWaitingBeforeRegister?: boolean;
}
export interface SerwistLifecycleEventMap {
    installing: SerwistLifecycleEvent;
    installed: SerwistLifecycleEvent;
    waiting: SerwistLifecycleWaitingEvent;
    activating: SerwistLifecycleEvent;
    activated: SerwistLifecycleEvent;
    controlling: SerwistLifecycleEvent;
    redundant: SerwistLifecycleEvent;
}
export interface SerwistEventMap extends SerwistLifecycleEventMap {
    message: SerwistMessageEvent;
}
//# sourceMappingURL=SerwistEvent.d.ts.map