/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
/**
 * Deprecated element interfaces and factory functions for the legacy {@link ClusterType} factory.
 *
 * These provide a backward-compatible API for consumers that define clusters using the deprecated
 * {@link ClusterType}() factory rather than generated cluster namespaces or the decorator system.
 *
 * @deprecated use generated cluster namespaces or the decorator system instead.
 */
import { Priority } from "#globals/Priority.js";
import { AccessLevel } from "@matter/model";
import { AttributeId } from "../datatype/AttributeId.js";
import { CommandId } from "../datatype/CommandId.js";
import { EventId } from "../datatype/EventId.js";
import { BitSchema } from "../schema/BitmapSchema.js";
import { TlvSchema } from "../tlv/TlvSchema.js";
/**
 * @deprecated
 */
export interface Attribute<T, _F extends BitSchema> {
    id: AttributeId;
    schema: TlvSchema<T>;
    optional: boolean;
    readAcl: AccessLevel;
    writable: boolean;
    scene: boolean;
    persistent: boolean;
    timed: boolean;
    fixed: boolean;
    fabricScoped: boolean;
    omitChanges: boolean;
    writeAcl?: AccessLevel;
    default?: T;
    unknown: boolean;
}
/**
 * @deprecated
 */
export interface OptionalAttribute<T, F extends BitSchema> extends Attribute<T, F> {
    optional: true;
}
/**
 * @deprecated
 */
export interface WritableAttribute<T, F extends BitSchema> extends Attribute<T, F> {
    writable: true;
}
/**
 * @deprecated
 */
export interface OptionalWritableAttribute<T, F extends BitSchema> extends OptionalAttribute<T, F> {
    writable: true;
}
/**
 * @deprecated
 */
export interface FabricScopedAttribute<T, F extends BitSchema> extends Attribute<T, F> {
    fabricScoped: true;
}
/**
 * @deprecated
 */
export interface WritableFabricScopedAttribute<T, F extends BitSchema> extends WritableAttribute<T, F> {
    fabricScoped: true;
}
/**
 * @deprecated
 */
export interface OptionalWritableFabricScopedAttribute<T, F extends BitSchema> extends OptionalWritableAttribute<T, F> {
    fabricScoped: true;
}
/**
 * @deprecated
 */
export interface FixedAttribute<T, F extends BitSchema> extends Attribute<T, F> {
    fixed: true;
}
/**
 * @deprecated
 */
export interface WritableFixedAttribute<T, F extends BitSchema> extends WritableAttribute<T, F> {
    fixed: true;
}
/**
 * @deprecated
 */
export interface OptionalFixedAttribute<T, F extends BitSchema> extends OptionalAttribute<T, F> {
    fixed: true;
}
interface AttributeOptions<T> {
    scene?: boolean;
    persistent?: boolean;
    omitChanges?: boolean;
    timed?: boolean;
    default?: T;
    readAcl?: AccessLevel;
    writeAcl?: AccessLevel;
}
/**
 * @deprecated
 */
export declare const Attribute: <T, V extends T, F extends BitSchema>(id: number, schema: TlvSchema<T>, { scene, persistent, omitChanges, default: conformanceValue, readAcl, timed, }?: AttributeOptions<V>) => Attribute<T, F>;
/**
 * @deprecated
 */
export declare const OptionalAttribute: <T, V extends T, F extends BitSchema>(id: number, schema: TlvSchema<T>, { scene, persistent, omitChanges, default: conformanceValue, readAcl, timed, }?: AttributeOptions<V>) => OptionalAttribute<T, F>;
/**
 * @deprecated
 */
export declare const WritableAttribute: <T, V extends T, F extends BitSchema>(id: number, schema: TlvSchema<T>, { scene, persistent, omitChanges, default: conformanceValue, readAcl, writeAcl, timed, }?: AttributeOptions<V>) => WritableAttribute<T, F>;
/**
 * @deprecated
 */
export declare const OptionalWritableAttribute: <T, V extends T, F extends BitSchema>(id: number, schema: TlvSchema<T>, { scene, persistent, omitChanges, default: conformanceValue, readAcl, writeAcl, timed, }?: AttributeOptions<V>) => OptionalWritableAttribute<T, F>;
/**
 * @deprecated
 */
