import { Bloc } from "./bloc"; import { TemplateResult } from "../template"; import { OtherBlocSearchCriteria } from "./blocs-provider"; import { BaseBlocsHTMLElement } from '../base'; export interface BuildWhenFunction { (previousState: S, newState: S): boolean; } export interface BlocBuilderConfig { buildWhen?: BuildWhenFunction; otherSearchCriteria?: OtherBlocSearchCriteria; blocs_map?: Record>; } export declare abstract class BlocBuilder, S> extends BaseBlocsHTMLElement { private _bloc; private _subscriptionId; private _prevState; protected nameOfBlocToSearch: string; get blocName(): string; static stateChangeBuildWhenFunction(preState: S, newState: S): boolean; private _blocBuilderConfig; get blocbuilderconfig(): BlocBuilderConfig; set blocbuilderconfig(bConfig: BlocBuilderConfig); /** * * @param nameOfBlocToSearch Either provide this or provide bloc attribute * @param configs */ constructor(nameOfBlocToSearch?: string, configs?: BlocBuilderConfig); get bloc(): B | undefined; get state(): S | undefined; protected connectedCallback(): void; getBloc>(bn: string): B | undefined; _initialize(): void; disconnectedCallback(): void; _build(state: S): void; abstract builder(state: S): TemplateResult | undefined; } export declare abstract class MultiBlocsReactiveWidget extends BaseBlocsHTMLElement { protected config: { blocs_map: Record>; subscribed_blocs: string[]; }; protected found_blocs: Record>; protected state?: S; protected subscribed_states: Record; private listener_ids; get blocsMap(): Record>; getBloc>(blocName: string): B; constructor(config: { blocs_map: Record>; subscribed_blocs: string[]; }); connectedCallback(): void; disconnectedCallback(): void; abstract convertSubscribedStatesToReactiveState(subscribed_states?: Record): S | undefined; protected build_when(prev_state?: S, new_state?: S): boolean; abstract build(state?: S): TemplateResult | undefined; protected _build(): void; }