export interface MediaAttachmentTypeRegistry { image: never; video: never; gifv: never; audio: never; unknown: never; } export type MediaAttachmentType = keyof MediaAttachmentTypeRegistry; export interface MediaAttachmentMetaImage { width: number; height: number; size: string; aspect: number; } export interface MediaAttachmentMetaVideo { width: number; height: number; frameRate: string; duration: number; bitrate: number; aspect: number; } export interface MediaAttachmentMetaFocus { x: number; y: number; } export interface MediaAttachmentMetaColors { background: string; foreground: string; accent: string; } export interface MediaAttachmentMeta { small?: MediaAttachmentMetaImage | MediaAttachmentMetaVideo | null; original?: MediaAttachmentMetaImage | MediaAttachmentMetaVideo | null; focus?: MediaAttachmentMetaFocus | null; colors?: MediaAttachmentMetaColors | null; } /** * Represents a file or media MediaAttachment that can be added to a status. * @see https://docs.joinmastodon.org/entities/MediaAttachment/ */ export interface MediaAttachment { /** The ID of the MediaAttachment in the database. */ id: string; /** The type of the MediaAttachment. */ type: MediaAttachmentType; /** The location of the original full-size MediaAttachment. */ url?: string | null; /** The location of a scaled-down preview of the MediaAttachment. */ previewUrl: string; /** The location of the full-size original MediaAttachment on the remote website. */ remoteUrl?: string | null; /** Remote version of previewUrl */ previewRemoteUrl?: string | null; /** A shorter URL for the MediaAttachment. */ textUrl?: string | null; /** Metadata returned by Paperclip. */ meta?: MediaAttachmentMeta | null; /** * Alternate text that describes what is in the media MediaAttachment, * to be used for the visually impaired or when media MediaAttachments do not load. */ description?: string | null; /** * A hash computed by the BlurHash algorithm, * for generating colorful preview thumbnails when media has not been downloaded yet. */ blurhash?: string | null; }