import * as bot from '../../bot'; import { BaseIntegration, DefaultIntegration, InputBaseIntegration } from '../../integration/common/generic'; import { BaseInterface, InputBaseInterface, DefaultInterface } from '../../interface/common/generic'; import * as utils from '../../utils/type-utils'; export type BaseAction = { input: any; output: any; }; export type BaseTable = { [k: string]: any; }; export type BaseWorkflow = { input: any; output: any; tags?: { [k: string]: string; }; }; export type BaseState = { type: bot.StateType; payload: any; }; export type BasePlugin = { name: string; version: string; configuration: any; integrations: Record; interfaces: Record; events: Record; states: Record; actions: Record; tables: Record; workflows: Record; conversation: { tags: Record; }; user: { tags: Record; }; message: { tags: Record; }; }; export type InputBasePlugin = utils.DeepPartial; export type DefaultPlugin> = { name: utils.Default; version: utils.Default; configuration: utils.Default; events: utils.Default; states: utils.Default; actions: utils.Default; tables: utils.Default; workflows: utils.Default; integrations: undefined extends B['integrations'] ? BasePlugin['integrations'] : { [K in keyof B['integrations']]: DefaultIntegration>; }; interfaces: undefined extends B['interfaces'] ? BasePlugin['interfaces'] : { [K in keyof B['interfaces']]: DefaultInterface>; }; conversation: utils.Default; user: utils.Default; message: utils.Default; };