/**
 * Gets fired when a pilet gets unloaded.
 */
export interface PiralUnloadPiletEvent {
    /**
     * The name of the pilet to be unloaded.
     */
    name: string;
}
/**
 * The map of known Piral app shell events.
 */
export interface PiralEventMap {
    'unload-pilet': PiralUnloadPiletEvent;
    [custom: string]: any;
}
/**
 * Listener for Piral app shell events.
 */
export interface Listener<T> {
    /**
     * Receives an event of type T.
     */
    (arg: T): void;
}
/**
 * The emitter for Piral app shell events.
 */
export interface EventEmitter {
    /**
     * Attaches a new event listener.
     * @param type The type of the event to listen for.
     * @param callback The callback to trigger.
     */
    on<K extends keyof PiralEventMap>(type: K, callback: Listener<PiralEventMap[K]>): EventEmitter;
    /**
     * Attaches a new event listener that is removed once the event fired.
     * @param type The type of the event to listen for.
     * @param callback The callback to trigger.
     */
    once<K extends keyof PiralEventMap>(type: K, callback: Listener<PiralEventMap[K]>): EventEmitter;
    /**
     * Detaches an existing event listener.
     * @param type The type of the event to listen for.
     * @param callback The callback to trigger.
     */
    off<K extends keyof PiralEventMap>(type: K, callback: Listener<PiralEventMap[K]>): EventEmitter;
    /**
     * Emits a new event with the given type.
     * @param type The type of the event to emit.
     * @param arg The payload of the event.
     */
    emit<K extends keyof PiralEventMap>(type: K, arg: PiralEventMap[K]): EventEmitter;
}
