/**
 * @license
 * Copyright 2025-2026 Open Home Foundation
 * SPDX-License-Identifier: Apache-2.0
 */
import type { MatterClient, MatterNode } from "@matter-server/ws-client";
/** Camera AV Settings User Level Management cluster (spec 1.5.1 §11.3). */
export declare const AVSUM_CLUSTER_ID = 1362;
export declare const AVSUM_FEAT_DPTZ: number;
export declare const AVSUM_FEAT_MPAN: number;
export declare const AVSUM_FEAT_MTILT: number;
export declare const AVSUM_FEAT_MZOOM: number;
export declare const AVSUM_FEAT_MPRESETS: number;
export interface AvsumFeatures {
    dptz: boolean;
    mPan: boolean;
    mTilt: boolean;
    mZoom: boolean;
    mPresets: boolean;
}
export interface MptzPosition {
    pan: number | null;
    tilt: number | null;
    zoom: number | null;
}
export interface MptzRanges {
    panMin: number | null;
    panMax: number | null;
    tiltMin: number | null;
    tiltMax: number | null;
    zoomMax: number | null;
}
export type MovementState = "idle" | "moving" | "unknown";
export interface MptzPreset {
    presetId: number;
    name: string;
    settings: {
        pan: number | null;
        tilt: number | null;
        zoom: number | null;
    };
}
export interface DptzStreamEntry {
    videoStreamId: number;
}
export declare function readFeatures(node: MatterNode, endpoint: number): AvsumFeatures;
export declare function readPosition(node: MatterNode, endpoint: number): MptzPosition;
export declare function readRanges(node: MatterNode, endpoint: number): MptzRanges;
export declare function readMovementState(node: MatterNode, endpoint: number): MovementState;
export declare function readPresets(node: MatterNode, endpoint: number): {
    items: MptzPreset[];
    max: number;
};
export declare function readDptzStreams(node: MatterNode, endpoint: number): DptzStreamEntry[];
export declare function relativeMove(client: MatterClient, nodeId: number | bigint, endpoint: number, delta: {
    panDelta?: number;
    tiltDelta?: number;
    zoomDelta?: number;
}): Promise<void>;
export declare function moveToPreset(client: MatterClient, nodeId: number | bigint, endpoint: number, presetId: number): Promise<void>;
export declare function savePreset(client: MatterClient, nodeId: number | bigint, endpoint: number, name: string, presetId?: number): Promise<void>;
export declare function removePreset(client: MatterClient, nodeId: number | bigint, endpoint: number, presetId: number): Promise<void>;
export declare function dptzRelativeMove(client: MatterClient, nodeId: number | bigint, endpoint: number, streamId: number, delta: {
    deltaX?: number;
    deltaY?: number;
    zoomDelta?: number;
}): Promise<void>;
export declare function hasAvsumOnEndpoint(node: MatterNode, endpoint: number): boolean;
//# sourceMappingURL=avsum.d.ts.map