/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
/*** THIS FILE IS GENERATED, DO NOT EDIT ***/
import { PowerSource } from "@matter/types/clusters/power-source";
import { ClusterBehavior } from "../../behavior/cluster/ClusterBehavior.js";
import { ClusterType } from "@matter/types";
import { Identity } from "@matter/general";
/**
 * PowerSourceBehavior is the base class for objects that support interaction with {@link PowerSource.Cluster}.
 *
 * PowerSource.Cluster requires you to enable one or more optional features. You can do so using
 * {@link PowerSourceBehavior.with}.
 */
export declare const PowerSourceBehaviorConstructor: ClusterBehavior.Type<ClusterType.Of<{
    readonly id: 47;
    readonly name: "PowerSource";
    readonly revision: 3;
    readonly features: {
        readonly wired: import("@matter/types").BitFlag;
        readonly battery: import("@matter/types").BitFlag;
        readonly rechargeable: import("@matter/types").BitFlag;
        readonly replaceable: import("@matter/types").BitFlag;
    };
    readonly attributes: {
        readonly status: import("@matter/types").Attribute<PowerSource.PowerSourceStatus, any>;
        readonly order: import("@matter/types").Attribute<number, any>;
        readonly description: import("@matter/types").FixedAttribute<string, any>;
        readonly endpointList: import("@matter/types").Attribute<import("@matter/types").EndpointNumber[], any>;
    };
    readonly extensions: readonly [{
        readonly flags: {
            readonly wired: true;
        };
        readonly component: {
            readonly attributes: {
                readonly wiredAssessedInputVoltage: import("@matter/types").OptionalAttribute<number | null, any>;
                readonly wiredAssessedInputFrequency: import("@matter/types").OptionalAttribute<number | null, any>;
                readonly wiredCurrentType: import("@matter/types").FixedAttribute<PowerSource.WiredCurrentType, any>;
                readonly wiredAssessedCurrent: import("@matter/types").OptionalAttribute<number | null, any>;
                readonly wiredNominalVoltage: import("@matter/types").OptionalFixedAttribute<number, any>;
                readonly wiredMaximumCurrent: import("@matter/types").OptionalFixedAttribute<number, any>;
                readonly wiredPresent: import("@matter/types").OptionalAttribute<boolean, any>;
                readonly activeWiredFaults: import("@matter/types").OptionalAttribute<PowerSource.WiredFault[], any>;
            };
            readonly events: {
                readonly wiredFaultChange: import("@matter/types").OptionalEvent<import("@matter/types").TypeFromFields<{
                    current: import("@matter/types").FieldType<PowerSource.WiredFault[]>;
                    previous: import("@matter/types").FieldType<PowerSource.WiredFault[]>;
                }>, any>;
            };
        };
    }, {
        readonly flags: {
            readonly battery: true;
        };
        readonly component: {
            readonly attributes: {
                readonly batVoltage: import("@matter/types").OptionalAttribute<number | null, any>;
                readonly batPercentRemaining: import("@matter/types").OptionalAttribute<number | null, any>;
                readonly batTimeRemaining: import("@matter/types").OptionalAttribute<number | null, any>;
                readonly batChargeLevel: import("@matter/types").Attribute<PowerSource.BatChargeLevel, any>;
                readonly batReplacementNeeded: import("@matter/types").Attribute<boolean, any>;
                readonly batReplaceability: import("@matter/types").FixedAttribute<PowerSource.BatReplaceability, any>;
                readonly batPresent: import("@matter/types").OptionalAttribute<boolean, any>;
                readonly activeBatFaults: import("@matter/types").OptionalAttribute<PowerSource.BatFault[], any>;
            };
            readonly events: {
                readonly batFaultChange: import("@matter/types").OptionalEvent<import("@matter/types").TypeFromFields<{
                    current: import("@matter/types").FieldType<PowerSource.BatFault[]>;
                    previous: import("@matter/types").FieldType<PowerSource.BatFault[]>;
                }>, any>;
            };
        };
    }, {
        readonly flags: {
            readonly replaceable: true;
        };
        readonly component: {
            readonly attributes: {
                readonly batReplacementDescription: import("@matter/types").FixedAttribute<string, any>;
                readonly batCommonDesignation: import("@matter/types").OptionalFixedAttribute<PowerSource.BatCommonDesignation, any>;
                readonly batAnsiDesignation: import("@matter/types").OptionalFixedAttribute<string, any>;
                readonly batIecDesignation: import("@matter/types").OptionalFixedAttribute<string, any>;
                readonly batApprovedChemistry: import("@matter/types").OptionalFixedAttribute<PowerSource.BatApprovedChemistry, any>;
                readonly batQuantity: import("@matter/types").FixedAttribute<number, any>;
            };
        };
    }, {
        readonly flags: {
            readonly replaceable: true;
        };
        readonly component: {
            readonly attributes: {
                readonly batCapacity: import("@matter/types").OptionalFixedAttribute<number, any>;
            };
        };
    }, {
        readonly flags: {
            readonly rechargeable: true;
        };
        readonly component: {
            readonly attributes: {
                readonly batCapacity: import("@matter/types").OptionalFixedAttribute<number, any>;
            };
        };
    }, {
        readonly flags: {
            readonly rechargeable: true;
        };
        readonly component: {
            readonly attributes: {
                readonly batChargeState: import("@matter/types").Attribute<PowerSource.BatChargeState, any>;
                readonly batTimeToFullCharge: import("@matter/types").OptionalAttribute<number | null, any>;
                readonly batFunctionalWhileCharging: import("@matter/types").Attribute<boolean, any>;
                readonly batChargingCurrent: import("@matter/types").OptionalAttribute<number | null, any>;
                readonly activeBatChargeFaults: import("@matter/types").OptionalAttribute<PowerSource.BatChargeFault[], any>;
            };
            readonly events: {
                readonly batChargeFaultChange: import("@matter/types").OptionalEvent<import("@matter/types").TypeFromFields<{
                    current: import("@matter/types").FieldType<PowerSource.BatChargeFault[]>;
                    previous: import("@matter/types").FieldType<PowerSource.BatChargeFault[]>;
                }>, any>;
            };
        };
    }, {
        readonly flags: {
            readonly rechargeable: true;
            readonly battery: false;
        };
        readonly component: false;
    }, {
        readonly flags: {
            readonly replaceable: true;
            readonly battery: false;
        };
        readonly component: false;
    }, {
        readonly flags: {
            readonly wired: true;
            readonly battery: true;
        };
        readonly component: false;
    }, {
        readonly flags: {
            readonly wired: false;
            readonly battery: false;
        };
        readonly component: false;
    }];
}>, typeof ClusterBehavior, {
    components: never[];
}>;
export interface PowerSourceBehaviorConstructor extends Identity<typeof PowerSourceBehaviorConstructor> {
}
export declare const PowerSourceBehavior: PowerSourceBehaviorConstructor;
export interface PowerSourceBehavior extends InstanceType<PowerSourceBehaviorConstructor> {
}
export declare namespace PowerSourceBehavior {
    interface State extends InstanceType<typeof PowerSourceBehavior.State> {
    }
}
//# sourceMappingURL=PowerSourceBehavior.d.ts.map