/// <reference types="node" />
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;
