import { HardwareDescription } from './hardware-description'; import { MotionMasterMessage } from './types'; /** * Mapping of key configuration register addresses for Circulo Integrated Encoders (e.g., iC-MU, iC-PVL). * * Each entry maps a configuration register's address in EEPROM to its corresponding * address in RAM. This mapping allows read/write access to configuration data via * either persistent storage (EEPROM) or volatile memory (RAM). */ export declare const circuloIntegratedEncoderKeyConfigurationRegisterAddresses: { eeprom: number; ram: number; }[]; /** * I²C device IDs (addresses) used to access specific memory areas and registers * of Circulo Integrated Encoders such as iC-MU and iC-PVL. * * These values are used as the 7-bit device address (plus R/W bit) in I²C transactions, * defining whether the access targets EEPROM or RAM, and whether full or limited access is allowed. * * EEPROM access allows for reading and writing of persistent configuration data, * while iC-PVL access allows interaction with runtime registers. Limited access * typically restricts operations to a subset of available registers. */ export declare enum CirculoIntegratedEncoderI2CDeviceId { /** I²C address for writing to EEPROM memory. */ WRITE_EEPROM = 160, /** I²C address for reading from EEPROM memory. */ READ_EEPROM = 161, /** I²C address for limited write access to iC-PVL registers. */ WRITE_ICPVL_LIMITED = 192, /** I²C address for limited read access to iC-PVL registers. */ READ_ICPVL_LIMITED = 193, /** I²C address for full write access to iC-PVL registers. */ WRITE_ICPVL = 194, /** I²C address for full read access to iC-PVL registers. */ READ_ICPVL = 195 } /** * A key-value object representing the `CirculoIntegratedEncoderI2CDeviceId` enum, * where each key is the string name of an I²C device ID, and each value is its * corresponding numeric address. * * This object is generated by filtering out the reverse mappings from the enum * (numeric keys), leaving only the name-to-value entries for use in things like * dropdowns or selection lists. * * @example * { * READ_EEPROM: 161, * READ_ICPVL: 195 * READ_ICPVL_LIMITED: 193, * WRITE_EEPROM: 160, * WRITE_ICPVL: 194, * WRITE_ICPVL_LIMITED: 192, * } */ export declare const circuloIntegratedEncoderI2CDeviceIdOptions: Record; export declare class CirculoIntegratedEncoderIcmuParameters { static GC_M: { address: number; lsb: number; msb: number; }; static GF_M: { address: number; lsb: number; msb: number; }; static GX_M: { address: number; lsb: number; msb: number; }; static VOSS_M: { address: number; lsb: number; msb: number; }; static VOSC_M: { address: number; lsb: number; msb: number; }; static PH_M: { address: number; lsb: number; msb: number; }; static ENAC: { address: number; lsb: number; msb: number; }; static CIBM: { address: number; lsb: number; msb: number; }; static GC_N: { address: number; lsb: number; msb: number; }; static GF_N: { address: number; lsb: number; msb: number; }; static GX_N: { address: number; lsb: number; msb: number; }; static VOSS_N: { address: number; lsb: number; msb: number; }; static VOSC_N: { address: number; lsb: number; msb: number; }; static PH_N: { address: number; lsb: number; msb: number; }; static MODEB: { address: number; lsb: number; msb: number; }; static MODEA: { address: number; lsb: number; msb: number; }; static CFGEW: { address: number; lsb: number; msb: number; }; static ACC_STAT: { address: number; lsb: number; msb: number; }; static NCHK_CRC: { address: number; lsb: number; msb: number; }; static NCHK_NON: { address: number; lsb: number; msb: number; }; static ACRM_RES: { address: number; lsb: number; msb: number; }; static EMTD: { address: number; lsb: number; msb: number; }; static ESSI_MT: { address: number; lsb: number; msb: number; }; static ROT_MT: { address: number; lsb: number; msb: number; }; static LIN: { address: number; lsb: number; msb: number; }; static FILT: { address: number; lsb: number; msb: number; }; static SPO_MT: { address: number; lsb: number; msb: number; }; static MPC: { address: number; lsb: number; msb: number; }; static GET_MT: { address: number; lsb: number; msb: number; }; static CHK_MT: { address: number; lsb: number; msb: number; }; static SBL_MT: { address: number; lsb: number; msb: number; }; static MODE_MT: { address: number; lsb: number; msb: number; }; static OUT_ZERO: { address: number; lsb: number; msb: number; }; static OUT_MSB: { address: number; lsb: number; msb: number; }; static GSSI: { address: number; lsb: number; msb: number; }; static RSSI: { address: number; lsb: number; msb: number; }; static MODE_ST: { address: number; lsb: number; msb: number; }; static OUT_LSB: { address: number; lsb: number; msb: number; }; static RESABZ: { address: number; lsb: number; msb: number; }; static ROT: { address: number; lsb: number; msb: number; }; static SS_AB: { address: number; lsb: number; msb: number; }; static ENIF_AUTO: { address: number; lsb: number; msb: number; }; static FRQAB: { address: number; lsb: number; msb: number; }; static LENZ: { address: number; lsb: number; msb: number; }; static CHYS_AB: { address: number; lsb: number; msb: number; }; static PP60UVW: { address: number; lsb: number; msb: number; }; static INV_A: { address: number; lsb: number; msb: number; }; static INV_B: { address: number; lsb: number; msb: number; }; static INV_Z: { address: number; lsb: number; msb: number; }; static RPL: { address: number; lsb: number; msb: number; }; static PPUVW: { address: number; lsb: number; msb: number; }; static TEST: { address: number; lsb: number; msb: number; }; static OFF_ABZ_1: { address: number; lsb: number; msb: number; }; static OFF_POS: { address: number; lsb: number; msb: number; }; static OFF_COM: { address: number; lsb: number; msb: number; }; static PA0_CONF: { address: number; lsb: number; msb: number; }; static ACGAIN_M: { address: number; lsb: number; msb: number; }; static AFGAIN_M: { address: number; lsb: number; msb: number; }; static ACGAIN_N: { address: number; lsb: number; msb: number; }; static AFGAIN_N: { address: number; lsb: number; msb: number; }; static BANKSEL: { address: number; lsb: number; msb: number; }; static EDSBANK: { address: number; lsb: number; msb: number; }; static PROFILE_ID: { address: number; lsb: number; msb: number; }; static SERIAL: { address: number; lsb: number; msb: number; }; static OFF_ABZ_2: { address: number; lsb: number; msb: number; }; static OFF_UVW: { address: number; lsb: number; msb: number; }; static PRES_POS: { address: number; lsb: number; msb: number; }; static SPO_0: { address: number; lsb: number; msb: number; }; static SPO_BASE: { address: number; lsb: number; msb: number; }; static SPO_2: { address: number; lsb: number; msb: number; }; static SPO_1: { address: number; lsb: number; msb: number; }; static SPO_4: { address: number; lsb: number; msb: number; }; static SPO_3: { address: number; lsb: number; msb: number; }; static SPO_6: { address: number; lsb: number; msb: number; }; static SPO_5: { address: number; lsb: number; msb: number; }; static SPO_8: { address: number; lsb: number; msb: number; }; static SPO_7: { address: number; lsb: number; msb: number; }; static SPO_10: { address: number; lsb: number; msb: number; }; static SPO_9: { address: number; lsb: number; msb: number; }; static SPO_12: { address: number; lsb: number; msb: number; }; static SPO_11: { address: number; lsb: number; msb: number; }; static SPO_14: { address: number; lsb: number; msb: number; }; static SPO_13: { address: number; lsb: number; msb: number; }; static RPL_RESET: { address: number; lsb: number; msb: number; }; static I2C_DEV_START: { address: number; lsb: number; msb: number; }; static I2C_RAM_START: { address: number; lsb: number; msb: number; }; static I2C_RAM_END: { address: number; lsb: number; msb: number; }; static I2C_DEVID: { address: number; lsb: number; msb: number; }; static I2C_RETRY: { address: number; lsb: number; msb: number; }; static USER_EXCHANGE_REGISTERS_1: { address: number; lsb: number; msb: number; }; static USER_EXCHANGE_REGISTERS_2: { address: number; lsb: number; msb: number; }; static USER_EXCHANGE_REGISTERS_3: { address: number; lsb: number; msb: number; }; static USER_EXCHANGE_REGISTERS_4: { address: number; lsb: number; msb: number; }; static USER_EXCHANGE_REGISTERS_5: { address: number; lsb: number; msb: number; }; static USER_EXCHANGE_REGISTERS_6: { address: number; lsb: number; msb: number; }; static USER_EXCHANGE_REGISTERS_7: { address: number; lsb: number; msb: number; }; static USER_EXCHANGE_REGISTERS_8: { address: number; lsb: number; msb: number; }; static USER_EXCHANGE_REGISTERS_9: { address: number; lsb: number; msb: number; }; static USER_EXCHANGE_REGISTERS_10: { address: number; lsb: number; msb: number; }; static USER_EXCHANGE_REGISTERS_11: { address: number; lsb: number; msb: number; }; static USER_EXCHANGE_REGISTERS_12: { address: number; lsb: number; msb: number; }; static USER_EXCHANGE_REGISTERS_13: { address: number; lsb: number; msb: number; }; static USER_EXCHANGE_REGISTERS_14: { address: number; lsb: number; msb: number; }; static USER_EXCHANGE_REGISTERS_15: { address: number; lsb: number; msb: number; }; static USER_EXCHANGE_REGISTERS_16: { address: number; lsb: number; msb: number; }; static EVENT_COUNT: { address: number; lsb: number; msb: number; }; static HARD_REV: { address: number; lsb: number; msb: number; }; static CMD_MU: { address: number; lsb: number; msb: number; }; static STATUS0: { address: number; lsb: number; msb: number; }; static STATUS1: { address: number; lsb: number; msb: number; }; static DEV_ID: { address: number; lsb: number; msb: number; }; static MFG_ID: { address: number; lsb: number; msb: number; }; } export declare class CirculoIntegratedEncoderIcpvlParameters { static EN_PAR: { address: number; lsb: number; msb: number; }; static EN_ERR: { address: number; lsb: number; msb: number; }; static DIR: { address: number; lsb: number; msb: number; }; static ST_GRAY: { address: number; lsb: number; msb: number; }; static MT_GRAY: { address: number; lsb: number; msb: number; }; static INT_MODE: { address: number; lsb: number; msb: number; }; static OS: { address: number; lsb: number; msb: number; }; static MT_BW: { address: number; lsb: number; msb: number; }; static PCR: { address: number; lsb: number; msb: number; }; static EN_WRN: { address: number; lsb: number; msb: number; }; static BAT_MON: { address: number; lsb: number; msb: number; }; static A_MAX: { address: number; lsb: number; msb: number; }; static IBIAS: { address: number; lsb: number; msb: number; }; static FIXED_ZERO_1: { address: number; lsb: number; msb: number; }; static NOMAG: { address: number; lsb: number; msb: number; }; static ATHR: { address: number; lsb: number; msb: number; }; static ONAX: { address: number; lsb: number; msb: number; }; static POLEWID: { address: number; lsb: number; msb: number; }; static I2C_POS: { address: number; lsb: number; msb: number; }; static PCR_OUT: { address: number; lsb: number; msb: number; }; static SYNC_BW: { address: number; lsb: number; msb: number; }; static BAT_THR: { address: number; lsb: number; msb: number; }; static HYS: { address: number; lsb: number; msb: number; }; static ABQUAD: { address: number; lsb: number; msb: number; }; static CRC_CFG: { address: number; lsb: number; msb: number; }; static MT_COUNT: { address: number; lsb: number; msb: number; }; static CRC_CTR: { address: number; lsb: number; msb: number; }; static FIXED_ZERO_2: { address: number; lsb: number; msb: number; }; static SYNC: { address: number; lsb: number; msb: number; }; static CHIP_REL: { address: number; lsb: number; msb: number; }; static PRESET: { address: number; lsb: number; msb: number; }; static PDR: { address: number; lsb: number; msb: number; }; static BAT_WRN: { address: number; lsb: number; msb: number; }; static BAT_ERR: { address: number; lsb: number; msb: number; }; static POS_ERR: { address: number; lsb: number; msb: number; }; static CTR_ERR: { address: number; lsb: number; msb: number; }; static CFG_ERR: { address: number; lsb: number; msb: number; }; static STUP_ERR: { address: number; lsb: number; msb: number; }; static CMD: { address: number; lsb: number; msb: number; }; static SLEEP_ST: { address: number; lsb: number; msb: number; }; static NOMAG_ST: { address: number; lsb: number; msb: number; }; static ACTIVE_ST: { address: number; lsb: number; msb: number; }; static POWON_ST: { address: number; lsb: number; msb: number; }; static NOMAG_L: { address: number; lsb: number; msb: number; }; static MAG_ERR: { address: number; lsb: number; msb: number; }; static AMPL_ERR: { address: number; lsb: number; msb: number; }; } export declare class CirculoIntegratedEncoderEepromParameters { static GC_M: { address: number; lsb: number; msb: number; }; static GF_M: { address: number; lsb: number; msb: number; }; static GX_M: { address: number; lsb: number; msb: number; }; static VOSS_M: { address: number; lsb: number; msb: number; }; static VOSC_M: { address: number; lsb: number; msb: number; }; static PH_M: { address: number; lsb: number; msb: number; }; static ENAC: { address: number; lsb: number; msb: number; }; static CIBM: { address: number; lsb: number; msb: number; }; static GC_N: { address: number; lsb: number; msb: number; }; static GF_N: { address: number; lsb: number; msb: number; }; static GX_N: { address: number; lsb: number; msb: number; }; static VOSS_N: { address: number; lsb: number; msb: number; }; static VOSC_N: { address: number; lsb: number; msb: number; }; static PH_N: { address: number; lsb: number; msb: number; }; static MODEB: { address: number; lsb: number; msb: number; }; static MODEA: { address: number; lsb: number; msb: number; }; static CFGEW: { address: number; lsb: number; msb: number; }; static ACC_STAT: { address: number; lsb: number; msb: number; }; static NCHK_CRC: { address: number; lsb: number; msb: number; }; static NCHK_NON: { address: number; lsb: number; msb: number; }; static ACRM_RES: { address: number; lsb: number; msb: number; }; static EMTD: { address: number; lsb: number; msb: number; }; static ESSI_MT: { address: number; lsb: number; msb: number; }; static ROT_MT: { address: number; lsb: number; msb: number; }; static LIN: { address: number; lsb: number; msb: number; }; static FILT: { address: number; lsb: number; msb: number; }; static SPO_MT: { address: number; lsb: number; msb: number; }; static MPC: { address: number; lsb: number; msb: number; }; static GET_MT: { address: number; lsb: number; msb: number; }; static CHK_MT: { address: number; lsb: number; msb: number; }; static SBL_MT: { address: number; lsb: number; msb: number; }; static MODE_MT: { address: number; lsb: number; msb: number; }; static OUT_ZERO: { address: number; lsb: number; msb: number; }; static OUT_MSB: { address: number; lsb: number; msb: number; }; static GSSI: { address: number; lsb: number; msb: number; }; static RSSI: { address: number; lsb: number; msb: number; }; static MODE_ST: { address: number; lsb: number; msb: number; }; static OUT_LSB: { address: number; lsb: number; msb: number; }; static RESABZ: { address: number; lsb: number; msb: number; }; static ROT: { address: number; lsb: number; msb: number; }; static SS_AB: { address: number; lsb: number; msb: number; }; static ENIF_AUTO: { address: number; lsb: number; msb: number; }; static FRQAB: { address: number; lsb: number; msb: number; }; static LENZ: { address: number; lsb: number; msb: number; }; static CHYS_AB: { address: number; lsb: number; msb: number; }; static PP60UVW: { address: number; lsb: number; msb: number; }; static INV_A: { address: number; lsb: number; msb: number; }; static INV_B: { address: number; lsb: number; msb: number; }; static INV_Z: { address: number; lsb: number; msb: number; }; static RPL: { address: number; lsb: number; msb: number; }; static PPUVW: { address: number; lsb: number; msb: number; }; static TEST: { address: number; lsb: number; msb: number; }; static SPO_0: { address: number; lsb: number; msb: number; }; static SPO_BASE: { address: number; lsb: number; msb: number; }; static SPO_2: { address: number; lsb: number; msb: number; }; static SPO_1: { address: number; lsb: number; msb: number; }; static SPO_4: { address: number; lsb: number; msb: number; }; static SPO_3: { address: number; lsb: number; msb: number; }; static SPO_6: { address: number; lsb: number; msb: number; }; static SPO_5: { address: number; lsb: number; msb: number; }; static SPO_8: { address: number; lsb: number; msb: number; }; static SPO_7: { address: number; lsb: number; msb: number; }; static SPO_10: { address: number; lsb: number; msb: number; }; static SPO_9: { address: number; lsb: number; msb: number; }; static SPO_12: { address: number; lsb: number; msb: number; }; static SPO_11: { address: number; lsb: number; msb: number; }; static SPO_14: { address: number; lsb: number; msb: number; }; static SPO_13: { address: number; lsb: number; msb: number; }; static CRC16: { address: number; lsb: number; msb: number; }; static OFF_ABZ: { address: number; lsb: number; msb: number; }; static OFF_UVW: { address: number; lsb: number; msb: number; }; static PRES_POS: { address: number; lsb: number; msb: number; }; static CRC8: { address: number; lsb: number; msb: number; }; static PA0_CONF: { address: number; lsb: number; msb: number; }; static EDSBANK: { address: number; lsb: number; msb: number; }; static PROFILE_ID: { address: number; lsb: number; msb: number; }; static SERIAL: { address: number; lsb: number; msb: number; }; static DEV_ID: { address: number; lsb: number; msb: number; }; static MFG_ID: { address: number; lsb: number; msb: number; }; static EN_PAR: { address: number; lsb: number; msb: number; }; static EN_ERR: { address: number; lsb: number; msb: number; }; static DIR: { address: number; lsb: number; msb: number; }; static ST_GRAY: { address: number; lsb: number; msb: number; }; static MT_GRAY: { address: number; lsb: number; msb: number; }; static INT_MODE: { address: number; lsb: number; msb: number; }; static OS: { address: number; lsb: number; msb: number; }; static MT_BW: { address: number; lsb: number; msb: number; }; static PCR: { address: number; lsb: number; msb: number; }; static EN_WRN: { address: number; lsb: number; msb: number; }; static BAT_MON: { address: number; lsb: number; msb: number; }; static A_MAX: { address: number; lsb: number; msb: number; }; static IBIAS: { address: number; lsb: number; msb: number; }; static FIXED_ZERO_1: { address: number; lsb: number; msb: number; }; static NOMAG: { address: number; lsb: number; msb: number; }; static ATHR: { address: number; lsb: number; msb: number; }; static ONAX: { address: number; lsb: number; msb: number; }; static POLEWID: { address: number; lsb: number; msb: number; }; static I2C_POS: { address: number; lsb: number; msb: number; }; static PCR_OUT: { address: number; lsb: number; msb: number; }; static SYNC_BW: { address: number; lsb: number; msb: number; }; static BAT_THR: { address: number; lsb: number; msb: number; }; static HYS: { address: number; lsb: number; msb: number; }; static ABQUAD: { address: number; lsb: number; msb: number; }; static CRC_CFG: { address: number; lsb: number; msb: number; }; static MT_PREL: { address: number; lsb: number; msb: number; }; static CRC_CTR: { address: number; lsb: number; msb: number; }; } /** * Commands for the iC-MU encoder's `CMD_MU` register (address 0x75). * * These command codes control various internal operations of the iC-MU encoder, * such as memory writes, resets, communication settings, and maintenance counters. */ export declare class CirculoIntegratedEncoderIcmuCommands { /** Write all configuration settings to EEPROM. */ static WRITE_ALL: number; /** Disable EEPROM write access. */ static WRITE_OFF: number; /** Reset absolute position data. */ static ABS_RESET: number; /** Start non-volatile memory verification. */ static NON_VER: number; /** Reset multiturn counter. */ static MT_RESET: number; /** Verify multiturn counter value. */ static MT_VER: number; /** Perform a software reset of the device. */ static SOFT_RESET: number; /** Perform a software presence check. */ static SOFT_PRES: number; /** Perform a software + EEPROM presence check. */ static SOFT_E2P_PRES: number; /** Set or test I²C communication path. */ static I2C_COM: number; /** Trigger an event counter update. */ static EVENT_COUNT: number; /** Toggle or test switch functionality. */ static SWITCH: number; /** Verify stored CRC against calculated CRC. */ static CRC_VER: number; /** Trigger CRC calculation. */ static CRC_CALC: number; /** Set multiturn counter (manual value assignment). */ static SET_MTC: number; /** Reset multiturn counter to zero. */ static RES_MTC: number; } /** * Commands for the iC-PVL encoder's `CMD` register (address 0x11). * * These command values are written to the `CMD` register to control * the behavior of the encoder, including reset, sleep mode, and clearing status. */ export declare class CirculoIntegratedEncoderIcpvlCommands { /** Perform a software reset of the device. */ static RESET: number; /** Reboot the device, similar to power cycling. */ static REBOOT: number; /** Enable sleep mode to reduce power consumption. */ static SLEEP_ENABLE: number; /** Clear internal status flags or errors (software clear). */ static SCLR: number; /** Disable sleep mode and resume normal operation. */ static SLEEP_DISABLE: number; } /** * Returns a color representing the encoder calibration quality for Circulo devices. * * The color is determined by the maximum-value percentage: * * - `50–100%`: **Green** (`#6ba853`) — robust calibration * - `20–50%`: **Yellow** (`#aeb303`) — acceptable, small displacements tolerated * - `0–20%`: **Orange** (`#e69138`) — weak, avoid mechanical displacement * - `≤ 0%`: **Red** (`#fb262e`) — invalid calibration, phase error too high * * @param percentage - The maximum-value percentage obtained from encoder calibration. * @returns A hex color string representing the calibration quality, or an empty string if out of range. */ export declare function getCirculoEncoderCalibrationMaxValuePercentageColor(percentage: number): "" | "#6ba853" | "#aeb303" | "#e69138" | "#fb262e"; /** * Returns a descriptive label explaining the quality of the encoder calibration * based on the maximum-value percentage for Circulo devices. * * The label communicates how robust the calibration is with respect to mechanical * displacement and thermal expansion: * * - `50–100%`: Robust against displacement and temperature changes * - `20–50%`: Robust to small mechanical or thermal variations * - `0–20%`: Calibration succeeded but sensitive; avoid displacement * - `≤ 0%`: Calibration failed; phase error too high * * @param percentage - The maximum-value percentage obtained from encoder calibration. * @returns A human-readable label describing calibration quality, or an empty string if out of range. */ export declare function getCirculoEncoderCalibrationMaxValuePercentageLabel(percentage: number): "" | "Calibration was successful. Encoder system is robust to mechanical displacements and temperature expansions." | "Calibration was successful. Encoder system is robust to small mechanical displacements and temperature expansions." | "Calibration was successful. Mechanical displacement and temperature expansions should be avoided." | "Phase error is too high. The absolute position can't be computed reliably. Adjust mechanical position and repeat calibration."; /** * External Circulo encoder types accepted by the Circulo encoder narrow angle calibration procedure. * * The values mirror the enum the Motion Master proto file keeps commented out. They name the * magnetic ring of a Circulo mounted on another drive; an integrated ring is left at * {@link CirculoExternalEncoderType.NONE}. */ export declare enum CirculoExternalEncoderType { NONE = 0, C7_INNER = 1, C7_OUTER = 2, C9_INNER = 3, C9_OUTER = 4 } /** Max permissible phase error of a Circulo 7 magnetic ring, in encoder increments. */ export declare const circulo7MaxPermissiblePhaseError = 256; /** Max permissible phase error of a Circulo 9 magnetic ring, in encoder increments. */ export declare const circulo9MaxPermissiblePhaseError = 128; /** * Returns the max permissible phase error of the ring a calibration measures, derived from the product, in * encoder increments. * * Motion Master 5.8.3 and later report the limit of the measured ring in every calibration progress status. * This function is the fallback for an older Motion Master, which reports none. It only knows two rings: a * Circulo 7 ring tolerates 256 increments and a Circulo 9 ring 128. Any other ring gets 128, which may not * be its limit. * * An external encoder type names the ring outright, so it wins over the product: that ring sits on a * drive of an unrelated size. Everything else is answered by the product group of the device itself, * which leaves a Circulo 9, a Circulo NG and an unrecognised product on 128. * * @param productId - The device carrying the encoder: a product id, a serial number or a `HardwareDescription` * @param externalEncoderType - The external ring the procedure was asked to calibrate, if any * @returns The max permissible phase error in encoder increments */ export declare function getCirculoEncoderMaxPermissiblePhaseError(productId?: number | string | HardwareDescription | null, externalEncoderType?: CirculoExternalEncoderType | number): number; /** * Result of Circulo encoder calibration computation. */ export interface CirculoEncoderCalibrationResult { /** Paired data points: [position, phaseError] */ data: number[][]; /** Maximum-value percentage indicating calibration quality (0–100) */ value: number; /** Human-readable meaning of the calibration percentage */ meaning: string; /** Max permissible phase error the percentage was computed against, in encoder increments */ maxPermissiblePhaseError: number; } /** * Computes the Circulo encoder calibration result from position and phaseError arrays. * * Handles empty or mismatched inputs gracefully by returning null. * * @param position - Array of encoder positions * @param phaseError - Array of corresponding phase errors * @param maxPermissiblePhaseError - Max permissible phase error of the measured ring, in encoder increments. * The percentage is the measured phase error expressed against this limit, so the limit of another ring * misreports the quality: a Circulo 9 ring scored against the Circulo 7 limit reads roughly twice the * headroom it has. The limit comes back in the result. * @returns Calibration result or null if inputs are invalid or empty */ export declare function computeCirculoEncoderCalibrationResult(position: number[] | undefined, phaseError: number[] | undefined, maxPermissiblePhaseError: number): CirculoEncoderCalibrationResult | null; /** * Computes the Circulo encoder calibration result of one calibration iteration. * * The result is scored against the limit the progress status carries. Motion Master 5.8.3 and later report * it, and `startCirculoEncoderNarrowAngleCalibrationProcedure` fills it in for an older Motion Master. This * is the limit OBLAC Drives scores against, so both show the same percentage. * * @param progress - Progress of a Circulo encoder narrow angle calibration status * @returns Calibration result, or null if the progress carries no data or no limit */ export declare function computeCirculoEncoderCalibrationProgressResult(progress?: MotionMasterMessage.Status.CirculoEncoderNarrowAngleCalibrationProcedure.IProgress | null): CirculoEncoderCalibrationResult | null;