import type { SecretsManager } from '../../config/secrets.js'; import type { ServiceRegistry } from '../../config/service-registry.js'; import { HomeAssistantIntegration, type HomeAssistantStateRecord } from '../../integrations/homeassistant.js'; import type { ChannelOperatorActionDescriptor, ChannelToolDescriptor } from '../types.js'; import type { BuiltinChannelRuntimeDeps } from './shared.js'; export declare const HOME_ASSISTANT_SURFACE: "homeassistant"; export declare const HOME_ASSISTANT_WEBHOOK_PATH = "/webhook/homeassistant"; export declare const HOME_ASSISTANT_DEFAULT_EVENT_TYPE = "goodvibes_message"; /** * The home-state honesty contract, stated at the model surface. An answer about * home state cites the source entity and the time its state was observed, or it * refuses plainly when the entity/state is absent, never a confident unsourced * claim. This string is attached to the state-read tool descriptions and to every * state-read result so the model always sees the contract next to the data. */ export declare const HOME_STATE_PROVENANCE_CONTRACT: string; /** Provenance fields that travel with every home-state answer. */ export interface HomeStateProvenance { readonly entity_id: string; readonly state: string; readonly last_changed: string | null; readonly last_updated: string | null; /** When the daemon observed this state (the snapshot/read time). */ readonly observed_at: string; } /** * Shape a single entity-state read into a contract-carrying result. A present * record yields its value plus explicit provenance; an absent entity yields an * explicit not-present result (never silence and never a guess). */ export declare function buildHomeStateReadResult(entityId: string, record: HomeAssistantStateRecord | null, observedAt: string): Record; /** Provenance summary attached per state in a list result. */ export declare function homeStateProvenance(record: HomeAssistantStateRecord, observedAt: string): HomeStateProvenance; interface ConfigReader { get(key: string): unknown; } interface HomeAssistantActionContext { readonly deps: BuiltinChannelRuntimeDeps; } export interface HomeAssistantSurfaceManifest { readonly protocolVersion: number; readonly surface: 'homeassistant'; readonly label: string; readonly device: { readonly identifiers: readonly string[]; readonly manufacturer: string; readonly model: string; readonly name: string; readonly swVersion?: string | undefined; }; readonly daemon: { readonly baseUrl: string; readonly auth: 'bearer'; readonly endpoints: Record; }; readonly capabilities: readonly string[]; readonly events: { readonly outboundEventType: string; readonly inboundWebhookPath: string; readonly inboundSecretHeaders: readonly string[]; }; readonly recommendedServices: readonly { readonly name: string; readonly target: 'config_entry' | 'device' | 'entity'; readonly description: string; }[]; readonly metadata: Record; } export declare function listHomeAssistantOperatorActions(): ChannelOperatorActionDescriptor[]; export declare function listHomeAssistantTools(): ChannelToolDescriptor[]; export declare function runHomeAssistantOperatorAction(context: HomeAssistantActionContext, actionId: string, input?: Record): Promise<{ readonly handled: boolean; readonly result: unknown; }>; export declare function buildHomeAssistantManifest(deps: Pick): HomeAssistantSurfaceManifest; export declare function createHomeAssistantClient(deps: BuiltinChannelRuntimeDeps): Promise; export declare function resolveHomeAssistantBaseUrl(configManager: ConfigReader, serviceRegistry?: Pick): string | null; export declare function resolveHomeAssistantAccessToken(deps: { readonly configManager: ConfigReader; readonly secretsManager?: Pick | undefined; readonly serviceRegistry?: Pick | undefined; }): Promise; export declare function resolveHomeAssistantWebhookSecret(deps: { readonly configManager: ConfigReader; readonly secretsManager?: Pick | undefined; readonly serviceRegistry?: Pick | undefined; }): Promise; export {}; //# sourceMappingURL=homeassistant.d.ts.map