import { Application, UIOptions } from "@epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.7";
import { ArcwarePixelStreaming } from "../core/ArcwarePixelStreaming";
/**
 * Default UI layer built on top of ArcwarePixelStreaming.
 *
 * Provides:
 * - Branded controls
 * - Audio/Mic/Stop buttons
 * - Love letter overlay
 * - Splash screen support
 * - Automatic file download handling
 *
 * Can be replaced with a fully custom UI.
 */
export declare class ArcwareApplication extends Application {
    static Flags: {
        new (): {};
        noSession: "noSession";
    };
    private baseShowAfkOverlay;
    stream: ArcwarePixelStreaming;
    private videoElementParent;
    private parentElement;
    private webRtcController;
    loveLettersContainer: HTMLDivElement | undefined;
    private loveLettersList;
    private loveLettersQueue;
    private isProcessingQueue;
    private remoteWhiteLabellingFetched;
    private microphoneOverlay?;
    private _splashHost?;
    private _splashVideo?;
    private logoLoader?;
    get rootElement(): HTMLElement;
    private ArcwareSection;
    constructor(options: UIOptions & {
        stream: ArcwarePixelStreaming;
    });
    addLoveLetterhandler(): void;
    initLoveLettersContainer(): void;
    private _loveLettersAttachTimer?;
    private tryAttachLoveLettersContainer;
    private pushLetter;
    private tryProcessQueue;
    private processLoveLetterQueue;
    private handleRemoveLoveLetters;
    private createMicrophoneOverlay;
    private removeXRIconIfDisabled;
    private applyBrandingFromSettings;
    private ensureSplashHost;
    private destroySplashVideo;
    private upsertSplashVideo;
    private hideSplashVideo;
    private isVideoUrl;
    /** Set's and resets hidden state of "additional" UI Elements.
     * For example buttons or connection icon.
     * These will fade in through css animation upon the videoInitialized event.
     * At this point in time the streamInfo is already processed.
     */
    private uiElementsVisibility;
    private adjustSettingsPanel;
    private createAudioToggleButton;
    private createMicToggleButton;
    private createStopButton;
    private applyCustomStyling;
    private uiDefaultButtonVisibilty;
    private preventDefaultKeyboardEvents;
    private autoPlayHandler;
    /**
     * @deprecated Use onApplicationResponse instead.
     * Registers a persistent listener for UE responses.
     */
    getApplicationResponse(callback: (response: string) => void): void;
    /** Request a response from you UE Application.
     * The returned response depends on the implementation of your UE Application.
     * It can be used to request information from the application, such as:
     * - a state to update your custom ui
     * - get the url to the pdf it uploaded to some remote service of yours
     * - the id of the save-game
     * .. anything else you could imagine.
     */
    onApplicationResponse(callback: (response: string) => void): () => void;
    private applyArcwareStyles;
    /** Emit an event towards the UE Application.
     * Mainly used to bubble events like a button press or other command inputs towards the UE Application.
     */
    emitUIInteraction(descriptor: object | string): void;
    private addTextToConnectOverlay;
    private syncAfkOverlayFromWhiteLabelling;
}
