import type { InitializeGraphStateParams } from "./initialize-graph-state";
import type { InteractionMode } from "../types";
import type { Interval, vec } from "mafs";
export type InteractiveGraphAction = Reinitialize | MovePointInFigure | MoveLine | MoveAll | MovePoint | MoveCenter | MoveRadiusPoint | ChangeSnapStep | ChangeRange | AddPoint | RemovePoint | FocusPoint | BlurPoint | DeleteIntent | ClickPoint | ClosePolygon | OpenPolygon | ChangeInteractionMode | ChangeKeyboardInvitationVisibility;
export declare const actions: {
    global: {
        deleteIntent: typeof deleteIntent;
        changeInteractionMode: typeof changeInteractionMode;
        changeKeyboardInvitationVisibility: typeof changeKeyboardInvitationVisibility;
    };
    angle: {
        movePoint: typeof movePoint;
    };
    circle: {
        moveCenter: typeof moveCenter;
        moveRadiusPoint: typeof moveRadiusPoint;
    };
    linear: {
        moveLine: (newStart: vec.Vector2) => MoveLine;
        movePoint: (pointIndex: any, destination: any) => MovePointInFigure;
    };
    linearSystem: {
        moveLine: typeof moveLine;
        movePointInFigure: typeof movePointInFigure;
    };
    pointGraph: {
        movePoint: typeof movePoint;
        addPoint: typeof addPoint;
        removePoint: typeof removePoint;
        focusPoint: typeof focusPoint;
        blurPoint: typeof blurPoint;
        clickPoint: typeof clickPoint;
    };
    polygon: {
        movePoint: typeof movePoint;
        moveAll: typeof moveAll;
        addPoint: typeof addPoint;
        removePoint: typeof removePoint;
        focusPoint: typeof focusPoint;
        blurPoint: typeof blurPoint;
        clickPoint: typeof clickPoint;
        closePolygon: typeof closePolygon;
        openPolygon: typeof openPolygon;
    };
    quadratic: {
        movePoint: typeof movePoint;
    };
    ray: {
        moveRay: (newStart: vec.Vector2) => MoveLine;
        movePoint: (pointIndex: any, destination: any) => MovePointInFigure;
    };
    segment: {
        movePointInFigure: typeof movePointInFigure;
        moveLine: typeof moveLine;
    };
    sinusoid: {
        movePoint: typeof movePoint;
    };
    exponential: {
        movePoint: typeof movePoint;
        moveCenter: typeof moveCenter;
    };
    logarithm: {
        movePoint: typeof movePoint;
        moveCenter: typeof moveCenter;
    };
    absoluteValue: {
        movePoint: typeof movePoint;
    };
    tangent: {
        movePoint: typeof movePoint;
    };
    vector: {
        moveTip: (destination: vec.Vector2) => MovePointInFigure;
        moveVector: (newStart: vec.Vector2) => MoveLine;
    };
};
export declare const DELETE_INTENT = "delete-intent";
export interface DeleteIntent {
    type: typeof DELETE_INTENT;
}
declare function deleteIntent(): DeleteIntent;
export declare const MOVE_LINE = "move-line";
export interface MoveLine {
    type: typeof MOVE_LINE;
    itemIndex: number;
    newStart: vec.Vector2;
}
declare function moveLine(itemIndex: number, newStart: vec.Vector2): MoveLine;
export declare const ADD_POINT = "add-point";
export interface AddPoint {
    type: typeof ADD_POINT;
    location: vec.Vector2;
}
declare function addPoint(location: vec.Vector2): AddPoint;
export declare const REMOVE_POINT = "remove-point";
export interface RemovePoint {
    type: typeof REMOVE_POINT;
    index: number;
}
declare function removePoint(index: number): RemovePoint;
export declare const FOCUS_POINT = "focus-point";
export interface FocusPoint {
    type: typeof FOCUS_POINT;
    index: number;
}
declare function focusPoint(index: number): FocusPoint;
export declare const BLUR_POINT = "blur-point";
export interface BlurPoint {
    type: typeof BLUR_POINT;
}
declare function blurPoint(): BlurPoint;
export declare const CLICK_POINT = "click-point";
export interface ClickPoint {
    type: typeof CLICK_POINT;
    index: number;
}
declare function clickPoint(index: number): ClickPoint;
export declare const CHANGE_INTERACTION_MODE = "point-change-interaction-mode";
export interface ChangeInteractionMode {
    type: typeof CHANGE_INTERACTION_MODE;
    mode: InteractionMode;
}
declare function changeInteractionMode(mode: InteractionMode): ChangeInteractionMode;
export declare const CHANGE_KEYBOARD_INVITATION_VISIBILITY = "change-keyboard-interaction-invitation-visibility";
export interface ChangeKeyboardInvitationVisibility {
    type: typeof CHANGE_KEYBOARD_INVITATION_VISIBILITY;
    shouldShow: boolean;
}
declare function changeKeyboardInvitationVisibility(shouldShow: boolean): ChangeKeyboardInvitationVisibility;
export declare const CLOSE_POLYGON = "close-polygon";
interface ClosePolygon {
    type: typeof CLOSE_POLYGON;
}
declare function closePolygon(): ClosePolygon;
export declare const OPEN_POLYGON = "open-polygon";
interface OpenPolygon {
    type: typeof OPEN_POLYGON;
}
declare function openPolygon(): OpenPolygon;
export declare const MOVE_ALL = "move-all";
export interface MoveAll {
    type: typeof MOVE_ALL;
    newStart: vec.Vector2;
}
declare function moveAll(newStart: vec.Vector2): MoveAll;
export declare const MOVE_POINT = "move-point";
export interface MovePoint {
    type: typeof MOVE_POINT;
    index: number;
    destination: vec.Vector2;
}
declare function movePoint(index: number, destination: vec.Vector2): MovePoint;
export declare const MOVE_POINT_IN_FIGURE = "move-point-in-figure";
export interface MovePointInFigure {
    type: typeof MOVE_POINT_IN_FIGURE;
    figureIndex: number;
    pointIndex: number;
    destination: vec.Vector2;
}
declare function movePointInFigure(figureIndex: number, pointIndex: number, destination: vec.Vector2): MovePointInFigure;
export declare const MOVE_CENTER = "move-center";
export interface MoveCenter {
    type: typeof MOVE_CENTER;
    destination: vec.Vector2;
}
declare function moveCenter(destination: vec.Vector2): MoveCenter;
export declare const MOVE_RADIUS_POINT = "MOVE_RADIUS_POINT";
export interface MoveRadiusPoint {
    type: typeof MOVE_RADIUS_POINT;
    destination: vec.Vector2;
}
declare function moveRadiusPoint(destination: vec.Vector2): MoveRadiusPoint;
export declare const CHANGE_SNAP_STEP = "change-snap-step";
export interface ChangeSnapStep {
    type: typeof CHANGE_SNAP_STEP;
    snapStep: [x: number, y: number];
}
export declare function changeSnapStep(snapStep: [x: number, y: number]): ChangeSnapStep;
export declare const CHANGE_RANGE = "change-range";
export interface ChangeRange {
    type: typeof CHANGE_RANGE;
    range: [x: Interval, y: Interval];
}
export declare function changeRange(range: [x: Interval, y: Interval]): ChangeRange;
export declare const REINITIALIZE = "reinitialize";
interface Reinitialize {
    type: typeof REINITIALIZE;
    params: InitializeGraphStateParams;
}
export declare function reinitialize(params: InitializeGraphStateParams): Reinitialize;
export {};
