import { Pubkey } from '../shared' import { RelayList } from './RelayList' import { RelaySet } from './RelaySet' import { FavoriteRelays } from './FavoriteRelays' /** * Repository interface for RelayList aggregate * * Implementations should handle: * - Local caching (IndexedDB) * - Remote fetching from relays * - Event publishing */ export interface RelayListRepository { /** * Find the relay list for a user */ findByOwner(pubkey: Pubkey): Promise /** * Save a relay list */ save(relayList: RelayList): Promise } /** * Repository interface for RelaySet aggregate */ export interface RelaySetRepository { /** * Find a relay set by owner and ID */ findById(pubkey: Pubkey, id: string): Promise /** * Find all relay sets for a user */ findByOwner(pubkey: Pubkey): Promise /** * Save a relay set */ save(pubkey: Pubkey, relaySet: RelaySet): Promise /** * Delete a relay set */ delete(pubkey: Pubkey, id: string): Promise } /** * Repository interface for FavoriteRelays aggregate */ export interface FavoriteRelaysRepository { /** * Find the favorite relays for a user */ findByOwner(pubkey: Pubkey): Promise /** * Save favorite relays */ save(favoriteRelays: FavoriteRelays): Promise }