/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { ClusterBehavior } from "../../behavior/cluster/ClusterBehavior.js";
import { ClusterType } from "@matter/types";
import { Identity } from "@matter/general";
/**
 * SwitchBehavior is the base class for objects that support interaction with {@link Switch.Cluster}.
 *
 * Switch.Cluster requires you to enable one or more optional features. You can do so using {@link SwitchBehavior.with}.
 */
export declare const SwitchBehaviorConstructor: ClusterBehavior.Type<ClusterType.Of<{
    readonly id: 59;
    readonly name: "Switch";
    readonly revision: 2;
    readonly features: {
        readonly latchingSwitch: import("@matter/types").BitFlag;
        readonly momentarySwitch: import("@matter/types").BitFlag;
        readonly momentarySwitchRelease: import("@matter/types").BitFlag;
        readonly momentarySwitchLongPress: import("@matter/types").BitFlag;
        readonly momentarySwitchMultiPress: import("@matter/types").BitFlag;
        readonly actionSwitch: import("@matter/types").BitFlag;
    };
    readonly attributes: {
        readonly numberOfPositions: import("@matter/types").FixedAttribute<number, any>;
        readonly currentPosition: import("@matter/types").Attribute<number, any>;
    };
    readonly extensions: readonly [{
        readonly flags: {
            readonly momentarySwitchMultiPress: true;
        };
        readonly component: {
            readonly attributes: {
                readonly multiPressMax: import("@matter/types").FixedAttribute<number, any>;
            };
            readonly events: {
                readonly multiPressComplete: import("@matter/types").Event<import("@matter/types").TypeFromFields<{
                    previousPosition: import("@matter/types").FieldType<number>;
                    totalNumberOfPressesCounted: import("@matter/types").FieldType<number>;
                }>, any>;
            };
        };
    }, {
        readonly flags: {
            readonly latchingSwitch: true;
        };
        readonly component: {
            readonly events: {
                readonly switchLatched: import("@matter/types").Event<import("@matter/types").TypeFromFields<{
                    newPosition: import("@matter/types").FieldType<number>;
                }>, any>;
            };
        };
    }, {
        readonly flags: {
            readonly momentarySwitch: true;
        };
        readonly component: {
            readonly events: {
                readonly initialPress: import("@matter/types").Event<import("@matter/types").TypeFromFields<{
                    newPosition: import("@matter/types").FieldType<number>;
                }>, any>;
            };
        };
    }, {
        readonly flags: {
            readonly momentarySwitchLongPress: true;
        };
        readonly component: {
            readonly events: {
                readonly longPress: import("@matter/types").Event<import("@matter/types").TypeFromFields<{
                    newPosition: import("@matter/types").FieldType<number>;
                }>, any>;
                readonly longRelease: import("@matter/types").Event<import("@matter/types").TypeFromFields<{
                    previousPosition: import("@matter/types").FieldType<number>;
                }>, any>;
            };
        };
    }, {
        readonly flags: {
            readonly momentarySwitchRelease: true;
        };
        readonly component: {
            readonly events: {
                readonly shortRelease: import("@matter/types").Event<import("@matter/types").TypeFromFields<{
                    previousPosition: import("@matter/types").FieldType<number>;
                }>, any>;
            };
        };
    }, {
        readonly flags: {
            readonly momentarySwitchMultiPress: true;
            readonly actionSwitch: false;
        };
        readonly component: {
            readonly events: {
                readonly multiPressOngoing: import("@matter/types").Event<import("@matter/types").TypeFromFields<{
                    newPosition: import("@matter/types").FieldType<number>;
                    currentNumberOfPressesCounted: import("@matter/types").FieldType<number>;
                }>, any>;
            };
        };
    }, {
        readonly flags: {
            readonly momentarySwitchRelease: true;
            readonly momentarySwitch: false;
        };
        readonly component: false;
    }, {
        readonly flags: {
            readonly momentarySwitchRelease: true;
            readonly actionSwitch: true;
        };
        readonly component: false;
    }, {
        readonly flags: {
            readonly momentarySwitchLongPress: true;
            readonly momentarySwitch: false;
        };
        readonly component: false;
    }, {
        readonly flags: {
            readonly momentarySwitchLongPress: true;
            readonly momentarySwitchRelease: false;
            readonly actionSwitch: false;
        };
        readonly component: false;
    }, {
        readonly flags: {
            readonly actionSwitch: true;
            readonly momentarySwitchMultiPress: false;
        };
        readonly component: false;
    }, {
        readonly flags: {
            readonly actionSwitch: false;
            readonly momentarySwitchMultiPress: true;
            readonly momentarySwitch: false;
        };
        readonly component: false;
    }, {
        readonly flags: {
            readonly actionSwitch: false;
            readonly momentarySwitchMultiPress: true;
            readonly momentarySwitchRelease: false;
        };
        readonly component: false;
    }, {
        readonly flags: {
            readonly actionSwitch: true;
            readonly momentarySwitch: false;
        };
        readonly component: false;
    }, {
        readonly flags: {
            readonly latchingSwitch: true;
            readonly momentarySwitch: true;
        };
        readonly component: false;
    }, {
        readonly flags: {
            readonly latchingSwitch: false;
            readonly momentarySwitch: false;
        };
        readonly component: false;
    }];
}>, typeof ClusterBehavior, {
    components: never[];
}>;
export interface SwitchBehaviorConstructor extends Identity<typeof SwitchBehaviorConstructor> {
}
export declare const SwitchBehavior: SwitchBehaviorConstructor;
export interface SwitchBehavior extends InstanceType<SwitchBehaviorConstructor> {
}
export declare namespace SwitchBehavior {
    interface State extends InstanceType<typeof SwitchBehavior.State> {
    }
}
//# sourceMappingURL=SwitchBehavior.d.ts.map