import { type Metadata } from '@devvit/protos/lib/Types.js';
import { type RenderPostRequest, type RenderPostResponse } from '@devvit/protos/types/devvit/reddit/custom_post/v1alpha/custom_post.js';
import { type UIRequest, type UIResponse } from '@devvit/protos/types/devvit/ui/block_kit/v1beta/ui.js';
import { type HandleUIEventRequest, type HandleUIEventResponse } from '@devvit/protos/types/devvit/ui/events/v1alpha/handle_ui.js';
import { type Empty } from '@devvit/protos/types/google/protobuf/empty.js';
import type { UIApp } from '@devvit/ui-renderer/client/dispatcher/remote-app.js';
import { type CallOptions } from 'nice-grpc-web';
type CustomPostNiceClient = {
    renderPost(req: Readonly<RenderPostRequest>, opts: Readonly<CallOptions>): Promise<RenderPostResponse>;
    renderPostComposer(req: Readonly<UIRequest>, opts: Readonly<CallOptions>): Promise<UIResponse>;
    renderPostContent(req: Readonly<UIRequest>, opts: Readonly<CallOptions>): Promise<UIResponse>;
};
type UIEventHandlerNiceClient = {
    handleUIEvent(req: Readonly<HandleUIEventRequest>, opts: Readonly<CallOptions>): Promise<HandleUIEventResponse>;
};
export declare class RemoteApp implements UIApp {
    #private;
    /** @arg uploaded Callback to test whether remote bundle is available. */
    static new(gatewayOrigin: string, uploaded: () => Promise<Empty>, meta: Readonly<Metadata>): RemoteApp;
    constructor(customPost: CustomPostNiceClient, uiEventHandler: UIEventHandlerNiceClient, uploaded: () => Promise<Empty>, meta: Readonly<Metadata>);
    HandleUIEvent(req: Readonly<HandleUIEventRequest>, meta: Readonly<Metadata> | undefined): Promise<HandleUIEventResponse>;
    RenderPost(req: Readonly<RenderPostRequest>, meta: Readonly<Metadata> | undefined): Promise<RenderPostResponse>;
    RenderPostContent(req: Readonly<UIRequest>, meta: Readonly<Metadata> | undefined): Promise<UIResponse>;
    RenderPostComposer(req: Readonly<UIRequest>, meta: Readonly<Metadata> | undefined): Promise<UIResponse>;
}
export {};
