import { RequestStatus } from './types';
/**
 * The homing procedure status is determined by the values of bits 10, 12, and 13 in Statusword 0x6041:
 * - Bit 10: Target reached
 * - Bit 12: Homing attained
 * - Bit 13: Homing error
 *
 * For more details, refer to the homing modes documentation:
 * {@link https://doc.synapticon.com/circulo_safe_motion/sw5.1/motion_control/operation_modes/homing_modes.html}
 */
export declare const homingProcedureStatusMessages: string[];
/**
 * Configuration options for the {@link MotionMasterClient.runHomingProcedure} method.
 * This interface defines the parameters that can be customized for the homing procedure.
 */
export interface HomingProcedureConfig {
    /**
     * The homing method to be used (0x6098:00).
     * This value specifies the technique employed for homing.
     */
    method?: number | null;
    /**
     * The speed during the search for the switch (0x6099:01).
     * This value defines how quickly the system will search for the limit switch during the homing process.
     */
    speedDuringSearchForSwitch?: number | null;
    /**
     * The speed during the search for the zero position (0x6099:02).
     * This value indicates the speed at which the system searches for the zero reference point.
     */
    speedDuringSearchForZero?: number | null;
    /**
     * The acceleration used during the homing procedure (0x609A:00).
     * This value specifies the rate of acceleration applied during the homing process.
     */
    acceleration?: number | null;
}
/**
 * Represents the status of the homing procedure emitted during its execution.
 * This interface captures the current state of the homing process, including the request status,
 * the status code, and a corresponding message that describes the status.
 */
export interface HomingProcedureStatus {
    /**
     * The current request status of the homing procedure (e.g., 'running', 'succeeded', 'failed').
     */
    request: RequestStatus;
    /**
     * The status code representing the current state of the homing procedure.
     */
    status: number;
    /**
     * A descriptive message that provides additional context about the current status.
     */
    statusMessage: string;
    /**
     * The statusword value used to derive the homing status.
     */
    statusword: number;
}
/**
 * Generates a homing procedure status object based on the provided operation status value.
 * The status is evaluated to determine the request status, which can be 'running', 'succeeded', or 'failed'.
 *
 * During a meeting with Saša R., we concluded the following regarding the status codes:
 * - 000: running (Homing is in progress) - The Halt bit is 0, the Homing operation start bit is 1,
 *   and the device is in the Operation Enabled state and Homing mode.
 * - 001: failed (Homing interrupted or not started) - Interruption occurs due to Quick Stop, for example.
 *   Not started refers to the Homing mode being set, but the Homing operation start bit remains 0.
 * - 010: succeeded (Homing confirmed, target not yet reached) - This status occurs when the device restores
 *   the Home Position upon loading the configuration (0x2005:02).
 * - 011: succeeded (Homing completed).
 * - 100: failed (Error detected, motor still turning) - The device does not stop automatically; it must be stopped by the master.
 * - 101: failed (Error during homing, motor at a standstill).
 *
 * @param statusword - The statusword used to determine the homing procedure status.
 * @returns An object that represents the determined status of the homing procedure.
 */
export declare function createHomingProcedureStatus(statusword: number): HomingProcedureStatus;
/**
 * Converts a statusword value to the corresponding homing status number.
 * The homing status is derived from specific bits of the statusword.
 *
 * @param statusword - The statusword from which to extract the homing status.
 * @returns The homing status number, calculated from bits 10, 12 and 13 of the statusword.
 */
export declare function statuswordToHomingStatus(statusword: number): number;
/**
 * Keep up to date with options in ESI file for 0x6098:00 (Homing Method).
 */
export declare const homingMethodParametersMap: {
    [key: string]: [number, number][];
};
