import type { ContextAction, ContextActionList, ContextActionRequest, ContextActionResponse, CustomPost } from '@devvit/protos';
import { type HandleUIEventRequest, type HandleUIEventResponse, type Metadata, type RenderPostRequest, type RenderPostResponse, type UIRequest, type UIResponse } from '@devvit/protos';
import type { UIEventHandler } from '@devvit/protos/types/devvit/ui/events/v1alpha/handle_ui.js';
import type { Empty } from '@devvit/protos/types/google/protobuf/empty.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>;
};
type ContextActionNiceClient = {
    getActions(req: Readonly<Empty>, opts: Readonly<CallOptions>): Promise<ContextActionList>;
    onAction(req: Readonly<ContextActionRequest>, opts: Readonly<CallOptions>): Promise<ContextActionResponse>;
};
export type UIApp = UIEventHandler & CustomPost;
type Meta = {
    installation: string;
    actor: string;
};
export declare class RemoteApp implements UIApp, ContextAction {
    #private;
    static new(gatewayOrigin: string, meta: Meta): RemoteApp;
    constructor(contextAction: ContextActionNiceClient, customPost: CustomPostNiceClient, uiEventHandler: UIEventHandlerNiceClient, meta: Meta);
    GetActions(req: Readonly<Empty>, meta: Readonly<Metadata> | undefined): Promise<ContextActionList>;
    HandleUIEvent(req: Readonly<HandleUIEventRequest>, meta: Readonly<Metadata> | undefined): Promise<HandleUIEventResponse>;
    OnAction(req: Readonly<ContextActionRequest>, meta: Readonly<Metadata> | undefined): Promise<ContextActionResponse>;
    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 {};
//# sourceMappingURL=remote-app.d.ts.map