/**
 * Screen Types - Type definitions for core feature screens
 *
 * All status and type unions are derived from constants for single source of truth.
 * Use the constants (e.g., CONVERSATION_STATUSES.active) for type-safe comparisons.
 */
/**
 * Conversation status constant - single source of truth.
 */
export declare const CONVERSATION_STATUSES: {
    readonly active: "active";
    readonly archived: "archived";
    readonly muted: "muted";
};
/**
 * Union type derived from CONVERSATION_STATUSES constant.
 */
export type ConversationStatus = (typeof CONVERSATION_STATUSES)[keyof typeof CONVERSATION_STATUSES];
/**
 * Message type constant - single source of truth.
 */
export declare const MESSAGE_TYPES: {
    readonly text: "text";
    readonly image: "image";
    readonly file: "file";
    readonly system: "system";
};
/**
 * Union type derived from MESSAGE_TYPES constant.
 */
export type MessageType = (typeof MESSAGE_TYPES)[keyof typeof MESSAGE_TYPES];
export interface Participant {
    readonly id: string;
    readonly name: string;
    readonly email: string;
    readonly avatarUrl?: string;
    readonly isOnline?: boolean;
}
/**
 * Message attachment type - extracted for reusability and clarity.
 */
export interface MessageAttachment {
    readonly id: string;
    readonly name: string;
    readonly url: string;
    readonly type: string;
    readonly size?: number;
}
export interface Message {
    readonly id: string;
    readonly conversationId: string;
    readonly senderId: string;
    readonly senderName: string;
    readonly senderAvatarUrl?: string;
    readonly type: MessageType;
    readonly content: string;
    readonly timestamp: string;
    readonly isRead: boolean;
    readonly attachments?: readonly MessageAttachment[];
}
export interface Conversation {
    readonly id: string;
    readonly title: string;
    readonly participants: readonly Participant[];
    readonly lastMessage?: Message;
    readonly unreadCount: number;
    readonly status: ConversationStatus;
    readonly createdAt: string;
    readonly updatedAt: string;
}
/**
 * Contact status constant - single source of truth.
 */
export declare const CONTACT_STATUSES: {
    readonly active: "active";
    readonly inactive: "inactive";
    readonly lead: "lead";
    readonly prospect: "prospect";
};
/**
 * Union type derived from CONTACT_STATUSES constant.
 */
export type ContactStatus = (typeof CONTACT_STATUSES)[keyof typeof CONTACT_STATUSES];
/**
 * Contact type constant - single source of truth.
 */
export declare const CONTACT_TYPES: {
    readonly individual: "individual";
    readonly company: "company";
};
/**
 * Union type derived from CONTACT_TYPES constant.
 */
export type ContactType = (typeof CONTACT_TYPES)[keyof typeof CONTACT_TYPES];
export interface ContactAddress {
    readonly street?: string;
    readonly city?: string;
    readonly state?: string;
    readonly postalCode?: string;
    readonly country?: string;
}
export interface Contact {
    readonly id: string;
    readonly firstName: string;
    readonly lastName: string;
    readonly email: string;
    readonly phone?: string;
    readonly company?: string;
    readonly jobTitle?: string;
    readonly avatarUrl?: string;
    readonly status: ContactStatus;
    readonly type: ContactType;
    readonly address?: ContactAddress;
    readonly tags?: readonly string[];
    readonly notes?: string;
    readonly createdAt: string;
    readonly updatedAt: string;
}
//# sourceMappingURL=screen-types.d.ts.map