import { OTWFirmwareUpdateResult, Endpoint, FirmwareUpdateResult, ConfigValue, SetValueResult, ZWaveNode } from "zwave-js";
import type { GetFirmwareUpdatesOptions } from "zwave-js/Controller";
import type { Client } from "./server.js";
import { Firmware, FirmwareFileFormat, MaybeNotKnown, RFRegion, SupervisionResult } from "@zwave-js/core";
import { IncomingCommandNodeGetRawConfigParameterValue, IncomingCommandNodeSetRawConfigParameterValue } from "./node/incoming_message.js";
import { IncomingCommandEndpointGetRawConfigParameterValue, IncomingCommandEndpointSetRawConfigParameterValue } from "./endpoint/incoming_message.js";
export interface BufferObject {
    type: "Buffer";
    data: number[];
}
export declare function isBufferObject(obj: unknown): obj is {
    type: "Buffer";
    data: number[];
};
export declare function deserializeBufferInArray(array: unknown[]): unknown[];
export declare function deserializeBuffer(value: string | BufferObject): string | Uint8Array;
export type SetValueResultType = {
    result: SetValueResult;
} | {
    success: boolean;
};
export declare function setValueOutgoingMessage(result: SetValueResult, schemaVersion: number): SetValueResultType;
export type FirmwareUpdateResultType = {
    result: OTWFirmwareUpdateResult | FirmwareUpdateResult;
} | {
    success: boolean;
};
export type OTWFirmwareUpdateResultType = {
    result: OTWFirmwareUpdateResult;
};
export declare function firmwareUpdateOutgoingMessage<T extends OTWFirmwareUpdateResult | FirmwareUpdateResult>(result: T, schemaVersion: number): {
    result: T;
} | {
    success: boolean;
};
export declare function setRawConfigParameterValue(message: IncomingCommandNodeSetRawConfigParameterValue | IncomingCommandEndpointSetRawConfigParameterValue, nodeOrEndpoint: ZWaveNode | Endpoint): Promise<{
    result?: SupervisionResult;
}>;
export declare function getRawConfigParameterValue(message: IncomingCommandNodeGetRawConfigParameterValue | IncomingCommandEndpointGetRawConfigParameterValue, nodeOrEndpoint: ZWaveNode | Endpoint): Promise<{
    value: MaybeNotKnown<ConfigValue>;
}>;
/**
 * Parses a firmware file (handling format detection and ZIP extraction)
 * and extracts the firmware data.
 */
export declare function parseAndExtractFirmware(filename: string, rawData: Uint8Array<ArrayBuffer>, explicitFormat?: FirmwareFileFormat): Promise<Firmware>;
export declare function getFirmwareUpdateOptions(message: {
    apiKey?: string;
    includePrereleases?: boolean;
    rfRegion?: RFRegion;
}, client: Client): GetFirmwareUpdatesOptions;
