import { ESLMixinElement } from '../../esl-mixin-element/core';
import { ESLMediaRuleList } from '../../esl-media-query/core';
import { ESLCarousel } from '../core/esl-carousel';
/** Base mixin plugin of {@link ESLCarousel} */
export declare abstract class ESLCarouselPlugin<Config extends Record<string, any>> extends ESLMixinElement {
    /** Default configuration */
    protected static DEFAULT_CONFIG: Record<string, any>;
    /** Config key to be used if passed non object value */
    protected static DEFAULT_CONFIG_KEY: string;
    /** {@link ESLCarousel} host instance */
    $host: ESLCarousel;
    /** Plugin name, also an attribute name in the carousel configuration */
    get name(): string;
    /** Plugin configuration attribute value */
    get configValue(): string;
    set configValue(value: string);
    /** Plugin configuration query */
    get configQuery(): ESLMediaRuleList<Config | null>;
    /** Active plugin configuration object */
    get config(): Config;
    /**
     * Parses plugin media query value term to the config object.
     * Provides the capability to pass a config a stringified non-strict JSON or as a string (mapped to single option configuration).
     *
     * Uses {@link ESLCarouselPlugin.DEFAULT_CONFIG_KEY} to map string value to the config object.
     */
    protected parseConfig(value: string): Config | null;
    protected connectedCallback(): void;
    protected attributeChangedCallback(attrName: string, oldValue: string | null, newValue: string | null): void;
    /** Callback to be executed on plugin initialization */
    protected onInit(): void;
    /** Callback to be executed on plugin configuration query change (attribute change) */
    protected onConfigChange(): void;
    /** Register mixin-plugin in ESLMixinRegistry */
    static register(): void;
}