export declare const FabricScopedAttribute: <T, V extends T, F extends BitSchema>(id: number, schema: TlvSchema<T>, { scene, persistent, omitChanges, default: conformanceValue, readAcl, timed, }?: AttributeOptions<V>) => FabricScopedAttribute<T, F>;
/**
 * @deprecated
 */
export declare const WritableFabricScopedAttribute: <T, V extends T, F extends BitSchema>(id: number, schema: TlvSchema<T>, { scene, persistent, omitChanges, default: conformanceValue, readAcl, writeAcl, timed, }?: AttributeOptions<V>) => WritableFabricScopedAttribute<T, F>;
/**
 * @deprecated
 */
export declare const OptionalWritableFabricScopedAttribute: <T, V extends T, F extends BitSchema>(id: number, schema: TlvSchema<T>, { scene, persistent, omitChanges, default: conformanceValue, readAcl, writeAcl, timed, }?: AttributeOptions<V>) => OptionalWritableFabricScopedAttribute<T, F>;
/**
 * @deprecated
 */
export declare const FixedAttribute: <T, V extends T, F extends BitSchema>(id: number, schema: TlvSchema<T>, { scene, persistent, omitChanges, default: conformanceValue, readAcl, timed, }?: AttributeOptions<V>) => FixedAttribute<T, F>;
/**
 * @deprecated
 */
export declare const WritableFixedAttribute: <T, V extends T, F extends BitSchema>(id: number, schema: TlvSchema<T>, { scene, persistent, omitChanges, default: conformanceValue, readAcl, timed, }?: AttributeOptions<V>) => FixedAttribute<T, F>;
/**
 * @deprecated
 */
export declare const OptionalFixedAttribute: <T, V extends T, F extends BitSchema>(id: number, schema: TlvSchema<T>, { scene, persistent, omitChanges, default: conformanceValue, readAcl, timed, }?: AttributeOptions<V>) => OptionalFixedAttribute<T, F>;
/**
 * @deprecated
 */
export interface Command<RequestT, ResponseT, _F extends BitSchema> {
    optional: boolean;
    requestId: CommandId;
    requestSchema: TlvSchema<RequestT>;
    responseId: CommandId;
    responseSchema: TlvSchema<ResponseT>;
    invokeAcl: AccessLevel;
    timed: boolean;
}
/**
 * @deprecated
 */
export interface OptionalCommand<RequestT, ResponseT, F extends BitSchema> extends Command<RequestT, ResponseT, F> {
    optional: true;
}
interface CommandOptions {
    invokeAcl?: AccessLevel;
    timed?: boolean;
}
/**
 * @deprecated
 */
export declare const Command: <RequestT, ResponseT, F extends BitSchema>(requestId: number, requestSchema: TlvSchema<RequestT>, responseId: number, responseSchema: TlvSchema<ResponseT>, { invokeAcl, timed }?: CommandOptions) => Command<RequestT, ResponseT, F>;
/**
 * @deprecated
 */
export declare const OptionalCommand: <RequestT, ResponseT, F extends BitSchema>(requestId: number, requestSchema: TlvSchema<RequestT>, responseId: number, responseSchema: TlvSchema<ResponseT>, { invokeAcl, timed }?: CommandOptions) => OptionalCommand<RequestT, ResponseT, F>;
/**
 * @deprecated
 */
export interface Event<T, _F extends BitSchema> {
    id: EventId;
    schema: TlvSchema<T>;
    priority: Priority;
    optional: boolean;
    readAcl: AccessLevel;
    unknown: boolean;
}
/**
 * @deprecated
 */
export interface OptionalEvent<T, F extends BitSchema> extends Event<T, F> {
    optional: true;
}
interface EventOptions {
    readAcl?: AccessLevel;
}
/**
 * @deprecated
 */
export declare const Event: <T, F extends BitSchema>(id: number, priority: Priority, schema: TlvSchema<T>, { readAcl }?: EventOptions) => Event<T, F>;
/**
 * @deprecated
 */
export declare const OptionalEvent: <T, F extends BitSchema>(id: number, priority: Priority, schema: TlvSchema<T>, { readAcl }?: EventOptions) => OptionalEvent<T, F>;
export {};
//# sourceMappingURL=RetiredElements.d.ts.map