/** Persisted integration (provider instance) */
export interface Integration {
    readonly id: string;
    readonly addonId: string;
    readonly name: string;
    readonly enabled: boolean;
    readonly info: Readonly<Record<string, unknown>>;
    readonly createdAt: number;
    readonly updatedAt: number;
}
/** Persisted device */
export interface PersistedDevice {
    readonly id: string;
    readonly integrationId: string;
    readonly stableId: string;
    readonly type: string;
    readonly name: string;
    readonly enabled: boolean;
    readonly info: Readonly<Record<string, unknown>>;
    readonly createdAt: number;
    readonly updatedAt: number;
}
/** Setting entry with typed value */
export interface TypedSetting {
    readonly key: string;
    readonly value: string;
    readonly valueType: 'string' | 'number' | 'boolean' | 'json';
}
/** Input for creating an integration */
export interface CreateIntegrationInput {
    readonly addonId: string;
    readonly name: string;
    readonly enabled?: boolean;
    readonly info?: Record<string, unknown>;
    readonly settings?: Record<string, unknown>;
}
/** Input for creating a device */
export interface CreateDeviceInput {
    readonly integrationId: string;
    readonly stableId: string;
    readonly type: string;
    readonly name: string;
    readonly enabled?: boolean;
    readonly info?: Record<string, unknown>;
    readonly settings?: Record<string, unknown>;
}
/** What a provider addon must return for device identity */
export interface DeviceIdentity {
    readonly stableId: string;
    readonly type: string;
    readonly name: string;
    readonly info?: Record<string, unknown>;
    readonly settings?: Record<string, unknown>;
}
/** Registry interface for managing integrations and devices */
export interface IIntegrationRegistry {
    createIntegration(input: CreateIntegrationInput): Promise<Integration>;
    getIntegration(id: string): Promise<Integration | null>;
    getIntegrationByAddonId(addonId: string): Promise<Integration | null>;
    listIntegrations(): Promise<readonly Integration[]>;
    updateIntegration(id: string, updates: Partial<Pick<Integration, 'name' | 'enabled' | 'info'>>): Promise<Integration | null>;
    deleteIntegration(id: string): Promise<boolean>;
    getIntegrationSettings(integrationId: string): Promise<Record<string, unknown>>;
    setIntegrationSetting(integrationId: string, key: string, value: unknown): Promise<void>;
    setIntegrationSettings(integrationId: string, settings: Record<string, unknown>): Promise<void>;
    createDevice(input: CreateDeviceInput): Promise<PersistedDevice>;
    getDevice(id: string): Promise<PersistedDevice | null>;
    getDeviceByStableId(stableId: string): Promise<PersistedDevice | null>;
    listDevices(integrationId?: string): Promise<readonly PersistedDevice[]>;
    listCameras(): Promise<readonly PersistedDevice[]>;
    updateDevice(id: string, updates: Partial<Pick<PersistedDevice, 'name' | 'enabled' | 'info'>>): Promise<PersistedDevice | null>;
    deleteDevice(id: string): Promise<boolean>;
    getDeviceSettings(deviceId: string): Promise<Record<string, unknown>>;
    setDeviceSetting(deviceId: string, key: string, value: unknown): Promise<void>;
    setDeviceSettings(deviceId: string, settings: Record<string, unknown>): Promise<void>;
}
//# sourceMappingURL=integration-registry.d.ts.map