import { A as Action, E as ExtendedState, D as Document, B as BaseDocument, R as Reducer } from './object-23cf2f8a.js';
import * as _acaldas_document_model_graphql_document from '@acaldas/document-model-graphql/document';
import * as scopeFramework from '@acaldas/document-model-graphql/scope-framework';
import { SetRootPathInput, AddElementInput, UpdateElementTypeInput, UpdateElementNameInput, UpdateElementComponentsInput, RemoveElementInput, ReorderElementsInput, MoveElementInput, ScopeFrameworkState } from '@acaldas/document-model-graphql/scope-framework';
import { F as FileInput } from './file-9e4dde68.js';

type SetRootPathAction = Action<'SET_ROOT_PATH', SetRootPathInput>;
type AddElementAction = Action<'ADD_ELEMENT', AddElementInput>;
type UpdateElementTypeAction = Action<'UPDATE_ELEMENT_TYPE', UpdateElementTypeInput>;
type UpdateElementNameAction = Action<'UPDATE_ELEMENT_NAME', UpdateElementNameInput>;
type UpdateElementComponentsAction = Action<'UPDATE_ELEMENT_COMPONENTS', UpdateElementComponentsInput>;
type RemoveElementAction = Action<'REMOVE_ELEMENT', RemoveElementInput>;
type ReorderElementsAction = Action<'REORDER_ELEMENTS', ReorderElementsInput>;
type MoveElementAction = Action<'MOVE_ELEMENT', MoveElementInput>;
type ScopeFrameworkMainAction = SetRootPathAction | AddElementAction | UpdateElementTypeAction | UpdateElementNameAction | UpdateElementComponentsAction | RemoveElementAction | ReorderElementsAction | MoveElementAction;

type ScopeFrameworkAction = ScopeFrameworkMainAction;

type ExtendedScopeFrameworkState = ExtendedState<ScopeFrameworkState>;
type ScopeFrameworkDocument = Document<ScopeFrameworkState, ScopeFrameworkAction>;

declare class ScopeFramework_Main extends BaseDocument<ScopeFrameworkState, ScopeFrameworkAction> {
    setRootPath(input: SetRootPathInput): this;
    addElement(input: AddElementInput): this;
    updateElementType(input: UpdateElementTypeInput): this;
    updateElementName(input: UpdateElementNameInput): this;
    updateElementComponents(input: UpdateElementComponentsInput): this;
    removeElement(input: RemoveElementInput): this;
    reorderElements(input: ReorderElementsInput): this;
    moveElement(input: MoveElementInput): this;
}

interface ScopeFramework$2 extends ScopeFramework_Main {
}
declare class ScopeFramework$2 extends BaseDocument<ScopeFrameworkState, ScopeFrameworkAction> {
    static fileExtension: string;
    constructor(initialState?: ExtendedScopeFrameworkState);
    saveToFile(path: string, name?: string): Promise<string>;
    loadFromFile(path: string): Promise<void>;
    static fromFile(path: string): Promise<ScopeFramework$2>;
}

declare const reducer: Reducer<ScopeFrameworkState, ScopeFrameworkMainAction>;

declare const createEmptyScopeFrameworkState: () => ScopeFrameworkState;
declare const createEmptyExtendedScopeFrameworkState: () => ExtendedScopeFrameworkState;
declare const loadScopeFrameworkFromFile: (path: string) => Promise<Document<ScopeFrameworkState, ScopeFrameworkMainAction>>;
declare const loadScopeFrameworkFromInput: (input: FileInput) => Promise<ScopeFrameworkDocument>;
declare const saveScopeFrameworkToFile: (document: ScopeFrameworkDocument, path: string, name?: string) => Promise<string>;
declare const saveScopeFrameworkToFileHandle: (document: ScopeFrameworkDocument, input: FileSystemFileHandle) => Promise<void>;

