import type { NobjcObject } from "objc-js";
import type { _GKMatch } from "./GKMatch.js";
import type { _GKMatchmakerViewController } from "./GKMatchmakerViewController.js";
import type { _GKPlayer } from "./GKPlayer.js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSError } from "../Foundation/NSError.js";
import type { _NSString } from "../Foundation/NSString.js";
export interface _GKMatchmakerViewControllerDelegate {
    /** The user has cancelled matchmaking */
    matchmakerViewControllerWasCancelled$?(viewController: _GKMatchmakerViewController): void;
    /** Matchmaking has failed with an error */
    matchmakerViewController$didFailWithError$?(viewController: _GKMatchmakerViewController, error: _NSError): void;
    /** A peer-to-peer match has been found, the game should start */
    matchmakerViewController$didFindMatch$?(viewController: _GKMatchmakerViewController, match: _GKMatch): void;
    /** Players have been found for a server-hosted game, the game should start */
    matchmakerViewController$didFindHostedPlayers$?(viewController: _GKMatchmakerViewController, players: _NSArray): void;
    /**
     * An invited player has accepted a hosted invite. Apps should connect through the hosting server and then update the player's connected state (using setConnected:forHostedPlayer:)
     */
    matchmakerViewController$hostedPlayerDidAccept$?(viewController: _GKMatchmakerViewController, player: _GKPlayer): void;
    /**
     * The game should provide `GKMatchProperties` for the `GKPlayer` that has been invited. If implemented, this function must call `completionHandler`: failing to do so will hang matchmaking.
     * @deprecated Use ``GKMatchmakerViewControllerDelegate/matchmakerViewController(_:didFindHostedPlayers:)`` instead.
     */
    matchmakerViewController$getMatchPropertiesForRecipient$withCompletionHandler$?(viewController: _GKMatchmakerViewController, recipient: _GKPlayer, completionHandler: (recipientProperties: NobjcObject) => void): void;
    /**
     * These protocol methods are obsoleted. They will never be invoked and their implementation does nothing**
     * @deprecated Use ``GKMatchmakerViewControllerDelegate/matchmakerViewController(_:didFindHostedPlayers:)`` instead.
     */
    matchmakerViewController$didFindPlayers$?(viewController: _GKMatchmakerViewController, playerIDs: _NSArray): void;
    /**
     * @deprecated Use ``GKMatchmakerViewControllerDelegate/matchmakerViewController(_:hostedPlayerDidAccept:)`` instead.
     */
    matchmakerViewController$didReceiveAcceptFromHostedPlayer$?(viewController: _GKMatchmakerViewController, playerID: _NSString): void;
}
