import { API, Logger, PlatformAccessory, PlatformConfig } from 'homebridge';
export interface GiraHomebridgeConfig extends PlatformConfig {
    name: string;
    host: string;
    port?: number;
    username: string;
    password: string;
    pollingInterval?: number;
    debugMode?: boolean;
    adminMode?: boolean;
    forceCompleteAccess?: boolean;
    alternativeClientId?: string;
    buildingStructure?: {
        useLocationHierarchy?: boolean;
        groupByFloor?: boolean;
        groupByBuilding?: boolean;
        customRoomMappings?: Record<string, string>;
    };
    deviceFilters?: {
        includeRooms?: string[];
        excludeRooms?: string[];
        includeTypes?: string[];
        excludeTypes?: string[];
        includeTrades?: string[];
        excludeTrades?: string[];
    };
}
export interface QuoadDevice {
    id: string;
    name: string;
    type: string;
    room?: string;
    location?: GiraLocation;
    trade?: string;
    functions: QuoadFunction[];
    properties: Record<string, any>;
}
export interface GiraLocation {
    name: string;
    type: string;
    parent?: GiraLocation;
    children?: GiraLocation[];
    path: string[];
}
export interface QuoadFunction {
    id: string;
    name: string;
    type: QuoadFunctionType;
    value: any;
    writable: boolean;
    dataType: string;
    unit?: string;
    min?: number;
    max?: number;
    step?: number;
    options?: string[];
}
export declare enum QuoadFunctionType {
    SWITCHING = "switching",
    DIMMING = "dimming",
    COLORED_LIGHT = "colored_light",
    TUNABLE_WHITE = "tunable_white",
    BLINDS = "blinds",
    TRIGGER = "trigger",
    PRESS_AND_HOLD = "press_and_hold",
    SCENE = "scene",
    HEATING = "heating",
    COOLING = "cooling",
    FAN_COIL = "fan_coil",
    SAUNA = "sauna",
    AUDIO = "audio",
    SONOS = "sonos",
    CAMERA = "camera",
    LINK = "link",
    BINARY_STATUS = "binary_status",
    UNSIGNED_STATUS = "unsigned_status",
    SIGNED_STATUS = "signed_status",
    FLOAT_STATUS = "float_status",
    TEXT_STATUS = "text_status",
    UNSIGNED_VALUE = "unsigned_value",
    SIGNED_VALUE = "signed_value",
    PERCENT_VALUE = "percent_value",
    TEMPERATURE_VALUE = "temperature_value",
    DECIMAL_VALUE = "decimal_value",
    TEMPERATURE = "temperature",
    HUMIDITY = "humidity",
    SENSOR = "sensor",
    WEATHER = "weather",
    ENERGY = "energy",
    UNKNOWN = "unknown"
}
export interface DeviceMapping {
    homebridgeService: string;
    characteristics: CharacteristicMapping[];
}
export interface CharacteristicMapping {
    homebridgeCharacteristic: string;
    quoadFunction: string;
    converter?: (value: any) => any;
    reverseConverter?: (value: any) => any;
}
export interface PlatformContext {
    api: API;
    log: Logger;
    config: GiraHomebridgeConfig;
    accessories: Map<string, PlatformAccessory>;
}
export interface QuoadConnectionConfig {
    host: string;
    port: number;
    username: string;
    password: string;
    secure?: boolean;
}
export interface QuoadMessage {
    type: 'request' | 'response' | 'event';
    id?: string;
    method?: string;
    params?: any;
    result?: any;
    error?: QuoadError;
}
export interface QuoadError {
    code: number;
    message: string;
    data?: any;
}
export interface DeviceUpdate {
    deviceId: string;
    functionId: string;
    value: any;
    timestamp: Date;
}
//# sourceMappingURL=types.d.ts.map