import type { NobjcObject } from "objc-js";
import type { _NSAffineTransform } from "../Foundation/NSAffineTransform.js";
import type { _NSCopying } from "../Foundation/NSCopying.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSSecureCoding } from "../Foundation/NSSecureCoding.js";
import type { _NSFont } from "./NSFont.js";
import type { CGPoint } from "../structs/CGPoint.js";
import type { CGRect } from "../structs/CGRect.js";
import type { NSBezierPathElement } from "./NSBezierPathElement.js";
import type { NSLineCapStyle } from "./NSLineCapStyle.js";
import type { NSLineJoinStyle } from "./NSLineJoinStyle.js";
import type { NSWindingRule } from "./NSWindingRule.js";
export declare class _NSBezierPath extends _NSObject {
    static alloc(): _NSBezierPath;
    static new(): _NSBezierPath;
    init(): _NSBezierPath;
    /** Creating common paths. */
    static bezierPath(): _NSBezierPath;
    static bezierPathWithRect$(rect: CGRect): _NSBezierPath;
    static bezierPathWithOvalInRect$(rect: CGRect): _NSBezierPath;
    static bezierPathWithRoundedRect$xRadius$yRadius$(rect: CGRect, xRadius: number, yRadius: number): _NSBezierPath;
    static bezierPathWithCGPath$(cgPath: Uint8Array): _NSBezierPath;
    /** Immediate mode drawing of common paths. */
    static fillRect$(rect: CGRect): void;
    static strokeRect$(rect: CGRect): void;
    static clipRect$(rect: CGRect): void;
    static strokeLineFromPoint$toPoint$(point1: CGPoint, point2: CGPoint): void;
    static drawPackedGlyphs$atPoint$(packedGlyphs: string, point: CGPoint): void;
    /** Default path rendering parameters. */
    static defaultMiterLimit(): number;
    static setDefaultMiterLimit$(value: number): void;
    static defaultFlatness(): number;
    static setDefaultFlatness$(value: number): void;
    static defaultWindingRule(): NSWindingRule;
    static setDefaultWindingRule$(value: NSWindingRule): void;
    static defaultLineCapStyle(): NSLineCapStyle;
    static setDefaultLineCapStyle$(value: NSLineCapStyle): void;
    static defaultLineJoinStyle(): NSLineJoinStyle;
    static setDefaultLineJoinStyle$(value: NSLineJoinStyle): void;
    static defaultLineWidth(): number;
    static setDefaultLineWidth$(value: number): void;
    /** Path construction. */
    moveToPoint$(point: CGPoint): void;
    lineToPoint$(point: CGPoint): void;
    curveToPoint$controlPoint1$controlPoint2$(endPoint: CGPoint, controlPoint1: CGPoint, controlPoint2: CGPoint): void;
    curveToPoint$controlPoint$(endPoint: CGPoint, controlPoint: CGPoint): void;
    closePath(): void;
    removeAllPoints(): void;
    /** Relative path construction. */
    relativeMoveToPoint$(point: CGPoint): void;
    relativeLineToPoint$(point: CGPoint): void;
    relativeCurveToPoint$controlPoint1$controlPoint2$(endPoint: CGPoint, controlPoint1: CGPoint, controlPoint2: CGPoint): void;
    relativeCurveToPoint$controlPoint$(endPoint: CGPoint, controlPoint: CGPoint): void;
    getLineDash$count$phase$(pattern: NobjcObject | null, count: NobjcObject | null, phase: NobjcObject | null): void;
    setLineDash$count$phase$(pattern: NobjcObject | null, count: number, phase: number): void;
    /** Path operations. */
    stroke(): void;
    fill(): void;
    addClip(): void;
    setClip(): void;
    /** Applying transformations. */
    transformUsingAffineTransform$(transform: _NSAffineTransform): void;
    /**
     * `points' should contain space for at least three points. `points' may be NULL. In the case of NSBezierPathElementCurveTo, the order of the points is controlPoint1 (points[0]), controlPoint2 (points[1]), endPoint (points[2]).
     */
    elementAtIndex$associatedPoints$(index: number, points: NobjcObject | null): NSBezierPathElement;
    /** As above with points == NULL. */
    elementAtIndex$(index: number): NSBezierPathElement;
    setAssociatedPoints$atIndex$(points: NobjcObject | null, index: number): void;
    /** Appending common paths */
    appendBezierPath$(path: _NSBezierPath): void;
    appendBezierPathWithRect$(rect: CGRect): void;
    appendBezierPathWithPoints$count$(points: NobjcObject, count: number): void;
    appendBezierPathWithOvalInRect$(rect: CGRect): void;
    appendBezierPathWithArcWithCenter$radius$startAngle$endAngle$clockwise$(center: CGPoint, radius: number, startAngle: number, endAngle: number, clockwise: boolean): void;
    /** As above with clockwise == NO. */
    appendBezierPathWithArcWithCenter$radius$startAngle$endAngle$(center: CGPoint, radius: number, startAngle: number, endAngle: number): void;
    appendBezierPathWithArcFromPoint$toPoint$radius$(point1: CGPoint, point2: CGPoint, radius: number): void;
    appendBezierPathWithCGGlyph$inFont$(glyph: number, font: _NSFont): void;
    appendBezierPathWithCGGlyphs$count$inFont$(glyphs: NobjcObject, count: number, font: _NSFont): void;
    /** Appends paths for a rounded rectangle. */
    appendBezierPathWithRoundedRect$xRadius$yRadius$(rect: CGRect, xRadius: number, yRadius: number): void;
    /**
     * Hit detection.
     * @deprecated
     */
    containsPoint$(point: CGPoint): boolean;
    /** @deprecated */
    cachesBezierPath(): boolean;
    /** @deprecated */
    setCachesBezierPath$(flag: boolean): void;
    /**
     * The following NSGlyph-related methods are deprecated. Use corresponding CGGlyph-based methods instead
     * @deprecated Use -appendBezierPathWithCGGlyph:inFont: instead
     */
    appendBezierPathWithGlyph$inFont$(glyph: number, font: _NSFont): void;
    /** @deprecated Use -appendBezierPathWithCGGlyphs:count:inFont: instead */
    appendBezierPathWithGlyphs$count$inFont$(glyphs: NobjcObject, count: number, font: _NSFont): void;
    /** @deprecated Use -appendBezierPathWithCGGlyphs:count:inFont: instead */
    appendBezierPathWithPackedGlyphs$(packedGlyphs: string): void;
    /**
     * Getting the CGPath property returns a copied, autoreleasing, immutable CGPathRef; The CGPathRef will only match the NSBezierPath until the NSBezierPath is mutated. Setting the CGPath property will create an immutable copy of the provided CGPathRef; Any further mutations of the path will not effect the NSBezierPath.
     */
    CGPath(): NobjcObject;
    setCGPath$(value: Uint8Array): void;
    /** Path rendering parameters. */
    lineWidth(): number;
    setLineWidth$(value: number): void;
    lineCapStyle(): NSLineCapStyle;
    setLineCapStyle$(value: NSLineCapStyle): void;
    lineJoinStyle(): NSLineJoinStyle;
    setLineJoinStyle$(value: NSLineJoinStyle): void;
    windingRule(): NSWindingRule;
    setWindingRule$(value: NSWindingRule): void;
    miterLimit(): number;
    setMiterLimit$(value: number): void;
    flatness(): number;
    setFlatness$(value: number): void;
    /** Path modifications. */
    bezierPathByFlatteningPath(): _NSBezierPath;
    bezierPathByReversingPath(): _NSBezierPath;
    /** Path info */
    empty(): boolean;
    currentPoint(): CGPoint;
    controlPointBounds(): CGRect;
    bounds(): CGRect;
    /** Elements. */
    elementCount(): number;
}
export interface _NSBezierPath extends _NSCopying, _NSSecureCoding {
}
