import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSCopying } from "../Foundation/NSCopying.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _GKAgent } from "./GKAgent.js";
import type { _GKPath } from "./GKPath.js";
export declare class _GKGoal extends _NSObject {
    static alloc(): _GKGoal;
    static new(): _GKGoal;
    init(): _GKGoal;
    /** Creates a goal to move toward the agent @param agent the agent to seek */
    static goalToSeekAgent$(agent: _GKAgent): _GKGoal;
    /** Creates a goal to move away from the agent @param agent the agent to flee from */
    static goalToFleeAgent$(agent: _GKAgent): _GKGoal;
    /**
     * Creates a goal to avoid colliding with a group of agents without taking into account those agents' momentum @param maxPredictionTime how far ahead in the future, in seconds, should we look for potential collisions
     */
    static goalToAvoidObstacles$maxPredictionTime$(obstacles: _NSArray, maxPredictionTime: number): _GKGoal;
    /**
     * Creates a goal to avoid colliding with a group of agents taking into account those agent's momentum @param maxPredictionTime how far ahead in the future, in seconds, should we look for potential collisions
     */
    static goalToAvoidAgents$maxPredictionTime$(agents: _NSArray, maxPredictionTime: number): _GKGoal;
    /**
     * Creates a goal that tries to repel this agent away from the other agents and attempts to prevent overlap @param maxDistance the distance between agents before repelling happens @param maxAngle the angle, in radians, between this agent's foward and the vector toward the other agent before the repelling happens
     */
    static goalToSeparateFromAgents$maxDistance$maxAngle$(agents: _NSArray, maxDistance: number, maxAngle: number): _GKGoal;
    /**
     * Creates a goal to align this agent's orientation with the average orientation of the group of agents. @param maxDistance the distance between agents before alignment happens @param maxAngle the angle, in radians, between this agent's foward and the vector toward the other agent before alignment happens
     */
    static goalToAlignWithAgents$maxDistance$maxAngle$(agents: _NSArray, maxDistance: number, maxAngle: number): _GKGoal;
    /**
     * Creates a goal to seek the average position of the group of agents. @param maxDistance the distance between agents before cohesion happens @param maxAngle the angle between this agent's foward and the vector toward the other agent before cohesion happens
     */
    static goalToCohereWithAgents$maxDistance$maxAngle$(agents: _NSArray, maxDistance: number, maxAngle: number): _GKGoal;
    /**
     * Creates a goal that attempts to change our momentum to reach the target speed @param targetSpeed the target speed
     */
    static goalToReachTargetSpeed$(targetSpeed: number): _GKGoal;
    /**
     * Creates a goal that will make the agent appear to wander, aimlessly moving forward and turning randomly @param speed the speed at which to wander
     */
    static goalToWander$(speed: number): _GKGoal;
    /**
     * Creates a goal that will attempt to intercept another target agent taking into account that agent's momentum @param target agent to intercept @param maxPredictionTime how far ahead in the future, in seconds, should we look for potential intercepts
     */
    static goalToInterceptAgent$maxPredictionTime$(target: _GKAgent, maxPredictionTime: number): _GKGoal;
    /**
     * Creates a goal that will attempt to follow the given path @param path the path to follow @param maxPredictionTime how far ahead in the future, in seconds, should we look for potential intercepts @param forward direction to follow the path. forward = NO is reverse
     */
    static goalToFollowPath$maxPredictionTime$forward$(path: _GKPath, maxPredictionTime: number, forward: boolean): _GKGoal;
    /**
     * Creates a goal that will attempt to stay on the given path @param path the path to follow @param maxPredictionTime how far ahead in the future, in seconds, should we look for potential intercepts
     */
    static goalToStayOnPath$maxPredictionTime$(path: _GKPath, maxPredictionTime: number): _GKGoal;
}
export interface _GKGoal extends _NSCopying {
}
