matrix-js-sdk
Version:
Matrix Client-Server SDK for Javascript
52 lines • 2.13 kB
TypeScript
import { type BeaconInfoState, type BeaconLocationState } from "../content-helpers.ts";
import { type MatrixEvent } from "./event.ts";
import { TypedEventEmitter } from "./typed-event-emitter.ts";
export declare enum BeaconEvent {
New = "Beacon.new",
Update = "Beacon.update",
LivenessChange = "Beacon.LivenessChange",
Destroy = "Beacon.Destroy",
LocationUpdate = "Beacon.LocationUpdate"
}
export type BeaconEventHandlerMap = {
[BeaconEvent.Update]: (event: MatrixEvent, beacon: Beacon) => void;
[BeaconEvent.LivenessChange]: (isLive: boolean, beacon: Beacon) => void;
[BeaconEvent.Destroy]: (beaconIdentifier: string) => void;
[BeaconEvent.LocationUpdate]: (locationState: BeaconLocationState) => void;
};
export declare const isTimestampInDuration: (startTimestamp: number, durationMs: number, timestamp: number) => boolean;
export type BeaconIdentifier = string;
export declare const getBeaconInfoIdentifier: (event: MatrixEvent) => BeaconIdentifier;
export declare class Beacon extends TypedEventEmitter<Exclude<BeaconEvent, BeaconEvent.New>, BeaconEventHandlerMap> {
private rootEvent;
readonly roomId: string;
private _beaconInfo;
private _isLive?;
private livenessWatchTimeout?;
private _latestLocationEvent?;
constructor(rootEvent: MatrixEvent);
get isLive(): boolean;
get identifier(): BeaconIdentifier;
get beaconInfoId(): string;
get beaconInfoOwner(): string;
get beaconInfoEventType(): string;
get beaconInfo(): BeaconInfoState;
get latestLocationState(): BeaconLocationState | undefined;
get latestLocationEvent(): MatrixEvent | undefined;
update(beaconInfoEvent: MatrixEvent): void;
destroy(): void;
/**
* Monitor liveness of a beacon
* Emits BeaconEvent.LivenessChange when beacon expires
*/
monitorLiveness(): void;
/**
* Process Beacon locations
* Emits BeaconEvent.LocationUpdate
*/
addLocations(beaconLocationEvents: MatrixEvent[]): void;
private clearLatestLocation;
private setBeaconInfo;
private checkLiveness;
}
//# sourceMappingURL=beacon.d.ts.map