import type { NobjcObject } from "objc-js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSDictionary } from "../Foundation/NSDictionary.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _GKNoiseSource } from "./GKNoiseSource.js";
export declare class _GKNoise extends _NSObject {
    static alloc(): _GKNoise;
    static new(): _GKNoise;
    /**
     * Initializes a noise with the specified noise source. @param noiseSource The noise source to use to initially populate the 3D noise space.
     */
    static noiseWithNoiseSource$(noiseSource: _GKNoiseSource): _GKNoise;
    /**
     * Initializes a noise with the specified noise source and parameters. @param noiseSource The noise source to use to initially populate the 3D noise space. @param gradientColors The color gradient to use for this noise in 'value : color' pairs.
     */
    static noiseWithNoiseSource$gradientColors$(noiseSource: _GKNoiseSource, gradientColors: _NSDictionary): _GKNoise;
    /**
     * Initializes a composite noise from one or more component noises. Useful for combining and layering noises together. @param noises The component noises to combine. @param selectionNoise The noise that governs which component noise is chosen for each position of the resulting noise. The range of values is equally-subdivided for each component noise.
     */
    static noiseWithComponentNoises$selectionNoise$(noises: _NSArray, selectionNoise: _GKNoise): _GKNoise;
    /**
     * Initializes a composite noise from one or more component noises. Useful for combining and layering noises together. @param noises The component noises to combine. @param selectionNoise The noise that governs which component noise is chosen for each position of the resulting noise. The range of values is equally-subdivided for each component noise. @param componentBoundaries The noise value boundaries of the selection noise to use for the component noises. Specify one less boundary than the number of component noises. This is a parallel array to blendDistances. @param blendDistances The size of smoothing that is applied to boundaries where two component noises meet. Specify one less blend distance than the number of component noises. This is a parallel array to componentBoundaries.
     */
    static noiseWithComponentNoises$selectionNoise$componentBoundaries$boundaryBlendDistances$(noises: _NSArray, selectionNoise: _GKNoise, componentBoundaries: _NSArray, blendDistances: _NSArray): _GKNoise;
    /** Initializes a constant noise of 0.0 at all positions. */
    init(): _GKNoise;
    /**
     * Initializes a noise with the specified noise source. @param noiseSource The noise source to use to initially populate the 3D noise space.
     */
    initWithNoiseSource$(noiseSource: _GKNoiseSource): _GKNoise;
    /**
     * Initializes a noise with the specified noise source and parameters. @param noiseSource The noise source to use to initially populate the 3D noise space. @param gradientColors The color gradient to use for this noise in 'value : color' pairs.
     */
    initWithNoiseSource$gradientColors$(noiseSource: _GKNoiseSource, gradientColors: _NSDictionary): _GKNoise;
    /**
     * The noise value at the specified sample index of the 2D plane. @param position Sample index of the extracted 2D plane at which to query the value @return The noise map value at the specified position.
     */
    valueAtPosition$(position: NobjcObject): number;
    /** Takes the absoltue value of all noise positions. */
    applyAbsoluteValue(): void;
    /**
     * Clamps all noise values to the specified bounds. @param lowerBound The noise value lower bound. @param upperBound The noise value upper bound.
     */
    clampWithLowerBound$upperBound$(lowerBound: number, upperBound: number): void;
    /**
     * Raises all noise values to the specified power. @param power The power to which to raise all noise values.
     */
    raiseToPower$(power: number): void;
    /** Inverts all noise values, from positive to negative and vice versa. */
    invert(): void;
    /** Applies a turbulent displacement to all noise values. */
    applyTurbulenceWithFrequency$power$roughness$seed$(frequency: number, power: number, roughness: number, seed: number): void;
    /**
     * Remaps all noise values to a smooth curve that passes through the specified control points. @param controlPoints Pairs of 'input : output' values to use as control points for the smooth remapping curve. Duplicate input values are not permitted.
     */
    remapValuesToCurveWithControlPoints$(controlPoints: _NSDictionary): void;
    /**
     * Remaps all noise values to one or more terraces with peaks. Useful for creating valleys and trenches. @param peakInputValues Inputs positions of terrace peaks. @param inverted Governs the curve direction from peak to peak.
     */
    remapValuesToTerracesWithPeaks$terracesInverted$(peakInputValues: _NSArray, inverted: boolean): void;
    /**
     * Translates all noise values by the specified amount. @param delta The amount by which to move all noise values.
     */
    moveBy$(delta: NobjcObject): void;
    /**
     * Scales all noise values by the specified amount. @param factor The factor by which to scale all noise values.
     */
    scaleBy$(factor: NobjcObject): void;
    /**
     * Rotates all noise values by the specified amount. @param radians The number of radians in x-, y- and z-axes by which to rotate all noise values.
     */
    rotateBy$(radians: NobjcObject): void;
    /**
     * Adds all noise values by the noise values at the same position in specified noise. @param noise The noise from which to add values to this noise.
     */
    addWithNoise$(noise: _GKNoise): void;
    /**
     * Multiplies all noise values by the noise values at the same position in specified noise. @param noise The noise from which to multiply values to this noise.
     */
    multiplyWithNoise$(noise: _GKNoise): void;
    /**
     * Takes the minimum value between this noise and the specified noise at each position. @param noise The noise to compare against this noise at each position in determining which to take the minimum value from.
     */
    minimumWithNoise$(noise: _GKNoise): void;
    /**
     * Takes the maximum value between this noise and the specified noise at each position. @param noise The noise to compare against this noise at each position in determining which to take the maximum value from.
     */
    maximumWithNoise$(noise: _GKNoise): void;
    /**
     * Raises all noise values to the power of the value at the same position of the specified noise. @param noise The noise from which to raise this noise's values by.
     */
    raiseToPowerWithNoise$(noise: _GKNoise): void;
    /**
     * Displaces all noise values by the values at the same positions of the specified noises. @param xDisplacementNoise The noise from which to displace along the x-axis this noise's values at the same positions. @param yDisplacementNoise The noise from which to displace along the y-axis this noise's values at the same positions. @param zDisplacementNoise The noise from which to displace along the z-axis this noise's values at the same positions.
     */
    displaceXWithNoise$yWithNoise$zWithNoise$(xDisplacementNoise: _GKNoise, yDisplacementNoise: _GKNoise, zDisplacementNoise: _GKNoise): void;
    /**
     * Color gradient of this noise, represented as 'value : color' pairs. Utilized when this noise is rendered to a texture.
     */
    gradientColors(): _NSDictionary;
    setGradientColors$(value: _NSDictionary): void;
}
