/**
 * WeChat API Response Types
 */
export interface WeChatApiResponse<T = any> {
    errcode?: number;
    errmsg?: string;
    data?: T;
}
/**
 * Access Token Response
 */
export interface AccessTokenResponse {
    access_token: string;
    expires_in: number;
}
/**
 * Draft Article Structure
 */
export interface DraftArticle {
    article_type: 'news' | 'newspic';
    title: string;
    author?: string;
    digest?: string;
    content: string;
    content_source_url?: string;
    thumb_media_id: string;
    need_open_comment?: 0 | 1;
    only_fans_can_comment?: 0 | 1;
    pic_crop_235_1?: string;
    pic_crop_1_1?: string;
    image_info?: {
        image_list: Array<{
            image_media_id: string;
        }>;
    };
    cover_info?: {
        crop_percent_list: Array<{
            ratio: '1_1' | '16_9' | '2.35_1';
            x1: string;
            y1: string;
            x2: string;
            y2: string;
        }>;
    };
    product_info?: {
        footer_product_info: {
            product_key: string;
        };
    };
}
/**
 * Create Draft Request
 */
export interface CreateDraftRequest {
    articles: DraftArticle[];
}
/**
 * Create Draft Response
 */
export interface CreateDraftResponse {
    media_id: string;
}
/**
 * Get Draft Response
 */
export interface GetDraftResponse {
    media_id: string;
    content: {
        news_item: DraftArticle[];
    };
    update_time: number;
}
/**
 * Publish Request
 */
export interface PublishRequest {
    media_id: string;
}
/**
 * Publish Response
 */
export interface PublishResponse {
    publish_id: string;
}
/**
 * Publish Status Response
 */
export interface PublishStatusResponse {
    publish_id: string;
    publish_status: 0 | 1 | 2 | 3;
    article_id?: string;
    article_url?: string;
    fail_idx?: number[];
}
/**
 * Media Upload Response
 */
export interface MediaUploadResponse {
    media_id: string;
    url: string;
}
/**
 * WeChat API Client Configuration
 */
export interface WeChatApiConfig {
    appId: string;
    appSecret: string;
    baseUrl: string;
    timeout: number;
}
/**
 * Meme API Response Types
 */
export interface MemeItem {
    postLink: string;
    subreddit: string;
    title: string;
    url: string;
    nsfw: boolean;
    spoiler: boolean;
    author: string;
    ups: number;
    preview: string[];
}
export interface MemeApiResponse {
    postLink?: string;
    subreddit?: string;
    title?: string;
    url?: string;
    nsfw?: boolean;
    spoiler?: boolean;
    author?: string;
    ups?: number;
    preview?: string[];
    count?: number;
    memes?: MemeItem[];
}
/**
 * Batch Upload Memes Response
 */
export interface BatchUploadMemesResponse {
    success_count: number;
    failed_count: number;
    duplicated_count: number;
    media_ids: string[];
    failed_urls: string[];
    processed_memes: Array<{
        url: string;
        title: string;
        media_id?: string;
        error?: string;
        is_duplicate?: boolean;
    }>;
}
/**
 * WeChat Node Operations
 */
export type WeChatOperation = 'createDraft' | 'getDraft' | 'deleteDraft' | 'publishDraft' | 'getPublishStatus' | 'uploadMedia' | 'getMaterialList' | 'batchUploadMemes' | 'batchPublishDrafts';
/**
 * Material item in the list
 */
export interface MaterialItem {
    media_id: string;
    name?: string;
    update_time: number;
    url?: string;
}
/**
 * Get material list request
 */
export interface GetMaterialListRequest {
    type: string;
    offset: number;
    count: number;
}
/**
 * Get material list response
 */
export interface GetMaterialListResponse {
    total_count: number;
    item_count: number;
    item: MaterialItem[];
}
/**
 * Node Operation Parameters
 */
export interface NodeOperationParams {
    operation: WeChatOperation;
    mediaId?: string;
    publishId?: string;
    title?: string;
    content?: string;
    author?: string;
    digest?: string;
    thumbMediaId?: string;
    contentSourceUrl?: string;
    needOpenComment?: boolean;
    onlyFansCanComment?: boolean;
    picCrop235?: string;
    picCrop11?: string;
    articleType?: 'news' | 'newspic';
    imageList?: string[];
    productKey?: string;
    materialType?: 'image' | 'video' | 'voice' | 'news';
    offset?: number;
    count?: number;
    memeCount?: number;
    subreddit?: string;
    skipNsfw?: boolean;
    skipSpoiler?: boolean;
    minUps?: number;
    enableImageInsertion?: boolean;
    imageInsertionMode?: 'auto' | 'manual' | 'paragraph';
    insertionImageIds?: string[];
    maxImagesPerArticle?: number;
    imageInsertionStrategy?: 'random' | 'sequential' | 'balanced';
}
/**
 * Image Insertion Configuration
 */
export interface ImageInsertionConfig {
    enabled: boolean;
    mode: 'auto' | 'manual' | 'paragraph';
    imageIds: string[];
    maxImages: number;
    strategy: 'random' | 'sequential' | 'balanced';
}
/**
 * Content Processing Result
 */
export interface ContentProcessingResult {
    processedContent: string;
    insertedImages: number;
    imagePositions: Array<{
        imageId: string;
        position: number;
        context: string;
    }>;
}
