Event-Based Stores 
deriveEventsMapped 
Creates a store that maintains a mapped collection of events from a repository. Useful when you want to transform events into a different data structure while maintaining reactivity.
typescript
import {Repository, NAMED_PEOPLE, type TrustedEvent} from '@welshman/util'
import {deriveEventsMapped} from '@welshman/store'
interface UserProfile {
  name: string;
  about: string;
  pubkey: string;
}
const repository = new Repository()
const profiles = deriveEventsMapped<UserProfile>(repository, {
  filters: [{kinds: [PROFILE]}],
  eventToItem: (event: TrustedEvent) => ({
    name: event.content.name,
    about: event.content.about,
    pubkey: event.pubkey,
  }),
  itemToEvent: (profile: UserProfile) => ({
    // Convert profile back to event format
    kind: PROFILE,
    pubkey: profile.pubkey,
    content: {
      name: profile.name,
      about: profile.about,
    }
  }),
  throttle: 1000, // Optional: throttle updates
  includeDeleted: false // Optional: exclude deleted events
})deriveEvents 
Creates a store that maintains a collection of raw events from a repository. Useful when you want to work directly with events without transformation.
typescript
import {Repository} from '@welshman/util'
import {deriveEvents} from '@welshman/store'
const repository = new Repository()
const textNotes = deriveEvents(repository, {
  filters: [{kinds: [NOTE], // kind 1 = text note
  authors: ['pubkey1', 'pubkey2']}],
  throttle: 500,
  includeDeleted: false
})
// Subscribe to changes
textNotes.subscribe(events => {
  console.log('New text notes:', events)
})deriveEvent 
Creates a store that tracks a single event by its ID or address. Returns a derived store containing the event or undefined.
typescript
import {Repository} from '@welshman/util'
import {deriveEvent} from '@welshman/store'
const repository = new Repository()
const specificEvent = deriveEvent(repository, 'event_id_or_address')
// Subscribe to changes of the specific event
specificEvent.subscribe(event => {
  if (event) {
    console.log('Event updated:', event)
  } else {
    console.log('Event not found')
  }
})deriveIsDeleted 
Creates a store that tracks whether an event has been deleted. Returns a boolean store.
typescript
import {Repository} from '@welshman/util'
import {deriveIsDeleted} from '@welshman/store'
const repository = new Repository()
const event = /* your event */
const isDeleted = deriveIsDeleted(repository, event)
// Subscribe to deletion status changes
isDeleted.subscribe(deleted => {
  console.log('Event deleted status:', deleted)
})deriveIsDeletedByAddress 
Creates a store that tracks whether an event has been deleted by address. Similar to deriveIsDeleted but checks deletion by address instead of event ID.
typescript
import {Repository} from '@welshman/util'
import {deriveIsDeletedByAddress} from '@welshman/store'
const repository = new Repository()
const event = /* your event */
const isDeletedByAddress = deriveIsDeletedByAddress(repository, event)
// Subscribe to address-based deletion status changes
isDeletedByAddress.subscribe(deleted => {
  if (deleted) {
    console.log('Event has been deleted by address')
  }
})