import { Container, Module, ModuleDeclaration } from 'ditox';
type LogMetadata = Readonly<Record<string, string>>;
type LogFunction = (...data: unknown[]) => void;
type Logger = {
  /**
   * Returns a nested logger
   */
  getLogger: typeof getLogger;
  withMeta: (meta: LogMetadata) => Logger;
  debug: LogFunction;
  log: LogFunction;
  info: LogFunction;
  warn: LogFunction;
  error: LogFunction;
};
declare function getLogger(tag: string, meta?: LogMetadata): Logger;
/**
 * Jazz SDK Plugin provides additional features.
 */
type JazzSdkPreloadPlugin<T extends Module<AnyObject> = Module<AnyObject>> =
  () => {
    key: string | undefined;
    module: JazzSdkPreloadModuleDeclaration<T>;
  };
type JazzSdkPreloadModuleDeclaration<
  T extends JazzSdkPreloadModule<AnyObject> = JazzSdkPreloadModule<AnyObject>,
> = ModuleDeclaration<T>;
type JazzSdkPreloadModule<T extends AnyObject = AnyObject> = Module<T>;
type JazzSdkPreloadAdditionalPlugins = ReadonlyArray<JazzSdkPreloadPlugin>;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
type AnyObject = Record<string, any>;
type JazzSdkElectronPreloadOptions = {
  container?: Container;
  plugins?: JazzSdkPreloadAdditionalPlugins;
};
type JazzSdkElectronPreload = {
  destroy: () => void;
  container: Container;
};
declare const createJazzSdkElectronPreload: (
  options?: JazzSdkElectronPreloadOptions,
) => JazzSdkElectronPreload;
export { createJazzSdkElectronPreload };
export type { JazzSdkElectronPreloadOptions };
