import { SqlExpression } from 'druid-query-toolkit'; import type { ExpressionMeta } from './models'; import type { Parameter, ParameterDefinitions, ParameterTypes, TypedParameter } from './parameter'; import type { ParametersToParams, VisualModule, VisualModuleContext, VisualModuleInstance } from './visual-module'; type ParameterOverrides = { [K in Exclude, 'type'>]?: Partial[K]>; }; export interface VisualModuleOverrides

{ parameters?: { [Name in keyof P]?: ParameterOverrides; }; parameterOrder?: (keyof P)[]; table?: string; where?: SqlExpression | string; having?: SqlExpression | string; onUpdate?(updateEvent: UpdateEvent>, context: VisualModuleContext>): void; } export interface RegisteredVisualModule { moduleName: string; parameters?: ParameterDefinitions; parameterOrder?: string[]; (context: VisualModuleContext>): VisualModuleInstance>; } export interface UpdateEvent { params: Params; table: SqlExpression; where: SqlExpression; having?: SqlExpression; } export interface ModuleState { params: Record; table: SqlExpression | undefined; where: SqlExpression | undefined; having?: SqlExpression | undefined; } export type TransferValue = [type: Parameter['type'], value: unknown]; export interface HostState { table: SqlExpression; columns?: ExpressionMeta[]; where: SqlExpression; having?: SqlExpression; transferState: Record; visualModules?: Record; visualModuleState: Record; getModuleParams

(moduleName: string): ParametersToParams

; getUpdateEvent

(moduleName: string): UpdateEvent>; registerModule

(name: string, module: VisualModule

, overrides?: VisualModuleOverrides

): void; removeModule(name: string): void; setModuleParams

>(moduleName: string, params: Partial

| ((prev: P | undefined) => Partial

)): void; setModuleTable(moduleName: string, table: SqlExpression | undefined): void; setModuleWhere(moduleName: string, where: SqlExpression | undefined): void; setModuleHaving(moduleName: string, having: SqlExpression | undefined): void; } export interface StateStorage { getItem: (name: string) => any | null; setItem: (name: string, value: any) => void; removeItem: (name: string) => void; } export interface HostStorePersistOptions { name?: string; storage: 'localstorage' | 'sessionstorage' | 'url' | StateStorage; } export interface HostStoreOptions { persist?: HostStorePersistOptions; table: SqlExpression; where?: SqlExpression | string; having?: SqlExpression | string; } export declare function createHostStore(options: HostStoreOptions): import("zustand").StoreApi; export {}; //# sourceMappingURL=host-store.d.ts.map