/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { ClusterBehavior } from "../../behavior/cluster/ClusterBehavior.js";
import { ClusterType } from "#types";
import { Identity } from "#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("#types").BitFlag;
        readonly momentarySwitch: import("#types").BitFlag;
        readonly momentarySwitchRelease: import("#types").BitFlag;
        readonly momentarySwitchLongPress: import("#types").BitFlag;
        readonly momentarySwitchMultiPress: import("#types").BitFlag;
        readonly actionSwitch: import("#types").BitFlag;
    };
    readonly attributes: {
        readonly numberOfPositions: import("#types").FixedAttribute<number, any>;
        readonly currentPosition: import("#types").Attribute<number, any>;
    };
    readonly extensions: readonly [{
        readonly flags: {
            readonly momentarySwitchMultiPress: true;
        };
        readonly component: {
            readonly attributes: {
                readonly multiPressMax: import("#types").FixedAttribute<number, any>;
            };
            readonly events: {
                readonly multiPressComplete: import("#types").Event<import("#types").TypeFromFields<{
                    previousPosition: import("#types").FieldType<number>;
                    totalNumberOfPressesCounted: import("#types").FieldType<number>;
                }>, any>;
            };
        };
    }, {
        readonly flags: {
            readonly latchingSwitch: true;
        };
        readonly component: {
            readonly events: {
                readonly switchLatched: import("#types").Event<import("#types").TypeFromFields<{
                    newPosition: import("#types").FieldType<number>;
                }>, any>;
            };
        };
    }, {
        readonly flags: {
            readonly momentarySwitch: true;
        };
        readonly component: {
            readonly events: {
                readonly initialPress: import("#types").Event<import("#types").TypeFromFields<{
                    newPosition: import("#types").FieldType<number>;
                }>, any>;
            };
        };
    }, {
        readonly flags: {
            readonly momentarySwitchLongPress: true;
        };
        readonly component: {
            readonly events: {
                readonly longPress: import("#types").Event<import("#types").TypeFromFields<{
                    newPosition: import("#types").FieldType<number>;
                }>, any>;
                readonly longRelease: import("#types").Event<import("#types").TypeFromFields<{
                    previousPosition: import("#types").FieldType<number>;
                }>, any>;
            };
        };
    }, {
        readonly flags: {
            readonly momentarySwitchRelease: true;
        };
        readonly component: {
            readonly events: {
                readonly shortRelease: import("#types").Event<import("#types").TypeFromFields<{
                    previousPosition: import("#types").FieldType<number>;
                }>, any>;
            };
        };
    }, {
        readonly flags: {
            readonly momentarySwitchMultiPress: true;
            readonly actionSwitch: false;
        };
        readonly component: {
            readonly events: {
                readonly multiPressOngoing: import("#types").Event<import("#types").TypeFromFields<{
                    newPosition: import("#types").FieldType<number>;
                    currentNumberOfPressesCounted: import("#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