import { TemplateResult } from "lit-html";
import { Bloc } from "./bloc";
import { BuildWhenFunction } from "./bloc-builder";
export interface StateBuilderFunction {
(state: S): TemplateResult;
}
export interface GuiMakerConfig {
tag_prefix?: string;
tag_name: string;
builder_function: StateBuilderFunction;
bloc_name: string;
blocs_map?: Record>;
buildWhen?: BuildWhenFunction;
}
export declare class GuiMaker {
static make(config: GuiMakerConfig): TemplateResult;
private static tag_name_from_config;
/**
* Will define a tag and return its name.
* You can add properties on this tags and use it in blocs later on.
* @param config
* @returns tag-prefix-tag-name
*/
static define(config: GuiMakerConfig): string;
}
export declare abstract class ApexBloc extends Bloc {
constructor(initState?: TemplateResult);
abstract notifyAttributeChange(newValue: T): void;
}