/// export interface SiiCategoryGeneral { groupIdx: number; imgIdx: number; orderIdx: number; nameIdx: number; coeDetails: number; foeDetails: number; eoeDetails: number; soeChannels: number; ds402Channels: number; sysmanClass: number; flags: number; currentOnEBus: number; physicalPort: number; physicalMemoryAddress: number; } export interface SiiCategorySyncManagerElement { physicalStartAddress: number; length: number; controlRegister: number; statusRegister: number; enableSyncManager: number; syncManagerType: number; } export interface SiiCategoryPdoEntryElement { entryIndex: number; subindex: number; entryNameIdx: number; dataType: number; bitLen: number; flags: number; } export interface SiiCategoryPdoElement { pdoIndex: number; nEntry: number; syncM: number; synchronization: number; nameIdx: number; flags: number; entries: SiiCategoryPdoEntryElement[]; } export interface SiiCategoryDistributedClockElement { cycleTime0: number; shiftTime0: number; shiftTime1: number; sync1CycleFactor: number; assignActivate: number; sync0CycleFactor: number; nameIdx: number; descIdx: number; } export interface SlaveInformationInterface { info: { pdiControl: number; pdiConfiguration: number; syncImpulseLen: number; pdiConfiguration2: number; configuredStationAlias: number; checksum: number; vendorId: number; productCode: number; revisionNumber: number; serialNumber: number; bootstrapReceiveMailboxOffset: number; bootstrapReceiveMailboxSize: number; bootstrapSendMailboxOffset: number; bootstrapSendMailboxSize: number; standardReceiveMailboxOffset: number; standardReceiveMailboxSize: number; standardSendMailboxOffset: number; standardSendMailboxSize: number; mailboxProtocol: number; size: number; version: number; }; category: { strings: string[]; general: SiiCategoryGeneral; fmmus: number[]; syncManagers: SiiCategorySyncManagerElement[]; rxPdos: SiiCategoryPdoElement[]; txPdos: SiiCategoryPdoElement[]; distributedClocks: SiiCategoryDistributedClockElement[]; }; } export declare enum SiiCategoryType { NOP = 0, DEVICE_SPECIFIC = 1, STRINGS = 10, DATA_TYPES = 20, GENERAL = 30, FMMU = 40, SYNC_M = 41, FMMUX = 42, SYNC_UNIT = 43, TXPDO = 50, RXPDO = 51, DC = 60, TIMEOUTS = 70, DICTIONARY = 80, HARDWARE = 90, VENDOR_INFORMATION = 100, IMAGES = 110, VENDOR_SPECIFIC = 2048, APPLICATION_SPECIFIC = 8192, END = 65535 } /** * Resolve a raw SII category type value into a normalized {@link SiiCategoryType}. * * @param value Raw 16-bit category type value from SII. * @returns Resolved category type, or `undefined` if not recognized. * * @remarks * - The SII specification defines both fixed category IDs and value ranges: * * **Mapped ranges:** * - 0x0001–0x0009 → DEVICE_SPECIFIC * - 0x0800–0x1FFF → VENDOR_SPECIFIC * - 0x2000–0x2FFF → APPLICATION_SPECIFIC * - 0x3000–0xFFFE → VENDOR_SPECIFIC * * - For values outside these ranges, a direct enum lookup is attempted: * - Matches known categories such as STRINGS, GENERAL, FMMU, etc. * * - The END marker (0xFFFF) is handled via direct enum lookup. * * @note * - Range-based values are normalized to a single enum representative * (e.g. all vendor-specific values map to `VENDOR_SPECIFIC`). * - The original numeric value is not preserved. * - Unknown values return `undefined` and should be treated as unsupported categories. */ export declare function resolveSiiCategoryType(value: number): SiiCategoryType | undefined; /** * Parse a raw EtherCAT Slave Information Interface (SII) EEPROM buffer. * * @param buffer Full SII EEPROM content. * @returns Parsed {@link SlaveInformationInterface}. * * @remarks * The SII structure consists of: * * 1. **Fixed header (first 128 bytes)** * Parsed using: * `@HHHHH4xHLLLL8xHHHHHHHHH66xHHHH` * * Contains: * - PDI configuration and control * - Vendor/product identification * - Mailbox configuration * - EEPROM size and version * * 2. **Category section (starting at offset 128)** * A sequence of variable-length categories: * * Category layout: * - uint16 categoryType * - uint16 categoryWordSize (number of 16-bit words) * - payload (categoryWordSize * 2 bytes) * * Parsing continues sequentially until: * - Category type `0xFFFF` (END), or * - Category type resolves to {@link SiiCategoryType.NOP} * * - Recognized categories are dispatched to dedicated parsers: * - STRINGS → {@link parseSiiCategoryStrings} * - GENERAL → {@link parseSiiCategoryGeneral} * - FMMU → {@link parseSiiCategoryFmmu} * - SYNC_M → {@link parseSiiCategorySyncManager} * - RXPDO / TXPDO → {@link parseSiiCategoryPdo} * - DC → {@link parseSiiCategoryDc} * * - Multiple PDO categories are supported and accumulated. * * @note * - Unrecognized categories are skipped. * - No validation is performed for: * - Buffer size correctness * - Category alignment or integrity * - Semantic correctness of parsed values * * - String indices in parsed structures refer to entries from the STRINGS category. * * - This function assumes little-endian layout and native alignment as used by `python-struct`. */ export declare function parseSiiBuffer(buffer: Buffer): SlaveInformationInterface;