import { Constructor, Nexwidget } from '../nexwidget.js';
export interface NexwidgetDependencyKeyMap {}
declare type DependencyRequestEventDetails<
  K extends keyof NexwidgetDependencyKeyMap,
> = {
  readonly key: K;
  value?: NexwidgetDependencyKeyMap[K];
};
declare type DependencyRequestEvent<K extends keyof NexwidgetDependencyKeyMap> =
  CustomEvent<DependencyRequestEventDetails<K>>;
declare global {
  interface HTMLElementEventMap {
    'dependency-request': DependencyRequestEvent<
      keyof NexwidgetDependencyKeyMap
    >;
  }
}
export declare class WithDependencyConsumerInterface {
  requestDependency<K extends keyof NexwidgetDependencyKeyMap>(
    key: K,
  ): NexwidgetDependencyKeyMap[K];
}
export declare const WithDependencyConsumer: <T extends Constructor<Nexwidget>>(
  Base: T,
) => Constructor<WithDependencyConsumerInterface> & T;
export declare class WithDependencyProviderInterface {
  provideDependency<K extends keyof NexwidgetDependencyKeyMap>(
    key: K,
    value: NexwidgetDependencyKeyMap[K],
  ): void;
}
export declare const WithDependencyProvider: <T extends Constructor<Nexwidget>>(
  Base: T,
) => Constructor<WithDependencyProviderInterface> & T;
export {};
