import type { SqlExpression } from 'druid-query-toolkit'; import type { Host } from './host'; import type { UpdateEvent } from './host-store'; import type { Parameter, ParameterDefinitions, ParameterTypes } from './parameter'; type ExtractParameters = P[Name] extends Parameter ? Name : never; type ParameterValueType

= P extends { default: infer V; } ? V : ParameterTypes[P['type']] | undefined; export type ParametersToParams = { [Name in keyof D as ExtractParameters]: ParameterValueType; }; export interface VisualModuleContext { container: HTMLElement; host: Host; getLastUpdateEvent(): UpdateEvent | undefined; updateParam(name: Name, value: Params[Name]): void; updateParams(params: Partial): void; updateTable(table: SqlExpression): void; updateWhere(where: string | SqlExpression | undefined): void; updateHaving(having: string | SqlExpression | undefined): void; } export interface VisualModuleInstance { update(updateEvent: UpdateEvent): Promise | void; destroy?(): Promise | void; } export interface VisualModule

{ parameters: P | undefined; parameterOrder: (keyof P)[] | undefined; (context: VisualModuleContext>): VisualModuleInstance>; } type ParameterizedModuleFactory

= (context: VisualModuleContext>) => VisualModuleInstance>; export interface TypedVisualModuleOptions

{ module: ParameterizedModuleFactory

; parameters?: P & ParameterDefinitions; parameterOrder?: (keyof P)[]; } export declare function typedVisualModule

({ module: factory, parameters, parameterOrder, }: TypedVisualModuleOptions

): VisualModule

; export {}; //# sourceMappingURL=visual-module.d.ts.map