234 lines
5.6 KiB
TypeScript
234 lines
5.6 KiB
TypeScript
import { RoomEvent } from "./RoomEvent";
|
|
/**
|
|
* The types of messages that are valid in Matrix.
|
|
* @category Matrix event info
|
|
* @see MessageEventContent
|
|
*/
|
|
export type MessageType = "m.text" | "m.emote" | "m.notice" | "m.image" | "m.file" | "m.audio" | "m.location" | "m.video" | string;
|
|
/**
|
|
* Information about a file in Matrix
|
|
* @category Matrix event info
|
|
* @see MessageEventContent
|
|
*/
|
|
export interface FileInfo {
|
|
/**
|
|
* The size of the file in bytes.
|
|
*/
|
|
size?: number;
|
|
/**
|
|
* The type of file.
|
|
*/
|
|
mimetype?: string;
|
|
}
|
|
/**
|
|
* Information about a thumbnail in Matrix
|
|
* @category Matrix event info
|
|
* @see MessageEventContent
|
|
*/
|
|
export interface ThumbnailInfo {
|
|
/**
|
|
* The size of the thumbnail in bytes.
|
|
*/
|
|
size?: number;
|
|
/**
|
|
* The type of thumbnail.
|
|
*/
|
|
mimetype?: string;
|
|
/**
|
|
* The intended height of the thumbnail in pixels.
|
|
*/
|
|
h: number;
|
|
/**
|
|
* The intended width of the thumbnail in pixels.
|
|
*/
|
|
w: number;
|
|
}
|
|
/**
|
|
* Information about a file's thumbnail.
|
|
* @category Matrix event info
|
|
* @see MessageEventContent
|
|
*/
|
|
export interface ThumbnailedFileInfo {
|
|
/**
|
|
* A URL to a thumbnail for the file, if unencrypted.
|
|
*/
|
|
thumbnail_url?: string;
|
|
/**
|
|
* The encrypted thumbnail file information, if encrypted.
|
|
*/
|
|
thumbnail_file?: EncryptedFile;
|
|
/**
|
|
* Information about the thumbnail. Optionally included if a thumbnail_url is specified.
|
|
*/
|
|
thumbnail_info?: ThumbnailInfo;
|
|
}
|
|
/**
|
|
* Information about a file that has a thumbnail
|
|
* @category Matrix event info
|
|
* @see MessageEventContent
|
|
*/
|
|
export interface FileWithThumbnailInfo extends FileInfo, ThumbnailedFileInfo {
|
|
}
|
|
/**
|
|
* Information about a file that has a width and height.
|
|
* @category Matrix event info
|
|
* @see MessageEventContent
|
|
*/
|
|
export interface DimensionalFileInfo extends FileWithThumbnailInfo {
|
|
/**
|
|
* The intended height of the media in pixels.
|
|
*/
|
|
h: number;
|
|
/**
|
|
* The intended width of the media in pixels.
|
|
*/
|
|
w: number;
|
|
}
|
|
/**
|
|
* Information about a file that has a time dimension.
|
|
* @category Matrix event info
|
|
* @see MessageEventContent
|
|
*/
|
|
export interface TimedFileInfo extends FileInfo {
|
|
/**
|
|
* The duration of the media in milliseconds.
|
|
*/
|
|
duration: number;
|
|
}
|
|
/**
|
|
* Information about a video file.
|
|
* @category Matrix event info
|
|
* @see MessageEventContent
|
|
*/
|
|
export interface VideoFileInfo extends DimensionalFileInfo, TimedFileInfo {
|
|
}
|
|
/**
|
|
* The content definition for m.room.message events with a type of m.audio
|
|
* @category Matrix event contents
|
|
* @see MessageEvent
|
|
*/
|
|
export interface AudioMessageEventContent extends FileMessageEventContent {
|
|
/**
|
|
* Information about the file.
|
|
*/
|
|
info?: TimedFileInfo;
|
|
}
|
|
/**
|
|
* The content definition for m.room.message events with a type of m.video
|
|
* @category Matrix event contents
|
|
* @see MessageEvent
|
|
*/
|
|
export interface VideoMessageEventContent extends FileMessageEventContent {
|
|
/**
|
|
* Information about the file.
|
|
*/
|
|
info?: VideoFileInfo;
|
|
}
|
|
/**
|
|
* The content definition for m.room.message events with a type of m.image
|
|
* @category Matrix event contents
|
|
* @see MessageEvent
|
|
*/
|
|
export interface ImageMessageEventContent extends FileMessageEventContent {
|
|
/**
|
|
* Information about the file.
|
|
*/
|
|
info?: DimensionalFileInfo;
|
|
}
|
|
/**
|
|
* The content definition for m.room.message events with a type of m.file
|
|
* @category Matrix event contents
|
|
* @see MessageEvent
|
|
*/
|
|
export interface FileMessageEventContent extends MessageEventContent {
|
|
/**
|
|
* Information about the file.
|
|
*/
|
|
info?: FileWithThumbnailInfo;
|
|
/**
|
|
* URL to the file, if unencrypted.
|
|
*/
|
|
url: string;
|
|
/**
|
|
* The encrypted file, if encrypted.
|
|
*/
|
|
file: EncryptedFile;
|
|
}
|
|
/**
|
|
* An encrypted file.
|
|
* @category Matrix event contents
|
|
* @see MessageEvent
|
|
*/
|
|
export interface EncryptedFile {
|
|
url: string;
|
|
key: {
|
|
kty: "oct";
|
|
key_ops: string[];
|
|
alg: "A256CTR";
|
|
k: string;
|
|
ext: true;
|
|
};
|
|
iv: string;
|
|
hashes: {
|
|
sha256: string;
|
|
};
|
|
v: "v2";
|
|
}
|
|
/**
|
|
* The content definition for m.room.message events with a type of m.location
|
|
* @category Matrix event contents
|
|
* @see MessageEvent
|
|
*/
|
|
export interface LocationMessageEventContent extends MessageEventContent {
|
|
/**
|
|
* Information about the location.
|
|
*/
|
|
info?: ThumbnailedFileInfo;
|
|
/**
|
|
* A geo URI of the location.
|
|
*/
|
|
geo_uri?: string;
|
|
}
|
|
/**
|
|
* The content definition for m.room.message events with types of m.text, m.emote, and m.notice
|
|
* @category Matrix event contents
|
|
* @see MessageEvent
|
|
*/
|
|
export interface TextualMessageEventContent extends MessageEventContent {
|
|
format?: string;
|
|
formatted_body?: string;
|
|
}
|
|
/**
|
|
* The content definition for m.room.message events
|
|
* @category Matrix event contents
|
|
* @see MessageEvent
|
|
*/
|
|
export interface MessageEventContent {
|
|
body: string;
|
|
msgtype: MessageType;
|
|
external_url?: string;
|
|
}
|
|
/**
|
|
* Represents an m.room.message room event
|
|
* @category Matrix events
|
|
*/
|
|
export declare class MessageEvent<T extends MessageEventContent> extends RoomEvent<T> {
|
|
constructor(event: any);
|
|
/**
|
|
* Whether or not the event is redacted (or looked redacted).
|
|
*/
|
|
get isRedacted(): boolean;
|
|
/**
|
|
* The message's type.
|
|
*/
|
|
get messageType(): MessageType;
|
|
/**
|
|
* The `body` of the message.
|
|
*/
|
|
get textBody(): string;
|
|
/**
|
|
* The `external_url` of the message, if it exists
|
|
*/
|
|
get externalUrl(): string | undefined;
|
|
}
|