import * as integration from './integration'; import * as plugin from './plugin'; import * as utils from './utils/type-utils'; type NameVersion = { name: string; version: string; }; type PackageReference = NameVersion & { id?: string; uri?: string; }; type Attributes = { attributes?: Record; }; type IntegrationPackageDefinitionInterface = utils.Merge; type IntegrationPackageDefinition = NameVersion & Attributes & { configuration?: integration.ConfigurationDefinition; configurations?: Record; events?: Record; actions?: Record; channels?: Record; states?: Record; user?: integration.UserDefinition; secrets?: Record; entities?: Record; interfaces?: Record; }; type InterfacePackageDefinition = NameVersion & Attributes & { entities?: Record; events?: Record; actions?: Record; channels?: Record; }; type PluginPackageDefinition = NameVersion & Attributes & { integrations?: Record; interfaces?: Record; user?: plugin.UserDefinition; conversation?: plugin.ConversationDefinition; message?: plugin.MessageDefinition; states?: Record; configuration?: plugin.ConfigurationDefinition; events?: Record; recurringEvents?: Record; actions?: Record; tables?: Record; workflows?: Record; }; export type IntegrationPackage = PackageReference & { type: 'integration'; definition: IntegrationPackageDefinition; implementation?: null; }; export type InterfacePackage = PackageReference & { type: 'interface'; definition: InterfacePackageDefinition; implementation?: null; }; export type PluginPackage = PackageReference & { type: 'plugin'; definition: PluginPackageDefinition; implementation: Buffer; }; export type Package = IntegrationPackage | InterfacePackage | PluginPackage; export {};