feat(event): event model