import { type AutoReconnectingWebsocket } from "@wandelbots/nova-js";
import type { MotionGroupDescription, MotionGroupState, NovaClient, RobotControllerState } from "@wandelbots/nova-js/v2";
import * as THREE from "three";
import type { Vector3Simple } from "./JoggerConnection";
export type RobotTcpLike = {
    id: string;
    readable_name: string;
    position: Vector3Simple;
    orientation: Vector3Simple;
};
export type MotionGroupOption = {
    selectionId: string;
};
/**
 * Store representing the current state of a connected motion group.
 * API v2 version, not used yet in the components.
 */
export declare class ConnectedMotionGroup {
    readonly nova: NovaClient;
    readonly controller: RobotControllerState;
    readonly motionGroup: MotionGroupState;
    readonly initialMotionState: MotionGroupState;
    readonly motionStateSocket: AutoReconnectingWebsocket;
    readonly isVirtual: boolean;
    readonly tcps: RobotTcpLike[];
    readonly description: MotionGroupDescription;
    readonly initialControllerState: RobotControllerState;
    readonly controllerStateSocket: AutoReconnectingWebsocket;
    static connectMultiple(nova: NovaClient, motionGroupIds: string[]): Promise<ConnectedMotionGroup[]>;
    static connect(nova: NovaClient, motionGroupId: string): Promise<ConnectedMotionGroup>;
    connectedJoggingSocket: WebSocket | null;
    planData: any | null;
    joggingVelocity: number;
    rapidlyChangingMotionState: MotionGroupState;
    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: RobotControllerState, motionGroup: MotionGroupState, initialMotionState: MotionGroupState, motionStateSocket: AutoReconnectingWebsocket, isVirtual: boolean, tcps: RobotTcpLike[], description: MotionGroupDescription, initialControllerState: RobotControllerState, controllerStateSocket: AutoReconnectingWebsocket);
    get motionGroupId(): string;
    get controllerId(): string;
    get modelFromController(): string;
    get wandelscriptIdentifier(): string;
    /** Jogging velocity in radians for rotation and joint movement */
    get joggingVelocityRads(): number;
    get joints(): {
        index: number;
    }[];
    get dhParameters(): {
        alpha?: number;
        theta?: number;
        a?: number;
        d?: number;
        reverse_rotation_direction?: boolean;
    }[] | undefined;
    get safetyZones(): {
        [key: string]: import("@wandelbots/nova-api/v2").Collider;
    } | 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