2026-05-18 22:41:38 +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' ;
import { SVGAttributes } from 'react' ;
// @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 ;
// @alpha
readonly composer : ComposerApi ;
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 ;
}
// @alpha
export interface ComposerApi {
addFileUploadOption ( option : ComposerApiFileUploadOption ) : void ;
insertPlaintextIntoComposer ( plaintext : string , view : ComposerApiTarget ) : void ;
openFileUploadConfirmation ( files : File [], view : ComposerApiTarget ) : void ;
}
// @alpha
export type ComposerApiFileUploadOption = {
type : string ;
label : string ;
icon? : ComponentType < SVGAttributes < SVGElement >>;
onSelected : ( roomId? : string , view? : ComposerApiTarget , relation ?: {
inReplyToEventId? : string ;
relType? : string ;
}) => Promise < void > | void ;
};
// @alpha
export type ComposerApiTarget = {
view : "room" ;
} | {
view : "thread" ;
};
2026-07-06 14:49:32 +01:00
// Warning: (ae-forgotten-export) The symbol "WebConfigJson" needs to be exported by the entry point index.d.ts
//
2026-05-18 22:41:38 +01:00
// @public
2026-07-06 14:49:32 +01:00
export interface Config extends WebConfigJson {
2026-05-18 22:41:38 +01:00
// (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 {
2026-07-06 13:32:07 +01:00
registerComposerPreview ( filterFn : ( composerText : string , roomId : string ) => boolean , renderer : CustomComposerPreviewRenderFunction ) : void ;
2026-05-18 22:41:38 +01:00
registerLoginComponent ( renderer : CustomLoginRenderFunction ) : void ;
registerMessageRenderer ( eventTypeOrFilter : string | (( mxEvent : MatrixEvent ) => boolean ), renderer : CustomMessageRenderFunction , hints? : CustomMessageRenderHints ) : void ;
registerRoomPreviewBar ( renderer : CustomRoomPreviewBarRenderFunction ) : void ;
}
2026-07-06 13:32:07 +01:00
// @alpha
export type CustomComposerPreviewComponentProps = {
text : string ;
roomId : string ;
target? : ComposerApiTarget ;
relation ?: {
inReplyToEventId? : string ;
relType? : string ;
};
};
// @alpha
export type CustomComposerPreviewRenderFunction = ExtendablePropsRenderFunction < CustomComposerPreviewComponentProps >;
2026-05-18 22:41:38 +01:00
// @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? : StringVariables ) : 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 RichVariables {
// (undocumented)
[ key : string ] : SubstitutionValue ;
// (undocumented)
count? : number ;
}
// @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 interface StringVariables {
// (undocumented)
[ key : string ] : number | string | null | undefined ;
// (undocumented)
count? : number ;
}
// @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 = StringVariables | RichVariables ;
// @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)
```