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 { _NSString } from "../Foundation/NSString.js";
import type { _GKPlayer } from "./GKPlayer.js";
import type { GKInviteRecipientResponse } from "./GKInviteRecipientResponse.js";
import type { GKMatchType } from "./GKMatchType.js";
export declare class _GKMatchRequest extends _NSObject {
    static alloc(): _GKMatchRequest;
    static new(): _GKMatchRequest;
    init(): _GKMatchRequest;
    /**
     * To determine the maximum allowed players for each type of match supported.
     * @deprecated Use the ``GKMatchRequest/recipients`` property instead.
     */
    static maxPlayersAllowedForMatchOfType$(matchType: GKMatchType): number;
    /** Minimum number of players for the match */
    minPlayers(): number;
    setMinPlayers$(value: number): void;
    /** Maximum number of players for the match */
    maxPlayers(): number;
    setMaxPlayers$(value: number): void;
    /**
     * The player group identifier. Matchmaking will only take place between players in the same group.
     */
    playerGroup(): number;
    setPlayerGroup$(value: number): void;
    /**
     * optional mask that specifies the role that the local player would like to play in the game. If this value is 0, it will be set to 0xFFFFFFFF (the default), and this property will be ignored. If the value is nonzero, then automatching uses the value as a mask that restricts the role the player can play in the group. Automatching with player attributes matches new players into the game so that the bitwise OR of the masks of all the players in the resulting match equals 0xFFFFFFFF.
     */
    playerAttributes(): number;
    setPlayerAttributes$(value: number): void;
    /**
     * Array of GKPlayers to invite, or nil if none. This array can also include local guest players.
     */
    recipients(): _NSArray | null;
    setRecipients$(value: _NSArray | null): void;
    /**
     * Message sent to invited players, may be modified if using GKMatchmakerViewController Will return nil if the player is underage or restricted.
     */
    inviteMessage(): _NSString | null;
    setInviteMessage$(value: _NSString | null): void;
    /**
     * Default number of players to use during matchmaking. If not set we will default to the number that the player previously set for this game, or maxPlayers.
     * @deprecated Use the ``GKMatchmakerViewController/matchmakingMode`` property instead.
     */
    defaultNumberOfPlayers(): number;
    setDefaultNumberOfPlayers$(value: number): void;
    /**
     * Whether or not a match will be created only using automatch. If YES, then a player will not be able to invite anyone (including contacts, friends, and nearby players) to the match, but rely on automatching to find players for the match. Default is NO.
     * @deprecated Use the ``GKMatchmakerViewController/matchmakingMode`` property instead.
     */
    restrictToAutomatch(): boolean;
    setRestrictToAutomatch$(value: boolean): void;
    /**
     * An recipientResponseHandler can be set in order to receive responses from programmatically invited players.
     * @deprecated Use the ``GKMatchRequest/recipientResponseHandler`` property instead.
     */
    recipientResponseHandler(): ((arg0: _GKPlayer, arg1: GKInviteRecipientResponse) => void) | null;
    setRecipientResponseHandler$(value: ((arg0: _GKPlayer, arg1: GKInviteRecipientResponse) => void) | null): void;
    /**
     * @deprecated Use the ``GKMatchRequest/recipientResponseHandler`` property instead.
     */
    inviteeResponseHandler(): (arg0: _NSString, arg1: GKInviteRecipientResponse) => void;
    setInviteeResponseHandler$(value: (arg0: _NSString, arg1: GKInviteRecipientResponse) => void): void;
    /**
     * Array of player IDs to invite, or nil if none
     * @deprecated Use the ``GKMatchRequest/recipients`` property instead.
     */
    playersToInvite(): _NSArray;
    setPlayersToInvite$(value: _NSArray): void;
    /** The name of the queue, if rule-based matchmaking is used. */
    queueName(): _NSString | null;
    setQueueName$(value: _NSString | null): void;
    /** The match properties, if rule-based matchmaking is used. */
    properties(): NobjcObject | null;
    setProperties$(value: NobjcObject | null): void;
    /**
     * The recipient specific match properties, if rule-based matchmaking is used when inviting players.
     */
    recipientProperties(): _NSDictionary | null;
    setRecipientProperties$(value: _NSDictionary | null): void;
}
