import type { TServiceParams } from "@digital-alchemy/core"; import type { ByIdProxy, PICK_ENTITY } from "@digital-alchemy/hass"; import type { AddEntityOptions, BasicAddParams, CallbackData, SettableConfiguration, SynapseEntityProxy } from "../../helpers/index.mts"; export type LockConfiguration = { /** * Describes what the last change was triggered by. */ changed_by?: SettableConfiguration; /** * Regex for code format or None if no code is required. */ code_format?: SettableConfiguration; /** * Indication of whether the lock is currently locked. Used to determine state. */ is_locked?: SettableConfiguration; /** * Indication of whether the lock is currently locking. Used to determine state. */ is_locking?: SettableConfiguration; /** * Indication of whether the lock is currently unlocking. Used to determine state. */ is_unlocking?: SettableConfiguration; /** * Indication of whether the lock is currently jammed. Used to determine state. */ is_jammed?: SettableConfiguration; /** * Indication of whether the lock is currently opening. Used to determine state. */ is_opening?: SettableConfiguration; /** * Indication of whether the lock is currently open. Used to determine state. */ is_open?: SettableConfiguration; supported_features?: number; /** * default: true */ managed?: boolean; }; export type LockEvents = { lock: {}; unlock: {}; open: {}; }; /** * Convenient type for lock entities with optional attributes and locals */ export type SynapseLock = SynapseEntityProxy, LockEvents, ATTRIBUTES, LOCALS, DATA, PICK_ENTITY<"lock">> & { entity: ByIdProxy>; }; export declare function VirtualLock({ context, synapse, logger }: TServiceParams): >>({ managed, ...options }: AddEntityOptions, LockEvents, PARAMS["attributes"], PARAMS["locals"], DATA>) => SynapseLock;