declare const ScopeFramework: typeof ScopeFramework$2;
declare const actions: {
    setRootPath: (input: scopeFramework.SetRootPathInput) => SetRootPathAction;
    addElement: (input: scopeFramework.AddElementInput) => AddElementAction;
    updateElementType: (input: scopeFramework.UpdateElementTypeInput) => UpdateElementTypeAction;
    updateElementName: (input: scopeFramework.UpdateElementNameInput) => UpdateElementNameAction;
    updateElementComponents: (input: scopeFramework.UpdateElementComponentsInput) => UpdateElementComponentsAction;
    removeElement: (input: scopeFramework.RemoveElementInput) => RemoveElementAction;
    reorderElements: (input: scopeFramework.ReorderElementsInput) => ReorderElementsAction;
    moveElement: (input: scopeFramework.MoveElementInput) => MoveElementAction;
    setName: (name: string) => _acaldas_document_model_graphql_document.SetNameAction;
    undo: (count?: number) => _acaldas_document_model_graphql_document.UndoAction;
    redo: (count?: number) => _acaldas_document_model_graphql_document.RedoAction;
    prune: (start?: number | undefined, end?: number | undefined) => _acaldas_document_model_graphql_document.PruneAction;
    loadState: (state: Pick<ExtendedState<unknown>, "name" | "state">, operations: number) => _acaldas_document_model_graphql_document.LoadStateAction;
};

type ScopeFramework$1_ExtendedScopeFrameworkState = ExtendedScopeFrameworkState;
declare const ScopeFramework$1_ScopeFramework: typeof ScopeFramework;
type ScopeFramework$1_ScopeFrameworkAction = ScopeFrameworkAction;
declare const ScopeFramework$1_ScopeFrameworkState: typeof ScopeFrameworkState;
declare const ScopeFramework$1_actions: typeof actions;
declare const ScopeFramework$1_createEmptyExtendedScopeFrameworkState: typeof createEmptyExtendedScopeFrameworkState;
declare const ScopeFramework$1_createEmptyScopeFrameworkState: typeof createEmptyScopeFrameworkState;
declare const ScopeFramework$1_loadScopeFrameworkFromFile: typeof loadScopeFrameworkFromFile;
declare const ScopeFramework$1_loadScopeFrameworkFromInput: typeof loadScopeFrameworkFromInput;
declare const ScopeFramework$1_reducer: typeof reducer;
declare const ScopeFramework$1_saveScopeFrameworkToFile: typeof saveScopeFrameworkToFile;
declare const ScopeFramework$1_saveScopeFrameworkToFileHandle: typeof saveScopeFrameworkToFileHandle;
declare namespace ScopeFramework$1 {
  export {
    ScopeFramework$1_ExtendedScopeFrameworkState as ExtendedScopeFrameworkState,
    ScopeFramework$1_ScopeFramework as ScopeFramework,
    ScopeFramework$1_ScopeFrameworkAction as ScopeFrameworkAction,
    ScopeFramework$1_ScopeFrameworkState as ScopeFrameworkState,
    ScopeFramework$1_actions as actions,
    ScopeFramework$1_createEmptyExtendedScopeFrameworkState as createEmptyExtendedScopeFrameworkState,
    ScopeFramework$1_createEmptyScopeFrameworkState as createEmptyScopeFrameworkState,
    ScopeFramework$1_loadScopeFrameworkFromFile as loadScopeFrameworkFromFile,
    ScopeFramework$1_loadScopeFrameworkFromInput as loadScopeFrameworkFromInput,
    ScopeFramework$1_reducer as reducer,
    ScopeFramework$1_saveScopeFrameworkToFile as saveScopeFrameworkToFile,
    ScopeFramework$1_saveScopeFrameworkToFileHandle as saveScopeFrameworkToFileHandle,
    scopeFramework as types,
  };
}

export { ExtendedScopeFrameworkState as E, ScopeFramework$1 as S, actions as a, ScopeFramework as b, ScopeFrameworkAction as c, createEmptyScopeFrameworkState as d, createEmptyExtendedScopeFrameworkState as e, loadScopeFrameworkFromInput as f, saveScopeFrameworkToFileHandle as g, loadScopeFrameworkFromFile as l, reducer as r, saveScopeFrameworkToFile as s };
