import { LocalStorage as LocalStorageImpl, LocalStorageConstructorOptions, LocalStorageOptions } from "./LocalStorage"; import { MemoryStorage as MemoryStorageImpl, MemoryStorageConstructorOptions, MemoryStorageOptions } from "./MemoryStorage"; import { Storage } from "./Storage"; export { Storage }; /** * @enum {"LocalStorage"} PredefinedStorages * Predefined storages available for use in custom log managers: * @property {"LocalStorage"} LocalStorage - a storage that persist collected data between page reloads * @memberof Log */ export declare enum PredefinedStorages { LocalStorage = "LocalStorage", MemoryStorage = "MemoryStorage" } /** * @typedef {object} StorageTypeOptions * @property {PredefinedStorages} type a type of a predefined storage * @memberof Log */ type StorageTypeOptions = { type: PredefinedStorages; }; /** * Options for predefined storages * * @typedef {object} StorageConfigurableOptions * @mixes Log.StorageTypeOptions * @mixes Log.LocalStorageOptions * @property {PredefinedStorages} type a type of a predefined storage * @memberof Log */ type StorageConfigurableOptions = StorageTypeOptions & LocalStorageOptions & MemoryStorageOptions; /** * Create a custom storage * @callback CreateStorage * @returns {Log.Storage} * @memberof Log * @private */ type CreateStorage = () => Storage; /** * A way to define a storage for a log manager * * @typedef {CreateStorage | StorageConfigurableOptions} StorageConfig * @memberof Log */ export type StorageConfig = CreateStorage | StorageConfigurableOptions; type ConstructorsOptions = LocalStorageConstructorOptions & MemoryStorageConstructorOptions; type GetStorageParams = StorageTypeOptions & ConstructorsOptions; export declare const getStorage: (options: GetStorageParams) => LocalStorageImpl | MemoryStorageImpl;