import type { UmbContextCallback, UmbContextConsumerAsPromiseOptionsType, UmbContextConsumerController, UmbContextMinimal, UmbContextProviderController, UmbContextToken } from '../context-api/index.js'; import type { UmbControllerAlias, UmbControllerHost } from '../controller-api/index.js'; import type { ObserverCallback, UmbObserverController } from '../observable-api/index.js'; import type { Observable } from '../../external/rxjs/index.js'; export interface UmbClassGetContextOptions extends UmbContextConsumerAsPromiseOptionsType { skipHost?: boolean; passContextAliasMatches?: boolean; } export interface UmbClassInterface extends UmbControllerHost { /** * @description Observe an Observable. An Observable is a declared source of data that can be observed. An observables is declared from a UmbState. * @param {Observable} source An Observable to observe from. * @param {ObserverCallback | undefined} callback Callback method called when data is changed. * @param {UmbControllerAlias | null | undefined} controllerAlias Define an explicit controller alias. If not defined then one will be generated based on the callback function. If null is parsed no controller alias will be given. * @returns {UmbObserverController} Reference to the created Observer Controller instance. * @memberof UmbClassInterface */ observe | undefined, T, SpecificT = ObservableType extends Observable ? ObservableType extends undefined ? U | undefined : U : undefined, SpecificR = ObservableType extends undefined ? UmbObserverController | undefined : UmbObserverController>(source: ObservableType, callback?: ObserverCallback, controllerAlias?: UmbControllerAlias | null): SpecificR; /** * @description Provide a context API for this or child elements. * @param {string} alias * @param {instance} instance The API instance to be exposed. * @returns {UmbContextProviderController} Reference to the created Context Provider Controller instance * @memberof UmbClassInterface */ provideContext(alias: string | UmbContextToken, instance: R): UmbContextProviderController; /** * @description Setup a subscription for a context. The callback is called when the context is resolved. * @param {string} alias * @param {ObserverCallback} callback Callback method called when context is resolved. * @returns {UmbContextConsumerController} Reference to the created Context Consumer Controller instance * @memberof UmbClassInterface */ consumeContext(alias: string | UmbContextToken, callback: UmbContextCallback): UmbContextConsumerController; /** * @description Retrieve a context. Notice this is a one time retrieving of a context, meaning if you expect this to be up to date with reality you should instead use the consumeContext method. * @param {string} alias * @returns {Promise} A Promise with the reference to the Context Api Instance * @memberof UmbClassInterface */ getContext(alias: string | UmbContextToken, options?: UmbClassGetContextOptions): Promise; }