import type { ClientMessage, PresenceMember } from '../types.js'; /** Presence API for a channel */ export declare class Presence { private channelName; private sendFn; private enterListeners; private leaveListeners; private updateListeners; private membersListeners; constructor(channelName: string, sendFn: (msg: ClientMessage) => void); /** * Enter the presence set with optional custom state data. * * @param data - Optional key/value state to associate with this member * @returns `this` for chaining */ enter(data?: Record): this; /** * Leave the presence set. * * @returns `this` for chaining */ leave(): this; /** * Update your presence state data. * * @param data - New key/value state to associate with this member * @returns `this` for chaining */ update(data: Record): this; /** * Request the current member list for this channel. * Listen for the result with {@link onMembers}. * * @returns `this` for chaining */ get(): this; /** * Listen for members entering the presence set. * * @param cb - Called with the entering member's data * @returns `this` for chaining */ onEnter(cb: (member: PresenceMember) => void): this; /** * Listen for members leaving the presence set. * * @param cb - Called with the leaving member's data * @returns `this` for chaining */ onLeave(cb: (member: PresenceMember) => void): this; /** * Listen for presence state updates from members. * * @param cb - Called with the updated member's data * @returns `this` for chaining */ onUpdate(cb: (member: PresenceMember) => void): this; /** * Listen for the current member list (response to {@link get}). * * @param cb - Called with the full list of present members * @returns `this` for chaining */ onMembers(cb: (members: PresenceMember[]) => void): this; /** @internal */ _emitEnter(member: PresenceMember): void; /** @internal */ _emitLeave(member: PresenceMember): void; /** @internal */ _emitUpdate(member: PresenceMember): void; /** @internal */ _emitMembers(members: PresenceMember[]): void; } //# sourceMappingURL=presence.d.ts.map