import { EventEmitter } from "events"; import type { AccessControl } from "../definitions"; /** * This defines the Access Level for TVs and Speakers. It is pretty much only used for the AirPlay 2 protocol * so this information is not really useful. * * @group Television */ export declare const enum AccessLevel { /** * This access level is set when the users selects "Anyone" or "Anyone On The Same Network" * in the Access Control settings. */ ANYONE = 0, /** * This access level is set when the users selects "Only People Sharing this Home" in the * Access Control settings. * On this level password setting is ignored. * Requests to the HAPServer can only come from Home members anyways, so there is no real use to it. * This is pretty much only used for the AirPlay 2 protocol. */ HOME_MEMBERS_ONLY = 1 } /** * @group Television */ export declare const enum AccessControlEvent { ACCESS_LEVEL_UPDATED = "update-control-level", PASSWORD_SETTING_UPDATED = "update-password" } /** * @group Television */ export declare interface AccessControlManagement { on(event: "update-control-level", listener: (accessLevel: AccessLevel) => void): this; on(event: "update-password", listener: (password: string | undefined, passwordRequired: boolean) => void): this; emit(event: "update-control-level", accessLevel: AccessLevel): boolean; emit(event: "update-password", password: string | undefined, passwordRequired: boolean): boolean; } /** * @group Television */ export declare class AccessControlManagement extends EventEmitter { private readonly accessControlService; /** * The current access level set for the Home */ private accessLevel; private passwordRequired; private password?; /** * Instantiates a new AccessControlManagement. * * @param {boolean} password - if set to true the service will listen for password settings */ constructor(password?: boolean); /** * Instantiates a new AccessControlManagement. * * @param {boolean} password - if set to true the service will listen for password settings * @param {AccessControl} service - supply your own instance to sideload the AccessControl service */ constructor(password?: boolean, service?: AccessControl); /** * @returns the AccessControl service */ getService(): AccessControl; /** * @returns the current {@link AccessLevel} configured for the Home */ getAccessLevel(): AccessLevel; /** * @returns the current password configured for the Home or `undefined` if no password is required. */ getPassword(): string | undefined; /** * This destroys the AccessControlManagement. * It unregisters all GET or SET handler it has associated with the given AccessControl service. * It removes all event handlers which were registered to this object. */ destroy(): void; private handleAccessLevelChange; private handlePasswordChange; private setupServiceHandlers; } //# sourceMappingURL=AccessControlManagement.d.ts.map