import type { Event, Request, Response } from '@devvit/multiplatform/ui-shared-shared.js';
import { EventScope } from '@devvit/multiplatform/ui-shared-shared.js';
import type { UIEvent, UIRequest, UIResponse } from '@devvit/protos';
import type { Nullable } from 'vitest';
export type UIState = {
    [key: string]: any;
} | undefined;
/** Must be JSON serializable for devvit-surface. */
export type UIProps = {
    postId?: string | undefined;
    [key: string]: unknown;
} | undefined;
export declare class WrappedEvent implements Event {
    uiEvent: UIEvent;
    async?: Nullable<boolean>;
    hook?: Nullable<string>;
    retry?: Nullable<boolean>;
    scope: EventScope;
    constructor(config: UIEvent);
}
export declare class WrappedRequest implements Request<UIState, WrappedEvent> {
    uiRequest: UIRequest;
    events: WrappedEvent[];
    state?: UIState;
    constructor(uiRequest: UIRequest);
}
export declare class WrappedResponse implements Response<UIState, WrappedEvent> {
    uiResponse: UIResponse;
    replay: WrappedEvent[];
    state?: UIState;
    constructor(uiResponse: UIResponse);
}
//# sourceMappingURL=mappers.d.ts.map