// Compiled, never run (test/typings.test.js, npm run check): a CommonJS TypeScript consumer of the declarations in // dist/types, resolved through the package's "exports". A "@ts-expect-error" line fails the compile when the // declaration stops rejecting what follows it. import { ActionMapping, AlexaActions, AlexaInterfaceType, Assets, DeclarationError, DisplayCategory, EndpointHealth, PowerController, registry, } from "alex2node"; import type { Alex2MQTT, Alex2MQTTOptions, AlexaInterface, AlexaStatusMessage, AssetId, ChangeCause, Device, DisplayCategoryName, Infer, InterfaceDescriptor, Schema, SupportedMode, Temperature, UnitOfMeasure, } from "alex2node"; declare const bridge: Alex2MQTT; declare const message: AlexaStatusMessage; declare const capability: AlexaInterface; const options: Alex2MQTTOptions = { host: "mqtt://127.0.0.1:1883", mqtt: { reconnectPeriod: 1000 }, log: (line) => line.length }; const device: Device = bridge.registerDevice("Lamp", "lamp-1", [DisplayCategory.LIGHT, DisplayCategory.SWITCH]); const added: AlexaInterface = device.addCapability(AlexaInterfaceType.POWER_CONTROLLER, { proactivelyReported: true }); // ActionMapping: the payload is optional const close = new ActionMapping([AlexaActions.Close], "TurnOn"); capability.addActionMapping(close); // addHealthProp: the enum or its string values, chainable const chained: AlexaStatusMessage = message.addHealthProp(EndpointHealth.OK).addHealthProp("UNREACHABLE", 50); // @ts-expect-error not a connectivity value message.addHealthProp("ASLEEP"); // @ts-expect-error a power state is ON or OFF message.addPowerControllerProp("ON "); message.addPowerControllerProp(PowerController.ON); // addSupportedModes: Mode objects, plain strings still accepted const mode: SupportedMode = { value: "Fan.Auto", modeResources: { friendlyNames: [{ "@type": "text", value: { text: "Auto", locale: "en-US" } }] } }; capability.addSupportedModes([mode, "Fan.On"]); const cause: ChangeCause = "PHYSICAL_INTERACTION"; const sent: Promise = device.getChangeReport(cause).addPowerControllerProp(PowerController.OFF).send(); // @ts-expect-error not a cause Alexa knows device.getChangeReport("BUTTON"); // The registry: a descriptor by its namespace or by the 1.x enum member const described: InterfaceDescriptor = registry.get("Alexa.PowerController"); const version: string = registry.get(AlexaInterfaceType.ENDPOINT_HEALTH).version; const refused: Error = new DeclarationError({ endpointId: "lamp-1", namespace: described.namespace }, "declared twice"); // The vocabularies are unions of what the pages list const opening: AssetId = Assets[0]; const percent: UnitOfMeasure = "Alexa.Unit.Percent"; const vacuum: DisplayCategoryName = "VACUUM"; // @ts-expect-error not in the global Alexa catalog const misspelt: AssetId = "Alexa.Setting.Openning"; // @ts-expect-error an asset, but not a unit of measure const notAUnit: UnitOfMeasure = "Alexa.Setting.Opening"; // A schema types what it parses declare const temperature: Schema; const measured: Infer = { value: 20, scale: "CELSIUS" }; // @ts-expect-error not a temperature scale const rankine: Infer = { value: 20, scale: "RANKINE" }; export { options, added, chained, sent, version, refused, opening, percent, vacuum, misspelt, notAUnit, measured, rankine };