import { RELATES_TO_RELATIONSHIP, REFERENCE_RELATION } from "matrix-events-sdk";
import { UnstableValue } from "../NamespacedValue";
import { MAssetEvent, MLocationEvent, MTimestampEvent } from "./location";
/**
 * Beacon info and beacon event types as described in MSC3672
 * https://github.com/matrix-org/matrix-spec-proposals/pull/3672
 */
/**
 * Beacon info events are state events.
 * We have two requirements for these events:
 * 1. they can only be written by their owner
 * 2. a user can have an arbitrary number of beacon_info events
 *
 * 1. is achieved by setting the state_key to the owners mxid.
 * Event keys in room state are a combination of `type` + `state_key`.
 * To achieve an arbitrary number of only owner-writable state events
 * we introduce a variable suffix to the event type
 *
 * Eg
 * {
 *      "type": "m.beacon_info.@matthew:matrix.org.1",
 *      "state_key": "@matthew:matrix.org",
 *      "content": {
 *          "m.beacon_info": {
 *              "description": "The Matthew Tracker",
 *              "timeout": 86400000,
 *          },
 *          // more content as described below
 *      }
 * },
 * {
 *      "type": "m.beacon_info.@matthew:matrix.org.2",
 *      "state_key": "@matthew:matrix.org",
 *      "content": {
 *          "m.beacon_info": {
 *              "description": "Another different Matthew tracker",
 *              "timeout": 400000,
 *          },
 *          // more content as described below
 *      }
 * }
 */
/**
 * Non-variable type for m.beacon_info event content
 */
export declare const M_BEACON_INFO: UnstableValue<"m.beacon_info", "org.matrix.msc3672.beacon_info">;
export declare const M_BEACON: UnstableValue<"m.beacon", "org.matrix.msc3672.beacon">;
export declare type MBeaconInfoContent = {
    description?: string;
    timeout: number;
    live?: boolean;
};
/**
 * m.beacon_info Event example from the spec
 * https://github.com/matrix-org/matrix-spec-proposals/pull/3672
 * {
    "type": "m.beacon_info",
    "state_key": "@matthew:matrix.org",
    "content": {
        "m.beacon_info": {
            "description": "The Matthew Tracker", // same as an `m.location` description
            "timeout": 86400000, // how long from the last event until we consider the beacon inactive in milliseconds
        },
        "m.ts": 1436829458432, // creation timestamp of the beacon on the client
        "m.asset": {
            "type": "m.self" // the type of asset being tracked as per MSC3488
        }
    }
}
 */
/**
 * m.beacon_info.* event content
 */
export declare type MBeaconInfoEventContent = MBeaconInfoContent & MTimestampEvent & MAssetEvent;
/**
 * m.beacon event example
 * https://github.com/matrix-org/matrix-spec-proposals/pull/3672
 *
 * {
    "type": "m.beacon",
    "sender": "@matthew:matrix.org",
    "content": {
        "m.relates_to": { // from MSC2674: https://github.com/matrix-org/matrix-doc/pull/2674
            "rel_type": "m.reference", // from MSC3267: https://github.com/matrix-org/matrix-doc/pull/3267
            "event_id": "$beacon_info"
        },
        "m.location": {
            "uri": "geo:51.5008,0.1247;u=35",
            "description": "Arbitrary beacon information"
        },
        "m.ts": 1636829458432,
    }
}
*/
/**
 * Content of an m.beacon event
 */
export declare type MBeaconEventContent = MLocationEvent & MTimestampEvent & RELATES_TO_RELATIONSHIP<typeof REFERENCE_RELATION>;
//# sourceMappingURL=beacon.d.ts.map