import type { _NSCoder } from "../Foundation/NSCoder.js";
import type { _NSCopying } from "../Foundation/NSCopying.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSEvent } from "./NSEvent.js";
import type { _NSImage } from "./NSImage.js";
import type { _NSRulerView } from "./NSRulerView.js";
import type { CGPoint } from "../structs/CGPoint.js";
import type { CGRect } from "../structs/CGRect.js";
export declare class _NSRulerMarker extends _NSObject {
    static alloc(): _NSRulerMarker;
    static new(): _NSRulerMarker;
    init(): _NSRulerMarker;
    /**
     * Designated initializer. Location is expressed in the client view's bounds coordinates. Location is the x position if the ruler is horizontal or the y position if the ruler is vertical. The image will not be scaled or rotated. The image origin indicates the point in the image that will be placed on the ruler's baseline at the given location and is expressed in the image's coordinate system. NSRulerMarkers are movable but not removable by default. A removable object should have its dimmed image set.
     */
    initWithRulerView$markerLocation$image$imageOrigin$(ruler: _NSRulerView, location: number, image: _NSImage, imageOrigin: CGPoint): _NSRulerMarker;
    initWithCoder$(coder: _NSCoder): _NSRulerMarker;
    /** Draws the object at it's current location. Only rect needs to be drawn. */
    drawRect$(rect: CGRect): void;
    /**
     * Handles the given mmouseDown event. Performs a modal tracking loop until mouseUp allowing the object to be moved, if movable or removed, if removable.
     */
    trackMouse$adding$(mouseDownEvent: _NSEvent, isAdding: boolean): boolean;
    /** Returns the ruler. */
    ruler(): _NSRulerView | null;
    /**
     * The location is set by the -init... method and the -setLocation: method. Location is an x position for horizontal rulers or a y position for vertical rulers. It is expressed in the client view's coordinate system.
     */
    markerLocation(): number;
    setMarkerLocation$(value: number): void;
    /** The image is what's drawn in the ruler. */
    image(): _NSImage;
    setImage$(value: _NSImage): void;
    /**
     * The image is drawn such that the image origin is on the baseline of the ruler at the object's location.
     */
    imageOrigin(): CGPoint;
    setImageOrigin$(value: CGPoint): void;
    /**
     * Objects are movable, but not removable by default. Movable means the ruler object can be dragged by the user. Removable means it can be deleted by the user.
     */
    movable(): boolean;
    setMovable$(value: boolean): void;
    removable(): boolean;
    setRemovable$(value: boolean): void;
    /** Returns YES if the ruler object is currently being dragged. */
    dragging(): boolean;
    /**
     * The representedObject of an NSRulerMarker is purely for the client's use. It must be able to copy itself. A represented object should be some small object. The text object uses NSStrings for most ruler objects or NSTextTab objects for tab stops.
     */
    representedObject(): _NSCopying | null;
    setRepresentedObject$(value: _NSCopying | null): void;
    /**
     * Returns the rect that would be occupied by the object's image in the ruler's bounds coordinates. This takes the flippedness of the ruler into account.
     */
    imageRectInRuler(): CGRect;
    /**
     * Returns the height or width (depending on the ruler's orientation) required in the ruler to display the object.
     */
    thicknessRequiredInRuler(): number;
}
export interface _NSRulerMarker extends _NSCopying {
}
