declare type Vue = typeof import('vue'); declare type VueConstructor = import('vue').VueConstructor; declare interface Logger extends Pick { table?: Console['table']; } interface IPressComponent { name: string; vueComponent?: VueConstructor; infer?: PressComponentInferrer; enhance?: PressComponentEnhancer; } declare interface PressHelpers { html: typeof import('./lib/html'); polyfills: typeof import('./lib/polyfills'); vuetilities: typeof import('./lib/vuetilities'); } /** * An Enhancer receives a node identified by `data-press-component` and * adds additional attributes, children, or siblings to it. Typically, this * means adding Vue directives. */ type PressComponentEnhancer = (el: HTMLElement, helpers: PressHelpers) => void; /** * An Inferer receives a node (typically `document`) and searches its children * for nodes of particular criteria, then adds the appropriate `data-press` * attributes to those nodes. */ type PressComponentInferrer = ( el: Document | HTMLElement, helpers: PressHelpers ) => void; interface StringMap { [key: string]: string; }