type ObjectKey = string | number | symbol; type EmptyObject = Record; interface BaseBusEvent { name: string; } interface ListenerOptions { /** * Whether a listener should be invoked at most once after being added. * The default value is false. */ once?: boolean; /** * A function that returns a boolean to determine if the listener should be called. * The guard not set by default. * * @since 5.1.0 */ guard?: (event: Extract) => boolean; /** * An AbortSignal. The listener will be removed when the abort() method of the AbortController which owns the AbortSignal is called. * See [AbortController](https://developer.mozilla.org/en-US/docs/Web/API/AbortController) for details. * * @since 5.1.0 */ signal?: AbortSignal; } type Listener = (event: Extract) => void | Promise; type AddEventListener = (event: EventName, listener: Listener, options?: ListenerOptions) => void; type RemoveEventListener = (event: EventName, listener: Listener) => void; declare enum ContainerEvent { ModuleRegistered = "MODULE_REGISTERED" } interface ModuleRegisteredEvent extends BaseBusEvent { name: ContainerEvent.ModuleRegistered; token: Token; } type ContainerEvents = ModuleRegisteredEvent; interface Container { readonly key: string; registerModule: (module: ModuleLoader) => void; registerModules: (modules: ModuleLoader[]) => void; getModule(token: Token, required?: false): Module | undefined; getModule(token: Token, required: true): Module; getModuleAsync: (token: Token) => Promise; addEventListener: AddEventListener; removeEventListener: RemoveEventListener; } interface Token { name: string; module?: ModuleType; } interface InitModuleOptions { container: Container; key: string; } interface ModuleLoader { token: Token; options: Options; required: Token[]; setup: (initOptions: InitModuleOptions) => ModuleType; } type ModuleFactory = Options extends EmptyObject ? () => ModuleLoader : (options: Options) => ModuleLoader; interface BaseModule { /** * @hidden */ container: Container; } declare global { interface Navigator { getBattery?: () => Promise; } } interface BatteryManager extends EventTarget { level: number; charging: boolean; chargingTime: number; dischargingTime: number; } /** * Enum that describes the log levels. * * @folder Logger */ export declare enum LogLevel { /** * Debug, info, error, and warning log messages are enabled. */ Debug = "Debug", /** * Info, error, and warning log messages are enabled. */ Info = "Info", /** * Error and warning log messages are enabled. */ Warning = "Warning", /** * Only error messages are enabled. */ Error = "Error" } /** * @hidden */ export interface LogOptions { /** * Log level */ level?: LogLevel; scope: string; } /** * Interface that represents extra information for a log message. * * @folder Logger */ export interface LogRecordExtraData extends Required { /** * Log message sequence number. */ sequenceNumber: number; /** * Timestamp of the log message. */ time: string; /** * Log message id. */ traceId: string; /** * Log message prefix. */ prefix?: string | null; } /** * @hidden */ export type ShortLogFunction = (...message: unknown[]) => void; /** * @hidden */ export type ScopedLogger = Record<"info" | "debug" | "warn" | "error", ShortLogFunction>; /** * Interface that represents a log message and extra data. * * @folder Logger */ export interface LogCallBackProps { /** * Log message. */ fullMessage: string; /** * Log message. */ message: unknown[]; /** * Extra information. */ extraData: LogRecordExtraData; } /** * Type that represents a callback function to receive the log messages. * * @interface * @folder Logger */ export type LogCallbackFunction = (props: LogCallBackProps) => void | Promise; /** * Enum that describes the time formats for the log messages. * * @folder Logger */ export declare enum TimeFormat { /** * Unix timestamp. */ Timestamp = "TIMESTAMP", /** * ISO 8601 standard timestamp */ ISO = "ISO" } /** * Logger options. * * @folder Logger */ export interface LoggerOptions { /** * Log level. The default value is Info. */ logLevel?: LogLevel; /** * Whether logs should be printed to the browser console. The default value is true. */ enableConsoleLogger?: boolean; /** * Log level for the callback function. The default value is Info. */ callbackLogLevel?: LogLevel; /** * Whether a timestamp is included to a log message. The default value is true. */ withTime?: boolean; /** * Timestamp format. The default value is ISO. */ timeFormat?: TimeFormat; /** * Callback function to receive the log messages. */ onLogCallback?: LogCallbackFunction | null; /** * Log message prefix. Helps to distinguish Web SDK logs from other logs in the console. The default value is 'WEBSDK'. */ prefix?: string | null; } /** * @hidden */ export interface Logger extends BaseModule { log: (options: LogOptions, ...message: unknown[]) => void; createScopedLogger: (scope: string) => ScopedLogger; } /** * @hidden */ export declare const loggerToken: Token; /** * @hidden */ export declare const LoggerLoader: ModuleFactory; export {};