import { type ThunkDispatch, type Middleware } from '@reduxjs/toolkit';
import { type SerializableReplacementContext } from '@makeswift/controls';
import * as Documents from './modules/read-only-documents';
import * as ElementTrees from './modules/element-trees';
import * as ReactComponents from './modules/react-components';
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 Breakpoints from './modules/breakpoints';
import { type Action } from './actions';
export type { Data, Document, DocumentReference, Element, ElementData, ElementReference, } from './modules/read-only-documents';
export { createBaseDocument, createDocumentReference, getRootElement, isElementReference, } from './modules/read-only-documents';
export type { ComponentType } from './modules/react-components';
export type { ComponentMeta } from './modules/components-meta';
declare const reducer: import("@reduxjs/toolkit").Reducer<{
    documents: Documents.State;
    elementTrees: ElementTrees.State;
    reactComponents: ReactComponents.State;
    componentsMeta: ComponentsMeta.State;
    propControllers: PropControllers.DescriptorsByComponentType;
    propControllerHandles: PropControllerHandles.State;
    isInBuilder: boolean;
    isPreview: boolean;
    builderEditMode: BuilderEditMode.State;
    breakpoints: Breakpoints.Breakpoints;
}, Action | import("@reduxjs/toolkit").UnknownAction, Partial<{
    documents: Documents.State | undefined;
    elementTrees: ElementTrees.State | undefined;
    reactComponents: ReactComponents.State | undefined;
    componentsMeta: ComponentsMeta.State | undefined;
    propControllers: PropControllers.DescriptorsByComponentType | undefined;
    propControllerHandles: PropControllerHandles.State | undefined;
    isInBuilder: boolean | undefined;
    isPreview: boolean | undefined;
    builderEditMode: BuilderEditMode.State | undefined;
    breakpoints: Breakpoints.Breakpoints | undefined;
}>>;
export type State = ReturnType<typeof reducer>;
export type Dispatch = ThunkDispatch<State, unknown, Action>;
export declare function getDocument(state: State, documentKey: string): Documents.Document | null;
export declare function getElements(state: State, documentKey: string): ElementTrees.ElementTree['elements'];
export declare function getElementIds(state: State, documentKey: string): ElementTrees.ElementTree['elementIds'];
export declare function getReactComponent(state: State, type: string): ReactComponents.ComponentType | null;
export declare function getComponentMeta(state: State, type: string): ComponentsMeta.ComponentMeta | null;
export declare function getPropControllerDescriptors(state: State): PropControllers.State;
export declare function getComponentPropControllerDescriptors(state: State, componentType: string): PropControllers.DescriptorsByProp | null;
export declare function getPropControllers(state: State, documentKey: string, elementKey: string): Record<string, import("@makeswift/controls").ControlInstance<import("@makeswift/controls").ControlMessage<string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | {
    [key: string]: string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined;
} | null | undefined)[] | {
    [key: string]: string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
} | null | undefined)[] | {
    [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
} | null | undefined)[] | {
    [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
} | null | undefined)[] | {
    [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
} | null | undefined)[] | {
    [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
} | null | undefined)[] | {
    [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
} | null | undefined)[] | {
    [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
} | null | undefined)[] | {
    [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
} | null | undefined)[] | {
    [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
} | null | undefined)[] | {
    [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
} | null | undefined)[] | {
    [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
} | null | undefined>>> | null;
/**
 * Returns all document keys sorted by depth, i.e., parent documents come before child documents.
 */
export declare const getDocumentKeysSortedByDepth: (state: State) => string[];
export declare function getElement(state: State, documentKey: string, elementKey: string): Documents.Element | null;
export declare function getElementId(state: State, documentKey: string, elementKey: string): string | null;
export declare function getElementPropControllerDescriptors(state: State, documentKey: string, elementKey: string): Record<string, PropControllers.PropControllerDescriptor> | null;
export declare function copyElementTree(state: State, elementTree: Documents.ElementData, replacementContext: SerializableReplacementContext): {
    type: string;
    key: string;
    props: Record<string, string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | {
        [key: string]: string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined;
    } | null | undefined)[] | {
        [key: string]: string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
    } | null | undefined)[] | {
        [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
    } | null | undefined)[] | {
        [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
    } | null | undefined)[] | {
        [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
    } | null | undefined)[] | {
        [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
    } | null | undefined)[] | {
        [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
    } | null | undefined)[] | {
        [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
    } | null | undefined)[] | {
        [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
    } | null | undefined)[] | {
        [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
    } | null | undefined)[] | {
        [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
    } | null | undefined)[] | {
        [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
    } | null | undefined>;
} | {
    value: string;
    type: "reference";
    key: string;
};
export declare function mergeElement(state: State, baseElement: Documents.Element, overrideElement: Documents.Element): Documents.Element;
export declare function getIsInBuilder(state: State): boolean;
export declare function getIsPreview(state: State): boolean;
export declare function getBuilderEditMode(state: State): BuilderEditMode.State;
export declare function getBreakpoints(state: State): Breakpoints.State;
export declare function elementTreeMiddleware(): Middleware<Dispatch, State, Dispatch>;
export declare function configureStore({ name, preloadedState, breakpoints, }: {
    name: string;
    preloadedState: Partial<State> | null;
    breakpoints?: Breakpoints.State;
}): import("@reduxjs/toolkit").EnhancedStore<{
    documents: Documents.State;
    elementTrees: ElementTrees.State;
    reactComponents: ReactComponents.State;
    componentsMeta: ComponentsMeta.State;
    propControllers: PropControllers.DescriptorsByComponentType;
    propControllerHandles: PropControllerHandles.State;
    isInBuilder: boolean;
    isPreview: boolean;
    builderEditMode: BuilderEditMode.State;
    breakpoints: Breakpoints.Breakpoints;
}, Action | import("@reduxjs/toolkit").UnknownAction, import("@reduxjs/toolkit").Tuple<[import("@reduxjs/toolkit").StoreEnhancer<{
    dispatch: ThunkDispatch<{
        documents: Documents.State;
        elementTrees: ElementTrees.State;
        reactComponents: ReactComponents.State;
        componentsMeta: ComponentsMeta.State;
        propControllers: PropControllers.DescriptorsByComponentType;
        propControllerHandles: PropControllerHandles.State;
        isInBuilder: boolean;
        isPreview: boolean;
        builderEditMode: BuilderEditMode.State;
        breakpoints: Breakpoints.Breakpoints;
    }, undefined, import("@reduxjs/toolkit").UnknownAction> & Dispatch;
}>, import("@reduxjs/toolkit").StoreEnhancer<import("./mixins/setup-teardown").SetupTeardownMixin>]>>;
export type Store = ReturnType<typeof configureStore>;
//# sourceMappingURL=react-page.d.ts.map