import { type Middleware, type ThunkAction, type ThunkDispatch } from '@reduxjs/toolkit';
import * as ElementTrees from './modules/element-trees';
import * as ReactComponents from './modules/react-components';
import * as BoxModels from './modules/box-models';
import * as ComponentsMeta from './modules/components-meta';
import * as PropControllers from './modules/prop-controllers';
import * as PropControllerHandles from './modules/prop-controller-handles';
import * as BuilderEditMode from './modules/builder-edit-mode';
import * as Pointer from './modules/pointer';
import * as Breakpoints from './modules/breakpoints';
import * as ReactPage from './react-page';
import { type Action } from './actions';
import { MakeswiftHostApiClient } from '../api/react';
import { ElementImperativeHandle } from '../runtimes/react/element-imperative-handle';
import { type BuilderAPIProxy } from './builder-api/proxy';
export type { Operation } from './modules/read-write-documents';
export type { BoxModelHandle } from './modules/box-models';
export { createBox, getBox, parse } from './modules/box-models';
export declare const reducer: import("@reduxjs/toolkit").Reducer<{
    documents: import("./modules/read-only-documents").State;
    elementTrees: ElementTrees.State;
    reactComponents: ReactComponents.State;
    boxModels: BoxModels.State;
    componentsMeta: ComponentsMeta.State;
    propControllers: PropControllers.DescriptorsByComponentType;
    propControllerHandles: PropControllerHandles.State;
    isInBuilder: boolean;
    isPreview: boolean;
    builderEditMode: BuilderEditMode.State;
    pointer: {
        pointer: Pointer.Point | null;
    };
    elementImperativeHandles: Map<string, Map<string, ElementImperativeHandle<Record<string, PropControllers.PropControllerDescriptor>>>>;
    breakpoints: Breakpoints.Breakpoints;
}, Action | import("@reduxjs/toolkit").UnknownAction, Partial<{
    documents: import("./modules/read-only-documents").State | undefined;
    elementTrees: ElementTrees.State | undefined;
    reactComponents: ReactComponents.State | undefined;
    boxModels: BoxModels.State | undefined;
    componentsMeta: ComponentsMeta.State | undefined;
    propControllers: PropControllers.DescriptorsByComponentType | undefined;
    propControllerHandles: PropControllerHandles.State | undefined;
    isInBuilder: boolean | undefined;
    isPreview: boolean | undefined;
    builderEditMode: BuilderEditMode.State | undefined;
    pointer: {
        pointer: Pointer.Point | null;
    } | undefined;
    elementImperativeHandles: Map<string, Map<string, ElementImperativeHandle<Record<string, PropControllers.PropControllerDescriptor>>>> | undefined;
    breakpoints: Breakpoints.Breakpoints | undefined;
}>>;
export type State = ReturnType<typeof reducer>;
export type Dispatch = ThunkDispatch<State, unknown, Action>;
export declare function startMeasuringElements(): ThunkAction<() => void, State, unknown, Action>;
export type Size = {
    offsetWidth: number;
    offsetHeight: number;
    clientWidth: number;
    clientHeight: number;
    scrollWidth: number;
    scrollHeight: number;
    scrollTop: number;
    scrollLeft: number;
};
export declare function initialize(builderProxy: BuilderAPIProxy): ThunkAction<() => void, State, unknown, Action>;
export declare function builderAPIMiddleware(builderProxy: BuilderAPIProxy): Middleware<Dispatch, State, Dispatch>;
export declare function propControllerHandlesMiddleware(): Middleware<Dispatch, State, Dispatch>;
export declare function configureStore({ preloadedState, client, builderProxy, }: {
    preloadedState: Partial<State>;
    client: MakeswiftHostApiClient;
    builderProxy: BuilderAPIProxy;
}): import("@reduxjs/toolkit").EnhancedStore<{
    documents: import("./modules/read-only-documents").State;
    elementTrees: ElementTrees.State;
    reactComponents: ReactComponents.State;
    boxModels: BoxModels.State;
    componentsMeta: ComponentsMeta.State;
    propControllers: PropControllers.DescriptorsByComponentType;
    propControllerHandles: PropControllerHandles.State;
    isInBuilder: boolean;
    isPreview: boolean;
    builderEditMode: BuilderEditMode.State;
    pointer: {
        pointer: Pointer.Point | null;
    };
    elementImperativeHandles: Map<string, Map<string, ElementImperativeHandle<Record<string, PropControllers.PropControllerDescriptor>>>>;
    breakpoints: Breakpoints.Breakpoints;
}, Action | import("@reduxjs/toolkit").UnknownAction, import("@reduxjs/toolkit").Tuple<[import("@reduxjs/toolkit").StoreEnhancer<{
    dispatch: ThunkDispatch<{
        documents: import("./modules/read-only-documents").State;
        elementTrees: ElementTrees.State;
        reactComponents: ReactComponents.State;
        boxModels: BoxModels.State;
        componentsMeta: ComponentsMeta.State;
        propControllers: PropControllers.DescriptorsByComponentType;
        propControllerHandles: PropControllerHandles.State;
        isInBuilder: boolean;
        isPreview: boolean;
        builderEditMode: BuilderEditMode.State;
        pointer: {
            pointer: Pointer.Point | null;
        };
        elementImperativeHandles: Map<string, Map<string, ElementImperativeHandle<Record<string, PropControllers.PropControllerDescriptor>>>>;
        breakpoints: Breakpoints.Breakpoints;
    }, undefined, import("@reduxjs/toolkit").UnknownAction> & ReactPage.Dispatch & Dispatch;
}>, import("@reduxjs/toolkit").StoreEnhancer<import("./mixins/setup-teardown").SetupTeardownMixin>]>>;
export type Store = ReturnType<typeof configureStore>;
//# sourceMappingURL=react-builder-preview.d.ts.map