import { HomieTopologyElement, IHomieTopologyConfiguration } from "./framework";
import HomieNode from "./HomieNode";
export declare enum PropertyDataType {
    integer = 0,
    float = 1,
    boolean = 2,
    string = 3,
    enum = 4,
    color = 5
}
export interface IHomiePropertyConfiguration extends IHomieTopologyConfiguration {
    settable: boolean;
    format?: string;
    dataType: PropertyDataType;
    unit?: string;
    retained: boolean;
}
export declare const DefaultConfiguration: IHomiePropertyConfiguration;
export default class HomieProperty extends HomieTopologyElement<HomieNode, IHomiePropertyConfiguration> {
    constructor(parent: HomieNode, config: IHomiePropertyConfiguration);
    set unit(value: string | undefined);
    get unit(): string | undefined;
    set datatype(value: PropertyDataType);
    get datatype(): PropertyDataType;
    set format(value: string | undefined);
    get format(): string | undefined;
    set retained(value: boolean);
    get retained(): boolean;
    get settable(): boolean;
    set settable(value: boolean);
    onConnect: () => void;
    invokeSetter: (range: {
        isRange: boolean;
        index?: number;
    }, value: string | null) => void;
    publishValue: (value: string | number | boolean, rangeIndex?: number | undefined) => void;
}
//# sourceMappingURL=HomieProperty.d.ts.map