import type { NobjcObject } from "objc-js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSCopying } from "../Foundation/NSCopying.js";
import type { _NSDate } from "../Foundation/NSDate.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _PKFloatRange } from "./PKFloatRange.js";
import type { _PKStrokePoint } from "./PKStrokePoint.js";
import type { CGPoint } from "../structs/CGPoint.js";
export declare class _PKStrokePath extends _NSObject {
    static alloc(): _PKStrokePath;
    static new(): _PKStrokePath;
    init(): _PKStrokePath;
    /**
     * Create a stroke path value with the given cubic B-spline control points. @param controlPoints An array of control points for a cubic B-spline. @param creationDate The start time of this path.
     */
    initWithControlPoints$creationDate$(controlPoints: _NSArray, creationDate: _NSDate): _PKStrokePath;
    /** Returns B-spline control point at index `i`. */
    pointAtIndex$(i: number): _PKStrokePoint;
    /** Returns B-spline control point at index `i`. */
    objectAtIndexedSubscript$(i: number): _PKStrokePoint;
    /**
     * The on-curve location for the floating point [0, count-1] `parametricValue` parameter. This has better performance than `[self interpolatedPointAt: parametricValue].location` for when only the location is required.
     */
    interpolatedLocationAt$(parametricValue: number): CGPoint;
    /**
     * The on-curve point for the floating point [0, count-1] `parametricValue` parameter.
     */
    interpolatedPointAt$(parametricValue: number): _PKStrokePoint;
    /**
     * Executes a given block using each point in a range with a distance step. @param range The parametric range to enumerate points in. @param distanceStep The distance to step between points. @param block The block to execute for each point. This block takes two parameters point The interpolated point on the spline. stop A reference to a Boolean value. Setting the value to YES within the block stops further enumeration of the array. If a block stops further enumeration, that block continues to run until it’s finished.
     */
    enumerateInterpolatedPointsInRange$strideByDistance$usingBlock$(range: _PKFloatRange, distanceStep: number, block: (point: _PKStrokePoint, stop: NobjcObject) => void): void;
    /**
     * Executes a given block using each point in a range with a time step. @param range The parametric range to enumerate points in. @param timeStep The time interval to step between points. @param block The block to execute for each point. This block takes two parameters point The interpolated point on the spline. stop A reference to a Boolean value. Setting the value to YES within the block stops further enumeration of the array. If a block stops further enumeration, that block continues to run until it’s finished.
     */
    enumerateInterpolatedPointsInRange$strideByTime$usingBlock$(range: _PKFloatRange, timeStep: number, block: (point: _PKStrokePoint, stop: NobjcObject) => void): void;
    /**
     * Executes a given block using each point in a range with a parametric step. @param range The parametric range to enumerate points in. @param parametricStep The parametric step between points. @param block The block to execute for each point. This block takes two parameters point The interpolated point on the spline. stop A reference to a Boolean value. Setting the value to YES within the block stops further enumeration of the array. If a block stops further enumeration, that block continues to run until it’s finished.
     */
    enumerateInterpolatedPointsInRange$strideByParametricStep$usingBlock$(range: _PKFloatRange, parametricStep: number, block: (point: _PKStrokePoint, stop: NobjcObject) => void): void;
    /**
     * Returns a parametric value on the B-spline that is a specified distance from the given parametric value. @param parametricValue The floating point [0, count-1] parametric value. @param distanceStep The distance to offset `parametricValue`. `distanceStep` can be positive or negative. @return A parametric value offset by `distanceStep` from `parametricValue`.
     */
    parametricValue$offsetByDistance$(parametricValue: number, distanceStep: number): number;
    /**
     * Returns a parametric value on the B-spline that is a specified time from the given parametric value. @param parametricValue The floating point [0, count-1] parametric value. @param timeStep The time to offset `parametricValue`. `timeStep` can be positive or negative. @return A parametric value offset by `timeStep` from `parametricValue`.
     */
    parametricValue$offsetByTime$(parametricValue: number, timeStep: number): number;
    /** The number of control points in this stroke path. */
    count(): number;
    /**
     * The time at which this stroke path was started. The `timeOffset` of contained PKStrokePoints is relative to this date.
     */
    creationDate(): _NSDate;
}
export interface _PKStrokePath extends _NSCopying {
}
