import type { Contact } from '@/domain/entities/contact';
import type { EscalationPolicy } from '@/domain/entities/escalation-policy';

export interface CommunicationRepository {
  listContacts(params?: Record<string, string>): Promise<Contact[]>;
  getContactById(id: string): Promise<Contact>;
  createContact(contact: Omit<Contact, 'id'>): Promise<Contact>;
  updateContact(id: string, data: Partial<Contact>): Promise<Contact>;
  removeContact(id: string): Promise<void>;

  listEscalationPolicies(params?: Record<string, string>): Promise<EscalationPolicy[]>;
  getEscalationPolicyById(id: string): Promise<EscalationPolicy>;
  createEscalationPolicy(policy: Omit<EscalationPolicy, 'id' | 'createdAt' | 'updatedAt'>): Promise<EscalationPolicy>;
  updateEscalationPolicy(id: string, data: Partial<EscalationPolicy>): Promise<EscalationPolicy>;
  removeEscalationPolicy(id: string): Promise<void>;

  sendTestMessage(channelType: string, contactId: string): Promise<void>;
}
