import { Context, ContextType } from '../create-context.js';
import { ReactiveController, ReactiveControllerHost } from '../../../../node_modules/@lit/reactive-element/node/reactive-element.js';
export interface Options<C extends Context<unknown, unknown>> {
    context: C;
    callback?: (value: ContextType<C>, dispose?: () => void) => void;
    subscribe?: boolean;
    ref?: HTMLElement;
}
/**
 * A ReactiveController which adds context consuming behavior to a custom
 * element by dispatching `context-request` events.
 *
 * When the host element is connected to the document it will emit a
 * `context-request` event with its context key. When the context request
 * is satisfied the controller will invoke the callback, if present, and
 * trigger a host update so it can respond to the new value.
 *
 * It will also call the dispose method given by the provider when the
 * host element is disconnected.
 */
export declare class ContextConsumer<C extends Context<unknown, unknown>, HostElement extends ReactiveControllerHost & HTMLElement> implements ReactiveController {
    protected host: HostElement;
    protected ref: HTMLElement;
    private context;
    private callback?;
    private subscribe;
    private provided;
    value?: ContextType<C>;
    constructor(host: HostElement, options: Options<C>);
    /** @deprecated Use new ContextConsumer(host, options) */
    constructor(host: HostElement, context: C, callback?: (value: ContextType<C>, dispose?: () => void) => void, subscribe?: boolean, ref?: HTMLElement);
    private unsubscribe?;
    hostConnected(): void;
    hostDisconnected(): void;
    dispatchRequest(): void;
    private _callback;
}
//# sourceMappingURL=context-consumer.d.ts.map