export declare enum IntelliCenterResponseStatus {
    Ok = "200"
}
export declare enum IntelliCenterRequestCommand {
    GetQuery = "GetQuery",
    RequestParamList = "RequestParamList",
    SetParamList = "SetParamList"
}
export declare enum IntelliCenterResponseCommand {
    SendQuery = "SendQuery",
    NotifyList = "NotifyList",
    WriteParamList = "WriteParamList",
    Error = "Error"
}
export declare enum IntelliCenterQueryName {
    GetHardwareDefinition = "GetHardwareDefinition"
}
type CircuitStatusSubscribeRequest = {
    objnam: string;
    keys: ReadonlyArray<string>;
};
export type CircuitParams = {
    STATUS?: string;
    SPEED?: number;
    [key: string]: string | number | boolean | undefined;
};
export type BodyParams = {
    HEAT_MODE?: number;
    HEAT_SETPOINT?: number;
    HEAT_SOURCE?: string;
    LAST_TEMP?: number;
    [key: string]: string | number | boolean | undefined;
};
export type SensorParams = {
    LAST_TEMP?: number;
    PROBE?: number;
    [key: string]: string | number | boolean | undefined;
};
export type PumpParams = {
    STATUS?: string;
    SPEED?: number;
    RPM?: number;
    GPM?: number;
    WATTS?: number;
    SELECT?: string;
    [key: string]: string | number | boolean | undefined;
};
export type GenericParams = {
    [key: string]: string | number | boolean | undefined;
};
export type IntelliCenterParams = CircuitParams | BodyParams | SensorParams | PumpParams | GenericParams;
export type CircuitStatusMessage = {
    objnam?: string;
    params?: IntelliCenterParams;
    changes?: ReadonlyArray<CircuitStatusMessage>;
};
type IntelliCenterMessage = {
    queryName?: IntelliCenterQueryName;
    messageID: string;
};
export type IntelliCenterRequest = {
    command: IntelliCenterRequestCommand;
    arguments?: string;
    objectList?: ReadonlyArray<CircuitStatusSubscribeRequest | CircuitStatusMessage>;
} & IntelliCenterMessage;
export type HardwareDefinitionAnswer = {
    [panelId: string]: {
        [moduleId: string]: {
            [objectId: string]: {
                OBJNAM: string;
                OBJTYP: string;
                SUBTYP?: string;
                HNAME?: string;
                [key: string]: string | number | boolean | undefined;
            };
        };
    };
};
export type DiscoveryAnswer = HardwareDefinitionAnswer | Record<string, unknown>;
export type IntelliCenterResponse = {
    command: IntelliCenterResponseCommand;
    description: string;
    response: IntelliCenterResponseStatus;
    answer?: DiscoveryAnswer;
    objectList?: ReadonlyArray<CircuitStatusMessage>;
} & IntelliCenterMessage;
export declare enum CircuitType {
    IntelliBrite = "INTELLI",
    Generic = "GENERIC"
}
export declare enum TemperatureSensorType {
    Air = "AIR",
    Pool = "POOL"
}
export declare enum BodyType {
    Pool = "POOL",
    Spa = "SPA"
}
export type BaseCircuit = {
    id: string;
};
export type Circuit = {
    id: string;
    name: string;
    objectType: ObjectType;
    type: CircuitType | BodyType;
    status?: CircuitStatus;
} & BaseCircuit;
export type Pump = {
    minRpm: number;
    maxRpm: number;
    minFlow: number;
    maxFlow: number;
    circuits?: ReadonlyArray<PumpCircuit>;
    rpm?: number;
    gpm?: number;
    watts?: number;
    [key: string]: unknown;
} & Circuit;
export type PumpCircuit = {
    id: string;
    pump: Pump;
    circuitId: string;
    speed: number;
    speedType: string;
    status?: CircuitStatus;
    rpm?: number;
    gpm?: number;
    watts?: number;
} & BaseCircuit;
export type Sensor = {
    id: string;
    name: string;
    objectType: ObjectType;
    type: TemperatureSensorType;
    probe: number;
} & BaseCircuit;
export declare enum CircuitStatus {
    On = "ON",
    Off = "OFF"
}
export declare enum PumpSpeedType {
    RPM = "RPM",
    GPM = "GPM"
}
export declare enum HeatMode {
    On = 2,
    Off = 1
}
export type Body = {
    temperature?: number;
    highTemperature?: number;
    lowTemperature?: number;
    heaterId?: string;
    heatSource?: string;
    heatMode?: number;
    circuit?: BaseCircuit;
    [key: string]: unknown;
} & Circuit;
export type Heater = {
    bodyIds: ReadonlyArray<string>;
    coolingEnabled?: boolean;
} & Circuit;
export type Module = {
    id: string;
    features: ReadonlyArray<Circuit>;
    bodies: ReadonlyArray<Body>;
    heaters: ReadonlyArray<Heater>;
};
export type Panel = {
    id: string;
    modules: ReadonlyArray<Module>;
    features: ReadonlyArray<Circuit>;
    pumps: ReadonlyArray<Pump>;
    sensors: ReadonlyArray<Sensor>;
};
export declare enum ObjectType {
    Circuit = "CIRCUIT",
    Module = "MODULE",
    Panel = "PANEL",
    Body = "BODY",
    Heater = "HEATER",
    CircuitGroup = "CIRCGRP",
    Pump = "PUMP",
    Sensor = "SENSE"
}
export declare const CircuitTypes: ReadonlySet<ObjectType>;
export declare const SensorTypes: ReadonlySet<ObjectType>;
export declare enum TemperatureUnits {
    C = "C",
    F = "F"
}
export declare class Color {
    readonly intellicenterCode: string;
    readonly hue: number;
    readonly saturation: number;
    static readonly White: Color;
    static readonly Red: Color;
    static readonly Green: Color;
    static readonly Blue: Color;
    static readonly Magenta: Color;
    private constructor();
}
export {};
//# sourceMappingURL=types.d.ts.map