import type { PropertyDefs, SerializeMode } from "../support/Serializable.js";
import { Settings } from "../support/Settings.js";
/**
 * Properties that specify constant values for the map/scene's viewpoint, while
 * it is being synchronized with another map.
 */
export interface ViewSyncConstraints {
    /**
     * The compass heading of the scene's camera. Valid values include numeric
     * degrees (0-360), or a string indicating a compass direction ("N", "S",
     * "E", "W").
     */
    heading?: number | string;
    /**
     * The tilt of the scene's camera in degrees with respect to the surface as
     * projected down from the camera position.
     */
    tilt?: number;
}
/**
 * Properties that can be passed into the constructor for {@link MapConstraints}.
 */
export interface MapConstraintsProperties {
    /**
     * See {@link MapConstraints.minScale}.
     */
    minScale?: number;
    /**
     * See {@link MapConstraints.maxScale}.
     */
    maxScale?: number;
    /**
     * See {@link MapConstraints.snapToZoom}.
     */
    snapToZoom?: boolean;
    /**
     * See {@link MapConstraints.rotationEnabled}.
     */
    rotationEnabled?: boolean;
    /**
     * See {@link ViewSyncConstraints}.
     */
    viewSync?: ViewSyncConstraints;
}
/**
 * Settings that pertain to map constraints.
 */
export declare class MapConstraints extends Settings<MapConstraintsProperties> {
    /**
     * The minimum scale the user is allowed to zoom to within the view.
     */
    get minScale(): number;
    set minScale(value: number);
    /**
     * The maximum scale the user is allowed to zoom to within the view. Setting
     * this value to 0 allows the user to over-zoom layer tiles.
     */
    get maxScale(): number;
    set maxScale(value: number);
    /**
     * When true, the view snaps to the next LOD when zooming in or out. When
     * false, the zoom is continuous. The default is false.
     */
    get snapToZoom(): boolean;
    set snapToZoom(value: boolean);
    /**
     * Indicates whether the user can rotate the map. The default is true.
     */
    get rotationEnabled(): boolean;
    set rotationEnabled(value: boolean);
    /**
     * Properties on the view that get constrained when it is synchronized with
     * another map.
     */
    get viewSync(): ViewSyncConstraints;
    set viewSync(value: ViewSyncConstraints);
    toJSON(serializeMode?: SerializeMode): MapConstraintsProperties;
    protected _getSerializableProperties(): PropertyDefs<MapConstraintsProperties>;
}
