interface WordpressDbConfigOverride {
    host?: string;
    port?: number;
    user?: string;
    password?: string;
    database?: string;
    prefix?: string;
}

interface WordpressImportErrorItem {
    itemId?: number | null;
    type?: string | null;
    message: string;
}

interface WordpressImportRequestObject {
    chunkSize?: number;
    page?: number;
    startPostId?: number;
    postTypes?: string[];
    postType?: string;
    importPosts?: boolean;
    importComments?: boolean;
    importCategories?: boolean;
    importTags?: boolean;
    authorId?: number;
    commentUserId?: number;
    wpDb?: WordpressDbConfigOverride;
}

interface WordpressImportResponseData {
    importedPosts: number;
    skippedPosts: number;
    importedComments: number;
    importedCategories: number;
    importedTags: number;
    lastPostId: number | null;
    hasMore: boolean;
    totalPages?: number;
    currentPage?: number;
    errors?: WordpressImportErrorItem[];
}

interface UserImportRequestObject {
    chunkSize?: number;
    page?: number;
    startUserId?: number;
    wpDb?: WordpressDbConfigOverride;
    defaultRoleId?: number;
    fetchAll?: boolean;
}

interface UserImportResponseData {
    imported: number;
    skipped: number;
    errors: number;
    lastUserId: number | null;
    hasMore: boolean;
    totalPages?: number;
    currentPage?: number;
    errorLog?: { email: string; error: string }[];
}

interface SeaQAImportRequestObject {
    chunkSize?: number;
    page?: number;
    wpDb?: WordpressDbConfigOverride;
}

interface SeaQAImportResponseData {
    importedQuestions: number;
    skippedQuestions: number;
    importedAnswers: number;
    skippedAnswers: number;
    importedComments: number;
    skippedComments: number;
    errors: number;
    hasMore: boolean;
    totalPages?: number;
    currentPage?: number;
    errorLog?: { entityId: number; type: string; error: string }[];
}
