export interface MatterConfig {
    port?: number;
    enabled?: boolean;
    externalsOnly?: boolean;
}
export interface BridgeHapConfig {
    enabled?: boolean;
    externalsOnly?: boolean;
}
export type MatterEvent = {
    type: 'accessoriesData';
    correlationId?: string;
    data: MatterAccessoriesResponse;
} | {
    type: 'accessoryUpdate';
    correlationId?: string;
    data: MatterStateUpdate;
} | {
    type: 'accessoryAdded';
    correlationId?: string;
    data: MatterAccessoryInfo;
} | {
    type: 'accessoryRemoved';
    correlationId?: string;
    data: MatterAccessoryInfo;
} | {
    type: 'accessoryControlResponse';
    correlationId?: string;
    data: MatterControlResponse;
} | {
    type: 'accessoryInfo';
    correlationId?: string;
    data: MatterAccessoryInfo;
} | {
    type: 'monitoringStarted';
    correlationId?: string;
    data: MatterMonitoringAck;
} | {
    type: 'monitoringStopped';
    correlationId?: string;
    data: MatterMonitoringAck;
};
export interface MatterMonitoringAck {
    success: boolean;
    alreadyActive?: boolean;
    alreadyStopped?: boolean;
    othersActive?: boolean;
}
export interface MatterAccessoriesResponse {
    accessories?: MatterAccessory[];
    error?: string;
}
export interface MatterAccessory {
    uuid: string;
    displayName: string;
    deviceType: string;
    clusters: Record<string, Record<string, unknown>>;
    manufacturer?: string;
    model?: string;
    serialNumber?: string;
    firmwareRevision?: string;
    bridge?: {
        name?: string;
        username?: string;
    };
    plugin?: string;
    platform?: string;
    commissioned?: boolean;
    fabricCount?: number;
    fabrics?: MatterFabric[];
    parts?: MatterAccessoryPart[];
}
export interface MatterAccessoryPart {
    id: string;
    displayName: string;
    deviceType: string;
    clusters: Record<string, Record<string, unknown>>;
}
export interface MatterAccessoryInfo extends MatterAccessory {
    error?: string;
}
export interface MatterService {
    uniqueId: string;
    uuid: string;
    serviceName: string;
    displayName: string;
    deviceType: string;
    clusters: Record<string, Record<string, unknown>>;
    partId?: string;
    protocol: 'matter';
    instance: {
        name: string;
        username: string;
    };
    accessoryInformation: {
        'Name': string;
        'Manufacturer': string;
        'Model': string;
        'Serial Number': string;
        'Firmware Revision': string;
    };
    bridge?: {
        name?: string;
        username?: string;
    };
    plugin?: string;
    platform?: string;
    commissioned?: boolean;
    fabricCount?: number;
    fabrics?: MatterFabric[];
    aid: 0;
    iid: 0;
}
export interface MatterStateUpdate {
    uuid: string;
    cluster: string;
    state: Record<string, unknown>;
    partId?: string;
}
export interface MatterFabric {
    fabricIndex: number;
    label?: string;
    vendorId?: number;
    fabricId?: string;
    nodeId?: string;
}
export interface MatterControlResponse {
    success: boolean;
    error?: string;
}
export interface MatterControlRequest {
    uniqueId: string;
    cluster: string;
    attributes: Record<string, unknown>;
}
export interface StoredMatterAccessory {
    uuid: string;
    displayName?: string;
    plugin?: string;
    manufacturer?: string;
    model?: string;
    serialNumber?: string;
    $deviceId?: string;
    $protocol?: 'matter';
    [key: string]: unknown;
}
export interface HomebridgeStatusMatterUpdate {
    enabled: boolean;
    port?: number;
    setupUri?: string;
    pin?: string;
    serialNumber?: string;
    commissioned?: boolean;
    deviceCount?: number;
    externalsOnly?: boolean;
}
export interface NetworkOverviewEntry {
    service: string;
    port: number;
    protocol: string;
    bridge: string;
    status: string;
    matterPort?: number;
    commissioned?: boolean;
    deviceCount?: number;
}
