# Advanced Features

### Event Emitters

```typescript
// Listen to events
whatsapp.on('messageSent', (data) => {
  console.log('Message sent:', data.messageId);
});

whatsapp.on('messageFailed', (data) => {
  console.error('Message failed:', data.error);
});

whatsapp.on('messageRead', (data) => {
  console.log('Message read:', data.messageId);
});

whatsapp.on('storageCleaned', (data) => {
  console.log('Cleaned messages:', data.deletedCount);
});

whatsapp.on('queuedMessageSent', (data) => {
  console.log('Queued message sent:', data.queueId);
});

whatsapp.on('queuedMessageFailed', (data) => {
  console.error('Queued message failed:', data.error);
});
```

### Statistics

```typescript
// Get message statistics
const stats = whatsapp.getStatistics();

console.log(stats);
// {
//   sent: 150,
//   received: 320,
//   failed: 5,
//   delivered: 145,
//   read: 130
// }
```

### Queue Management

```typescript
// Get queue statistics
const queueStats = whatsapp.getQueueStats();

console.log(queueStats);
// {
//   size: 10,
//   maxSize: 1000,
//   usagePercentage: 1
// }
```

### Middleware Support

```typescript
// Add custom middleware
whatsapp.use(async (event, metadata) => {
  console.log('Processing event:', event);
  
  // Return false to stop processing
  if (event.type === 'spam') {
    return false;
  }
  
  // Return true to continue
  return true;
});
```

---