import { RegisteredComponent } from "./register-component"; import { BaseNylasConnectorInterface } from "../connector/connector-interface"; import { ObservableMap } from '@stencil/store'; import { EventOverride } from './component-types'; export type PropKey = string | number | symbol; export type StoreKey = string; export type StoreName = keyof T; export type StateKey = string; export type ElementID = string; export type PropStateRegistration = { elementId: ElementID; propKey: PropKey; }; export type EventListenerRegistration = [HTMLElement, PropKey, (event: CustomEvent) => Promise]; export interface NylasProviderInterface>> { nylasConnector?: BaseNylasConnectorInterface; stores: Stores; host?: HTMLElement; automaticComponentRegistration: boolean; registeredComponents: Record>; propStateRegistrations: Map, Map>; eventListenerRegistrations: Map; componentWillLoad(nylasConnector: BaseNylasConnectorInterface): Promise; componentDidLoad(): Promise; componentDisconnected(): Promise; getStore>(name: K): ThisType[K]; registerComponent(component: RegisteredComponent): void; unregisterComponent(component: RegisteredComponent): void; } export declare abstract class NylasAbstractProvider>> implements NylasProviderInterface { nylasConnector?: BaseNylasConnectorInterface; stores: Stores; host: HTMLElement; automaticComponentRegistration: boolean; registeredComponents: Record>; propStateRegistrations: Map, Map>; eventListenerRegistrations: Map; private propUpdateQueue; private propUpdateScheduled; eventOverrides: EventOverride>; constructor(host: HTMLElement, stores: Stores, automaticComponentRegistration: boolean | undefined, eventOverrides: EventOverride); componentWillLoad(nylasConnector: BaseNylasConnectorInterface): Promise; componentDidLoad(): Promise; componentDisconnected(): Promise; registerComponentHandler(event: CustomEvent>): Promise; unregisterComponentHandler(event: CustomEvent>): Promise; registerComponent(component: RegisteredComponent): Promise; private computeDeterministicId; private cleanupComponentRegistration; unregisterComponent(component: RegisteredComponent): void; getStore(name: K): Stores[K]; private setupStoreListeners; private queuePropUpdate; private flushPropUpdates; private get hostTagName(); } export declare class NylasBaseProvider>> extends NylasAbstractProvider { }