/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { Val } from "@matter/protocol";
/**
 * State is a plain JS object.
 *
 * Any constructor invokable with no arguments may define a state structure.
 */
export interface StateType {
    new (): {};
}
/**
 * This is used as state in base classes.
 */
export declare const EmptyState: new () => {};
/**
 * DerivedState is a programmatic extension of state.
 */
export interface DerivedState<Base extends StateType = StateType, Extension extends {} = {}> {
    new (): InstanceType<Base> & Extension;
}
/**
 * Extend state with additional values.
 */
export declare function DerivedState<const Base extends StateType, const Extension extends Val.Struct>({ base, values, name }: DerivedState.Options<Base, Extension>): DerivedState<Base, Extension>;
export declare namespace DerivedState {
    interface Options<Base extends StateType, Values extends Val.Struct> {
        values: Values;
        base?: Base;
        name?: string;
    }
}
//# sourceMappingURL=StateType.d.ts.map