import '../../globals.js';
import StrictOmit from '../../phet-core/js/types/StrictOmit.js';
import Tandem from '../../tandem/js/Tandem.js';
import { BooleanPropertyOptions } from './BooleanProperty.js';
import { DerivedProperty2, DerivedPropertyOptions } from './DerivedProperty.js';
import TProperty from './TProperty.js';
import TReadOnlyProperty from './TReadOnlyProperty.js';
type SelfOptions = {
    tandemName?: string;
    selfTandemName?: string;
    selfBooleanInitialValue?: boolean;
    selfBooleanPropertyOptions?: BooleanPropertyOptions;
};
type ParentOptions = DerivedPropertyOptions<boolean>;
type GatedBooleanPropertyOptions = SelfOptions & StrictOmit<ParentOptions, 'tandem'>;
declare class GatedBooleanProperty extends DerivedProperty2<boolean, boolean, boolean> {
    readonly selfBooleanProperty: TProperty<boolean>;
    constructor(providedBooleanProperty: TReadOnlyProperty<boolean>, parentTandem: Tandem, providedOptions?: GatedBooleanPropertyOptions);
    dispose(): void;
}
export declare class GatedVisibleProperty extends GatedBooleanProperty {
    constructor(providedBooleanProperty: TReadOnlyProperty<boolean>, parentTandem: Tandem, providedOptions?: GatedBooleanPropertyOptions);
}
export declare class GatedEnabledProperty extends GatedBooleanProperty {
    constructor(providedBooleanProperty: TReadOnlyProperty<boolean>, parentTandem: Tandem, providedOptions?: GatedBooleanPropertyOptions);
}
export default GatedBooleanProperty;
//# sourceMappingURL=GatedBooleanProperty.d.ts.map