export interface SeriesProps {
    id: string | null;
    name: string;
    description: string;
    coverImage: string | null;
}

export interface SeriesBookProps {
    bookId: string;
    title: string;
    order: number;
    coverImage: string | null;
}

export interface SeriesDetailResponse {
    id: string;
    name: string;
    description: string;
    coverImage: string | null;
    books: SeriesBookProps[];
}

export interface SeriesAddResponse {
    seriesId: string;
}

export interface SeriesUpdateResponse {
    success: boolean;
}

export interface SeriesListItemProps {
    id: string;
    name: string;
    description: string;
    coverImage: string | null;
    bookCount: number;
    bookIds: string[];
}

// Personnages de série
export interface SeriesCharacterListItem {
    id: string;
    name: string;
    lastName: string | null;
    category: string;
    role: string | null;
    color: string | null;
    image: string | null;
}

export interface SeriesCharacterDetailResponse {
    id: string;
    name: string;
    lastName: string | null;
    nickname: string | null;
    age: number | null;
    gender: string | null;
    species: string | null;
    nationality: string | null;
    status: string | null;
    category: string;
    title: string | null;
    image: string | null;
    role: string | null;
    biography: string | null;
    history: string | null;
    speechPattern: string | null;
    catchphrase: string | null;
    residence: string | null;
    notes: string | null;
    color: string | null;
    attributes?: SeriesCharacterAttribute[];
}

export interface SeriesCharacterAttribute {
    id: string;
    name: string;
    value: string;
}

export type SeriesCharacterProps = SeriesCharacterDetailResponse;

// Mondes de série
export interface SeriesWorldElementItem {
    id: string;
    name: string;
    description: string;
}

export interface SeriesWorldListItem {
    id: string;
    name: string;
    history: string;
    politics: string;
    economy: string;
    religion: string;
    languages: string;
    laws: SeriesWorldElementItem[];
    biomes: SeriesWorldElementItem[];
    issues: SeriesWorldElementItem[];
    customs: SeriesWorldElementItem[];
    kingdoms: SeriesWorldElementItem[];
    climate: SeriesWorldElementItem[];
    resources: SeriesWorldElementItem[];
    wildlife: SeriesWorldElementItem[];
    arts: SeriesWorldElementItem[];
    ethnicGroups: SeriesWorldElementItem[];
    socialClasses: SeriesWorldElementItem[];
    importantCharacters: SeriesWorldElementItem[];
}

export type SeriesWorldProps = SeriesWorldListItem;

export interface SeriesWorldElement {
    id: string;
    type: number;
    name: string;
    description: string;
}

// Lieux de série
export interface SeriesLocationSubElement {
    id: string;
    name: string;
    description: string;
}

export interface SeriesLocationElement {
    id: string;
    name: string;
    description: string;
    subElements: SeriesLocationSubElement[];
}

export interface SeriesLocationItem {
    id: string;
    name: string;
    elements: SeriesLocationElement[];
}

// Sorts de série (Grimoire)
export interface SeriesSpellTag {
    id: string;
    name: string;
    color: string | null;
}

export interface SeriesSpellListItem {
    id: string;
    name: string;
    description: string;
    tags: string[] | null;
}

export interface SeriesSpellListResponse {
    spells: SeriesSpellListItem[];
    tags: SeriesSpellTag[];
}

export interface SeriesSpellDetailResponse {
    id: string;
    name: string;
    description: string;
    appearance: string;
    tags: string[];
    powerLevel: string | null;
    components: string | null;
    limitations: string | null;
    notes: string | null;
}
