/**
 * Cluster State Types
 *
 * TypeScript interfaces for Matter cluster state objects.
 * These are used in behavior files to avoid repeated 'as any' casts.
 *
 * Types are derived from @matter/main/clusters where possible.
 */
import type { WindowCovering } from '@matter/main/clusters';
/**
 * Base interface for any cluster state
 */
export interface ClusterState {
    [key: string]: unknown;
}
/**
 * OnOff cluster state
 */
export interface OnOffState {
    onOff?: boolean;
}
/**
 * LevelControl cluster state
 */
export interface LevelControlState {
    currentLevel?: number;
    minLevel?: number;
    maxLevel?: number;
    remainingTime?: number;
    onLevel?: number | null;
    options?: number;
}
/**
 * ColorControl cluster state
 * Based on @matter/main/clusters ColorControl
 *
 * Note: We use a flexible interface to accommodate both ColorMode and EnhancedColorMode
 * from Matter.js, which are distinct types in the spec but functionally compatible
 */
export interface ColorControlState {
    colorTemperatureMireds?: number;
    colorTempPhysicalMinMireds?: number;
    colorTempPhysicalMaxMireds?: number;
    currentHue?: number;
    currentSaturation?: number;
    enhancedCurrentHue?: number;
    currentX?: number;
    currentY?: number;
    colorX?: number;
    colorY?: number;
    colorMode?: number;
    enhancedColorMode?: number;
    options?: number;
    coupleColorTempToLevelMinMireds?: number;
    transitionTime?: number;
}
/**
 * Partial state interfaces for specific color control operations
 * These are used when we only need to read/write specific properties
 * from the complex Matter.js ColorControl state
 */
/**
 * Color temperature specific state
 */
export interface ColorTemperatureState {
    colorTemperatureMireds?: number;
}
/**
 * Hue and saturation specific state
 */
export interface HueSaturationState {
    currentHue?: number;
    currentSaturation?: number;
}
/**
 * XY color specific state
 */
export interface XYColorState {
    currentX?: number;
    currentY?: number;
}
/**
 * Hue specific state (including enhanced hue)
 */
export interface HueState {
    currentHue?: number;
    enhancedCurrentHue?: number;
}
/**
 * Saturation specific state
 */
export interface SaturationState {
    currentSaturation?: number;
}
/**
 * WindowCovering cluster state
 * Based on @matter/main/clusters WindowCovering
 */
export interface WindowCoveringState {
    type?: WindowCovering.WindowCoveringType;
    configStatus?: {
        operational?: boolean;
        onlineReserved?: boolean;
        online?: boolean;
        liftMovementReversed?: boolean;
        liftPositionAware?: boolean;
        tiltPositionAware?: boolean;
        liftEncoderControlled?: boolean;
        tiltEncoderControlled?: boolean;
    };
    targetPositionLiftPercent100ths?: number | null;
    currentPositionLiftPercent100ths?: number | null;
    targetPositionTiltPercent100ths?: number | null;
    currentPositionTiltPercent100ths?: number | null;
    operationalStatus?: {
        global: number;
        lift: number;
        tilt: number;
    };
    safetyStatus?: number;
    endProductType?: number;
    mode?: number;
}
/**
 * FanControl cluster state
 */
export interface FanControlState {
    fanMode?: number;
    fanModeSequence?: number;
    percentSetting?: number | null;
    percentCurrent?: number;
    speedMax?: number;
    speedSetting?: number | null;
    speedCurrent?: number;
    rockSupport?: number;
    rockSetting?: number;
    windSupport?: number;
    windSetting?: number;
}
/**
 * Thermostat cluster state
 */
