import '../../assert/js/assert.js';
import '../../tandem/js/PhetioIDUtils.js';
import '../../globals.js';
/**
 * Base class that defines a settable Property that determines whether the Object is enabled or not. This includes
 * support for phet-io instrumentation and a variety of options to customize the enabled Property as well as how it is
 * created.
 *
 * @author Michael Kauzmann (PhET Interactive Simulations)
 * @author Sam Reid (PhET Interactive Simulations)
 */
import { EnabledPropertyOptions } from './EnabledProperty.js';
import TProperty from './TProperty.js';
import TReadOnlyProperty from './TReadOnlyProperty.js';
import Disposable, { DisposableOptions } from './Disposable.js';
import { PhetioObjectOptions } from '../../tandem/js/PhetioObject.js';
type SelfOptions = {
    enabledProperty?: TReadOnlyProperty<boolean> | null;
    enabled?: boolean;
    enabledPropertyOptions?: EnabledPropertyOptions | null;
    phetioEnabledPropertyInstrumented?: boolean;
} & Pick<PhetioObjectOptions, 'tandem'>;
export type EnabledComponentOptions = SelfOptions & DisposableOptions;
export default class EnabledComponent extends Disposable {
    enabledProperty: TProperty<boolean>;
    private disposeEnabledComponent;
    constructor(providedOptions?: EnabledComponentOptions);
    private setEnabled;
    set enabled(value: boolean);
    get enabled(): boolean;
    isEnabled(): boolean;
    dispose(): void;
}
export {};
//# sourceMappingURL=EnabledComponent.d.ts.map