import { CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, type WithAddress } from "@zwave-js/core";
import { Bytes } from "@zwave-js/shared";
import { PhysicalCCAPI } from "../lib/API.js";
import { type CCRaw, CommandClass, type InterviewContext } from "../lib/CommandClass.js";
import { DeviceIdType, ManufacturerSpecificCommand } from "../lib/_Types.js";
import type { CCEncodingContext, CCParsingContext } from "../lib/traits.js";
import { ManufacturerSpecificCCValues } from "./_CCValues.generated.js";
export { ManufacturerSpecificCCValues };
export declare class ManufacturerSpecificCCAPI extends PhysicalCCAPI {
    supportsCommand(cmd: ManufacturerSpecificCommand): MaybeNotKnown<boolean>;
    get(): Promise<Pick<ManufacturerSpecificCCReport, "manufacturerId" | "productId" | "productType"> | undefined>;
    deviceSpecificGet(deviceIdType: DeviceIdType): Promise<MaybeNotKnown<string>>;
    sendReport(options: ManufacturerSpecificCCReportOptions): Promise<void>;
}
export declare class ManufacturerSpecificCC extends CommandClass {
    ccCommand: ManufacturerSpecificCommand;
    determineRequiredCCInterviews(): readonly CommandClasses[];
    interview(ctx: InterviewContext): Promise<void>;
}
export interface ManufacturerSpecificCCReportOptions {
    manufacturerId: number;
    productType: number;
    productId: number;
}
export declare class ManufacturerSpecificCCReport extends ManufacturerSpecificCC {
    constructor(options: WithAddress<ManufacturerSpecificCCReportOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): ManufacturerSpecificCCReport;
    readonly manufacturerId: number;
    readonly productType: number;
    readonly productId: number;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export declare class ManufacturerSpecificCCGet extends ManufacturerSpecificCC {
}
export interface ManufacturerSpecificCCDeviceSpecificReportOptions {
    type: DeviceIdType;
    deviceId: string;
}
export declare class ManufacturerSpecificCCDeviceSpecificReport extends ManufacturerSpecificCC {
    constructor(options: WithAddress<ManufacturerSpecificCCDeviceSpecificReportOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): ManufacturerSpecificCCDeviceSpecificReport;
    readonly type: DeviceIdType;
    readonly deviceId: string;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export interface ManufacturerSpecificCCDeviceSpecificGetOptions {
    deviceIdType: DeviceIdType;
}
export declare class ManufacturerSpecificCCDeviceSpecificGet extends ManufacturerSpecificCC {
    constructor(options: WithAddress<ManufacturerSpecificCCDeviceSpecificGetOptions>);
    static from(_raw: CCRaw, _ctx: CCParsingContext): ManufacturerSpecificCCDeviceSpecificGet;
    deviceIdType: DeviceIdType;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
//# sourceMappingURL=ManufacturerSpecificCC.d.ts.map