export interface ThermostatState {
    localTemperature?: number | null;
    externalMeasuredIndoorTemperature?: number | null;
    outdoorTemperature?: number | null;
    occupancy?: {
        occupied?: boolean;
    };
    externallyMeasuredOccupancy?: boolean;
    absMinHeatSetpointLimit?: number;
    absMaxHeatSetpointLimit?: number;
    absMinCoolSetpointLimit?: number;
    absMaxCoolSetpointLimit?: number;
    occupiedCoolingSetpoint?: number;
    occupiedHeatingSetpoint?: number;
    unoccupiedCoolingSetpoint?: number;
    unoccupiedHeatingSetpoint?: number;
    minHeatSetpointLimit?: number;
    maxHeatSetpointLimit?: number;
    minCoolSetpointLimit?: number;
    maxCoolSetpointLimit?: number;
    minSetpointDeadBand?: number;
    remoteSensing?: number;
    controlSequenceOfOperation?: number;
    systemMode?: number;
    thermostatRunningMode?: number;
    startOfWeek?: number;
    numberOfWeeklyTransitions?: number;
    numberOfDailyTransitions?: number;
}
/**
 * DoorLock cluster state
 */
export interface DoorLockState {
    lockState?: number | null;
    lockType?: number;
    actuatorEnabled?: boolean;
    operatingMode?: number;
    doorState?: number | null;
    doorOpenEvents?: number;
    doorClosedEvents?: number;
    openPeriod?: number;
}
/**
 * RVC (Robotic Vacuum Cleaner) Operational State
 */
export interface RvcOperationalState {
    phaseList?: string[] | null;
    currentPhase?: number | null;
    countdownTime?: number | null;
    operationalStateList?: Array<{
        operationalStateId: number;
        operationalStateLabel?: string;
    }>;
    operationalState?: number;
    operationalError?: {
        errorStateId: number;
        errorStateLabel?: string;
        errorStateDetails?: string;
    };
}
/**
 * RVC Run Mode state
 */
export interface RvcRunModeState {
    supportedModes?: Array<{
        label: string;
        mode: number;
        modeTags?: Array<{
            value: number;
        }>;
    }>;
    currentMode?: number;
    startUpMode?: number | null;
    onMode?: number | null;
}
/**
 * RVC Clean Mode state
 */
export interface RvcCleanModeState {
    supportedModes?: Array<{
        label: string;
        mode: number;
        modeTags?: Array<{
            value: number;
        }>;
    }>;
    currentMode?: number;
    startUpMode?: number | null;
    onMode?: number | null;
}
/**
 * ValveConfigurationAndControl cluster state
 */
export interface ValveConfigurationAndControlState {
    openDuration?: number | null;
    defaultOpenDuration?: number | null;
    remainingDuration?: number | null;
    currentState?: number | null;
    targetState?: number | null;
    valveFault?: number;
}
/**
 * Service Area state
 */
export interface ServiceAreaState {
    supportedAreas?: Array<{
        areaId: number;
        mapId: number | null;
        areaInfo: {
            locationInfo?: {
                locationName?: string;
                floorNumber?: number | null;
                areaType?: number | null;
            } | null;
            landmarkInfo?: {
                landmarkTag?: number;
                positionTag?: number | null;
                relativePositionTag?: number | null;
            } | null;
        };
    }>;
    supportedMaps?: Array<{
        mapId: number;
        name: string;
    }>;
    selectedAreas?: number[];
    currentArea?: number | null;
    estimatedEndTime?: number | null;
    progress?: Array<{
        areaId: number;
        status: number;
        totalOperationalTime?: number | null;
    }>;
}
/**
 * Power Source state
 * @see {@link https://matter-standard.github.io/matter/specification/latest/#ref-power-source-cluster}
 *
 * `batPercentRemaining` is encoded as double the percentage (0–200), so 100% = 200.
 * `batChargeLevel`: 0 = Ok, 1 = Warning, 2 = Critical
 */
export interface PowerSourceState {
    status?: number;
    order?: number;
    description?: string;
    batVoltage?: number | null;
    batPercentRemaining?: number | null;
    batTimeRemaining?: number | null;
    batChargeLevel?: number;
    batReplacementNeeded?: boolean;
    batReplaceability?: number;
    batPresent?: boolean;
    activeBatFaults?: number[];
    batReplacementDescription?: string;
    batQuantity?: number;
    batChargeState?: number;
    batTimeToFullCharge?: number | null;
    batFunctionalWhileCharging?: boolean;
    batChargingCurrent?: number | null;
    activeBatChargeFaults?: number[];
}
//# sourceMappingURL=clusterTypes.d.ts.map