import {Author} from "@/lib/types/user";
import {ActChapter, ChapterProps} from "@/lib/types/chapter";

export interface BookToolsSettings {
    characters: boolean;
    worlds: boolean;
    locations: boolean;
    spells: boolean;
}

export interface BookProps {
    bookId: string;
    type: string;
    title: string;
    author?: Author;
    serie?: number;
    seriesId?: string | null;
    subTitle?: string;
    summary?: string;
    publicationDate?: string;
    desiredWordCount?: number;
    totalWordCount?: number;
    coverImage?: string;
    chapters?: ChapterProps[];
    quillsenseEnabled?: boolean;
    tools?: BookToolsSettings;
    localBook?: boolean;
}

export interface BookListProps {
    id: string;
    type: string;
    authorId: string;
    title: string;
    subTitle?: string;
    summary?: string;
    serieId?: number;
    desiredReleaseDate?: string;
    desiredWordCount?: number;
    wordCount?: number;
    coverImage?: string;
    bookMeta?: string;
    quillsenseEnabled?: boolean;
}

export interface GuideLine {
    tone: string;
    atmosphere: string;
    writingStyle: string;
    themes: string;
    symbolism: string;
    motifs: string;
    narrativeVoice: string;
    pacing: string;
    intendedAudience: string;
    keyMessages: string;
}

export interface GuideLineAI {
    narrativeType: number | null;
    dialogueType: number | null;
    globalResume: string | null;
    atmosphere: string | null;
    verbeTense: number | null;
    langue: number | null;
    currentResume: string | null;
    themes: string | null;
}

export interface PlotPoint {
    plotPointId: string;
    title: string;
    summary: string;
    linkedIncidentId: string;
    chapters?: ActChapter[];
}

export interface Incident {
    incidentId: string;
    title: string;
    summary: string;
    chapters?: ActChapter[];
}

export interface Issue {
    name: string;
    id: string;
}

export interface Act {
    id: number;
    summary: string | null;
    incidents?: Incident[];
    plotPoints?: PlotPoint[];
    chapters?: ActChapter[];
}

export interface Tag {
    label: string;
    value: string;
}

export interface BookTags {
    characters: Tag[];
    locations: Tag[];
    objects: Tag[];
    worldElements: Tag[];
}
