/* Copyright 2022-2024 New Vector Ltd. SPDX-License-Identifier: AGPL-3.0-only Please see LICENSE in the repository root for full details. */ export interface ConfigOptions { /** * The Posthog endpoint to which analytics data will be sent. */ posthog?: { api_key: string; api_host: string; }; /** * The Sentry endpoint to which crash data will be sent. */ sentry?: { DSN: string; environment: string; }; /** * The rageshake server to which feedback and debug logs will be sent. */ rageshake?: { submit_url: string; }; /** * Sets the URL to send opentelemetry data to. If unset, opentelemetry will * be disabled. */ opentelemetry?: { collector_url: string; }; // Describes the default homeserver to use. The same format as Element Web // (without identity servers as we don't use them). default_server_config?: { ["m.homeserver"]: { base_url: string; server_name: string; }; }; // Describes the LiveKit configuration to be used. livekit?: { // The link to the service that returns a livekit url and token to use it. // This is a fallback link in case the homeserver in use does not advertise // a livekit service url in the client well-known. // The well known needs to be formatted like so: // {"type":"livekit", "livekit_service_url":"https://livekit.example.com"} // and stored under the key: "livekit_focus" livekit_service_url: string; }; /** * TEMPORARY experimental features. */ features?: { /** * Allow to join group calls without audio and video. */ feature_group_calls_without_video_and_audio?: boolean; /** * Send device-specific call session membership state events instead of * legacy user-specific call membership state events. * This setting has no effect when the user joins an active call with * legacy state events. For compatibility, Element Call will always join * active legacy calls with legacy state events. */ feature_use_device_session_member_events?: boolean; }; /** * A link to the end-user license agreement (EULA) */ eula: string; } // Overrides members from ConfigOptions that are always provided by the // default config and are therefore non-optional. export interface ResolvedConfigOptions extends ConfigOptions { default_server_config: { ["m.homeserver"]: { base_url: string; server_name: string; }; }; } export const DEFAULT_CONFIG: ResolvedConfigOptions = { default_server_config: { ["m.homeserver"]: { base_url: "http://localhost:8008", server_name: "localhost", }, }, eula: "https://static.element.io/legal/online-EULA.pdf", };