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 MemberEventsMap = {
    leave: SpaceMember;
    enter: SpaceMember;
    update: SpaceMember;
    updateProfile: SpaceMember;
    remove: SpaceMember;
};
declare class Members extends EventEmitter<MemberEventsMap> {
    private space;
    private lastMemberUpdate;
    private leavers;
    constructor(space: Space);
    processPresenceMessage(message: PresenceMember): Promise<void>;
    getSelf(): Promise<SpaceMember | null>;
    getAll(): Promise<SpaceMember[]>;
    getOthers(): Promise<SpaceMember[]>;
    subscribe<K extends EventKey<MemberEventsMap>>(listenerOrEvents?: K | K[] | EventListener<MemberEventsMap[K]>, listener?: EventListener<MemberEventsMap[K]>): void;
    unsubscribe<K extends EventKey<MemberEventsMap>>(listenerOrEvents?: K | K[] | EventListener<MemberEventsMap[K]>, listener?: EventListener<MemberEventsMap[K]>): void;
    getByConnectionId(connectionId: string): Promise<SpaceMember | null>;
    createMember(message: PresenceMember): SpaceMember;
    onMemberOffline(member: SpaceMember): Promise<void>;
}
export default Members;
