import { type Operation } from 'ot-json0';
import { type PropControllerMessage } from '../prop-controllers/instances';
import { type APIResource, APIResourceLocale } from '../api/types';
import { BuilderEditMode } from './modules/builder-edit-mode';
import { type Point } from './modules/pointer';
import { type SharedAction } from './shared-api';
export declare const HostActionTypes: {
    readonly INIT: "INIT";
    readonly CLEAN_UP: "CLEAN_UP";
    readonly CHANGE_DOCUMENT: "CHANGE_DOCUMENT";
    readonly CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP: "CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP";
    readonly SCROLL_DOCUMENT_ELEMENT: "SCROLL_DOCUMENT_ELEMENT";
    readonly MESSAGE_HOST_PROP_CONTROLLER: "MESSAGE_HOST_PROP_CONTROLLER";
    readonly CHANGE_API_RESOURCE: "CHANGE_API_RESOURCE";
    readonly EVICT_API_RESOURCE: "EVICT_API_RESOURCE";
    readonly SET_BUILDER_EDIT_MODE: "SET_BUILDER_EDIT_MODE";
    readonly SET_LOCALIZED_RESOURCE_ID: "SET_LOCALIZED_RESOURCE_ID";
    readonly BUILDER_POINTER_MOVE: "BUILDER_POINTER_MOVE";
    readonly MAKESWIFT_CONNECTION_INIT: "MAKESWIFT_CONNECTION_INIT";
    readonly REGISTER_DOCUMENT: "REGISTER_DOCUMENT";
    readonly UNREGISTER_DOCUMENT: "UNREGISTER_DOCUMENT";
    readonly SET_BREAKPOINTS: "SET_BREAKPOINTS";
    readonly SET_LOCALE: "SET_LOCALE";
};
type InitAction = {
    type: typeof HostActionTypes.INIT;
};
type CleanUpAction = {
    type: typeof HostActionTypes.CLEAN_UP;
};
type ChangeDocumentAction = {
    type: typeof HostActionTypes.CHANGE_DOCUMENT;
    payload: {
        documentKey: string;
        operation: Operation;
    };
};
type ChangeDocumentElementScrollTopAction = {
    type: typeof HostActionTypes.CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP;
    payload: {
        scrollTop: number;
    };
};
type ScrollDocumentElementAction = {
    type: typeof HostActionTypes.SCROLL_DOCUMENT_ELEMENT;
    payload: {
        scrollTopDelta: number;
    };
};
type MessageHostPropControllerAction<T = PropControllerMessage> = {
    type: typeof HostActionTypes.MESSAGE_HOST_PROP_CONTROLLER;
    payload: {
        documentKey: string;
        elementKey: string;
        propName: string;
        message: T;
    };
};
type ChangeAPIResourceAction = {
    type: typeof HostActionTypes.CHANGE_API_RESOURCE;
    payload: {
        resource: APIResource;
        locale?: string | null;
    };
};
type EvictAPIResourceAction = {
    type: typeof HostActionTypes.EVICT_API_RESOURCE;
    payload: {
        id: string;
        locale?: string | null;
    };
};
type SetBuilderEditModeAction = {
    type: typeof HostActionTypes.SET_BUILDER_EDIT_MODE;
    payload: {
        editMode: BuilderEditMode;
    };
};
type SetLocalizedResourceIdAction = {
    type: typeof HostActionTypes.SET_LOCALIZED_RESOURCE_ID;
    payload: {
        locale?: string;
        resourceId: string;
        localizedResourceId: string | null;
    };
};
type BuilderPointerMoveAction = {
    type: typeof HostActionTypes.BUILDER_POINTER_MOVE;
    payload: {
        pointer: Point | null;
    };
};
export type HostAction = SharedAction | InitAction | CleanUpAction | ChangeDocumentAction | ChangeDocumentElementScrollTopAction | ScrollDocumentElementAction | MessageHostPropControllerAction | ChangeAPIResourceAction | EvictAPIResourceAction | SetBuilderEditModeAction | SetLocalizedResourceIdAction | BuilderPointerMoveAction;
export declare function init(): InitAction;
export declare function cleanUp(): CleanUpAction;
export declare function changeDocument(documentKey: string, operation: Operation): ChangeDocumentAction;
export declare function changeDocumentElementScrollTop(scrollTop: number): ChangeDocumentElementScrollTopAction;
export declare function scrollDocumentElement(scrollTopDelta: number): ScrollDocumentElementAction;
export declare function messageHostPropController<T>(documentKey: string, elementKey: string, propName: string, message: T): MessageHostPropControllerAction<T>;
export declare function changeApiResource<R extends APIResource>(resource: R, locale?: APIResourceLocale<R>): ChangeAPIResourceAction;
export declare function evictApiResource(id: string, locale?: string | null): EvictAPIResourceAction;
export declare function setBuilderEditMode(editMode: BuilderEditMode): SetBuilderEditModeAction;
export declare function setLocalizedResourceId({ resourceId, localizedResourceId, locale, }: {
    resourceId: string;
    localizedResourceId: string | null;
    locale?: string;
}): SetLocalizedResourceIdAction;
export declare function builderPointerMove(pointer: Point | null): BuilderPointerMoveAction;
export declare function isHostAction(action: unknown): action is HostAction;
export {};
//# sourceMappingURL=host-api.d.ts.map