import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSCoder } from "../Foundation/NSCoder.js";
import type { _NSCopying } from "../Foundation/NSCopying.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _GKRandom } from "./GKRandom.js";
export declare class _GKRandomSource extends _NSObject {
    static alloc(): _GKRandomSource;
    static new(): _GKRandomSource;
    /**
     * Returns a shared instance of a random source that uses the system's underlying random source. Using this instance modifies the outcome of future calls to the arc4random family of C calls. It is also affected by calls to the C apis and should not be used for sources that are intended to be deterministic. @discussion Note that while it may seem semantically similar to a GKARC4RandomSource, this is not a drop in replacement.
     */
    static sharedRandom(): _GKRandomSource;
    /**
     * Creates a new random source initialized using bits from an entropy source like SecRandomCopyBytes. When used directly from the base class; this source is deterministic and performant but the underlying implementation details are not specified. Use a subclass with a specific algorithm implementation guaranteed if your application requires very stringent random source charateristics. @see GKARC4RandomSource @see GKLinearCongruentialRandomSource @see GKMersenneTwisterRandomSource
     */
    init(): _GKRandomSource;
    /**
     * Deserializes a random source from an NSCoder. All random sources support coding for serializing and deserializing the state of the random source. Each subclass has its own contract for what parts of the state is preserved when serialized but the general contract is that a serialized source must generate the same sequence of values as the original source would from the instant it was serialized. Note that the sharedRandom instance is an exception as it is explicitly seedless and a shared singleton instance. When serialized and deserialized it will return the current sharedRandom instance instead.
     */
    initWithCoder$(aDecoder: _NSCoder): _GKRandomSource;
    /**
     * Returns a shuffled instance of the given array. The objects in the array are shuffled based on a Fisher-Yates shuffle. Any random, be it custom, source or a distribution, that can provide a number with an upper bound of at least the array.count is suitable for this shuffle.
     */
    arrayByShufflingObjectsInArray$(array: _NSArray): _NSArray;
}
export interface _GKRandomSource extends _GKRandom, _NSCopying {
}
