import type { _NSEvent } from "./NSEvent.js";
import type { _NSRulerMarker } from "./NSRulerMarker.js";
import type { _NSScrollView } from "./NSScrollView.js";
import type { _NSView } from "./NSView.js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSCoder } from "../Foundation/NSCoder.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { CGRect } from "../structs/CGRect.js";
import type { NSRulerOrientation } from "./NSRulerOrientation.js";
import type { NSRulerViewUnitName } from "./NSRulerViewUnitName.js";
export declare class _NSRulerView extends _NSView {
    static alloc(): _NSRulerView;
    static new(): _NSRulerView;
    init(): _NSRulerView;
    /** *********************** Registering new units ************************ */
    static registerUnitWithName$abbreviation$unitToPointsConversionFactor$stepUpCycle$stepDownCycle$(unitName: NSRulerViewUnitName, abbreviation: _NSString, conversionFactor: number, stepUpCycle: _NSArray, stepDownCycle: _NSArray): void;
    /** ************************** Initialization *************************** */
    initWithCoder$(coder: _NSCoder): _NSRulerView;
    initWithScrollView$orientation$(scrollView: _NSScrollView | null, orientation: NSRulerOrientation): _NSRulerView;
    addMarker$(marker: _NSRulerMarker): void;
    removeMarker$(marker: _NSRulerMarker): void;
    /**
     * Ruler objects sit on the ruler at a specific location. They can be manipulatable by the user, and if they are manipulated the current client is informed of the change. Once a bunch of objects has been set, objects can be added or removed individually.
     */
    trackMarker$withMouseEvent$(marker: _NSRulerMarker, event: _NSEvent): boolean;
    /**
     * A rulers accessory view is drawn below or to the right of the rule. It can contain arbitrary controls.
     */
    moveRulerlineFromLocation$toLocation$(oldLocation: number, newLocation: number): void;
    /** ********************* Drawing and hash invalidation ********************** */
    invalidateHashMarks(): void;
    /**
     * Forces recalculation of the hash mark dictionary next time any display is done. You should not generally have to call this method.
     */
    drawHashMarksAndLabelsInRect$(rect: CGRect): void;
    /**
     * You should never need to call this, but you might want to override it. This method is called by -drawRect: to draw the actual hash marks and labels on the ruler.
     */
    drawMarkersInRect$(rect: CGRect): void;
    /** ************************** Basic setup *************************** */
    scrollView(): _NSScrollView | null;
    setScrollView$(value: _NSScrollView | null): void;
    /**
     * A ruler uses its scrollView to finds its document view to see whether it should be flipped. The set method is generally called only by the scroll view itself. You should not have to set this.
     */
    orientation(): NSRulerOrientation;
    setOrientation$(value: NSRulerOrientation): void;
    /** ************************** Ruler geometry *************************** */
    baselineLocation(): number;
    /**
     * Returns the location of the baseline. The location is a y position for horizontal rulers and an x position for vertical ones. The value is based on the sizes of the various areas of the ruler, some of which can be set below.
     */
    requiredThickness(): number;
    /**
     * The required height for a horizontal ruler or the required width for a vertical ruler. Used by the scrollview when tiling. The value is based on the sizes of the various areas of the ruler, some of which can be set below.
     */
    ruleThickness(): number;
    setRuleThickness$(value: number): void;
    /**
     * The rule size is the height of the area used to draw the ruler hash marks in a horizontal ruler or the width of that area in a vertical ruler. This value will be interpretted in the coordinate system of the ruler's superview (like the ruler's frame).
     */
    reservedThicknessForMarkers(): number;
    setReservedThicknessForMarkers$(value: number): void;
    /**
     * This indicates to the ruler how much room it should leave for objects which sit above or to the left of the rule (such as tab stops, margins, etc...). Default is 15.0. If you expect that no view in your document view will ever put objects on the ruler, you can set this to 0.0. If objects are ever set on the ruler, and not enough space was reserved for them, the ruler grows itself and retiles the scroll view.
     */
    reservedThicknessForAccessoryView(): number;
    setReservedThicknessForAccessoryView$(value: number): void;
    /** ************************** Rule configuration *************************** */
    measurementUnits(): NSRulerViewUnitName;
    setMeasurementUnits$(value: NSRulerViewUnitName): void;
    /**
     * The units of the ruler start out with the user's preferred measurement. They can be changed if desired. The units set must be registered with the ruler factory. By default Inches, Centimeters, Picas, and Points are supported.
     */
    originOffset(): number;
    setOriginOffset$(value: number): void;
    /** ************************** Client view setup *************************** */
    clientView(): _NSView | null;
    setClientView$(value: _NSView | null): void;
    markers(): _NSArray | null;
    setMarkers$(value: _NSArray | null): void;
    /**
     * Given a ruler object and a mouse event (either MouseDown or MouseDragged) this will take over the tracking of the mouse until MouseUp. While tracking it will snap to the baseline of the ruler when it gets within a certain distance. At that point it becomes stuck to the baseline (this may happen immediately) and won't come off below (or to the right of) the ruler. It may still be dragged off the baseline upward (or leftward) if its removable. It is strongly recommended that any ruler object that acan be added to the ruler should be removable as well and it must be movable. When the mouse goes up, if the object is currently stuck to the baseline it is added to the ruler (and the client object is notified), if its not stuck on the baseline, it is not added.
     */
    accessoryView(): _NSView | null;
    setAccessoryView$(value: _NSView | null): void;
    /** ************************** Key overrides *************************** */
    flipped(): boolean;
}
