import '../../../tandem/js/PhetioIDUtils.js';
import '../../../globals.js';
/**
 * The GatedVisibleProperty class abstracts the process of creating a "gated" visibility Property
 * designed for PhET-iO integration. This pattern comes in handy when an object's visibility is already controlled
 * within the simulation, but there is a need to grant additional visibility control to an external entity,
 * such as a studio or a PhET-iO client.
 *
 * @author Marla Schulz (PhET Interactive Simulations)
 * @author Michael Kauzmann (PhET Interactive Simulations)
 */
import { BooleanPropertyOptions } from '../../../axon/js/BooleanProperty.js';
import { DerivedProperty2, DerivedPropertyOptions } from '../../../axon/js/DerivedProperty.js';
import TProperty from '../../../axon/js/TProperty.js';
import TReadOnlyProperty from '../../../axon/js/TReadOnlyProperty.js';
import StrictOmit from '../../../phet-core/js/types/StrictOmit.js';
import Tandem from '../../../tandem/js/Tandem.js';
type SelfOptions = {
    selfVisibleInitiallyVisible?: boolean;
    selfVisiblePropertyOptions?: BooleanPropertyOptions;
};
type ParentOptions = DerivedPropertyOptions<boolean>;
type GatedVisiblePropertyOptions = SelfOptions & StrictOmit<ParentOptions, 'tandem'>;
declare class GatedVisibleProperty extends DerivedProperty2<boolean, boolean, boolean> {
    readonly selfVisibleProperty: TProperty<boolean>;
    constructor(providedVisibleProperty: TReadOnlyProperty<boolean>, parentTandem: Tandem, providedOptions?: GatedVisiblePropertyOptions);
    dispose(): void;
}
export default GatedVisibleProperty;
//# sourceMappingURL=GatedVisibleProperty.d.ts.map