import type { NobjcObject } from "objc-js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSDate } from "../Foundation/NSDate.js";
import type { _NSDictionary } from "../Foundation/NSDictionary.js";
import type { _NSError } from "../Foundation/NSError.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSSet } from "../Foundation/NSSet.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _NSURL } from "../Foundation/NSURL.js";
import type { _GKAchievement } from "./GKAchievement.js";
import type { _GKGameActivityDefinition } from "./GKGameActivityDefinition.js";
import type { _GKLeaderboard } from "./GKLeaderboard.js";
import type { _GKLeaderboardScore } from "./GKLeaderboardScore.js";
import type { _GKMatch } from "./GKMatch.js";
import type { _GKMatchRequest } from "./GKMatchRequest.js";
import type { GKGameActivityState } from "./GKGameActivityState.js";
export declare class _GKGameActivity extends _NSObject {
    static alloc(): _GKGameActivity;
    static new(): _GKGameActivity;
    init(): _GKGameActivity;
    /**
     * Creates and starts a new game activity with a custom party code. The framework converts the party code to uppercase.
     */
    static startWithDefinition$partyCode$error$(activityDefinition: _GKGameActivityDefinition, partyCode: _NSString, error: NobjcObject | null): _GKGameActivity | null;
    /** Creates and starts a game activity with a definition. */
    static startWithDefinition$error$(activityDefinition: _GKGameActivityDefinition, error: NobjcObject | null): _GKGameActivity | null;
    /**
     * Checks whether a party code is in valid format. Party code should be two parts of strings with the same length (2-6) connected with a dash, and the code can be either pure digits (0-9), or both parts are uppercased characters from ``GKGameActivity/validPartyCodeAlphabet``.
     */
    static isValidPartyCode$(partyCode: _NSString): boolean;
    /**
     * Checks whether there is a pending activity to handle for the current game. You can call this method before you initialize Game Center to avoid activating the system banner or welcome experience.
     */
    static checkPendingGameActivityExistenceWithCompletionHandler$(completionHandler: (arg0: boolean) => void): void;
    /** Allowed characters for the party code to be used to share this activity. */
    static validPartyCodeAlphabet(): _NSArray;
    /** Creates a game activity with definition. */
    initWithDefinition$(activityDefinition: _GKGameActivityDefinition): _GKGameActivity;
    /** Starts the game activity if it's not already started. */
    start(): void;
    /** Pauses the game activity if it's not already paused. */
    pause(): void;
    /** Resumes the game activity if it was paused. */
    resume(): void;
    /**
     * Ends the game activity if it's not already ended. This reports all associated achievements and submit scores to leaderboards.
     */
    end(): void;
    /**
     * Set a score of a leaderboard with a context for a player. The framewwork submits the score to the leaderboard when the activity ends.
     */
    setScoreOnLeaderboard$toScore$context$(leaderboard: _GKLeaderboard, score: number, context: number): void;
    /**
     * Set a score of a leaderboard for a player. The framewowrk submits the score to the leaderboard when the activity ends.
     */
    setScoreOnLeaderboard$toScore$(leaderboard: _GKLeaderboard, score: number): void;
    /**
     * Get the leaderboard score from a specific leaderboard of the local player if previously set.
     */
    getScoreOnLeaderboard$(leaderboard: _GKLeaderboard): _GKLeaderboardScore | null;
    /** Removes all scores from leaderboards for a player if exist. */
    removeScoresFromLeaderboards$(leaderboards: _NSArray): void;
    /**
     * Set a progress for an achievement for a player. The framework reports achievement progress when the activity ends.
     */
    setProgressOnAchievement$toPercentComplete$(achievement: _GKAchievement, percentComplete: number): void;
    /**
     * Set progress to 100% for an achievement for a player. The system reports achievement completion when the activity ends.
     */
    setAchievementCompleted$(achievement: _GKAchievement): void;
    /**
     * Get the achievement progress from a specific achievement of the local player if previously set. Returns `0` if the achievement hasn't been set in the current activity.
     */
    getProgressOnAchievement$(achievement: _GKAchievement): number;
    /** Removes all achievements if they exist. */
    removeAchievements$(achievements: _NSArray): void;
    /**
     * Makes a match request object with information from the activity, which you can use to find matches for the local player.
     */
    makeMatchRequest(): _GKMatchRequest | null;
    /**
     * Use information from the activity to find matches for the local player. GameKit creates a classic match making request with the activity's party code and other information, and returns the match object in the completion handler or any error that occurred. An error occurs if this activity doesn't support party code, or has an unsupported range of players, which is used to be configured as match request's `minPlayers` and `maxPlayers`.
     */
    findMatchWithCompletionHandler$(completionHandler: ((match: _GKMatch, error: _NSError) => void) | null): void;
    /**
     * Use information from the activity to find server hosted players for the local player. GameKit creates a classic server hosted match making request with the activity's party code and other information, and returns the players in the completion handler or any error that occurred. An error occurs if this activity doesn't support party code, or has unsupported range of players, which is used to be configured as match request's `minPlayers` and `maxPlayers`.
     */
    findPlayersForHostedMatchWithCompletionHandler$(completionHandler: ((players: _NSArray, error: _NSError) => void) | null): void;
    /** The identifier of this activity instance. */
    identifier(): _NSString;
    /** The activity definition that this activity instance is based on. */
    activityDefinition(): _GKGameActivityDefinition;
    /**
     * Properties that contain additional information about the activity. This takes precedence over ``GKGameActivityDefinition/defaultProperties`` on the activity definition. 1. The framework initializes this dictionary with the default properties from the activity definition and deep linked properties, if any. 2. If deep linking contains the same key as the default properties, the deep linked value overrides the default value. 3. You can update the properties at runtime.
     */
    properties(): _NSDictionary;
    setProperties$(value: _NSDictionary): void;
    /** The state of the game activity. */
    state(): GKGameActivityState;
    /**
     * If the game supports party code, this is the party code that can be shared among players to join the party. If the game doesn't support party code, this value will be `nil`. Use ``GKGameActivity/start(definition:partyCode:)`` to create a game activity with a custom party code.
     */
    partyCode(): _NSString | null;
    /**
     * If the game supports party code, this is the URL that can be shared among players to join the party.
     */
    partyURL(): _NSURL | null;
    /** The date when the activity was created. */
    creationDate(): _NSDate;
    /** The date when the activity was initially started. */
    startDate(): _NSDate | null;
    /**
     * The date when the activity was last resumed. - If the activity was first started, this will be the same as the start date. - If the activity was paused and resumed, this will be the date when the activity was resumed.
     */
    lastResumeDate(): _NSDate | null;
    /** The date when the activity was officially ended. */
    endDate(): _NSDate | null;
    /** The total time elapsed while in active state. */
    duration(): number;
    /**
     * All achievements that have been associated with this activity. Progress of each achievement will be reported when the activity ends.
     */
    achievements(): _NSSet;
    /**
     * All leaderboard scores that have been associated with this activity. Scores will be submitted to the leaderboards when the activity ends.
     */
    leaderboardScores(): _NSSet;
}
