import { ReactiveController, ReactiveControllerHost } from 'lit'; import { DisposalBin } from '../events'; import { Logger } from '../logger'; import { ContextConsumerConnectEvent, ContextConsumerConnectEventDetail } from './events'; export declare type ProvideContextOptions = { /** * A unique identifier used to pair a context provider and consumer. */ id: symbol; /** * Provide a name for debugging. */ name?: string | symbol; /** * Called when the host controller has connected to the DOM. */ onConnect?(): void; /** * Called when the provider value is updated. */ onUpdate?(newValue: T): void; /** * Called when the host controller has disconnected from the DOM. */ onDisconnect?(): void; }; export declare class ContextProviderController implements ReactiveController { protected readonly _host: ReactiveControllerHost; readonly initialValue: T; protected readonly _options: ProvideContextOptions; protected _value: T; protected _ref?: Element; protected _isProviding: boolean; protected readonly _logger: Logger; protected readonly _stopDisposal: DisposalBin; protected readonly _consumers: Set>; get id(): symbol; get name(): string | symbol | undefined; get value(): T; set value(newValue: T); /** * Whether the provider has attached to an element and is providing the context. */ get isConnected(): boolean; constructor(_host: ReactiveControllerHost, initialValue: T, _options: ProvideContextOptions); hostConnected(): void; hostDisconnected(): void; /** * Set a reference to a DOM element that this controller will use to provide the context from * by listening to consumer connect events at the given reference. */ setRef(newRef?: Element): void; protected _handleRefChange(newRef?: Element): void; /** * Start providing context to consumers. */ start(): void; /** * Stop providing context to consumers. */ stop(shouldConsumersReconnect?: boolean): void; protected _handleConsumerConnect(event: ContextConsumerConnectEvent): void; protected _updateConsumers(): void; }