# @mulutime/plugin-types

TypeScript types for the MuluTime plugin system. This package provides comprehensive type definitions for building plugins that integrate with the MuluTime platform.

## Installation

```bash
npm install @mulutime/plugin-types
```

## Usage

```typescript
import {
  Plugin,
  PluginConfig,
  PluginContext,
  Integration,
  SystemEvent
} from '@mulutime/plugin-types';

// Define your plugin
const myPlugin: Plugin = {
  id: 'my-plugin',
  name: 'My Plugin',
  version: '1.0.0',
  // ... other plugin properties
};

// Use integration types
const integration: Integration = {
  // ... integration configuration
};
```

## Type Definitions

This package exports types for:

- **Plugin System**: Core plugin interfaces and configurations
- **Integrations**: Third-party service integration definitions  
- **System Events**: Event types and handlers for the plugin system
- **Core Types**: Base types and utilities used throughout the system

## API Reference

### Core Types

The main types exported by this package include:

- `Plugin` - Main plugin interface
- `PluginConfig` - Plugin configuration options
- `PluginContext` - Runtime context provided to plugins
- `Integration` - Third-party integration definitions
- `SystemEvent` - System event types and payloads

### Usage Examples

#### Creating a Plugin

```typescript
import { Plugin, PluginConfig } from '@mulutime/plugin-types';

const config: PluginConfig = {
  // Plugin configuration
};

const plugin: Plugin = {
  id: 'example-plugin',
  name: 'Example Plugin',
  version: '1.0.0',
  config,
  // Implementation details
};
```

#### Handling System Events

```typescript
import { SystemEvent } from '@mulutime/plugin-types';

function handleEvent(event: SystemEvent) {
  // Handle different event types
  switch (event.type) {
    case 'plugin-loaded':
      // Handle plugin loaded event
      break;
    case 'integration-connected':
      // Handle integration connected event
      break;
  }
}
```

## Development

This package is built with TypeScript and provides full type safety for MuluTime plugin development.

### Building

```bash
npm run build
```

### Type Checking

```bash
npm test
```

## Contributing

We welcome contributions! Please see our [contributing guidelines](../../CONTRIBUTING.md) for details.

## License

MIT License - see [LICENSE](LICENSE) file for details.

## Support

For issues and questions:
- [GitHub Issues](https://github.com/YOUR_USERNAME/mulutime-plugin-system/issues)
- [Documentation](https://github.com/YOUR_USERNAME/mulutime-plugin-system)

---

**Fara Technology AB** - Building the future of plugin systems
