2026-04-13 09:18:23 +01:00
## API Report File for "@element-hq/element-web-module-api"
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
``` ts
import { ComponentType } from 'react' ;
import { IWidget } from 'matrix-widget-api' ;
import { JSX } from 'react' ;
import { ModuleApi } from '@matrix-org/react-sdk-module-api' ;
import { ReactNode } from 'react' ;
import { Root } from 'react-dom/client' ;
import { RuntimeModule } from '@matrix-org/react-sdk-module-api' ;
// @public
export interface AccountAuthApiExtension {
overwriteAccountAuth ( accountInfo : AccountAuthInfo ) : Promise < void > ;
}
// @public
export interface AccountAuthInfo {
accessToken : string ;
deviceId : string ;
homeserverUrl : string ;
refreshToken? : string ;
userId : string ;
}
// @public
export interface AccountDataApi {
delete ( eventType : string ) : Promise < void > ;
get ( eventType : string ) : Watchable < unknown > ;
set ( eventType : string , content : unknown ) : Promise < void > ;
}
// @alpha @deprecated (undocumented)
export interface AliasCustomisations {
// (undocumented)
getDisplayAliasForAliasSet ? ( canonicalAlias : string | null , altAliases : string [ ] ) : string | null ;
}
// Warning: (ae-incompatible-release-tags) The symbol "Api" is marked as @public, but its signature references "LegacyModuleApiExtension" which is marked as @alpha
// Warning: (ae-incompatible-release-tags) The symbol "Api" is marked as @public, but its signature references "LegacyCustomisationsApiExtension" which is marked as @alpha
//
// @public
export interface Api extends LegacyModuleApiExtension , LegacyCustomisationsApiExtension , DialogApiExtension , AccountAuthApiExtension , ProfileApiExtension {
// @alpha
readonly builtins : BuiltinsApi ;
readonly client : ClientApi ;
readonly config : ConfigApi ;
createRoot ( element : Element ) : Root ;
// @alpha
readonly customComponents : CustomComponentsApi ;
// @alpha
readonly customisations : CustomisationsApi ;
// @alpha
readonly extras : ExtrasApi ;
readonly i18n : I18nApi ;
readonly navigation : NavigationApi ;
readonly rootNode : HTMLElement ;
readonly stores : StoresApi ;
// @alpha
readonly widget : WidgetApi ;
// @alpha
readonly widgetLifecycle : WidgetLifecycleApi ;
}
// @alpha
export interface BuiltinsApi {
renderNotificationDecoration ( roomId : string ) : React . ReactNode ;
renderRoomAvatar ( roomId : string , size? : string ) : React . ReactNode ;
renderRoomView ( roomId : string , props? : RoomViewProps ) : React . ReactNode ;
}
// @alpha
export type CapabilitiesApprover = ( widget : WidgetDescriptor , requestedCapabilities : Set < string > ) = > MaybePromise < Set < string > | undefined > ;
// @alpha @deprecated (undocumented)
export interface ChatExportCustomisations < ExportFormat , ExportType > {
getForceChatExportParameters ( ) : {
format? : ExportFormat ;
range? : ExportType ;
numberOfMessages? : number ;
includeAttachments? : boolean ;
sizeMb? : number ;
} ;
}
// @public
export interface ClientApi {
accountData : AccountDataApi ;
getRoom : ( id : string ) = > Room | null ;
}
// @alpha @deprecated (undocumented)
export interface ComponentVisibilityCustomisations {
shouldShowComponent ? ( component : "UIComponent.sendInvites" | "UIComponent.roomCreation" | "UIComponent.spaceCreation" | "UIComponent.exploreRooms" | "UIComponent.addIntegrations" | "UIComponent.filterContainer" | "UIComponent.roomOptionsMenu" ) : boolean ;
}
// @public
export interface Config {
// (undocumented)
brand : string ;
}
// @public
export interface ConfigApi {
// (undocumented)
get ( ) : Config ;
// (undocumented)
get < K extends keyof Config > ( key : K ) : Config [ K ] ;
// (undocumented)
get < K extends keyof Config = never > ( key? : K ) : Config | Config [ K ] ;
}
// @alpha
export type Container = "top" | "right" | "center" ;
// @alpha
export interface CustomComponentsApi {
registerLoginComponent ( renderer : CustomLoginRenderFunction ) : void ;
registerMessageRenderer ( eventTypeOrFilter : string | ( ( mxEvent : MatrixEvent ) = > boolean ) , renderer : CustomMessageRenderFunction , hints? : CustomMessageRenderHints ) : void ;
registerRoomPreviewBar ( renderer : CustomRoomPreviewBarRenderFunction ) : void ;
}
// @alpha
export interface CustomisationsApi {
registerShouldShowComponent ( fn : ( this : void , component : UIComponent ) = > boolean | void ) : void ;
}
// @alpha
export type CustomLoginComponentProps = {
serverConfig : CustomLoginComponentPropsServerConfig ;
fragmentAfterLogin? : string ;
children? : ReactNode ;
onLoggedIn ( data : AccountAuthInfo ) : void ;
onServerConfigChange ( config : CustomLoginComponentPropsServerConfig ) : void ;
} ;
// @alpha
export interface CustomLoginComponentPropsServerConfig {
hsName : string ;
hsUrl : string ;
}
// @alpha
export type CustomLoginRenderFunction = ExtendablePropsRenderFunction < CustomLoginComponentProps > ;
// @alpha
export type CustomMessageComponentProps = {
mxEvent : MatrixEvent ;
} ;
// @alpha
export type CustomMessageRenderFunction = (
props : CustomMessageComponentProps ,
originalComponent ? : ( props? : OriginalMessageComponentProps ) = > React . JSX . Element ) = > JSX . Element ;
// @alpha
export type CustomMessageRenderHints = {
allowEditingEvent? : boolean ;
allowDownloadingMedia ? : ( mxEvent : MatrixEvent ) = > Promise < boolean > ;
} ;
// @alpha
export type CustomRoomPreviewBarComponentProps = {
roomId? : string ;
roomAlias? : string ;
} ;
// @alpha
export type CustomRoomPreviewBarRenderFunction = (
props : CustomRoomPreviewBarComponentProps ,
originalComponent : ( props : CustomRoomPreviewBarComponentProps ) = > JSX . Element ) = > JSX . Element ;
// @public
export interface DialogApiExtension {
openDialog < M , P extends object > ( initialOptions : DialogOptions , dialog : ComponentType < P & DialogProps < M > > , props : P ) : DialogHandle < M > ;
}
// @public
export type DialogHandle < M > = {
finished : Promise < {
ok : boolean ;
model : M | null ;
} > ;
close ( ) : void ;
} ;
// @public
export interface DialogOptions {
title : string ;
}
// @public
export type DialogProps < M > = {
onSubmit ( model : M ) : void ;
onCancel ( ) : void ;
} ;
// @alpha @deprecated (undocumented)
export interface DirectoryCustomisations {
// (undocumented)
requireCanonicalAliasAccessToPublish ? ( ) : boolean ;
}
// @alpha
export type ExtendablePropsRenderFunction < BaseProps > = < P extends BaseProps > (
props : P ,
originalComponent : ( props : P ) = > JSX . Element ) = > JSX . Element ;
// @alpha
export interface ExtrasApi {
addRoomHeaderButtonCallback ( cb : RoomHeaderButtonsCallback ) : void ;
getVisibleRoomBySpaceKey ( spaceKey : string , cb : ( ) = > string [ ] ) : void ;
setSpacePanelItem ( spaceKey : string , props : SpacePanelItemProps ) : void ;
}
// @public
export interface I18nApi {
humanizeTime ( this : void , timeMillis : number ) : string ;
get language ( ) : string ;
register ( this : void , translations : Partial < Translations > ) : void ;
translate ( this : void , key : keyof Translations , variables? : Variables ) : string ;
translate ( this : void , key : keyof Translations , variables : Variables | undefined , tags : Tags ) : ReactNode ;
}
// @alpha
export type IdentityApprover = ( widget : WidgetDescriptor ) = > MaybePromise < boolean | undefined > ;
// @alpha @deprecated (undocumented)
export type LegacyCustomisations < T extends object > = ( customisations : T ) = > void ;
// @alpha @deprecated (undocumented)
export interface LegacyCustomisationsApiExtension {
// @deprecated (undocumented)
readonly _registerLegacyAliasCustomisations : LegacyCustomisations < AliasCustomisations > ;
// @deprecated (undocumented)
readonly _registerLegacyChatExportCustomisations : LegacyCustomisations < ChatExportCustomisations < never , never > > ;
// @deprecated (undocumented)
readonly _registerLegacyComponentVisibilityCustomisations : LegacyCustomisations < ComponentVisibilityCustomisations > ;
// @deprecated (undocumented)
readonly _registerLegacyDirectoryCustomisations : LegacyCustomisations < DirectoryCustomisations > ;
// @deprecated (undocumented)
readonly _registerLegacyLifecycleCustomisations : LegacyCustomisations < LifecycleCustomisations > ;
// @deprecated (undocumented)
readonly _registerLegacyMediaCustomisations : LegacyCustomisations < MediaCustomisations < never , never , never > > ;
// @deprecated (undocumented)
readonly _registerLegacyRoomListCustomisations : LegacyCustomisations < RoomListCustomisations < never > > ;
// @deprecated (undocumented)
readonly _registerLegacyUserIdentifierCustomisations : LegacyCustomisations < UserIdentifierCustomisations > ;
// @deprecated (undocumented)
readonly _registerLegacyWidgetPermissionsCustomisations : LegacyCustomisations < WidgetPermissionsCustomisations < never , never > > ;
// @deprecated (undocumented)
readonly _registerLegacyWidgetVariablesCustomisations : LegacyCustomisations < WidgetVariablesCustomisations > ;
}
// @alpha @deprecated (undocumented)
export interface LegacyModuleApiExtension {
// @deprecated
_registerLegacyModule ( LegacyModule : RuntimeModuleConstructor ) : Promise < void > ;
}
// @alpha @deprecated (undocumented)
export interface LifecycleCustomisations {
// (undocumented)
onLoggedOutAndStorageCleared ? ( ) : void ;
}
// @alpha
export type LocationRenderFunction = ( ) = > JSX . Element ;
// @alpha
export interface MatrixEvent {
content : Record < string , unknown > ;
eventId : string ;
originServerTs : number ;
roomId : string ;
sender : string ;
stateKey? : string ;
type : string ;
unsigned : Record < string , unknown > ;
}
// @public
export type MaybePromise < T > = T | PromiseLike < T > ;
// @alpha @deprecated (undocumented)
export interface Media {
// (undocumented)
downloadSource ( ) : Promise < Response > ;
// (undocumented)
getSquareThumbnailHttp ( dim : number ) : string | null ;
// (undocumented)
getThumbnailHttp ( width : number , height : number , mode ? : "scale" | "crop" ) : string | null ;
// (undocumented)
getThumbnailOfSourceHttp ( width : number , height : number , mode ? : "scale" | "crop" ) : string | null ;
// (undocumented)
readonly hasThumbnail : boolean ;
// (undocumented)
readonly isEncrypted : boolean ;
// (undocumented)
readonly srcHttp : string | null ;
// (undocumented)
readonly srcMxc : string ;
// (undocumented)
readonly thumbnailHttp : string | null ;
// (undocumented)
readonly thumbnailMxc : string | null | undefined ;
}
// @alpha @deprecated (undocumented)
export interface MediaContructable < PreparedMedia > {
// (undocumented)
new ( prepared : PreparedMedia ) : Media ;
}
// @alpha @deprecated (undocumented)
export interface MediaCustomisations < Content , Client , PreparedMedia > {
// (undocumented)
readonly Media : MediaContructable < PreparedMedia > ;
// (undocumented)
mediaFromContent ( content : Content , client? : Client ) : Media ;
// (undocumented)
mediaFromMxc ( mxc? : string , client? : Client ) : Media ;
}
// @public
export interface Module {
// (undocumented)
load ( ) : Promise < void > ;
}
// @public
export interface ModuleFactory {
// (undocumented)
new ( api : Api ) : Module ;
// (undocumented)
readonly moduleApiVersion : string ;
// (undocumented)
readonly prototype : Module ;
}
// @public
export class ModuleIncompatibleError extends Error {
constructor ( pluginVersion : string ) ;
}
// @public
export class ModuleLoader {
constructor ( api : Api ) ;
// Warning: (ae-forgotten-export) The symbol "ModuleExport" needs to be exported by the entry point index.d.ts
//
// (undocumented)
load ( moduleExport : ModuleExport ) : Promise < void > ;
// (undocumented)
start ( ) : Promise < void > ;
}
// @public
export interface NavigationApi {
openRoom ( roomIdOrAlias : string , opts? : OpenRoomOptions ) : void ;
// @alpha
registerLocationRenderer ( path : string , renderer : LocationRenderFunction ) : void ;
toMatrixToLink ( link : string , join? : boolean ) : Promise < void > ;
}
// @public
export interface OpenRoomOptions {
autoJoin? : boolean ;
viaServers? : string [ ] ;
}
// @alpha
export type OriginalMessageComponentProps = {
showUrlPreview? : boolean ;
} ;
// @alpha
export type PreloadApprover = ( widget : WidgetDescriptor ) = > MaybePromise < boolean | undefined > ;
// @public
export interface Profile {
displayName? : string ;
isGuest? : boolean ;
userId? : string ;
}
// @public
export interface ProfileApiExtension {
readonly profile : Watchable < Profile > ;
}
// @public
export interface Room {
getLastActiveTimestamp : ( ) = > number ;
id : string ;
name : Watchable < string > ;
}
// @alpha
export type RoomHeaderButtonsCallback = ( roomId : string ) = > JSX . Element | undefined ;
// @alpha @deprecated (undocumented)
export interface RoomListCustomisations < Room > {
isRoomVisible ? ( room : Room ) : boolean ;
}
// @public
export interface RoomListStoreApi {
getRooms ( ) : Watchable < Room [ ] > ;
waitForReady ( ) : Promise < void > ;
}
// @alpha
export interface RoomViewProps {
enableReadReceiptsAndMarkersOnActivity? : boolean ;
hideComposer? : boolean ;
hideHeader? : boolean ;
hidePinnedMessageBanner? : boolean ;
hideRightPanel? : boolean ;
hideWidgets? : boolean ;
}
// @alpha @deprecated (undocumented)
export type RuntimeModuleConstructor = new ( api : ModuleApi ) = > RuntimeModule ;
// @alpha
export interface SpacePanelItemProps {
className? : string ;
icon? : JSX.Element ;
label : string ;
onSelected : ( ) = > void ;
style? : React.CSSProperties ;
tooltip? : string ;
}
// @public
export interface StoresApi {
roomListStore : RoomListStoreApi ;
}
// @public
export type SubstitutionValue = number | string | ReactNode | ( ( sub : string ) = > ReactNode ) ;
// @public
export type Tags = Record < string , SubstitutionValue > ;
// @public
export type Translations = Record < string , {
[ ietfLanguageTag : string ] : string ;
} > ;
// @alpha
export const enum UIComponent {
AddIntegrations = "UIComponent.addIntegrations" ,
CreateRooms = "UIComponent.roomCreation" ,
CreateSpaces = "UIComponent.spaceCreation" ,
ExploreRooms = "UIComponent.exploreRooms" ,
FilterContainer = "UIComponent.filterContainer" ,
InviteUsers = "UIComponent.sendInvites" ,
RoomOptionsMenu = "UIComponent.roomOptionsMenu"
}
// @alpha @deprecated (undocumented)
export interface UserIdentifierCustomisations {
getDisplayUserIdentifier ( userId : string , opts : {
roomId? : string ;
withDisplayName? : boolean ;
} ) : string | null ;
}
// @public
export function useWatchable < T > ( watchable : Watchable < T > ) : T ;
// @public
export type Variables = {
count? : number ;
[ key : string ] : SubstitutionValue ;
} ;
// @public
export class Watchable < T > {
constructor ( currentValue : T ) ;
// Warning: (ae-forgotten-export) The symbol "WatchFn" needs to be exported by the entry point index.d.ts
//
// (undocumented)
protected readonly listeners : Set < WatchFn < T > > ;
protected onFirstWatch ( ) : void ;
protected onLastWatch ( ) : void ;
// (undocumented)
unwatch ( listener : ( value : T ) = > void ) : void ;
get value ( ) : T ;
set value ( value : T ) ;
// (undocumented)
watch ( listener : ( value : T ) = > void ) : void ;
}
// @alpha
export interface WidgetApi {
getAppAvatarUrl ( app : IWidget , width? : number , height? : number , resizeMethod? : string ) : string | null ;
getWidgetsInRoom ( roomId : string ) : IWidget [ ] ;
isAppInContainer ( app : IWidget , container : Container , roomId : string ) : boolean ;
moveAppToContainer ( app : IWidget , container : Container , roomId : string ) : void ;
}
// @alpha
export type WidgetDescriptor = {
id : string ;
templateUrl : string ;
creatorUserId : string ;
type : string ;
origin : string ;
roomId? : string ;
} ;
// @alpha
export interface WidgetLifecycleApi {
registerCapabilitiesApprover ( approver : CapabilitiesApprover ) : void ;
registerIdentityApprover ( approver : IdentityApprover ) : void ;
registerPreloadApprover ( approver : PreloadApprover ) : void ;
}
// @alpha @deprecated (undocumented)
export interface WidgetPermissionsCustomisations < Widget , Capability > {
preapproveCapabilities ? ( widget : Widget , requestedCapabilities : Set < Capability > ) : Promise < Set < Capability > > ;
}
// @alpha @deprecated (undocumented)
export interface WidgetVariablesCustomisations {
isReady ? ( ) : Promise < void > ;
provideVariables ? ( ) : {
currentUserId : string ;
userDisplayName? : string ;
userHttpAvatarUrl? : string ;
clientId? : string ;
clientTheme? : string ;
clientLanguage? : string ;
deviceId? : string ;
baseUrl? : string ;
} ;
}
// (No @packageDocumentation comment for this package)
```