import '@reddit/faceplate-ui/templateRenderingStrategy/clientStrategy.js';
import '../blocks/components/devvit-blocks-renderer.js';
import '../blocks/components/devvit-blocks-webview.js';
import type { LinkedBundle, Metadata, UIResponse } from '@devvit/protos';
import { UIDimensions } from '@devvit/protos/types/devvit/ui/common/v1alpha/common.js';
import type { LiteLoadResponse } from '@devvit/runtime-lite/client/ClientShared.js';
import type { FaceplateEvent } from '@reddit/faceplate/event-types.js';
import type { PropertyValues } from 'lit';
import { LitElement } from 'lit';
import type { DevvitRealtimeSendEvent, DevvitUIEffectEvent, DevvitUIError } from './dispatcher/events.js';
import { type UIProps } from './dispatcher/mappers.js';
import type { UIApp } from './dispatcher/remote-app.js';
declare global {
    interface HTMLElementTagNameMap {
        'devvit-surface': DevvitSurface;
    }
    interface HTMLElementEventMap {
        /** Emitted when an app has been successfully loaded in the local runtime. */
        'devvit-loaded': LiteLoadResponse;
        'devvit-realtime-send': DevvitRealtimeSendEvent;
        'devvit-ui-effect': DevvitUIEffectEvent;
        'devvit-ui-error': Omit<FaceplateEvent<'devvit-ui-error'>, 'detail'> & {
            detail: DevvitUIError;
        };
    }
}
type ColorScheme = 'dark' | 'light' | undefined;
/**
 * A component for rendering blocks somewhere inside of Reddit. This component should
 * have no opinions on where it is rendered, only that the props are supplied.
 *
 * The complexity of this class should only be the UI itself and proxying state
 * to devvit-blocks-renderer and Dispatcher. Don't put logic here that you can't
 * unit test.
 *
 * @slot - Loading / unloaded state.
 */
export declare class DevvitSurface extends LitElement {
    #private;
    static get styles(): import("lit").CSSResult[];
    /** A small client that forwards GRPC requests to our backend */
    remoteApp?: UIApp | undefined;
    /** The linked bundle ready to be executed the by dispatcher */
    bundle?: LinkedBundle | undefined;
    /** The code that creates the local runtime and associated worker */
    localRuntimeCode?: Blob | undefined;
    /** Metadata forwarded into the LocalRuntime. Should be the same metadata that is passed to the RemoteApp */
    metadata?: Metadata | undefined;
    /** Props passed into the request. Useful for things like postId */
    requestProps?: UIProps;
    /** Enables debug logging for the local runtime */
    runtimeDebugLogging: boolean;
    /** Color scheme that the surface renders the blocks into */
    scheme?: ColorScheme;
    /** Enable the use of experimental blocks that are not production ready */
    useExperimentalBlocks: boolean;
    /** Enable the use of speculative execution from within KMP */
    useSpeculativeExecution: boolean;
    webviewUrlTemplate: string;
    disableAssetSandbox: boolean;
    renderResponse?: UIResponse | undefined;
    /** Width, height, and scale of this element, stays in sync as dimensions of element changes */
    dimensions?: UIDimensions;
    private _rootBlock?;
    constructor();
    connectedCallback(): Promise<void>;
    disconnectedCallback(): void;
    protected render(): import("lit-html").TemplateResult<1>;
    protected willUpdate(props: PropertyValues<this>): Promise<void>;
}
export {};
//# sourceMappingURL=devvit-surface.d.ts.map