import { Player } from '../core/Player';
/**
 * Player events.
 *
 * You can use these events to listen for changes in the player state, or to trigger actions based on player events.
 */
export declare const PLAYER_EVENTS: {
    readonly CONNECTED: "player:connected";
    readonly DISCONNECTED: "player:disconnected";
    readonly RECONNECTED: "player:reconnected";
    readonly REMOVED: "player:removed";
    readonly STATE_UPDATED: "player:state:updated";
    readonly ATTRIBUTE_CHANGED: "player:attribute:changed";
    readonly ATTRIBUTES_CHANGED: "player:attributes:changed";
    readonly AUTHENTICATION_FAILED: "player:authentication:failed";
    readonly AUTHENTICATION_SUCCEEDED: "player:authentication:succeeded";
};
/**
 * These are the payload structures for native Player events.
 *
 * You can use these payloads to listen for changes in the player state, or to trigger actions based on player events.
 */
export interface DefaultPlayerEventPayloadMap {
    [PLAYER_EVENTS.CONNECTED]: {
        player: Player;
    };
    [PLAYER_EVENTS.DISCONNECTED]: {
        player: Player;
    };
    [PLAYER_EVENTS.RECONNECTED]: {
        player: Player;
    };
    [PLAYER_EVENTS.REMOVED]: {
        player: Player;
    };
    [PLAYER_EVENTS.STATE_UPDATED]: {
        player: Player;
    };
    [PLAYER_EVENTS.ATTRIBUTE_CHANGED]: {
        player: Player;
        key: string;
        value: unknown;
    };
    [PLAYER_EVENTS.ATTRIBUTES_CHANGED]: {
        player: Player;
        changedKeys: string[];
        attributes: Record<string, unknown>;
    };
    [PLAYER_EVENTS.AUTHENTICATION_FAILED]: {
        player: Player;
        reason: string;
    };
    [PLAYER_EVENTS.AUTHENTICATION_SUCCEEDED]: {
        player: Player;
    };
}
