import type { ControllerInstance, MotionGroupPhysical, MotionGroupSpecification, MotionGroupStateResponse, Mounting, RobotControllerState, RobotTcp, SafetySetup } from "@wandelbots/nova-api/v1";
import * as THREE from "three";
import type { AutoReconnectingWebsocket } from "../AutoReconnectingWebsocket";
import type { NovaClient } from "./NovaClient";
export type MotionGroupOption = {
    selectionId: string;
} & MotionGroupPhysical;
/**
 * Store representing the current state of a connected motion group.
 */
export declare class ConnectedMotionGroup {
    readonly nova: NovaClient;
    readonly controller: ControllerInstance;
    readonly motionGroup: MotionGroupPhysical;
    readonly initialMotionState: MotionGroupStateResponse;
    readonly motionStateSocket: AutoReconnectingWebsocket;
    readonly isVirtual: boolean;
    readonly tcps: RobotTcp[];
    readonly motionGroupSpecification: MotionGroupSpecification;
    readonly safetySetup: SafetySetup;
    readonly mounting: Mounting | null;
    readonly initialControllerState: RobotControllerState;
    readonly controllerStateSocket: AutoReconnectingWebsocket;
    static connect(nova: NovaClient, motionGroupId: string, controllers: ControllerInstance[]): Promise<ConnectedMotionGroup>;
    connectedJoggingCartesianSocket: WebSocket | null;
    connectedJoggingJointsSocket: WebSocket | null;
    planData: any | null;
    joggingVelocity: number;
    rapidlyChangingMotionState: MotionGroupStateResponse;
    controllerState: RobotControllerState;
    /**
     * Reflects activation state of the motion group / robot servos. The
     * movement controls in the UI should only be enabled in the "active" state
     */
    activationState: "inactive" | "activating" | "deactivating" | "active";
    constructor(nova: NovaClient, controller: ControllerInstance, motionGroup: MotionGroupPhysical, initialMotionState: MotionGroupStateResponse, motionStateSocket: AutoReconnectingWebsocket, isVirtual: boolean, tcps: RobotTcp[], motionGroupSpecification: MotionGroupSpecification, safetySetup: SafetySetup, mounting: Mounting | null, initialControllerState: RobotControllerState, controllerStateSocket: AutoReconnectingWebsocket);
    get motionGroupId(): string;
    get controllerId(): string;
    get modelFromController(): string | undefined;
    get wandelscriptIdentifier(): string;
    /** Jogging velocity in radians for rotation and joint movement */
    get joggingVelocityRads(): number;
    get joints(): {
        index: number;
    }[];
    get dhParameters(): import("@wandelbots/nova-api/v1").DHParameter[] | undefined;
    get safetyZones(): import("@wandelbots/nova-api/v1").SafetySetupSafetyZone[] | undefined;
    /** Gets the robot mounting position offset in 3D viz coordinates */
    get mountingPosition(): [number, number, number];
    /** Gets the robot mounting position rotation in 3D viz coordinates */
    get mountingQuaternion(): THREE.Quaternion;
    /**
     * Whether the controller is currently in a safety state
     * corresponding to an emergency stop
     */
    get isEstopActive(): boolean;
    /**
     * Whether the controller is in a safety state
     * that may be non-functional for robot pad purposes
     */
    get isMoveableSafetyState(): boolean;
    /**
     * Whether the controller is in an operation mode that allows movement
     */
    get isMoveableOperationMode(): boolean;
    /**
     * Whether the robot is currently active and can be moved, based on the
     * safety state, operation mode and servo toggle activation state.
     */
    get canBeMoved(): boolean;
    deactivate(): Promise<void>;
    activate(): Promise<void>;
    toggleActivation(): void;
    dispose(): void;
    setJoggingVelocity(velocity: number): void;
}
//# sourceMappingURL=ConnectedMotionGroup.d.ts.map