import EventEmitter, { type EventKey, type EventListener } from './utilities/EventEmitter.js';
import type { SpaceMember } from './types.js';
import type { PresenceMember } from './utilities/types.js';
import type Space from './Space.js';
type LocationsEventMap = {
    update: {
        member: SpaceMember;
        currentLocation: unknown;
        previousLocation: unknown;
    };
};
export default class Locations extends EventEmitter<LocationsEventMap> {
    private space;
    private presenceUpdate;
    private lastLocationUpdate;
    constructor(space: Space, presenceUpdate: Space['presenceUpdate']);
    processPresenceMessage(message: PresenceMember): Promise<void>;
    set(location: unknown): Promise<void>;
    subscribe<K extends EventKey<LocationsEventMap>>(listenerOrEvents?: K | K[] | EventListener<LocationsEventMap[K]>, listener?: EventListener<LocationsEventMap[K]>): void;
    unsubscribe<K extends EventKey<LocationsEventMap>>(listenerOrEvents?: K | K[] | EventListener<LocationsEventMap[K]>, listener?: EventListener<LocationsEventMap[K]>): void;
    getSelf(): Promise<unknown>;
    getOthers(): Promise<Record<string, unknown>>;
    getAll(): Promise<Record<string, unknown>>;
}
export {};
